@spinnaker/kayenta 2.0.0 → 2.1.0-rc1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +0,0 @@
1
- {"version":3,"file":"lazy-063c0421.js","sources":["../../../src/kayenta/domain/ICanaryExecutionStatusResult.ts","../../../src/kayenta/layout/table/tableHeader.tsx","../../../src/kayenta/layout/table/table.tsx","../../node_modules/tslib/tslib.es6.js","../../node_modules/class-autobind-decorator/build/index.js","../../node_modules/react-redux/es/utils/PropTypes.js","../../node_modules/react-redux/es/components/Provider.js","../../node_modules/react-redux/node_modules/hoist-non-react-statics/index.js","../../node_modules/invariant/invariant.js","../../node_modules/react-redux/es/utils/Subscription.js","../../node_modules/react-redux/es/components/connectAdvanced.js","../../node_modules/react-redux/es/utils/shallowEqual.js","../../node_modules/redux/node_modules/lodash-es/_freeGlobal.js","../../node_modules/redux/node_modules/lodash-es/_root.js","../../node_modules/redux/node_modules/lodash-es/_Symbol.js","../../node_modules/redux/node_modules/lodash-es/_getRawTag.js","../../node_modules/redux/node_modules/lodash-es/_objectToString.js","../../node_modules/redux/node_modules/lodash-es/_baseGetTag.js","../../node_modules/redux/node_modules/lodash-es/_getPrototype.js","../../node_modules/redux/node_modules/lodash-es/_overArg.js","../../node_modules/redux/node_modules/lodash-es/isPlainObject.js","../../node_modules/symbol-observable/lib/ponyfill.js","../../node_modules/symbol-observable/lib/index.js","../../node_modules/redux/es/createStore.js","../../node_modules/redux/es/combineReducers.js","../../node_modules/redux/es/bindActionCreators.js","../../node_modules/redux/es/compose.js","../../node_modules/redux/es/applyMiddleware.js","../../node_modules/react-redux/es/connect/wrapMapToProps.js","../../node_modules/react-redux/es/connect/mapDispatchToProps.js","../../node_modules/react-redux/es/connect/mapStateToProps.js","../../node_modules/react-redux/es/connect/mergeProps.js","../../node_modules/react-redux/es/connect/selectorFactory.js","../../node_modules/react-redux/es/connect/connect.js","../../../src/kayenta/actions/index.ts","../../../src/kayenta/metricStore/atlas/atlasMetricConfigurer.tsx","../../../src/kayenta/service/delegateFactory.ts","../../../src/kayenta/metricStore/metricStoreConfig.service.ts","../../node_modules/redux-actions/node_modules/lodash-es/identity.js","../../../src/kayenta/metricStore/atlas/index.ts","../../node_modules/redux-actions/node_modules/lodash-es/_freeGlobal.js","../../node_modules/redux-actions/node_modules/lodash-es/_root.js","../../node_modules/redux-actions/node_modules/lodash-es/_Symbol.js","../../node_modules/redux-actions/node_modules/lodash-es/_getRawTag.js","../../node_modules/redux-actions/node_modules/lodash-es/_objectToString.js","../../node_modules/redux-actions/node_modules/lodash-es/_baseGetTag.js","../../node_modules/redux-actions/node_modules/lodash-es/isObject.js","../../node_modules/redux-actions/node_modules/lodash-es/isFunction.js","../../node_modules/redux-actions/node_modules/lodash-es/isNull.js","../../node_modules/redux-actions/es/createAction.js","../../node_modules/redux-actions/node_modules/lodash-es/_overArg.js","../../node_modules/redux-actions/node_modules/lodash-es/_getPrototype.js","../../node_modules/redux-actions/node_modules/lodash-es/isObjectLike.js","../../node_modules/redux-actions/node_modules/lodash-es/isPlainObject.js","../../node_modules/redux-actions/node_modules/lodash-es/isNil.js","../../node_modules/redux-actions/node_modules/lodash-es/isUndefined.js","../../node_modules/redux-actions/node_modules/lodash-es/_baseIsNaN.js","../../node_modules/redux-actions/node_modules/lodash-es/isLength.js","../../node_modules/redux-actions/node_modules/lodash-es/isArrayLike.js","../../node_modules/redux-actions/node_modules/lodash-es/isArray.js","../../node_modules/redux-actions/node_modules/lodash-es/isString.js","../../node_modules/redux-actions/node_modules/lodash-es/isSymbol.js","../../node_modules/redux-actions/node_modules/lodash-es/toNumber.js","../../node_modules/redux-actions/node_modules/lodash-es/toFinite.js","../../node_modules/redux-actions/node_modules/lodash-es/_arrayMap.js","../../node_modules/redux-actions/node_modules/lodash-es/_baseIsArguments.js","../../node_modules/redux-actions/node_modules/lodash-es/isArguments.js","../../node_modules/redux-actions/node_modules/lodash-es/isBuffer.js","../../node_modules/redux-actions/node_modules/lodash-es/stubFalse.js","../../node_modules/redux-actions/node_modules/lodash-es/_isIndex.js","../../node_modules/redux-actions/node_modules/lodash-es/_baseIsTypedArray.js","../../node_modules/redux-actions/node_modules/lodash-es/_nodeUtil.js","../../node_modules/redux-actions/node_modules/lodash-es/isTypedArray.js","../../node_modules/redux-actions/node_modules/lodash-es/_baseUnary.js","../../node_modules/redux-actions/node_modules/lodash-es/_arrayLikeKeys.js","../../node_modules/redux-actions/node_modules/lodash-es/_baseTimes.js","../../node_modules/redux-actions/node_modules/lodash-es/_isPrototype.js","../../node_modules/redux-actions/node_modules/lodash-es/_nativeKeys.js","../../node_modules/redux-actions/node_modules/lodash-es/_baseKeys.js","../../node_modules/redux-actions/node_modules/lodash-es/values.js","../../node_modules/redux-actions/node_modules/lodash-es/_baseValues.js","../../node_modules/redux-actions/node_modules/lodash-es/keys.js","../../node_modules/redux-actions/node_modules/lodash-es/includes.js","../../node_modules/redux-actions/node_modules/lodash-es/toInteger.js","../../node_modules/redux-actions/node_modules/lodash-es/_baseIndexOf.js","../../node_modules/redux-actions/node_modules/lodash-es/_strictIndexOf.js","../../node_modules/redux-actions/node_modules/lodash-es/_baseFindIndex.js","../../node_modules/redux-actions/node_modules/lodash-es/_coreJsData.js","../../node_modules/redux-actions/node_modules/lodash-es/_isMasked.js","../../node_modules/redux-actions/node_modules/lodash-es/_toSource.js","../../node_modules/redux-actions/node_modules/lodash-es/_baseIsNative.js","../../node_modules/redux-actions/node_modules/lodash-es/_getNative.js","../../node_modules/redux-actions/node_modules/lodash-es/_getValue.js","../../node_modules/redux-actions/node_modules/lodash-es/_DataView.js","../../node_modules/redux-actions/node_modules/lodash-es/_Map.js","../../node_modules/redux-actions/node_modules/lodash-es/_Promise.js","../../node_modules/redux-actions/node_modules/lodash-es/_Set.js","../../node_modules/redux-actions/node_modules/lodash-es/_WeakMap.js","../../node_modules/redux-actions/node_modules/lodash-es/_getTag.js","../../node_modules/redux-actions/node_modules/lodash-es/isEmpty.js","../../node_modules/redux-actions/node_modules/lodash-es/_baseToString.js","../../node_modules/redux-actions/node_modules/lodash-es/toString.js","../../node_modules/redux-actions/es/combineActions.js","../../node_modules/redux-actions/es/handleAction.js","../../node_modules/reduce-reducers/lib/index.js","../../node_modules/redux-actions/es/ownKeys.js","../../node_modules/redux-actions/es/flattenUtils.js","../../node_modules/redux-actions/es/hasGeneratorInterface.js","../../node_modules/redux-actions/es/handleActions.js","../../../src/kayenta/actions/creators.ts","../../../src/kayenta/layout/formRow.tsx","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/isObject.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_freeGlobal.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_root.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/now.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_Symbol.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_getRawTag.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_objectToString.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_baseGetTag.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/isObjectLike.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/isSymbol.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/toNumber.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/debounce.js","../../node_modules/react-bootstrap-typeahead/lib/utils/addCustomOption.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_listCacheClear.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/eq.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_assocIndexOf.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_listCacheDelete.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_listCacheGet.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_listCacheHas.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_listCacheSet.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_ListCache.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_stackClear.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_stackDelete.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_stackGet.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_stackHas.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/isFunction.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_coreJsData.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_isMasked.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_toSource.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_baseIsNative.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_getValue.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_getNative.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_Map.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_nativeCreate.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_hashClear.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_hashDelete.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_hashGet.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_hashHas.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_hashSet.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_Hash.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_mapCacheClear.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_isKeyable.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_getMapData.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_mapCacheDelete.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_mapCacheGet.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_mapCacheHas.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_mapCacheSet.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_MapCache.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_stackSet.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_Stack.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_setCacheAdd.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_setCacheHas.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_SetCache.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_arraySome.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_cacheHas.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_equalArrays.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_Uint8Array.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_mapToArray.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_setToArray.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_equalByTag.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_arrayPush.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/isArray.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_baseGetAllKeys.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_arrayFilter.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/stubArray.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_getSymbols.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_baseTimes.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_baseIsArguments.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/isArguments.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/stubFalse.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/isBuffer.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_isIndex.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/isLength.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_baseIsTypedArray.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_baseUnary.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_nodeUtil.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/isTypedArray.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_arrayLikeKeys.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_isPrototype.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_overArg.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_nativeKeys.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_baseKeys.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/isArrayLike.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/keys.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_getAllKeys.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_equalObjects.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_DataView.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_Promise.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_Set.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_WeakMap.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_getTag.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_baseIsEqualDeep.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_baseIsEqual.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/isEqual.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/isString.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_baseIsMatch.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_isStrictComparable.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_getMatchData.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_matchesStrictComparable.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_baseMatches.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_isKey.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/memoize.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_memoizeCapped.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_stringToPath.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_arrayMap.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_baseToString.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/toString.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_castPath.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_toKey.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_baseGet.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/get.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_baseHasIn.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_hasPath.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/hasIn.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_baseMatchesProperty.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/identity.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_baseProperty.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_basePropertyDeep.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/property.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_baseIteratee.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_createBaseFor.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_baseFor.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_createBaseEach.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_baseEach.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_baseForOwn.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_baseSome.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_isIterateeCall.js","../../node_modules/react-bootstrap-typeahead/lib/utils/stripDiacritics.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/some.js","../../node_modules/react-bootstrap-typeahead/lib/utils/warn.js","../../node_modules/react-bootstrap-typeahead/node_modules/warning/warning.js","../../node_modules/react-bootstrap-typeahead/lib/utils/defaultFilterBy.js","../../node_modules/react-bootstrap-typeahead/lib/utils/getAccessibilityStatus.js","../../node_modules/react-bootstrap-typeahead/lib/utils/getDisplayName.js","../../node_modules/escape-string-regexp/index.js","../../node_modules/react-bootstrap-typeahead/lib/utils/getMatchBounds.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_getPrototype.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/isPlainObject.js","../../node_modules/react-bootstrap-typeahead/lib/constants/defaultLabelKey.js","../../node_modules/react-bootstrap-typeahead/lib/utils/getStringLabelKey.js","../../node_modules/react-bootstrap-typeahead/lib/utils/getOptionLabel.js","../../node_modules/react-bootstrap-typeahead/lib/utils/getHintText.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/head.js","../../node_modules/react-bootstrap-typeahead/lib/utils/getInputText.js","../../node_modules/react-bootstrap-typeahead/lib/utils/getMenuItemId.js","../../node_modules/react-bootstrap-typeahead/lib/utils/getTruncatedOptions.js","../../node_modules/react-bootstrap-typeahead/lib/utils/isShown.js","../../node_modules/react-bootstrap-typeahead/lib/utils/pluralize.js","../../node_modules/react-bootstrap-typeahead/lib/utils/preventInputBlur.js","../../node_modules/react-bootstrap-typeahead/lib/utils/scrollIntoViewIfNeeded.js","../../node_modules/react-bootstrap-typeahead/lib/utils/index.js","../../node_modules/react-bootstrap-typeahead/lib/containers/asyncContainer.js","../../node_modules/react-bootstrap-typeahead/node_modules/classnames/index.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_defineProperty.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_baseAssignValue.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_assignValue.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_baseSet.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_basePickBy.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_basePick.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_isFlattenable.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_baseFlatten.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/flatten.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_apply.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_overRest.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/constant.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_baseSetToString.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_shortOut.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_setToString.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_flatRest.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/pick.js","../../node_modules/react-bootstrap-typeahead/lib/ClearButton.react.js","../../node_modules/react-bootstrap-typeahead/lib/Loader.react.js","../../node_modules/prop-types-extra/lib/utils/createChainableTypeChecker.js","../../node_modules/prop-types-extra/lib/componentOrElement.js","../../node_modules/react-overlays/lib/utils/getContainer.js","../../node_modules/react-overlays/node_modules/dom-helpers/ownerDocument.js","../../node_modules/react-overlays/lib/utils/ownerDocument.js","../../node_modules/react-overlays/lib/LegacyPortal.js","../../node_modules/react-overlays/lib/Portal.js","../../node_modules/core-js/library/modules/_global.js","../../node_modules/core-js/library/modules/_core.js","../../node_modules/core-js/library/modules/_ctx.js","../../node_modules/core-js/library/modules/_a-function.js","../../node_modules/core-js/library/modules/_is-object.js","../../node_modules/core-js/library/modules/_an-object.js","../../node_modules/core-js/library/modules/_fails.js","../../node_modules/core-js/library/modules/_descriptors.js","../../node_modules/core-js/library/modules/_dom-create.js","../../node_modules/core-js/library/modules/_ie8-dom-define.js","../../node_modules/core-js/library/modules/_to-primitive.js","../../node_modules/core-js/library/modules/_object-dp.js","../../node_modules/core-js/library/modules/_property-desc.js","../../node_modules/core-js/library/modules/_hide.js","../../node_modules/core-js/library/modules/_export.js","../../node_modules/core-js/library/modules/_array-includes.js","../../node_modules/core-js/library/modules/_has.js","../../node_modules/core-js/library/modules/_cof.js","../../node_modules/core-js/library/modules/_iobject.js","../../node_modules/core-js/library/modules/_defined.js","../../node_modules/core-js/library/modules/_to-iobject.js","../../node_modules/core-js/library/modules/_to-integer.js","../../node_modules/core-js/library/modules/_to-length.js","../../node_modules/core-js/library/modules/_to-index.js","../../node_modules/core-js/library/modules/_shared.js","../../node_modules/core-js/library/modules/_uid.js","../../node_modules/core-js/library/modules/_shared-key.js","../../node_modules/core-js/library/modules/_object-keys-internal.js","../../node_modules/core-js/library/modules/_enum-bug-keys.js","../../node_modules/core-js/library/modules/_object-keys.js","../../node_modules/core-js/library/modules/_object-gops.js","../../node_modules/core-js/library/modules/_object-pie.js","../../node_modules/core-js/library/modules/_to-object.js","../../node_modules/core-js/library/modules/_object-assign.js","../../node_modules/core-js/library/modules/es6.object.assign.js","../../node_modules/react-popper/node_modules/babel-runtime/helpers/extends.js","../../node_modules/react-popper/node_modules/babel-runtime/core-js/object/assign.js","../../node_modules/core-js/library/fn/object/assign.js","../../node_modules/react-popper/node_modules/babel-runtime/helpers/classCallCheck.js","../../node_modules/core-js/library/modules/_redefine.js","../../node_modules/core-js/library/modules/_object-dps.js","../../node_modules/core-js/library/modules/_html.js","../../node_modules/core-js/library/modules/_object-create.js","../../node_modules/core-js/library/modules/_wks.js","../../node_modules/core-js/library/modules/_set-to-string-tag.js","../../node_modules/core-js/library/modules/_iter-create.js","../../node_modules/core-js/library/modules/_string-at.js","../../node_modules/core-js/library/modules/_object-gpo.js","../../node_modules/core-js/library/modules/_iter-define.js","../../node_modules/core-js/library/modules/es6.string.iterator.js","../../node_modules/core-js/library/modules/_iter-step.js","../../node_modules/core-js/library/modules/es6.array.iterator.js","../../node_modules/core-js/library/modules/web.dom.iterable.js","../../node_modules/core-js/library/modules/_wks-ext.js","../../node_modules/react-popper/node_modules/babel-runtime/core-js/symbol/iterator.js","../../node_modules/core-js/library/fn/symbol/iterator.js","../../node_modules/core-js/library/modules/_meta.js","../../node_modules/core-js/library/modules/_wks-define.js","../../node_modules/core-js/library/modules/_is-array.js","../../node_modules/core-js/library/modules/_object-gopn.js","../../node_modules/core-js/library/modules/_object-gopn-ext.js","../../node_modules/core-js/library/modules/_object-gopd.js","../../node_modules/core-js/library/modules/es6.symbol.js","../../node_modules/core-js/library/modules/_enum-keys.js","../../node_modules/core-js/library/modules/_keyof.js","../../node_modules/core-js/library/modules/es7.symbol.async-iterator.js","../../node_modules/core-js/library/modules/es7.symbol.observable.js","../../node_modules/core-js/library/fn/symbol/index.js","../../node_modules/react-popper/node_modules/babel-runtime/core-js/symbol.js","../../node_modules/react-popper/node_modules/babel-runtime/helpers/typeof.js","../../node_modules/react-popper/node_modules/babel-runtime/helpers/possibleConstructorReturn.js","../../node_modules/core-js/library/modules/_set-proto.js","../../node_modules/core-js/library/modules/es6.object.set-prototype-of.js","../../node_modules/core-js/library/fn/object/set-prototype-of.js","../../node_modules/react-popper/node_modules/babel-runtime/core-js/object/set-prototype-of.js","../../node_modules/core-js/library/modules/es6.object.create.js","../../node_modules/core-js/library/fn/object/create.js","../../node_modules/react-popper/node_modules/babel-runtime/core-js/object/create.js","../../node_modules/react-popper/node_modules/babel-runtime/helpers/inherits.js","../../node_modules/popper.js/dist/esm/popper.js","../../node_modules/gud/index.js","../../node_modules/fbjs/lib/emptyFunction.js","../../node_modules/react-popper/node_modules/create-react-context/lib/implementation.js","../../node_modules/react-popper/node_modules/create-react-context/lib/index.js","../../node_modules/react-popper/lib/cjs/Manager.js","../../node_modules/react-popper/lib/cjs/utils.js","../../node_modules/react-popper/lib/cjs/Popper.js","../../node_modules/react-bootstrap-typeahead/lib/Overlay.react.js","../../node_modules/react-bootstrap-typeahead/lib/AutosizeInput.react.js","../../node_modules/react-onclickoutside/dist/react-onclickoutside.es.js","../../node_modules/react-bootstrap-typeahead/lib/constants/keyCode.js","../../node_modules/react-bootstrap-typeahead/lib/containers/tokenContainer.js","../../node_modules/react-bootstrap-typeahead/lib/Token.react.js","../../node_modules/react-bootstrap-typeahead/lib/containers/hintContainer.js","../../node_modules/react-bootstrap-typeahead/lib/containers/inputContainer.js","../../node_modules/react-bootstrap-typeahead/lib/TypeaheadInputMulti.react.js","../../node_modules/react-bootstrap-typeahead/lib/TypeaheadInputSingle.react.js","../../node_modules/react-bootstrap-typeahead/lib/Highlighter.react.js","../../node_modules/prop-types-extra/lib/isRequiredForA11y.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/noop.js","../../node_modules/react-bootstrap-typeahead/lib/containers/menuItemContainer.js","../../node_modules/react-bootstrap-typeahead/lib/MenuItem.react.js","../../node_modules/react-bootstrap-typeahead/lib/Menu.react.js","../../node_modules/react-bootstrap-typeahead/lib/TypeaheadMenu.react.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_baseCreate.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_baseLodash.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_LodashWrapper.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_metaMap.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_getData.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_realNames.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_getFuncName.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_LazyWrapper.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_copyArray.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_wrapperClone.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/wrapperLodash.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_isLaziable.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/_createFlow.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/flowRight.js","../../node_modules/react-bootstrap-typeahead/node_modules/lodash/uniqueId.js","../../node_modules/react-bootstrap-typeahead/lib/containers/highlightOnlyResultContainer.js","../../node_modules/react-bootstrap-typeahead/lib/propTypes/caseSensitiveType.js","../../node_modules/react-bootstrap-typeahead/lib/propTypes/checkPropType.js","../../node_modules/react-bootstrap-typeahead/lib/propTypes/defaultInputValueType.js","../../node_modules/react-bootstrap-typeahead/lib/propTypes/highlightOnlyResultType.js","../../node_modules/react-bootstrap-typeahead/lib/propTypes/ignoreDiacriticsType.js","../../node_modules/react-bootstrap-typeahead/lib/propTypes/inputPropsType.js","../../node_modules/react-bootstrap-typeahead/lib/propTypes/labelKeyType.js","../../node_modules/react-bootstrap-typeahead/lib/propTypes/optionType.js","../../node_modules/react-bootstrap-typeahead/lib/propTypes/index.js","../../node_modules/react-bootstrap-typeahead/lib/containers/typeaheadContainer.js","../../node_modules/react-bootstrap-typeahead/lib/Typeahead.react.js","../../node_modules/react-bootstrap-typeahead/lib/AsyncTypeahead.react.js","../../node_modules/react-bootstrap-typeahead/lib/index.js","../../../src/kayenta/layout/disableable.tsx","../../../src/kayenta/layout/radioChoice.tsx","../../../src/kayenta/reducers/asyncRequest.ts","../../../src/kayenta/metricStore/datadog/metricTypeSelector.tsx","../../../src/kayenta/metricStore/datadog/metricConfigurer.tsx","../../../src/kayenta/metricStore/datadog/index.ts","../../../src/kayenta/metricStore/graphite/metricTypeSelector.tsx","../../../src/kayenta/metricStore/graphite/metricConfigurer.tsx","../../../src/kayenta/metricStore/graphite/index.ts","../../../src/kayenta/metricStore/newrelic/metricConfigurer.tsx","../../../src/kayenta/metricStore/newrelic/index.ts","../../../src/kayenta/layout/addNewButton.tsx","../../../src/kayenta/layout/list.tsx","../../../src/kayenta/layout/deleteButton.tsx","../../../src/kayenta/edit/filterTemplatesValidation.ts","../../../src/kayenta/metricStore/prometheus/domain/IPrometheusCanaryMetricSetQueryConfig.ts","../../../src/kayenta/metricStore/prometheus/queryTypeSelectors.ts","../../node_modules/reselect/lib/index.js","../../../src/kayenta/edit/editMetricValidation.ts","../../../src/kayenta/selectors/index.ts","../../../src/kayenta/selectors/filterTemplatesSelectors.ts","../../../src/kayenta/metricStore/prometheus/metricTypeSelector.tsx","../../../src/kayenta/metricStore/prometheus/metricConfigurer.tsx","../../../src/kayenta/metricStore/prometheus/index.ts","../../../src/kayenta/layout/keyValueList.tsx","../../../src/kayenta/metricStore/signalfx/metricConfigurer.tsx","../../../src/kayenta/metricStore/signalfx/index.ts","../../../src/kayenta/metricStore/stackdriver/metricTypeSelector.tsx","../../../src/kayenta/metricStore/stackdriver/metricConfigurer.tsx","../../../src/kayenta/report/detail/graph/metricSetPairGraph.service.ts","../../../src/kayenta/metricStore/stackdriver/index.ts","../../../src/kayenta/report/detail/graph/semiotic/index.tsx","../../node_modules/redux-logger/dist/redux-logger.js","../../node_modules/rxjs/util/root.js","../../node_modules/rxjs/util/isFunction.js","../../node_modules/rxjs/util/isArray.js","../../node_modules/rxjs/util/isObject.js","../../node_modules/rxjs/util/tryCatch.js","../../node_modules/rxjs/util/errorObject.js","../../node_modules/rxjs/util/UnsubscriptionError.js","../../node_modules/rxjs/Subscription.js","../../node_modules/rxjs/Observer.js","../../node_modules/rxjs/symbol/rxSubscriber.js","../../node_modules/rxjs/Subscriber.js","../../node_modules/rxjs/util/toSubscriber.js","../../node_modules/rxjs/symbol/observable.js","../../node_modules/rxjs/util/noop.js","../../node_modules/rxjs/util/pipe.js","../../node_modules/rxjs/Observable.js","../../node_modules/rxjs/util/ObjectUnsubscribedError.js","../../node_modules/rxjs/SubjectSubscription.js","../../node_modules/rxjs/Subject.js","../../node_modules/rxjs/operators/map.js","../../node_modules/rxjs/operator/map.js","../../node_modules/rxjs/OuterSubscriber.js","../../node_modules/rxjs/util/isArrayLike.js","../../node_modules/rxjs/util/isPromise.js","../../node_modules/rxjs/symbol/iterator.js","../../node_modules/rxjs/InnerSubscriber.js","../../node_modules/rxjs/util/subscribeToResult.js","../../node_modules/rxjs/operators/switchMap.js","../../node_modules/rxjs/operator/switchMap.js","../../node_modules/rxjs/observable/ScalarObservable.js","../../node_modules/rxjs/observable/EmptyObservable.js","../../node_modules/rxjs/util/isScheduler.js","../../node_modules/rxjs/observable/ArrayObservable.js","../../node_modules/rxjs/observable/of.js","../../node_modules/rxjs/observable/PromiseObservable.js","../../node_modules/rxjs/observable/IteratorObservable.js","../../node_modules/rxjs/observable/ArrayLikeObservable.js","../../node_modules/rxjs/Notification.js","../../node_modules/rxjs/operators/observeOn.js","../../node_modules/rxjs/observable/FromObservable.js","../../node_modules/rxjs/observable/from.js","../../node_modules/rxjs/operators/filter.js","../../node_modules/rxjs/operator/filter.js","../../node_modules/redux-observable/lib/es/ActionsObservable.js","../../node_modules/redux-observable/lib/es/EPIC_END.js","../../node_modules/redux-observable/lib/es/createEpicMiddleware.js","../../node_modules/rxjs/operators/mergeMap.js","../../node_modules/rxjs/util/identity.js","../../node_modules/rxjs/operators/mergeAll.js","../../node_modules/rxjs/operators/merge.js","../../node_modules/rxjs/operator/merge.js","../../node_modules/rxjs/observable/merge.js","../../node_modules/redux-observable/lib/es/combineEpics.js","../../node_modules/rxjs/operators/concatAll.js","../../node_modules/rxjs/observable/concat.js","../../node_modules/rxjs/add/observable/concat.js","../../node_modules/rxjs/observable/ForkJoinObservable.js","../../node_modules/rxjs/observable/forkJoin.js","../../node_modules/rxjs/add/observable/forkJoin.js","../../node_modules/rxjs/observable/fromPromise.js","../../node_modules/rxjs/add/observable/fromPromise.js","../../node_modules/rxjs/operators/catchError.js","../../node_modules/rxjs/operator/catch.js","../../node_modules/rxjs/add/operator/catch.js","../../node_modules/rxjs/operators/concatMap.js","../../node_modules/rxjs/operator/concatMap.js","../../node_modules/rxjs/add/operator/concatMap.js","../../node_modules/rxjs/scheduler/Action.js","../../node_modules/rxjs/scheduler/AsyncAction.js","../../node_modules/rxjs/Scheduler.js","../../node_modules/rxjs/scheduler/AsyncScheduler.js","../../node_modules/rxjs/scheduler/async.js","../../node_modules/rxjs/operators/debounceTime.js","../../node_modules/rxjs/operator/debounceTime.js","../../node_modules/rxjs/add/operator/debounceTime.js","../../node_modules/rxjs/add/operator/filter.js","../../node_modules/rxjs/add/operator/map.js","../../node_modules/rxjs/operators/mapTo.js","../../node_modules/rxjs/operator/mapTo.js","../../node_modules/rxjs/add/operator/mapTo.js","../../../src/kayenta/middleware/epics.ts","../../../src/kayenta/service/metricsServiceMetadata.service.ts","../../../src/kayenta/edit/judgeSelect.tsx","../../node_modules/brace/ext/searchbox.js","../../node_modules/brace/worker/json.js","../../../src/kayenta/layout/tabs.tsx","../../node_modules/brace/mode/json.js","../../../src/kayenta/edit/configJsonModal.tsx","../../../src/kayenta/reducers/app.ts","../../../src/kayenta/reducers/data.ts","../../../src/kayenta/edit/groupName.tsx","../../../src/kayenta/edit/groupTabs.tsx","../../../src/kayenta/reducers/editingTemplate.ts","../../../src/kayenta/reducers/group.ts","../../../src/kayenta/reducers/prometheusMetricConfig.ts","../../../src/kayenta/reducers/signalFxMetricConfig.ts","../../../src/kayenta/reducers/stackdriverMetricConfig.ts","../../../src/kayenta/reducers/selectedConfig.ts","../../../src/kayenta/reducers/selectedRun.ts","../../../src/kayenta/reducers/validators.ts","../../../src/kayenta/reducers/index.ts","../../../src/kayenta/canary.tsx","../../../src/kayenta/middleware/actionInterceptor.ts","../../../src/kayenta/middleware/asyncDispatch.ts","../../node_modules/redux/node_modules/lodash-es/isObjectLike.js","../../../src/kayenta/components/loadStates.tsx","../../../src/kayenta/layout/formattedDate.tsx","../../../src/kayenta/edit/copyConfigButton.tsx","../../../src/kayenta/edit/openConfigJsonModalButton.tsx","../../../src/kayenta/edit/deleteModal.tsx","../../../src/kayenta/edit/openDeleteModalButton.tsx","../../../src/kayenta/edit/configDetailActionButtons.tsx","../../../src/kayenta/edit/configDetailHeader.tsx","../../../src/kayenta/edit/editMetricEffectSizes.tsx","../../../src/kayenta/edit/filterTemplateSelector.tsx","../../../src/kayenta/edit/inlineTemplateEditor.tsx","../../../src/kayenta/edit/metricConfigurerDelegator.tsx","../../../src/kayenta/edit/editMetricModal.tsx","../../../src/kayenta/layout/titledSection.tsx","../../../src/kayenta/edit/changeMetricGroupModal.tsx","../../../src/kayenta/edit/metricList.tsx","../../../src/kayenta/layout/formList.tsx","../../../src/kayenta/edit/metricStoreSelector.tsx","../../../src/kayenta/edit/nameAndDescription.tsx","../../../src/kayenta/layout/titledSubsection.tsx","../../../src/kayenta/edit/groupWeight.tsx","../../../src/kayenta/edit/groupWeights.tsx","../../../src/kayenta/edit/scoring.tsx","../../../src/kayenta/edit/configDetail.tsx","../../../src/kayenta/layout/centeredDetail.tsx","../../../src/kayenta/edit/configDetailLoadStates.tsx","../../../src/kayenta/edit/configDetailLoader.tsx","../../../src/kayenta/edit/createConfigButton.tsx","../../../src/kayenta/edit/ownedBy.tsx","../../../src/kayenta/edit/configList.tsx","../../../src/kayenta/edit/footer.tsx","../../../src/kayenta/layout/listDetail.tsx","../../../src/kayenta/edit/edit.tsx","../../../src/kayenta/edit/saveConfigButton.tsx","../../../src/kayenta/edit/saveConfigError.tsx","../../../src/kayenta/edit/validationErrors.tsx","../../../src/kayenta/edit/save.tsx","../../../src/kayenta/edit/selectConfig.tsx","../../../src/kayenta/report/detail/sourceLinks.tsx","../../../src/kayenta/report/detail/reportMetadata.tsx","../../../src/kayenta/report/detail/score.tsx","../../../src/kayenta/report/detail/header.tsx","../../../src/kayenta/report/detail/graph/graph.tsx","../../../src/kayenta/report/detail/graphTypeSelector.tsx","../../../src/kayenta/report/detail/metricResultActions.tsx","../../../src/kayenta/report/detail/metricResultStats.tsx","../../../src/kayenta/report/detail/metricResultDetailLayout.tsx","../../../src/kayenta/report/detail/metricSetPairLoadStates.tsx","../../../src/kayenta/report/detail/metricResultDetail.tsx","../../../src/kayenta/report/detail/metricResultsClassificationFilters.tsx","../../../src/kayenta/report/detail/colors.ts","../../../src/kayenta/report/detail/metricResultClassification.tsx","../../../src/kayenta/report/detail/metricResultDeviation.tsx","../../../src/kayenta/report/detail/metricResultsColumns.tsx","../../../src/kayenta/report/detail/multipleResultsTable.tsx","../../../src/kayenta/report/detail/metricResultsList.tsx","../../../src/kayenta/report/detail/metricResults.tsx","../../../src/kayenta/report/detail/reportException.tsx","../../../src/kayenta/report/detail/reportExplanation.tsx","../../../src/kayenta/report/detail/headerArrow.tsx","../../../src/kayenta/report/detail/allMetricResultsHeader.tsx","../../../src/kayenta/report/detail/clickableHeader.tsx","../../../src/kayenta/report/detail/groupScores.tsx","../../../src/kayenta/report/detail/reportScores.tsx","../../../src/kayenta/report/detail/detail.tsx","../../../src/kayenta/report/detail/loadStates.tsx","../../../src/kayenta/report/detail/detailLoader.tsx","../../../src/kayenta/manualAnalysis/ManualAnalysisModal.tsx","../../../src/kayenta/report/list/configLink.tsx","../../../src/kayenta/report/list/pipelineLink.tsx","../../../src/kayenta/report/list/reportLink.tsx","../../../src/kayenta/report/list/table.tsx","../../../src/kayenta/report/list/loadStates.tsx","../../../src/kayenta/report/report.tsx","../../../src/lazy.ts","../../../src/kayenta/navigation/canary.states.ts","../../../src/kayenta/canary.dataSource.bridge.ts"],"sourcesContent":["import { ICanaryConfig } from './ICanaryConfig';\nimport { ICanaryJudgeResult } from './ICanaryJudgeResult';\nimport { ICanaryScoreThresholds } from './ICanaryScoreThresholds';\n\nexport const CANARY_EXECUTION_NO_PIPELINE_STATUS = 'no-parent-pipeline-execution';\n\nexport interface ICanaryExecutionStatusResult {\n id: string; // Added by Deck on load.\n canaryConfigId: string;\n complete: boolean;\n status: string;\n result: ICanaryResult;\n exception?: ICanaryExecutionException;\n stageStatus: { [key: string]: string };\n startTimeIso: string;\n endTimeIso: string;\n application: string;\n pipelineId: string;\n parentPipelineExecutionId: string;\n metricSetPairListId: string;\n metricsAccountName: string;\n config: ICanaryConfig;\n canaryExecutionRequest: ICanaryExecutionRequest;\n storageAccountName: string;\n}\n\nexport interface ICanaryExecutionException {\n exceptionType: string;\n operation: string;\n details: { [key: string]: any };\n timestamp: string;\n}\n\nexport interface ICanaryResult {\n judgeResult: ICanaryJudgeResult;\n}\n\nexport interface ICanaryExecutionRequest {\n thresholds: ICanaryScoreThresholds;\n scopes: {\n [scopeName: string]: ICanaryScopePair;\n };\n}\n\nexport interface ICanaryExecutionRequestParams {\n application?: string;\n parentPipelineExecutionId?: string;\n metricsAccountName?: string;\n storageAccountName?: string;\n configurationAccountName?: string;\n}\n\nexport interface ICanaryExecutionResponse {\n canaryExecutionId: string;\n}\n\nexport type ICanaryScopesByName = ICanaryExecutionRequest['scopes'];\n\nexport interface ICanaryScopePair {\n controlScope: ICanaryScope;\n experimentScope: ICanaryScope;\n}\n\nexport interface ICanaryScope {\n scope: string;\n location: string;\n start: string;\n end: string;\n step: number;\n extendedScopeParams?: { [param: string]: string };\n resourceType?: string;\n}\n","import classNames from 'classnames';\nimport * as React from 'react';\n\nimport { ITableColumn } from './tableColumn';\n\nexport interface ITableHeaderProps {\n columns: Array<ITableColumn<any>>;\n className: string;\n}\n\nexport const TableHeader = ({ columns, className }: ITableHeaderProps) => {\n return (\n <div className={classNames('horizontal', className)}>\n {columns.map((c, i) => (\n <div key={c.label || i} className={`flex-${c.width}`}>\n {!c.hide && (\n <h6 className={classNames('heading-6', 'uppercase', 'color-text-primary', c.labelClassName)}>{c.label}</h6>\n )}\n </div>\n ))}\n </div>\n );\n};\n","import classNames from 'classnames';\nimport * as React from 'react';\n\nimport { ITableColumn } from './tableColumn';\nimport { TableHeader } from './tableHeader';\n\nexport interface ITableProps<T> {\n rows: T[];\n columns: Array<ITableColumn<T>>;\n rowKey: (row: T) => string;\n tableBodyClassName?: string;\n headerClassName?: string;\n rowClassName?: (row: T) => string;\n onRowClick?: (row: T) => void;\n customRow?: (row: T) => JSX.Element;\n className?: string;\n}\n\nexport function Table<T>({\n rows,\n columns,\n rowKey,\n tableBodyClassName,\n rowClassName,\n onRowClick,\n customRow,\n className,\n headerClassName,\n}: ITableProps<T>) {\n const TableRow = ({ row }: { row: T }) => (\n <li\n onClick={onRowClick ? () => onRowClick(row) : null}\n className={classNames(\n { horizontal: !rowClassName, 'table-row': !rowClassName },\n rowClassName && rowClassName(row),\n )}\n >\n {columns.map((c, i) => (\n <div key={c.label || i} className={`flex-${c.width}`}>\n {!c.hide && c.getContent(row)}\n </div>\n ))}\n </li>\n );\n\n return (\n <div className={className}>\n <ul className={classNames(tableBodyClassName, 'list-group')}>\n <TableHeader columns={columns} className={classNames('table-header', 'sticky-header', headerClassName)} />\n {rows.map((r) =>\n customRow && customRow(r) ? <div key={rowKey(r)}>{customRow(r)}</div> : <TableRow key={rowKey(r)} row={r} />,\n )}\n </ul>\n </div>\n );\n}\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\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 (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\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 function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\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) : adopt(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 var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") 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 throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\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\n/** @deprecated */\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\n/** @deprecated */\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 __spreadArray(to, from) {\r\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\r\n to[j] = from[i];\r\n return to;\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\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\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 (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, 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\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nexports.default = autoBindMethods;\n/**\n * Overloaded function for auto-binding the methods of a class to the class's relevant instance. If\n * the first argument is a function, as it will be when this is used as a \"bare\" or \"unconfigured\"\n * decorator -- as in `@autoBindMethods class SomeClass {}` -- it does the auto-bind decorating by\n * delegating to `autoBindMethodsDecorator`. If the first argument is *not* a function, as happens\n * when this is used as a \"configured\" decorator -- as in `@autoBindMethods(options) class SomeClass\n * {}` -- it returns a function that *itself* accepts a function (the class constructor) as its\n * first argument and that does the auto-bind decorating by delegating to\n * `autoBindMethodsDecorator`.\n *\n * The delegate method `autoBindMethodsDecorator` is `call`ed in order to avoid changing the context\n * from whatever it would ordinarily be in the case of a non-overloaded decorator, while still\n * allowing us to pass on any received `options`.\n *\n * @param {Object} [options] - optional options\n * @param {String[]} [options.methodsToIgnore] - names of methods to skip auto-binding\n * @param {boolean} [options.dontOptimize] - if truthy, turns off the decorator's default\n * optimization behavior, which is to define the bound method directly on the class instance\n * in order to prevent lookups and re-binding on every access\n * @returns {*}\n */\nfunction autoBindMethods(input) {\n if (typeof input !== 'function') {\n return function (target) {\n autoBindMethodsDecorator.call(this, target, input);\n };\n }\n\n autoBindMethodsDecorator.call(this, input);\n}\n\n/**\n * A \"legacy\"-style \"class\" decorator function for auto-binding the methods of the \"class.\"\n *\n * @param {Function} target - an ES2015 \"class\" or -- what is effectively the same thing -- a\n * constructor function.\n * @param {Object} [options] - optional options\n * @param {string[]} [options.methodsToIgnore] - names of methods to skip auto-binding\n * @param {boolean} [options.dontOptimize] - if truthy, turns off the decorator's default\n * optimization behavior, which is to define the bound method directly on the class instance\n * in order to prevent lookups and re-binding on every access\n */\nfunction autoBindMethodsDecorator(target) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (typeof target !== 'function') {\n throw new TypeError('The autoBindMethods decorator must be passed a function as the first argument. ' + ('It received an argument of type ' + (typeof target === 'undefined' ? 'undefined' : _typeof(target)) + '.'));\n }\n\n var prototype = target.prototype;\n var _options$methodsToIgn = options.methodsToIgnore,\n methodsToIgnore = _options$methodsToIgn === undefined ? [] : _options$methodsToIgn,\n _options$dontOptimize = options.dontOptimize,\n dontOptimize = _options$dontOptimize === undefined ? false : _options$dontOptimize;\n\n\n var ownProps = typeof Object.getOwnPropertySymbols === 'function' ? Object.getOwnPropertyNames(prototype).concat(Object.getOwnPropertySymbols(prototype)) : Object.getOwnPropertyNames(prototype);\n\n if (methodsToIgnore.length > 0) {\n ownProps = ownProps.filter(function (prop) {\n return methodsToIgnore.indexOf(prop) === -1;\n });\n }\n\n ownProps.forEach(function (ownPropIdentifier) {\n var propDescriptor = Object.getOwnPropertyDescriptor(prototype, ownPropIdentifier);\n var value = propDescriptor.value,\n configurable = propDescriptor.configurable;\n\n\n if (typeof value !== 'function' || !configurable) {\n // We can only do our work with configurable functions, so bail early here.\n return;\n }\n\n Object.defineProperty(prototype, ownPropIdentifier, {\n get: function get() {\n if (this.hasOwnProperty(ownPropIdentifier)) {\n // Don't bind the prototype's method to the prototype, or we can't re-bind it.\n return value;\n }\n\n var boundMethod = value.bind(this);\n\n if (!dontOptimize) {\n var writable = propDescriptor.writable,\n enumerable = propDescriptor.enumerable; // use same values as prototype for consistency\n\n // `defineProperty` must be used here rather than a standard assignment because\n // assignments will first check for getters/setters up the prototype chain and\n // thus reject the assignment (since the property on the prototype has a getter\n // but no setter (see: http://www.2ality.com/2012/08/property-definition-assignment.html))\n\n Object.defineProperty(this, ownPropIdentifier, {\n value: boundMethod,\n configurable: true,\n writable: writable,\n enumerable: enumerable\n });\n }\n\n return boundMethod;\n }\n });\n });\n}","import PropTypes from 'prop-types';\n\nexport var subscriptionShape = PropTypes.shape({\n trySubscribe: PropTypes.func.isRequired,\n tryUnsubscribe: PropTypes.func.isRequired,\n notifyNestedSubs: PropTypes.func.isRequired,\n isSubscribed: PropTypes.func.isRequired\n});\n\nexport var storeShape = PropTypes.shape({\n subscribe: PropTypes.func.isRequired,\n dispatch: PropTypes.func.isRequired,\n getState: PropTypes.func.isRequired\n});","function _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\nimport { Component, Children } from 'react';\nimport PropTypes from 'prop-types';\nimport { storeShape, subscriptionShape } from '../utils/PropTypes';\nimport warning from '../utils/warning';\n\nvar didWarnAboutReceivingStore = false;\nfunction warnAboutReceivingStore() {\n if (didWarnAboutReceivingStore) {\n return;\n }\n didWarnAboutReceivingStore = true;\n\n warning('<Provider> does not support changing `store` on the fly. ' + 'It is most likely that you see this error because you updated to ' + 'Redux 2.x and React Redux 2.x which no longer hot reload reducers ' + 'automatically. See https://github.com/reactjs/react-redux/releases/' + 'tag/v2.0.0 for the migration instructions.');\n}\n\nexport function createProvider() {\n var _Provider$childContex;\n\n var storeKey = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'store';\n var subKey = arguments[1];\n\n var subscriptionKey = subKey || storeKey + 'Subscription';\n\n var Provider = function (_Component) {\n _inherits(Provider, _Component);\n\n Provider.prototype.getChildContext = function getChildContext() {\n var _ref;\n\n return _ref = {}, _ref[storeKey] = this[storeKey], _ref[subscriptionKey] = null, _ref;\n };\n\n function Provider(props, context) {\n _classCallCheck(this, Provider);\n\n var _this = _possibleConstructorReturn(this, _Component.call(this, props, context));\n\n _this[storeKey] = props.store;\n return _this;\n }\n\n Provider.prototype.render = function render() {\n return Children.only(this.props.children);\n };\n\n return Provider;\n }(Component);\n\n if (process.env.NODE_ENV !== 'production') {\n Provider.prototype.componentWillReceiveProps = function (nextProps) {\n if (this[storeKey] !== nextProps.store) {\n warnAboutReceivingStore();\n }\n };\n }\n\n Provider.propTypes = {\n store: storeShape.isRequired,\n children: PropTypes.element.isRequired\n };\n Provider.childContextTypes = (_Provider$childContex = {}, _Provider$childContex[storeKey] = storeShape.isRequired, _Provider$childContex[subscriptionKey] = subscriptionShape, _Provider$childContex);\n\n return Provider;\n}\n\nexport default createProvider();","/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\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.hoistNonReactStatics = factory());\n}(this, (function () {\n 'use strict';\n \n var 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 \n var 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 \n var defineProperty = Object.defineProperty;\n var getOwnPropertyNames = Object.getOwnPropertyNames;\n var getOwnPropertySymbols = Object.getOwnPropertySymbols;\n var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n var getPrototypeOf = Object.getPrototypeOf;\n var objectPrototype = getPrototypeOf && getPrototypeOf(Object);\n \n return function 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})));\n","/**\n * Copyright 2013-2015, 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\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 NODE_ENV = process.env.NODE_ENV;\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n if (NODE_ENV !== 'production') {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n }\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error(\n 'Minified exception occurred; use the non-minified dev environment ' +\n 'for the full error message and additional helpful warnings.'\n );\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(\n format.replace(/%s/g, function() { 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;\n","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n// encapsulates the subscription logic for connecting a component to the redux store, as\n// well as nesting subscriptions of descendant components, so that we can ensure the\n// ancestor components re-render before descendants\n\nvar CLEARED = null;\nvar nullListeners = {\n notify: function notify() {}\n};\n\nfunction createListenerCollection() {\n // the current/next pattern is copied from redux's createStore code.\n // TODO: refactor+expose that code to be reusable here?\n var current = [];\n var next = [];\n\n return {\n clear: function clear() {\n next = CLEARED;\n current = CLEARED;\n },\n notify: function notify() {\n var listeners = current = next;\n for (var i = 0; i < listeners.length; i++) {\n listeners[i]();\n }\n },\n get: function get() {\n return next;\n },\n subscribe: function subscribe(listener) {\n var isSubscribed = true;\n if (next === current) next = current.slice();\n next.push(listener);\n\n return function unsubscribe() {\n if (!isSubscribed || current === CLEARED) return;\n isSubscribed = false;\n\n if (next === current) next = current.slice();\n next.splice(next.indexOf(listener), 1);\n };\n }\n };\n}\n\nvar Subscription = function () {\n function Subscription(store, parentSub, onStateChange) {\n _classCallCheck(this, Subscription);\n\n this.store = store;\n this.parentSub = parentSub;\n this.onStateChange = onStateChange;\n this.unsubscribe = null;\n this.listeners = nullListeners;\n }\n\n Subscription.prototype.addNestedSub = function addNestedSub(listener) {\n this.trySubscribe();\n return this.listeners.subscribe(listener);\n };\n\n Subscription.prototype.notifyNestedSubs = function notifyNestedSubs() {\n this.listeners.notify();\n };\n\n Subscription.prototype.isSubscribed = function isSubscribed() {\n return Boolean(this.unsubscribe);\n };\n\n Subscription.prototype.trySubscribe = function trySubscribe() {\n if (!this.unsubscribe) {\n this.unsubscribe = this.parentSub ? this.parentSub.addNestedSub(this.onStateChange) : this.store.subscribe(this.onStateChange);\n\n this.listeners = createListenerCollection();\n }\n };\n\n Subscription.prototype.tryUnsubscribe = function tryUnsubscribe() {\n if (this.unsubscribe) {\n this.unsubscribe();\n this.unsubscribe = null;\n this.listeners.clear();\n this.listeners = nullListeners;\n }\n };\n\n return Subscription;\n}();\n\nexport { Subscription as default };","var _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\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 _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nimport hoistStatics from 'hoist-non-react-statics';\nimport invariant from 'invariant';\nimport { Component, createElement } from 'react';\n\nimport Subscription from '../utils/Subscription';\nimport { storeShape, subscriptionShape } from '../utils/PropTypes';\n\nvar hotReloadingVersion = 0;\nvar dummyState = {};\nfunction noop() {}\nfunction makeSelectorStateful(sourceSelector, store) {\n // wrap the selector in an object that tracks its results between runs.\n var selector = {\n run: function runComponentSelector(props) {\n try {\n var nextProps = sourceSelector(store.getState(), props);\n if (nextProps !== selector.props || selector.error) {\n selector.shouldComponentUpdate = true;\n selector.props = nextProps;\n selector.error = null;\n }\n } catch (error) {\n selector.shouldComponentUpdate = true;\n selector.error = error;\n }\n }\n };\n\n return selector;\n}\n\nexport default function connectAdvanced(\n/*\n selectorFactory is a func that is responsible for returning the selector function used to\n compute new props from state, props, and dispatch. For example:\n export default connectAdvanced((dispatch, options) => (state, props) => ({\n thing: state.things[props.thingId],\n saveThing: fields => dispatch(actionCreators.saveThing(props.thingId, fields)),\n }))(YourComponent)\n Access to dispatch is provided to the factory so selectorFactories can bind actionCreators\n outside of their selector as an optimization. Options passed to connectAdvanced are passed to\n the selectorFactory, along with displayName and WrappedComponent, as the second argument.\n Note that selectorFactory is responsible for all caching/memoization of inbound and outbound\n props. Do not use connectAdvanced directly without memoizing results between calls to your\n selector, otherwise the Connect component will re-render on every state or props change.\n*/\nselectorFactory) {\n var _contextTypes, _childContextTypes;\n\n var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n _ref$getDisplayName = _ref.getDisplayName,\n getDisplayName = _ref$getDisplayName === undefined ? function (name) {\n return 'ConnectAdvanced(' + name + ')';\n } : _ref$getDisplayName,\n _ref$methodName = _ref.methodName,\n methodName = _ref$methodName === undefined ? 'connectAdvanced' : _ref$methodName,\n _ref$renderCountProp = _ref.renderCountProp,\n renderCountProp = _ref$renderCountProp === undefined ? undefined : _ref$renderCountProp,\n _ref$shouldHandleStat = _ref.shouldHandleStateChanges,\n shouldHandleStateChanges = _ref$shouldHandleStat === undefined ? true : _ref$shouldHandleStat,\n _ref$storeKey = _ref.storeKey,\n storeKey = _ref$storeKey === undefined ? 'store' : _ref$storeKey,\n _ref$withRef = _ref.withRef,\n withRef = _ref$withRef === undefined ? false : _ref$withRef,\n connectOptions = _objectWithoutProperties(_ref, ['getDisplayName', 'methodName', 'renderCountProp', 'shouldHandleStateChanges', 'storeKey', 'withRef']);\n\n var subscriptionKey = storeKey + 'Subscription';\n var version = hotReloadingVersion++;\n\n var contextTypes = (_contextTypes = {}, _contextTypes[storeKey] = storeShape, _contextTypes[subscriptionKey] = subscriptionShape, _contextTypes);\n var childContextTypes = (_childContextTypes = {}, _childContextTypes[subscriptionKey] = subscriptionShape, _childContextTypes);\n\n return function wrapWithConnect(WrappedComponent) {\n invariant(typeof WrappedComponent == 'function', 'You must pass a component to the function returned by ' + (methodName + '. Instead received ' + JSON.stringify(WrappedComponent)));\n\n var wrappedComponentName = WrappedComponent.displayName || WrappedComponent.name || 'Component';\n\n var displayName = getDisplayName(wrappedComponentName);\n\n var selectorFactoryOptions = _extends({}, connectOptions, {\n getDisplayName: getDisplayName,\n methodName: methodName,\n renderCountProp: renderCountProp,\n shouldHandleStateChanges: shouldHandleStateChanges,\n storeKey: storeKey,\n withRef: withRef,\n displayName: displayName,\n wrappedComponentName: wrappedComponentName,\n WrappedComponent: WrappedComponent\n });\n\n var Connect = function (_Component) {\n _inherits(Connect, _Component);\n\n function Connect(props, context) {\n _classCallCheck(this, Connect);\n\n var _this = _possibleConstructorReturn(this, _Component.call(this, props, context));\n\n _this.version = version;\n _this.state = {};\n _this.renderCount = 0;\n _this.store = props[storeKey] || context[storeKey];\n _this.propsMode = Boolean(props[storeKey]);\n _this.setWrappedInstance = _this.setWrappedInstance.bind(_this);\n\n invariant(_this.store, 'Could not find \"' + storeKey + '\" in either the context or props of ' + ('\"' + displayName + '\". Either wrap the root component in a <Provider>, ') + ('or explicitly pass \"' + storeKey + '\" as a prop to \"' + displayName + '\".'));\n\n _this.initSelector();\n _this.initSubscription();\n return _this;\n }\n\n Connect.prototype.getChildContext = function getChildContext() {\n var _ref2;\n\n // If this component received store from props, its subscription should be transparent\n // to any descendants receiving store+subscription from context; it passes along\n // subscription passed to it. Otherwise, it shadows the parent subscription, which allows\n // Connect to control ordering of notifications to flow top-down.\n var subscription = this.propsMode ? null : this.subscription;\n return _ref2 = {}, _ref2[subscriptionKey] = subscription || this.context[subscriptionKey], _ref2;\n };\n\n Connect.prototype.componentDidMount = function componentDidMount() {\n if (!shouldHandleStateChanges) return;\n\n // componentWillMount fires during server side rendering, but componentDidMount and\n // componentWillUnmount do not. Because of this, trySubscribe happens during ...didMount.\n // Otherwise, unsubscription would never take place during SSR, causing a memory leak.\n // To handle the case where a child component may have triggered a state change by\n // dispatching an action in its componentWillMount, we have to re-run the select and maybe\n // re-render.\n this.subscription.trySubscribe();\n this.selector.run(this.props);\n if (this.selector.shouldComponentUpdate) this.forceUpdate();\n };\n\n Connect.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n this.selector.run(nextProps);\n };\n\n Connect.prototype.shouldComponentUpdate = function shouldComponentUpdate() {\n return this.selector.shouldComponentUpdate;\n };\n\n Connect.prototype.componentWillUnmount = function componentWillUnmount() {\n if (this.subscription) this.subscription.tryUnsubscribe();\n this.subscription = null;\n this.notifyNestedSubs = noop;\n this.store = null;\n this.selector.run = noop;\n this.selector.shouldComponentUpdate = false;\n };\n\n Connect.prototype.getWrappedInstance = function getWrappedInstance() {\n invariant(withRef, 'To access the wrapped instance, you need to specify ' + ('{ withRef: true } in the options argument of the ' + methodName + '() call.'));\n return this.wrappedInstance;\n };\n\n Connect.prototype.setWrappedInstance = function setWrappedInstance(ref) {\n this.wrappedInstance = ref;\n };\n\n Connect.prototype.initSelector = function initSelector() {\n var sourceSelector = selectorFactory(this.store.dispatch, selectorFactoryOptions);\n this.selector = makeSelectorStateful(sourceSelector, this.store);\n this.selector.run(this.props);\n };\n\n Connect.prototype.initSubscription = function initSubscription() {\n if (!shouldHandleStateChanges) return;\n\n // parentSub's source should match where store came from: props vs. context. A component\n // connected to the store via props shouldn't use subscription from context, or vice versa.\n var parentSub = (this.propsMode ? this.props : this.context)[subscriptionKey];\n this.subscription = new Subscription(this.store, parentSub, this.onStateChange.bind(this));\n\n // `notifyNestedSubs` is duplicated to handle the case where the component is unmounted in\n // the middle of the notification loop, where `this.subscription` will then be null. An\n // extra null check every change can be avoided by copying the method onto `this` and then\n // replacing it with a no-op on unmount. This can probably be avoided if Subscription's\n // listeners logic is changed to not call listeners that have been unsubscribed in the\n // middle of the notification loop.\n this.notifyNestedSubs = this.subscription.notifyNestedSubs.bind(this.subscription);\n };\n\n Connect.prototype.onStateChange = function onStateChange() {\n this.selector.run(this.props);\n\n if (!this.selector.shouldComponentUpdate) {\n this.notifyNestedSubs();\n } else {\n this.componentDidUpdate = this.notifyNestedSubsOnComponentDidUpdate;\n this.setState(dummyState);\n }\n };\n\n Connect.prototype.notifyNestedSubsOnComponentDidUpdate = function notifyNestedSubsOnComponentDidUpdate() {\n // `componentDidUpdate` is conditionally implemented when `onStateChange` determines it\n // needs to notify nested subs. Once called, it unimplements itself until further state\n // changes occur. Doing it this way vs having a permanent `componentDidUpdate` that does\n // a boolean check every time avoids an extra method call most of the time, resulting\n // in some perf boost.\n this.componentDidUpdate = undefined;\n this.notifyNestedSubs();\n };\n\n Connect.prototype.isSubscribed = function isSubscribed() {\n return Boolean(this.subscription) && this.subscription.isSubscribed();\n };\n\n Connect.prototype.addExtraProps = function addExtraProps(props) {\n if (!withRef && !renderCountProp && !(this.propsMode && this.subscription)) return props;\n // make a shallow copy so that fields added don't leak to the original selector.\n // this is especially important for 'ref' since that's a reference back to the component\n // instance. a singleton memoized selector would then be holding a reference to the\n // instance, preventing the instance from being garbage collected, and that would be bad\n var withExtras = _extends({}, props);\n if (withRef) withExtras.ref = this.setWrappedInstance;\n if (renderCountProp) withExtras[renderCountProp] = this.renderCount++;\n if (this.propsMode && this.subscription) withExtras[subscriptionKey] = this.subscription;\n return withExtras;\n };\n\n Connect.prototype.render = function render() {\n var selector = this.selector;\n selector.shouldComponentUpdate = false;\n\n if (selector.error) {\n throw selector.error;\n } else {\n return createElement(WrappedComponent, this.addExtraProps(selector.props));\n }\n };\n\n return Connect;\n }(Component);\n\n Connect.WrappedComponent = WrappedComponent;\n Connect.displayName = displayName;\n Connect.childContextTypes = childContextTypes;\n Connect.contextTypes = contextTypes;\n Connect.propTypes = contextTypes;\n\n if (process.env.NODE_ENV !== 'production') {\n Connect.prototype.componentWillUpdate = function componentWillUpdate() {\n var _this2 = this;\n\n // We are hot reloading!\n if (this.version !== version) {\n this.version = version;\n this.initSelector();\n\n // If any connected descendants don't hot reload (and resubscribe in the process), their\n // listeners will be lost when we unsubscribe. Unfortunately, by copying over all\n // listeners, this does mean that the old versions of connected descendants will still be\n // notified of state changes; however, their onStateChange function is a no-op so this\n // isn't a huge deal.\n var oldListeners = [];\n\n if (this.subscription) {\n oldListeners = this.subscription.listeners.get();\n this.subscription.tryUnsubscribe();\n }\n this.initSubscription();\n if (shouldHandleStateChanges) {\n this.subscription.trySubscribe();\n oldListeners.forEach(function (listener) {\n return _this2.subscription.listeners.subscribe(listener);\n });\n }\n }\n };\n }\n\n return hoistStatics(Connect, WrappedComponent);\n };\n}","var hasOwn = Object.prototype.hasOwnProperty;\n\nfunction is(x, y) {\n if (x === y) {\n return x !== 0 || y !== 0 || 1 / x === 1 / y;\n } else {\n return x !== x && y !== y;\n }\n}\n\nexport default function shallowEqual(objA, objB) {\n if (is(objA, objB)) return true;\n\n if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) {\n return false;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n\n if (keysA.length !== keysB.length) return false;\n\n for (var i = 0; i < keysA.length; i++) {\n if (!hasOwn.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {\n return false;\n }\n }\n\n return true;\n}","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nexport default freeGlobal;\n","import freeGlobal from './_freeGlobal.js';\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\nexport default root;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nexport default Symbol;\n","import Symbol from './_Symbol.js';\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\nexport default 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\nexport default objectToString;\n","import Symbol from './_Symbol.js';\nimport getRawTag from './_getRawTag.js';\nimport objectToString from './_objectToString.js';\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\nexport default baseGetTag;\n","import overArg from './_overArg.js';\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nexport default getPrototype;\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\nexport default overArg;\n","import baseGetTag from './_baseGetTag.js';\nimport getPrototype from './_getPrototype.js';\nimport isObjectLike from './isObjectLike.js';\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\nexport default isPlainObject;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nexports['default'] = symbolObservablePonyfill;\nfunction symbolObservablePonyfill(root) {\n\tvar result;\n\tvar _Symbol = root.Symbol;\n\n\tif (typeof _Symbol === 'function') {\n\t\tif (_Symbol.observable) {\n\t\t\tresult = _Symbol.observable;\n\t\t} else {\n\t\t\tresult = _Symbol('observable');\n\t\t\t_Symbol.observable = result;\n\t\t}\n\t} else {\n\t\tresult = '@@observable';\n\t}\n\n\treturn result;\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _ponyfill = require('./ponyfill');\n\nvar _ponyfill2 = _interopRequireDefault(_ponyfill);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar root; /* global window */\n\n\nif (typeof self !== 'undefined') {\n root = self;\n} else if (typeof window !== 'undefined') {\n root = window;\n} else if (typeof global !== 'undefined') {\n root = global;\n} else if (typeof module !== 'undefined') {\n root = module;\n} else {\n root = Function('return this')();\n}\n\nvar result = (0, _ponyfill2['default'])(root);\nexports['default'] = result;","import isPlainObject from 'lodash-es/isPlainObject';\nimport $$observable from 'symbol-observable';\n\n/**\n * These are private action types reserved by Redux.\n * For any unknown actions, you must return the current state.\n * If the current state is undefined, you must return the initial state.\n * Do not reference these action types directly in your code.\n */\nexport var ActionTypes = {\n INIT: '@@redux/INIT'\n\n /**\n * Creates a Redux store that holds the state tree.\n * The only way to change the data in the store is to call `dispatch()` on it.\n *\n * There should only be a single store in your app. To specify how different\n * parts of the state tree respond to actions, you may combine several reducers\n * into a single reducer function by using `combineReducers`.\n *\n * @param {Function} reducer A function that returns the next state tree, given\n * the current state tree and the action to handle.\n *\n * @param {any} [preloadedState] The initial state. You may optionally specify it\n * to hydrate the state from the server in universal apps, or to restore a\n * previously serialized user session.\n * If you use `combineReducers` to produce the root reducer function, this must be\n * an object with the same shape as `combineReducers` keys.\n *\n * @param {Function} [enhancer] The store enhancer. You may optionally specify it\n * to enhance the store with third-party capabilities such as middleware,\n * time travel, persistence, etc. The only store enhancer that ships with Redux\n * is `applyMiddleware()`.\n *\n * @returns {Store} A Redux store that lets you read the state, dispatch actions\n * and subscribe to changes.\n */\n};export default function createStore(reducer, preloadedState, enhancer) {\n var _ref2;\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') {\n enhancer = preloadedState;\n preloadedState = undefined;\n }\n\n if (typeof enhancer !== 'undefined') {\n if (typeof enhancer !== 'function') {\n throw new Error('Expected the enhancer to be a function.');\n }\n\n return enhancer(createStore)(reducer, preloadedState);\n }\n\n if (typeof reducer !== 'function') {\n throw new Error('Expected the reducer to be a function.');\n }\n\n var currentReducer = reducer;\n var currentState = preloadedState;\n var currentListeners = [];\n var nextListeners = currentListeners;\n var isDispatching = false;\n\n function ensureCanMutateNextListeners() {\n if (nextListeners === currentListeners) {\n nextListeners = currentListeners.slice();\n }\n }\n\n /**\n * Reads the state tree managed by the store.\n *\n * @returns {any} The current state tree of your application.\n */\n function getState() {\n return currentState;\n }\n\n /**\n * Adds a change listener. It will be called any time an action is dispatched,\n * and some part of the state tree may potentially have changed. You may then\n * call `getState()` to read the current state tree inside the callback.\n *\n * You may call `dispatch()` from a change listener, with the following\n * caveats:\n *\n * 1. The subscriptions are snapshotted just before every `dispatch()` call.\n * If you subscribe or unsubscribe while the listeners are being invoked, this\n * will not have any effect on the `dispatch()` that is currently in progress.\n * However, the next `dispatch()` call, whether nested or not, will use a more\n * recent snapshot of the subscription list.\n *\n * 2. The listener should not expect to see all state changes, as the state\n * might have been updated multiple times during a nested `dispatch()` before\n * the listener is called. It is, however, guaranteed that all subscribers\n * registered before the `dispatch()` started will be called with the latest\n * state by the time it exits.\n *\n * @param {Function} listener A callback to be invoked on every dispatch.\n * @returns {Function} A function to remove this change listener.\n */\n function subscribe(listener) {\n if (typeof listener !== 'function') {\n throw new Error('Expected listener to be a function.');\n }\n\n var isSubscribed = true;\n\n ensureCanMutateNextListeners();\n nextListeners.push(listener);\n\n return function unsubscribe() {\n if (!isSubscribed) {\n return;\n }\n\n isSubscribed = false;\n\n ensureCanMutateNextListeners();\n var index = nextListeners.indexOf(listener);\n nextListeners.splice(index, 1);\n };\n }\n\n /**\n * Dispatches an action. It is the only way to trigger a state change.\n *\n * The `reducer` function, used to create the store, will be called with the\n * current state tree and the given `action`. Its return value will\n * be considered the **next** state of the tree, and the change listeners\n * will be notified.\n *\n * The base implementation only supports plain object actions. If you want to\n * dispatch a Promise, an Observable, a thunk, or something else, you need to\n * wrap your store creating function into the corresponding middleware. For\n * example, see the documentation for the `redux-thunk` package. Even the\n * middleware will eventually dispatch plain object actions using this method.\n *\n * @param {Object} action A plain object representing “what changed”. It is\n * a good idea to keep actions serializable so you can record and replay user\n * sessions, or use the time travelling `redux-devtools`. An action must have\n * a `type` property which may not be `undefined`. It is a good idea to use\n * string constants for action types.\n *\n * @returns {Object} For convenience, the same action object you dispatched.\n *\n * Note that, if you use a custom middleware, it may wrap `dispatch()` to\n * return something else (for example, a Promise you can await).\n */\n function dispatch(action) {\n if (!isPlainObject(action)) {\n throw new Error('Actions must be plain objects. ' + 'Use custom middleware for async actions.');\n }\n\n if (typeof action.type === 'undefined') {\n throw new Error('Actions may not have an undefined \"type\" property. ' + 'Have you misspelled a constant?');\n }\n\n if (isDispatching) {\n throw new Error('Reducers may not dispatch actions.');\n }\n\n try {\n isDispatching = true;\n currentState = currentReducer(currentState, action);\n } finally {\n isDispatching = false;\n }\n\n var listeners = currentListeners = nextListeners;\n for (var i = 0; i < listeners.length; i++) {\n var listener = listeners[i];\n listener();\n }\n\n return action;\n }\n\n /**\n * Replaces the reducer currently used by the store to calculate the state.\n *\n * You might need this if your app implements code splitting and you want to\n * load some of the reducers dynamically. You might also need this if you\n * implement a hot reloading mechanism for Redux.\n *\n * @param {Function} nextReducer The reducer for the store to use instead.\n * @returns {void}\n */\n function replaceReducer(nextReducer) {\n if (typeof nextReducer !== 'function') {\n throw new Error('Expected the nextReducer to be a function.');\n }\n\n currentReducer = nextReducer;\n dispatch({ type: ActionTypes.INIT });\n }\n\n /**\n * Interoperability point for observable/reactive libraries.\n * @returns {observable} A minimal observable of state changes.\n * For more information, see the observable proposal:\n * https://github.com/tc39/proposal-observable\n */\n function observable() {\n var _ref;\n\n var outerSubscribe = subscribe;\n return _ref = {\n /**\n * The minimal observable subscription method.\n * @param {Object} observer Any object that can be used as an observer.\n * The observer object should have a `next` method.\n * @returns {subscription} An object with an `unsubscribe` method that can\n * be used to unsubscribe the observable from the store, and prevent further\n * emission of values from the observable.\n */\n subscribe: function subscribe(observer) {\n if (typeof observer !== 'object') {\n throw new TypeError('Expected the observer to be an object.');\n }\n\n function observeState() {\n if (observer.next) {\n observer.next(getState());\n }\n }\n\n observeState();\n var unsubscribe = outerSubscribe(observeState);\n return { unsubscribe: unsubscribe };\n }\n }, _ref[$$observable] = function () {\n return this;\n }, _ref;\n }\n\n // When a store is created, an \"INIT\" action is dispatched so that every\n // reducer returns their initial state. This effectively populates\n // the initial state tree.\n dispatch({ type: ActionTypes.INIT });\n\n return _ref2 = {\n dispatch: dispatch,\n subscribe: subscribe,\n getState: getState,\n replaceReducer: replaceReducer\n }, _ref2[$$observable] = observable, _ref2;\n}","import { ActionTypes } from './createStore';\nimport isPlainObject from 'lodash-es/isPlainObject';\nimport warning from './utils/warning';\n\nfunction getUndefinedStateErrorMessage(key, action) {\n var actionType = action && action.type;\n var actionName = actionType && '\"' + actionType.toString() + '\"' || 'an action';\n\n return 'Given action ' + actionName + ', reducer \"' + key + '\" returned undefined. ' + 'To ignore an action, you must explicitly return the previous state. ' + 'If you want this reducer to hold no value, you can return null instead of undefined.';\n}\n\nfunction getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) {\n var reducerKeys = Object.keys(reducers);\n var argumentName = action && action.type === ActionTypes.INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer';\n\n if (reducerKeys.length === 0) {\n return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.';\n }\n\n if (!isPlainObject(inputState)) {\n return 'The ' + argumentName + ' has unexpected type of \"' + {}.toString.call(inputState).match(/\\s([a-z|A-Z]+)/)[1] + '\". Expected argument to be an object with the following ' + ('keys: \"' + reducerKeys.join('\", \"') + '\"');\n }\n\n var unexpectedKeys = Object.keys(inputState).filter(function (key) {\n return !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key];\n });\n\n unexpectedKeys.forEach(function (key) {\n unexpectedKeyCache[key] = true;\n });\n\n if (unexpectedKeys.length > 0) {\n return 'Unexpected ' + (unexpectedKeys.length > 1 ? 'keys' : 'key') + ' ' + ('\"' + unexpectedKeys.join('\", \"') + '\" found in ' + argumentName + '. ') + 'Expected to find one of the known reducer keys instead: ' + ('\"' + reducerKeys.join('\", \"') + '\". Unexpected keys will be ignored.');\n }\n}\n\nfunction assertReducerShape(reducers) {\n Object.keys(reducers).forEach(function (key) {\n var reducer = reducers[key];\n var initialState = reducer(undefined, { type: ActionTypes.INIT });\n\n if (typeof initialState === 'undefined') {\n throw new Error('Reducer \"' + key + '\" returned undefined during initialization. ' + 'If the state passed to the reducer is undefined, you must ' + 'explicitly return the initial state. The initial state may ' + 'not be undefined. If you don\\'t want to set a value for this reducer, ' + 'you can use null instead of undefined.');\n }\n\n var type = '@@redux/PROBE_UNKNOWN_ACTION_' + Math.random().toString(36).substring(7).split('').join('.');\n if (typeof reducer(undefined, { type: type }) === 'undefined') {\n throw new Error('Reducer \"' + key + '\" returned undefined when probed with a random type. ' + ('Don\\'t try to handle ' + ActionTypes.INIT + ' or other actions in \"redux/*\" ') + 'namespace. They are considered private. Instead, you must return the ' + 'current state for any unknown actions, unless it is undefined, ' + 'in which case you must return the initial state, regardless of the ' + 'action type. The initial state may not be undefined, but can be null.');\n }\n });\n}\n\n/**\n * Turns an object whose values are different reducer functions, into a single\n * reducer function. It will call every child reducer, and gather their results\n * into a single state object, whose keys correspond to the keys of the passed\n * reducer functions.\n *\n * @param {Object} reducers An object whose values correspond to different\n * reducer functions that need to be combined into one. One handy way to obtain\n * it is to use ES6 `import * as reducers` syntax. The reducers may never return\n * undefined for any action. Instead, they should return their initial state\n * if the state passed to them was undefined, and the current state for any\n * unrecognized action.\n *\n * @returns {Function} A reducer function that invokes every reducer inside the\n * passed object, and builds a state object with the same shape.\n */\nexport default function combineReducers(reducers) {\n var reducerKeys = Object.keys(reducers);\n var finalReducers = {};\n for (var i = 0; i < reducerKeys.length; i++) {\n var key = reducerKeys[i];\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof reducers[key] === 'undefined') {\n warning('No reducer provided for key \"' + key + '\"');\n }\n }\n\n if (typeof reducers[key] === 'function') {\n finalReducers[key] = reducers[key];\n }\n }\n var finalReducerKeys = Object.keys(finalReducers);\n\n var unexpectedKeyCache = void 0;\n if (process.env.NODE_ENV !== 'production') {\n unexpectedKeyCache = {};\n }\n\n var shapeAssertionError = void 0;\n try {\n assertReducerShape(finalReducers);\n } catch (e) {\n shapeAssertionError = e;\n }\n\n return function combination() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var action = arguments[1];\n\n if (shapeAssertionError) {\n throw shapeAssertionError;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n var warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache);\n if (warningMessage) {\n warning(warningMessage);\n }\n }\n\n var hasChanged = false;\n var nextState = {};\n for (var _i = 0; _i < finalReducerKeys.length; _i++) {\n var _key = finalReducerKeys[_i];\n var reducer = finalReducers[_key];\n var previousStateForKey = state[_key];\n var nextStateForKey = reducer(previousStateForKey, action);\n if (typeof nextStateForKey === 'undefined') {\n var errorMessage = getUndefinedStateErrorMessage(_key, action);\n throw new Error(errorMessage);\n }\n nextState[_key] = nextStateForKey;\n hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n }\n return hasChanged ? nextState : state;\n };\n}","function bindActionCreator(actionCreator, dispatch) {\n return function () {\n return dispatch(actionCreator.apply(undefined, arguments));\n };\n}\n\n/**\n * Turns an object whose values are action creators, into an object with the\n * same keys, but with every function wrapped into a `dispatch` call so they\n * may be invoked directly. This is just a convenience method, as you can call\n * `store.dispatch(MyActionCreators.doSomething())` yourself just fine.\n *\n * For convenience, you can also pass a single function as the first argument,\n * and get a function in return.\n *\n * @param {Function|Object} actionCreators An object whose values are action\n * creator functions. One handy way to obtain it is to use ES6 `import * as`\n * syntax. You may also pass a single function.\n *\n * @param {Function} dispatch The `dispatch` function available on your Redux\n * store.\n *\n * @returns {Function|Object} The object mimicking the original object, but with\n * every action creator wrapped into the `dispatch` call. If you passed a\n * function as `actionCreators`, the return value will also be a single\n * function.\n */\nexport default function bindActionCreators(actionCreators, dispatch) {\n if (typeof actionCreators === 'function') {\n return bindActionCreator(actionCreators, dispatch);\n }\n\n if (typeof actionCreators !== 'object' || actionCreators === null) {\n throw new Error('bindActionCreators expected an object or a function, instead received ' + (actionCreators === null ? 'null' : typeof actionCreators) + '. ' + 'Did you write \"import ActionCreators from\" instead of \"import * as ActionCreators from\"?');\n }\n\n var keys = Object.keys(actionCreators);\n var boundActionCreators = {};\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n var actionCreator = actionCreators[key];\n if (typeof actionCreator === 'function') {\n boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);\n }\n }\n return boundActionCreators;\n}","/**\n * Composes single-argument functions from right to left. The rightmost\n * function can take multiple arguments as it provides the signature for\n * the resulting composite function.\n *\n * @param {...Function} funcs The functions to compose.\n * @returns {Function} A function obtained by composing the argument functions\n * from right to left. For example, compose(f, g, h) is identical to doing\n * (...args) => f(g(h(...args))).\n */\n\nexport default function compose() {\n for (var _len = arguments.length, funcs = Array(_len), _key = 0; _key < _len; _key++) {\n funcs[_key] = arguments[_key];\n }\n\n if (funcs.length === 0) {\n return function (arg) {\n return arg;\n };\n }\n\n if (funcs.length === 1) {\n return funcs[0];\n }\n\n return funcs.reduce(function (a, b) {\n return function () {\n return a(b.apply(undefined, arguments));\n };\n });\n}","var _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\nimport compose from './compose';\n\n/**\n * Creates a store enhancer that applies middleware to the dispatch method\n * of the Redux store. This is handy for a variety of tasks, such as expressing\n * asynchronous actions in a concise manner, or logging every action payload.\n *\n * See `redux-thunk` package as an example of the Redux middleware.\n *\n * Because middleware is potentially asynchronous, this should be the first\n * store enhancer in the composition chain.\n *\n * Note that each middleware will be given the `dispatch` and `getState` functions\n * as named arguments.\n *\n * @param {...Function} middlewares The middleware chain to be applied.\n * @returns {Function} A store enhancer applying the middleware.\n */\nexport default function applyMiddleware() {\n for (var _len = arguments.length, middlewares = Array(_len), _key = 0; _key < _len; _key++) {\n middlewares[_key] = arguments[_key];\n }\n\n return function (createStore) {\n return function (reducer, preloadedState, enhancer) {\n var store = createStore(reducer, preloadedState, enhancer);\n var _dispatch = store.dispatch;\n var chain = [];\n\n var middlewareAPI = {\n getState: store.getState,\n dispatch: function dispatch(action) {\n return _dispatch(action);\n }\n };\n chain = middlewares.map(function (middleware) {\n return middleware(middlewareAPI);\n });\n _dispatch = compose.apply(undefined, chain)(store.dispatch);\n\n return _extends({}, store, {\n dispatch: _dispatch\n });\n };\n };\n}","import verifyPlainObject from '../utils/verifyPlainObject';\n\nexport function wrapMapToPropsConstant(getConstant) {\n return function initConstantSelector(dispatch, options) {\n var constant = getConstant(dispatch, options);\n\n function constantSelector() {\n return constant;\n }\n constantSelector.dependsOnOwnProps = false;\n return constantSelector;\n };\n}\n\n// dependsOnOwnProps is used by createMapToPropsProxy to determine whether to pass props as args\n// to the mapToProps function being wrapped. It is also used by makePurePropsSelector to determine\n// whether mapToProps needs to be invoked when props have changed.\n// \n// A length of one signals that mapToProps does not depend on props from the parent component.\n// A length of zero is assumed to mean mapToProps is getting args via arguments or ...args and\n// therefore not reporting its length accurately..\nexport function getDependsOnOwnProps(mapToProps) {\n return mapToProps.dependsOnOwnProps !== null && mapToProps.dependsOnOwnProps !== undefined ? Boolean(mapToProps.dependsOnOwnProps) : mapToProps.length !== 1;\n}\n\n// Used by whenMapStateToPropsIsFunction and whenMapDispatchToPropsIsFunction,\n// this function wraps mapToProps in a proxy function which does several things:\n// \n// * Detects whether the mapToProps function being called depends on props, which\n// is used by selectorFactory to decide if it should reinvoke on props changes.\n// \n// * On first call, handles mapToProps if returns another function, and treats that\n// new function as the true mapToProps for subsequent calls.\n// \n// * On first call, verifies the first result is a plain object, in order to warn\n// the developer that their mapToProps function is not returning a valid result.\n// \nexport function wrapMapToPropsFunc(mapToProps, methodName) {\n return function initProxySelector(dispatch, _ref) {\n var displayName = _ref.displayName;\n\n var proxy = function mapToPropsProxy(stateOrDispatch, ownProps) {\n return proxy.dependsOnOwnProps ? proxy.mapToProps(stateOrDispatch, ownProps) : proxy.mapToProps(stateOrDispatch);\n };\n\n // allow detectFactoryAndVerify to get ownProps\n proxy.dependsOnOwnProps = true;\n\n proxy.mapToProps = function detectFactoryAndVerify(stateOrDispatch, ownProps) {\n proxy.mapToProps = mapToProps;\n proxy.dependsOnOwnProps = getDependsOnOwnProps(mapToProps);\n var props = proxy(stateOrDispatch, ownProps);\n\n if (typeof props === 'function') {\n proxy.mapToProps = props;\n proxy.dependsOnOwnProps = getDependsOnOwnProps(props);\n props = proxy(stateOrDispatch, ownProps);\n }\n\n if (process.env.NODE_ENV !== 'production') verifyPlainObject(props, displayName, methodName);\n\n return props;\n };\n\n return proxy;\n };\n}","import { bindActionCreators } from 'redux';\nimport { wrapMapToPropsConstant, wrapMapToPropsFunc } from './wrapMapToProps';\n\nexport function whenMapDispatchToPropsIsFunction(mapDispatchToProps) {\n return typeof mapDispatchToProps === 'function' ? wrapMapToPropsFunc(mapDispatchToProps, 'mapDispatchToProps') : undefined;\n}\n\nexport function whenMapDispatchToPropsIsMissing(mapDispatchToProps) {\n return !mapDispatchToProps ? wrapMapToPropsConstant(function (dispatch) {\n return { dispatch: dispatch };\n }) : undefined;\n}\n\nexport function whenMapDispatchToPropsIsObject(mapDispatchToProps) {\n return mapDispatchToProps && typeof mapDispatchToProps === 'object' ? wrapMapToPropsConstant(function (dispatch) {\n return bindActionCreators(mapDispatchToProps, dispatch);\n }) : undefined;\n}\n\nexport default [whenMapDispatchToPropsIsFunction, whenMapDispatchToPropsIsMissing, whenMapDispatchToPropsIsObject];","import { wrapMapToPropsConstant, wrapMapToPropsFunc } from './wrapMapToProps';\n\nexport function whenMapStateToPropsIsFunction(mapStateToProps) {\n return typeof mapStateToProps === 'function' ? wrapMapToPropsFunc(mapStateToProps, 'mapStateToProps') : undefined;\n}\n\nexport function whenMapStateToPropsIsMissing(mapStateToProps) {\n return !mapStateToProps ? wrapMapToPropsConstant(function () {\n return {};\n }) : undefined;\n}\n\nexport default [whenMapStateToPropsIsFunction, whenMapStateToPropsIsMissing];","var _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\nimport verifyPlainObject from '../utils/verifyPlainObject';\n\nexport function defaultMergeProps(stateProps, dispatchProps, ownProps) {\n return _extends({}, ownProps, stateProps, dispatchProps);\n}\n\nexport function wrapMergePropsFunc(mergeProps) {\n return function initMergePropsProxy(dispatch, _ref) {\n var displayName = _ref.displayName,\n pure = _ref.pure,\n areMergedPropsEqual = _ref.areMergedPropsEqual;\n\n var hasRunOnce = false;\n var mergedProps = void 0;\n\n return function mergePropsProxy(stateProps, dispatchProps, ownProps) {\n var nextMergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n\n if (hasRunOnce) {\n if (!pure || !areMergedPropsEqual(nextMergedProps, mergedProps)) mergedProps = nextMergedProps;\n } else {\n hasRunOnce = true;\n mergedProps = nextMergedProps;\n\n if (process.env.NODE_ENV !== 'production') verifyPlainObject(mergedProps, displayName, 'mergeProps');\n }\n\n return mergedProps;\n };\n };\n}\n\nexport function whenMergePropsIsFunction(mergeProps) {\n return typeof mergeProps === 'function' ? wrapMergePropsFunc(mergeProps) : undefined;\n}\n\nexport function whenMergePropsIsOmitted(mergeProps) {\n return !mergeProps ? function () {\n return defaultMergeProps;\n } : undefined;\n}\n\nexport default [whenMergePropsIsFunction, whenMergePropsIsOmitted];","function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nimport verifySubselectors from './verifySubselectors';\n\nexport function impureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch) {\n return function impureFinalPropsSelector(state, ownProps) {\n return mergeProps(mapStateToProps(state, ownProps), mapDispatchToProps(dispatch, ownProps), ownProps);\n };\n}\n\nexport function pureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, _ref) {\n var areStatesEqual = _ref.areStatesEqual,\n areOwnPropsEqual = _ref.areOwnPropsEqual,\n areStatePropsEqual = _ref.areStatePropsEqual;\n\n var hasRunAtLeastOnce = false;\n var state = void 0;\n var ownProps = void 0;\n var stateProps = void 0;\n var dispatchProps = void 0;\n var mergedProps = void 0;\n\n function handleFirstCall(firstState, firstOwnProps) {\n state = firstState;\n ownProps = firstOwnProps;\n stateProps = mapStateToProps(state, ownProps);\n dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n hasRunAtLeastOnce = true;\n return mergedProps;\n }\n\n function handleNewPropsAndNewState() {\n stateProps = mapStateToProps(state, ownProps);\n\n if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps);\n\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n\n function handleNewProps() {\n if (mapStateToProps.dependsOnOwnProps) stateProps = mapStateToProps(state, ownProps);\n\n if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps);\n\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n\n function handleNewState() {\n var nextStateProps = mapStateToProps(state, ownProps);\n var statePropsChanged = !areStatePropsEqual(nextStateProps, stateProps);\n stateProps = nextStateProps;\n\n if (statePropsChanged) mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n\n return mergedProps;\n }\n\n function handleSubsequentCalls(nextState, nextOwnProps) {\n var propsChanged = !areOwnPropsEqual(nextOwnProps, ownProps);\n var stateChanged = !areStatesEqual(nextState, state);\n state = nextState;\n ownProps = nextOwnProps;\n\n if (propsChanged && stateChanged) return handleNewPropsAndNewState();\n if (propsChanged) return handleNewProps();\n if (stateChanged) return handleNewState();\n return mergedProps;\n }\n\n return function pureFinalPropsSelector(nextState, nextOwnProps) {\n return hasRunAtLeastOnce ? handleSubsequentCalls(nextState, nextOwnProps) : handleFirstCall(nextState, nextOwnProps);\n };\n}\n\n// TODO: Add more comments\n\n// If pure is true, the selector returned by selectorFactory will memoize its results,\n// allowing connectAdvanced's shouldComponentUpdate to return false if final\n// props have not changed. If false, the selector will always return a new\n// object and shouldComponentUpdate will always return true.\n\nexport default function finalPropsSelectorFactory(dispatch, _ref2) {\n var initMapStateToProps = _ref2.initMapStateToProps,\n initMapDispatchToProps = _ref2.initMapDispatchToProps,\n initMergeProps = _ref2.initMergeProps,\n options = _objectWithoutProperties(_ref2, ['initMapStateToProps', 'initMapDispatchToProps', 'initMergeProps']);\n\n var mapStateToProps = initMapStateToProps(dispatch, options);\n var mapDispatchToProps = initMapDispatchToProps(dispatch, options);\n var mergeProps = initMergeProps(dispatch, options);\n\n if (process.env.NODE_ENV !== 'production') {\n verifySubselectors(mapStateToProps, mapDispatchToProps, mergeProps, options.displayName);\n }\n\n var selectorFactory = options.pure ? pureFinalPropsSelectorFactory : impureFinalPropsSelectorFactory;\n\n return selectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, options);\n}","var _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\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nimport connectAdvanced from '../components/connectAdvanced';\nimport shallowEqual from '../utils/shallowEqual';\nimport defaultMapDispatchToPropsFactories from './mapDispatchToProps';\nimport defaultMapStateToPropsFactories from './mapStateToProps';\nimport defaultMergePropsFactories from './mergeProps';\nimport defaultSelectorFactory from './selectorFactory';\n\n/*\n connect is a facade over connectAdvanced. It turns its args into a compatible\n selectorFactory, which has the signature:\n\n (dispatch, options) => (nextState, nextOwnProps) => nextFinalProps\n \n connect passes its args to connectAdvanced as options, which will in turn pass them to\n selectorFactory each time a Connect component instance is instantiated or hot reloaded.\n\n selectorFactory returns a final props selector from its mapStateToProps,\n mapStateToPropsFactories, mapDispatchToProps, mapDispatchToPropsFactories, mergeProps,\n mergePropsFactories, and pure args.\n\n The resulting final props selector is called by the Connect component instance whenever\n it receives new props or store state.\n */\n\nfunction match(arg, factories, name) {\n for (var i = factories.length - 1; i >= 0; i--) {\n var result = factories[i](arg);\n if (result) return result;\n }\n\n return function (dispatch, options) {\n throw new Error('Invalid value of type ' + typeof arg + ' for ' + name + ' argument when connecting component ' + options.wrappedComponentName + '.');\n };\n}\n\nfunction strictEqual(a, b) {\n return a === b;\n}\n\n// createConnect with default args builds the 'official' connect behavior. Calling it with\n// different options opens up some testing and extensibility scenarios\nexport function createConnect() {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref$connectHOC = _ref.connectHOC,\n connectHOC = _ref$connectHOC === undefined ? connectAdvanced : _ref$connectHOC,\n _ref$mapStateToPropsF = _ref.mapStateToPropsFactories,\n mapStateToPropsFactories = _ref$mapStateToPropsF === undefined ? defaultMapStateToPropsFactories : _ref$mapStateToPropsF,\n _ref$mapDispatchToPro = _ref.mapDispatchToPropsFactories,\n mapDispatchToPropsFactories = _ref$mapDispatchToPro === undefined ? defaultMapDispatchToPropsFactories : _ref$mapDispatchToPro,\n _ref$mergePropsFactor = _ref.mergePropsFactories,\n mergePropsFactories = _ref$mergePropsFactor === undefined ? defaultMergePropsFactories : _ref$mergePropsFactor,\n _ref$selectorFactory = _ref.selectorFactory,\n selectorFactory = _ref$selectorFactory === undefined ? defaultSelectorFactory : _ref$selectorFactory;\n\n return function connect(mapStateToProps, mapDispatchToProps, mergeProps) {\n var _ref2 = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {},\n _ref2$pure = _ref2.pure,\n pure = _ref2$pure === undefined ? true : _ref2$pure,\n _ref2$areStatesEqual = _ref2.areStatesEqual,\n areStatesEqual = _ref2$areStatesEqual === undefined ? strictEqual : _ref2$areStatesEqual,\n _ref2$areOwnPropsEqua = _ref2.areOwnPropsEqual,\n areOwnPropsEqual = _ref2$areOwnPropsEqua === undefined ? shallowEqual : _ref2$areOwnPropsEqua,\n _ref2$areStatePropsEq = _ref2.areStatePropsEqual,\n areStatePropsEqual = _ref2$areStatePropsEq === undefined ? shallowEqual : _ref2$areStatePropsEq,\n _ref2$areMergedPropsE = _ref2.areMergedPropsEqual,\n areMergedPropsEqual = _ref2$areMergedPropsE === undefined ? shallowEqual : _ref2$areMergedPropsE,\n extraOptions = _objectWithoutProperties(_ref2, ['pure', 'areStatesEqual', 'areOwnPropsEqual', 'areStatePropsEqual', 'areMergedPropsEqual']);\n\n var initMapStateToProps = match(mapStateToProps, mapStateToPropsFactories, 'mapStateToProps');\n var initMapDispatchToProps = match(mapDispatchToProps, mapDispatchToPropsFactories, 'mapDispatchToProps');\n var initMergeProps = match(mergeProps, mergePropsFactories, 'mergeProps');\n\n return connectHOC(selectorFactory, _extends({\n // used in error messages\n methodName: 'connect',\n\n // used to compute Connect's displayName from the wrapped component's displayName.\n getDisplayName: function getDisplayName(name) {\n return 'Connect(' + name + ')';\n },\n\n // if mapStateToProps is falsy, the Connect component doesn't subscribe to store state changes\n shouldHandleStateChanges: Boolean(mapStateToProps),\n\n // passed through to selectorFactory\n initMapStateToProps: initMapStateToProps,\n initMapDispatchToProps: initMapDispatchToProps,\n initMergeProps: initMergeProps,\n pure: pure,\n areStatesEqual: areStatesEqual,\n areOwnPropsEqual: areOwnPropsEqual,\n areStatePropsEqual: areStatePropsEqual,\n areMergedPropsEqual: areMergedPropsEqual\n\n }, extraOptions));\n };\n}\n\nexport default createConnect();","export const LOAD_CONFIG_REQUEST = 'load_config_request';\nexport const LOAD_CONFIG_SUCCESS = 'load_config_success';\nexport const LOAD_CONFIG_FAILURE = 'load_config_failure';\nexport const DELETE_CONFIG_REQUEST = 'delete_config_request';\nexport const DELETE_CONFIG_SUCCESS = 'delete_config_success';\nexport const DELETE_CONFIG_FAILURE = 'delete_config_failure';\nexport const SAVE_CONFIG_REQUEST = 'save_config_request';\nexport const SAVE_CONFIG_SUCCESS = 'save_config_success';\nexport const SAVE_CONFIG_FAILURE = 'save_config_failure';\nexport const DELETE_CONFIG_MODAL_OPEN = 'delete_config_modal_open';\nexport const DELETE_CONFIG_MODAL_CLOSE = 'delete_config_modal_close';\nexport const DISMISS_SAVE_CONFIG_ERROR = 'dismiss_save_config_error';\nexport const SET_EXECUTIONS_COUNT = 'set_executions_count';\nexport const INITIALIZE = 'initialize';\nexport const ADD_METRIC = 'add_metric';\nexport const RENAME_METRIC = 'rename_metric';\nexport const EDIT_METRIC_BEGIN = 'edit_metric_begin';\nexport const EDIT_METRIC_CONFIRM = 'edit_metric_modal_confirm';\nexport const EDIT_METRIC_CANCEL = 'edit_metric_modal_cancel';\nexport const UPDATE_METRIC_DIRECTION = 'update_metric_direction';\nexport const UPDATE_METRIC_NAN_STRATEGY = 'update_metric_nan_strategy';\nexport const UPDATE_METRIC_CRITICALITY = 'update_metric_criticality';\nexport const UPDATE_EFFECT_SIZE = 'update_effect_size';\nexport const UPDATE_METRIC_GROUP = 'update_metric_group';\nexport const UPDATE_METRIC_SCOPE_NAME = 'update_metric_scope_name';\nexport const REMOVE_METRIC = 'remove_metric';\nexport const SELECT_CONFIG = 'select_config';\nexport const CLEAR_SELECTED_CONFIG = 'clear_selected_config';\nexport const UPDATE_CONFIG_SUMMARIES = 'update_config_summaries';\nexport const ADD_GROUP = 'add_group';\nexport const SELECT_GROUP = 'select_group';\nexport const UPDATE_CONFIG_NAME = 'update_config_name';\nexport const UPDATE_CONFIG_DESCRIPTION = 'update_config_description';\nexport const CONFIG_JSON_MODAL_OPEN = 'config_json_modal_open';\nexport const CONFIG_JSON_MODAL_CLOSE = 'config_json_modal_close';\nexport const SET_CONFIG_JSON = 'set_config_json';\nexport const UPDATE_PROMETHEUS_METRIC_TYPE = 'update_prometheus_metric_type';\nexport const UPDATE_PROMETHEUS_METRIC_QUERY_FIELD = 'update_prometheus_metric_query_field';\nexport const UPDATE_PROMETHEUS_LABEL_BINDINGS = 'update_prometheus_label_bindings';\nexport const UPDATE_PROMETHEUS_GROUP_BY_FIELDS = 'update_prometheus_group_by_fields';\nexport const UPDATE_STACKDRIVER_METRIC_TYPE = 'update_stackdriver_metric_type';\nexport const UPDATE_STACKDRIVER_METRIC_QUERY_FIELD = 'update_stackdriver_metric_query_field';\nexport const UPDATE_STACKDRIVER_GROUP_BY_FIELDS = 'update_stackdriver_group_by_fields';\nexport const UPDATE_JUDGES = 'update_judges';\nexport const SELECT_JUDGE_NAME = 'select_judge_name';\nexport const UPDATE_GROUP_WEIGHT = 'update_group_weight';\nexport const SET_CONFIG_JSON_MODAL_TAB_STATE = 'set_config_json_modal_tab_state';\nexport const UPDATE_ATLAS_QUERY = 'update_atlas_query';\nexport const UPDATE_DATADOG_METRIC_TYPE = 'update_datadog_metric_type';\nexport const UPDATE_DATADOG_METRIC_NAME = 'update_datadog_metric_name';\nexport const UPDATE_NEWRELIC_SELECT = 'update_newrelic_select';\nexport const COPY_SELECTED_CONFIG = 'copy_selected_config';\nexport const CREATE_NEW_CONFIG = 'create_new_config';\nexport const EDIT_GROUP_BEGIN = 'edit_group_name_begin';\nexport const EDIT_GROUP_CONFIRM = 'edit_group_name_confirm';\nexport const EDIT_GROUP_UPDATE = 'edit_group_name_update';\nexport const CHANGE_METRIC_GROUP = 'change_metric_group';\nexport const CHANGE_METRIC_GROUP_SELECT = 'change_metric_group_select';\nexport const CHANGE_METRIC_GROUP_CONFIRM = 'change_metric_group_confirm';\nexport const LOAD_RUN_REQUEST = 'load_run_request';\nexport const LOAD_RUN_SUCCESS = 'load_run_success';\nexport const LOAD_RUN_FAILURE = 'load_run_failure';\nexport const TOGGLE_METRIC_CLASSIFICATION_FILTER = 'toggle_metric_classification_filter';\nexport const SELECT_REPORT_METRIC_GROUP = 'select_result_metric_group';\nexport const SELECT_REPORT_METRIC = 'select_result_metric';\nexport const LOAD_METRIC_SET_PAIR_REQUEST = 'load_metric_set_pair_request';\nexport const LOAD_METRIC_SET_PAIR_SUCCESS = 'load_metric_set_pair_success';\nexport const LOAD_METRIC_SET_PAIR_FAILURE = 'load_metric_set_pair_failure';\nexport const ADD_TEMPLATE = 'add_template';\nexport const EDIT_TEMPLATE_BEGIN = 'edit_template_begin';\nexport const EDIT_TEMPLATE_CANCEL = 'edit_template_cancel';\nexport const EDIT_TEMPLATE_CONFIRM = 'edit_template_confirm';\nexport const EDIT_TEMPLATE_NAME = 'edit_template_name';\nexport const EDIT_TEMPLATE_VALUE = 'edit_template_value';\nexport const DELETE_TEMPLATE = 'delete_template';\nexport const SELECT_TEMPLATE = 'select_template';\nexport const EDIT_INLINE_TEMPLATE = 'edit_inline_template';\nexport const LOAD_METRICS_SERVICE_METADATA_REQUEST = 'load_metrics_service_metadata_request';\nexport const LOAD_METRICS_SERVICE_METADATA_SUCCESS = 'load_metrics_service_metadata_success';\nexport const LOAD_METRICS_SERVICE_METADATA_FAILURE = 'load_metrics_service_metadata_failure';\nexport const UPDATE_PROMETHEUS_METRIC_DESCRIPTOR_FILTER = 'update_prometheus_metric_descriptor_filter';\nexport const UPDATE_GRAPHITE_METRIC_DESCRIPTOR_FILTER = 'update_graphite_metric_descriptor_filter';\nexport const UPDATE_STACKDRIVER_METRIC_DESCRIPTOR_FILTER = 'update_stackdriver_metric_descriptor_filter';\nexport const UPDATE_DATADOG_METRIC_DESCRIPTOR_FILTER = 'update_datadog_metric_descriptor_filter';\nexport const LOAD_EXECUTIONS_REQUEST = 'load_executions_request';\nexport const LOAD_EXECUTIONS_SUCCESS = 'load_executions_success';\nexport const LOAD_EXECUTIONS_FAILURE = 'load_executions_failure';\nexport const SELECT_GRAPH_TYPE = 'select_graph_type';\nexport const LOAD_KAYENTA_ACCOUNTS_REQUEST = 'load_kayenta_accounts_request';\nexport const LOAD_KAYENTA_ACCOUNTS_SUCCESS = 'load_kayenta_accounts_success';\nexport const LOAD_KAYENTA_ACCOUNTS_FAILURE = 'load_kayenta_accounts_failure';\nexport const SELECT_METRIC_STORE = 'select_metric_store';\nexport const UPDATE_SIGNAL_FX_METRIC_NAME = 'update_signalfx_metric_name';\nexport const UPDATE_SIGNAL_FX_AGGREGATION_METHOD = 'update_signalfx_aggregation_method';\nexport const UPDATE_SIGNAL_FX_QUERY_PAIRS = 'update_signalfx_query_pairs';\nexport const UPDATE_GRAPHITE_METRIC_NAME = 'update_graphite_metric_name';\n","import autoBindMethods from 'class-autobind-decorator';\nimport { get } from 'lodash';\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport { connect } from 'react-redux';\nimport { Action } from 'redux';\n\nimport { UPDATE_ATLAS_QUERY } from '../../actions/index';\nimport { CanarySettings } from '../../canary.settings';\nimport { ICanaryMetricConfig } from '../../domain/ICanaryConfig';\nimport { ICanaryState } from '../../reducers/index';\n\ninterface IAtlasMetricConfigurerStateProps {\n editingMetric: ICanaryMetricConfig;\n}\n\ninterface IAtlasMetricConfigurerDispatchProps {\n updateQuery: (event: any) => void;\n}\n\ntype IAtlasMetricConfigurerProps = IAtlasMetricConfigurerStateProps & IAtlasMetricConfigurerDispatchProps;\n\ninterface IAtlasMetricConfigurerState {\n webComponent: Element;\n}\n\nexport interface IAtlasQuerySelector {\n class: string;\n backends: string;\n query: string;\n hide: string;\n ref: (webComponent: Element) => void;\n}\n\ninterface IChangeQueryStringEvent extends CustomEvent {\n detail: string;\n}\n\nif (CanarySettings.atlasWebComponentsUrl) {\n // make React available to components\n const global = window as any;\n global['React'] = React;\n global['ReactDOM'] = ReactDOM;\n\n if (CanarySettings.atlasWebComponentsPolyfillUrl) {\n const polyfillScript = document.createElement('script');\n polyfillScript.src = CanarySettings.atlasWebComponentsPolyfillUrl;\n document.head.appendChild(polyfillScript);\n }\n // download components; they will register when the script executes\n const componentScript = document.createElement('script');\n componentScript.src = CanarySettings.atlasWebComponentsUrl;\n document.head.appendChild(componentScript);\n}\n\n// Add <atlas-query-selector> to the elements allowed in TSX, using the IAtlasQuerySelector interface.\ndeclare global {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n 'atlas-query-selector': IAtlasQuerySelector;\n }\n }\n}\n\nconst queryFinder = (metric: ICanaryMetricConfig) => get(metric, 'query.q', '');\n\n/*\n * Component for configuring an Atlas metric via the <atlas-query-selector> web component.\n */\n@autoBindMethods\nclass AtlasMetricConfigurer extends React.Component<IAtlasMetricConfigurerProps, IAtlasMetricConfigurerState> {\n constructor(props: IAtlasMetricConfigurerProps) {\n super(props);\n this.state = { webComponent: null };\n }\n\n private bindComponent(ref: Element) {\n this.setState({ webComponent: ref });\n if (ref) {\n ref.addEventListener('change.queryString', (event: IChangeQueryStringEvent) => {\n this.props.updateQuery(event.detail);\n });\n // This gets passed down to the inner React rendering beyond the web-component wrapper. Simply setting it in\n // the render() method, it will not get passed to the web-component. Given that it doesn't change, why is it\n // necessary? It seems to have something to do with the way React renders the component to the DOM; it triggers\n // the web-component layer early, before the query is ready, and <atlas-query-selector> ignores all changes to\n // the query after it's rendered. Adding a key after it's all set causes the inner React to re-render the\n // component with the correct query.\n ref.setAttribute('key', 'react');\n }\n }\n\n public render() {\n const editingMetric = this.props.editingMetric;\n const query = queryFinder(editingMetric);\n // TODO: select correct Atlas backend for app\n const atlasBackend = 'https://atlas-global.prod.netflix.net';\n return (\n <atlas-query-selector\n class=\"spinnaker-theme\"\n backends={atlasBackend}\n hide=\"add_scope,comparison,timeOffset,lineStyle,des,trend,lineWidth,axis,color,alpha,multi\"\n query={query}\n ref={this.bindComponent}\n />\n );\n }\n}\n\nfunction mapStateToProps(state: ICanaryState): IAtlasMetricConfigurerStateProps {\n return {\n editingMetric: state.selectedConfig.editingMetric,\n };\n}\n\nfunction mapDispatchToProps(dispatch: (action: Action & any) => void): IAtlasMetricConfigurerDispatchProps {\n return {\n updateQuery: (query: string): void => {\n dispatch({\n type: UPDATE_ATLAS_QUERY,\n query,\n });\n },\n };\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(AtlasMetricConfigurer);\n\nexport { queryFinder };\n","export interface IDelegate {\n name: string;\n}\n\nexport interface IDelegateService<T extends IDelegate> {\n register(delegate: T): void;\n getDelegate(name: string): T;\n}\n\nexport const buildDelegateService = <T extends IDelegate>() => {\n class DelegateService {\n private delegates: T[] = [];\n\n public register(delegate: T): void {\n this.delegates.push(delegate);\n }\n\n public getDelegate(name: string): T {\n return this.delegates.find((d) => d.name === name);\n }\n }\n\n return new DelegateService() as IDelegateService<T>;\n};\n","import { ICanaryMetricConfig } from 'kayenta/domain';\nimport { buildDelegateService } from 'kayenta/service/delegateFactory';\nimport * as React from 'react';\n\nexport interface IMetricStoreConfig {\n name: string;\n metricConfigurer: React.ComponentClass;\n queryFinder: (metric: ICanaryMetricConfig) => string;\n useTemplates?: boolean;\n}\n\nexport default buildDelegateService<IMetricStoreConfig>();\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\nexport default identity;\n","import AtlasMetricConfigurer, { queryFinder } from './atlasMetricConfigurer';\nimport metricStoreConfigStore from '../metricStoreConfig.service';\n\nmetricStoreConfigStore.register({\n name: 'atlas',\n metricConfigurer: AtlasMetricConfigurer,\n queryFinder,\n});\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nexport default freeGlobal;\n","import freeGlobal from './_freeGlobal.js';\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\nexport default root;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nexport default Symbol;\n","import Symbol from './_Symbol.js';\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\nexport default 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\nexport default objectToString;\n","import Symbol from './_Symbol.js';\nimport getRawTag from './_getRawTag.js';\nimport objectToString from './_objectToString.js';\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\nexport default baseGetTag;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nexport default isObject;\n","import baseGetTag from './_baseGetTag.js';\nimport isObject from './isObject.js';\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\nexport default isFunction;\n","/**\n * Checks if `value` is `null`.\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 `null`, else `false`.\n * @example\n *\n * _.isNull(null);\n * // => true\n *\n * _.isNull(void 0);\n * // => false\n */\nfunction isNull(value) {\n return value === null;\n}\n\nexport default isNull;\n","import identity from 'lodash-es/identity';\nimport isFunction from 'lodash-es/isFunction';\nimport isNull from 'lodash-es/isNull';\nimport invariant from 'invariant';\n\nexport default function createAction(type) {\n var payloadCreator = arguments.length <= 1 || arguments[1] === undefined ? identity : arguments[1];\n var metaCreator = arguments[2];\n\n invariant(isFunction(payloadCreator) || isNull(payloadCreator), 'Expected payloadCreator to be a function, undefined or null');\n\n var finalPayloadCreator = isNull(payloadCreator) || payloadCreator === identity ? identity : function (head) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return head instanceof Error ? head : payloadCreator.apply(undefined, [head].concat(args));\n };\n\n var hasMeta = isFunction(metaCreator);\n var typeString = type.toString();\n\n var actionCreator = function actionCreator() {\n var payload = finalPayloadCreator.apply(undefined, arguments);\n var action = { type: type };\n\n if (payload instanceof Error) {\n action.error = true;\n }\n\n if (payload !== undefined) {\n action.payload = payload;\n }\n\n if (hasMeta) {\n action.meta = metaCreator.apply(undefined, arguments);\n }\n\n return action;\n };\n\n actionCreator.toString = function () {\n return typeString;\n };\n\n return actionCreator;\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\nexport default overArg;\n","import overArg from './_overArg.js';\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nexport default getPrototype;\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\nexport default isObjectLike;\n","import baseGetTag from './_baseGetTag.js';\nimport getPrototype from './_getPrototype.js';\nimport isObjectLike from './isObjectLike.js';\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\nexport default isPlainObject;\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\nexport default isNil;\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\nexport default isUndefined;\n","/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\nexport default baseIsNaN;\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\nexport default isLength;\n","import isFunction from './isFunction.js';\nimport isLength from './isLength.js';\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\nexport default isArrayLike;\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\nexport default isArray;\n","import baseGetTag from './_baseGetTag.js';\nimport isArray from './isArray.js';\nimport isObjectLike from './isObjectLike.js';\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\nexport default isString;\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\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\nexport default isSymbol;\n","import isObject from './isObject.js';\nimport isSymbol from './isSymbol.js';\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\nexport default toNumber;\n","import toNumber from './toNumber.js';\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\nexport default toFinite;\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\nexport default arrayMap;\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\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\nexport default baseIsArguments;\n","import baseIsArguments from './_baseIsArguments.js';\nimport isObjectLike from './isObjectLike.js';\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\nexport default isArguments;\n","import root from './_root.js';\nimport stubFalse from './stubFalse.js';\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\nexport default isBuffer;\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\nexport default stubFalse;\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 length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nexport default isIndex;\n","import baseGetTag from './_baseGetTag.js';\nimport isLength from './isLength.js';\nimport isObjectLike from './isObjectLike.js';\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\nexport default baseIsTypedArray;\n","import freeGlobal from './_freeGlobal.js';\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 return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nexport default nodeUtil;\n","import baseIsTypedArray from './_baseIsTypedArray.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\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\nexport default isTypedArray;\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\nexport default baseUnary;\n","import baseTimes from './_baseTimes.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isIndex from './_isIndex.js';\nimport isTypedArray from './isTypedArray.js';\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\nexport default arrayLikeKeys;\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\nexport default baseTimes;\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\nexport default isPrototype;\n","import overArg from './_overArg.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nexport default nativeKeys;\n","import isPrototype from './_isPrototype.js';\nimport nativeKeys from './_nativeKeys.js';\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\nexport default baseKeys;\n","import baseValues from './_baseValues.js';\nimport keys from './keys.js';\n\n/**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\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 values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\nfunction values(object) {\n return object == null ? [] : baseValues(object, keys(object));\n}\n\nexport default values;\n","import arrayMap from './_arrayMap.js';\n\n/**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\nfunction baseValues(object, props) {\n return arrayMap(props, function(key) {\n return object[key];\n });\n}\n\nexport default baseValues;\n","import arrayLikeKeys from './_arrayLikeKeys.js';\nimport baseKeys from './_baseKeys.js';\nimport isArrayLike from './isArrayLike.js';\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\nexport default keys;\n","import baseIndexOf from './_baseIndexOf.js';\nimport isArrayLike from './isArrayLike.js';\nimport isString from './isString.js';\nimport toInteger from './toInteger.js';\nimport values from './values.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * Checks if `value` is in `collection`. If `collection` is a string, it's\n * checked for a substring of `value`, otherwise\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * is used for equality comparisons. If `fromIndex` is negative, it's used as\n * the offset from the end of `collection`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {boolean} Returns `true` if `value` is found, else `false`.\n * @example\n *\n * _.includes([1, 2, 3], 1);\n * // => true\n *\n * _.includes([1, 2, 3], 1, 2);\n * // => false\n *\n * _.includes({ 'a': 1, 'b': 2 }, 1);\n * // => true\n *\n * _.includes('abcd', 'bc');\n * // => true\n */\nfunction includes(collection, value, fromIndex, guard) {\n collection = isArrayLike(collection) ? collection : values(collection);\n fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;\n\n var length = collection.length;\n if (fromIndex < 0) {\n fromIndex = nativeMax(length + fromIndex, 0);\n }\n return isString(collection)\n ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)\n : (!!length && baseIndexOf(collection, value, fromIndex) > -1);\n}\n\nexport default includes;\n","import toFinite from './toFinite.js';\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\nexport default toInteger;\n","import baseFindIndex from './_baseFindIndex.js';\nimport baseIsNaN from './_baseIsNaN.js';\nimport strictIndexOf from './_strictIndexOf.js';\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n}\n\nexport default baseIndexOf;\n","/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\nexport default strictIndexOf;\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\nexport default baseFindIndex;\n","import root from './_root.js';\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nexport default coreJsData;\n","import coreJsData from './_coreJsData.js';\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\nexport default isMasked;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nexport default toSource;\n","import isFunction from './isFunction.js';\nimport isMasked from './_isMasked.js';\nimport isObject from './isObject.js';\nimport toSource from './_toSource.js';\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\nexport default baseIsNative;\n","import baseIsNative from './_baseIsNative.js';\nimport getValue from './_getValue.js';\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\nexport default getNative;\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\nexport default getValue;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nexport default DataView;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nexport default Map;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nexport default Promise;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nexport default Set;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nexport default WeakMap;\n","import DataView from './_DataView.js';\nimport Map from './_Map.js';\nimport Promise from './_Promise.js';\nimport Set from './_Set.js';\nimport WeakMap from './_WeakMap.js';\nimport baseGetTag from './_baseGetTag.js';\nimport toSource from './_toSource.js';\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\nexport default getTag;\n","import baseKeys from './_baseKeys.js';\nimport getTag from './_getTag.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isArrayLike from './isArrayLike.js';\nimport isBuffer from './isBuffer.js';\nimport isPrototype from './_isPrototype.js';\nimport isTypedArray from './isTypedArray.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n setTag = '[object Set]';\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 `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\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 empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\nfunction isEmpty(value) {\n if (value == null) {\n return true;\n }\n if (isArrayLike(value) &&\n (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n return !value.length;\n }\n var tag = getTag(value);\n if (tag == mapTag || tag == setTag) {\n return !value.size;\n }\n if (isPrototype(value)) {\n return !baseKeys(value).length;\n }\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n}\n\nexport default isEmpty;\n","import Symbol from './_Symbol.js';\nimport arrayMap from './_arrayMap.js';\nimport isArray from './isArray.js';\nimport isSymbol from './isSymbol.js';\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\nexport default baseToString;\n","import baseToString from './_baseToString.js';\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\nexport default toString;\n","import isString from 'lodash-es/isString';\nimport isFunction from 'lodash-es/isFunction';\nimport isEmpty from 'lodash-es/isEmpty';\nimport toString from 'lodash-es/toString';\nimport isSymbol from 'lodash-es/isSymbol';\nimport invariant from 'invariant';\n\nexport var ACTION_TYPE_DELIMITER = '||';\n\nfunction isValidActionType(type) {\n return isString(type) || isFunction(type) || isSymbol(type);\n}\n\nfunction isValidActionTypes(types) {\n if (isEmpty(types)) {\n return false;\n }\n return types.every(isValidActionType);\n}\n\nexport default function combineActions() {\n for (var _len = arguments.length, actionsTypes = Array(_len), _key = 0; _key < _len; _key++) {\n actionsTypes[_key] = arguments[_key];\n }\n\n invariant(isValidActionTypes(actionsTypes), 'Expected action types to be strings, symbols, or action creators');\n var combinedActionType = actionsTypes.map(toString).join(ACTION_TYPE_DELIMITER);\n return { toString: function toString() {\n return combinedActionType;\n } };\n}","var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nimport isFunction from 'lodash-es/isFunction';\nimport isPlainObject from 'lodash-es/isPlainObject';\nimport identity from 'lodash-es/identity';\nimport isNil from 'lodash-es/isNil';\nimport isUndefined from 'lodash-es/isUndefined';\nimport includes from 'lodash-es/includes';\nimport invariant from 'invariant';\nimport { ACTION_TYPE_DELIMITER } from './combineActions';\n\nexport default function handleAction(type) {\n var reducer = arguments.length <= 1 || arguments[1] === undefined ? identity : arguments[1];\n var defaultState = arguments[2];\n\n var types = type.toString().split(ACTION_TYPE_DELIMITER);\n invariant(!isUndefined(defaultState), 'defaultState for reducer handling ' + types.join(', ') + ' should be defined');\n invariant(isFunction(reducer) || isPlainObject(reducer), 'Expected reducer to be a function or object with next and throw reducers');\n\n var _ref = isFunction(reducer) ? [reducer, reducer] : [reducer.next, reducer.throw].map(function (aReducer) {\n return isNil(aReducer) ? identity : aReducer;\n });\n\n var _ref2 = _slicedToArray(_ref, 2);\n\n var nextReducer = _ref2[0];\n var throwReducer = _ref2[1];\n\n\n return function () {\n var state = arguments.length <= 0 || arguments[0] === undefined ? defaultState : arguments[0];\n var action = arguments[1];\n var actionType = action.type;\n\n if (!actionType || !includes(types, actionType.toString())) {\n return state;\n }\n\n return (action.error === true ? throwReducer : nextReducer)(state, action);\n };\n}","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = reduceReducers;\n\nfunction reduceReducers() {\n for (var _len = arguments.length, reducers = Array(_len), _key = 0; _key < _len; _key++) {\n reducers[_key] = arguments[_key];\n }\n\n return function (previous, current) {\n return reducers.reduce(function (p, r) {\n return r(p, current);\n }, previous);\n };\n}\n\nmodule.exports = exports[\"default\"];","export default function ownKeys(object) {\n if (typeof Reflect !== 'undefined' && typeof Reflect.ownKeys === 'function') {\n return Reflect.ownKeys(object);\n }\n\n var keys = Object.getOwnPropertyNames(object);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n keys = keys.concat(Object.getOwnPropertySymbols(object));\n }\n\n return keys;\n}","import camelCase from './camelCase';\nimport ownKeys from './ownKeys';\nimport hasGeneratorInterface from './hasGeneratorInterface';\nimport isPlainObject from 'lodash-es/isPlainObject';\n\nvar defaultNamespace = '/';\n\nvar flattenWhenNode = function flattenWhenNode(predicate) {\n return function flatten(map) {\n var namespace = arguments.length <= 1 || arguments[1] === undefined ? defaultNamespace : arguments[1];\n var partialFlatMap = arguments.length <= 2 || arguments[2] === undefined ? {} : arguments[2];\n var partialFlatActionType = arguments.length <= 3 || arguments[3] === undefined ? '' : arguments[3];\n\n function connectNamespace(type) {\n return partialFlatActionType ? '' + partialFlatActionType + namespace + type : type;\n }\n\n ownKeys(map).forEach(function (type) {\n var nextNamespace = connectNamespace(type);\n var mapValue = map[type];\n\n if (!predicate(mapValue)) {\n partialFlatMap[nextNamespace] = map[type];\n } else {\n flatten(map[type], namespace, partialFlatMap, nextNamespace);\n }\n });\n\n return partialFlatMap;\n };\n};\n\nvar flattenActionMap = flattenWhenNode(isPlainObject);\nvar flattenReducerMap = flattenWhenNode(function (node) {\n return isPlainObject(node) && !hasGeneratorInterface(node);\n});\n\nfunction unflattenActionCreators(flatActionCreators) {\n var namespace = arguments.length <= 1 || arguments[1] === undefined ? defaultNamespace : arguments[1];\n\n function unflatten(flatActionType) {\n var partialNestedActionCreators = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];\n var partialFlatActionTypePath = arguments.length <= 2 || arguments[2] === undefined ? [] : arguments[2];\n\n var nextNamespace = camelCase(partialFlatActionTypePath.shift());\n if (partialFlatActionTypePath.length) {\n if (!partialNestedActionCreators[nextNamespace]) {\n partialNestedActionCreators[nextNamespace] = {};\n }\n unflatten(flatActionType, partialNestedActionCreators[nextNamespace], partialFlatActionTypePath);\n } else {\n partialNestedActionCreators[nextNamespace] = flatActionCreators[flatActionType];\n }\n }\n\n var nestedActionCreators = {};\n Object.getOwnPropertyNames(flatActionCreators).forEach(function (type) {\n return unflatten(type, nestedActionCreators, type.split(namespace));\n });\n return nestedActionCreators;\n}\n\nexport { flattenActionMap, flattenReducerMap, unflattenActionCreators };","import ownKeys from './ownKeys';\n\nexport default function hasGeneratorInterface(handler) {\n var keys = ownKeys(handler);\n var hasOnlyInterfaceNames = keys.every(function (ownKey) {\n return ownKey === 'next' || ownKey === 'throw';\n });\n return keys.length && keys.length <= 2 && hasOnlyInterfaceNames;\n}","function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nimport isPlainObject from 'lodash-es/isPlainObject';\nimport reduceReducers from 'reduce-reducers';\nimport invariant from 'invariant';\nimport handleAction from './handleAction';\nimport ownKeys from './ownKeys';\nimport { flattenReducerMap } from './flattenUtils';\n\nexport default function handleActions(handlers, defaultState) {\n var _ref = arguments.length <= 2 || arguments[2] === undefined ? {} : arguments[2];\n\n var namespace = _ref.namespace;\n\n invariant(isPlainObject(handlers), 'Expected handlers to be an plain object.');\n var flattenedReducerMap = flattenReducerMap(handlers, namespace);\n var reducers = ownKeys(flattenedReducerMap).map(function (type) {\n return handleAction(type, flattenedReducerMap[type], defaultState);\n });\n var reducer = reduceReducers.apply(undefined, _toConsumableArray(reducers));\n return function () {\n var state = arguments.length <= 0 || arguments[0] === undefined ? defaultState : arguments[0];\n var action = arguments[1];\n return reducer(state, action);\n };\n}","import {\n ICanaryConfig,\n ICanaryConfigSummary,\n ICanaryExecutionStatusResult,\n ICanaryMetricConfig,\n ICanaryMetricEffectSizeConfig,\n IJudge,\n IKayentaAccount,\n IMetricSetPair,\n IMetricsServiceMetadata,\n MetricClassificationLabel,\n} from 'kayenta/domain';\nimport { ConfigJsonModalTabState } from 'kayenta/edit/configJsonModal';\nimport { IUpdateListPayload } from 'kayenta/layout/list';\nimport { GraphType } from 'kayenta/report/detail/graph/metricSetPairGraph.service';\nimport { Action } from 'redux';\nimport { createAction } from 'redux-actions';\n\nimport * as Actions from './index';\nimport { IUpdateKeyValueListPayload } from '../layout/keyValueList';\nimport { IPrometheusCanaryMetricSetQueryConfig } from '../metricStore/prometheus/domain/IPrometheusCanaryMetricSetQueryConfig';\nimport { IStackdriverCanaryMetricSetQueryConfig } from '../metricStore/stackdriver/domain/IStackdriverCanaryMetricSetQueryConfig';\n\nexport interface IKayentaAction<T> extends Action {\n payload: T;\n}\n\nexport const toggleMetricClassificationFilter = createAction<{ classification: MetricClassificationLabel }>(\n Actions.TOGGLE_METRIC_CLASSIFICATION_FILTER,\n);\nexport const setExecutionsCount = createAction<{ count: number }>(Actions.SET_EXECUTIONS_COUNT);\nexport const openDeleteConfigModal = createAction(Actions.DELETE_CONFIG_MODAL_OPEN);\nexport const closeDeleteConfigModal = createAction(Actions.DELETE_CONFIG_MODAL_CLOSE);\nexport const deleteConfig = createAction(Actions.DELETE_CONFIG_REQUEST);\nexport const closeConfigJsonModal = createAction(Actions.CONFIG_JSON_MODAL_CLOSE);\nexport const openConfigJsonModal = createAction(Actions.CONFIG_JSON_MODAL_OPEN);\nexport const editMetricCancel = createAction(Actions.EDIT_METRIC_CANCEL);\nexport const editMetricConfirm = createAction(Actions.EDIT_METRIC_CONFIRM);\nexport const updateMetricDirection = createAction<{ id: string; direction: string }>(Actions.UPDATE_METRIC_DIRECTION);\nexport const updateMetricNanStrategy = createAction<{ id: string; strategy: string }>(\n Actions.UPDATE_METRIC_NAN_STRATEGY,\n);\nexport const updateMetricCriticality = createAction<{ id: string; critical: boolean }>(\n Actions.UPDATE_METRIC_CRITICALITY,\n);\nexport const updateEffectSize = createAction<{ id: string; value: ICanaryMetricEffectSizeConfig }>(\n Actions.UPDATE_EFFECT_SIZE,\n);\nexport const updateMetricGroup = createAction<{ id: string; group: string }>(Actions.UPDATE_METRIC_GROUP);\nexport const addGroup = createAction(Actions.ADD_GROUP);\nexport const saveConfig = createAction(Actions.SAVE_CONFIG_REQUEST);\nexport const dismissSaveConfigError = createAction(Actions.DISMISS_SAVE_CONFIG_ERROR);\nexport const setConfigJsonModalTabState = createAction<{ state: ConfigJsonModalTabState }>(\n Actions.SET_CONFIG_JSON_MODAL_TAB_STATE,\n);\nexport const setConfigJson = createAction<{ json: string }>(Actions.SET_CONFIG_JSON);\nexport const deleteConfigSuccess = createAction(Actions.DELETE_CONFIG_SUCCESS);\nexport const loadConfigRequest = createAction<{ id: string }>(Actions.LOAD_CONFIG_REQUEST);\nexport const saveConfigSuccess = createAction<{ id: string }>(Actions.SAVE_CONFIG_SUCCESS);\nexport const selectConfig = createAction<{ config: ICanaryConfig }>(Actions.SELECT_CONFIG);\nexport const clearSelectedConfig = createAction(Actions.CLEAR_SELECTED_CONFIG);\nexport const renameMetric = createAction<{ id: string; name: string }>(Actions.RENAME_METRIC);\nexport const selectGroup = createAction<{ name: string }>(Actions.SELECT_GROUP);\nexport const updateGroupWeight = createAction<{ group: string; weight: number }>(Actions.UPDATE_GROUP_WEIGHT);\nexport const selectJudgeName = createAction<{ judge: { name: string } }>(Actions.SELECT_JUDGE_NAME);\nexport const editMetricBegin = createAction<{ id: string }>(Actions.EDIT_METRIC_BEGIN);\nexport const removeMetric = createAction<{ id: string }>(Actions.REMOVE_METRIC);\nexport const addMetric = createAction<{ metric: ICanaryMetricConfig }>(Actions.ADD_METRIC);\nexport const updateConfigName = createAction<{ name: string }>(Actions.UPDATE_CONFIG_NAME);\nexport const updateConfigDescription = createAction<{ description: string }>(Actions.UPDATE_CONFIG_DESCRIPTION);\nexport const saveConfigFailure = createAction<{ error: Error }>(Actions.SAVE_CONFIG_FAILURE);\nexport const deleteConfigFailure = createAction<{ error: Error }>(Actions.DELETE_CONFIG_FAILURE);\nexport const updateConfigSummaries = createAction<{ configSummaries: ICanaryConfigSummary[] }>(\n Actions.UPDATE_CONFIG_SUMMARIES,\n);\nexport const updateJudges = createAction<{ judges: IJudge[] }>(Actions.UPDATE_JUDGES);\nexport const loadConfigSuccess = createAction<{ config: ICanaryConfig }>(Actions.LOAD_CONFIG_SUCCESS);\nexport const loadConfigFailure = createAction<{ error: Error }>(Actions.LOAD_CONFIG_FAILURE);\nexport const copySelectedConfig = createAction(Actions.COPY_SELECTED_CONFIG);\nexport const createNewConfig = createAction(Actions.CREATE_NEW_CONFIG);\nexport const editGroupBegin = createAction<{ group: string }>(Actions.EDIT_GROUP_BEGIN);\nexport const editGroupUpdate = createAction<{ edit: string }>(Actions.EDIT_GROUP_UPDATE);\nexport const editGroupConfirm = createAction<{ group: string; edit: string }>(Actions.EDIT_GROUP_CONFIRM);\nexport const changeMetricGroupSelect = createAction<{ group: string }>(Actions.CHANGE_METRIC_GROUP_SELECT);\nexport const changeMetricGroupConfirm = createAction<{ metricId: string }>(Actions.CHANGE_METRIC_GROUP_CONFIRM);\nexport const loadRunRequest = createAction<{ configId: string; runId: string }>(Actions.LOAD_RUN_REQUEST);\nexport const loadRunSuccess = createAction<{ run: ICanaryExecutionStatusResult }>(Actions.LOAD_RUN_SUCCESS);\nexport const loadRunFailure = createAction<{ error: Error }>(Actions.LOAD_RUN_FAILURE);\nexport const selectReportMetricGroup = createAction<{ group: string }>(Actions.SELECT_REPORT_METRIC_GROUP);\nexport const selectReportMetric = createAction<{ metricId: string }>(Actions.SELECT_REPORT_METRIC);\nexport const loadMetricSetPairRequest = createAction<{ pairId: string }>(Actions.LOAD_METRIC_SET_PAIR_REQUEST);\nexport const loadMetricSetPairSuccess = createAction<{ metricSetPair: IMetricSetPair }>(\n Actions.LOAD_METRIC_SET_PAIR_SUCCESS,\n);\nexport const loadMetricSetPairFailure = createAction<{ error: Error }>(Actions.LOAD_METRIC_SET_PAIR_FAILURE);\nexport const addTemplate = createAction(Actions.ADD_TEMPLATE);\nexport const editTemplateBegin = createAction<{ name: string; value: string }>(Actions.EDIT_TEMPLATE_BEGIN);\nexport const editTemplateConfirm = createAction(Actions.EDIT_TEMPLATE_CONFIRM);\nexport const editTemplateCancel = createAction(Actions.EDIT_TEMPLATE_CANCEL);\nexport const editTemplateName = createAction<{ name: string }>(Actions.EDIT_TEMPLATE_NAME);\nexport const editTemplateValue = createAction<{ value: string }>(Actions.EDIT_TEMPLATE_VALUE);\nexport const editInlineTemplate = createAction<{ value: string }>(Actions.EDIT_INLINE_TEMPLATE);\nexport const updatePrometheusLabelBindings = createAction<IUpdateListPayload>(Actions.UPDATE_PROMETHEUS_LABEL_BINDINGS);\nexport const updatePrometheusGroupBy = createAction<IUpdateListPayload>(Actions.UPDATE_PROMETHEUS_GROUP_BY_FIELDS);\nexport const updatePrometheusMetricQueryField = createAction<{\n field: keyof IPrometheusCanaryMetricSetQueryConfig;\n value: IPrometheusCanaryMetricSetQueryConfig[keyof IPrometheusCanaryMetricSetQueryConfig];\n}>(Actions.UPDATE_PROMETHEUS_METRIC_QUERY_FIELD);\nexport const updateStackdriverGroupBy = createAction<IUpdateListPayload>(Actions.UPDATE_STACKDRIVER_GROUP_BY_FIELDS);\nexport const deleteTemplate = createAction<{ name: string }>(Actions.DELETE_TEMPLATE);\nexport const selectTemplate = createAction<{ name: string }>(Actions.SELECT_TEMPLATE);\nexport const changeMetricGroup = createAction<{ id: string }>(Actions.CHANGE_METRIC_GROUP);\nexport const loadMetricsServiceMetadataRequest = createAction<{ filter: string; metricsAccountName: string }>(\n Actions.LOAD_METRICS_SERVICE_METADATA_REQUEST,\n);\nexport const loadMetricsServiceMetadataSuccess = createAction<{ data: IMetricsServiceMetadata }>(\n Actions.LOAD_METRICS_SERVICE_METADATA_SUCCESS,\n);\nexport const loadMetricsServiceMetadataFailure = createAction<{ error: Error }>(\n Actions.LOAD_METRICS_SERVICE_METADATA_FAILURE,\n);\nexport const updatePrometheusMetricDescriptorFilter = createAction<{ filter: string; metricsAccountName: string }>(\n Actions.UPDATE_PROMETHEUS_METRIC_DESCRIPTOR_FILTER,\n);\nexport const updateGraphiteMetricDescriptorFilter = createAction<{ filter: string }>(\n Actions.UPDATE_GRAPHITE_METRIC_DESCRIPTOR_FILTER,\n);\nexport const updateStackdriverMetricDescriptorFilter = createAction<{ filter: string }>(\n Actions.UPDATE_STACKDRIVER_METRIC_DESCRIPTOR_FILTER,\n);\nexport const updateDatadogMetricDescriptorFilter = createAction<{ filter: string }>(\n Actions.UPDATE_DATADOG_METRIC_DESCRIPTOR_FILTER,\n);\nexport const updateStackdriverMetricResourceField = createAction<{\n field: keyof IStackdriverCanaryMetricSetQueryConfig;\n value: IStackdriverCanaryMetricSetQueryConfig[keyof IStackdriverCanaryMetricSetQueryConfig];\n}>(Actions.UPDATE_STACKDRIVER_METRIC_QUERY_FIELD);\nexport const updateDatadogMetricName = createAction<{ metricName: string }>(Actions.UPDATE_DATADOG_METRIC_NAME);\nexport const updateNewRelicSelect = createAction<{ select: string }>(Actions.UPDATE_NEWRELIC_SELECT);\nexport const loadExecutionsRequest = createAction(Actions.LOAD_EXECUTIONS_REQUEST);\nexport const loadExecutionsFailure = createAction<{ error: Error }>(Actions.LOAD_EXECUTIONS_FAILURE);\nexport const loadExecutionsSuccess = createAction<{ executions: ICanaryExecutionStatusResult[] }>(\n Actions.LOAD_EXECUTIONS_SUCCESS,\n);\nexport const selectGraphType = createAction<{ type: GraphType }>(Actions.SELECT_GRAPH_TYPE);\nexport const loadKayentaAccountsRequest = createAction(Actions.LOAD_KAYENTA_ACCOUNTS_REQUEST);\nexport const loadKayentaAccountsSuccess = createAction<{ accounts: IKayentaAccount[] }>(\n Actions.LOAD_KAYENTA_ACCOUNTS_SUCCESS,\n);\nexport const loadKayentaAccountsFailure = createAction<{ error: Error }>(Actions.LOAD_KAYENTA_ACCOUNTS_FAILURE);\nexport const selectMetricStore = createAction<{ store: string }>(Actions.SELECT_METRIC_STORE);\nexport const updateSignalFxMetricName = createAction<{ metricName: string }>(Actions.UPDATE_SIGNAL_FX_METRIC_NAME);\nexport const updateSignalFxAggregationMethod = createAction<{ aggregationMethod: string }>(\n Actions.UPDATE_SIGNAL_FX_AGGREGATION_METHOD,\n);\nexport const updateSignalFxQueryPairs = createAction<IUpdateKeyValueListPayload>(Actions.UPDATE_SIGNAL_FX_QUERY_PAIRS);\nexport const updateGraphiteMetricName = createAction<{ metricName: string }>(Actions.UPDATE_GRAPHITE_METRIC_NAME);\n","import classNames from 'classnames';\nimport * as React from 'react';\n\nimport { HelpField, ValidationMessage } from '@spinnaker/core';\n\nexport interface IFormRowProps {\n label?: string | React.ReactFragment;\n helpId?: string;\n children?: any;\n checkbox?: boolean;\n error?: string;\n warning?: string;\n inputOnly?: boolean;\n}\n\nexport default function FormRow({ label, helpId, children, checkbox, error, warning, inputOnly }: IFormRowProps) {\n const style: any = {};\n if (!inputOnly) {\n style.marginTop = '5px';\n }\n if (checkbox) {\n style.marginBottom = '0';\n }\n return (\n <div className=\"form-group row\">\n <label className=\"col-sm-2 control-label sm-label-right\">\n {label} {helpId && <HelpField id={helpId} />}\n </label>\n <div className={classNames('col-sm-10', { checkbox })} style={style}>\n {children}\n {error && <ValidationMessage type=\"error\" message={error} />}\n {warning && <ValidationMessage type=\"warning\" message={warning} />}\n </div>\n </div>\n );\n}\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","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","var root = require('./_root');\n\n/**\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 root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar 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","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 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","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _index = require('./index');\n\nfunction addCustomOption(results, props) {\n var allowNew = props.allowNew,\n labelKey = props.labelKey,\n text = props.text;\n\n\n if (!allowNew || !text.trim()) {\n return false;\n }\n\n // If the consumer has provided a callback, use that to determine whether or\n // not to add the custom option.\n if (typeof allowNew === 'function') {\n return allowNew(results, props);\n }\n\n // By default, don't add the custom option if there is an exact text match\n // with an existing option.\n return !results.some(function (o) {\n return (0, _index.getOptionLabel)(o, labelKey) === text;\n });\n}\n\nexports.default = addCustomOption;","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n","var listCacheClear = require('./_listCacheClear'),\n listCacheDelete = require('./_listCacheDelete'),\n listCacheGet = require('./_listCacheGet'),\n listCacheHas = require('./_listCacheHas'),\n listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","var ListCache = require('./_ListCache');\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nmodule.exports = stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nmodule.exports = stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nmodule.exports = stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nmodule.exports = stackHas;\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n","var isFunction = require('./isFunction'),\n isMasked = require('./_isMasked'),\n isObject = require('./isObject'),\n toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nmodule.exports = hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n","var hashClear = require('./_hashClear'),\n hashDelete = require('./_hashDelete'),\n hashGet = require('./_hashGet'),\n hashHas = require('./_hashHas'),\n hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","var Hash = require('./_Hash'),\n ListCache = require('./_ListCache'),\n Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nmodule.exports = mapCacheClear;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nmodule.exports = isKeyable;\n","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nmodule.exports = getMapData;\n","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;\n","var mapCacheClear = require('./_mapCacheClear'),\n mapCacheDelete = require('./_mapCacheDelete'),\n mapCacheGet = require('./_mapCacheGet'),\n mapCacheHas = require('./_mapCacheHas'),\n mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","var ListCache = require('./_ListCache'),\n Map = require('./_Map'),\n MapCache = require('./_MapCache');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nmodule.exports = stackSet;\n","var ListCache = require('./_ListCache'),\n stackClear = require('./_stackClear'),\n stackDelete = require('./_stackDelete'),\n stackGet = require('./_stackGet'),\n stackHas = require('./_stackHas'),\n stackSet = require('./_stackSet');\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nmodule.exports = Stack;\n","/** 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","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 * 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","/**\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","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","/**\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","/**\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","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","/**\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","/**\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","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 * 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 * 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 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","/**\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","var baseIsArguments = require('./_baseIsArguments'),\n isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = stubFalse;\n","var root = require('./_root'),\n stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n","/** 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","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","var baseGetTag = require('./_baseGetTag'),\n isLength = require('./isLength'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nmodule.exports = baseUnary;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n","var baseIsTypedArray = require('./_baseIsTypedArray'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n","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","/** 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","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nmodule.exports = overArg;\n","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\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 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 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 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 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","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 Set = getNative(root, 'Set');\n\nmodule.exports = Set;\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","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 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","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 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","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","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 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","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","/**\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 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 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","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 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 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","/**\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 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","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","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","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","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 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","/**\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 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 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","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","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n","/**\n * 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 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","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","/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\nmodule.exports = createBaseFor;\n","var createBaseFor = require('./_createBaseFor');\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nmodule.exports = baseFor;\n","var 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","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","var baseEach = require('./_baseEach');\n\n/**\n * The base implementation of `_.some` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection 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 baseSome(collection, predicate) {\n var result;\n\n baseEach(collection, function(value, index, collection) {\n result = predicate(value, index, collection);\n return !result;\n });\n return !!result;\n}\n\nmodule.exports = baseSome;\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","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = stripDiacritics;\n/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * Taken from: http://stackoverflow.com/questions/990904/remove-accents-diacritics-in-a-string-in-javascript/18391901#18391901\n */\n\n/* eslint-disable max-len */\nvar map = [{ 'base': 'A', 'letters': 'A\\u24B6\\uFF21\\xC0\\xC1\\xC2\\u1EA6\\u1EA4\\u1EAA\\u1EA8\\xC3\\u0100\\u0102\\u1EB0\\u1EAE\\u1EB4\\u1EB2\\u0226\\u01E0\\xC4\\u01DE\\u1EA2\\xC5\\u01FA\\u01CD\\u0200\\u0202\\u1EA0\\u1EAC\\u1EB6\\u1E00\\u0104\\u023A\\u2C6F' }, { 'base': 'AA', 'letters': '\\uA732' }, { 'base': 'AE', 'letters': '\\xC6\\u01FC\\u01E2' }, { 'base': 'AO', 'letters': '\\uA734' }, { 'base': 'AU', 'letters': '\\uA736' }, { 'base': 'AV', 'letters': '\\uA738\\uA73A' }, { 'base': 'AY', 'letters': '\\uA73C' }, { 'base': 'B', 'letters': 'B\\u24B7\\uFF22\\u1E02\\u1E04\\u1E06\\u0243\\u0182\\u0181' }, { 'base': 'C', 'letters': 'C\\u24B8\\uFF23\\u0106\\u0108\\u010A\\u010C\\xC7\\u1E08\\u0187\\u023B\\uA73E' }, { 'base': 'D', 'letters': 'D\\u24B9\\uFF24\\u1E0A\\u010E\\u1E0C\\u1E10\\u1E12\\u1E0E\\u0110\\u018B\\u018A\\u0189\\uA779\\xD0' }, { 'base': 'DZ', 'letters': '\\u01F1\\u01C4' }, { 'base': 'Dz', 'letters': '\\u01F2\\u01C5' }, { 'base': 'E', 'letters': 'E\\u24BA\\uFF25\\xC8\\xC9\\xCA\\u1EC0\\u1EBE\\u1EC4\\u1EC2\\u1EBC\\u0112\\u1E14\\u1E16\\u0114\\u0116\\xCB\\u1EBA\\u011A\\u0204\\u0206\\u1EB8\\u1EC6\\u0228\\u1E1C\\u0118\\u1E18\\u1E1A\\u0190\\u018E' }, { 'base': 'F', 'letters': 'F\\u24BB\\uFF26\\u1E1E\\u0191\\uA77B' }, { 'base': 'G', 'letters': 'G\\u24BC\\uFF27\\u01F4\\u011C\\u1E20\\u011E\\u0120\\u01E6\\u0122\\u01E4\\u0193\\uA7A0\\uA77D\\uA77E' }, { 'base': 'H', 'letters': 'H\\u24BD\\uFF28\\u0124\\u1E22\\u1E26\\u021E\\u1E24\\u1E28\\u1E2A\\u0126\\u2C67\\u2C75\\uA78D' }, { 'base': 'I', 'letters': 'I\\u24BE\\uFF29\\xCC\\xCD\\xCE\\u0128\\u012A\\u012C\\u0130\\xCF\\u1E2E\\u1EC8\\u01CF\\u0208\\u020A\\u1ECA\\u012E\\u1E2C\\u0197' }, { 'base': 'J', 'letters': 'J\\u24BF\\uFF2A\\u0134\\u0248' }, { 'base': 'K', 'letters': 'K\\u24C0\\uFF2B\\u1E30\\u01E8\\u1E32\\u0136\\u1E34\\u0198\\u2C69\\uA740\\uA742\\uA744\\uA7A2' }, { 'base': 'L', 'letters': 'L\\u24C1\\uFF2C\\u013F\\u0139\\u013D\\u1E36\\u1E38\\u013B\\u1E3C\\u1E3A\\u0141\\u023D\\u2C62\\u2C60\\uA748\\uA746\\uA780' }, { 'base': 'LJ', 'letters': '\\u01C7' }, { 'base': 'Lj', 'letters': '\\u01C8' }, { 'base': 'M', 'letters': 'M\\u24C2\\uFF2D\\u1E3E\\u1E40\\u1E42\\u2C6E\\u019C' }, { 'base': 'N', 'letters': 'N\\u24C3\\uFF2E\\u01F8\\u0143\\xD1\\u1E44\\u0147\\u1E46\\u0145\\u1E4A\\u1E48\\u0220\\u019D\\uA790\\uA7A4' }, { 'base': 'NJ', 'letters': '\\u01CA' }, { 'base': 'Nj', 'letters': '\\u01CB' }, { 'base': 'O', 'letters': 'O\\u24C4\\uFF2F\\xD2\\xD3\\xD4\\u1ED2\\u1ED0\\u1ED6\\u1ED4\\xD5\\u1E4C\\u022C\\u1E4E\\u014C\\u1E50\\u1E52\\u014E\\u022E\\u0230\\xD6\\u022A\\u1ECE\\u0150\\u01D1\\u020C\\u020E\\u01A0\\u1EDC\\u1EDA\\u1EE0\\u1EDE\\u1EE2\\u1ECC\\u1ED8\\u01EA\\u01EC\\xD8\\u01FE\\u0186\\u019F\\uA74A\\uA74C' }, { 'base': 'OI', 'letters': '\\u01A2' }, { 'base': 'OO', 'letters': '\\uA74E' }, { 'base': 'OU', 'letters': '\\u0222' }, { 'base': 'OE', 'letters': '\\x8C\\u0152' }, { 'base': 'oe', 'letters': '\\x9C\\u0153' }, { 'base': 'P', 'letters': 'P\\u24C5\\uFF30\\u1E54\\u1E56\\u01A4\\u2C63\\uA750\\uA752\\uA754' }, { 'base': 'Q', 'letters': 'Q\\u24C6\\uFF31\\uA756\\uA758\\u024A' }, { 'base': 'R', 'letters': 'R\\u24C7\\uFF32\\u0154\\u1E58\\u0158\\u0210\\u0212\\u1E5A\\u1E5C\\u0156\\u1E5E\\u024C\\u2C64\\uA75A\\uA7A6\\uA782' }, { 'base': 'S', 'letters': 'S\\u24C8\\uFF33\\u1E9E\\u015A\\u1E64\\u015C\\u1E60\\u0160\\u1E66\\u1E62\\u1E68\\u0218\\u015E\\u2C7E\\uA7A8\\uA784' }, { 'base': 'T', 'letters': 'T\\u24C9\\uFF34\\u1E6A\\u0164\\u1E6C\\u021A\\u0162\\u1E70\\u1E6E\\u0166\\u01AC\\u01AE\\u023E\\uA786' }, { 'base': 'TZ', 'letters': '\\uA728' }, { 'base': 'U', 'letters': 'U\\u24CA\\uFF35\\xD9\\xDA\\xDB\\u0168\\u1E78\\u016A\\u1E7A\\u016C\\xDC\\u01DB\\u01D7\\u01D5\\u01D9\\u1EE6\\u016E\\u0170\\u01D3\\u0214\\u0216\\u01AF\\u1EEA\\u1EE8\\u1EEE\\u1EEC\\u1EF0\\u1EE4\\u1E72\\u0172\\u1E76\\u1E74\\u0244' }, { 'base': 'V', 'letters': 'V\\u24CB\\uFF36\\u1E7C\\u1E7E\\u01B2\\uA75E\\u0245' }, { 'base': 'VY', 'letters': '\\uA760' }, { 'base': 'W', 'letters': 'W\\u24CC\\uFF37\\u1E80\\u1E82\\u0174\\u1E86\\u1E84\\u1E88\\u2C72' }, { 'base': 'X', 'letters': 'X\\u24CD\\uFF38\\u1E8A\\u1E8C' }, { 'base': 'Y', 'letters': 'Y\\u24CE\\uFF39\\u1EF2\\xDD\\u0176\\u1EF8\\u0232\\u1E8E\\u0178\\u1EF6\\u1EF4\\u01B3\\u024E\\u1EFE' }, { 'base': 'Z', 'letters': 'Z\\u24CF\\uFF3A\\u0179\\u1E90\\u017B\\u017D\\u1E92\\u1E94\\u01B5\\u0224\\u2C7F\\u2C6B\\uA762' }, { 'base': 'a', 'letters': 'a\\u24D0\\uFF41\\u1E9A\\xE0\\xE1\\xE2\\u1EA7\\u1EA5\\u1EAB\\u1EA9\\xE3\\u0101\\u0103\\u1EB1\\u1EAF\\u1EB5\\u1EB3\\u0227\\u01E1\\xE4\\u01DF\\u1EA3\\xE5\\u01FB\\u01CE\\u0201\\u0203\\u1EA1\\u1EAD\\u1EB7\\u1E01\\u0105\\u2C65\\u0250' }, { 'base': 'aa', 'letters': '\\uA733' }, { 'base': 'ae', 'letters': '\\xE6\\u01FD\\u01E3' }, { 'base': 'ao', 'letters': '\\uA735' }, { 'base': 'au', 'letters': '\\uA737' }, { 'base': 'av', 'letters': '\\uA739\\uA73B' }, { 'base': 'ay', 'letters': '\\uA73D' }, { 'base': 'b', 'letters': 'b\\u24D1\\uFF42\\u1E03\\u1E05\\u1E07\\u0180\\u0183\\u0253' }, { 'base': 'c', 'letters': 'c\\u24D2\\uFF43\\u0107\\u0109\\u010B\\u010D\\xE7\\u1E09\\u0188\\u023C\\uA73F\\u2184' }, { 'base': 'd', 'letters': 'd\\u24D3\\uFF44\\u1E0B\\u010F\\u1E0D\\u1E11\\u1E13\\u1E0F\\u0111\\u018C\\u0256\\u0257\\uA77A' }, { 'base': 'dz', 'letters': '\\u01F3\\u01C6' }, { 'base': 'e', 'letters': 'e\\u24D4\\uFF45\\xE8\\xE9\\xEA\\u1EC1\\u1EBF\\u1EC5\\u1EC3\\u1EBD\\u0113\\u1E15\\u1E17\\u0115\\u0117\\xEB\\u1EBB\\u011B\\u0205\\u0207\\u1EB9\\u1EC7\\u0229\\u1E1D\\u0119\\u1E19\\u1E1B\\u0247\\u025B\\u01DD' }, { 'base': 'f', 'letters': 'f\\u24D5\\uFF46\\u1E1F\\u0192\\uA77C' }, { 'base': 'g', 'letters': 'g\\u24D6\\uFF47\\u01F5\\u011D\\u1E21\\u011F\\u0121\\u01E7\\u0123\\u01E5\\u0260\\uA7A1\\u1D79\\uA77F' }, { 'base': 'h', 'letters': 'h\\u24D7\\uFF48\\u0125\\u1E23\\u1E27\\u021F\\u1E25\\u1E29\\u1E2B\\u1E96\\u0127\\u2C68\\u2C76\\u0265' }, { 'base': 'hv', 'letters': '\\u0195' }, { 'base': 'i', 'letters': 'i\\u24D8\\uFF49\\xEC\\xED\\xEE\\u0129\\u012B\\u012D\\xEF\\u1E2F\\u1EC9\\u01D0\\u0209\\u020B\\u1ECB\\u012F\\u1E2D\\u0268\\u0131' }, { 'base': 'j', 'letters': 'j\\u24D9\\uFF4A\\u0135\\u01F0\\u0249' }, { 'base': 'k', 'letters': 'k\\u24DA\\uFF4B\\u1E31\\u01E9\\u1E33\\u0137\\u1E35\\u0199\\u2C6A\\uA741\\uA743\\uA745\\uA7A3' }, { 'base': 'l', 'letters': 'l\\u24DB\\uFF4C\\u0140\\u013A\\u013E\\u1E37\\u1E39\\u013C\\u1E3D\\u1E3B\\u017F\\u0142\\u019A\\u026B\\u2C61\\uA749\\uA781\\uA747' }, { 'base': 'lj', 'letters': '\\u01C9' }, { 'base': 'm', 'letters': 'm\\u24DC\\uFF4D\\u1E3F\\u1E41\\u1E43\\u0271\\u026F' }, { 'base': 'n', 'letters': 'n\\u24DD\\uFF4E\\u01F9\\u0144\\xF1\\u1E45\\u0148\\u1E47\\u0146\\u1E4B\\u1E49\\u019E\\u0272\\u0149\\uA791\\uA7A5' }, { 'base': 'nj', 'letters': '\\u01CC' }, { 'base': 'o', 'letters': 'o\\u24DE\\uFF4F\\xF2\\xF3\\xF4\\u1ED3\\u1ED1\\u1ED7\\u1ED5\\xF5\\u1E4D\\u022D\\u1E4F\\u014D\\u1E51\\u1E53\\u014F\\u022F\\u0231\\xF6\\u022B\\u1ECF\\u0151\\u01D2\\u020D\\u020F\\u01A1\\u1EDD\\u1EDB\\u1EE1\\u1EDF\\u1EE3\\u1ECD\\u1ED9\\u01EB\\u01ED\\xF8\\u01FF\\u0254\\uA74B\\uA74D\\u0275' }, { 'base': 'oi', 'letters': '\\u01A3' }, { 'base': 'ou', 'letters': '\\u0223' }, { 'base': 'oo', 'letters': '\\uA74F' }, { 'base': 'p', 'letters': 'p\\u24DF\\uFF50\\u1E55\\u1E57\\u01A5\\u1D7D\\uA751\\uA753\\uA755' }, { 'base': 'q', 'letters': 'q\\u24E0\\uFF51\\u024B\\uA757\\uA759' }, { 'base': 'r', 'letters': 'r\\u24E1\\uFF52\\u0155\\u1E59\\u0159\\u0211\\u0213\\u1E5B\\u1E5D\\u0157\\u1E5F\\u024D\\u027D\\uA75B\\uA7A7\\uA783' }, { 'base': 's', 'letters': 's\\u24E2\\uFF53\\xDF\\u015B\\u1E65\\u015D\\u1E61\\u0161\\u1E67\\u1E63\\u1E69\\u0219\\u015F\\u023F\\uA7A9\\uA785\\u1E9B' }, { 'base': 't', 'letters': 't\\u24E3\\uFF54\\u1E6B\\u1E97\\u0165\\u1E6D\\u021B\\u0163\\u1E71\\u1E6F\\u0167\\u01AD\\u0288\\u2C66\\uA787' }, { 'base': 'tz', 'letters': '\\uA729' }, { 'base': 'u', 'letters': 'u\\u24E4\\uFF55\\xF9\\xFA\\xFB\\u0169\\u1E79\\u016B\\u1E7B\\u016D\\xFC\\u01DC\\u01D8\\u01D6\\u01DA\\u1EE7\\u016F\\u0171\\u01D4\\u0215\\u0217\\u01B0\\u1EEB\\u1EE9\\u1EEF\\u1EED\\u1EF1\\u1EE5\\u1E73\\u0173\\u1E77\\u1E75\\u0289' }, { 'base': 'v', 'letters': 'v\\u24E5\\uFF56\\u1E7D\\u1E7F\\u028B\\uA75F\\u028C' }, { 'base': 'vy', 'letters': '\\uA761' }, { 'base': 'w', 'letters': 'w\\u24E6\\uFF57\\u1E81\\u1E83\\u0175\\u1E87\\u1E85\\u1E98\\u1E89\\u2C73' }, { 'base': 'x', 'letters': 'x\\u24E7\\uFF58\\u1E8B\\u1E8D' }, { 'base': 'y', 'letters': 'y\\u24E8\\uFF59\\u1EF3\\xFD\\u0177\\u1EF9\\u0233\\u1E8F\\xFF\\u1EF7\\u1E99\\u1EF5\\u01B4\\u024F\\u1EFF' }, { 'base': 'z', 'letters': 'z\\u24E9\\uFF5A\\u017A\\u1E91\\u017C\\u017E\\u1E93\\u1E95\\u01B6\\u0225\\u0240\\u2C6C\\uA763' }];\n/* eslint-enable max-len */\n\nvar diacriticsMap = {};\nfor (var ii = 0; ii < map.length; ii++) {\n var letters = map[ii].letters;\n for (var jj = 0; jj < letters.length; jj++) {\n diacriticsMap[letters[jj]] = map[ii].base;\n }\n}\n\n// \"what?\" version ... http://jsperf.com/diacritics/12\nfunction stripDiacritics(str) {\n return str.replace(/[\\u0300-\\u036F]/g, '') // Remove combining diacritics\n /* eslint-disable-next-line no-control-regex */\n .replace(/[^\\u0000-\\u007E]/g, function (a) {\n return diacriticsMap[a] || a;\n });\n}","var arraySome = require('./_arraySome'),\n baseIteratee = require('./_baseIteratee'),\n baseSome = require('./_baseSome'),\n isArray = require('./isArray'),\n isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Checks if `predicate` returns truthy for **any** element of `collection`.\n * Iteration is stopped once `predicate` returns truthy. The predicate is\n * invoked with three arguments: (value, index|key, collection).\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} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n * @example\n *\n * _.some([null, 0, 'yes', false], Boolean);\n * // => true\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.some(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.some(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.some(users, 'active');\n * // => true\n */\nfunction some(collection, predicate, guard) {\n var func = isArray(collection) ? arraySome : baseSome;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, baseIteratee(predicate, 3));\n}\n\nmodule.exports = some;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = warn;\nexports._resetWarned = _resetWarned;\n\nvar _warning = require('warning');\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar warned = {}; /**\n * This code is copied from: https://github.com/ReactTraining/react-router/blob/master/modules/routerWarning.js\n */\n\nfunction warn(falseToWarn, message) {\n // Only issue deprecation warnings once.\n if (!falseToWarn && message.indexOf('deprecated') !== -1) {\n if (warned[message]) {\n return;\n }\n warned[message] = true;\n }\n\n message = '[react-bootstrap-typeahead] ' + message;\n\n for (var _len = arguments.length, args = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n args[_key - 2] = arguments[_key];\n }\n\n _warning2.default.apply(undefined, [falseToWarn, message].concat(args));\n}\n\nfunction _resetWarned() {\n warned = {};\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 > 2 ? len - 2 : 0);\n for (var key = 2; key < len; key++) {\n args[key - 2] = 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","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = defaultFilterBy;\n\nvar _isEqual = require('lodash/isEqual');\n\nvar _isEqual2 = _interopRequireDefault(_isEqual);\n\nvar _isFunction = require('lodash/isFunction');\n\nvar _isFunction2 = _interopRequireDefault(_isFunction);\n\nvar _isString = require('lodash/isString');\n\nvar _isString2 = _interopRequireDefault(_isString);\n\nvar _some = require('lodash/some');\n\nvar _some2 = _interopRequireDefault(_some);\n\nvar _stripDiacritics = require('./stripDiacritics');\n\nvar _stripDiacritics2 = _interopRequireDefault(_stripDiacritics);\n\nvar _warn = require('./warn');\n\nvar _warn2 = _interopRequireDefault(_warn);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction isMatch(input, string, props) {\n if (!props.caseSensitive) {\n input = input.toLowerCase();\n string = string.toLowerCase();\n }\n\n if (props.ignoreDiacritics) {\n input = (0, _stripDiacritics2.default)(input);\n string = (0, _stripDiacritics2.default)(string);\n }\n\n return string.indexOf(input) !== -1;\n}\n\n/**\n * Default algorithm for filtering results.\n */\nfunction defaultFilterBy(option, props) {\n var filterBy = props.filterBy,\n labelKey = props.labelKey,\n multiple = props.multiple,\n selected = props.selected,\n text = props.text;\n\n // Don't show selected options in the menu for the multi-select case.\n\n if (multiple && selected.some(function (o) {\n return (0, _isEqual2.default)(o, option);\n })) {\n return false;\n }\n\n var fields = filterBy.slice();\n\n if ((0, _isFunction2.default)(labelKey) && isMatch(text, labelKey(option), props)) {\n return true;\n }\n\n if ((0, _isString2.default)(labelKey)) {\n // Add the `labelKey` field to the list of fields if it isn't already there.\n if (fields.indexOf(labelKey) === -1) {\n fields.unshift(labelKey);\n }\n }\n\n if ((0, _isString2.default)(option)) {\n (0, _warn2.default)(fields.length <= 1, 'You cannot filter by properties when `option` is a string.');\n\n return isMatch(text, option, props);\n }\n\n return (0, _some2.default)(fields, function (field) {\n var value = option[field];\n\n if (!(0, _isString2.default)(value)) {\n (0, _warn2.default)(false, 'Fields passed to `filterBy` should have string values. Value will ' + 'be converted to a string; results may be unexpected.');\n\n // Coerce to string since `toString` isn't null-safe.\n value = value + '';\n }\n\n return isMatch(text, value, props);\n });\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nfunction getAccessibilityStatus(props) {\n var a11yNumResults = props.a11yNumResults,\n a11yNumSelected = props.a11yNumSelected,\n emptyLabel = props.emptyLabel,\n isMenuShown = props.isMenuShown,\n results = props.results,\n selected = props.selected;\n\n // If the menu is hidden, display info about the number of selections.\n\n if (!isMenuShown) {\n return a11yNumSelected(selected);\n }\n\n // Display info about the number of matches.\n if (results.length === 0) {\n return emptyLabel;\n }\n\n return a11yNumResults(results);\n}\n\nexports.default = getAccessibilityStatus;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = getDisplayName;\nfunction getDisplayName(WrappedComponent) {\n return WrappedComponent.displayName || WrappedComponent.name || 'Component';\n}","'use strict';\n\nvar matchOperatorsRe = /[|\\\\{}()[\\]^$+*?.]/g;\n\nmodule.exports = function (str) {\n\tif (typeof str !== 'string') {\n\t\tthrow new TypeError('Expected a string');\n\t}\n\n\treturn str.replace(matchOperatorsRe, '\\\\$&');\n};\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = getMatchBounds;\n\nvar _escapeStringRegexp = require('escape-string-regexp');\n\nvar _escapeStringRegexp2 = _interopRequireDefault(_escapeStringRegexp);\n\nvar _stripDiacritics = require('./stripDiacritics');\n\nvar _stripDiacritics2 = _interopRequireDefault(_stripDiacritics);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar CASE_INSENSITIVE = 'i';\nvar COMBINING_MARKS = /[\\u0300-\\u036F]/;\n\nfunction getMatchBounds(subject, search) {\n search = new RegExp((0, _escapeStringRegexp2.default)((0, _stripDiacritics2.default)(search)), CASE_INSENSITIVE);\n\n var matches = search.exec((0, _stripDiacritics2.default)(subject));\n\n if (!matches) {\n return null;\n }\n\n var start = matches.index;\n var matchLength = matches[0].length;\n\n // Account for combining marks, which changes the indices.\n if (COMBINING_MARKS.test(subject)) {\n // Starting at the beginning of the subject string, check for the number of\n // combining marks and increment the start index whenever one is found.\n for (var ii = 0; ii <= start; ii++) {\n if (COMBINING_MARKS.test(subject[ii])) {\n start++;\n }\n }\n\n // Similarly, increment the length of the match string if it contains a\n // combining mark.\n for (var _ii = start; _ii <= start + matchLength; _ii++) {\n if (COMBINING_MARKS.test(subject[_ii])) {\n matchLength++;\n }\n }\n }\n\n return {\n end: start + matchLength,\n start: start\n };\n}","var overArg = require('./_overArg');\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nmodule.exports = getPrototype;\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","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar DEFAULT_LABELKEY = exports.DEFAULT_LABELKEY = 'label';","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = getStringLabelKey;\n\nvar _defaultLabelKey = require('../constants/defaultLabelKey');\n\nfunction getStringLabelKey(labelKey) {\n return typeof labelKey === 'string' ? labelKey : _defaultLabelKey.DEFAULT_LABELKEY;\n}","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _invariant = require('invariant');\n\nvar _invariant2 = _interopRequireDefault(_invariant);\n\nvar _isPlainObject = require('lodash/isPlainObject');\n\nvar _isPlainObject2 = _interopRequireDefault(_isPlainObject);\n\nvar _getStringLabelKey = require('./getStringLabelKey');\n\nvar _getStringLabelKey2 = _interopRequireDefault(_getStringLabelKey);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Retrieves the display string from an option. Options can be the string\n * themselves, or an object with a defined display string. Anything else throws\n * an error.\n */\nfunction getOptionLabel(option, labelKey) {\n if (option.paginationOption || option.customOption) {\n return option[(0, _getStringLabelKey2.default)(labelKey)];\n }\n\n var optionLabel = void 0;\n\n if (typeof option === 'string') {\n optionLabel = option;\n }\n\n if (typeof labelKey === 'function') {\n // This overwrites string options, but we assume the consumer wants to do\n // something custom if `labelKey` is a function.\n optionLabel = labelKey(option);\n } else if (typeof labelKey === 'string' && (0, _isPlainObject2.default)(option)) {\n optionLabel = option[labelKey];\n }\n\n !(typeof optionLabel === 'string') ? process.env.NODE_ENV !== 'production' ? (0, _invariant2.default)(false, 'One or more options does not have a valid label string. Check the ' + '`labelKey` prop to ensure that it matches the correct option key and ' + 'provides a string for filtering and display.') : (0, _invariant2.default)(false) : void 0;\n\n return optionLabel;\n}\n\nexports.default = getOptionLabel;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getMatchBounds = require('./getMatchBounds');\n\nvar _getMatchBounds2 = _interopRequireDefault(_getMatchBounds);\n\nvar _getOptionLabel = require('./getOptionLabel');\n\nvar _getOptionLabel2 = _interopRequireDefault(_getOptionLabel);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction getHintText(_ref) {\n var activeItem = _ref.activeItem,\n initialItem = _ref.initialItem,\n isMenuShown = _ref.isMenuShown,\n labelKey = _ref.labelKey,\n multiple = _ref.multiple,\n selected = _ref.selected,\n text = _ref.text;\n\n // Don't display a hint under the following conditions:\n if (\n // No text entered.\n !text ||\n // The menu is hidden.\n !isMenuShown ||\n // No item in the menu.\n !initialItem ||\n // The initial item is a custom option.\n initialItem.customOption ||\n // One of the menu items is active.\n activeItem ||\n // There's already a selection in single-select mode.\n !!selected.length && !multiple) {\n return '';\n }\n\n var initialItemStr = (0, _getOptionLabel2.default)(initialItem, labelKey);\n var bounds = (0, _getMatchBounds2.default)(initialItemStr.toLowerCase(), text.toLowerCase());\n\n if (!(bounds && bounds.start === 0)) {\n return '';\n }\n\n // Text matching is case- and accent-insensitive, so to display the hint\n // correctly, splice the input string with the hint string.\n return text + initialItemStr.slice(bounds.end, initialItemStr.length);\n}\n\nexports.default = getHintText;","/**\n * Gets the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias first\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the first element of `array`.\n * @example\n *\n * _.head([1, 2, 3]);\n * // => 1\n *\n * _.head([]);\n * // => undefined\n */\nfunction head(array) {\n return (array && array.length) ? array[0] : undefined;\n}\n\nmodule.exports = head;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _head = require('lodash/head');\n\nvar _head2 = _interopRequireDefault(_head);\n\nvar _getOptionLabel = require('./getOptionLabel');\n\nvar _getOptionLabel2 = _interopRequireDefault(_getOptionLabel);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction getInputText(_ref) {\n var activeItem = _ref.activeItem,\n labelKey = _ref.labelKey,\n multiple = _ref.multiple,\n selected = _ref.selected,\n text = _ref.text;\n\n if (activeItem) {\n // Display the input value if the pagination item is active.\n return activeItem.paginationOption ? text : (0, _getOptionLabel2.default)(activeItem, labelKey);\n }\n\n var selectedItem = !multiple && !!selected.length && (0, _head2.default)(selected);\n if (selectedItem) {\n return (0, _getOptionLabel2.default)(selectedItem, labelKey);\n }\n\n return text;\n}\n\nexports.default = getInputText;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = getMenuItemId;\nfunction getMenuItemId(position) {\n return \"rbt-menu-item-\" + position;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n/**\n * Truncates the result set based on `maxResults` and returns the new set.\n */\nfunction getTruncatedOptions(options, maxResults) {\n if (!maxResults || maxResults >= options.length) {\n return options;\n }\n\n return options.slice(0, maxResults);\n}\n\nexports.default = getTruncatedOptions;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isShown;\nfunction isShown(results, props) {\n var emptyLabel = props.emptyLabel,\n minLength = props.minLength,\n showMenu = props.showMenu,\n text = props.text;\n\n\n if (!showMenu) {\n return false;\n }\n\n if (text.length < minLength) {\n return false;\n }\n\n return !!(results.length || emptyLabel);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = pluralize;\n/**\n * Basic util for pluralizing words. By default, simply adds an 's' to the word.\n * Also allows for a custom plural version.\n */\nfunction pluralize(text, count, plural) {\n plural = plural || text + \"s\";\n return count === 1 ? \"1 \" + text : count + \" \" + plural;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = preventInputBlur;\n/**\n * Prevent the main input from blurring when a menu item or the clear button is\n * clicked. (#226 & #310)\n */\nfunction preventInputBlur(e) {\n e.preventDefault();\n}","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n/**\n * Partial polyfill for webkit `scrollIntoViewIfNeeded()` method. Addresses\n * vertical scrolling only.\n *\n * Inspired by https://gist.github.com/hsablonniere/2581101, but uses\n * `getBoundingClientRect`.\n */\nfunction scrollIntoViewIfNeeded(node) {\n // Webkit browsers\n if (Element.prototype.scrollIntoViewIfNeeded) {\n node.scrollIntoViewIfNeeded();\n return;\n }\n\n // FF, IE, etc.\n var rect = node.getBoundingClientRect();\n var parent = node.parentNode;\n var parentRect = parent.getBoundingClientRect();\n\n var parentComputedStyle = window.getComputedStyle(parent, null);\n var parentBorderTopWidth = parseInt(parentComputedStyle.getPropertyValue('border-top-width'));\n\n if (rect.top < parentRect.top || rect.bottom > parentRect.bottom) {\n parent.scrollTop = node.offsetTop - parent.offsetTop - parent.clientHeight / 2 - parentBorderTopWidth + node.clientHeight / 2;\n }\n}\n\nexports.default = scrollIntoViewIfNeeded;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.warn = exports.stripDiacritics = exports.scrollIntoViewIfNeeded = exports.preventInputBlur = exports.pluralize = exports.isShown = exports.getTruncatedOptions = exports.getStringLabelKey = exports.getOptionLabel = exports.getMenuItemId = exports.getMatchBounds = exports.getInputText = exports.getHintText = exports.getDisplayName = exports.getAccessibilityStatus = exports.defaultFilterBy = exports.addCustomOption = undefined;\n\nvar _addCustomOption2 = require('./addCustomOption');\n\nvar _addCustomOption3 = _interopRequireDefault(_addCustomOption2);\n\nvar _defaultFilterBy2 = require('./defaultFilterBy');\n\nvar _defaultFilterBy3 = _interopRequireDefault(_defaultFilterBy2);\n\nvar _getAccessibilityStatus2 = require('./getAccessibilityStatus');\n\nvar _getAccessibilityStatus3 = _interopRequireDefault(_getAccessibilityStatus2);\n\nvar _getDisplayName2 = require('./getDisplayName');\n\nvar _getDisplayName3 = _interopRequireDefault(_getDisplayName2);\n\nvar _getHintText2 = require('./getHintText');\n\nvar _getHintText3 = _interopRequireDefault(_getHintText2);\n\nvar _getInputText2 = require('./getInputText');\n\nvar _getInputText3 = _interopRequireDefault(_getInputText2);\n\nvar _getMatchBounds2 = require('./getMatchBounds');\n\nvar _getMatchBounds3 = _interopRequireDefault(_getMatchBounds2);\n\nvar _getMenuItemId2 = require('./getMenuItemId');\n\nvar _getMenuItemId3 = _interopRequireDefault(_getMenuItemId2);\n\nvar _getOptionLabel2 = require('./getOptionLabel');\n\nvar _getOptionLabel3 = _interopRequireDefault(_getOptionLabel2);\n\nvar _getStringLabelKey2 = require('./getStringLabelKey');\n\nvar _getStringLabelKey3 = _interopRequireDefault(_getStringLabelKey2);\n\nvar _getTruncatedOptions2 = require('./getTruncatedOptions');\n\nvar _getTruncatedOptions3 = _interopRequireDefault(_getTruncatedOptions2);\n\nvar _isShown2 = require('./isShown');\n\nvar _isShown3 = _interopRequireDefault(_isShown2);\n\nvar _pluralize2 = require('./pluralize');\n\nvar _pluralize3 = _interopRequireDefault(_pluralize2);\n\nvar _preventInputBlur2 = require('./preventInputBlur');\n\nvar _preventInputBlur3 = _interopRequireDefault(_preventInputBlur2);\n\nvar _scrollIntoViewIfNeeded2 = require('./scrollIntoViewIfNeeded');\n\nvar _scrollIntoViewIfNeeded3 = _interopRequireDefault(_scrollIntoViewIfNeeded2);\n\nvar _stripDiacritics2 = require('./stripDiacritics');\n\nvar _stripDiacritics3 = _interopRequireDefault(_stripDiacritics2);\n\nvar _warn2 = require('./warn');\n\nvar _warn3 = _interopRequireDefault(_warn2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.addCustomOption = _addCustomOption3.default; /* eslint-disable object-curly-spacing */\n\nexports.defaultFilterBy = _defaultFilterBy3.default;\nexports.getAccessibilityStatus = _getAccessibilityStatus3.default;\nexports.getDisplayName = _getDisplayName3.default;\nexports.getHintText = _getHintText3.default;\nexports.getInputText = _getInputText3.default;\nexports.getMatchBounds = _getMatchBounds3.default;\nexports.getMenuItemId = _getMenuItemId3.default;\nexports.getOptionLabel = _getOptionLabel3.default;\nexports.getStringLabelKey = _getStringLabelKey3.default;\nexports.getTruncatedOptions = _getTruncatedOptions3.default;\nexports.isShown = _isShown3.default;\nexports.pluralize = _pluralize3.default;\nexports.preventInputBlur = _preventInputBlur3.default;\nexports.scrollIntoViewIfNeeded = _scrollIntoViewIfNeeded3.default;\nexports.stripDiacritics = _stripDiacritics3.default;\nexports.warn = _warn3.default;\n/* eslint-enable object-curly-spacing */","'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\nvar _debounce = require('lodash/debounce');\n\nvar _debounce2 = _interopRequireDefault(_debounce);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _utils = require('../utils/');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\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 DEFAULT_DELAY_MS = 200;\n\n/**\n * HoC that encapsulates common behavior and functionality for doing\n * asynchronous searches, including:\n *\n * - Debouncing user input\n * - Query caching (optional)\n * - Search prompt and empty results behaviors\n */\nvar asyncContainer = function asyncContainer(Typeahead) {\n var WrappedTypeahead = function (_React$Component) {\n _inherits(WrappedTypeahead, _React$Component);\n\n function WrappedTypeahead() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, WrappedTypeahead);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = WrappedTypeahead.__proto__ || Object.getPrototypeOf(WrappedTypeahead)).call.apply(_ref, [this].concat(args))), _this), _this.state = {\n query: ''\n }, _this._getEmptyLabel = function () {\n var _this$props = _this.props,\n emptyLabel = _this$props.emptyLabel,\n isLoading = _this$props.isLoading,\n promptText = _this$props.promptText,\n searchText = _this$props.searchText,\n useCache = _this$props.useCache;\n var query = _this.state.query;\n\n\n if (!query.length) {\n return promptText;\n }\n\n if (isLoading || useCache && !_this._cache[query]) {\n return searchText;\n }\n\n return emptyLabel;\n }, _this._handleInputChange = function (query, e) {\n _this.props.onInputChange && _this.props.onInputChange(query, e);\n _this._handleSearchDebounced(query);\n }, _this._handleSearch = function (query) {\n var _this$props2 = _this.props,\n minLength = _this$props2.minLength,\n onSearch = _this$props2.onSearch,\n useCache = _this$props2.useCache;\n\n\n _this.setState({ query: query });\n\n if (!query || minLength && query.length < minLength) {\n return;\n }\n\n // Use cached results, if available.\n if (useCache && _this._cache[query]) {\n return;\n }\n\n // Perform the search.\n onSearch(query);\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(WrappedTypeahead, [{\n key: 'componentWillMount',\n value: function componentWillMount() {\n this._cache = {};\n this._handleSearchDebounced = (0, _debounce2.default)(this._handleSearch, this.props.delay);\n }\n }, {\n key: 'componentWillReceiveProps',\n value: function componentWillReceiveProps(nextProps) {\n var options = nextProps.options,\n useCache = nextProps.useCache;\n\n\n if (!this.props.isLoading) {\n return;\n }\n\n if (useCache) {\n this._cache[this.state.query] = options;\n }\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this._cache = {};\n this._handleSearchDebounced.cancel();\n }\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var _props = this.props,\n options = _props.options,\n useCache = _props.useCache,\n props = _objectWithoutProperties(_props, ['options', 'useCache']);\n\n var cachedQuery = this._cache[this.state.query];\n var emptyLabel = this._getEmptyLabel();\n\n // Short-circuit the creation of custom selections while the user is in\n // the process of searching. The logic for whether or not to display the\n // custom menu option is basically the same as whether we display the\n // empty label, so use that as a proxy.\n var allowNew = props.allowNew && emptyLabel === props.emptyLabel;\n // Unless allowNew is a function,\n // in which case it is up to the function to decide\n if (typeof props.allowNew === 'function') {\n allowNew = props.allowNew;\n }\n\n return _react2.default.createElement(Typeahead, _extends({}, props, {\n allowNew: allowNew,\n emptyLabel: emptyLabel,\n onInputChange: this._handleInputChange,\n options: useCache && cachedQuery ? cachedQuery : options,\n ref: function ref(instance) {\n return _this2._instance = instance;\n }\n }));\n }\n\n /**\n * Make the component instance available.\n */\n\n }, {\n key: 'getInstance',\n value: function getInstance() {\n return this._instance.getInstance();\n }\n }]);\n\n return WrappedTypeahead;\n }(_react2.default.Component);\n\n WrappedTypeahead.displayName = 'AsyncContainer(' + (0, _utils.getDisplayName)(Typeahead) + ')';\n\n WrappedTypeahead.propTypes = {\n /**\n * Delay, in milliseconds, before performing search.\n */\n delay: _propTypes2.default.number,\n /**\n * Whether or not a request is currently pending. Necessary for the\n * container to know when new results are available.\n */\n isLoading: _propTypes2.default.bool.isRequired,\n /**\n * Callback to perform when the search is executed.\n */\n onSearch: _propTypes2.default.func.isRequired,\n /**\n * Options to be passed to the typeahead. Will typically be the query\n * results, but can also be initial default options.\n */\n options: _propTypes2.default.array,\n /**\n * Message displayed in the menu when there is no user input.\n */\n promptText: _propTypes2.default.node,\n /**\n * Message displayed in the menu while the request is pending.\n */\n searchText: _propTypes2.default.node,\n /**\n * Whether or not the component should cache query results.\n */\n useCache: _propTypes2.default.bool\n };\n\n WrappedTypeahead.defaultProps = {\n delay: DEFAULT_DELAY_MS,\n minLength: 2,\n options: [],\n promptText: 'Type to search...',\n searchText: 'Searching...',\n useCache: true\n };\n\n return WrappedTypeahead;\n};\n\nexports.default = asyncContainer;","/*!\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","var getNative = require('./_getNative');\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nmodule.exports = defineProperty;\n","var defineProperty = require('./_defineProperty');\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\nmodule.exports = baseAssignValue;\n","var baseAssignValue = require('./_baseAssignValue'),\n eq = require('./eq');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nmodule.exports = assignValue;\n","var assignValue = require('./_assignValue'),\n 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","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","var basePickBy = require('./_basePickBy'),\n hasIn = require('./hasIn');\n\n/**\n * The base implementation of `_.pick` without support for individual\n * property identifiers.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @returns {Object} Returns the new object.\n */\nfunction basePick(object, paths) {\n return basePickBy(object, paths, function(value, path) {\n return hasIn(object, path);\n });\n}\n\nmodule.exports = basePick;\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","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 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","/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\nmodule.exports = apply;\n","var apply = require('./_apply');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\nmodule.exports = overRest;\n","/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\nmodule.exports = constant;\n","var constant = require('./constant'),\n defineProperty = require('./_defineProperty'),\n identity = require('./identity');\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\n\nmodule.exports = baseSetToString;\n","/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\nmodule.exports = shortOut;\n","var baseSetToString = require('./_baseSetToString'),\n shortOut = require('./_shortOut');\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\nmodule.exports = setToString;\n","var 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 basePick = require('./_basePick'),\n flatRest = require('./_flatRest');\n\n/**\n * Creates an object composed of the picked `object` properties.\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 pick.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pick(object, ['a', 'c']);\n * // => { 'a': 1, 'c': 3 }\n */\nvar pick = flatRest(function(object, paths) {\n return object == null ? {} : basePick(object, paths);\n});\n\nmodule.exports = pick;\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\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\n/**\n * ClearButton\n *\n * http://getbootstrap.com/css/#helper-classes-close\n */\nvar ClearButton = function ClearButton(_ref) {\n var bsSize = _ref.bsSize,\n className = _ref.className,\n label = _ref.label,\n _onClick = _ref.onClick,\n props = _objectWithoutProperties(_ref, ['bsSize', 'className', 'label', 'onClick']);\n\n return _react2.default.createElement(\n 'button',\n _extends({}, props, {\n 'aria-label': label,\n className: (0, _classnames2.default)('close', 'rbt-close', {\n 'rbt-close-lg': bsSize === 'large' || bsSize === 'lg'\n }, className),\n onClick: function onClick(e) {\n e.stopPropagation();\n _onClick(e);\n },\n type: 'button' }),\n _react2.default.createElement(\n 'span',\n { 'aria-hidden': 'true' },\n '\\xD7'\n ),\n _react2.default.createElement(\n 'span',\n { className: 'sr-only' },\n label\n )\n );\n};\n\nClearButton.propTypes = {\n bsSize: _propTypes2.default.oneOf(['large', 'lg', 'small', 'sm']),\n label: _propTypes2.default.string,\n onClick: _propTypes2.default.func.isRequired\n};\n\nClearButton.defaultProps = {\n label: 'Clear'\n};\n\nexports.default = ClearButton;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar Loader = function Loader(_ref) {\n var bsSize = _ref.bsSize;\n return _react2.default.createElement('div', {\n className: (0, _classnames2.default)('rbt-loader', {\n 'rbt-loader-lg': bsSize === 'large' || bsSize === 'lg',\n 'rbt-loader-sm': bsSize === 'small' || bsSize === 'sm'\n })\n });\n};\n\nLoader.propTypes = {\n bsSize: _propTypes2.default.oneOf(['large', 'lg', 'small', 'sm'])\n};\n\nexports.default = Loader;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = createChainableTypeChecker;\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\n// Mostly taken from ReactPropTypes.\n\nfunction createChainableTypeChecker(validate) {\n function checkType(isRequired, props, propName, componentName, location, propFullName) {\n var componentNameSafe = componentName || '<<anonymous>>';\n var propFullNameSafe = propFullName || propName;\n\n if (props[propName] == null) {\n if (isRequired) {\n return new Error('Required ' + location + ' `' + propFullNameSafe + '` was not specified ' + ('in `' + componentNameSafe + '`.'));\n }\n\n return null;\n }\n\n for (var _len = arguments.length, args = Array(_len > 6 ? _len - 6 : 0), _key = 6; _key < _len; _key++) {\n args[_key - 6] = arguments[_key];\n }\n\n return validate.apply(undefined, [props, propName, componentNameSafe, location, propFullNameSafe].concat(args));\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n}\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _createChainableTypeChecker = require('./utils/createChainableTypeChecker');\n\nvar _createChainableTypeChecker2 = _interopRequireDefault(_createChainableTypeChecker);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = typeof propValue === 'undefined' ? 'undefined' : _typeof(propValue);\n\n if (_react2.default.isValidElement(propValue)) {\n return new Error('Invalid ' + location + ' `' + propFullName + '` of type ReactElement ' + ('supplied to `' + componentName + '`, expected a ReactComponent or a ') + 'DOMElement. You can usually obtain a ReactComponent or DOMElement ' + 'from a ReactElement by attaching a ref to it.');\n }\n\n if ((propType !== 'object' || typeof propValue.render !== 'function') && propValue.nodeType !== 1) {\n return new Error('Invalid ' + location + ' `' + propFullName + '` of value `' + propValue + '` ' + ('supplied to `' + componentName + '`, expected a ReactComponent or a ') + 'DOMElement.');\n }\n\n return null;\n}\n\nexports.default = (0, _createChainableTypeChecker2.default)(validate);\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\nexports.default = getContainer;\n\nvar _reactDom = require('react-dom');\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction getContainer(container, defaultContainer) {\n container = typeof container === 'function' ? container() : container;\n return _reactDom2.default.findDOMNode(container) || defaultContainer;\n}\nmodule.exports = exports['default'];","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = ownerDocument;\nfunction ownerDocument(node) {\n return node && node.ownerDocument || document;\n}\nmodule.exports = exports[\"default\"];","'use strict';\n\nexports.__esModule = true;\n\nexports.default = function (componentOrElement) {\n return (0, _ownerDocument2.default)(_reactDom2.default.findDOMNode(componentOrElement));\n};\n\nvar _reactDom = require('react-dom');\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _ownerDocument = require('dom-helpers/ownerDocument');\n\nvar _ownerDocument2 = _interopRequireDefault(_ownerDocument);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _componentOrElement = require('prop-types-extra/lib/componentOrElement');\n\nvar _componentOrElement2 = _interopRequireDefault(_componentOrElement);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = require('react-dom');\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _getContainer = require('./utils/getContainer');\n\nvar _getContainer2 = _interopRequireDefault(_getContainer);\n\nvar _ownerDocument = require('./utils/ownerDocument');\n\nvar _ownerDocument2 = _interopRequireDefault(_ownerDocument);\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\n/**\n * The `<Portal/>` component renders its children into a new \"subtree\" outside of current component hierarchy.\n * You can think of it as a declarative `appendChild()`, or jQuery's `$.fn.appendTo()`.\n * The children of `<Portal/>` component will be appended to the `container` specified.\n */\nvar Portal = function (_React$Component) {\n _inherits(Portal, _React$Component);\n\n function Portal() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, Portal);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this._mountOverlayTarget = function () {\n if (!_this._overlayTarget) {\n _this._overlayTarget = document.createElement('div');\n _this._portalContainerNode = (0, _getContainer2.default)(_this.props.container, (0, _ownerDocument2.default)(_this).body);\n _this._portalContainerNode.appendChild(_this._overlayTarget);\n }\n }, _this._unmountOverlayTarget = function () {\n if (_this._overlayTarget) {\n _this._portalContainerNode.removeChild(_this._overlayTarget);\n _this._overlayTarget = null;\n }\n _this._portalContainerNode = null;\n }, _this._renderOverlay = function () {\n var overlay = !_this.props.children ? null : _react2.default.Children.only(_this.props.children);\n\n // Save reference for future access.\n if (overlay !== null) {\n _this._mountOverlayTarget();\n\n var initialRender = !_this._overlayInstance;\n\n _this._overlayInstance = _reactDom2.default.unstable_renderSubtreeIntoContainer(_this, overlay, _this._overlayTarget, function () {\n if (initialRender && _this.props.onRendered) {\n _this.props.onRendered();\n }\n });\n } else {\n // Unrender if the component is null for transitions to null\n _this._unrenderOverlay();\n _this._unmountOverlayTarget();\n }\n }, _this._unrenderOverlay = function () {\n if (_this._overlayTarget) {\n _reactDom2.default.unmountComponentAtNode(_this._overlayTarget);\n _this._overlayInstance = null;\n }\n }, _this.getMountNode = function () {\n return _this._overlayTarget;\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n Portal.prototype.componentDidMount = function componentDidMount() {\n this._isMounted = true;\n this._renderOverlay();\n };\n\n Portal.prototype.componentDidUpdate = function componentDidUpdate() {\n this._renderOverlay();\n };\n\n Portal.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n if (this._overlayTarget && nextProps.container !== this.props.container) {\n this._portalContainerNode.removeChild(this._overlayTarget);\n this._portalContainerNode = (0, _getContainer2.default)(nextProps.container, (0, _ownerDocument2.default)(this).body);\n this._portalContainerNode.appendChild(this._overlayTarget);\n }\n };\n\n Portal.prototype.componentWillUnmount = function componentWillUnmount() {\n this._isMounted = false;\n this._unrenderOverlay();\n this._unmountOverlayTarget();\n };\n\n Portal.prototype.render = function render() {\n return null;\n };\n\n return Portal;\n}(_react2.default.Component);\n\nPortal.displayName = 'Portal';\nPortal.propTypes = {\n /**\n * A Node, Component instance, or function that returns either. The `container` will have the Portal children\n * appended to it.\n */\n container: _propTypes2.default.oneOfType([_componentOrElement2.default, _propTypes2.default.func]),\n\n onRendered: _propTypes2.default.func\n};\nexports.default = Portal;\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _componentOrElement = require('prop-types-extra/lib/componentOrElement');\n\nvar _componentOrElement2 = _interopRequireDefault(_componentOrElement);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = require('react-dom');\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _getContainer = require('./utils/getContainer');\n\nvar _getContainer2 = _interopRequireDefault(_getContainer);\n\nvar _ownerDocument = require('./utils/ownerDocument');\n\nvar _ownerDocument2 = _interopRequireDefault(_ownerDocument);\n\nvar _LegacyPortal = require('./LegacyPortal');\n\nvar _LegacyPortal2 = _interopRequireDefault(_LegacyPortal);\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\n/**\n * The `<Portal/>` component renders its children into a new \"subtree\" outside of current component hierarchy.\n * You can think of it as a declarative `appendChild()`, or jQuery's `$.fn.appendTo()`.\n * The children of `<Portal/>` component will be appended to the `container` specified.\n */\nvar Portal = function (_React$Component) {\n _inherits(Portal, _React$Component);\n\n function Portal() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, Portal);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.setContainer = function () {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _this.props;\n\n _this._portalContainerNode = (0, _getContainer2.default)(props.container, (0, _ownerDocument2.default)(_this).body);\n }, _this.getMountNode = function () {\n return _this._portalContainerNode;\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n Portal.prototype.componentDidMount = function componentDidMount() {\n this.setContainer();\n this.forceUpdate(this.props.onRendered);\n };\n\n Portal.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n if (nextProps.container !== this.props.container) {\n this.setContainer(nextProps);\n }\n };\n\n Portal.prototype.componentWillUnmount = function componentWillUnmount() {\n this._portalContainerNode = null;\n };\n\n Portal.prototype.render = function render() {\n return this.props.children && this._portalContainerNode ? _reactDom2.default.createPortal(this.props.children, this._portalContainerNode) : null;\n };\n\n return Portal;\n}(_react2.default.Component);\n\nPortal.displayName = 'Portal';\nPortal.propTypes = {\n /**\n * A Node, Component instance, or function that returns either. The `container` will have the Portal children\n * appended to it.\n */\n container: _propTypes2.default.oneOfType([_componentOrElement2.default, _propTypes2.default.func]),\n\n onRendered: _propTypes2.default.func\n};\nexports.default = _reactDom2.default.createPortal ? Portal : _LegacyPortal2.default;\nmodule.exports = exports['default'];","// 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 : Function('return this')();\nif(typeof __g == 'number')__g = global; // eslint-disable-line no-undef","var core = module.exports = {version: '2.4.0'};\nif(typeof __e == 'number')__e = core; // eslint-disable-line no-undef","// 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};","module.exports = function(it){\n if(typeof it != 'function')throw TypeError(it + ' is not a function!');\n return it;\n};","module.exports = function(it){\n return typeof it === 'object' ? it !== null : typeof it === 'function';\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};","module.exports = function(exec){\n try {\n return !!exec();\n } catch(e){\n return true;\n }\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});","var isObject = require('./_is-object')\n , document = require('./_global').document\n // in old IE typeof document.createElement is 'object'\n , is = isObject(document) && isObject(document.createElement);\nmodule.exports = function(it){\n return is ? document.createElement(it) : {};\n};","module.exports = !require('./_descriptors') && !require('./_fails')(function(){\n return Object.defineProperty(require('./_dom-create')('div'), 'a', {get: function(){ return 7; }}).a != 7;\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};","var anObject = require('./_an-object')\n , IE8_DOM_DEFINE = require('./_ie8-dom-define')\n , toPrimitive = require('./_to-primitive')\n , 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};","module.exports = function(bitmap, value){\n return {\n enumerable : !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable : !(bitmap & 4),\n value : value\n };\n};","var dP = require('./_object-dp')\n , 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};","var global = require('./_global')\n , core = require('./_core')\n , ctx = require('./_ctx')\n , hide = require('./_hide')\n , PROTOTYPE = 'prototype';\n\nvar $export = function(type, name, source){\n var IS_FORCED = type & $export.F\n , IS_GLOBAL = type & $export.G\n , IS_STATIC = type & $export.S\n , IS_PROTO = type & $export.P\n , IS_BIND = type & $export.B\n , IS_WRAP = type & $export.W\n , exports = IS_GLOBAL ? core : core[name] || (core[name] = {})\n , expProto = exports[PROTOTYPE]\n , target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE]\n , 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 && key in exports)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;","// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = require('./_to-iobject')\n , toLength = require('./_to-length')\n , toIndex = require('./_to-index');\nmodule.exports = function(IS_INCLUDES){\n return function($this, el, fromIndex){\n var O = toIObject($this)\n , length = toLength(O.length)\n , index = toIndex(fromIndex, length)\n , value;\n // Array#includes uses SameValueZero equality algorithm\n if(IS_INCLUDES && el != el)while(length > index){\n value = O[index++];\n if(value != value)return true;\n // Array#toIndex 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};","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function(it, key){\n return hasOwnProperty.call(it, key);\n};","var toString = {}.toString;\n\nmodule.exports = function(it){\n return toString.call(it).slice(8, -1);\n};","// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = require('./_cof');\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function(it){\n return cof(it) == 'String' ? it.split('') : Object(it);\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};","// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = require('./_iobject')\n , defined = require('./_defined');\nmodule.exports = function(it){\n return IObject(defined(it));\n};","// 7.1.4 ToInteger\nvar ceil = Math.ceil\n , floor = Math.floor;\nmodule.exports = function(it){\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};","// 7.1.15 ToLength\nvar toInteger = require('./_to-integer')\n , min = Math.min;\nmodule.exports = function(it){\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};","var toInteger = require('./_to-integer')\n , max = Math.max\n , min = Math.min;\nmodule.exports = function(index, length){\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};","var global = require('./_global')\n , SHARED = '__core-js_shared__'\n , store = global[SHARED] || (global[SHARED] = {});\nmodule.exports = function(key){\n return store[key] || (store[key] = {});\n};","var id = 0\n , px = Math.random();\nmodule.exports = function(key){\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};","var shared = require('./_shared')('keys')\n , uid = require('./_uid');\nmodule.exports = function(key){\n return shared[key] || (shared[key] = uid(key));\n};","var has = require('./_has')\n , toIObject = require('./_to-iobject')\n , arrayIndexOf = require('./_array-includes')(false)\n , IE_PROTO = require('./_shared-key')('IE_PROTO');\n\nmodule.exports = function(object, names){\n var O = toIObject(object)\n , i = 0\n , result = []\n , 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};","// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');","// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal')\n , enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O){\n return $keys(O, enumBugKeys);\n};","exports.f = Object.getOwnPropertySymbols;","exports.f = {}.propertyIsEnumerable;","// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function(it){\n return Object(defined(it));\n};","'use strict';\n// 19.1.2.1 Object.assign(target, source, ...)\nvar getKeys = require('./_object-keys')\n , gOPS = require('./_object-gops')\n , pIE = require('./_object-pie')\n , toObject = require('./_to-object')\n , IObject = require('./_iobject')\n , $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 , B = {}\n , S = Symbol()\n , 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 , aLen = arguments.length\n , index = 1\n , getSymbols = gOPS.f\n , isEnum = pIE.f;\n while(aLen > index){\n var S = IObject(arguments[index++])\n , keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S)\n , length = keys.length\n , j = 0\n , key;\n while(length > j)if(isEnum.call(S, key = keys[j++]))T[key] = S[key];\n } return T;\n} : $assign;","// 19.1.3.1 Object.assign(target, source)\nvar $export = require('./_export');\n\n$export($export.S + $export.F, 'Object', {assign: require('./_object-assign')});","\"use strict\";\n\nexports.__esModule = true;\n\nvar _assign = require(\"../core-js/object/assign\");\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _assign2.default || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};","module.exports = { \"default\": require(\"core-js/library/fn/object/assign\"), __esModule: true };","require('../../modules/es6.object.assign');\nmodule.exports = require('../../modules/_core').Object.assign;","\"use strict\";\n\nexports.__esModule = true;\n\nexports.default = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};","module.exports = require('./_hide');","var dP = require('./_object-dp')\n , anObject = require('./_an-object')\n , getKeys = require('./_object-keys');\n\nmodule.exports = require('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties){\n anObject(O);\n var keys = getKeys(Properties)\n , length = keys.length\n , i = 0\n , P;\n while(length > i)dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};","module.exports = require('./_global').document && document.documentElement;","// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = require('./_an-object')\n , dPs = require('./_object-dps')\n , enumBugKeys = require('./_enum-bug-keys')\n , IE_PROTO = require('./_shared-key')('IE_PROTO')\n , Empty = function(){ /* empty */ }\n , 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 , i = enumBugKeys.length\n , lt = '<'\n , gt = '>'\n , iframeDocument;\n iframe.style.display = 'none';\n require('./_html').appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while(i--)delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties){\n var result;\n if(O !== null){\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty;\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\n","var store = require('./_shared')('wks')\n , uid = require('./_uid')\n , Symbol = require('./_global').Symbol\n , 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;","var def = require('./_object-dp').f\n , has = require('./_has')\n , 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};","'use strict';\nvar create = require('./_object-create')\n , descriptor = require('./_property-desc')\n , setToStringTag = require('./_set-to-string-tag')\n , 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};","var toInteger = require('./_to-integer')\n , 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 , i = toInteger(pos)\n , l = s.length\n , 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};","// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = require('./_has')\n , toObject = require('./_to-object')\n , IE_PROTO = require('./_shared-key')('IE_PROTO')\n , 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};","'use strict';\nvar LIBRARY = require('./_library')\n , $export = require('./_export')\n , redefine = require('./_redefine')\n , hide = require('./_hide')\n , has = require('./_has')\n , Iterators = require('./_iterators')\n , $iterCreate = require('./_iter-create')\n , setToStringTag = require('./_set-to-string-tag')\n , getPrototypeOf = require('./_object-gpo')\n , ITERATOR = require('./_wks')('iterator')\n , BUGGY = !([].keys && 'next' in [].keys()) // Safari has buggy iterators w/o `next`\n , FF_ITERATOR = '@@iterator'\n , KEYS = 'keys'\n , 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 , DEF_VALUES = DEFAULT == VALUES\n , VALUES_BUG = false\n , proto = Base.prototype\n , $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT]\n , $default = $native || getMethod(DEFAULT)\n , $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined\n , $anyNative = NAME == 'Array' ? proto.entries || $native : $native\n , methods, key, IteratorPrototype;\n // Fix native\n if($anyNative){\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base));\n if(IteratorPrototype !== Object.prototype){\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if(!LIBRARY && !has(IteratorPrototype, ITERATOR))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};","'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 , index = this._i\n , 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});","module.exports = function(done, value){\n return {value: value, done: !!done};\n};","'use strict';\nvar addToUnscopables = require('./_add-to-unscopables')\n , step = require('./_iter-step')\n , Iterators = require('./_iterators')\n , 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 , kind = this._k\n , 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');","require('./es6.array.iterator');\nvar global = require('./_global')\n , hide = require('./_hide')\n , Iterators = require('./_iterators')\n , TO_STRING_TAG = require('./_wks')('toStringTag');\n\nfor(var collections = ['NodeList', 'DOMTokenList', 'MediaList', 'StyleSheetList', 'CSSRuleList'], i = 0; i < 5; i++){\n var NAME = collections[i]\n , Collection = global[NAME]\n , proto = Collection && Collection.prototype;\n if(proto && !proto[TO_STRING_TAG])hide(proto, TO_STRING_TAG, NAME);\n Iterators[NAME] = Iterators.Array;\n}","exports.f = require('./_wks');","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');","var META = require('./_uid')('meta')\n , isObject = require('./_is-object')\n , has = require('./_has')\n , setDesc = require('./_object-dp').f\n , 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};","var global = require('./_global')\n , core = require('./_core')\n , LIBRARY = require('./_library')\n , wksExt = require('./_wks-ext')\n , 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};","// 7.2.2 IsArray(argument)\nvar cof = require('./_cof');\nmodule.exports = Array.isArray || function isArray(arg){\n return cof(arg) == 'Array';\n};","// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar $keys = require('./_object-keys-internal')\n , hiddenKeys = require('./_enum-bug-keys').concat('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O){\n return $keys(O, hiddenKeys);\n};","// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nvar toIObject = require('./_to-iobject')\n , gOPN = require('./_object-gopn').f\n , 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","var pIE = require('./_object-pie')\n , createDesc = require('./_property-desc')\n , toIObject = require('./_to-iobject')\n , toPrimitive = require('./_to-primitive')\n , has = require('./_has')\n , IE8_DOM_DEFINE = require('./_ie8-dom-define')\n , 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};","'use strict';\n// ECMAScript 6 symbols shim\nvar global = require('./_global')\n , has = require('./_has')\n , DESCRIPTORS = require('./_descriptors')\n , $export = require('./_export')\n , redefine = require('./_redefine')\n , META = require('./_meta').KEY\n , $fails = require('./_fails')\n , shared = require('./_shared')\n , setToStringTag = require('./_set-to-string-tag')\n , uid = require('./_uid')\n , wks = require('./_wks')\n , wksExt = require('./_wks-ext')\n , wksDefine = require('./_wks-define')\n , keyOf = require('./_keyof')\n , enumKeys = require('./_enum-keys')\n , isArray = require('./_is-array')\n , anObject = require('./_an-object')\n , toIObject = require('./_to-iobject')\n , toPrimitive = require('./_to-primitive')\n , createDesc = require('./_property-desc')\n , _create = require('./_object-create')\n , gOPNExt = require('./_object-gopn-ext')\n , $GOPD = require('./_object-gopd')\n , $DP = require('./_object-dp')\n , $keys = require('./_object-keys')\n , gOPD = $GOPD.f\n , dP = $DP.f\n , gOPN = gOPNExt.f\n , $Symbol = global.Symbol\n , $JSON = global.JSON\n , _stringify = $JSON && $JSON.stringify\n , PROTOTYPE = 'prototype'\n , HIDDEN = wks('_hidden')\n , TO_PRIMITIVE = wks('toPrimitive')\n , isEnum = {}.propertyIsEnumerable\n , SymbolRegistry = shared('symbol-registry')\n , AllSymbols = shared('symbols')\n , OPSymbols = shared('op-symbols')\n , ObjectProto = Object[PROTOTYPE]\n , USE_NATIVE = typeof $Symbol == 'function'\n , 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 , i = 0\n , l = keys.length\n , 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 , result = []\n , i = 0\n , 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 , names = gOPN(IS_OP ? OPSymbols : toIObject(it))\n , result = []\n , i = 0\n , 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 require('./_object-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 symbols = (\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(','), i = 0; symbols.length > i; )wks(symbols[i++]);\n\nfor(var symbols = $keys(wks.store), i = 0; symbols.length > i; )wksDefine(symbols[i++]);\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(key){\n if(isSymbol(key))return keyOf(SymbolRegistry, key);\n throw TypeError(key + ' is not a symbol!');\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// 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 if(it === undefined || isSymbol(it))return; // IE8 returns string on undefined\n var args = [it]\n , i = 1\n , replacer, $replacer;\n while(arguments.length > i)args.push(arguments[i++]);\n replacer = args[1];\n if(typeof replacer == 'function')$replacer = replacer;\n if($replacer || !isArray(replacer))replacer = function(key, value){\n if($replacer)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);","// all enumerable object keys, includes symbols\nvar getKeys = require('./_object-keys')\n , gOPS = require('./_object-gops')\n , pIE = require('./_object-pie');\nmodule.exports = function(it){\n var result = getKeys(it)\n , getSymbols = gOPS.f;\n if(getSymbols){\n var symbols = getSymbols(it)\n , isEnum = pIE.f\n , i = 0\n , key;\n while(symbols.length > i)if(isEnum.call(it, key = symbols[i++]))result.push(key);\n } return result;\n};","var getKeys = require('./_object-keys')\n , toIObject = require('./_to-iobject');\nmodule.exports = function(object, el){\n var O = toIObject(object)\n , keys = getKeys(O)\n , length = keys.length\n , index = 0\n , key;\n while(length > index)if(O[key = keys[index++]] === el)return key;\n};","require('./_wks-define')('asyncIterator');","require('./_wks-define')('observable');","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;","module.exports = { \"default\": require(\"core-js/library/fn/symbol\"), __esModule: true };","\"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};","\"use strict\";\n\nexports.__esModule = true;\n\nvar _typeof2 = require(\"../helpers/typeof\");\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && ((typeof call === \"undefined\" ? \"undefined\" : (0, _typeof3.default)(call)) === \"object\" || typeof call === \"function\") ? call : self;\n};","// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nvar isObject = require('./_is-object')\n , anObject = require('./_an-object');\nvar check = function(O, proto){\n anObject(O);\n if(!isObject(proto) && proto !== null)throw TypeError(proto + \": can't set as prototype!\");\n};\nmodule.exports = {\n set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line\n function(test, buggy, set){\n try {\n set = require('./_ctx')(Function.call, require('./_object-gopd').f(Object.prototype, '__proto__').set, 2);\n set(test, []);\n buggy = !(test instanceof Array);\n } catch(e){ buggy = true; }\n return function setPrototypeOf(O, proto){\n check(O, proto);\n if(buggy)O.__proto__ = proto;\n else set(O, proto);\n return O;\n };\n }({}, false) : undefined),\n check: check\n};","// 19.1.3.19 Object.setPrototypeOf(O, proto)\nvar $export = require('./_export');\n$export($export.S, 'Object', {setPrototypeOf: require('./_set-proto').set});","require('../../modules/es6.object.set-prototype-of');\nmodule.exports = require('../../modules/_core').Object.setPrototypeOf;","module.exports = { \"default\": require(\"core-js/library/fn/object/set-prototype-of\"), __esModule: true };","var $export = require('./_export')\n// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\n$export($export.S, 'Object', {create: require('./_object-create')});","require('../../modules/es6.object.create');\nvar $Object = require('../../modules/_core').Object;\nmodule.exports = function create(P, D){\n return $Object.create(P, D);\n};","module.exports = { \"default\": require(\"core-js/library/fn/object/create\"), __esModule: true };","\"use strict\";\n\nexports.__esModule = true;\n\nvar _setPrototypeOf = require(\"../core-js/object/set-prototype-of\");\n\nvar _setPrototypeOf2 = _interopRequireDefault(_setPrototypeOf);\n\nvar _create = require(\"../core-js/object/create\");\n\nvar _create2 = _interopRequireDefault(_create);\n\nvar _typeof2 = require(\"../helpers/typeof\");\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + (typeof superClass === \"undefined\" ? \"undefined\" : (0, _typeof3.default)(superClass)));\n }\n\n subClass.prototype = (0, _create2.default)(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf2.default ? (0, _setPrototypeOf2.default)(subClass, superClass) : subClass.__proto__ = superClass;\n};","/**!\n * @fileOverview Kickass library to create and place poppers near their reference elements.\n * @version 1.14.6\n * @license\n * Copyright (c) 2016 Federico Zivolo and contributors\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined';\n\nvar longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox'];\nvar timeoutDuration = 0;\nfor (var i = 0; i < longerTimeoutBrowsers.length; i += 1) {\n if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) {\n timeoutDuration = 1;\n break;\n }\n}\n\nfunction microtaskDebounce(fn) {\n var called = false;\n return function () {\n if (called) {\n return;\n }\n called = true;\n window.Promise.resolve().then(function () {\n called = false;\n fn();\n });\n };\n}\n\nfunction taskDebounce(fn) {\n var scheduled = false;\n return function () {\n if (!scheduled) {\n scheduled = true;\n setTimeout(function () {\n scheduled = false;\n fn();\n }, timeoutDuration);\n }\n };\n}\n\nvar supportsMicroTasks = isBrowser && window.Promise;\n\n/**\n* Create a debounced version of a method, that's asynchronously deferred\n* but called in the minimum time possible.\n*\n* @method\n* @memberof Popper.Utils\n* @argument {Function} fn\n* @returns {Function}\n*/\nvar debounce = supportsMicroTasks ? microtaskDebounce : taskDebounce;\n\n/**\n * Check if the given variable is a function\n * @method\n * @memberof Popper.Utils\n * @argument {Any} functionToCheck - variable to check\n * @returns {Boolean} answer to: is a function?\n */\nfunction isFunction(functionToCheck) {\n var getType = {};\n return functionToCheck && getType.toString.call(functionToCheck) === '[object Function]';\n}\n\n/**\n * Get CSS computed property of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Eement} element\n * @argument {String} property\n */\nfunction getStyleComputedProperty(element, property) {\n if (element.nodeType !== 1) {\n return [];\n }\n // NOTE: 1 DOM access here\n var window = element.ownerDocument.defaultView;\n var css = window.getComputedStyle(element, null);\n return property ? css[property] : css;\n}\n\n/**\n * Returns the parentNode or the host of the element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} parent\n */\nfunction getParentNode(element) {\n if (element.nodeName === 'HTML') {\n return element;\n }\n return element.parentNode || element.host;\n}\n\n/**\n * Returns the scrolling parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} scroll parent\n */\nfunction getScrollParent(element) {\n // Return body, `getScroll` will take care to get the correct `scrollTop` from it\n if (!element) {\n return document.body;\n }\n\n switch (element.nodeName) {\n case 'HTML':\n case 'BODY':\n return element.ownerDocument.body;\n case '#document':\n return element.body;\n }\n\n // Firefox want us to check `-x` and `-y` variations as well\n\n var _getStyleComputedProp = getStyleComputedProperty(element),\n overflow = _getStyleComputedProp.overflow,\n overflowX = _getStyleComputedProp.overflowX,\n overflowY = _getStyleComputedProp.overflowY;\n\n if (/(auto|scroll|overlay)/.test(overflow + overflowY + overflowX)) {\n return element;\n }\n\n return getScrollParent(getParentNode(element));\n}\n\nvar isIE11 = isBrowser && !!(window.MSInputMethodContext && document.documentMode);\nvar isIE10 = isBrowser && /MSIE 10/.test(navigator.userAgent);\n\n/**\n * Determines if the browser is Internet Explorer\n * @method\n * @memberof Popper.Utils\n * @param {Number} version to check\n * @returns {Boolean} isIE\n */\nfunction isIE(version) {\n if (version === 11) {\n return isIE11;\n }\n if (version === 10) {\n return isIE10;\n }\n return isIE11 || isIE10;\n}\n\n/**\n * Returns the offset parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} offset parent\n */\nfunction getOffsetParent(element) {\n if (!element) {\n return document.documentElement;\n }\n\n var noOffsetParent = isIE(10) ? document.body : null;\n\n // NOTE: 1 DOM access here\n var offsetParent = element.offsetParent || null;\n // Skip hidden elements which don't have an offsetParent\n while (offsetParent === noOffsetParent && element.nextElementSibling) {\n offsetParent = (element = element.nextElementSibling).offsetParent;\n }\n\n var nodeName = offsetParent && offsetParent.nodeName;\n\n if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') {\n return element ? element.ownerDocument.documentElement : document.documentElement;\n }\n\n // .offsetParent will return the closest TH, TD or TABLE in case\n // no offsetParent is present, I hate this job...\n if (['TH', 'TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 && getStyleComputedProperty(offsetParent, 'position') === 'static') {\n return getOffsetParent(offsetParent);\n }\n\n return offsetParent;\n}\n\nfunction isOffsetContainer(element) {\n var nodeName = element.nodeName;\n\n if (nodeName === 'BODY') {\n return false;\n }\n return nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element;\n}\n\n/**\n * Finds the root node (document, shadowDOM root) of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} node\n * @returns {Element} root node\n */\nfunction getRoot(node) {\n if (node.parentNode !== null) {\n return getRoot(node.parentNode);\n }\n\n return node;\n}\n\n/**\n * Finds the offset parent common to the two provided nodes\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element1\n * @argument {Element} element2\n * @returns {Element} common offset parent\n */\nfunction findCommonOffsetParent(element1, element2) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) {\n return document.documentElement;\n }\n\n // Here we make sure to give as \"start\" the element that comes first in the DOM\n var order = element1.compareDocumentPosition(element2) & Node.DOCUMENT_POSITION_FOLLOWING;\n var start = order ? element1 : element2;\n var end = order ? element2 : element1;\n\n // Get common ancestor container\n var range = document.createRange();\n range.setStart(start, 0);\n range.setEnd(end, 0);\n var commonAncestorContainer = range.commonAncestorContainer;\n\n // Both nodes are inside #document\n\n if (element1 !== commonAncestorContainer && element2 !== commonAncestorContainer || start.contains(end)) {\n if (isOffsetContainer(commonAncestorContainer)) {\n return commonAncestorContainer;\n }\n\n return getOffsetParent(commonAncestorContainer);\n }\n\n // one of the nodes is inside shadowDOM, find which one\n var element1root = getRoot(element1);\n if (element1root.host) {\n return findCommonOffsetParent(element1root.host, element2);\n } else {\n return findCommonOffsetParent(element1, getRoot(element2).host);\n }\n}\n\n/**\n * Gets the scroll value of the given element in the given side (top and left)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {String} side `top` or `left`\n * @returns {number} amount of scrolled pixels\n */\nfunction getScroll(element) {\n var side = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'top';\n\n var upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft';\n var nodeName = element.nodeName;\n\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n var html = element.ownerDocument.documentElement;\n var scrollingElement = element.ownerDocument.scrollingElement || html;\n return scrollingElement[upperSide];\n }\n\n return element[upperSide];\n}\n\n/*\n * Sum or subtract the element scroll values (left and top) from a given rect object\n * @method\n * @memberof Popper.Utils\n * @param {Object} rect - Rect object you want to change\n * @param {HTMLElement} element - The element from the function reads the scroll values\n * @param {Boolean} subtract - set to true if you want to subtract the scroll values\n * @return {Object} rect - The modifier rect object\n */\nfunction includeScroll(rect, element) {\n var subtract = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n var scrollTop = getScroll(element, 'top');\n var scrollLeft = getScroll(element, 'left');\n var modifier = subtract ? -1 : 1;\n rect.top += scrollTop * modifier;\n rect.bottom += scrollTop * modifier;\n rect.left += scrollLeft * modifier;\n rect.right += scrollLeft * modifier;\n return rect;\n}\n\n/*\n * Helper to detect borders of a given element\n * @method\n * @memberof Popper.Utils\n * @param {CSSStyleDeclaration} styles\n * Result of `getStyleComputedProperty` on the given element\n * @param {String} axis - `x` or `y`\n * @return {number} borders - The borders size of the given axis\n */\n\nfunction getBordersSize(styles, axis) {\n var sideA = axis === 'x' ? 'Left' : 'Top';\n var sideB = sideA === 'Left' ? 'Right' : 'Bottom';\n\n return parseFloat(styles['border' + sideA + 'Width'], 10) + parseFloat(styles['border' + sideB + 'Width'], 10);\n}\n\nfunction getSize(axis, body, html, computedStyle) {\n return Math.max(body['offset' + axis], body['scroll' + axis], html['client' + axis], html['offset' + axis], html['scroll' + axis], isIE(10) ? parseInt(html['offset' + axis]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Top' : 'Left')]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Bottom' : 'Right')]) : 0);\n}\n\nfunction getWindowSizes(document) {\n var body = document.body;\n var html = document.documentElement;\n var computedStyle = isIE(10) && getComputedStyle(html);\n\n return {\n height: getSize('Height', body, html, computedStyle),\n width: getSize('Width', body, html, computedStyle)\n };\n}\n\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar createClass = function () {\n 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\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\n\n\n\n\nvar defineProperty = function (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\nvar _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/**\n * Given element offsets, generate an output similar to getBoundingClientRect\n * @method\n * @memberof Popper.Utils\n * @argument {Object} offsets\n * @returns {Object} ClientRect like output\n */\nfunction getClientRect(offsets) {\n return _extends({}, offsets, {\n right: offsets.left + offsets.width,\n bottom: offsets.top + offsets.height\n });\n}\n\n/**\n * Get bounding client rect of given element\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} element\n * @return {Object} client rect\n */\nfunction getBoundingClientRect(element) {\n var rect = {};\n\n // IE10 10 FIX: Please, don't ask, the element isn't\n // considered in DOM in some circumstances...\n // This isn't reproducible in IE10 compatibility mode of IE11\n try {\n if (isIE(10)) {\n rect = element.getBoundingClientRect();\n var scrollTop = getScroll(element, 'top');\n var scrollLeft = getScroll(element, 'left');\n rect.top += scrollTop;\n rect.left += scrollLeft;\n rect.bottom += scrollTop;\n rect.right += scrollLeft;\n } else {\n rect = element.getBoundingClientRect();\n }\n } catch (e) {}\n\n var result = {\n left: rect.left,\n top: rect.top,\n width: rect.right - rect.left,\n height: rect.bottom - rect.top\n };\n\n // subtract scrollbar size from sizes\n var sizes = element.nodeName === 'HTML' ? getWindowSizes(element.ownerDocument) : {};\n var width = sizes.width || element.clientWidth || result.right - result.left;\n var height = sizes.height || element.clientHeight || result.bottom - result.top;\n\n var horizScrollbar = element.offsetWidth - width;\n var vertScrollbar = element.offsetHeight - height;\n\n // if an hypothetical scrollbar is detected, we must be sure it's not a `border`\n // we make this check conditional for performance reasons\n if (horizScrollbar || vertScrollbar) {\n var styles = getStyleComputedProperty(element);\n horizScrollbar -= getBordersSize(styles, 'x');\n vertScrollbar -= getBordersSize(styles, 'y');\n\n result.width -= horizScrollbar;\n result.height -= vertScrollbar;\n }\n\n return getClientRect(result);\n}\n\nfunction getOffsetRectRelativeToArbitraryNode(children, parent) {\n var fixedPosition = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n var isIE10 = isIE(10);\n var isHTML = parent.nodeName === 'HTML';\n var childrenRect = getBoundingClientRect(children);\n var parentRect = getBoundingClientRect(parent);\n var scrollParent = getScrollParent(children);\n\n var styles = getStyleComputedProperty(parent);\n var borderTopWidth = parseFloat(styles.borderTopWidth, 10);\n var borderLeftWidth = parseFloat(styles.borderLeftWidth, 10);\n\n // In cases where the parent is fixed, we must ignore negative scroll in offset calc\n if (fixedPosition && isHTML) {\n parentRect.top = Math.max(parentRect.top, 0);\n parentRect.left = Math.max(parentRect.left, 0);\n }\n var offsets = getClientRect({\n top: childrenRect.top - parentRect.top - borderTopWidth,\n left: childrenRect.left - parentRect.left - borderLeftWidth,\n width: childrenRect.width,\n height: childrenRect.height\n });\n offsets.marginTop = 0;\n offsets.marginLeft = 0;\n\n // Subtract margins of documentElement in case it's being used as parent\n // we do this only on HTML because it's the only element that behaves\n // differently when margins are applied to it. The margins are included in\n // the box of the documentElement, in the other cases not.\n if (!isIE10 && isHTML) {\n var marginTop = parseFloat(styles.marginTop, 10);\n var marginLeft = parseFloat(styles.marginLeft, 10);\n\n offsets.top -= borderTopWidth - marginTop;\n offsets.bottom -= borderTopWidth - marginTop;\n offsets.left -= borderLeftWidth - marginLeft;\n offsets.right -= borderLeftWidth - marginLeft;\n\n // Attach marginTop and marginLeft because in some circumstances we may need them\n offsets.marginTop = marginTop;\n offsets.marginLeft = marginLeft;\n }\n\n if (isIE10 && !fixedPosition ? parent.contains(scrollParent) : parent === scrollParent && scrollParent.nodeName !== 'BODY') {\n offsets = includeScroll(offsets, parent);\n }\n\n return offsets;\n}\n\nfunction getViewportOffsetRectRelativeToArtbitraryNode(element) {\n var excludeScroll = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var html = element.ownerDocument.documentElement;\n var relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);\n var width = Math.max(html.clientWidth, window.innerWidth || 0);\n var height = Math.max(html.clientHeight, window.innerHeight || 0);\n\n var scrollTop = !excludeScroll ? getScroll(html) : 0;\n var scrollLeft = !excludeScroll ? getScroll(html, 'left') : 0;\n\n var offset = {\n top: scrollTop - relativeOffset.top + relativeOffset.marginTop,\n left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft,\n width: width,\n height: height\n };\n\n return getClientRect(offset);\n}\n\n/**\n * Check if the given element is fixed or is inside a fixed parent\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {Element} customContainer\n * @returns {Boolean} answer to \"isFixed?\"\n */\nfunction isFixed(element) {\n var nodeName = element.nodeName;\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n return false;\n }\n if (getStyleComputedProperty(element, 'position') === 'fixed') {\n return true;\n }\n return isFixed(getParentNode(element));\n}\n\n/**\n * Finds the first parent of an element that has a transformed property defined\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} first transformed parent or documentElement\n */\n\nfunction getFixedPositionOffsetParent(element) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element || !element.parentElement || isIE()) {\n return document.documentElement;\n }\n var el = element.parentElement;\n while (el && getStyleComputedProperty(el, 'transform') === 'none') {\n el = el.parentElement;\n }\n return el || document.documentElement;\n}\n\n/**\n * Computed the boundaries limits and return them\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} popper\n * @param {HTMLElement} reference\n * @param {number} padding\n * @param {HTMLElement} boundariesElement - Element used to define the boundaries\n * @param {Boolean} fixedPosition - Is in fixed position mode\n * @returns {Object} Coordinates of the boundaries\n */\nfunction getBoundaries(popper, reference, padding, boundariesElement) {\n var fixedPosition = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n\n // NOTE: 1 DOM access here\n\n var boundaries = { top: 0, left: 0 };\n var offsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, reference);\n\n // Handle viewport case\n if (boundariesElement === 'viewport') {\n boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent, fixedPosition);\n } else {\n // Handle other cases based on DOM element used as boundaries\n var boundariesNode = void 0;\n if (boundariesElement === 'scrollParent') {\n boundariesNode = getScrollParent(getParentNode(reference));\n if (boundariesNode.nodeName === 'BODY') {\n boundariesNode = popper.ownerDocument.documentElement;\n }\n } else if (boundariesElement === 'window') {\n boundariesNode = popper.ownerDocument.documentElement;\n } else {\n boundariesNode = boundariesElement;\n }\n\n var offsets = getOffsetRectRelativeToArbitraryNode(boundariesNode, offsetParent, fixedPosition);\n\n // In case of HTML, we need a different computation\n if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {\n var _getWindowSizes = getWindowSizes(popper.ownerDocument),\n height = _getWindowSizes.height,\n width = _getWindowSizes.width;\n\n boundaries.top += offsets.top - offsets.marginTop;\n boundaries.bottom = height + offsets.top;\n boundaries.left += offsets.left - offsets.marginLeft;\n boundaries.right = width + offsets.left;\n } else {\n // for all the other DOM elements, this one is good\n boundaries = offsets;\n }\n }\n\n // Add paddings\n padding = padding || 0;\n var isPaddingNumber = typeof padding === 'number';\n boundaries.left += isPaddingNumber ? padding : padding.left || 0;\n boundaries.top += isPaddingNumber ? padding : padding.top || 0;\n boundaries.right -= isPaddingNumber ? padding : padding.right || 0;\n boundaries.bottom -= isPaddingNumber ? padding : padding.bottom || 0;\n\n return boundaries;\n}\n\nfunction getArea(_ref) {\n var width = _ref.width,\n height = _ref.height;\n\n return width * height;\n}\n\n/**\n * Utility used to transform the `auto` placement to the placement with more\n * available space.\n * @method\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction computeAutoPlacement(placement, refRect, popper, reference, boundariesElement) {\n var padding = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 0;\n\n if (placement.indexOf('auto') === -1) {\n return placement;\n }\n\n var boundaries = getBoundaries(popper, reference, padding, boundariesElement);\n\n var rects = {\n top: {\n width: boundaries.width,\n height: refRect.top - boundaries.top\n },\n right: {\n width: boundaries.right - refRect.right,\n height: boundaries.height\n },\n bottom: {\n width: boundaries.width,\n height: boundaries.bottom - refRect.bottom\n },\n left: {\n width: refRect.left - boundaries.left,\n height: boundaries.height\n }\n };\n\n var sortedAreas = Object.keys(rects).map(function (key) {\n return _extends({\n key: key\n }, rects[key], {\n area: getArea(rects[key])\n });\n }).sort(function (a, b) {\n return b.area - a.area;\n });\n\n var filteredAreas = sortedAreas.filter(function (_ref2) {\n var width = _ref2.width,\n height = _ref2.height;\n return width >= popper.clientWidth && height >= popper.clientHeight;\n });\n\n var computedPlacement = filteredAreas.length > 0 ? filteredAreas[0].key : sortedAreas[0].key;\n\n var variation = placement.split('-')[1];\n\n return computedPlacement + (variation ? '-' + variation : '');\n}\n\n/**\n * Get offsets to the reference element\n * @method\n * @memberof Popper.Utils\n * @param {Object} state\n * @param {Element} popper - the popper element\n * @param {Element} reference - the reference element (the popper will be relative to this)\n * @param {Element} fixedPosition - is in fixed position mode\n * @returns {Object} An object containing the offsets which will be applied to the popper\n */\nfunction getReferenceOffsets(state, popper, reference) {\n var fixedPosition = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n\n var commonOffsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, reference);\n return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent, fixedPosition);\n}\n\n/**\n * Get the outer sizes of the given element (offset size + margins)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Object} object containing width and height properties\n */\nfunction getOuterSizes(element) {\n var window = element.ownerDocument.defaultView;\n var styles = window.getComputedStyle(element);\n var x = parseFloat(styles.marginTop || 0) + parseFloat(styles.marginBottom || 0);\n var y = parseFloat(styles.marginLeft || 0) + parseFloat(styles.marginRight || 0);\n var result = {\n width: element.offsetWidth + y,\n height: element.offsetHeight + x\n };\n return result;\n}\n\n/**\n * Get the opposite placement of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement\n * @returns {String} flipped placement\n */\nfunction getOppositePlacement(placement) {\n var hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}\n\n/**\n * Get offsets to the popper\n * @method\n * @memberof Popper.Utils\n * @param {Object} position - CSS position the Popper will get applied\n * @param {HTMLElement} popper - the popper element\n * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this)\n * @param {String} placement - one of the valid placement options\n * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper\n */\nfunction getPopperOffsets(popper, referenceOffsets, placement) {\n placement = placement.split('-')[0];\n\n // Get popper node sizes\n var popperRect = getOuterSizes(popper);\n\n // Add position, width and height to our offsets object\n var popperOffsets = {\n width: popperRect.width,\n height: popperRect.height\n };\n\n // depending by the popper placement we have to compute its offsets slightly differently\n var isHoriz = ['right', 'left'].indexOf(placement) !== -1;\n var mainSide = isHoriz ? 'top' : 'left';\n var secondarySide = isHoriz ? 'left' : 'top';\n var measurement = isHoriz ? 'height' : 'width';\n var secondaryMeasurement = !isHoriz ? 'height' : 'width';\n\n popperOffsets[mainSide] = referenceOffsets[mainSide] + referenceOffsets[measurement] / 2 - popperRect[measurement] / 2;\n if (placement === secondarySide) {\n popperOffsets[secondarySide] = referenceOffsets[secondarySide] - popperRect[secondaryMeasurement];\n } else {\n popperOffsets[secondarySide] = referenceOffsets[getOppositePlacement(secondarySide)];\n }\n\n return popperOffsets;\n}\n\n/**\n * Mimics the `find` method of Array\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nfunction find(arr, check) {\n // use native find if supported\n if (Array.prototype.find) {\n return arr.find(check);\n }\n\n // use `filter` to obtain the same behavior of `find`\n return arr.filter(check)[0];\n}\n\n/**\n * Return the index of the matching object\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nfunction findIndex(arr, prop, value) {\n // use native findIndex if supported\n if (Array.prototype.findIndex) {\n return arr.findIndex(function (cur) {\n return cur[prop] === value;\n });\n }\n\n // use `find` + `indexOf` if `findIndex` isn't supported\n var match = find(arr, function (obj) {\n return obj[prop] === value;\n });\n return arr.indexOf(match);\n}\n\n/**\n * Loop trough the list of modifiers and run them in order,\n * each of them will then edit the data object.\n * @method\n * @memberof Popper.Utils\n * @param {dataObject} data\n * @param {Array} modifiers\n * @param {String} ends - Optional modifier name used as stopper\n * @returns {dataObject}\n */\nfunction runModifiers(modifiers, data, ends) {\n var modifiersToRun = ends === undefined ? modifiers : modifiers.slice(0, findIndex(modifiers, 'name', ends));\n\n modifiersToRun.forEach(function (modifier) {\n if (modifier['function']) {\n // eslint-disable-line dot-notation\n console.warn('`modifier.function` is deprecated, use `modifier.fn`!');\n }\n var fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation\n if (modifier.enabled && isFunction(fn)) {\n // Add properties to offsets to make them a complete clientRect object\n // we do this before each modifier to make sure the previous one doesn't\n // mess with these values\n data.offsets.popper = getClientRect(data.offsets.popper);\n data.offsets.reference = getClientRect(data.offsets.reference);\n\n data = fn(data, modifier);\n }\n });\n\n return data;\n}\n\n/**\n * Updates the position of the popper, computing the new offsets and applying\n * the new style.<br />\n * Prefer `scheduleUpdate` over `update` because of performance reasons.\n * @method\n * @memberof Popper\n */\nfunction update() {\n // if popper is destroyed, don't perform any further update\n if (this.state.isDestroyed) {\n return;\n }\n\n var data = {\n instance: this,\n styles: {},\n arrowStyles: {},\n attributes: {},\n flipped: false,\n offsets: {}\n };\n\n // compute reference element offsets\n data.offsets.reference = getReferenceOffsets(this.state, this.popper, this.reference, this.options.positionFixed);\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n data.placement = computeAutoPlacement(this.options.placement, data.offsets.reference, this.popper, this.reference, this.options.modifiers.flip.boundariesElement, this.options.modifiers.flip.padding);\n\n // store the computed placement inside `originalPlacement`\n data.originalPlacement = data.placement;\n\n data.positionFixed = this.options.positionFixed;\n\n // compute the popper offsets\n data.offsets.popper = getPopperOffsets(this.popper, data.offsets.reference, data.placement);\n\n data.offsets.popper.position = this.options.positionFixed ? 'fixed' : 'absolute';\n\n // run the modifiers\n data = runModifiers(this.modifiers, data);\n\n // the first `update` will call `onCreate` callback\n // the other ones will call `onUpdate` callback\n if (!this.state.isCreated) {\n this.state.isCreated = true;\n this.options.onCreate(data);\n } else {\n this.options.onUpdate(data);\n }\n}\n\n/**\n * Helper used to know if the given modifier is enabled.\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean}\n */\nfunction isModifierEnabled(modifiers, modifierName) {\n return modifiers.some(function (_ref) {\n var name = _ref.name,\n enabled = _ref.enabled;\n return enabled && name === modifierName;\n });\n}\n\n/**\n * Get the prefixed supported property name\n * @method\n * @memberof Popper.Utils\n * @argument {String} property (camelCase)\n * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix)\n */\nfunction getSupportedPropertyName(property) {\n var prefixes = [false, 'ms', 'Webkit', 'Moz', 'O'];\n var upperProp = property.charAt(0).toUpperCase() + property.slice(1);\n\n for (var i = 0; i < prefixes.length; i++) {\n var prefix = prefixes[i];\n var toCheck = prefix ? '' + prefix + upperProp : property;\n if (typeof document.body.style[toCheck] !== 'undefined') {\n return toCheck;\n }\n }\n return null;\n}\n\n/**\n * Destroys the popper.\n * @method\n * @memberof Popper\n */\nfunction destroy() {\n this.state.isDestroyed = true;\n\n // touch DOM only if `applyStyle` modifier is enabled\n if (isModifierEnabled(this.modifiers, 'applyStyle')) {\n this.popper.removeAttribute('x-placement');\n this.popper.style.position = '';\n this.popper.style.top = '';\n this.popper.style.left = '';\n this.popper.style.right = '';\n this.popper.style.bottom = '';\n this.popper.style.willChange = '';\n this.popper.style[getSupportedPropertyName('transform')] = '';\n }\n\n this.disableEventListeners();\n\n // remove the popper if user explicity asked for the deletion on destroy\n // do not use `remove` because IE11 doesn't support it\n if (this.options.removeOnDestroy) {\n this.popper.parentNode.removeChild(this.popper);\n }\n return this;\n}\n\n/**\n * Get the window associated with the element\n * @argument {Element} element\n * @returns {Window}\n */\nfunction getWindow(element) {\n var ownerDocument = element.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView : window;\n}\n\nfunction attachToScrollParents(scrollParent, event, callback, scrollParents) {\n var isBody = scrollParent.nodeName === 'BODY';\n var target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent;\n target.addEventListener(event, callback, { passive: true });\n\n if (!isBody) {\n attachToScrollParents(getScrollParent(target.parentNode), event, callback, scrollParents);\n }\n scrollParents.push(target);\n}\n\n/**\n * Setup needed event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nfunction setupEventListeners(reference, options, state, updateBound) {\n // Resize event listener on window\n state.updateBound = updateBound;\n getWindow(reference).addEventListener('resize', state.updateBound, { passive: true });\n\n // Scroll event listener on scroll parents\n var scrollElement = getScrollParent(reference);\n attachToScrollParents(scrollElement, 'scroll', state.updateBound, state.scrollParents);\n state.scrollElement = scrollElement;\n state.eventsEnabled = true;\n\n return state;\n}\n\n/**\n * It will add resize/scroll events and start recalculating\n * position of the popper element when they are triggered.\n * @method\n * @memberof Popper\n */\nfunction enableEventListeners() {\n if (!this.state.eventsEnabled) {\n this.state = setupEventListeners(this.reference, this.options, this.state, this.scheduleUpdate);\n }\n}\n\n/**\n * Remove event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nfunction removeEventListeners(reference, state) {\n // Remove resize event listener on window\n getWindow(reference).removeEventListener('resize', state.updateBound);\n\n // Remove scroll event listener on scroll parents\n state.scrollParents.forEach(function (target) {\n target.removeEventListener('scroll', state.updateBound);\n });\n\n // Reset state\n state.updateBound = null;\n state.scrollParents = [];\n state.scrollElement = null;\n state.eventsEnabled = false;\n return state;\n}\n\n/**\n * It will remove resize/scroll events and won't recalculate popper position\n * when they are triggered. It also won't trigger `onUpdate` callback anymore,\n * unless you call `update` method manually.\n * @method\n * @memberof Popper\n */\nfunction disableEventListeners() {\n if (this.state.eventsEnabled) {\n cancelAnimationFrame(this.scheduleUpdate);\n this.state = removeEventListeners(this.reference, this.state);\n }\n}\n\n/**\n * Tells if a given input is a number\n * @method\n * @memberof Popper.Utils\n * @param {*} input to check\n * @return {Boolean}\n */\nfunction isNumeric(n) {\n return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);\n}\n\n/**\n * Set the style to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the style to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nfunction setStyles(element, styles) {\n Object.keys(styles).forEach(function (prop) {\n var unit = '';\n // add unit if the value is numeric and is one of the following\n if (['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !== -1 && isNumeric(styles[prop])) {\n unit = 'px';\n }\n element.style[prop] = styles[prop] + unit;\n });\n}\n\n/**\n * Set the attributes to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the attributes to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nfunction setAttributes(element, attributes) {\n Object.keys(attributes).forEach(function (prop) {\n var value = attributes[prop];\n if (value !== false) {\n element.setAttribute(prop, attributes[prop]);\n } else {\n element.removeAttribute(prop);\n }\n });\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} data.styles - List of style properties - values to apply to popper element\n * @argument {Object} data.attributes - List of attribute properties - values to apply to popper element\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The same data object\n */\nfunction applyStyle(data) {\n // any property present in `data.styles` will be applied to the popper,\n // in this way we can make the 3rd party modifiers add custom styles to it\n // Be aware, modifiers could override the properties defined in the previous\n // lines of this modifier!\n setStyles(data.instance.popper, data.styles);\n\n // any property present in `data.attributes` will be applied to the popper,\n // they will be set as HTML attributes of the element\n setAttributes(data.instance.popper, data.attributes);\n\n // if arrowElement is defined and arrowStyles has some properties\n if (data.arrowElement && Object.keys(data.arrowStyles).length) {\n setStyles(data.arrowElement, data.arrowStyles);\n }\n\n return data;\n}\n\n/**\n * Set the x-placement attribute before everything else because it could be used\n * to add margins to the popper margins needs to be calculated to get the\n * correct popper offsets.\n * @method\n * @memberof Popper.modifiers\n * @param {HTMLElement} reference - The reference element used to position the popper\n * @param {HTMLElement} popper - The HTML element used as popper\n * @param {Object} options - Popper.js options\n */\nfunction applyStyleOnLoad(reference, popper, options, modifierOptions, state) {\n // compute reference element offsets\n var referenceOffsets = getReferenceOffsets(state, popper, reference, options.positionFixed);\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n var placement = computeAutoPlacement(options.placement, referenceOffsets, popper, reference, options.modifiers.flip.boundariesElement, options.modifiers.flip.padding);\n\n popper.setAttribute('x-placement', placement);\n\n // Apply `position` to popper before anything else because\n // without the position applied we can't guarantee correct computations\n setStyles(popper, { position: options.positionFixed ? 'fixed' : 'absolute' });\n\n return options;\n}\n\n/**\n * @function\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Boolean} shouldRound - If the offsets should be rounded at all\n * @returns {Object} The popper's position offsets rounded\n *\n * The tale of pixel-perfect positioning. It's still not 100% perfect, but as\n * good as it can be within reason.\n * Discussion here: https://github.com/FezVrasta/popper.js/pull/715\n *\n * Low DPI screens cause a popper to be blurry if not using full pixels (Safari\n * as well on High DPI screens).\n *\n * Firefox prefers no rounding for positioning and does not have blurriness on\n * high DPI screens.\n *\n * Only horizontal placement and left/right values need to be considered.\n */\nfunction getRoundedOffsets(data, shouldRound) {\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n\n var isVertical = ['left', 'right'].indexOf(data.placement) !== -1;\n var isVariation = data.placement.indexOf('-') !== -1;\n var sameWidthOddness = reference.width % 2 === popper.width % 2;\n var bothOddWidth = reference.width % 2 === 1 && popper.width % 2 === 1;\n var noRound = function noRound(v) {\n return v;\n };\n\n var horizontalToInteger = !shouldRound ? noRound : isVertical || isVariation || sameWidthOddness ? Math.round : Math.floor;\n var verticalToInteger = !shouldRound ? noRound : Math.round;\n\n return {\n left: horizontalToInteger(bothOddWidth && !isVariation && shouldRound ? popper.left - 1 : popper.left),\n top: verticalToInteger(popper.top),\n bottom: verticalToInteger(popper.bottom),\n right: horizontalToInteger(popper.right)\n };\n}\n\nvar isFirefox = isBrowser && /Firefox/i.test(navigator.userAgent);\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction computeStyle(data, options) {\n var x = options.x,\n y = options.y;\n var popper = data.offsets.popper;\n\n // Remove this legacy support in Popper.js v2\n\n var legacyGpuAccelerationOption = find(data.instance.modifiers, function (modifier) {\n return modifier.name === 'applyStyle';\n }).gpuAcceleration;\n if (legacyGpuAccelerationOption !== undefined) {\n console.warn('WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!');\n }\n var gpuAcceleration = legacyGpuAccelerationOption !== undefined ? legacyGpuAccelerationOption : options.gpuAcceleration;\n\n var offsetParent = getOffsetParent(data.instance.popper);\n var offsetParentRect = getBoundingClientRect(offsetParent);\n\n // Styles\n var styles = {\n position: popper.position\n };\n\n var offsets = getRoundedOffsets(data, window.devicePixelRatio < 2 || !isFirefox);\n\n var sideA = x === 'bottom' ? 'top' : 'bottom';\n var sideB = y === 'right' ? 'left' : 'right';\n\n // if gpuAcceleration is set to `true` and transform is supported,\n // we use `translate3d` to apply the position to the popper we\n // automatically use the supported prefixed version if needed\n var prefixedProperty = getSupportedPropertyName('transform');\n\n // now, let's make a step back and look at this code closely (wtf?)\n // If the content of the popper grows once it's been positioned, it\n // may happen that the popper gets misplaced because of the new content\n // overflowing its reference element\n // To avoid this problem, we provide two options (x and y), which allow\n // the consumer to define the offset origin.\n // If we position a popper on top of a reference element, we can set\n // `x` to `top` to make the popper grow towards its top instead of\n // its bottom.\n var left = void 0,\n top = void 0;\n if (sideA === 'bottom') {\n // when offsetParent is <html> the positioning is relative to the bottom of the screen (excluding the scrollbar)\n // and not the bottom of the html element\n if (offsetParent.nodeName === 'HTML') {\n top = -offsetParent.clientHeight + offsets.bottom;\n } else {\n top = -offsetParentRect.height + offsets.bottom;\n }\n } else {\n top = offsets.top;\n }\n if (sideB === 'right') {\n if (offsetParent.nodeName === 'HTML') {\n left = -offsetParent.clientWidth + offsets.right;\n } else {\n left = -offsetParentRect.width + offsets.right;\n }\n } else {\n left = offsets.left;\n }\n if (gpuAcceleration && prefixedProperty) {\n styles[prefixedProperty] = 'translate3d(' + left + 'px, ' + top + 'px, 0)';\n styles[sideA] = 0;\n styles[sideB] = 0;\n styles.willChange = 'transform';\n } else {\n // othwerise, we use the standard `top`, `left`, `bottom` and `right` properties\n var invertTop = sideA === 'bottom' ? -1 : 1;\n var invertLeft = sideB === 'right' ? -1 : 1;\n styles[sideA] = top * invertTop;\n styles[sideB] = left * invertLeft;\n styles.willChange = sideA + ', ' + sideB;\n }\n\n // Attributes\n var attributes = {\n 'x-placement': data.placement\n };\n\n // Update `data` attributes, styles and arrowStyles\n data.attributes = _extends({}, attributes, data.attributes);\n data.styles = _extends({}, styles, data.styles);\n data.arrowStyles = _extends({}, data.offsets.arrow, data.arrowStyles);\n\n return data;\n}\n\n/**\n * Helper used to know if the given modifier depends from another one.<br />\n * It checks if the needed modifier is listed and enabled.\n * @method\n * @memberof Popper.Utils\n * @param {Array} modifiers - list of modifiers\n * @param {String} requestingName - name of requesting modifier\n * @param {String} requestedName - name of requested modifier\n * @returns {Boolean}\n */\nfunction isModifierRequired(modifiers, requestingName, requestedName) {\n var requesting = find(modifiers, function (_ref) {\n var name = _ref.name;\n return name === requestingName;\n });\n\n var isRequired = !!requesting && modifiers.some(function (modifier) {\n return modifier.name === requestedName && modifier.enabled && modifier.order < requesting.order;\n });\n\n if (!isRequired) {\n var _requesting = '`' + requestingName + '`';\n var requested = '`' + requestedName + '`';\n console.warn(requested + ' modifier is required by ' + _requesting + ' modifier in order to work, be sure to include it before ' + _requesting + '!');\n }\n return isRequired;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction arrow(data, options) {\n var _data$offsets$arrow;\n\n // arrow depends on keepTogether in order to work\n if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) {\n return data;\n }\n\n var arrowElement = options.element;\n\n // if arrowElement is a string, suppose it's a CSS selector\n if (typeof arrowElement === 'string') {\n arrowElement = data.instance.popper.querySelector(arrowElement);\n\n // if arrowElement is not found, don't run the modifier\n if (!arrowElement) {\n return data;\n }\n } else {\n // if the arrowElement isn't a query selector we must check that the\n // provided DOM node is child of its popper node\n if (!data.instance.popper.contains(arrowElement)) {\n console.warn('WARNING: `arrow.element` must be child of its popper element!');\n return data;\n }\n }\n\n var placement = data.placement.split('-')[0];\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var isVertical = ['left', 'right'].indexOf(placement) !== -1;\n\n var len = isVertical ? 'height' : 'width';\n var sideCapitalized = isVertical ? 'Top' : 'Left';\n var side = sideCapitalized.toLowerCase();\n var altSide = isVertical ? 'left' : 'top';\n var opSide = isVertical ? 'bottom' : 'right';\n var arrowElementSize = getOuterSizes(arrowElement)[len];\n\n //\n // extends keepTogether behavior making sure the popper and its\n // reference have enough pixels in conjunction\n //\n\n // top/left side\n if (reference[opSide] - arrowElementSize < popper[side]) {\n data.offsets.popper[side] -= popper[side] - (reference[opSide] - arrowElementSize);\n }\n // bottom/right side\n if (reference[side] + arrowElementSize > popper[opSide]) {\n data.offsets.popper[side] += reference[side] + arrowElementSize - popper[opSide];\n }\n data.offsets.popper = getClientRect(data.offsets.popper);\n\n // compute center of the popper\n var center = reference[side] + reference[len] / 2 - arrowElementSize / 2;\n\n // Compute the sideValue using the updated popper offsets\n // take popper margin in account because we don't have this info available\n var css = getStyleComputedProperty(data.instance.popper);\n var popperMarginSide = parseFloat(css['margin' + sideCapitalized], 10);\n var popperBorderSide = parseFloat(css['border' + sideCapitalized + 'Width'], 10);\n var sideValue = center - data.offsets.popper[side] - popperMarginSide - popperBorderSide;\n\n // prevent arrowElement from being placed not contiguously to its popper\n sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0);\n\n data.arrowElement = arrowElement;\n data.offsets.arrow = (_data$offsets$arrow = {}, defineProperty(_data$offsets$arrow, side, Math.round(sideValue)), defineProperty(_data$offsets$arrow, altSide, ''), _data$offsets$arrow);\n\n return data;\n}\n\n/**\n * Get the opposite placement variation of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement variation\n * @returns {String} flipped placement variation\n */\nfunction getOppositeVariation(variation) {\n if (variation === 'end') {\n return 'start';\n } else if (variation === 'start') {\n return 'end';\n }\n return variation;\n}\n\n/**\n * List of accepted placements to use as values of the `placement` option.<br />\n * Valid placements are:\n * - `auto`\n * - `top`\n * - `right`\n * - `bottom`\n * - `left`\n *\n * Each placement can have a variation from this list:\n * - `-start`\n * - `-end`\n *\n * Variations are interpreted easily if you think of them as the left to right\n * written languages. Horizontally (`top` and `bottom`), `start` is left and `end`\n * is right.<br />\n * Vertically (`left` and `right`), `start` is top and `end` is bottom.\n *\n * Some valid examples are:\n * - `top-end` (on top of reference, right aligned)\n * - `right-start` (on right of reference, top aligned)\n * - `bottom` (on bottom, centered)\n * - `auto-end` (on the side with more space available, alignment depends by placement)\n *\n * @static\n * @type {Array}\n * @enum {String}\n * @readonly\n * @method placements\n * @memberof Popper\n */\nvar placements = ['auto-start', 'auto', 'auto-end', 'top-start', 'top', 'top-end', 'right-start', 'right', 'right-end', 'bottom-end', 'bottom', 'bottom-start', 'left-end', 'left', 'left-start'];\n\n// Get rid of `auto` `auto-start` and `auto-end`\nvar validPlacements = placements.slice(3);\n\n/**\n * Given an initial placement, returns all the subsequent placements\n * clockwise (or counter-clockwise).\n *\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement - A valid placement (it accepts variations)\n * @argument {Boolean} counter - Set to true to walk the placements counterclockwise\n * @returns {Array} placements including their variations\n */\nfunction clockwise(placement) {\n var counter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var index = validPlacements.indexOf(placement);\n var arr = validPlacements.slice(index + 1).concat(validPlacements.slice(0, index));\n return counter ? arr.reverse() : arr;\n}\n\nvar BEHAVIORS = {\n FLIP: 'flip',\n CLOCKWISE: 'clockwise',\n COUNTERCLOCKWISE: 'counterclockwise'\n};\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction flip(data, options) {\n // if `inner` modifier is enabled, we can't use the `flip` modifier\n if (isModifierEnabled(data.instance.modifiers, 'inner')) {\n return data;\n }\n\n if (data.flipped && data.placement === data.originalPlacement) {\n // seems like flip is trying to loop, probably there's not enough space on any of the flippable sides\n return data;\n }\n\n var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, options.boundariesElement, data.positionFixed);\n\n var placement = data.placement.split('-')[0];\n var placementOpposite = getOppositePlacement(placement);\n var variation = data.placement.split('-')[1] || '';\n\n var flipOrder = [];\n\n switch (options.behavior) {\n case BEHAVIORS.FLIP:\n flipOrder = [placement, placementOpposite];\n break;\n case BEHAVIORS.CLOCKWISE:\n flipOrder = clockwise(placement);\n break;\n case BEHAVIORS.COUNTERCLOCKWISE:\n flipOrder = clockwise(placement, true);\n break;\n default:\n flipOrder = options.behavior;\n }\n\n flipOrder.forEach(function (step, index) {\n if (placement !== step || flipOrder.length === index + 1) {\n return data;\n }\n\n placement = data.placement.split('-')[0];\n placementOpposite = getOppositePlacement(placement);\n\n var popperOffsets = data.offsets.popper;\n var refOffsets = data.offsets.reference;\n\n // using floor because the reference offsets may contain decimals we are not going to consider here\n var floor = Math.floor;\n var overlapsRef = placement === 'left' && floor(popperOffsets.right) > floor(refOffsets.left) || placement === 'right' && floor(popperOffsets.left) < floor(refOffsets.right) || placement === 'top' && floor(popperOffsets.bottom) > floor(refOffsets.top) || placement === 'bottom' && floor(popperOffsets.top) < floor(refOffsets.bottom);\n\n var overflowsLeft = floor(popperOffsets.left) < floor(boundaries.left);\n var overflowsRight = floor(popperOffsets.right) > floor(boundaries.right);\n var overflowsTop = floor(popperOffsets.top) < floor(boundaries.top);\n var overflowsBottom = floor(popperOffsets.bottom) > floor(boundaries.bottom);\n\n var overflowsBoundaries = placement === 'left' && overflowsLeft || placement === 'right' && overflowsRight || placement === 'top' && overflowsTop || placement === 'bottom' && overflowsBottom;\n\n // flip the variation if required\n var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n var flippedVariation = !!options.flipVariations && (isVertical && variation === 'start' && overflowsLeft || isVertical && variation === 'end' && overflowsRight || !isVertical && variation === 'start' && overflowsTop || !isVertical && variation === 'end' && overflowsBottom);\n\n if (overlapsRef || overflowsBoundaries || flippedVariation) {\n // this boolean to detect any flip loop\n data.flipped = true;\n\n if (overlapsRef || overflowsBoundaries) {\n placement = flipOrder[index + 1];\n }\n\n if (flippedVariation) {\n variation = getOppositeVariation(variation);\n }\n\n data.placement = placement + (variation ? '-' + variation : '');\n\n // this object contains `position`, we want to preserve it along with\n // any additional property we may add in the future\n data.offsets.popper = _extends({}, data.offsets.popper, getPopperOffsets(data.instance.popper, data.offsets.reference, data.placement));\n\n data = runModifiers(data.instance.modifiers, data, 'flip');\n }\n });\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction keepTogether(data) {\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var placement = data.placement.split('-')[0];\n var floor = Math.floor;\n var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n var side = isVertical ? 'right' : 'bottom';\n var opSide = isVertical ? 'left' : 'top';\n var measurement = isVertical ? 'width' : 'height';\n\n if (popper[side] < floor(reference[opSide])) {\n data.offsets.popper[opSide] = floor(reference[opSide]) - popper[measurement];\n }\n if (popper[opSide] > floor(reference[side])) {\n data.offsets.popper[opSide] = floor(reference[side]);\n }\n\n return data;\n}\n\n/**\n * Converts a string containing value + unit into a px value number\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} str - Value + unit string\n * @argument {String} measurement - `height` or `width`\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @returns {Number|String}\n * Value in pixels, or original string if no values were extracted\n */\nfunction toValue(str, measurement, popperOffsets, referenceOffsets) {\n // separate value from unit\n var split = str.match(/((?:\\-|\\+)?\\d*\\.?\\d*)(.*)/);\n var value = +split[1];\n var unit = split[2];\n\n // If it's not a number it's an operator, I guess\n if (!value) {\n return str;\n }\n\n if (unit.indexOf('%') === 0) {\n var element = void 0;\n switch (unit) {\n case '%p':\n element = popperOffsets;\n break;\n case '%':\n case '%r':\n default:\n element = referenceOffsets;\n }\n\n var rect = getClientRect(element);\n return rect[measurement] / 100 * value;\n } else if (unit === 'vh' || unit === 'vw') {\n // if is a vh or vw, we calculate the size based on the viewport\n var size = void 0;\n if (unit === 'vh') {\n size = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);\n } else {\n size = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);\n }\n return size / 100 * value;\n } else {\n // if is an explicit pixel unit, we get rid of the unit and keep the value\n // if is an implicit unit, it's px, and we return just the value\n return value;\n }\n}\n\n/**\n * Parse an `offset` string to extrapolate `x` and `y` numeric offsets.\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} offset\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @argument {String} basePlacement\n * @returns {Array} a two cells array with x and y offsets in numbers\n */\nfunction parseOffset(offset, popperOffsets, referenceOffsets, basePlacement) {\n var offsets = [0, 0];\n\n // Use height if placement is left or right and index is 0 otherwise use width\n // in this way the first offset will use an axis and the second one\n // will use the other one\n var useHeight = ['right', 'left'].indexOf(basePlacement) !== -1;\n\n // Split the offset string to obtain a list of values and operands\n // The regex addresses values with the plus or minus sign in front (+10, -20, etc)\n var fragments = offset.split(/(\\+|\\-)/).map(function (frag) {\n return frag.trim();\n });\n\n // Detect if the offset string contains a pair of values or a single one\n // they could be separated by comma or space\n var divider = fragments.indexOf(find(fragments, function (frag) {\n return frag.search(/,|\\s/) !== -1;\n }));\n\n if (fragments[divider] && fragments[divider].indexOf(',') === -1) {\n console.warn('Offsets separated by white space(s) are deprecated, use a comma (,) instead.');\n }\n\n // If divider is found, we divide the list of values and operands to divide\n // them by ofset X and Y.\n var splitRegex = /\\s*,\\s*|\\s+/;\n var ops = divider !== -1 ? [fragments.slice(0, divider).concat([fragments[divider].split(splitRegex)[0]]), [fragments[divider].split(splitRegex)[1]].concat(fragments.slice(divider + 1))] : [fragments];\n\n // Convert the values with units to absolute pixels to allow our computations\n ops = ops.map(function (op, index) {\n // Most of the units rely on the orientation of the popper\n var measurement = (index === 1 ? !useHeight : useHeight) ? 'height' : 'width';\n var mergeWithPrevious = false;\n return op\n // This aggregates any `+` or `-` sign that aren't considered operators\n // e.g.: 10 + +5 => [10, +, +5]\n .reduce(function (a, b) {\n if (a[a.length - 1] === '' && ['+', '-'].indexOf(b) !== -1) {\n a[a.length - 1] = b;\n mergeWithPrevious = true;\n return a;\n } else if (mergeWithPrevious) {\n a[a.length - 1] += b;\n mergeWithPrevious = false;\n return a;\n } else {\n return a.concat(b);\n }\n }, [])\n // Here we convert the string values into number values (in px)\n .map(function (str) {\n return toValue(str, measurement, popperOffsets, referenceOffsets);\n });\n });\n\n // Loop trough the offsets arrays and execute the operations\n ops.forEach(function (op, index) {\n op.forEach(function (frag, index2) {\n if (isNumeric(frag)) {\n offsets[index] += frag * (op[index2 - 1] === '-' ? -1 : 1);\n }\n });\n });\n return offsets;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @argument {Number|String} options.offset=0\n * The offset value as described in the modifier description\n * @returns {Object} The data object, properly modified\n */\nfunction offset(data, _ref) {\n var offset = _ref.offset;\n var placement = data.placement,\n _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var basePlacement = placement.split('-')[0];\n\n var offsets = void 0;\n if (isNumeric(+offset)) {\n offsets = [+offset, 0];\n } else {\n offsets = parseOffset(offset, popper, reference, basePlacement);\n }\n\n if (basePlacement === 'left') {\n popper.top += offsets[0];\n popper.left -= offsets[1];\n } else if (basePlacement === 'right') {\n popper.top += offsets[0];\n popper.left += offsets[1];\n } else if (basePlacement === 'top') {\n popper.left += offsets[0];\n popper.top -= offsets[1];\n } else if (basePlacement === 'bottom') {\n popper.left += offsets[0];\n popper.top += offsets[1];\n }\n\n data.popper = popper;\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction preventOverflow(data, options) {\n var boundariesElement = options.boundariesElement || getOffsetParent(data.instance.popper);\n\n // If offsetParent is the reference element, we really want to\n // go one step up and use the next offsetParent as reference to\n // avoid to make this modifier completely useless and look like broken\n if (data.instance.reference === boundariesElement) {\n boundariesElement = getOffsetParent(boundariesElement);\n }\n\n // NOTE: DOM access here\n // resets the popper's position so that the document size can be calculated excluding\n // the size of the popper element itself\n var transformProp = getSupportedPropertyName('transform');\n var popperStyles = data.instance.popper.style; // assignment to help minification\n var top = popperStyles.top,\n left = popperStyles.left,\n transform = popperStyles[transformProp];\n\n popperStyles.top = '';\n popperStyles.left = '';\n popperStyles[transformProp] = '';\n\n var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, boundariesElement, data.positionFixed);\n\n // NOTE: DOM access here\n // restores the original style properties after the offsets have been computed\n popperStyles.top = top;\n popperStyles.left = left;\n popperStyles[transformProp] = transform;\n\n options.boundaries = boundaries;\n\n var order = options.priority;\n var popper = data.offsets.popper;\n\n var check = {\n primary: function primary(placement) {\n var value = popper[placement];\n if (popper[placement] < boundaries[placement] && !options.escapeWithReference) {\n value = Math.max(popper[placement], boundaries[placement]);\n }\n return defineProperty({}, placement, value);\n },\n secondary: function secondary(placement) {\n var mainSide = placement === 'right' ? 'left' : 'top';\n var value = popper[mainSide];\n if (popper[placement] > boundaries[placement] && !options.escapeWithReference) {\n value = Math.min(popper[mainSide], boundaries[placement] - (placement === 'right' ? popper.width : popper.height));\n }\n return defineProperty({}, mainSide, value);\n }\n };\n\n order.forEach(function (placement) {\n var side = ['left', 'top'].indexOf(placement) !== -1 ? 'primary' : 'secondary';\n popper = _extends({}, popper, check[side](placement));\n });\n\n data.offsets.popper = popper;\n\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction shift(data) {\n var placement = data.placement;\n var basePlacement = placement.split('-')[0];\n var shiftvariation = placement.split('-')[1];\n\n // if shift shiftvariation is specified, run the modifier\n if (shiftvariation) {\n var _data$offsets = data.offsets,\n reference = _data$offsets.reference,\n popper = _data$offsets.popper;\n\n var isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1;\n var side = isVertical ? 'left' : 'top';\n var measurement = isVertical ? 'width' : 'height';\n\n var shiftOffsets = {\n start: defineProperty({}, side, reference[side]),\n end: defineProperty({}, side, reference[side] + reference[measurement] - popper[measurement])\n };\n\n data.offsets.popper = _extends({}, popper, shiftOffsets[shiftvariation]);\n }\n\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction hide(data) {\n if (!isModifierRequired(data.instance.modifiers, 'hide', 'preventOverflow')) {\n return data;\n }\n\n var refRect = data.offsets.reference;\n var bound = find(data.instance.modifiers, function (modifier) {\n return modifier.name === 'preventOverflow';\n }).boundaries;\n\n if (refRect.bottom < bound.top || refRect.left > bound.right || refRect.top > bound.bottom || refRect.right < bound.left) {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === true) {\n return data;\n }\n\n data.hide = true;\n data.attributes['x-out-of-boundaries'] = '';\n } else {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === false) {\n return data;\n }\n\n data.hide = false;\n data.attributes['x-out-of-boundaries'] = false;\n }\n\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction inner(data) {\n var placement = data.placement;\n var basePlacement = placement.split('-')[0];\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var isHoriz = ['left', 'right'].indexOf(basePlacement) !== -1;\n\n var subtractLength = ['top', 'left'].indexOf(basePlacement) === -1;\n\n popper[isHoriz ? 'left' : 'top'] = reference[basePlacement] - (subtractLength ? popper[isHoriz ? 'width' : 'height'] : 0);\n\n data.placement = getOppositePlacement(placement);\n data.offsets.popper = getClientRect(popper);\n\n return data;\n}\n\n/**\n * Modifier function, each modifier can have a function of this type assigned\n * to its `fn` property.<br />\n * These functions will be called on each update, this means that you must\n * make sure they are performant enough to avoid performance bottlenecks.\n *\n * @function ModifierFn\n * @argument {dataObject} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {dataObject} The data object, properly modified\n */\n\n/**\n * Modifiers are plugins used to alter the behavior of your poppers.<br />\n * Popper.js uses a set of 9 modifiers to provide all the basic functionalities\n * needed by the library.\n *\n * Usually you don't want to override the `order`, `fn` and `onLoad` props.\n * All the other properties are configurations that could be tweaked.\n * @namespace modifiers\n */\nvar modifiers = {\n /**\n * Modifier used to shift the popper on the start or end of its reference\n * element.<br />\n * It will read the variation of the `placement` property.<br />\n * It can be one either `-end` or `-start`.\n * @memberof modifiers\n * @inner\n */\n shift: {\n /** @prop {number} order=100 - Index used to define the order of execution */\n order: 100,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: shift\n },\n\n /**\n * The `offset` modifier can shift your popper on both its axis.\n *\n * It accepts the following units:\n * - `px` or unit-less, interpreted as pixels\n * - `%` or `%r`, percentage relative to the length of the reference element\n * - `%p`, percentage relative to the length of the popper element\n * - `vw`, CSS viewport width unit\n * - `vh`, CSS viewport height unit\n *\n * For length is intended the main axis relative to the placement of the popper.<br />\n * This means that if the placement is `top` or `bottom`, the length will be the\n * `width`. In case of `left` or `right`, it will be the `height`.\n *\n * You can provide a single value (as `Number` or `String`), or a pair of values\n * as `String` divided by a comma or one (or more) white spaces.<br />\n * The latter is a deprecated method because it leads to confusion and will be\n * removed in v2.<br />\n * Additionally, it accepts additions and subtractions between different units.\n * Note that multiplications and divisions aren't supported.\n *\n * Valid examples are:\n * ```\n * 10\n * '10%'\n * '10, 10'\n * '10%, 10'\n * '10 + 10%'\n * '10 - 5vh + 3%'\n * '-10px + 5vh, 5px - 6%'\n * ```\n * > **NB**: If you desire to apply offsets to your poppers in a way that may make them overlap\n * > with their reference element, unfortunately, you will have to disable the `flip` modifier.\n * > You can read more on this at this [issue](https://github.com/FezVrasta/popper.js/issues/373).\n *\n * @memberof modifiers\n * @inner\n */\n offset: {\n /** @prop {number} order=200 - Index used to define the order of execution */\n order: 200,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: offset,\n /** @prop {Number|String} offset=0\n * The offset value as described in the modifier description\n */\n offset: 0\n },\n\n /**\n * Modifier used to prevent the popper from being positioned outside the boundary.\n *\n * A scenario exists where the reference itself is not within the boundaries.<br />\n * We can say it has \"escaped the boundaries\" — or just \"escaped\".<br />\n * In this case we need to decide whether the popper should either:\n *\n * - detach from the reference and remain \"trapped\" in the boundaries, or\n * - if it should ignore the boundary and \"escape with its reference\"\n *\n * When `escapeWithReference` is set to`true` and reference is completely\n * outside its boundaries, the popper will overflow (or completely leave)\n * the boundaries in order to remain attached to the edge of the reference.\n *\n * @memberof modifiers\n * @inner\n */\n preventOverflow: {\n /** @prop {number} order=300 - Index used to define the order of execution */\n order: 300,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: preventOverflow,\n /**\n * @prop {Array} [priority=['left','right','top','bottom']]\n * Popper will try to prevent overflow following these priorities by default,\n * then, it could overflow on the left and on top of the `boundariesElement`\n */\n priority: ['left', 'right', 'top', 'bottom'],\n /**\n * @prop {number} padding=5\n * Amount of pixel used to define a minimum distance between the boundaries\n * and the popper. This makes sure the popper always has a little padding\n * between the edges of its container\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='scrollParent'\n * Boundaries used by the modifier. Can be `scrollParent`, `window`,\n * `viewport` or any DOM element.\n */\n boundariesElement: 'scrollParent'\n },\n\n /**\n * Modifier used to make sure the reference and its popper stay near each other\n * without leaving any gap between the two. Especially useful when the arrow is\n * enabled and you want to ensure that it points to its reference element.\n * It cares only about the first axis. You can still have poppers with margin\n * between the popper and its reference element.\n * @memberof modifiers\n * @inner\n */\n keepTogether: {\n /** @prop {number} order=400 - Index used to define the order of execution */\n order: 400,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: keepTogether\n },\n\n /**\n * This modifier is used to move the `arrowElement` of the popper to make\n * sure it is positioned between the reference element and its popper element.\n * It will read the outer size of the `arrowElement` node to detect how many\n * pixels of conjunction are needed.\n *\n * It has no effect if no `arrowElement` is provided.\n * @memberof modifiers\n * @inner\n */\n arrow: {\n /** @prop {number} order=500 - Index used to define the order of execution */\n order: 500,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: arrow,\n /** @prop {String|HTMLElement} element='[x-arrow]' - Selector or node used as arrow */\n element: '[x-arrow]'\n },\n\n /**\n * Modifier used to flip the popper's placement when it starts to overlap its\n * reference element.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n *\n * **NOTE:** this modifier will interrupt the current update cycle and will\n * restart it if it detects the need to flip the placement.\n * @memberof modifiers\n * @inner\n */\n flip: {\n /** @prop {number} order=600 - Index used to define the order of execution */\n order: 600,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: flip,\n /**\n * @prop {String|Array} behavior='flip'\n * The behavior used to change the popper's placement. It can be one of\n * `flip`, `clockwise`, `counterclockwise` or an array with a list of valid\n * placements (with optional variations)\n */\n behavior: 'flip',\n /**\n * @prop {number} padding=5\n * The popper will flip if it hits the edges of the `boundariesElement`\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='viewport'\n * The element which will define the boundaries of the popper position.\n * The popper will never be placed outside of the defined boundaries\n * (except if `keepTogether` is enabled)\n */\n boundariesElement: 'viewport'\n },\n\n /**\n * Modifier used to make the popper flow toward the inner of the reference element.\n * By default, when this modifier is disabled, the popper will be placed outside\n * the reference element.\n * @memberof modifiers\n * @inner\n */\n inner: {\n /** @prop {number} order=700 - Index used to define the order of execution */\n order: 700,\n /** @prop {Boolean} enabled=false - Whether the modifier is enabled or not */\n enabled: false,\n /** @prop {ModifierFn} */\n fn: inner\n },\n\n /**\n * Modifier used to hide the popper when its reference element is outside of the\n * popper boundaries. It will set a `x-out-of-boundaries` attribute which can\n * be used to hide with a CSS selector the popper when its reference is\n * out of boundaries.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n * @memberof modifiers\n * @inner\n */\n hide: {\n /** @prop {number} order=800 - Index used to define the order of execution */\n order: 800,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: hide\n },\n\n /**\n * Computes the style that will be applied to the popper element to gets\n * properly positioned.\n *\n * Note that this modifier will not touch the DOM, it just prepares the styles\n * so that `applyStyle` modifier can apply it. This separation is useful\n * in case you need to replace `applyStyle` with a custom implementation.\n *\n * This modifier has `850` as `order` value to maintain backward compatibility\n * with previous versions of Popper.js. Expect the modifiers ordering method\n * to change in future major versions of the library.\n *\n * @memberof modifiers\n * @inner\n */\n computeStyle: {\n /** @prop {number} order=850 - Index used to define the order of execution */\n order: 850,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: computeStyle,\n /**\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3D transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties\n */\n gpuAcceleration: true,\n /**\n * @prop {string} [x='bottom']\n * Where to anchor the X axis (`bottom` or `top`). AKA X offset origin.\n * Change this if your popper should grow in a direction different from `bottom`\n */\n x: 'bottom',\n /**\n * @prop {string} [x='left']\n * Where to anchor the Y axis (`left` or `right`). AKA Y offset origin.\n * Change this if your popper should grow in a direction different from `right`\n */\n y: 'right'\n },\n\n /**\n * Applies the computed styles to the popper element.\n *\n * All the DOM manipulations are limited to this modifier. This is useful in case\n * you want to integrate Popper.js inside a framework or view library and you\n * want to delegate all the DOM manipulations to it.\n *\n * Note that if you disable this modifier, you must make sure the popper element\n * has its position set to `absolute` before Popper.js can do its work!\n *\n * Just disable this modifier and define your own to achieve the desired effect.\n *\n * @memberof modifiers\n * @inner\n */\n applyStyle: {\n /** @prop {number} order=900 - Index used to define the order of execution */\n order: 900,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: applyStyle,\n /** @prop {Function} */\n onLoad: applyStyleOnLoad,\n /**\n * @deprecated since version 1.10.0, the property moved to `computeStyle` modifier\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3D transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties\n */\n gpuAcceleration: undefined\n }\n};\n\n/**\n * The `dataObject` is an object containing all the information used by Popper.js.\n * This object is passed to modifiers and to the `onCreate` and `onUpdate` callbacks.\n * @name dataObject\n * @property {Object} data.instance The Popper.js instance\n * @property {String} data.placement Placement applied to popper\n * @property {String} data.originalPlacement Placement originally defined on init\n * @property {Boolean} data.flipped True if popper has been flipped by flip modifier\n * @property {Boolean} data.hide True if the reference element is out of boundaries, useful to know when to hide the popper\n * @property {HTMLElement} data.arrowElement Node used as arrow by arrow modifier\n * @property {Object} data.styles Any CSS property defined here will be applied to the popper. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.arrowStyles Any CSS property defined here will be applied to the popper arrow. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.boundaries Offsets of the popper boundaries\n * @property {Object} data.offsets The measurements of popper, reference and arrow elements\n * @property {Object} data.offsets.popper `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.reference `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.arrow] `top` and `left` offsets, only one of them will be different from 0\n */\n\n/**\n * Default options provided to Popper.js constructor.<br />\n * These can be overridden using the `options` argument of Popper.js.<br />\n * To override an option, simply pass an object with the same\n * structure of the `options` object, as the 3rd argument. For example:\n * ```\n * new Popper(ref, pop, {\n * modifiers: {\n * preventOverflow: { enabled: false }\n * }\n * })\n * ```\n * @type {Object}\n * @static\n * @memberof Popper\n */\nvar Defaults = {\n /**\n * Popper's placement.\n * @prop {Popper.placements} placement='bottom'\n */\n placement: 'bottom',\n\n /**\n * Set this to true if you want popper to position it self in 'fixed' mode\n * @prop {Boolean} positionFixed=false\n */\n positionFixed: false,\n\n /**\n * Whether events (resize, scroll) are initially enabled.\n * @prop {Boolean} eventsEnabled=true\n */\n eventsEnabled: true,\n\n /**\n * Set to true if you want to automatically remove the popper when\n * you call the `destroy` method.\n * @prop {Boolean} removeOnDestroy=false\n */\n removeOnDestroy: false,\n\n /**\n * Callback called when the popper is created.<br />\n * By default, it is set to no-op.<br />\n * Access Popper.js instance with `data.instance`.\n * @prop {onCreate}\n */\n onCreate: function onCreate() {},\n\n /**\n * Callback called when the popper is updated. This callback is not called\n * on the initialization/creation of the popper, but only on subsequent\n * updates.<br />\n * By default, it is set to no-op.<br />\n * Access Popper.js instance with `data.instance`.\n * @prop {onUpdate}\n */\n onUpdate: function onUpdate() {},\n\n /**\n * List of modifiers used to modify the offsets before they are applied to the popper.\n * They provide most of the functionalities of Popper.js.\n * @prop {modifiers}\n */\n modifiers: modifiers\n};\n\n/**\n * @callback onCreate\n * @param {dataObject} data\n */\n\n/**\n * @callback onUpdate\n * @param {dataObject} data\n */\n\n// Utils\n// Methods\nvar Popper = function () {\n /**\n * Creates a new Popper.js instance.\n * @class Popper\n * @param {HTMLElement|referenceObject} reference - The reference element used to position the popper\n * @param {HTMLElement} popper - The HTML element used as the popper\n * @param {Object} options - Your custom options to override the ones defined in [Defaults](#defaults)\n * @return {Object} instance - The generated Popper.js instance\n */\n function Popper(reference, popper) {\n var _this = this;\n\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n classCallCheck(this, Popper);\n\n this.scheduleUpdate = function () {\n return requestAnimationFrame(_this.update);\n };\n\n // make update() debounced, so that it only runs at most once-per-tick\n this.update = debounce(this.update.bind(this));\n\n // with {} we create a new object with the options inside it\n this.options = _extends({}, Popper.Defaults, options);\n\n // init state\n this.state = {\n isDestroyed: false,\n isCreated: false,\n scrollParents: []\n };\n\n // get reference and popper elements (allow jQuery wrappers)\n this.reference = reference && reference.jquery ? reference[0] : reference;\n this.popper = popper && popper.jquery ? popper[0] : popper;\n\n // Deep merge modifiers options\n this.options.modifiers = {};\n Object.keys(_extends({}, Popper.Defaults.modifiers, options.modifiers)).forEach(function (name) {\n _this.options.modifiers[name] = _extends({}, Popper.Defaults.modifiers[name] || {}, options.modifiers ? options.modifiers[name] : {});\n });\n\n // Refactoring modifiers' list (Object => Array)\n this.modifiers = Object.keys(this.options.modifiers).map(function (name) {\n return _extends({\n name: name\n }, _this.options.modifiers[name]);\n })\n // sort the modifiers by order\n .sort(function (a, b) {\n return a.order - b.order;\n });\n\n // modifiers have the ability to execute arbitrary code when Popper.js get inited\n // such code is executed in the same order of its modifier\n // they could add new properties to their options configuration\n // BE AWARE: don't add options to `options.modifiers.name` but to `modifierOptions`!\n this.modifiers.forEach(function (modifierOptions) {\n if (modifierOptions.enabled && isFunction(modifierOptions.onLoad)) {\n modifierOptions.onLoad(_this.reference, _this.popper, _this.options, modifierOptions, _this.state);\n }\n });\n\n // fire the first update to position the popper in the right place\n this.update();\n\n var eventsEnabled = this.options.eventsEnabled;\n if (eventsEnabled) {\n // setup event listeners, they will take care of update the position in specific situations\n this.enableEventListeners();\n }\n\n this.state.eventsEnabled = eventsEnabled;\n }\n\n // We can't use class properties because they don't get listed in the\n // class prototype and break stuff like Sinon stubs\n\n\n createClass(Popper, [{\n key: 'update',\n value: function update$$1() {\n return update.call(this);\n }\n }, {\n key: 'destroy',\n value: function destroy$$1() {\n return destroy.call(this);\n }\n }, {\n key: 'enableEventListeners',\n value: function enableEventListeners$$1() {\n return enableEventListeners.call(this);\n }\n }, {\n key: 'disableEventListeners',\n value: function disableEventListeners$$1() {\n return disableEventListeners.call(this);\n }\n\n /**\n * Schedules an update. It will run on the next UI update available.\n * @method scheduleUpdate\n * @memberof Popper\n */\n\n\n /**\n * Collection of utilities useful when writing custom modifiers.\n * Starting from version 1.7, this method is available only if you\n * include `popper-utils.js` before `popper.js`.\n *\n * **DEPRECATION**: This way to access PopperUtils is deprecated\n * and will be removed in v2! Use the PopperUtils module directly instead.\n * Due to the high instability of the methods contained in Utils, we can't\n * guarantee them to follow semver. Use them at your own risk!\n * @static\n * @private\n * @type {Object}\n * @deprecated since version 1.8\n * @member Utils\n * @memberof Popper\n */\n\n }]);\n return Popper;\n}();\n\n/**\n * The `referenceObject` is an object that provides an interface compatible with Popper.js\n * and lets you use it as replacement of a real DOM node.<br />\n * You can use this method to position a popper relatively to a set of coordinates\n * in case you don't have a DOM node to use as reference.\n *\n * ```\n * new Popper(referenceObject, popperNode);\n * ```\n *\n * NB: This feature isn't supported in Internet Explorer 10.\n * @name referenceObject\n * @property {Function} data.getBoundingClientRect\n * A function that returns a set of coordinates compatible with the native `getBoundingClientRect` method.\n * @property {number} data.clientWidth\n * An ES6 getter that will return the width of the virtual reference element.\n * @property {number} data.clientHeight\n * An ES6 getter that will return the height of the virtual reference element.\n */\n\n\nPopper.Utils = (typeof window !== 'undefined' ? window : global).PopperUtils;\nPopper.placements = placements;\nPopper.Defaults = Defaults;\n\nexport default Popper;\n//# sourceMappingURL=popper.js.map\n","// @flow\n'use strict';\n\nvar key = '__global_unique_id__';\n\nmodule.exports = function() {\n return global[key] = (global[key] || 0) + 1;\n};\n","\"use strict\";\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\nfunction makeEmptyFunction(arg) {\n return function () {\n return arg;\n };\n}\n\n/**\n * This function accepts and discards inputs; it has no side effects. This is\n * primarily useful idiomatically for overridable function endpoints which\n * always need to be callable, since JS lacks a null-call idiom ala Cocoa.\n */\nvar emptyFunction = function emptyFunction() {};\n\nemptyFunction.thatReturns = makeEmptyFunction;\nemptyFunction.thatReturnsFalse = makeEmptyFunction(false);\nemptyFunction.thatReturnsTrue = makeEmptyFunction(true);\nemptyFunction.thatReturnsNull = makeEmptyFunction(null);\nemptyFunction.thatReturnsThis = function () {\n return this;\n};\nemptyFunction.thatReturnsArgument = function (arg) {\n return arg;\n};\n\nmodule.exports = emptyFunction;","'use strict';\n\nexports.__esModule = true;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _gud = require('gud');\n\nvar _gud2 = _interopRequireDefault(_gud);\n\nvar _warning = require('fbjs/lib/warning');\n\nvar _warning2 = _interopRequireDefault(_warning);\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 MAX_SIGNED_31_BIT_INT = 1073741823;\n\n// Inlined Object.is polyfill.\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\nfunction objectIs(x, y) {\n if (x === y) {\n return x !== 0 || 1 / x === 1 / y;\n } else {\n return x !== x && y !== y;\n }\n}\n\nfunction createEventEmitter(value) {\n var handlers = [];\n return {\n on: function on(handler) {\n handlers.push(handler);\n },\n off: function off(handler) {\n handlers = handlers.filter(function (h) {\n return h !== handler;\n });\n },\n get: function get() {\n return value;\n },\n set: function set(newValue, changedBits) {\n value = newValue;\n handlers.forEach(function (handler) {\n return handler(value, changedBits);\n });\n }\n };\n}\n\nfunction onlyChild(children) {\n return Array.isArray(children) ? children[0] : children;\n}\n\nfunction createReactContext(defaultValue, calculateChangedBits) {\n var _Provider$childContex, _Consumer$contextType;\n\n var contextProp = '__create-react-context-' + (0, _gud2.default)() + '__';\n\n var Provider = function (_Component) {\n _inherits(Provider, _Component);\n\n function Provider() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, Provider);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _Component.call.apply(_Component, [this].concat(args))), _this), _this.emitter = createEventEmitter(_this.props.value), _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n Provider.prototype.getChildContext = function getChildContext() {\n var _ref;\n\n return _ref = {}, _ref[contextProp] = this.emitter, _ref;\n };\n\n Provider.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n if (this.props.value !== nextProps.value) {\n var oldValue = this.props.value;\n var newValue = nextProps.value;\n var changedBits = void 0;\n\n if (objectIs(oldValue, newValue)) {\n changedBits = 0; // No change\n } else {\n changedBits = typeof calculateChangedBits === 'function' ? calculateChangedBits(oldValue, newValue) : MAX_SIGNED_31_BIT_INT;\n if (process.env.NODE_ENV !== 'production') {\n (0, _warning2.default)((changedBits & MAX_SIGNED_31_BIT_INT) === changedBits, 'calculateChangedBits: Expected the return value to be a ' + '31-bit integer. Instead received: %s', changedBits);\n }\n\n changedBits |= 0;\n\n if (changedBits !== 0) {\n this.emitter.set(nextProps.value, changedBits);\n }\n }\n }\n };\n\n Provider.prototype.render = function render() {\n return this.props.children;\n };\n\n return Provider;\n }(_react.Component);\n\n Provider.childContextTypes = (_Provider$childContex = {}, _Provider$childContex[contextProp] = _propTypes2.default.object.isRequired, _Provider$childContex);\n\n var Consumer = function (_Component2) {\n _inherits(Consumer, _Component2);\n\n function Consumer() {\n var _temp2, _this2, _ret2;\n\n _classCallCheck(this, Consumer);\n\n for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return _ret2 = (_temp2 = (_this2 = _possibleConstructorReturn(this, _Component2.call.apply(_Component2, [this].concat(args))), _this2), _this2.state = {\n value: _this2.getValue()\n }, _this2.onUpdate = function (newValue, changedBits) {\n var observedBits = _this2.observedBits | 0;\n if ((observedBits & changedBits) !== 0) {\n _this2.setState({ value: _this2.getValue() });\n }\n }, _temp2), _possibleConstructorReturn(_this2, _ret2);\n }\n\n Consumer.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n var observedBits = nextProps.observedBits;\n\n this.observedBits = observedBits === undefined || observedBits === null ? MAX_SIGNED_31_BIT_INT // Subscribe to all changes by default\n : observedBits;\n };\n\n Consumer.prototype.componentDidMount = function componentDidMount() {\n if (this.context[contextProp]) {\n this.context[contextProp].on(this.onUpdate);\n }\n var observedBits = this.props.observedBits;\n\n this.observedBits = observedBits === undefined || observedBits === null ? MAX_SIGNED_31_BIT_INT // Subscribe to all changes by default\n : observedBits;\n };\n\n Consumer.prototype.componentWillUnmount = function componentWillUnmount() {\n if (this.context[contextProp]) {\n this.context[contextProp].off(this.onUpdate);\n }\n };\n\n Consumer.prototype.getValue = function getValue() {\n if (this.context[contextProp]) {\n return this.context[contextProp].get();\n } else {\n return defaultValue;\n }\n };\n\n Consumer.prototype.render = function render() {\n return onlyChild(this.props.children)(this.state.value);\n };\n\n return Consumer;\n }(_react.Component);\n\n Consumer.contextTypes = (_Consumer$contextType = {}, _Consumer$contextType[contextProp] = _propTypes2.default.object, _Consumer$contextType);\n\n\n return {\n Provider: Provider,\n Consumer: Consumer\n };\n}\n\nexports.default = createReactContext;\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _implementation = require('./implementation');\n\nvar _implementation2 = _interopRequireDefault(_implementation);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _react2.default.createContext || _implementation2.default;\nmodule.exports = exports['default'];","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ManagerContext = undefined;\n\nvar _extends2 = require(\"babel-runtime/helpers/extends\");\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _possibleConstructorReturn2 = require(\"babel-runtime/helpers/possibleConstructorReturn\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require(\"babel-runtime/helpers/inherits\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require(\"react\");\n\nvar React = _interopRequireWildcard(_react);\n\nvar _createReactContext = require(\"create-react-context\");\n\nvar _createReactContext2 = _interopRequireDefault(_createReactContext);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar ManagerContext = exports.ManagerContext = (0, _createReactContext2.default)({ getReferenceRef: undefined, referenceNode: undefined });\n\nvar Manager = function (_React$Component) {\n (0, _inherits3.default)(Manager, _React$Component);\n\n function Manager() {\n (0, _classCallCheck3.default)(this, Manager);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, _React$Component.call(this));\n\n _this.getReferenceRef = function (referenceNode) {\n return _this.setState(function (_ref) {\n var context = _ref.context;\n return {\n context: (0, _extends3.default)({}, context, { referenceNode: referenceNode })\n };\n });\n };\n\n _this.state = {\n context: {\n getReferenceRef: _this.getReferenceRef,\n referenceNode: undefined\n }\n };\n return _this;\n }\n\n Manager.prototype.render = function render() {\n return React.createElement(\n ManagerContext.Provider,\n { value: this.state.context },\n this.props.children\n );\n };\n\n return Manager;\n}(React.Component);\n\nexports.default = Manager;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\n\n/**\n * Takes an argument and if it's an array, returns the first item in the array,\n * otherwise returns the argument. Used for Preact compatibility.\n */\nvar unwrapArray = exports.unwrapArray = function unwrapArray(arg) {\n return Array.isArray(arg) ? arg[0] : arg;\n};\n\n/**\n * Takes a maybe-undefined function and arbitrary args and invokes the function\n * only if it is defined.\n */\nvar safeInvoke = exports.safeInvoke = function safeInvoke(fn) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n if (typeof fn === \"function\") {\n return fn.apply(undefined, args);\n }\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.placements = exports.InnerPopper = undefined;\n\nvar _extends2 = require('babel-runtime/helpers/extends');\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nexports.default = Popper;\n\nvar _react = require('react');\n\nvar React = _interopRequireWildcard(_react);\n\nvar _popper = require('popper.js');\n\nvar _popper2 = _interopRequireDefault(_popper);\n\nvar _Manager = require('./Manager');\n\nvar _utils = require('./utils');\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar initialStyle = {\n position: 'absolute',\n top: 0,\n left: 0,\n opacity: 0,\n pointerEvents: 'none'\n};\n\nvar initialArrowStyle = {};\n\nvar InnerPopper = exports.InnerPopper = function (_React$Component) {\n (0, _inherits3.default)(InnerPopper, _React$Component);\n\n function InnerPopper() {\n var _temp, _this, _ret;\n\n (0, _classCallCheck3.default)(this, InnerPopper);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = (0, _possibleConstructorReturn3.default)(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.state = {\n data: undefined,\n placement: undefined\n }, _this.popperNode = null, _this.arrowNode = null, _this.setPopperNode = function (popperNode) {\n if (_this.popperNode === popperNode) return;\n\n (0, _utils.safeInvoke)(_this.props.innerRef, popperNode);\n _this.popperNode = popperNode;\n\n _this.updatePopperInstance();\n }, _this.setArrowNode = function (arrowNode) {\n if (_this.arrowNode === arrowNode) return;\n _this.arrowNode = arrowNode;\n\n if (!_this.popperInstance) _this.updatePopperInstance();\n }, _this.updateStateModifier = {\n enabled: true,\n order: 900,\n fn: function fn(data) {\n var placement = data.placement;\n\n _this.setState({ data: data, placement: placement }, placement !== _this.state.placement ? _this.scheduleUpdate : undefined);\n return data;\n }\n }, _this.getOptions = function () {\n return {\n placement: _this.props.placement,\n eventsEnabled: _this.props.eventsEnabled,\n positionFixed: _this.props.positionFixed,\n modifiers: (0, _extends3.default)({}, _this.props.modifiers, {\n arrow: (0, _extends3.default)({}, _this.props.modifiers && _this.props.modifiers.arrow, {\n enabled: !!_this.arrowNode,\n element: _this.arrowNode\n }),\n applyStyle: { enabled: false },\n updateStateModifier: _this.updateStateModifier\n })\n };\n }, _this.getPopperStyle = function () {\n return !_this.popperNode || !_this.state.data ? initialStyle : (0, _extends3.default)({\n position: _this.state.data.offsets.popper.position\n }, _this.state.data.styles);\n }, _this.getPopperPlacement = function () {\n return !_this.state.data ? undefined : _this.state.placement;\n }, _this.getArrowStyle = function () {\n return !_this.arrowNode || !_this.state.data ? initialArrowStyle : _this.state.data.arrowStyles;\n }, _this.getOutOfBoundariesState = function () {\n return _this.state.data ? _this.state.data.hide : undefined;\n }, _this.destroyPopperInstance = function () {\n if (!_this.popperInstance) return;\n\n _this.popperInstance.destroy();\n _this.popperInstance = null;\n }, _this.updatePopperInstance = function () {\n _this.destroyPopperInstance();\n\n var _this2 = _this,\n popperNode = _this2.popperNode;\n var referenceElement = _this.props.referenceElement;\n\n\n if (!referenceElement || !popperNode) return;\n\n _this.popperInstance = new _popper2.default(referenceElement, popperNode, _this.getOptions());\n }, _this.scheduleUpdate = function () {\n if (_this.popperInstance) {\n _this.popperInstance.scheduleUpdate();\n }\n }, _temp), (0, _possibleConstructorReturn3.default)(_this, _ret);\n }\n\n InnerPopper.prototype.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {\n // If the Popper.js options have changed, update the instance (destroy + create)\n if (this.props.placement !== prevProps.placement || this.props.referenceElement !== prevProps.referenceElement || this.props.positionFixed !== prevProps.positionFixed) {\n this.updatePopperInstance();\n } else if (this.props.eventsEnabled !== prevProps.eventsEnabled && this.popperInstance) {\n this.props.eventsEnabled ? this.popperInstance.enableEventListeners() : this.popperInstance.disableEventListeners();\n }\n\n // A placement difference in state means popper determined a new placement\n // apart from the props value. By the time the popper element is rendered with\n // the new position Popper has already measured it, if the place change triggers\n // a size change it will result in a misaligned popper. So we schedule an update to be sure.\n if (prevState.placement !== this.state.placement) {\n this.scheduleUpdate();\n }\n };\n\n InnerPopper.prototype.componentWillUnmount = function componentWillUnmount() {\n this.destroyPopperInstance();\n };\n\n InnerPopper.prototype.render = function render() {\n return (0, _utils.unwrapArray)(this.props.children)({\n ref: this.setPopperNode,\n style: this.getPopperStyle(),\n placement: this.getPopperPlacement(),\n outOfBoundaries: this.getOutOfBoundariesState(),\n scheduleUpdate: this.scheduleUpdate,\n arrowProps: {\n ref: this.setArrowNode,\n style: this.getArrowStyle()\n }\n });\n };\n\n return InnerPopper;\n}(React.Component);\n\nInnerPopper.defaultProps = {\n placement: 'bottom',\n eventsEnabled: true,\n referenceElement: undefined,\n positionFixed: false\n};\n\n\nvar placements = _popper2.default.placements;\nexports.placements = placements;\nfunction Popper(props) {\n return React.createElement(\n _Manager.ManagerContext.Consumer,\n null,\n function (_ref) {\n var referenceNode = _ref.referenceNode;\n return React.createElement(InnerPopper, (0, _extends3.default)({ referenceElement: referenceNode }, props));\n }\n );\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\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 _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _componentOrElement = require('prop-types-extra/lib/componentOrElement');\n\nvar _componentOrElement2 = _interopRequireDefault(_componentOrElement);\n\nvar _Portal = require('react-overlays/lib/Portal');\n\nvar _Portal2 = _interopRequireDefault(_Portal);\n\nvar _Popper = require('react-popper/lib/cjs/Popper');\n\nvar _Popper2 = _interopRequireDefault(_Popper);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\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 BODY_CLASS = 'rbt-body-container';\n\n// When appending the overlay to `document.body`, clicking on it will register\n// as an \"outside\" click and immediately close the overlay. This classname tells\n// `react-onclickoutside` to ignore the click.\nvar IGNORE_CLICK_OUTSIDE = 'ignore-react-onclickoutside';\n\nfunction getModifiers(_ref) {\n var align = _ref.align,\n flip = _ref.flip;\n\n return {\n computeStyles: {\n enabled: true,\n fn: function fn(data) {\n // Use the following condition instead of `align === 'justify'` since\n // it allows the component to fall back to justifying the menu width\n // even when `align` is undefined.\n if (align !== 'right' && align !== 'left') {\n // Set the popper width to match the target width.\n data.styles.width = data.offsets.reference.width;\n }\n return data;\n }\n },\n flip: {\n enabled: flip\n },\n preventOverflow: {\n escapeWithReference: true\n }\n };\n}\n\nfunction isBody(container) {\n return container === document.body;\n}\n\n/**\n * Custom `Overlay` component, since the version in `react-overlays` doesn't\n * work for our needs. Specifically, the `Position` component doesn't provide\n * the customized placement we need.\n */\n\nvar Overlay = function (_React$Component) {\n _inherits(Overlay, _React$Component);\n\n function Overlay() {\n var _ref2;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, Overlay);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref2 = Overlay.__proto__ || Object.getPrototypeOf(Overlay)).call.apply(_ref2, [this].concat(args))), _this), _this._update = function () {\n var _container$classList;\n\n var _this$props = _this.props,\n className = _this$props.className,\n container = _this$props.container,\n show = _this$props.show;\n\n // Positioning is only used when body is the container.\n\n if (!(show && isBody(container))) {\n return;\n }\n\n // Set a classname on the body for scoping purposes.\n container.classList.add(BODY_CLASS);\n !!className && (_container$classList = container.classList).add.apply(_container$classList, _toConsumableArray(className.split(' ')));\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(Overlay, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n this._update();\n }\n }, {\n key: 'componentWillReceiveProps',\n value: function componentWillReceiveProps(nextProps) {\n var onMenuHide = nextProps.onMenuHide,\n onMenuShow = nextProps.onMenuShow,\n show = nextProps.show;\n\n\n if (this.props.show && !show) {\n onMenuHide();\n }\n\n if (!this.props.show && show) {\n onMenuShow();\n }\n\n // Remove scoping classes if menu isn't being appended to document body.\n var _props = this.props,\n className = _props.className,\n container = _props.container;\n\n if (isBody(container) && !isBody(nextProps.container)) {\n var _container$classList2;\n\n container.classList.remove(BODY_CLASS);\n !!className && (_container$classList2 = container.classList).remove.apply(_container$classList2, _toConsumableArray(className.split(' ')));\n }\n\n this._update();\n }\n }, {\n key: 'render',\n value: function render() {\n var _props2 = this.props,\n align = _props2.align,\n children = _props2.children,\n container = _props2.container,\n dropup = _props2.dropup,\n referenceElement = _props2.referenceElement,\n show = _props2.show;\n\n\n if (!(show && _react.Children.count(children) && referenceElement)) {\n return null;\n }\n\n var child = _react.Children.only(children);\n\n var xPlacement = align === 'right' ? 'end' : 'start';\n var yPlacement = dropup ? 'top' : 'bottom';\n\n return _react2.default.createElement(\n _Portal2.default,\n { container: container },\n _react2.default.createElement(\n _Popper2.default,\n {\n modifiers: getModifiers(this.props),\n placement: yPlacement + '-' + xPlacement,\n referenceElement: referenceElement },\n function (_ref3) {\n var ref = _ref3.ref,\n props = _objectWithoutProperties(_ref3, ['ref']);\n\n return (0, _react.cloneElement)(child, _extends({}, child.props, props, {\n className: (0, _classnames2.default)(child.props.className, _defineProperty({}, IGNORE_CLICK_OUTSIDE, isBody(container))),\n innerRef: ref\n }));\n }\n )\n );\n }\n }]);\n\n return Overlay;\n}(_react2.default.Component);\n\nOverlay.propTypes = {\n children: _propTypes2.default.element,\n container: _componentOrElement2.default.isRequired,\n onMenuHide: _propTypes2.default.func.isRequired,\n onMenuShow: _propTypes2.default.func.isRequired,\n referenceElement: _componentOrElement2.default,\n show: _propTypes2.default.bool\n};\n\nOverlay.defaultProps = {\n show: false\n};\n\nexports.default = Overlay;","'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\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\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 SIZER_STYLE = {\n height: 0,\n left: 0,\n overflow: 'scroll',\n position: 'absolute',\n top: 0,\n visibility: 'hidden',\n whiteSpace: 'pre'\n};\n\nvar INPUT_PROPS_BLACKLIST = ['inputClassName', 'inputRef', 'inputStyle'];\n\nvar MIN_WIDTH = 1;\n\nvar cleanInputProps = function cleanInputProps(inputProps) {\n INPUT_PROPS_BLACKLIST.forEach(function (field) {\n return delete inputProps[field];\n });\n return inputProps;\n};\n\nvar copyStyles = function copyStyles(styles, node) {\n node.style.fontSize = styles.fontSize;\n node.style.fontFamily = styles.fontFamily;\n node.style.fontWeight = styles.fontWeight;\n node.style.fontStyle = styles.fontStyle;\n node.style.letterSpacing = styles.letterSpacing;\n node.style.textTransform = styles.textTransform;\n};\n\nvar AutosizeInput = function (_React$Component) {\n _inherits(AutosizeInput, _React$Component);\n\n function AutosizeInput() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, AutosizeInput);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = AutosizeInput.__proto__ || Object.getPrototypeOf(AutosizeInput)).call.apply(_ref, [this].concat(args))), _this), _this.state = {\n inputWidth: MIN_WIDTH\n }, _this._copyInputStyles = function () {\n var inputStyles = _this._input && window.getComputedStyle && window.getComputedStyle(_this._input);\n\n if (!inputStyles) {\n return;\n }\n\n copyStyles(inputStyles, _this._sizer);\n\n if (_this._placeHolderSizer) {\n copyStyles(inputStyles, _this._placeHolderSizer);\n }\n }, _this._updateInputWidth = function () {\n if (!_this._sizer || _this._sizer.scrollWidth === undefined) {\n return;\n }\n\n _this._copyInputStyles();\n\n var placeholderWidth = _this._placeHolderSizer && _this._placeHolderSizer.scrollWidth || MIN_WIDTH;\n\n var inputWidth = Math.max(_this._sizer.scrollWidth, placeholderWidth) + 2;\n\n if (inputWidth !== _this.state.inputWidth) {\n _this.setState({ inputWidth: inputWidth });\n }\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(AutosizeInput, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n this._updateInputWidth();\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate(prevProps, prevState) {\n this._updateInputWidth();\n }\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var _props = this.props,\n className = _props.className,\n defaultValue = _props.defaultValue,\n placeholder = _props.placeholder,\n value = _props.value;\n\n\n var wrapperStyle = _extends({}, this.props.style);\n if (!wrapperStyle.display) {\n wrapperStyle.display = 'inline-block';\n }\n\n var inputProps = cleanInputProps(_extends({}, this.props, {\n className: this.props.inputClassName,\n style: _extends({}, this.props.inputStyle, {\n boxSizing: 'content-box',\n width: this.state.inputWidth + 'px'\n })\n }));\n\n return _react2.default.createElement(\n 'div',\n { className: className, style: wrapperStyle },\n _react2.default.createElement('input', _extends({}, inputProps, {\n ref: function ref(el) {\n _this2._input = el;\n if (typeof _this2.props.inputRef === 'function') {\n _this2.props.inputRef(el);\n }\n }\n })),\n _react2.default.createElement(\n 'div',\n {\n ref: function ref(el) {\n return _this2._sizer = el;\n },\n style: SIZER_STYLE },\n defaultValue || value || ''\n ),\n placeholder ? _react2.default.createElement(\n 'div',\n {\n ref: function ref(el) {\n return _this2._placeHolderSizer = el;\n },\n style: SIZER_STYLE },\n placeholder\n ) : null\n );\n }\n }]);\n\n return AutosizeInput;\n}(_react2.default.Component);\n\nAutosizeInput.propTypes = {\n /**\n * ClassName for the input element.\n */\n inputClassName: _propTypes2.default.string,\n /**\n * Ref callback for the input element.\n */\n inputRef: _propTypes2.default.func,\n /**\n * CSS styles for the input element.\n */\n inputStyle: _propTypes2.default.object\n};\n\nexports.default = AutosizeInput;","import { Component, createElement } from 'react';\nimport { findDOMNode } from 'react-dom';\n\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\n\nfunction _objectWithoutProperties(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 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\n/**\n * Check whether some DOM node is our Component's node.\n */\nfunction isNodeFound(current, componentNode, ignoreClass) {\n if (current === componentNode) {\n return true;\n } // SVG <use/> elements do not technically reside in the rendered DOM, so\n // they do not have classList directly, but they offer a link to their\n // corresponding element, which can have classList. This extra check is for\n // that case.\n // See: http://www.w3.org/TR/SVG11/struct.html#InterfaceSVGUseElement\n // Discussion: https://github.com/Pomax/react-onclickoutside/pull/17\n\n\n if (current.correspondingElement) {\n return current.correspondingElement.classList.contains(ignoreClass);\n }\n\n return current.classList.contains(ignoreClass);\n}\n/**\n * Try to find our node in a hierarchy of nodes, returning the document\n * node as highest node if our node is not found in the path up.\n */\n\nfunction findHighest(current, componentNode, ignoreClass) {\n if (current === componentNode) {\n return true;\n } // If source=local then this event came from 'somewhere'\n // inside and should be ignored. We could handle this with\n // a layered approach, too, but that requires going back to\n // thinking in terms of Dom node nesting, running counter\n // to React's 'you shouldn't care about the DOM' philosophy.\n\n\n while (current.parentNode) {\n if (isNodeFound(current, componentNode, ignoreClass)) {\n return true;\n }\n\n current = current.parentNode;\n }\n\n return current;\n}\n/**\n * Check if the browser scrollbar was clicked\n */\n\nfunction clickedScrollbar(evt) {\n return document.documentElement.clientWidth <= evt.clientX || document.documentElement.clientHeight <= evt.clientY;\n}\n\n// ideally will get replaced with external dep\n// when rafrex/detect-passive-events#4 and rafrex/detect-passive-events#5 get merged in\nvar testPassiveEventSupport = function testPassiveEventSupport() {\n if (typeof window === 'undefined' || typeof window.addEventListener !== 'function') {\n return;\n }\n\n var passive = false;\n var options = Object.defineProperty({}, 'passive', {\n get: function get() {\n passive = true;\n }\n });\n\n var noop = function noop() {};\n\n window.addEventListener('testPassiveEventSupport', noop, options);\n window.removeEventListener('testPassiveEventSupport', noop, options);\n return passive;\n};\n\nfunction autoInc(seed) {\n if (seed === void 0) {\n seed = 0;\n }\n\n return function () {\n return ++seed;\n };\n}\n\nvar uid = autoInc();\n\nvar passiveEventSupport;\nvar handlersMap = {};\nvar enabledInstances = {};\nvar touchEvents = ['touchstart', 'touchmove'];\nvar IGNORE_CLASS_NAME = 'ignore-react-onclickoutside';\n/**\n * Options for addEventHandler and removeEventHandler\n */\n\nfunction getEventHandlerOptions(instance, eventName) {\n var handlerOptions = null;\n var isTouchEvent = touchEvents.indexOf(eventName) !== -1;\n\n if (isTouchEvent && passiveEventSupport) {\n handlerOptions = {\n passive: !instance.props.preventDefault\n };\n }\n\n return handlerOptions;\n}\n/**\n * This function generates the HOC function that you'll use\n * in order to impart onOutsideClick listening to an\n * arbitrary component. It gets called at the end of the\n * bootstrapping code to yield an instance of the\n * onClickOutsideHOC function defined inside setupHOC().\n */\n\n\nfunction onClickOutsideHOC(WrappedComponent, config) {\n var _class, _temp;\n\n return _temp = _class =\n /*#__PURE__*/\n function (_Component) {\n _inheritsLoose(onClickOutside, _Component);\n\n function onClickOutside(props) {\n var _this;\n\n _this = _Component.call(this, props) || this;\n\n _this.__outsideClickHandler = function (event) {\n if (typeof _this.__clickOutsideHandlerProp === 'function') {\n _this.__clickOutsideHandlerProp(event);\n\n return;\n }\n\n var instance = _this.getInstance();\n\n if (typeof instance.props.handleClickOutside === 'function') {\n instance.props.handleClickOutside(event);\n return;\n }\n\n if (typeof instance.handleClickOutside === 'function') {\n instance.handleClickOutside(event);\n return;\n }\n\n throw new Error('WrappedComponent lacks a handleClickOutside(event) function for processing outside click events.');\n };\n\n _this.enableOnClickOutside = function () {\n if (typeof document === 'undefined' || enabledInstances[_this._uid]) {\n return;\n }\n\n if (typeof passiveEventSupport === 'undefined') {\n passiveEventSupport = testPassiveEventSupport();\n }\n\n enabledInstances[_this._uid] = true;\n var events = _this.props.eventTypes;\n\n if (!events.forEach) {\n events = [events];\n }\n\n handlersMap[_this._uid] = function (event) {\n if (_this.props.disableOnClickOutside) return;\n if (_this.componentNode === null) return;\n\n if (_this.props.preventDefault) {\n event.preventDefault();\n }\n\n if (_this.props.stopPropagation) {\n event.stopPropagation();\n }\n\n if (_this.props.excludeScrollbar && clickedScrollbar(event)) return;\n var current = event.target;\n\n if (findHighest(current, _this.componentNode, _this.props.outsideClickIgnoreClass) !== document) {\n return;\n }\n\n _this.__outsideClickHandler(event);\n };\n\n events.forEach(function (eventName) {\n document.addEventListener(eventName, handlersMap[_this._uid], getEventHandlerOptions(_this, eventName));\n });\n };\n\n _this.disableOnClickOutside = function () {\n delete enabledInstances[_this._uid];\n var fn = handlersMap[_this._uid];\n\n if (fn && typeof document !== 'undefined') {\n var events = _this.props.eventTypes;\n\n if (!events.forEach) {\n events = [events];\n }\n\n events.forEach(function (eventName) {\n return document.removeEventListener(eventName, fn, getEventHandlerOptions(_this, eventName));\n });\n delete handlersMap[_this._uid];\n }\n };\n\n _this.getRef = function (ref) {\n return _this.instanceRef = ref;\n };\n\n _this._uid = uid();\n return _this;\n }\n /**\n * Access the WrappedComponent's instance.\n */\n\n\n var _proto = onClickOutside.prototype;\n\n _proto.getInstance = function getInstance() {\n if (!WrappedComponent.prototype.isReactComponent) {\n return this;\n }\n\n var ref = this.instanceRef;\n return ref.getInstance ? ref.getInstance() : ref;\n };\n\n /**\n * Add click listeners to the current document,\n * linked to this component's state.\n */\n _proto.componentDidMount = function componentDidMount() {\n // If we are in an environment without a DOM such\n // as shallow rendering or snapshots then we exit\n // early to prevent any unhandled errors being thrown.\n if (typeof document === 'undefined' || !document.createElement) {\n return;\n }\n\n var instance = this.getInstance();\n\n if (config && typeof config.handleClickOutside === 'function') {\n this.__clickOutsideHandlerProp = config.handleClickOutside(instance);\n\n if (typeof this.__clickOutsideHandlerProp !== 'function') {\n throw new Error('WrappedComponent lacks a function for processing outside click events specified by the handleClickOutside config option.');\n }\n }\n\n this.componentNode = findDOMNode(this.getInstance());\n this.enableOnClickOutside();\n };\n\n _proto.componentDidUpdate = function componentDidUpdate() {\n this.componentNode = findDOMNode(this.getInstance());\n };\n /**\n * Remove all document's event listeners for this component\n */\n\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.disableOnClickOutside();\n };\n /**\n * Can be called to explicitly enable event listening\n * for clicks and touches outside of this element.\n */\n\n\n /**\n * Pass-through render\n */\n _proto.render = function render() {\n // eslint-disable-next-line no-unused-vars\n var _props = this.props,\n excludeScrollbar = _props.excludeScrollbar,\n props = _objectWithoutProperties(_props, [\"excludeScrollbar\"]);\n\n if (WrappedComponent.prototype.isReactComponent) {\n props.ref = this.getRef;\n } else {\n props.wrappedRef = this.getRef;\n }\n\n props.disableOnClickOutside = this.disableOnClickOutside;\n props.enableOnClickOutside = this.enableOnClickOutside;\n return createElement(WrappedComponent, props);\n };\n\n return onClickOutside;\n }(Component), _class.displayName = \"OnClickOutside(\" + (WrappedComponent.displayName || WrappedComponent.name || 'Component') + \")\", _class.defaultProps = {\n eventTypes: ['mousedown', 'touchstart'],\n excludeScrollbar: config && config.excludeScrollbar || false,\n outsideClickIgnoreClass: IGNORE_CLASS_NAME,\n preventDefault: false,\n stopPropagation: false\n }, _class.getClass = function () {\n return WrappedComponent.getClass ? WrappedComponent.getClass() : WrappedComponent;\n }, _temp;\n}\n\nexport { IGNORE_CLASS_NAME };\nexport default onClickOutsideHOC;\n","\"use strict\";\n\n/* eslint-disable sort-keys */\n\n/**\n * KeyCode\n *\n * Map of common (non-printable) keycodes for the `keydown` and `keyup` events.\n * Note that `keypress` handles things differently and may not return the same\n * values.\n */\nmodule.exports = {\n BACKSPACE: 8,\n TAB: 9,\n RETURN: 13,\n ESC: 27,\n SPACE: 32,\n LEFT: 37,\n UP: 38,\n RIGHT: 39,\n DOWN: 40\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\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 _reactOnclickoutside = require('react-onclickoutside');\n\nvar _reactOnclickoutside2 = _interopRequireDefault(_reactOnclickoutside);\n\nvar _utils = require('../utils/');\n\nvar _keyCode = require('../constants/keyCode');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\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\n/**\n * Higher-order component that encapsulates Token behaviors, allowing them to\n * be easily re-used.\n */\nvar tokenContainer = function tokenContainer(Component) {\n var WrappedComponent = function (_React$Component) {\n _inherits(WrappedComponent, _React$Component);\n\n function WrappedComponent() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, WrappedComponent);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = WrappedComponent.__proto__ || Object.getPrototypeOf(WrappedComponent)).call.apply(_ref, [this].concat(args))), _this), _this.state = {\n active: false\n }, _this._handleBlur = function (e) {\n _this.setState({ active: false });\n }, _this._handleKeyDown = function (e) {\n switch (e.keyCode) {\n case _keyCode.BACKSPACE:\n if (_this.state.active) {\n // Prevent backspace keypress from triggering the browser \"back\"\n // action.\n e.preventDefault();\n _this.props.onRemove();\n }\n break;\n }\n }, _this.handleClickOutside = function (e) {\n _this._handleBlur();\n }, _this._handleActive = function (e) {\n e.stopPropagation();\n _this.setState({ active: true });\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(WrappedComponent, [{\n key: 'render',\n value: function render() {\n var _props = this.props,\n disableOnClickOutside = _props.disableOnClickOutside,\n enableOnClickOutside = _props.enableOnClickOutside,\n eventTypes = _props.eventTypes,\n outsideClickIgnoreClass = _props.outsideClickIgnoreClass,\n preventDefault = _props.preventDefault,\n stopPropagation = _props.stopPropagation,\n tokenProps = _objectWithoutProperties(_props, ['disableOnClickOutside', 'enableOnClickOutside', 'eventTypes', 'outsideClickIgnoreClass', 'preventDefault', 'stopPropagation']);\n\n return _react2.default.createElement(Component, _extends({}, tokenProps, this.state, {\n onBlur: this._handleBlur,\n onClick: this._handleActive,\n onFocus: this._handleActive,\n onKeyDown: this._handleKeyDown\n }));\n }\n\n /**\n * From `onClickOutside` HOC.\n */\n\n }]);\n\n return WrappedComponent;\n }(_react2.default.Component);\n\n WrappedComponent.displayName = 'TokenContainer(' + (0, _utils.getDisplayName)(Component) + ')';\n\n return (0, _reactOnclickoutside2.default)(WrappedComponent);\n};\n\nexports.default = tokenContainer;","'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\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _ClearButton = require('./ClearButton.react');\n\nvar _ClearButton2 = _interopRequireDefault(_ClearButton);\n\nvar _tokenContainer = require('./containers/tokenContainer');\n\nvar _tokenContainer2 = _interopRequireDefault(_tokenContainer);\n\nvar _keyCode = require('./constants/keyCode');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\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\n/**\n * Token\n *\n * Individual token component, generally displayed within the TokenizerInput\n * component, but can also be rendered on its own.\n */\nvar Token = function (_React$Component) {\n _inherits(Token, _React$Component);\n\n function Token() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, Token);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = Token.__proto__ || Object.getPrototypeOf(Token)).call.apply(_ref, [this].concat(args))), _this), _this._renderRemoveableToken = function () {\n var _this$props = _this.props,\n active = _this$props.active,\n children = _this$props.children,\n className = _this$props.className,\n onRemove = _this$props.onRemove,\n props = _objectWithoutProperties(_this$props, ['active', 'children', 'className', 'onRemove']);\n\n return _react2.default.createElement(\n 'div',\n _extends({}, props, {\n className: (0, _classnames2.default)('rbt-token', 'rbt-token-removeable', {\n 'rbt-token-active': active\n }, className) }),\n children,\n _react2.default.createElement(_ClearButton2.default, {\n className: 'rbt-token-remove-button',\n label: 'Remove',\n onClick: onRemove,\n onKeyDown: _this._handleRemoveButtonKeydown,\n tabIndex: -1\n })\n );\n }, _this._renderToken = function () {\n var _this$props2 = _this.props,\n children = _this$props2.children,\n className = _this$props2.className,\n disabled = _this$props2.disabled,\n href = _this$props2.href;\n\n var classnames = (0, _classnames2.default)('rbt-token', {\n 'rbt-token-disabled': disabled\n }, className);\n\n if (href) {\n return _react2.default.createElement(\n 'a',\n { className: classnames, href: href },\n children\n );\n }\n\n return _react2.default.createElement(\n 'div',\n { className: classnames },\n children\n );\n }, _this._handleRemoveButtonKeydown = function (e) {\n switch (e.keyCode) {\n case _keyCode.RETURN:\n _this.props.onRemove();\n break;\n }\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(Token, [{\n key: 'render',\n value: function render() {\n return this.props.onRemove && !this.props.disabled ? this._renderRemoveableToken() : this._renderToken();\n }\n }]);\n\n return Token;\n}(_react2.default.Component);\n\nToken.propTypes = {\n active: _propTypes2.default.bool,\n /**\n * Handler for removing/deleting the token. If not defined, the token will\n * be rendered in a read-only state.\n */\n onRemove: _propTypes2.default.func,\n tabIndex: _propTypes2.default.number\n};\n\nToken.defaultProps = {\n active: false,\n tabIndex: 0\n};\n\nexports.default = (0, _tokenContainer2.default)(Token);","'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\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _utils = require('../utils/');\n\nvar _keyCode = require('../constants/keyCode');\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\n// IE doesn't seem to get the composite computed value (eg: 'padding',\n// 'borderStyle', etc.), so generate these from the individual values.\nfunction interpolateStyle(styles, attr) {\n var subattr = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';\n\n // Title-case the sub-attribute.\n if (subattr) {\n subattr = subattr.replace(subattr[0], subattr[0].toUpperCase());\n }\n\n return ['Top', 'Right', 'Bottom', 'Left'].map(function (dir) {\n return styles[attr + dir + subattr];\n }).join(' ');\n}\n\nfunction copyStyles(inputNode, hintNode) {\n var inputStyle = window.getComputedStyle(inputNode);\n\n hintNode.style.borderStyle = interpolateStyle(inputStyle, 'border', 'style');\n hintNode.style.borderWidth = interpolateStyle(inputStyle, 'border', 'width');\n hintNode.style.fontSize = inputStyle.fontSize;\n hintNode.style.lineHeight = inputStyle.lineHeight;\n hintNode.style.margin = interpolateStyle(inputStyle, 'margin');\n hintNode.style.padding = interpolateStyle(inputStyle, 'padding');\n}\n\nfunction hintContainer(Input) {\n var HintedInput = function (_React$Component) {\n _inherits(HintedInput, _React$Component);\n\n function HintedInput() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, HintedInput);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = HintedInput.__proto__ || Object.getPrototypeOf(HintedInput)).call.apply(_ref, [this].concat(args))), _this), _this._handleKeyDown = function (e) {\n var _this$context = _this.context,\n hintText = _this$context.hintText,\n initialItem = _this$context.initialItem,\n onAdd = _this$context.onAdd,\n selectHintOnEnter = _this$context.selectHintOnEnter;\n var _this$props = _this.props,\n onKeyDown = _this$props.onKeyDown,\n value = _this$props.value;\n\n\n if (hintText && (e.keyCode === _keyCode.RETURN && selectHintOnEnter || e.keyCode === _keyCode.RIGHT && e.target.selectionStart === value.length || e.keyCode === _keyCode.TAB)) {\n e.preventDefault(); // Prevent input from blurring on TAB.\n onAdd(initialItem);\n }\n\n onKeyDown(e);\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(HintedInput, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n copyStyles(this._input, this._hint);\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate() {\n copyStyles(this._input, this._hint);\n }\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n return _react2.default.createElement(\n 'div',\n {\n className: 'rbt-input-hint-container',\n style: { position: 'relative' } },\n _react2.default.createElement(Input, _extends({}, this.props, {\n inputRef: function inputRef(input) {\n _this2._input = input;\n _this2.props.inputRef(input);\n },\n onKeyDown: this._handleKeyDown\n })),\n _react2.default.createElement('input', {\n 'aria-hidden': true,\n className: 'rbt-input-hint',\n readOnly: true,\n ref: function ref(hint) {\n return _this2._hint = hint;\n },\n style: {\n backgroundColor: 'transparent',\n borderColor: 'transparent',\n boxShadow: 'none',\n color: 'rgba(0, 0, 0, 0.35)',\n left: 0,\n pointerEvents: 'none',\n position: 'absolute',\n top: 0\n },\n tabIndex: -1,\n value: this.context.hintText\n })\n );\n }\n }]);\n\n return HintedInput;\n }(_react2.default.Component);\n\n HintedInput.displayName = 'HintContainer(' + (0, _utils.getDisplayName)(Input) + ')';\n\n HintedInput.contextTypes = {\n hintText: _propTypes2.default.string.isRequired,\n initialItem: _propTypes2.default.oneOfType([_propTypes2.default.object.isRequired, _propTypes2.default.string.isRequired]),\n onAdd: _propTypes2.default.func.isRequired,\n selectHintOnEnter: _propTypes2.default.bool.isRequired\n };\n\n return HintedInput;\n}\n\nexports.default = hintContainer;","'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\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _utils = require('../utils/');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _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 inputContainer(Input) {\n var WrappedInput = function (_React$Component) {\n _inherits(WrappedInput, _React$Component);\n\n function WrappedInput() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, WrappedInput);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = WrappedInput.__proto__ || Object.getPrototypeOf(WrappedInput)).call.apply(_ref, [this].concat(args))), _this), _this.state = {\n isFocused: false\n }, _this._handleBlur = function (e) {\n e.persist();\n _this.setState({ isFocused: false }, function () {\n return _this.props.onBlur(e);\n });\n }, _this._handleFocus = function (e) {\n e.persist();\n _this.setState({ isFocused: true }, function () {\n return _this.props.onFocus(e);\n });\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(WrappedInput, [{\n key: 'getChildContext',\n value: function getChildContext() {\n var _props = this.props,\n initialItem = _props.initialItem,\n onAdd = _props.onAdd,\n selectHintOnEnter = _props.selectHintOnEnter;\n\n\n return {\n hintText: (0, _utils.getHintText)(this.props),\n initialItem: initialItem,\n onAdd: onAdd,\n selectHintOnEnter: selectHintOnEnter\n };\n }\n }, {\n key: 'render',\n value: function render() {\n var _cx;\n\n var _props2 = this.props,\n activeIndex = _props2.activeIndex,\n bsSize = _props2.bsSize,\n disabled = _props2.disabled,\n inputRef = _props2.inputRef,\n isInvalid = _props2.isInvalid,\n isMenuShown = _props2.isMenuShown,\n isValid = _props2.isValid,\n labelKey = _props2.labelKey,\n menuId = _props2.menuId,\n multiple = _props2.multiple,\n onChange = _props2.onChange,\n onKeyDown = _props2.onKeyDown,\n onRemove = _props2.onRemove,\n placeholder = _props2.placeholder,\n renderToken = _props2.renderToken,\n selected = _props2.selected;\n\n // Add a11y-related props.\n\n var inputProps = _extends({}, this.props.inputProps, {\n 'aria-activedescendant': activeIndex >= 0 ? (0, _utils.getMenuItemId)(activeIndex) : '',\n 'aria-autocomplete': multiple ? 'list' : 'both',\n 'aria-expanded': isMenuShown,\n 'aria-haspopup': 'listbox',\n 'aria-owns': menuId,\n autoComplete: this.props.inputProps.autoComplete || 'nope',\n disabled: disabled,\n inputRef: inputRef,\n onBlur: this._handleBlur,\n onChange: onChange,\n // Re-open the menu, eg: if it's closed via ESC.\n onClick: this._handleFocus,\n onFocus: this._handleFocus,\n onKeyDown: onKeyDown,\n placeholder: selected.length ? null : placeholder,\n // Comboboxes are single-select by definition:\n // https://www.w3.org/TR/wai-aria-practices-1.1/#combobox\n role: 'combobox',\n value: (0, _utils.getInputText)(this.props)\n });\n\n var className = inputProps.className || '';\n\n if (multiple) {\n inputProps = _extends({}, inputProps, {\n inputClassName: className,\n labelKey: labelKey,\n onRemove: onRemove,\n renderToken: renderToken,\n role: '',\n selected: selected\n });\n }\n\n return _react2.default.createElement(Input, _extends({}, inputProps, {\n className: (0, _classnames2.default)('rbt-input', (_cx = {}, _defineProperty(_cx, className, !multiple), _defineProperty(_cx, 'focus', this.state.isFocused), _defineProperty(_cx, 'input-lg form-control-lg', bsSize === 'large' || bsSize === 'lg'), _defineProperty(_cx, 'input-sm form-control-sm', bsSize === 'small' || bsSize === 'sm'), _defineProperty(_cx, 'is-invalid', isInvalid), _defineProperty(_cx, 'is-valid', isValid), _cx))\n }));\n }\n }]);\n\n return WrappedInput;\n }(_react2.default.Component);\n\n WrappedInput.displayName = 'InputContainer(' + (0, _utils.getDisplayName)(Input) + ')';\n\n WrappedInput.childContextTypes = {\n hintText: _propTypes2.default.string.isRequired,\n initialItem: _propTypes2.default.oneOfType([_propTypes2.default.object.isRequired, _propTypes2.default.string.isRequired]),\n onAdd: _propTypes2.default.func.isRequired,\n selectHintOnEnter: _propTypes2.default.bool.isRequired\n };\n\n return WrappedInput;\n}\n\nexports.default = inputContainer;","'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\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _AutosizeInput = require('./AutosizeInput.react');\n\nvar _AutosizeInput2 = _interopRequireDefault(_AutosizeInput);\n\nvar _Token = require('./Token.react');\n\nvar _Token2 = _interopRequireDefault(_Token);\n\nvar _utils = require('./utils/');\n\nvar _hintContainer = require('./containers/hintContainer');\n\nvar _hintContainer2 = _interopRequireDefault(_hintContainer);\n\nvar _inputContainer = require('./containers/inputContainer');\n\nvar _inputContainer2 = _interopRequireDefault(_inputContainer);\n\nvar _keyCode = require('./constants/keyCode');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\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 HintedAutosizeInput = (0, _hintContainer2.default)(_AutosizeInput2.default);\n\nvar TypeaheadInputMulti = function (_React$Component) {\n _inherits(TypeaheadInputMulti, _React$Component);\n\n function TypeaheadInputMulti() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, TypeaheadInputMulti);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = TypeaheadInputMulti.__proto__ || Object.getPrototypeOf(TypeaheadInputMulti)).call.apply(_ref, [this].concat(args))), _this), _this._renderToken = function (option, idx) {\n var _this$props = _this.props,\n _onRemove = _this$props.onRemove,\n renderToken = _this$props.renderToken;\n\n var props = _extends({}, _this.props, {\n onRemove: function onRemove() {\n return _onRemove(option);\n }\n });\n\n return renderToken(option, props, idx);\n }, _this._handleContainerClickOrFocus = function (e) {\n // Don't focus the input if it's disabled.\n if (_this.props.disabled) {\n e.target.blur();\n return;\n }\n\n // Move cursor to the end if the user clicks outside the actual input.\n var inputNode = _this._input;\n if (e.target !== inputNode) {\n inputNode.selectionStart = inputNode.value.length;\n }\n\n inputNode.focus();\n }, _this._handleKeyDown = function (e) {\n var _this$props2 = _this.props,\n onKeyDown = _this$props2.onKeyDown,\n selected = _this$props2.selected,\n value = _this$props2.value;\n\n\n switch (e.keyCode) {\n case _keyCode.BACKSPACE:\n if (e.target === _this._input && selected.length && !value) {\n // If the input is selected and there is no text, focus the last\n // token when the user hits backspace.\n var children = _this._wrapper.children;\n var lastToken = children[children.length - 2];\n lastToken && lastToken.focus();\n }\n break;\n }\n\n onKeyDown(e);\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(TypeaheadInputMulti, [{\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var _props = this.props,\n className = _props.className,\n inputClassName = _props.inputClassName,\n labelKey = _props.labelKey,\n onRemove = _props.onRemove,\n renderToken = _props.renderToken,\n selected = _props.selected,\n props = _objectWithoutProperties(_props, ['className', 'inputClassName', 'labelKey', 'onRemove', 'renderToken', 'selected']);\n\n return (\n /* eslint-disable jsx-a11y/no-static-element-interactions */\n /* eslint-disable jsx-a11y/click-events-have-key-events */\n _react2.default.createElement(\n 'div',\n {\n className: (0, _classnames2.default)('form-control', 'rbt-input-multi', className),\n disabled: props.disabled,\n onClick: this._handleContainerClickOrFocus,\n onFocus: this._handleContainerClickOrFocus,\n tabIndex: -1 },\n _react2.default.createElement(\n 'div',\n { className: 'rbt-input-wrapper', ref: function ref(el) {\n return _this2._wrapper = el;\n } },\n selected.map(this._renderToken),\n _react2.default.createElement(HintedAutosizeInput, _extends({}, props, {\n inputClassName: (0, _classnames2.default)('rbt-input-main', inputClassName),\n inputRef: function inputRef(input) {\n _this2._input = input;\n _this2.props.inputRef(input);\n },\n inputStyle: {\n backgroundColor: 'transparent',\n border: 0,\n boxShadow: 'none',\n cursor: 'inherit',\n outline: 'none',\n padding: 0\n },\n onKeyDown: this._handleKeyDown,\n style: {\n position: 'relative',\n zIndex: 1\n }\n }))\n )\n )\n /* eslint-enable jsx-a11y/no-static-element-interactions */\n /* eslint-enable jsx-a11y/click-events-have-key-events */\n\n );\n }\n\n /**\n * Forward click or focus events on the container element to the input.\n */\n\n }]);\n\n return TypeaheadInputMulti;\n}(_react2.default.Component);\n\nTypeaheadInputMulti.propTypes = {\n /**\n * Provides a hook for customized rendering of tokens when multiple\n * selections are enabled.\n */\n renderToken: _propTypes2.default.func\n};\n\nTypeaheadInputMulti.defaultProps = {\n renderToken: function renderToken(option, props, idx) {\n return _react2.default.createElement(\n _Token2.default,\n {\n disabled: props.disabled,\n key: idx,\n onRemove: props.onRemove,\n tabIndex: props.tabIndex },\n (0, _utils.getOptionLabel)(option, props.labelKey)\n );\n }\n};\n\nexports.default = (0, _inputContainer2.default)(TypeaheadInputMulti);","'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\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _hintContainer = require('./containers/hintContainer');\n\nvar _hintContainer2 = _interopRequireDefault(_hintContainer);\n\nvar _inputContainer = require('./containers/inputContainer');\n\nvar _inputContainer2 = _interopRequireDefault(_inputContainer);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\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 TypeaheadInputSingle = function (_React$Component) {\n _inherits(TypeaheadInputSingle, _React$Component);\n\n function TypeaheadInputSingle() {\n _classCallCheck(this, TypeaheadInputSingle);\n\n return _possibleConstructorReturn(this, (TypeaheadInputSingle.__proto__ || Object.getPrototypeOf(TypeaheadInputSingle)).apply(this, arguments));\n }\n\n _createClass(TypeaheadInputSingle, [{\n key: 'render',\n value: function render() {\n var _props = this.props,\n className = _props.className,\n inputRef = _props.inputRef,\n props = _objectWithoutProperties(_props, ['className', 'inputRef']);\n\n return _react2.default.createElement('input', _extends({}, props, {\n className: (0, _classnames2.default)('rbt-input-main', 'form-control', className),\n ref: inputRef,\n type: 'text'\n }));\n }\n }]);\n\n return TypeaheadInputSingle;\n}(_react2.default.Component);\n\nexports.default = (0, _inputContainer2.default)((0, _hintContainer2.default)(TypeaheadInputSingle));","'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 _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _utils = require('./utils');\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\n/**\n * Stripped-down version of https://github.com/helior/react-highlighter\n *\n * Results are already filtered by the time the component is used internally so\n * we can safely ignore case and diacritical marks for the purposes of matching.\n */\nvar Highlighter = function (_React$PureComponent) {\n _inherits(Highlighter, _React$PureComponent);\n\n function Highlighter() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, Highlighter);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = Highlighter.__proto__ || Object.getPrototypeOf(Highlighter)).call.apply(_ref, [this].concat(args))), _this), _this._count = 0, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(Highlighter, [{\n key: 'render',\n value: function render() {\n var children = this.props.search ? this._renderHighlightedChildren() : this.props.children;\n\n return _react2.default.createElement(\n 'span',\n null,\n children\n );\n }\n }, {\n key: '_renderHighlightedChildren',\n value: function _renderHighlightedChildren() {\n var children = [];\n var remaining = this.props.children;\n\n while (remaining) {\n var bounds = (0, _utils.getMatchBounds)(remaining, this.props.search);\n\n if (!bounds) {\n this._count++;\n children.push(_react2.default.createElement(\n 'span',\n { key: this._count },\n remaining\n ));\n return children;\n }\n\n // Capture the string that leads up to a match...\n var nonMatch = remaining.slice(0, bounds.start);\n if (nonMatch) {\n this._count++;\n children.push(_react2.default.createElement(\n 'span',\n { key: this._count },\n nonMatch\n ));\n }\n\n // Now, capture the matching string...\n var match = remaining.slice(bounds.start, bounds.end);\n if (match) {\n this._count++;\n children.push(_react2.default.createElement(\n 'mark',\n { className: 'rbt-highlight-text', key: this._count },\n match\n ));\n }\n\n // And if there's anything left over, continue the loop.\n remaining = remaining.slice(bounds.end);\n }\n\n return children;\n }\n }]);\n\n return Highlighter;\n}(_react2.default.PureComponent);\n\nHighlighter.propTypes = {\n children: _propTypes2.default.string.isRequired,\n search: _propTypes2.default.string.isRequired\n};\n\nexports.default = Highlighter;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isRequiredForA11y;\nfunction isRequiredForA11y(validator) {\n return function validate(props, propName, componentName, location, propFullName) {\n var componentNameSafe = componentName || '<<anonymous>>';\n var propFullNameSafe = propFullName || propName;\n\n if (props[propName] == null) {\n return new Error('The ' + location + ' `' + propFullNameSafe + '` is required to make ' + ('`' + componentNameSafe + '` accessible for users of assistive ') + 'technologies such as screen readers.');\n }\n\n for (var _len = arguments.length, args = Array(_len > 5 ? _len - 5 : 0), _key = 5; _key < _len; _key++) {\n args[_key - 5] = arguments[_key];\n }\n\n return validator.apply(undefined, [props, propName, componentName, location, propFullName].concat(args));\n };\n}\nmodule.exports = exports['default'];","/**\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","'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\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _reactDom = require('react-dom');\n\nvar _utils = require('../utils/');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\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 menuItemContainer = function menuItemContainer(Component) {\n var WrappedMenuItem = function (_React$Component) {\n _inherits(WrappedMenuItem, _React$Component);\n\n function WrappedMenuItem() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, WrappedMenuItem);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = WrappedMenuItem.__proto__ || Object.getPrototypeOf(WrappedMenuItem)).call.apply(_ref, [this].concat(args))), _this), _this._handleClick = function (e) {\n var _this$props = _this.props,\n option = _this$props.option,\n onClick = _this$props.onClick;\n\n\n _this.context.onMenuItemClick(option, e);\n onClick && onClick(e);\n }, _this._updateInitialItem = function (props) {\n var option = props.option,\n position = props.position;\n\n if (position === 0) {\n _this.context.onInitialItemChange(option);\n }\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(WrappedMenuItem, [{\n key: 'componentWillMount',\n value: function componentWillMount() {\n this._updateInitialItem(this.props);\n }\n }, {\n key: 'componentWillReceiveProps',\n value: function componentWillReceiveProps(nextProps, nextContext) {\n var currentlyActive = this.context.activeIndex === this.props.position;\n var option = nextProps.option,\n position = nextProps.position;\n var activeIndex = nextContext.activeIndex,\n onActiveItemChange = nextContext.onActiveItemChange;\n\n\n if (position == null) {\n return;\n }\n\n // The item will become active.\n if (activeIndex === position) {\n // Ensures that if the menu items exceed the bounds of the menu, the\n // menu will scroll up or down as the user hits the arrow keys.\n (0, _utils.scrollIntoViewIfNeeded)((0, _reactDom.findDOMNode)(this));\n\n // Fire the change handler when the menu item becomes active.\n !currentlyActive && onActiveItemChange(option);\n }\n\n this._updateInitialItem(nextProps);\n }\n }, {\n key: 'render',\n value: function render() {\n var _context = this.context,\n activeIndex = _context.activeIndex,\n isOnlyResult = _context.isOnlyResult;\n\n var _props = this.props,\n label = _props.label,\n option = _props.option,\n position = _props.position,\n props = _objectWithoutProperties(_props, ['label', 'option', 'position']);\n\n var active = isOnlyResult || activeIndex === position;\n\n return _react2.default.createElement(Component, _extends({}, props, {\n active: active,\n 'aria-label': label,\n 'aria-selected': active,\n id: (0, _utils.getMenuItemId)(position),\n onClick: this._handleClick,\n onMouseDown: _utils.preventInputBlur,\n role: 'option'\n }));\n }\n }]);\n\n return WrappedMenuItem;\n }(_react2.default.Component);\n\n WrappedMenuItem.displayName = 'MenuItemContainer(' + (0, _utils.getDisplayName)(Component) + ')';\n\n WrappedMenuItem.propTypes = {\n option: _propTypes2.default.oneOfType([_propTypes2.default.object, _propTypes2.default.string]).isRequired,\n position: _propTypes2.default.number\n };\n\n WrappedMenuItem.contextTypes = {\n activeIndex: _propTypes2.default.number.isRequired,\n isOnlyResult: _propTypes2.default.bool.isRequired,\n onActiveItemChange: _propTypes2.default.func.isRequired,\n onInitialItemChange: _propTypes2.default.func.isRequired,\n onMenuItemClick: _propTypes2.default.func.isRequired\n };\n\n return WrappedMenuItem;\n};\n\nexports.default = menuItemContainer;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.BaseMenuItem = undefined;\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\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _noop = require('lodash/noop');\n\nvar _noop2 = _interopRequireDefault(_noop);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _menuItemContainer = require('./containers/menuItemContainer');\n\nvar _menuItemContainer2 = _interopRequireDefault(_menuItemContainer);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\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 BaseMenuItem = function (_React$Component) {\n _inherits(BaseMenuItem, _React$Component);\n\n function BaseMenuItem() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, BaseMenuItem);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = BaseMenuItem.__proto__ || Object.getPrototypeOf(BaseMenuItem)).call.apply(_ref, [this].concat(args))), _this), _this._handleClick = function (e) {\n var _this$props = _this.props,\n disabled = _this$props.disabled,\n onClick = _this$props.onClick;\n\n\n e.preventDefault();\n !disabled && onClick(e);\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(BaseMenuItem, [{\n key: 'render',\n value: function render() {\n var _props = this.props,\n active = _props.active,\n children = _props.children,\n className = _props.className,\n disabled = _props.disabled,\n onClick = _props.onClick,\n onMouseDown = _props.onMouseDown,\n props = _objectWithoutProperties(_props, ['active', 'children', 'className', 'disabled', 'onClick', 'onMouseDown']);\n\n var conditionalClassNames = {\n 'active': active,\n 'disabled': disabled\n };\n\n return (\n /* eslint-disable jsx-a11y/anchor-is-valid */\n _react2.default.createElement(\n 'li',\n _extends({}, props, {\n className: (0, _classnames2.default)(conditionalClassNames, className) }),\n _react2.default.createElement(\n 'a',\n {\n className: (0, _classnames2.default)('dropdown-item', conditionalClassNames),\n href: '#',\n onClick: this._handleClick,\n onMouseDown: onMouseDown },\n children\n )\n )\n /* eslint-enable jsx-a11y/anchor-is-valid */\n\n );\n }\n }]);\n\n return BaseMenuItem;\n}(_react2.default.Component);\n\nBaseMenuItem.defaultProps = {\n onClick: _noop2.default\n};\n\nexports.BaseMenuItem = BaseMenuItem;\nexports.default = (0, _menuItemContainer2.default)(BaseMenuItem);","'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\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _isRequiredForA11y = require('prop-types-extra/lib/isRequiredForA11y');\n\nvar _isRequiredForA11y2 = _interopRequireDefault(_isRequiredForA11y);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _MenuItem = require('./MenuItem.react');\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\n/**\n * Menu component that handles empty state when passed a set of results.\n */\nvar Menu = function (_React$Component) {\n _inherits(Menu, _React$Component);\n\n function Menu() {\n _classCallCheck(this, Menu);\n\n return _possibleConstructorReturn(this, (Menu.__proto__ || Object.getPrototypeOf(Menu)).apply(this, arguments));\n }\n\n _createClass(Menu, [{\n key: 'render',\n value: function render() {\n var _props = this.props,\n children = _props.children,\n className = _props.className,\n emptyLabel = _props.emptyLabel,\n id = _props.id,\n innerRef = _props.innerRef,\n maxHeight = _props.maxHeight,\n style = _props.style;\n\n\n var contents = _react.Children.count(children) === 0 ? _react2.default.createElement(\n _MenuItem.BaseMenuItem,\n { disabled: true },\n emptyLabel\n ) : children;\n\n return _react2.default.createElement(\n 'ul',\n {\n className: (0, _classnames2.default)('rbt-menu', 'dropdown-menu', 'show', className),\n id: id,\n ref: innerRef,\n role: 'listbox',\n style: _extends({}, style, {\n display: 'block',\n maxHeight: maxHeight,\n overflow: 'auto'\n }) },\n contents\n );\n }\n }]);\n\n return Menu;\n}(_react2.default.Component);\n\nMenu.propTypes = {\n /**\n * Needed for accessibility.\n */\n id: (0, _isRequiredForA11y2.default)(_propTypes2.default.oneOfType([_propTypes2.default.number, _propTypes2.default.string])),\n /**\n * Maximum height of the dropdown menu.\n */\n maxHeight: _propTypes2.default.string\n};\n\nMenu.defaultProps = {\n maxHeight: '300px'\n};\n\nMenu.Divider = function (props) {\n return _react2.default.createElement('li', { className: 'divider dropdown-divider', role: 'separator' });\n};\n\nMenu.Header = function (props) {\n return _react2.default.createElement('li', _extends({}, props, { className: 'dropdown-header' }));\n};\n\nexports.default = Menu;","'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\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _Highlighter = require('./Highlighter.react');\n\nvar _Highlighter2 = _interopRequireDefault(_Highlighter);\n\nvar _Menu = require('./Menu.react');\n\nvar _Menu2 = _interopRequireDefault(_Menu);\n\nvar _MenuItem = require('./MenuItem.react');\n\nvar _MenuItem2 = _interopRequireDefault(_MenuItem);\n\nvar _utils = require('./utils/');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\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 TypeaheadMenu = function (_React$Component) {\n _inherits(TypeaheadMenu, _React$Component);\n\n function TypeaheadMenu() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, TypeaheadMenu);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = TypeaheadMenu.__proto__ || Object.getPrototypeOf(TypeaheadMenu)).call.apply(_ref, [this].concat(args))), _this), _this._renderMenuItem = function (option, idx) {\n var _this$props = _this.props,\n labelKey = _this$props.labelKey,\n newSelectionPrefix = _this$props.newSelectionPrefix,\n renderMenuItemChildren = _this$props.renderMenuItemChildren,\n text = _this$props.text;\n\n\n var label = (0, _utils.getOptionLabel)(option, labelKey);\n\n var menuItemProps = {\n disabled: option.disabled,\n key: idx,\n label: label,\n option: option,\n position: idx\n };\n\n if (option.customOption) {\n return _react2.default.createElement(\n _MenuItem2.default,\n _extends({}, menuItemProps, {\n className: 'rbt-menu-custom-option',\n label: newSelectionPrefix + label }),\n newSelectionPrefix,\n _react2.default.createElement(\n _Highlighter2.default,\n { search: text },\n label\n )\n );\n }\n\n if (option.paginationOption) {\n return [_react2.default.createElement(_Menu2.default.Divider, { key: 'pagination-item-divider' }), _react2.default.createElement(\n _MenuItem2.default,\n _extends({}, menuItemProps, {\n className: 'rbt-menu-pagination-option',\n key: 'pagination-item' }),\n label\n )];\n }\n\n return _react2.default.createElement(\n _MenuItem2.default,\n menuItemProps,\n renderMenuItemChildren(option, _this.props, idx)\n );\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(TypeaheadMenu, [{\n key: 'render',\n value: function render() {\n var _props = this.props,\n labelKey = _props.labelKey,\n newSelectionPrefix = _props.newSelectionPrefix,\n options = _props.options,\n renderMenuItemChildren = _props.renderMenuItemChildren,\n text = _props.text,\n menuProps = _objectWithoutProperties(_props, ['labelKey', 'newSelectionPrefix', 'options', 'renderMenuItemChildren', 'text']);\n\n return _react2.default.createElement(\n _Menu2.default,\n menuProps,\n options.map(this._renderMenuItem)\n );\n }\n }]);\n\n return TypeaheadMenu;\n}(_react2.default.Component);\n\nTypeaheadMenu.propTypes = {\n /**\n * Provides the ability to specify a prefix before the user-entered text to\n * indicate that the selection will be new. No-op unless `allowNew={true}`.\n */\n newSelectionPrefix: _propTypes2.default.string,\n /**\n * Provides a hook for customized rendering of menu item contents.\n */\n renderMenuItemChildren: _propTypes2.default.func\n};\n\nTypeaheadMenu.defaultProps = {\n newSelectionPrefix: 'New selection: ',\n renderMenuItemChildren: function renderMenuItemChildren(option, props, idx) {\n return _react2.default.createElement(\n _Highlighter2.default,\n { search: props.text },\n (0, _utils.getOptionLabel)(option, props.labelKey)\n );\n }\n};\n\nexports.default = TypeaheadMenu;","var isObject = require('./isObject');\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n}());\n\nmodule.exports = baseCreate;\n","/**\n * The function whose prototype chain sequence wrappers inherit from.\n *\n * @private\n */\nfunction baseLodash() {\n // No operation performed.\n}\n\nmodule.exports = baseLodash;\n","var baseCreate = require('./_baseCreate'),\n baseLodash = require('./_baseLodash');\n\n/**\n * The base constructor for creating `lodash` wrapper objects.\n *\n * @private\n * @param {*} value The value to wrap.\n * @param {boolean} [chainAll] Enable explicit method chain sequences.\n */\nfunction LodashWrapper(value, chainAll) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__chain__ = !!chainAll;\n this.__index__ = 0;\n this.__values__ = undefined;\n}\n\nLodashWrapper.prototype = baseCreate(baseLodash.prototype);\nLodashWrapper.prototype.constructor = LodashWrapper;\n\nmodule.exports = LodashWrapper;\n","var WeakMap = require('./_WeakMap');\n\n/** Used to store function metadata. */\nvar metaMap = WeakMap && new WeakMap;\n\nmodule.exports = metaMap;\n","var metaMap = require('./_metaMap'),\n noop = require('./noop');\n\n/**\n * Gets metadata for `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {*} Returns the metadata for `func`.\n */\nvar getData = !metaMap ? noop : function(func) {\n return metaMap.get(func);\n};\n\nmodule.exports = getData;\n","/** Used to lookup unminified function names. */\nvar realNames = {};\n\nmodule.exports = realNames;\n","var realNames = require('./_realNames');\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 name of `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {string} Returns the function name.\n */\nfunction getFuncName(func) {\n var result = (func.name + ''),\n array = realNames[result],\n length = hasOwnProperty.call(realNames, result) ? array.length : 0;\n\n while (length--) {\n var data = array[length],\n otherFunc = data.func;\n if (otherFunc == null || otherFunc == func) {\n return data.name;\n }\n }\n return result;\n}\n\nmodule.exports = getFuncName;\n","var baseCreate = require('./_baseCreate'),\n baseLodash = require('./_baseLodash');\n\n/** Used as references for the maximum length and index of an array. */\nvar MAX_ARRAY_LENGTH = 4294967295;\n\n/**\n * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.\n *\n * @private\n * @constructor\n * @param {*} value The value to wrap.\n */\nfunction LazyWrapper(value) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__dir__ = 1;\n this.__filtered__ = false;\n this.__iteratees__ = [];\n this.__takeCount__ = MAX_ARRAY_LENGTH;\n this.__views__ = [];\n}\n\n// Ensure `LazyWrapper` is an instance of `baseLodash`.\nLazyWrapper.prototype = baseCreate(baseLodash.prototype);\nLazyWrapper.prototype.constructor = LazyWrapper;\n\nmodule.exports = LazyWrapper;\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 LazyWrapper = require('./_LazyWrapper'),\n LodashWrapper = require('./_LodashWrapper'),\n copyArray = require('./_copyArray');\n\n/**\n * Creates a clone of `wrapper`.\n *\n * @private\n * @param {Object} wrapper The wrapper to clone.\n * @returns {Object} Returns the cloned wrapper.\n */\nfunction wrapperClone(wrapper) {\n if (wrapper instanceof LazyWrapper) {\n return wrapper.clone();\n }\n var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);\n result.__actions__ = copyArray(wrapper.__actions__);\n result.__index__ = wrapper.__index__;\n result.__values__ = wrapper.__values__;\n return result;\n}\n\nmodule.exports = wrapperClone;\n","var LazyWrapper = require('./_LazyWrapper'),\n LodashWrapper = require('./_LodashWrapper'),\n baseLodash = require('./_baseLodash'),\n isArray = require('./isArray'),\n isObjectLike = require('./isObjectLike'),\n wrapperClone = require('./_wrapperClone');\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 a `lodash` object which wraps `value` to enable implicit method\n * chain sequences. Methods that operate on and return arrays, collections,\n * and functions can be chained together. Methods that retrieve a single value\n * or may return a primitive value will automatically end the chain sequence\n * and return the unwrapped value. Otherwise, the value must be unwrapped\n * with `_#value`.\n *\n * Explicit chain sequences, which must be unwrapped with `_#value`, may be\n * enabled using `_.chain`.\n *\n * The execution of chained methods is lazy, that is, it's deferred until\n * `_#value` is implicitly or explicitly called.\n *\n * Lazy evaluation allows several methods to support shortcut fusion.\n * Shortcut fusion is an optimization to merge iteratee calls; this avoids\n * the creation of intermediate arrays and can greatly reduce the number of\n * iteratee executions. Sections of a chain sequence qualify for shortcut\n * fusion if the section is applied to an array and iteratees accept only\n * one argument. The heuristic for whether a section qualifies for shortcut\n * fusion is subject to change.\n *\n * Chaining is supported in custom builds as long as the `_#value` method is\n * directly or indirectly included in the build.\n *\n * In addition to lodash methods, wrappers have `Array` and `String` methods.\n *\n * The wrapper `Array` methods are:\n * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`\n *\n * The wrapper `String` methods are:\n * `replace` and `split`\n *\n * The wrapper methods that support shortcut fusion are:\n * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,\n * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,\n * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`\n *\n * The chainable wrapper methods are:\n * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,\n * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,\n * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,\n * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,\n * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,\n * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,\n * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,\n * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,\n * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,\n * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,\n * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,\n * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,\n * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,\n * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,\n * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,\n * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,\n * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,\n * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,\n * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,\n * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,\n * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,\n * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,\n * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,\n * `zipObject`, `zipObjectDeep`, and `zipWith`\n *\n * The wrapper methods that are **not** chainable by default are:\n * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,\n * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,\n * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,\n * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,\n * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,\n * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,\n * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,\n * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,\n * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,\n * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,\n * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,\n * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,\n * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,\n * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,\n * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,\n * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,\n * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,\n * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,\n * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,\n * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,\n * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,\n * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,\n * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,\n * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,\n * `upperFirst`, `value`, and `words`\n *\n * @name _\n * @constructor\n * @category Seq\n * @param {*} value The value to wrap in a `lodash` instance.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2, 3]);\n *\n * // Returns an unwrapped value.\n * wrapped.reduce(_.add);\n * // => 6\n *\n * // Returns a wrapped value.\n * var squares = wrapped.map(square);\n *\n * _.isArray(squares);\n * // => false\n *\n * _.isArray(squares.value());\n * // => true\n */\nfunction lodash(value) {\n if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {\n if (value instanceof LodashWrapper) {\n return value;\n }\n if (hasOwnProperty.call(value, '__wrapped__')) {\n return wrapperClone(value);\n }\n }\n return new LodashWrapper(value);\n}\n\n// Ensure wrappers are instances of `baseLodash`.\nlodash.prototype = baseLodash.prototype;\nlodash.prototype.constructor = lodash;\n\nmodule.exports = lodash;\n","var LazyWrapper = require('./_LazyWrapper'),\n getData = require('./_getData'),\n getFuncName = require('./_getFuncName'),\n lodash = require('./wrapperLodash');\n\n/**\n * Checks if `func` has a lazy counterpart.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` has a lazy counterpart,\n * else `false`.\n */\nfunction isLaziable(func) {\n var funcName = getFuncName(func),\n other = lodash[funcName];\n\n if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {\n return false;\n }\n if (func === other) {\n return true;\n }\n var data = getData(other);\n return !!data && func === data[0];\n}\n\nmodule.exports = isLaziable;\n","var LodashWrapper = require('./_LodashWrapper'),\n flatRest = require('./_flatRest'),\n getData = require('./_getData'),\n getFuncName = require('./_getFuncName'),\n isArray = require('./isArray'),\n isLaziable = require('./_isLaziable');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_CURRY_FLAG = 8,\n WRAP_PARTIAL_FLAG = 32,\n WRAP_ARY_FLAG = 128,\n WRAP_REARG_FLAG = 256;\n\n/**\n * Creates a `_.flow` or `_.flowRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new flow function.\n */\nfunction createFlow(fromRight) {\n return flatRest(function(funcs) {\n var length = funcs.length,\n index = length,\n prereq = LodashWrapper.prototype.thru;\n\n if (fromRight) {\n funcs.reverse();\n }\n while (index--) {\n var func = funcs[index];\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (prereq && !wrapper && getFuncName(func) == 'wrapper') {\n var wrapper = new LodashWrapper([], true);\n }\n }\n index = wrapper ? index : length;\n while (++index < length) {\n func = funcs[index];\n\n var funcName = getFuncName(func),\n data = funcName == 'wrapper' ? getData(func) : undefined;\n\n if (data && isLaziable(data[0]) &&\n data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) &&\n !data[4].length && data[9] == 1\n ) {\n wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);\n } else {\n wrapper = (func.length == 1 && isLaziable(func))\n ? wrapper[funcName]()\n : wrapper.thru(func);\n }\n }\n return function() {\n var args = arguments,\n value = args[0];\n\n if (wrapper && args.length == 1 && isArray(value)) {\n return wrapper.plant(value).value();\n }\n var index = 0,\n result = length ? funcs[index].apply(this, args) : value;\n\n while (++index < length) {\n result = funcs[index].call(this, result);\n }\n return result;\n };\n });\n}\n\nmodule.exports = createFlow;\n","var createFlow = require('./_createFlow');\n\n/**\n * This method is like `_.flow` except that it creates a function that\n * invokes the given functions from right to left.\n *\n * @static\n * @since 3.0.0\n * @memberOf _\n * @category Util\n * @param {...(Function|Function[])} [funcs] The functions to invoke.\n * @returns {Function} Returns the new composite function.\n * @see _.flow\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var addSquare = _.flowRight([square, _.add]);\n * addSquare(1, 2);\n * // => 9\n */\nvar flowRight = createFlow(true);\n\nmodule.exports = flowRight;\n","var toString = require('./toString');\n\n/** Used to generate unique IDs. */\nvar idCounter = 0;\n\n/**\n * Generates a unique ID. If `prefix` is given, the ID is appended to it.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {string} [prefix=''] The value to prefix the ID with.\n * @returns {string} Returns the unique ID.\n * @example\n *\n * _.uniqueId('contact_');\n * // => 'contact_104'\n *\n * _.uniqueId();\n * // => '105'\n */\nfunction uniqueId(prefix) {\n var id = ++idCounter;\n return toString(prefix) + id;\n}\n\nmodule.exports = uniqueId;\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\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 _head = require('lodash/head');\n\nvar _head2 = _interopRequireDefault(_head);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _keyCode = require('../constants/keyCode');\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 highlightOnlyResultContainer(Typeahead) {\n var WrappedTypeahead = function (_React$Component) {\n _inherits(WrappedTypeahead, _React$Component);\n\n function WrappedTypeahead() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, WrappedTypeahead);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = WrappedTypeahead.__proto__ || Object.getPrototypeOf(WrappedTypeahead)).call.apply(_ref, [this].concat(args))), _this), _this.state = {\n isOnlyResult: false\n }, _this._handleKeyDown = function (e) {\n var _this$props = _this.props,\n initialItem = _this$props.initialItem,\n onKeyDown = _this$props.onKeyDown,\n onAdd = _this$props.onAdd;\n\n\n switch (e.keyCode) {\n case _keyCode.RETURN:\n if (_this.state.isOnlyResult) {\n onAdd(initialItem);\n }\n break;\n }\n\n onKeyDown(e);\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(WrappedTypeahead, [{\n key: 'componentWillReceiveProps',\n value: function componentWillReceiveProps(nextProps) {\n var allowNew = nextProps.allowNew,\n highlightOnlyResult = nextProps.highlightOnlyResult,\n results = nextProps.results;\n\n\n if (!highlightOnlyResult || allowNew) {\n return;\n }\n\n if (results.length !== this.props.results.length) {\n this.setState({\n isOnlyResult: results.length === 1 && !(0, _head2.default)(results).disabled\n });\n }\n }\n }, {\n key: 'getChildContext',\n value: function getChildContext() {\n return {\n isOnlyResult: this.state.isOnlyResult\n };\n }\n }, {\n key: 'render',\n value: function render() {\n return _react2.default.createElement(Typeahead, _extends({}, this.props, {\n onKeyDown: this._handleKeyDown\n }));\n }\n }]);\n\n return WrappedTypeahead;\n }(_react2.default.Component);\n\n WrappedTypeahead.childContextTypes = {\n isOnlyResult: _propTypes2.default.bool.isRequired\n };\n\n return WrappedTypeahead;\n}\n\nexports.default = highlightOnlyResultContainer;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = caseSensitiveType;\n\nvar _warn = require('../utils/warn');\n\nvar _warn2 = _interopRequireDefault(_warn);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction caseSensitiveType(props, propName, componentName) {\n var caseSensitive = props.caseSensitive,\n filterBy = props.filterBy;\n\n (0, _warn2.default)(!caseSensitive || typeof filterBy !== 'function', 'Your `filterBy` function will override the `caseSensitive` prop.');\n}","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = checkPropType;\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n/**\n * Allows additional warnings or messaging related to prop validation.\n */\nfunction checkPropType(validator, callback) {\n return function (props, propName, componentName) {\n _propTypes2.default.checkPropTypes(_defineProperty({}, propName, validator), props, 'prop', componentName);\n\n typeof callback === 'function' && callback(props, propName, componentName);\n };\n}","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = defaultInputValueType;\n\nvar _warn = require('../utils/warn');\n\nvar _warn2 = _interopRequireDefault(_warn);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction defaultInputValueType(props, propName, componentName) {\n var defaultInputValue = props.defaultInputValue,\n defaultSelected = props.defaultSelected,\n multiple = props.multiple,\n selected = props.selected;\n\n var name = defaultSelected.length ? 'defaultSelected' : 'selected';\n\n (0, _warn2.default)(!(!multiple && defaultInputValue && (defaultSelected.length || selected && selected.length)), '`defaultInputValue` will be overridden by the value from `' + name + '`.');\n}","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = highlightOnlyResultType;\n\nvar _warn = require('../utils/warn');\n\nvar _warn2 = _interopRequireDefault(_warn);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction highlightOnlyResultType(props, propName, componentName) {\n var allowNew = props.allowNew,\n highlightOnlyResult = props.highlightOnlyResult;\n\n (0, _warn2.default)(!(highlightOnlyResult && allowNew), '`highlightOnlyResult` will not work with `allowNew`.');\n}","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = ignoreDiacriticsType;\n\nvar _warn = require('../utils/warn');\n\nvar _warn2 = _interopRequireDefault(_warn);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction ignoreDiacriticsType(props, propName, componentName) {\n var filterBy = props.filterBy,\n ignoreDiacritics = props.ignoreDiacritics;\n\n (0, _warn2.default)(ignoreDiacritics || typeof filterBy !== 'function', 'Your `filterBy` function will override the `ignoreDiacritics` prop.');\n}","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = inputPropsType;\n\nvar _isPlainObject = require('lodash/isPlainObject');\n\nvar _isPlainObject2 = _interopRequireDefault(_isPlainObject);\n\nvar _warn = require('../utils/warn');\n\nvar _warn2 = _interopRequireDefault(_warn);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar BLACKLIST = [{ alt: 'onBlur', prop: 'onBlur' }, { alt: 'onInputChange', prop: 'onChange' }, { alt: 'onFocus', prop: 'onFocus' }, { alt: 'onKeyDown', prop: 'onKeyDown' }];\n\nfunction inputPropsType(props, propName, componentName) {\n var inputProps = props.inputProps;\n\n if (!(inputProps && (0, _isPlainObject2.default)(inputProps))) {\n return;\n }\n\n // Blacklisted properties.\n BLACKLIST.forEach(function (_ref) {\n var alt = _ref.alt,\n prop = _ref.prop;\n\n var msg = alt ? ' Use the top-level `' + alt + '` prop instead.' : null;\n (0, _warn2.default)(!inputProps.hasOwnProperty(prop), 'The `' + prop + '` property of `inputProps` will be ignored.' + msg);\n });\n}","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = labelKeyType;\n\nvar _warn = require('../utils/warn');\n\nvar _warn2 = _interopRequireDefault(_warn);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction labelKeyType(props, propName, componentName) {\n var allowNew = props.allowNew,\n labelKey = props.labelKey;\n\n (0, _warn2.default)(!(typeof labelKey === 'function' && allowNew), '`labelKey` must be a string when `allowNew={true}`.');\n}","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _propTypes2.default.oneOfType([_propTypes2.default.arrayOf(_propTypes2.default.object.isRequired), _propTypes2.default.arrayOf(_propTypes2.default.string.isRequired)]);","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.optionType = exports.labelKeyType = exports.inputPropsType = exports.ignoreDiacriticsType = exports.highlightOnlyResultType = exports.defaultInputValueType = exports.checkPropType = exports.caseSensitiveType = undefined;\n\nvar _caseSensitiveType2 = require('./caseSensitiveType');\n\nvar _caseSensitiveType3 = _interopRequireDefault(_caseSensitiveType2);\n\nvar _checkPropType2 = require('./checkPropType');\n\nvar _checkPropType3 = _interopRequireDefault(_checkPropType2);\n\nvar _defaultInputValueType2 = require('./defaultInputValueType');\n\nvar _defaultInputValueType3 = _interopRequireDefault(_defaultInputValueType2);\n\nvar _highlightOnlyResultType2 = require('./highlightOnlyResultType');\n\nvar _highlightOnlyResultType3 = _interopRequireDefault(_highlightOnlyResultType2);\n\nvar _ignoreDiacriticsType2 = require('./ignoreDiacriticsType');\n\nvar _ignoreDiacriticsType3 = _interopRequireDefault(_ignoreDiacriticsType2);\n\nvar _inputPropsType2 = require('./inputPropsType');\n\nvar _inputPropsType3 = _interopRequireDefault(_inputPropsType2);\n\nvar _labelKeyType2 = require('./labelKeyType');\n\nvar _labelKeyType3 = _interopRequireDefault(_labelKeyType2);\n\nvar _optionType2 = require('./optionType');\n\nvar _optionType3 = _interopRequireDefault(_optionType2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.caseSensitiveType = _caseSensitiveType3.default; /* eslint-disable object-curly-spacing */\n\nexports.checkPropType = _checkPropType3.default;\nexports.defaultInputValueType = _defaultInputValueType3.default;\nexports.highlightOnlyResultType = _highlightOnlyResultType3.default;\nexports.ignoreDiacriticsType = _ignoreDiacriticsType3.default;\nexports.inputPropsType = _inputPropsType3.default;\nexports.labelKeyType = _labelKeyType3.default;\nexports.optionType = _optionType3.default;\n/* eslint-enable object-curly-spacing */","'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\nvar _flowRight = require('lodash/flowRight');\n\nvar _flowRight2 = _interopRequireDefault(_flowRight);\n\nvar _head = require('lodash/head');\n\nvar _head2 = _interopRequireDefault(_head);\n\nvar _isEqual = require('lodash/isEqual');\n\nvar _isEqual2 = _interopRequireDefault(_isEqual);\n\nvar _noop = require('lodash/noop');\n\nvar _noop2 = _interopRequireDefault(_noop);\n\nvar _uniqueId = require('lodash/uniqueId');\n\nvar _uniqueId2 = _interopRequireDefault(_uniqueId);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _reactOnclickoutside = require('react-onclickoutside');\n\nvar _reactOnclickoutside2 = _interopRequireDefault(_reactOnclickoutside);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _highlightOnlyResultContainer = require('./highlightOnlyResultContainer');\n\nvar _highlightOnlyResultContainer2 = _interopRequireDefault(_highlightOnlyResultContainer);\n\nvar _propTypes3 = require('../propTypes/');\n\nvar _utils = require('../utils/');\n\nvar _defaultLabelKey = require('../constants/defaultLabelKey');\n\nvar _keyCode = require('../constants/keyCode');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _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 genId() {\n var prefix = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n\n return prefix + Math.random().toString(36).substr(2, 12);\n}\n\nfunction getInitialState(props) {\n var defaultInputValue = props.defaultInputValue,\n defaultSelected = props.defaultSelected,\n maxResults = props.maxResults,\n multiple = props.multiple;\n\n\n var selected = props.selected ? props.selected.slice() : defaultSelected.slice();\n\n var text = defaultInputValue;\n\n if (!multiple && selected.length) {\n // Set the text if an initial selection is passed in.\n text = (0, _utils.getOptionLabel)((0, _head2.default)(selected), props.labelKey);\n\n if (selected.length > 1) {\n // Limit to 1 selection in single-select mode.\n selected = selected.slice(0, 1);\n }\n }\n\n return {\n activeIndex: -1,\n activeItem: null,\n initialItem: null,\n selected: selected,\n showMenu: false,\n shownResults: maxResults,\n text: text\n };\n}\n\nfunction typeaheadContainer(Typeahead) {\n // Nested HOCs to encapsulate behaviors. In order from outer to inner.\n Typeahead = (0, _flowRight2.default)(_highlightOnlyResultContainer2.default)(Typeahead);\n\n var WrappedTypeahead = function (_React$Component) {\n _inherits(WrappedTypeahead, _React$Component);\n\n function WrappedTypeahead(props) {\n _classCallCheck(this, WrappedTypeahead);\n\n var _this = _possibleConstructorReturn(this, (WrappedTypeahead.__proto__ || Object.getPrototypeOf(WrappedTypeahead)).call(this, props));\n\n _this.blur = function () {\n _this.getInput().blur();\n _this._hideMenu();\n };\n\n _this.clear = function () {\n _this.setState(_extends({}, getInitialState(_this.props), {\n selected: [],\n text: ''\n }));\n };\n\n _this.focus = function () {\n _this.getInput().focus();\n };\n\n _this.getInput = function () {\n return _this._input;\n };\n\n _this._handleActiveIndexChange = function (activeIndex) {\n var newState = { activeIndex: activeIndex };\n\n if (activeIndex === -1) {\n // Reset the active item if there is no active index.\n newState.activeItem = null;\n }\n\n _this.setState(newState);\n };\n\n _this._handleActiveItemChange = function (activeItem) {\n _this.setState({ activeItem: activeItem });\n };\n\n _this._handleClear = function () {\n _this.clear();\n _this._updateSelected([]);\n };\n\n _this._handleFocus = function (e) {\n _this.setState({ showMenu: true }, function () {\n return _this.props.onFocus(e);\n });\n };\n\n _this._handleInitialItemChange = function (initialItem) {\n var labelKey = _this.props.labelKey;\n\n var currentItem = _this.state.initialItem;\n\n // Don't update the initial item if it hasn't changed. For custom items,\n // compare the `labelKey` values since a unique id is generated each time,\n // causing the comparison to always return false otherwise.\n if ((0, _isEqual2.default)(initialItem, currentItem) || currentItem && initialItem && initialItem.customOption && initialItem[labelKey] === currentItem[labelKey]) {\n return;\n }\n\n _this.setState({ initialItem: initialItem });\n };\n\n _this._handleInputChange = function (e) {\n e.persist();\n\n var text = e.target.value;\n\n var _getInitialState = getInitialState(_this.props),\n activeIndex = _getInitialState.activeIndex,\n activeItem = _getInitialState.activeItem,\n shownResults = _getInitialState.shownResults;\n\n var _this$props = _this.props,\n multiple = _this$props.multiple,\n onInputChange = _this$props.onInputChange;\n\n\n _this.setState({\n activeIndex: activeIndex,\n activeItem: activeItem,\n showMenu: true,\n shownResults: shownResults,\n text: text\n }, function () {\n return onInputChange(text, e);\n });\n\n // Clear any selections if text is entered in single-select mode.\n if (_this.state.selected.length && !multiple) {\n _this._updateSelected([]);\n }\n };\n\n _this._handleKeyDown = function (e, results, isMenuShown) {\n var activeItem = _this.state.activeItem;\n\n\n switch (e.keyCode) {\n case _keyCode.UP:\n case _keyCode.DOWN:\n if (!isMenuShown) {\n _this._showMenu();\n break;\n }\n\n var activeIndex = _this.state.activeIndex;\n\n // Prevents input cursor from going to the beginning when pressing up.\n\n e.preventDefault();\n\n // Increment or decrement index based on user keystroke.\n activeIndex += e.keyCode === _keyCode.UP ? -1 : 1;\n\n // Skip over any disabled options.\n while (results[activeIndex] && results[activeIndex].disabled) {\n activeIndex += e.keyCode === _keyCode.UP ? -1 : 1;\n }\n\n // If we've reached the end, go back to the beginning or vice-versa.\n if (activeIndex === results.length) {\n activeIndex = -1;\n } else if (activeIndex === -2) {\n activeIndex = results.length - 1;\n }\n\n _this._handleActiveIndexChange(activeIndex);\n break;\n case _keyCode.ESC:\n isMenuShown && _this._hideMenu();\n break;\n case _keyCode.RETURN:\n if (!isMenuShown) {\n break;\n }\n\n // Prevent form submission while menu is open.\n e.preventDefault();\n activeItem && _this._handleMenuItemSelect(activeItem, e);\n break;\n case _keyCode.RIGHT:\n case _keyCode.TAB:\n if (!isMenuShown) {\n break;\n }\n\n if (activeItem && !activeItem.paginationOption) {\n // Prevent blurring when selecting the active item.\n e.keyCode === _keyCode.TAB && e.preventDefault();\n _this._handleSelectionAdd(activeItem);\n break;\n }\n\n if (e.keyCode === _keyCode.TAB) {\n _this._hideMenu();\n }\n break;\n }\n\n _this.props.onKeyDown(e);\n };\n\n _this._handleMenuItemSelect = function (option, e) {\n if (option.paginationOption) {\n _this._handlePaginate(e);\n } else {\n _this._handleSelectionAdd(option);\n }\n };\n\n _this._handlePaginate = function (e) {\n e.persist();\n var _this$props2 = _this.props,\n maxResults = _this$props2.maxResults,\n onPaginate = _this$props2.onPaginate;\n\n var shownResults = _this.state.shownResults + maxResults;\n\n _this.setState({ shownResults: shownResults }, function () {\n return onPaginate(e, shownResults);\n });\n };\n\n _this._handleSelectionAdd = function (selection) {\n var _this$props3 = _this.props,\n multiple = _this$props3.multiple,\n labelKey = _this$props3.labelKey;\n\n\n var selected = void 0;\n var text = void 0;\n\n if (multiple) {\n // If multiple selections are allowed, add the new selection to the\n // existing selections.\n selected = _this.state.selected.concat(selection);\n text = '';\n } else {\n // If only a single selection is allowed, replace the existing selection\n // with the new one.\n selected = [selection];\n text = (0, _utils.getOptionLabel)(selection, labelKey);\n }\n\n _this._hideMenu();\n _this.setState({\n initialItem: selection,\n text: text\n });\n\n // Text must be updated before the selection to fix #211.\n // TODO: Find a more robust way of solving the issue.\n _this._updateSelected(selected);\n };\n\n _this._handleSelectionRemove = function (selection) {\n var selected = _this.state.selected.filter(function (option) {\n return !(0, _isEqual2.default)(option, selection);\n });\n\n // Make sure the input stays focused after the item is removed.\n _this.focus();\n _this._hideMenu();\n _this._updateSelected(selected);\n };\n\n _this.handleClickOutside = function (e) {\n _this.state.showMenu && _this._hideMenu();\n };\n\n _this._hideMenu = function () {\n var _getInitialState2 = getInitialState(_this.props),\n activeIndex = _getInitialState2.activeIndex,\n activeItem = _getInitialState2.activeItem,\n showMenu = _getInitialState2.showMenu,\n shownResults = _getInitialState2.shownResults;\n\n _this.setState({\n activeIndex: activeIndex,\n activeItem: activeItem,\n showMenu: showMenu,\n shownResults: shownResults\n });\n };\n\n _this._showMenu = function () {\n _this.setState({ showMenu: true });\n };\n\n _this._updateSelected = function (selected) {\n _this.setState({ selected: selected }, function () {\n return _this.props.onChange(selected);\n });\n };\n\n _this.state = getInitialState(props);\n return _this;\n }\n\n _createClass(WrappedTypeahead, [{\n key: 'getChildContext',\n value: function getChildContext() {\n return {\n activeIndex: this.state.activeIndex,\n onActiveItemChange: this._handleActiveItemChange,\n onInitialItemChange: this._handleInitialItemChange,\n onMenuItemClick: this._handleMenuItemSelect\n };\n }\n }, {\n key: 'componentWillMount',\n value: function componentWillMount() {\n // Generate random id here since doing it in defaultProps will generate\n // the same id for every instance.\n this._menuId = genId('rbt-menu-');\n }\n }, {\n key: 'componentDidMount',\n value: function componentDidMount() {\n this.props.autoFocus && this.focus();\n }\n }, {\n key: 'componentWillReceiveProps',\n value: function componentWillReceiveProps(nextProps) {\n var labelKey = nextProps.labelKey,\n multiple = nextProps.multiple,\n selected = nextProps.selected;\n\n // If new selections are passed via props, treat as a controlled input.\n\n if (selected && !(0, _isEqual2.default)(selected, this.state.selected)) {\n this.setState({ selected: selected });\n\n if (multiple) {\n return;\n }\n\n this.setState({\n text: selected.length ? (0, _utils.getOptionLabel)((0, _head2.default)(selected), labelKey) : ''\n });\n }\n\n // Truncate selections when in single-select mode.\n var newSelected = selected || this.state.selected;\n if (!multiple && newSelected.length > 1) {\n newSelected = newSelected.slice(0, 1);\n this.setState({\n selected: newSelected,\n text: (0, _utils.getOptionLabel)((0, _head2.default)(newSelected), labelKey)\n });\n return;\n }\n\n if (multiple !== this.props.multiple) {\n this.setState({ text: '' });\n }\n }\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var mergedPropsAndState = _extends({}, this.props, this.state);\n\n var filterBy = mergedPropsAndState.filterBy,\n labelKey = mergedPropsAndState.labelKey,\n minLength = mergedPropsAndState.minLength,\n options = mergedPropsAndState.options,\n paginate = mergedPropsAndState.paginate,\n paginationText = mergedPropsAndState.paginationText,\n shownResults = mergedPropsAndState.shownResults,\n text = mergedPropsAndState.text;\n\n\n var results = [];\n if (text.length >= minLength) {\n var cb = Array.isArray(filterBy) ? _utils.defaultFilterBy : filterBy;\n results = options.filter(function (option) {\n return cb(option, mergedPropsAndState);\n });\n }\n\n // This must come before results are truncated.\n var shouldPaginate = paginate && results.length > shownResults;\n\n // Truncate results if necessary.\n results = (0, _utils.getTruncatedOptions)(results, shownResults);\n\n // Add the custom option if necessary.\n if ((0, _utils.addCustomOption)(results, mergedPropsAndState)) {\n results.push(_defineProperty({\n customOption: true,\n id: (0, _uniqueId2.default)('new-id-')\n }, (0, _utils.getStringLabelKey)(labelKey), text));\n }\n\n // Add the pagination item if necessary.\n if (shouldPaginate) {\n var _results$push2;\n\n results.push((_results$push2 = {}, _defineProperty(_results$push2, (0, _utils.getStringLabelKey)(labelKey), paginationText), _defineProperty(_results$push2, 'paginationOption', true), _results$push2));\n }\n\n // This must come after checks for the custom option and pagination.\n var isMenuShown = (0, _utils.isShown)(results, mergedPropsAndState);\n\n return _react2.default.createElement(Typeahead, _extends({}, mergedPropsAndState, {\n inputRef: function inputRef(input) {\n return _this2._input = input;\n },\n isMenuShown: isMenuShown,\n menuId: this.props.menuId || this._menuId,\n onAdd: this._handleSelectionAdd,\n onChange: this._handleInputChange,\n onClear: this._handleClear,\n onFocus: this._handleFocus,\n onInitialItemChange: this._handleInitialItemChange,\n onKeyDown: function onKeyDown(e) {\n return _this2._handleKeyDown(e, results, isMenuShown);\n },\n onRemove: this._handleSelectionRemove,\n results: results\n }));\n }\n\n /**\n * From `onClickOutside` HOC.\n */\n\n }]);\n\n return WrappedTypeahead;\n }(_react2.default.Component);\n\n WrappedTypeahead.displayName = 'TypeaheadContainer(' + (0, _utils.getDisplayName)(Typeahead) + ')';\n\n WrappedTypeahead.propTypes = {\n /**\n * For localized accessibility: Should return a string indicating the number\n * of results for screen readers. Receives the current results.\n */\n a11yNumResults: _propTypes2.default.func,\n /**\n * For localized accessibility: Should return a string indicating the number\n * of selections for screen readers. Receives the current selections.\n */\n a11yNumSelected: _propTypes2.default.func,\n /**\n * Specify menu alignment. The default value is `justify`, which makes the\n * menu as wide as the input and truncates long values. Specifying `left`\n * or `right` will align the menu to that side and the width will be\n * determined by the length of menu item values.\n */\n align: _propTypes2.default.oneOf(['justify', 'left', 'right']),\n /**\n * Allows the creation of new selections on the fly. Note that any new items\n * will be added to the list of selections, but not the list of original\n * options unless handled as such by `Typeahead`'s parent.\n *\n * If a function is specified, it will be used to determine whether a custom\n * option should be included. The return value should be true or false.\n */\n allowNew: _propTypes2.default.oneOfType([_propTypes2.default.bool, _propTypes2.default.func]),\n /**\n * Autofocus the input when the component initially mounts.\n */\n autoFocus: _propTypes2.default.bool,\n /**\n * Whether to render the menu inline or attach to `document.body`.\n */\n bodyContainer: _propTypes2.default.bool,\n /**\n * Whether or not filtering should be case-sensitive.\n */\n caseSensitive: (0, _propTypes3.checkPropType)(_propTypes2.default.bool, _propTypes3.caseSensitiveType),\n /**\n * Displays a button to clear the input when there are selections.\n */\n clearButton: _propTypes2.default.bool,\n /**\n * The initial value displayed in the text input.\n */\n defaultInputValue: (0, _propTypes3.checkPropType)(_propTypes2.default.string, _propTypes3.defaultInputValueType),\n /**\n * Specify any pre-selected options. Use only if you want the component to\n * be uncontrolled.\n */\n defaultSelected: _propTypes3.optionType,\n /**\n * Whether to disable the component.\n */\n disabled: _propTypes2.default.bool,\n /**\n * Specify whether the menu should appear above the input.\n */\n dropup: _propTypes2.default.bool,\n /**\n * Message to display in the menu if there are no valid results.\n */\n emptyLabel: _propTypes2.default.node,\n /**\n * Either an array of fields in `option` to search, or a custom filtering\n * callback.\n */\n filterBy: _propTypes2.default.oneOfType([_propTypes2.default.arrayOf(_propTypes2.default.string.isRequired), _propTypes2.default.func]),\n /**\n * Whether or not to automatically adjust the position of the menu when it\n * reaches the viewport boundaries.\n */\n flip: _propTypes2.default.bool,\n /**\n * Highlights the menu item if there is only one result and allows selecting\n * that item by hitting enter. Does not work with `allowNew`.\n */\n highlightOnlyResult: (0, _propTypes3.checkPropType)(_propTypes2.default.bool, _propTypes3.highlightOnlyResultType),\n /**\n * Whether the filter should ignore accents and other diacritical marks.\n */\n ignoreDiacritics: (0, _propTypes3.checkPropType)(_propTypes2.default.bool, _propTypes3.ignoreDiacriticsType),\n /**\n * Props to be applied directly to the input. `onBlur`, `onChange`,\n * `onFocus`, and `onKeyDown` are ignored.\n */\n inputProps: (0, _propTypes3.checkPropType)(_propTypes2.default.object, _propTypes3.inputPropsType),\n /**\n * Bootstrap 4 only. Adds the `is-invalid` classname to the `form-control`.\n */\n isInvalid: _propTypes2.default.bool,\n /**\n * Indicate whether an asynchronous data fetch is happening.\n */\n isLoading: _propTypes2.default.bool,\n /**\n * Bootstrap 4 only. Adds the `is-valid` classname to the `form-control`.\n */\n isValid: _propTypes2.default.bool,\n /**\n * Specify the option key to use for display or a function returning the\n * display string. By default, the selector will use the `label` key.\n */\n labelKey: (0, _propTypes3.checkPropType)(_propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.func]), _propTypes3.labelKeyType),\n /**\n * Maximum number of results to display by default. Mostly done for\n * performance reasons so as not to render too many DOM nodes in the case of\n * large data sets.\n */\n maxResults: _propTypes2.default.number,\n /**\n * Id applied to the top-level menu element. Required for accessibility.\n */\n menuId: _propTypes2.default.oneOfType([_propTypes2.default.number, _propTypes2.default.string]),\n /**\n * Number of input characters that must be entered before showing results.\n */\n minLength: _propTypes2.default.number,\n /**\n * Whether or not multiple selections are allowed.\n */\n multiple: _propTypes2.default.bool,\n /**\n * Invoked when the input is blurred. Receives an event.\n */\n onBlur: _propTypes2.default.func,\n /**\n * Invoked whenever items are added or removed. Receives an array of the\n * selected options.\n */\n onChange: _propTypes2.default.func,\n /**\n * Invoked when the input is focused. Receives an event.\n */\n onFocus: _propTypes2.default.func,\n /**\n * Invoked when the input value changes. Receives the string value of the\n * input.\n */\n onInputChange: _propTypes2.default.func,\n /**\n * Invoked when a key is pressed. Receives an event.\n */\n onKeyDown: _propTypes2.default.func,\n /**\n * Invoked when the menu is hidden.\n */\n onMenuHide: _propTypes2.default.func,\n /**\n * Invoked when the menu is shown.\n */\n onMenuShow: _propTypes2.default.func,\n /**\n * Invoked when the pagination menu item is clicked. Receives an event.\n */\n onPaginate: _propTypes2.default.func,\n /**\n * Full set of options, including pre-selected options. Must either be an\n * array of objects (recommended) or strings.\n */\n options: _propTypes3.optionType.isRequired,\n /**\n * Give user the ability to display additional results if the number of\n * results exceeds `maxResults`.\n */\n paginate: _propTypes2.default.bool,\n /**\n * Prompt displayed when large data sets are paginated.\n */\n paginationText: _propTypes2.default.string,\n /**\n * Placeholder text for the input.\n */\n placeholder: _propTypes2.default.string,\n /**\n * Callback for custom menu rendering.\n */\n renderMenu: _propTypes2.default.func,\n /**\n * The selected option(s) displayed in the input. Use this prop if you want\n * to control the component via its parent.\n */\n selected: _propTypes3.optionType,\n /**\n * Allows selecting the hinted result by pressing enter.\n */\n selectHintOnEnter: _propTypes2.default.bool\n };\n\n WrappedTypeahead.defaultProps = {\n a11yNumResults: function a11yNumResults(results) {\n var resultString = (0, _utils.pluralize)('result', results.length);\n return resultString + '. Use up and down arrow keys to navigate.';\n },\n a11yNumSelected: function a11yNumSelected(selected) {\n return (0, _utils.pluralize)('selection', selected.length);\n },\n align: 'justify',\n allowNew: false,\n autoFocus: false,\n bodyContainer: false,\n caseSensitive: false,\n clearButton: false,\n defaultInputValue: '',\n defaultSelected: [],\n disabled: false,\n dropup: false,\n emptyLabel: 'No matches found.',\n filterBy: [],\n flip: false,\n highlightOnlyResult: false,\n ignoreDiacritics: true,\n inputProps: {},\n isInvalid: false,\n isLoading: false,\n isValid: false,\n labelKey: _defaultLabelKey.DEFAULT_LABELKEY,\n maxResults: 100,\n minLength: 0,\n multiple: false,\n onBlur: _noop2.default,\n onChange: _noop2.default,\n onFocus: _noop2.default,\n onInputChange: _noop2.default,\n onKeyDown: _noop2.default,\n onMenuHide: _noop2.default,\n onMenuShow: _noop2.default,\n onPaginate: _noop2.default,\n paginate: true,\n paginationText: 'Display additional results...',\n placeholder: '',\n selectHintOnEnter: false\n };\n\n WrappedTypeahead.childContextTypes = {\n activeIndex: _propTypes2.default.number.isRequired,\n onActiveItemChange: _propTypes2.default.func.isRequired,\n onInitialItemChange: _propTypes2.default.func.isRequired,\n onMenuItemClick: _propTypes2.default.func.isRequired\n };\n\n return (0, _reactOnclickoutside2.default)(WrappedTypeahead);\n}\n\nexports.default = typeaheadContainer;","'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\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _pick = require('lodash/pick');\n\nvar _pick2 = _interopRequireDefault(_pick);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = require('react-dom');\n\nvar _ClearButton = require('./ClearButton.react');\n\nvar _ClearButton2 = _interopRequireDefault(_ClearButton);\n\nvar _Loader = require('./Loader.react');\n\nvar _Loader2 = _interopRequireDefault(_Loader);\n\nvar _Overlay = require('./Overlay.react');\n\nvar _Overlay2 = _interopRequireDefault(_Overlay);\n\nvar _TypeaheadInputMulti = require('./TypeaheadInputMulti.react');\n\nvar _TypeaheadInputMulti2 = _interopRequireDefault(_TypeaheadInputMulti);\n\nvar _TypeaheadInputSingle = require('./TypeaheadInputSingle.react');\n\nvar _TypeaheadInputSingle2 = _interopRequireDefault(_TypeaheadInputSingle);\n\nvar _TypeaheadMenu = require('./TypeaheadMenu.react');\n\nvar _TypeaheadMenu2 = _interopRequireDefault(_TypeaheadMenu);\n\nvar _typeaheadContainer = require('./containers/typeaheadContainer');\n\nvar _typeaheadContainer2 = _interopRequireDefault(_typeaheadContainer);\n\nvar _utils = require('./utils/');\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 Typeahead = function (_React$Component) {\n _inherits(Typeahead, _React$Component);\n\n function Typeahead() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, Typeahead);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = Typeahead.__proto__ || Object.getPrototypeOf(Typeahead)).call.apply(_ref, [this].concat(args))), _this), _this._renderInput = function (inputProps) {\n var Input = inputProps.multiple ? _TypeaheadInputMulti2.default : _TypeaheadInputSingle2.default;\n\n return _react2.default.createElement(Input, inputProps);\n }, _this._renderAux = function () {\n var _this$props = _this.props,\n bsSize = _this$props.bsSize,\n clearButton = _this$props.clearButton,\n disabled = _this$props.disabled,\n isLoading = _this$props.isLoading,\n onClear = _this$props.onClear,\n selected = _this$props.selected;\n\n\n var content = void 0;\n\n if (isLoading) {\n content = _react2.default.createElement(_Loader2.default, { bsSize: bsSize });\n } else if (clearButton && !disabled && selected.length) {\n content = _react2.default.createElement(_ClearButton2.default, {\n bsSize: bsSize,\n onClick: onClear,\n onFocus: function onFocus(e) {\n // Prevent the main input from auto-focusing again.\n e.stopPropagation();\n },\n onMouseDown: _utils.preventInputBlur\n });\n }\n\n return content ? _react2.default.createElement(\n 'div',\n {\n className: (0, _classnames2.default)('rbt-aux', {\n 'rbt-aux-lg': bsSize === 'large' || bsSize === 'lg'\n }) },\n content\n ) : null;\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(Typeahead, [{\n key: 'componentWillReceiveProps',\n value: function componentWillReceiveProps(nextProps) {\n var allowNew = nextProps.allowNew,\n onInitialItemChange = nextProps.onInitialItemChange,\n results = nextProps.results;\n\n // Clear the initial item when there are no results.\n\n if (!(allowNew || results.length)) {\n onInitialItemChange(null);\n }\n }\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var _props = this.props,\n bodyContainer = _props.bodyContainer,\n children = _props.children,\n className = _props.className,\n isMenuShown = _props.isMenuShown,\n menuId = _props.menuId,\n renderMenu = _props.renderMenu,\n results = _props.results;\n\n\n var inputProps = (0, _pick2.default)(this.props, ['activeIndex', 'activeItem', 'bsSize', 'disabled', 'initialItem', 'inputProps', 'inputRef', 'isInvalid', 'isMenuShown', 'isValid', 'labelKey', 'menuId', 'multiple', 'onAdd', 'onBlur', 'onChange', 'onFocus', 'onKeyDown', 'onRemove', 'placeholder', 'renderToken', 'selected', 'selectHintOnEnter', 'text']);\n\n var overlayProps = (0, _pick2.default)(this.props, ['align', 'className', 'dropup', 'flip', 'onMenuHide', 'onMenuShow']);\n\n var menuProps = (0, _pick2.default)(this.props, ['emptyLabel', 'labelKey', 'maxHeight', 'newSelectionPrefix', 'renderMenuItemChildren', 'text']);\n\n var auxContent = this._renderAux();\n\n return _react2.default.createElement(\n 'div',\n {\n className: (0, _classnames2.default)('rbt', 'clearfix', 'open', {\n 'has-aux': !!auxContent\n }, className),\n style: { position: 'relative' },\n tabIndex: -1 },\n this._renderInput(_extends({}, inputProps, {\n // Use `findDOMNode` here since it's easier and less fragile than\n // forwarding refs down to the input's container.\n // TODO: Consider using `forwardRef` when React 16.3 usage is higher.\n ref: function ref(node) {\n return _this2._inputContainer = (0, _reactDom.findDOMNode)(node);\n }\n })),\n typeof children === 'function' ? children(this.props) : children,\n auxContent,\n _react2.default.createElement(\n _Overlay2.default,\n _extends({}, overlayProps, {\n container: bodyContainer ? document.body : this,\n referenceElement: this._inputContainer,\n show: isMenuShown }),\n renderMenu(results, _extends({}, menuProps, { id: menuId }))\n ),\n _react2.default.createElement(\n 'div',\n {\n 'aria-atomic': true,\n 'aria-live': 'polite',\n className: 'sr-only rbt-sr-status',\n role: 'status' },\n (0, _utils.getAccessibilityStatus)(this.props)\n )\n );\n }\n }]);\n\n return Typeahead;\n}(_react2.default.Component);\n\nTypeahead.propTypes = {\n renderMenu: _propTypes2.default.func\n};\n\nTypeahead.defaultProps = {\n renderMenu: function renderMenu(results, menuProps) {\n return _react2.default.createElement(_TypeaheadMenu2.default, _extends({}, menuProps, { options: results }));\n }\n};\n\nexports.default = (0, _typeaheadContainer2.default)(Typeahead);","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _asyncContainer = require('./containers/asyncContainer');\n\nvar _asyncContainer2 = _interopRequireDefault(_asyncContainer);\n\nvar _Typeahead = require('./Typeahead.react');\n\nvar _Typeahead2 = _interopRequireDefault(_Typeahead);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = (0, _asyncContainer2.default)(_Typeahead2.default);","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.tokenContainer = exports.menuItemContainer = exports.asyncContainer = exports.TypeaheadMenu = exports.Typeahead = exports.Token = exports.MenuItem = exports.Menu = exports.Highlighter = exports.AsyncTypeahead = undefined;\n\nvar _AsyncTypeahead2 = require('./AsyncTypeahead.react');\n\nvar _AsyncTypeahead3 = _interopRequireDefault(_AsyncTypeahead2);\n\nvar _Highlighter2 = require('./Highlighter.react');\n\nvar _Highlighter3 = _interopRequireDefault(_Highlighter2);\n\nvar _Menu2 = require('./Menu.react');\n\nvar _Menu3 = _interopRequireDefault(_Menu2);\n\nvar _MenuItem2 = require('./MenuItem.react');\n\nvar _MenuItem3 = _interopRequireDefault(_MenuItem2);\n\nvar _Token2 = require('./Token.react');\n\nvar _Token3 = _interopRequireDefault(_Token2);\n\nvar _Typeahead2 = require('./Typeahead.react');\n\nvar _Typeahead3 = _interopRequireDefault(_Typeahead2);\n\nvar _TypeaheadMenu2 = require('./TypeaheadMenu.react');\n\nvar _TypeaheadMenu3 = _interopRequireDefault(_TypeaheadMenu2);\n\nvar _asyncContainer2 = require('./containers/asyncContainer');\n\nvar _asyncContainer3 = _interopRequireDefault(_asyncContainer2);\n\nvar _menuItemContainer2 = require('./containers/menuItemContainer');\n\nvar _menuItemContainer3 = _interopRequireDefault(_menuItemContainer2);\n\nvar _tokenContainer2 = require('./containers/tokenContainer');\n\nvar _tokenContainer3 = _interopRequireDefault(_tokenContainer2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.AsyncTypeahead = _AsyncTypeahead3.default; /* eslint-disable object-curly-spacing */\n\n// Components\n\nexports.Highlighter = _Highlighter3.default;\nexports.Menu = _Menu3.default;\nexports.MenuItem = _MenuItem3.default;\nexports.Token = _Token3.default;\nexports.Typeahead = _Typeahead3.default;\nexports.TypeaheadMenu = _TypeaheadMenu3.default;\n\n// HOCs\n\nexports.asyncContainer = _asyncContainer3.default;\nexports.menuItemContainer = _menuItemContainer3.default;\nexports.tokenContainer = _tokenContainer3.default;\n\n/* eslint-enable object-curly-spacing */","import classNames from 'classnames';\nimport { ICanaryState } from 'kayenta/reducers';\nimport { get, omit } from 'lodash';\nimport * as React from 'react';\nimport { Typeahead, TypeaheadProps } from 'react-bootstrap-typeahead';\nimport { connect } from 'react-redux';\nimport Select, { ReactSelectProps } from 'react-select';\n\n// Well-known keys that flag if a component should be disabled.\nexport const DISABLE_EDIT_CONFIG = 'app.disableConfigEdit';\n\ninterface IDisableable {\n disabled?: boolean;\n}\n\ninterface IDisableableStateProps {\n disabledBecauseOfState: boolean;\n}\n\ninterface IDisableableOwnProps {\n disabledStateKeys: string[];\n}\n\nconst mapStateToProps = (state: ICanaryState, ownProps: IDisableableOwnProps) => ({\n disabledBecauseOfState: (ownProps.disabledStateKeys || []).some((key) => get<boolean>(state, key, false)),\n});\n\n// A component wrapped in `disableable` is disabled if one of the keys passed\n// through `disabledStateKeys` returns true when checked against the Redux store.\nfunction disableable<T extends IDisableable>(Component: React.SFC<T>) {\n return connect(mapStateToProps)((props: T & IDisableable & IDisableableStateProps) => {\n const { disabled, disabledBecauseOfState } = props;\n\n // Would use object spread except for weird interaction with TS generics.\n const otherProps: T = omit(props, ['disabled', 'disabledBecauseOfState', 'disabledStateKeys', 'dispatch']);\n return <Component {...otherProps} disabled={disabled || disabledBecauseOfState} />;\n });\n}\n\ntype IDisableableButtonProps = React.DetailedHTMLProps<\n React.ButtonHTMLAttributes<HTMLButtonElement>,\n HTMLButtonElement\n>;\nexport const DisableableButton = disableable<IDisableableButtonProps>((props) => {\n const { children, ...otherProps } = props;\n return <button {...otherProps}>{children}</button>;\n});\n\ntype IDisableableInputProps = React.DetailedHTMLProps<React.InputHTMLAttributes<HTMLInputElement>, HTMLInputElement>;\nexport const DisableableInput = disableable<IDisableableInputProps>((props) => {\n const { className, ...inputProps } = props;\n return (\n <input\n {...inputProps}\n className={classNames(className, {\n 'form-control': !['radio', 'checkbox'].includes(inputProps.type),\n 'input-sm': !['radio', 'checkbox'].includes(inputProps.type),\n })}\n />\n );\n});\n\nexport const DisableableReactSelect = disableable<ReactSelectProps>((props) => {\n const { children, ...selectProps } = props;\n return <Select {...selectProps}>{children}</Select>;\n});\n\nexport const DisableableReactTypeahead = disableable<TypeaheadProps<any>>((props) => {\n const { children, ...selectProps } = props;\n return <Typeahead {...selectProps}>{children}</Typeahead>;\n});\n\ntype IDisableableSelectProps = React.DetailedHTMLProps<React.InputHTMLAttributes<HTMLSelectElement>, HTMLSelectElement>;\nexport const DisableableSelect = disableable<IDisableableSelectProps>((props) => {\n const { children, ...selectProps } = props;\n return <select {...selectProps}>{children}</select>;\n});\n\n// TODO(dpeach): why do I have to type `rows` explicitly here?\ntype IDisableableTextareaProps = React.DetailedHTMLProps<\n React.InputHTMLAttributes<HTMLTextAreaElement>,\n HTMLTextAreaElement\n> & { rows?: number };\nexport const DisableableTextarea = disableable<IDisableableTextareaProps>((props) => {\n const { className, ...textareaProps } = props;\n return <textarea className={classNames('form-control', 'input-sm', className)} {...textareaProps} />;\n});\n","import * as React from 'react';\n\nimport { DISABLE_EDIT_CONFIG, DisableableInput } from './disableable';\n\nexport interface IRadioChoiceProps {\n value: string;\n label: string | JSX.Element;\n name: string;\n current: string;\n action: (event: any) => void;\n}\n\nexport default function RadioChoice({ value, label, name, current, action }: IRadioChoiceProps) {\n return (\n <div className=\"radio-inline\">\n <label style={{ fontWeight: 'normal', marginRight: '1em' }}>\n <DisableableInput\n type=\"radio\"\n name={name}\n value={value}\n onChange={action}\n checked={value === current}\n disabledStateKeys={[DISABLE_EDIT_CONFIG]}\n />{' '}\n {label}\n </label>\n </div>\n );\n}\n","export enum AsyncRequestState {\n Requesting = 'requesting',\n Fulfilled = 'fulfilled',\n Failed = 'failed',\n}\n","import * as Creators from 'kayenta/actions/creators';\nimport { DISABLE_EDIT_CONFIG, DisableableReactSelect } from 'kayenta/layout/disableable';\nimport { ICanaryState } from 'kayenta/reducers';\nimport { AsyncRequestState } from 'kayenta/reducers/asyncRequest';\nimport * as React from 'react';\nimport { connect } from 'react-redux';\nimport { Option } from 'react-select';\nimport { Dispatch } from 'redux';\n\nimport { IDatadogMetricDescriptor } from './domain/IDatadogMetricDescriptor';\n\ninterface IDatadogMetricTypeSelectorDispatchProps {\n load: (filter: string) => void;\n}\n\ninterface IDatadogMetricTypeSelectorStateProps {\n options: Option[];\n loading: boolean;\n}\n\ninterface IDatadogMetricTypeSelectorOwnProps {\n value: string;\n onChange: (option: Option) => void;\n}\n\nexport const DatadogMetricTypeSelector = ({\n loading,\n load,\n options,\n value,\n onChange,\n}: IDatadogMetricTypeSelectorDispatchProps &\n IDatadogMetricTypeSelectorStateProps &\n IDatadogMetricTypeSelectorOwnProps) => {\n if (value && options.every((o) => o.value !== value)) {\n options = options.concat({ label: value, value });\n }\n\n return (\n <DisableableReactSelect\n isLoading={loading}\n options={options}\n onChange={onChange}\n value={value}\n placeholder={'Enter at least three characters to search.'}\n onInputChange={(input: string) => {\n load(input);\n return input;\n }}\n disabledStateKeys={[DISABLE_EDIT_CONFIG]}\n />\n );\n};\n\nexport const mapStateToProps = (state: ICanaryState, ownProps: IDatadogMetricTypeSelectorOwnProps) => {\n const descriptors = state.data.metricsServiceMetadata.data as IDatadogMetricDescriptor[];\n const options: Option[] = descriptors.map((d) => ({ label: d.name, value: d.name }));\n return {\n options,\n loading: state.data.metricsServiceMetadata.load === AsyncRequestState.Requesting,\n ...ownProps,\n };\n};\n\nexport const mapDispatchToProps = (dispatch: Dispatch<ICanaryState>) => {\n return {\n load: (filter: string) => {\n dispatch(Creators.updateDatadogMetricDescriptorFilter({ filter }));\n },\n };\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(DatadogMetricTypeSelector);\n","import * as Creators from 'kayenta/actions/creators';\nimport { ICanaryMetricConfig } from 'kayenta/domain';\nimport FormRow from 'kayenta/layout/formRow';\nimport RadioChoice from 'kayenta/layout/radioChoice';\nimport { ICanaryState } from 'kayenta/reducers';\nimport { get } from 'lodash';\nimport * as React from 'react';\nimport { connect } from 'react-redux';\nimport { Option } from 'react-select';\nimport { Action } from 'redux';\n\nimport DatadogMetricTypeSelector from './metricTypeSelector';\n\ninterface IDatadogMetricConfigurerStateProps {\n editingMetric: ICanaryMetricConfig;\n}\n\ninterface IDatadogMetricConfigurerDispatchProps {\n changeMetricName: (agg: string, name: string) => void;\n}\n\ntype DatadogMetricConfigurerProps = IDatadogMetricConfigurerStateProps & IDatadogMetricConfigurerDispatchProps;\n\nexport const queryFinder = (metric: ICanaryMetricConfig) => get(metric, 'query.metricName', ':');\n\nexport const nameFinder = (metric: ICanaryMetricConfig) => queryFinder(metric).split(':', 2)[1];\nexport const aggFinder = (metric: ICanaryMetricConfig) => queryFinder(metric).split(':', 2)[0];\n\n/*\n * Component for configuring a Datadog metric.\n * */\nfunction DatadogMetricConfigurer({ changeMetricName, editingMetric }: DatadogMetricConfigurerProps) {\n return (\n <>\n <FormRow label=\"Datadog Metric\" inputOnly={true}>\n <DatadogMetricTypeSelector\n value={nameFinder(editingMetric)}\n onChange={(option: Option<string>) => changeMetricName(aggFinder(editingMetric), get(option, 'value'))}\n />\n </FormRow>\n <FormRow label=\"Metric Aggregation\">\n <RadioChoice\n value=\"avg\"\n label=\"Average\"\n name=\"aggregator\"\n current={aggFinder(editingMetric)}\n action={() => changeMetricName('avg', nameFinder(editingMetric))}\n />\n <RadioChoice\n value=\"sum\"\n label=\"Sum\"\n name=\"aggregator\"\n current={aggFinder(editingMetric)}\n action={() => changeMetricName('sum', nameFinder(editingMetric))}\n />\n <RadioChoice\n value=\"max\"\n label=\"Max\"\n name=\"aggregator\"\n current={aggFinder(editingMetric)}\n action={() => changeMetricName('max', nameFinder(editingMetric))}\n />\n <RadioChoice\n value=\"min\"\n label=\"Min\"\n name=\"aggregator\"\n current={aggFinder(editingMetric)}\n action={() => changeMetricName('min', nameFinder(editingMetric))}\n />\n </FormRow>\n </>\n );\n}\n\nfunction mapStateToProps(state: ICanaryState): IDatadogMetricConfigurerStateProps {\n return {\n editingMetric: state.selectedConfig.editingMetric,\n };\n}\n\nfunction mapDispatchToProps(dispatch: (action: Action & any) => void): IDatadogMetricConfigurerDispatchProps {\n return {\n changeMetricName: (agg: string, name: string): void => {\n const metricName = agg + ':' + name;\n dispatch(Creators.updateDatadogMetricName({ metricName }));\n },\n };\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(DatadogMetricConfigurer);\n","import DatadogMetricConfigurer, { queryFinder } from './metricConfigurer';\nimport metricStoreConfigStore from '../metricStoreConfig.service';\n\nmetricStoreConfigStore.register({\n name: 'datadog',\n metricConfigurer: DatadogMetricConfigurer,\n queryFinder,\n});\n","import * as Creators from 'kayenta/actions/creators';\nimport { DISABLE_EDIT_CONFIG, DisableableReactTypeahead } from 'kayenta/layout/disableable';\nimport { ICanaryState } from 'kayenta/reducers';\nimport { AsyncRequestState } from 'kayenta/reducers/asyncRequest';\nimport * as React from 'react';\nimport { connect } from 'react-redux';\nimport { Dispatch } from 'redux';\n\nimport { IGraphiteMetricDescriptor } from './domain/IGraphiteMetricDescriptor';\n\nimport './typeahead.less';\n\ninterface IGraphiteMetricTypeSelectorDispatchProps {\n load: (filter: string) => void;\n}\n\ninterface IGraphiteMetricTypeSelectorStateProps {\n options: string[];\n loading: boolean;\n}\n\ninterface IGraphiteMetricTypeSelectorOwnProps {\n value: string;\n onChange: (option: string[]) => void;\n}\n\nexport const GraphiteMetricTypeSelector = ({\n loading,\n load,\n options,\n value,\n onChange,\n}: IGraphiteMetricTypeSelectorDispatchProps &\n IGraphiteMetricTypeSelectorStateProps &\n IGraphiteMetricTypeSelectorOwnProps) => {\n options = options.concat(value);\n\n return (\n <DisableableReactTypeahead\n options={options}\n isLoading={loading}\n onChange={(option: string[]) => {\n onChange(option);\n load(option[0]);\n }}\n defaultInputValue={value}\n renderMenuItemChildren={(option) => (\n <a style={{ pointerEvents: 'all', textDecoration: 'none', color: '#000000' }}>{option}</a>\n )}\n placeholder={'Enter at least three characters to search.'}\n onInputChange={(input) => {\n onChange([input]);\n load(input);\n return input;\n }}\n disabledStateKeys={[DISABLE_EDIT_CONFIG]}\n />\n );\n};\n\nexport const mapStateToProps = (state: ICanaryState, ownProps: IGraphiteMetricTypeSelectorOwnProps) => {\n const descriptors = state.data.metricsServiceMetadata.data as IGraphiteMetricDescriptor[];\n const options: string[] = descriptors.map((d) => d.name);\n\n return {\n options,\n loading: state.data.metricsServiceMetadata.load === AsyncRequestState.Requesting,\n ...ownProps,\n };\n};\n\nexport const mapDispatchToProps = (dispatch: Dispatch<ICanaryState>) => {\n return {\n load: (filter: string) => {\n dispatch(Creators.updateGraphiteMetricDescriptorFilter({ filter }));\n },\n };\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(GraphiteMetricTypeSelector);\n","import * as Creators from 'kayenta/actions/creators';\nimport { ICanaryMetricConfig } from 'kayenta/domain';\nimport FormRow from 'kayenta/layout/formRow';\nimport { ICanaryState } from 'kayenta/reducers';\nimport { get } from 'lodash';\nimport * as React from 'react';\nimport { connect } from 'react-redux';\nimport { Action } from 'redux';\n\nimport GraphiteMetricTypeSelector from './metricTypeSelector';\n\ninterface IGraphiteMetricConfigurerDispatchProps {\n changeMetricName: (name: string) => void;\n}\n\ninterface IGraphiteMetricConfigurerStateProps {\n editingMetric: ICanaryMetricConfig;\n}\n\ntype GraphiteMetricConfigurerProps = IGraphiteMetricConfigurerStateProps & IGraphiteMetricConfigurerDispatchProps;\n\nexport const queryFinder = (metric: ICanaryMetricConfig) => get(metric, 'query.metricName', '');\n\n/*\n * Component for configuring a Graphite metric.\n * */\nfunction GraphiteMetricConfigurer({ changeMetricName, editingMetric }: GraphiteMetricConfigurerProps) {\n return (\n <FormRow label=\"Graphite Metric\" inputOnly={true}>\n <GraphiteMetricTypeSelector\n value={queryFinder(editingMetric)}\n onChange={(option: string[]) => {\n changeMetricName(option[0]);\n }}\n />\n </FormRow>\n );\n}\n\nfunction mapStateToProps(state: ICanaryState): IGraphiteMetricConfigurerStateProps {\n return {\n editingMetric: state.selectedConfig.editingMetric,\n };\n}\n\nfunction mapDispatchToProps(dispatch: (action: Action & any) => void): IGraphiteMetricConfigurerDispatchProps {\n return {\n changeMetricName: (metricName: string): void => {\n dispatch(Creators.updateGraphiteMetricName({ metricName }));\n },\n };\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(GraphiteMetricConfigurer);\n","import GraphiteMetricConfigurer, { queryFinder } from './metricConfigurer';\nimport metricStoreConfigStore from '../metricStoreConfig.service';\n\nmetricStoreConfigStore.register({\n name: 'graphite',\n metricConfigurer: GraphiteMetricConfigurer,\n queryFinder,\n});\n","import * as Creators from 'kayenta/actions/creators';\nimport { ICanaryMetricConfig } from 'kayenta/domain';\nimport { DISABLE_EDIT_CONFIG, DisableableInput } from 'kayenta/layout/disableable';\nimport FormRow from 'kayenta/layout/formRow';\nimport { ICanaryState } from 'kayenta/reducers';\nimport { get } from 'lodash';\nimport * as React from 'react';\nimport { connect } from 'react-redux';\nimport { Action } from 'redux';\n\ninterface INewRelicMetricConfigurerStateProps {\n editingMetric: ICanaryMetricConfig;\n}\n\ninterface INewRelicMetricConfigurerDispatchProps {\n changeSelect: (event: any) => void;\n}\n\ntype INewRelicMetricConfigurerProps = INewRelicMetricConfigurerStateProps & INewRelicMetricConfigurerDispatchProps;\n\nexport const queryFinder = (metric: ICanaryMetricConfig) => get(metric, 'query.select', '');\n\n/*\n * Component for configuring a New Relic metric\n */\nfunction NewRelicMetricConfigurer({ changeSelect, editingMetric }: INewRelicMetricConfigurerProps) {\n return (\n <>\n <FormRow label=\"NRQL Select\" inputOnly={true}>\n <DisableableInput\n type=\"text\"\n value={queryFinder(editingMetric)}\n onChange={changeSelect}\n disabledStateKeys={[DISABLE_EDIT_CONFIG]}\n />\n <span className=\"body-small color-text-caption\" style={{ marginTop: '5px' }}>\n Enter the NRQL query only up to, but not including, the WHERE clause\n </span>\n </FormRow>\n </>\n );\n}\n\nfunction mapStateToProps(state: ICanaryState): INewRelicMetricConfigurerStateProps {\n return {\n editingMetric: state.selectedConfig.editingMetric,\n };\n}\n\nfunction mapDispatchToProps(dispatch: (action: Action & any) => void): INewRelicMetricConfigurerDispatchProps {\n return {\n changeSelect: (event: any) => {\n dispatch(Creators.updateNewRelicSelect({ select: event.target.value }));\n },\n };\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(NewRelicMetricConfigurer);\n","import NewRelicMetricConfigurer, { queryFinder } from './metricConfigurer';\nimport metricStoreConfigStore from '../metricStoreConfig.service';\n\nmetricStoreConfigStore.register({\n name: 'newrelic',\n metricConfigurer: NewRelicMetricConfigurer,\n queryFinder,\n});\n","import classNames from 'classnames';\nimport * as React from 'react';\n\nimport { DISABLE_EDIT_CONFIG, DisableableButton } from './disableable';\n\ninterface IAddNewButtonProps {\n onClick: () => void;\n className?: string;\n label?: string;\n}\n\nexport default ({ onClick, className, label }: IAddNewButtonProps) => (\n <DisableableButton\n onClick={onClick}\n disabledStateKeys={[DISABLE_EDIT_CONFIG]}\n className={classNames('add-new', 'btn', 'btn-block', 'btn-sm', className)}\n >\n <span className=\"glyphicon glyphicon-plus-sign\" /> {label || 'Add new'}\n </DisableableButton>\n);\n","import { IKayentaAction } from 'kayenta/actions/creators';\nimport * as React from 'react';\n\nimport AddNewButton from './addNewButton';\nimport DeleteButton from './deleteButton';\nimport { DISABLE_EDIT_CONFIG, DisableableInput } from './disableable';\n\nimport './list.less';\n\nexport enum ListAction {\n Add,\n Edit,\n Delete,\n}\n\nexport interface IUpdateListPayload {\n type: ListAction;\n index?: number;\n value?: string;\n}\n\nexport const updateListReducer = (defaultValue = '') => (\n state: string[],\n action: IKayentaAction<IUpdateListPayload>,\n) => {\n const { index, value } = action.payload;\n switch (action.payload.type) {\n case ListAction.Add:\n return state.concat(defaultValue);\n case ListAction.Delete:\n return [...state.slice(0, index), ...state.slice(index + 1)];\n case ListAction.Edit:\n return [...state.slice(0, index), value, ...state.slice(index + 1)];\n }\n};\n\ninterface IListProps {\n list: string[];\n valueKey?: (value: string) => string;\n actionCreator: (action: IUpdateListPayload) => void;\n}\n\nexport const List = ({ list, valueKey, actionCreator }: IListProps) => {\n const onChange = (i: number) => (event: any) =>\n actionCreator({\n type: ListAction.Edit,\n index: i,\n value: event.target.value,\n });\n\n const deleteValue = (i: number) => () =>\n actionCreator({\n type: ListAction.Delete,\n index: i,\n });\n\n const addValue = () =>\n actionCreator({\n type: ListAction.Add,\n });\n\n return (\n <section>\n {list.map((value, i) => (\n <div key={valueKey ? valueKey(value) : i} className=\"horizontal form-group kayenta-list\">\n <DisableableInput value={value} onChange={onChange(i)} disabledStateKeys={[DISABLE_EDIT_CONFIG]} />\n <DeleteButton onClick={deleteValue(i)} />\n </div>\n ))}\n <AddNewButton onClick={addValue} />\n </section>\n );\n};\n","import * as React from 'react';\n\nexport interface IDeleteButtonProps {\n onClick: () => void;\n}\n\nexport default ({ onClick }: IDeleteButtonProps) => (\n <a className=\"clickable\" onClick={onClick}>\n <span className=\"glyphicon glyphicon-trash\" />\n </a>\n);\n","import { get, isEmpty } from 'lodash';\n\nimport { ICanaryMetricConfig } from '../domain';\nimport { IEditingTemplateState } from '../reducers/editingTemplate';\n\nexport interface ICanaryFilterTemplateValidationMessage {\n message: string;\n}\n\ntype ICanaryFilterTemplateValidationErrorKeys = 'templateName' | 'templateValue';\n\ntype ICanaryFilterTemplateValidationWarningKeys = 'template';\n\nexport interface ICanaryFilterTemplateValidationMessages {\n errors: { [K in ICanaryFilterTemplateValidationErrorKeys]?: ICanaryFilterTemplateValidationMessage };\n warnings: { [K in ICanaryFilterTemplateValidationWarningKeys]?: ICanaryFilterTemplateValidationMessage };\n}\n\nexport interface ITemplateValidationInput {\n editingTemplate: IEditingTemplateState;\n configTemplates: { [name: string]: string };\n metricList: ICanaryMetricConfig[];\n editingMetric: ICanaryMetricConfig;\n}\n\nexport function validateTemplateName(\n validation: ICanaryFilterTemplateValidationMessages,\n validationInput: ITemplateValidationInput,\n): ICanaryFilterTemplateValidationMessages {\n const { editingTemplate, configTemplates } = validationInput;\n\n if (editingTemplate.editedName === '') {\n validation.errors.templateName = {\n message: 'Name is required',\n };\n return validation;\n }\n\n const isNameEdited = editingTemplate && editingTemplate.editedName !== editingTemplate.name;\n const savedTemplateNames = Object.keys(configTemplates || {});\n const isNameDuplicate = isNameEdited && savedTemplateNames.some((name) => editingTemplate.editedName === name);\n if (isNameDuplicate) {\n validation.errors.templateName = {\n message: `Filter template named '${editingTemplate.editedName}' already exists`,\n };\n }\n\n return validation;\n}\n\nexport function validateTemplateValue(\n validation: ICanaryFilterTemplateValidationMessages,\n validationInput: ITemplateValidationInput,\n): ICanaryFilterTemplateValidationMessages {\n const { editingTemplate } = validationInput;\n\n if (editingTemplate.editedValue === '') {\n validation.errors.templateValue = {\n message: 'Value is required',\n };\n }\n\n return validation;\n}\n\nexport function validateTemplateInUseWarning(\n validation: ICanaryFilterTemplateValidationMessages,\n validationInput: ITemplateValidationInput,\n): ICanaryFilterTemplateValidationMessages {\n const { metricList, editingMetric } = validationInput;\n const filterTemplate = get(editingMetric, 'query.customFilterTemplate');\n\n const otherMetricsUsingTemplate =\n editingMetric != null &&\n filterTemplate != null &&\n metricList.filter((m) => m.name !== editingMetric.name && filterTemplate === get(m, 'query.customFilterTemplate'));\n\n if (!isEmpty(otherMetricsUsingTemplate)) {\n validation.warnings.template = {\n message: `Warning: editing or deleting this template will affect the following metrics: ${otherMetricsUsingTemplate\n .map((m) => m.name)\n .join(', ')}`,\n };\n }\n return validation;\n}\n\nexport function validateTemplate(\n templateValidationInput: ITemplateValidationInput,\n): ICanaryFilterTemplateValidationMessages {\n return [validateTemplateName, validateTemplateValue, validateTemplateInUseWarning].reduce(\n (reducedValidation, validator) => validator(reducedValidation, templateValidationInput),\n { errors: {}, warnings: {} },\n );\n}\n","import { ICanaryMetricSetQueryConfig } from 'kayenta/domain';\n\nexport interface IPrometheusCanaryMetricSetQueryConfig extends ICanaryMetricSetQueryConfig {\n resourceType: string;\n metricName: string;\n labelBindings: string[];\n groupByFields: string[];\n queryType: PrometheusQueryType;\n}\n\nexport enum PrometheusQueryType {\n PROMQL = 'PROMQL',\n DEFAULT = 'DEFAULT',\n}\n","import { ICanaryMetricConfig } from '../../domain';\nimport { PrometheusQueryType } from './domain/IPrometheusCanaryMetricSetQueryConfig';\nimport { ITemplateTransformFunctions } from '../../selectors/filterTemplatesSelectors';\n\nconst PROMQL_PREFIX = 'PromQL:';\n\nexport function isQueryPromQL(template: string): boolean {\n return template != null && template.startsWith(PROMQL_PREFIX);\n}\n\nexport function removePromQLPrefix(template: string): string {\n if (isQueryPromQL(template)) {\n return template.substring(PROMQL_PREFIX.length);\n }\n return template;\n}\n\nexport function appendPromQLPrefix(template: string): string {\n return `${PROMQL_PREFIX}${template}`;\n}\n\nexport const getPrometheusQueryType = (editingMetric: ICanaryMetricConfig) => {\n if (editingMetric.query.queryType) {\n return editingMetric.query.queryType;\n }\n const inlineTemplate = editingMetric.query.customInlineTemplate;\n if (isQueryPromQL(inlineTemplate)) {\n return PrometheusQueryType.PROMQL;\n }\n return PrometheusQueryType.DEFAULT;\n};\n\nexport const prometheusQueryTypeToTransformFunction: { [queryType: string]: ITemplateTransformFunctions } = {\n [PrometheusQueryType.PROMQL]: {\n fromValue: removePromQLPrefix,\n toValue: appendPromQLPrefix,\n },\n};\n","'use strict';\n\nexports.__esModule = true;\nexports.defaultMemoize = defaultMemoize;\nexports.createSelectorCreator = createSelectorCreator;\nexports.createStructuredSelector = createStructuredSelector;\nfunction defaultEqualityCheck(a, b) {\n return a === b;\n}\n\nfunction areArgumentsShallowlyEqual(equalityCheck, prev, next) {\n if (prev === null || next === null || prev.length !== next.length) {\n return false;\n }\n\n // Do this in a for loop (and not a `forEach` or an `every`) so we can determine equality as fast as possible.\n var length = prev.length;\n for (var i = 0; i < length; i++) {\n if (!equalityCheck(prev[i], next[i])) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction defaultMemoize(func) {\n var equalityCheck = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultEqualityCheck;\n\n var lastArgs = null;\n var lastResult = null;\n // we reference arguments instead of spreading them for performance reasons\n return function () {\n if (!areArgumentsShallowlyEqual(equalityCheck, lastArgs, arguments)) {\n // apply arguments instead of spreading for performance.\n lastResult = func.apply(null, arguments);\n }\n\n lastArgs = arguments;\n return lastResult;\n };\n}\n\nfunction getDependencies(funcs) {\n var dependencies = Array.isArray(funcs[0]) ? funcs[0] : funcs;\n\n if (!dependencies.every(function (dep) {\n return typeof dep === 'function';\n })) {\n var dependencyTypes = dependencies.map(function (dep) {\n return typeof dep;\n }).join(', ');\n throw new Error('Selector creators expect all input-selectors to be functions, ' + ('instead received the following types: [' + dependencyTypes + ']'));\n }\n\n return dependencies;\n}\n\nfunction createSelectorCreator(memoize) {\n for (var _len = arguments.length, memoizeOptions = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n memoizeOptions[_key - 1] = arguments[_key];\n }\n\n return function () {\n for (var _len2 = arguments.length, funcs = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n funcs[_key2] = arguments[_key2];\n }\n\n var recomputations = 0;\n var resultFunc = funcs.pop();\n var dependencies = getDependencies(funcs);\n\n var memoizedResultFunc = memoize.apply(undefined, [function () {\n recomputations++;\n // apply arguments instead of spreading for performance.\n return resultFunc.apply(null, arguments);\n }].concat(memoizeOptions));\n\n // If a selector is called with the exact same arguments we don't need to traverse our dependencies again.\n var selector = defaultMemoize(function () {\n var params = [];\n var length = dependencies.length;\n\n for (var i = 0; i < length; i++) {\n // apply arguments instead of spreading and mutate a local list of params for performance.\n params.push(dependencies[i].apply(null, arguments));\n }\n\n // apply arguments instead of spreading for performance.\n return memoizedResultFunc.apply(null, params);\n });\n\n selector.resultFunc = resultFunc;\n selector.recomputations = function () {\n return recomputations;\n };\n selector.resetRecomputations = function () {\n return recomputations = 0;\n };\n return selector;\n };\n}\n\nvar createSelector = exports.createSelector = createSelectorCreator(defaultMemoize);\n\nfunction createStructuredSelector(selectors) {\n var selectorCreator = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : createSelector;\n\n if (typeof selectors !== 'object') {\n throw new Error('createStructuredSelector expects first argument to be an object ' + ('where each property is a selector, instead received a ' + typeof selectors));\n }\n var objectKeys = Object.keys(selectors);\n return selectorCreator(objectKeys.map(function (key) {\n return selectors[key];\n }), function () {\n for (var _len3 = arguments.length, values = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n values[_key3] = arguments[_key3];\n }\n\n return values.reduce(function (composition, value, index) {\n composition[objectKeys[index]] = value;\n return composition;\n }, {});\n });\n}","import { get } from 'lodash';\nimport { ICanaryMetricConfig } from '../domain';\n\nexport interface ICanaryMetricValidationError {\n message: string;\n}\n\nexport interface ICanaryMetricValidationErrors {\n [key: string]: ICanaryMetricValidationError;\n}\nexport type MetricValidatorFunction = (\n errors: ICanaryMetricValidationErrors,\n editingMetric: ICanaryMetricConfig,\n metricList?: ICanaryMetricConfig[],\n) => ICanaryMetricValidationErrors;\n\nexport function validateMetricName(\n errors: ICanaryMetricValidationErrors,\n editingMetric: ICanaryMetricConfig,\n metricList: ICanaryMetricConfig[],\n): ICanaryMetricValidationErrors {\n const nextErrors = { ...errors };\n\n const editingMetricName = get(editingMetric, 'name', '');\n if (!editingMetricName) {\n nextErrors.name = { message: 'Name is required' };\n return nextErrors;\n }\n\n const isNameUnique = metricList.every((m) => m.name !== editingMetricName || m.id === editingMetric.id);\n if (!isNameUnique) {\n nextErrors.name = { message: `Metric '${editingMetricName}' already exists` };\n }\n\n return nextErrors;\n}\n\nexport function validateMetric(\n editingMetric: ICanaryMetricConfig,\n metricList: ICanaryMetricConfig[],\n): ICanaryMetricValidationErrors {\n const errors: ICanaryMetricValidationErrors = {\n name: null,\n };\n\n return [validateMetricName].reduce(\n (reducedErrors, validator) => validator(reducedErrors, editingMetric, metricList),\n errors,\n );\n}\n","import { ICanaryConfig, ICanaryMetricConfig } from 'kayenta/domain/index';\nimport { get } from 'lodash';\nimport { createSelector } from 'reselect';\n\nimport { ICanaryExecutionStatusResult } from '../domain/ICanaryExecutionStatusResult';\nimport { validateMetric } from '../edit/editMetricValidation';\nimport { ICanaryState } from '../reducers/index';\n\nexport const runSelector = (state: ICanaryState): ICanaryExecutionStatusResult => state.selectedRun.run;\n\nexport const judgeResultSelector = createSelector(runSelector, (run) => run.result?.judgeResult);\n\nexport const configIdSelector = createSelector(runSelector, (run) => run.config.id);\n\nexport const metricResultsSelector = createSelector(runSelector, (run) => run.result?.judgeResult.results ?? []);\n\nexport const canaryExecutionRequestSelector = createSelector(runSelector, (run) => run.canaryExecutionRequest);\n\nexport const serializedCanaryConfigSelector = createSelector(runSelector, (run) => run.config);\n\nexport const serializedGroupWeightsSelector = createSelector(\n serializedCanaryConfigSelector,\n (config: ICanaryConfig) => config.classifier.groupWeights,\n);\n\nexport const selectedMetricResultIdSelector = (state: ICanaryState): string => state.selectedRun.selectedMetric;\n\nexport const selectedMetricResultSelector = createSelector(\n selectedMetricResultIdSelector,\n metricResultsSelector,\n (id, results) => results.find((result) => result.id === id),\n);\n\nexport const selectedMetricConfigSelector = createSelector(\n selectedMetricResultSelector,\n serializedCanaryConfigSelector,\n (metric, config) => config.metrics.find((m) => m.name === metric.name),\n);\n\nexport const selectedConfigSelector = (state: ICanaryState) => state.selectedConfig.config;\n\nexport const configTemplatesSelector = createSelector(selectedConfigSelector, (config) =>\n config ? config.templates : null,\n);\n\nexport const editingTemplateSelector = (state: ICanaryState) => state.selectedConfig.editingTemplate;\n\nexport const resolveConfigIdFromExecutionId = (state: ICanaryState, executionId: string): string => {\n const executions = get(state, ['data', 'executions', 'data'], []);\n const execution = executions.find((ex) => ex.pipelineId === executionId);\n return execution.canaryConfigId;\n};\n\nexport const editingMetricSelector = (state: ICanaryState): ICanaryMetricConfig => state.selectedConfig.editingMetric;\n\nexport const metricListSelector = (state: ICanaryState): ICanaryMetricConfig[] => state.selectedConfig.metricList;\n\nexport const editingMetricValidationErrorsSelector = createSelector(\n editingMetricSelector,\n metricListSelector,\n validateMetric,\n);\n","import { validateTemplate } from 'kayenta/edit/filterTemplatesValidation';\nimport { PrometheusQueryType } from 'kayenta/metricStore/prometheus/domain/IPrometheusCanaryMetricSetQueryConfig';\nimport {\n getPrometheusQueryType,\n prometheusQueryTypeToTransformFunction,\n} from 'kayenta/metricStore/prometheus/queryTypeSelectors';\nimport { ICanaryState } from 'kayenta/reducers';\nimport {\n configTemplatesSelector,\n editingMetricSelector,\n editingTemplateSelector,\n metricListSelector,\n} from 'kayenta/selectors';\nimport { get, identity, isEmpty } from 'lodash';\nimport { createSelector } from 'reselect';\n\n// TODO(mneterval): More elegant separation of prometheus-specific logic\n\nexport interface ITemplateTransformFunctions {\n fromValue: (template: string) => string;\n toValue: (template: string) => string;\n}\n\n// Map of provider-specific query type to methods that transform templates between how they are persisted and displayed in the UI\nexport const queryTypeToTransformFunctions: { [queryType: string]: ITemplateTransformFunctions } = {\n ...prometheusQueryTypeToTransformFunction,\n};\n\nexport const queryTypeSelector = createSelector(\n (state: ICanaryState) => state.selectedConfig.editingMetric,\n (editingMetric) => {\n return editingMetric && editingMetric.query.serviceType === 'prometheus'\n ? getPrometheusQueryType(editingMetric)\n : null;\n },\n);\n\nexport const transformInlineTemplateForDisplay = createSelector(queryTypeSelector, (queryType) =>\n get(queryTypeToTransformFunctions, [queryType, 'fromValue'], identity),\n);\n\nexport const transformInlineTemplateForSave = createSelector(queryTypeSelector, (queryType) =>\n get(queryTypeToTransformFunctions, [queryType, 'toValue'], identity),\n);\n\nexport const selectedTemplateNameSelector = (state: ICanaryState): string =>\n get(state, 'selectedConfig.editingMetric.query.customFilterTemplate');\n\nexport const inlineTemplateValueSelector = createSelector(\n (state: ICanaryState) => get(state, 'selectedConfig.editingMetric.query.customInlineTemplate'),\n transformInlineTemplateForDisplay,\n (template: string, transformer: (template: string) => string): string => transformer(template),\n);\n\nexport const editingTemplateValidationSelector = createSelector(\n editingTemplateSelector,\n configTemplatesSelector,\n metricListSelector,\n editingMetricSelector,\n (editingTemplate, configTemplates, metricList, editingMetric) =>\n validateTemplate({\n editingTemplate,\n configTemplates,\n metricList,\n editingMetric,\n }),\n);\n\nexport const isFilterTemplateValidSelector = createSelector(editingTemplateValidationSelector, (validation) =>\n isEmpty(Object.keys(validation.errors)),\n);\n\nexport const isInlineTemplateValidSelector = createSelector(inlineTemplateValueSelector, (value) => !isEmpty(value));\n\nconst inlineTemplateQueryTypes = [PrometheusQueryType.PROMQL];\n\nexport const useInlineTemplateEditorSelector = createSelector(queryTypeSelector, (queryType) =>\n inlineTemplateQueryTypes.includes(queryType),\n);\n\nexport const isTemplateValidSelector = createSelector(\n useInlineTemplateEditorSelector,\n isFilterTemplateValidSelector,\n isInlineTemplateValidSelector,\n (isInlineTemplate, isFilterTemplateValid, isInlineTemplateValid) =>\n isInlineTemplate ? isInlineTemplateValid : isFilterTemplateValid,\n);\n","import * as Creators from 'kayenta/actions/creators';\nimport { KayentaAccountType } from 'kayenta/domain';\nimport { DISABLE_EDIT_CONFIG, DisableableReactSelect } from 'kayenta/layout/disableable';\nimport { ICanaryState } from 'kayenta/reducers';\nimport { AsyncRequestState } from 'kayenta/reducers/asyncRequest';\nimport { chain, get } from 'lodash';\nimport * as React from 'react';\nimport { connect } from 'react-redux';\nimport { Option } from 'react-select';\nimport { Dispatch } from 'redux';\nimport { createSelector } from 'reselect';\n\nimport { IPrometheusMetricDescriptor } from './domain/IPrometheusMetricDescriptor';\n\nimport './metricTypeSelector.less';\n\ninterface IPrometheusMetricTypeSelectorDispatchProps {\n load: (filter: string, metricsAccountName: string) => void;\n}\n\ninterface IPrometheusMetricTypeSelectorStateProps {\n accountOptions: Array<Option<string>>;\n loading: boolean;\n metricOptions: Array<Option<string>>;\n}\n\ninterface IPrometheusMetricTypeSelectorOwnProps {\n onChange: (option: Option<string>) => void;\n value: string;\n}\n\ninterface IPrometheusMetricTypeSelectorState {\n selectedAccount: string;\n showAccountDropdown: boolean;\n}\n\nexport type IPrometheusMetricTypeSelectorProps = IPrometheusMetricTypeSelectorDispatchProps &\n IPrometheusMetricTypeSelectorStateProps &\n IPrometheusMetricTypeSelectorOwnProps;\n\nexport class PrometheusMetricTypeSelector extends React.Component<\n IPrometheusMetricTypeSelectorProps,\n IPrometheusMetricTypeSelectorState\n> {\n public constructor(props: IPrometheusMetricTypeSelectorProps) {\n super(props);\n this.state = {\n showAccountDropdown: false,\n selectedAccount: get(props, ['accountOptions', 0, 'value']),\n };\n }\n\n public render() {\n const { accountOptions, load, loading, metricOptions, onChange, value } = this.props;\n\n const metricOptionsWithSelected =\n value && metricOptions.every((o) => o.value !== value)\n ? metricOptions.concat({ label: value, value })\n : metricOptions;\n\n return (\n <>\n <DisableableReactSelect\n isLoading={loading}\n options={metricOptionsWithSelected}\n onChange={onChange}\n value={value}\n placeholder={'Enter at least three characters to search.'}\n onInputChange={(input) => {\n load(input, this.state.selectedAccount);\n return input;\n }}\n disabledStateKeys={[DISABLE_EDIT_CONFIG]}\n />\n {accountOptions.length > 1 && (\n <div className=\"prometheus-metric-type-selector-account-hint\">\n <span>Metric search is currently populating from {this.state.selectedAccount}.</span>\n <span className=\"btn btn-link\" onClick={this.showAccountDropdown}>\n {!this.state.showAccountDropdown && 'Switch Account'}\n </span>\n </div>\n )}\n {this.state.showAccountDropdown && (\n <DisableableReactSelect\n clearable={false}\n options={accountOptions}\n onChange={this.selectAccount}\n value={this.state.selectedAccount}\n disabledStateKeys={[DISABLE_EDIT_CONFIG]}\n />\n )}\n </>\n );\n }\n\n private showAccountDropdown = (): void => {\n this.setState({\n showAccountDropdown: true,\n });\n };\n\n private selectAccount = (option: Option<string>): void => {\n this.setState({\n selectedAccount: option.value,\n showAccountDropdown: false,\n });\n };\n}\n\nconst accountOptionsSelector = createSelector(\n (state: ICanaryState) => state.data.kayentaAccounts.data,\n (accounts): Array<Option<string>> => {\n return chain(accounts)\n .filter((a) => a.supportedTypes.includes(KayentaAccountType.MetricsStore) && a.type === 'prometheus')\n .sortBy((a) => a.name)\n .map((a) => ({ label: a.name, value: a.name }))\n .value();\n },\n);\n\nconst metricOptionsSelector = createSelector(\n (state: ICanaryState) => state.data.metricsServiceMetadata.data,\n (descriptors: IPrometheusMetricDescriptor[]): Array<Option<string>> =>\n descriptors.map((d) => ({ label: d.name, value: d.name })),\n);\n\nconst mapStateToProps = (state: ICanaryState, ownProps: IPrometheusMetricTypeSelectorOwnProps) => {\n return {\n accountOptions: accountOptionsSelector(state),\n metricOptions: metricOptionsSelector(state),\n loading: state.data.metricsServiceMetadata.load === AsyncRequestState.Requesting,\n ...ownProps,\n };\n};\n\nconst mapDispatchToProps = (dispatch: Dispatch<ICanaryState>) => {\n return {\n load: (filter: string, metricsAccountName: string) => {\n dispatch(Creators.updatePrometheusMetricDescriptorFilter({ filter, metricsAccountName }));\n },\n };\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(PrometheusMetricTypeSelector);\n","import * as Creators from 'kayenta/actions/creators';\nimport { ICanaryMetricConfig } from 'kayenta/domain/ICanaryConfig';\nimport { DISABLE_EDIT_CONFIG, DisableableReactSelect } from 'kayenta/layout/disableable';\nimport FormRow from 'kayenta/layout/formRow';\nimport { IUpdateListPayload, List } from 'kayenta/layout/list';\nimport RadioChoice from 'kayenta/layout/radioChoice';\nimport { ICanaryState } from 'kayenta/reducers';\nimport { queryTypeSelector } from 'kayenta/selectors/filterTemplatesSelectors';\nimport { get } from 'lodash';\nimport * as React from 'react';\nimport { connect } from 'react-redux';\nimport { Option } from 'react-select';\nimport { Action } from 'redux';\nimport { createSelector } from 'reselect';\n\nimport {\n IPrometheusCanaryMetricSetQueryConfig,\n PrometheusQueryType,\n} from './domain/IPrometheusCanaryMetricSetQueryConfig';\nimport { ICanaryMetricValidationErrors } from '../../edit/editMetricValidation';\nimport PrometheusMetricTypeSelector from './metricTypeSelector';\nimport { editingMetricSelector } from '../../selectors';\n\ninterface IPrometheusMetricConfigurerStateProps {\n editingMetric: ICanaryMetricConfig;\n queryType: PrometheusQueryType;\n validationErrors: ICanaryMetricValidationErrors;\n}\n\ninterface IPrometheusMetricConfigurerDispatchProps {\n updateLabelBindings: (payload: IUpdateListPayload) => void;\n updateGroupBy: (payload: IUpdateListPayload) => void;\n updateFilterQueryType: (queryType: PrometheusQueryType) => void;\n updatePrometheusMetricQueryField: <T extends keyof IPrometheusCanaryMetricSetQueryConfig>(\n field: keyof IPrometheusCanaryMetricSetQueryConfig,\n value: Option<IPrometheusCanaryMetricSetQueryConfig[T]>,\n ) => void;\n}\n\nconst RESOURCE_TYPES = ['gce_instance', 'aws_ec2_instance'];\n\nconst toReactSelectOptions = (values: string[]): Array<Option<string>> =>\n values.map((value) => ({ value, label: value }));\n\n/*\n * Component for configuring a Prometheus metric.\n * */\nfunction PrometheusMetricConfigurer({\n editingMetric,\n queryType,\n updateLabelBindings,\n updateGroupBy,\n updateFilterQueryType,\n updatePrometheusMetricQueryField,\n validationErrors,\n}: IPrometheusMetricConfigurerStateProps & IPrometheusMetricConfigurerDispatchProps) {\n return (\n <>\n <FormRow label=\"Query Type\" helpId=\"canary.config.prometheus.queryType\">\n <RadioChoice\n value={PrometheusQueryType.DEFAULT}\n label=\"Default\"\n name=\"queryType\"\n current={queryType}\n action={() => updateFilterQueryType(PrometheusQueryType.DEFAULT)}\n />\n <RadioChoice\n value={PrometheusQueryType.PROMQL}\n label=\"PromQL\"\n name=\"queryType\"\n current={queryType}\n action={() => updateFilterQueryType(PrometheusQueryType.PROMQL)}\n />\n </FormRow>\n {queryType === PrometheusQueryType.DEFAULT && (\n <>\n <FormRow label=\"Resource Type\" inputOnly={true}>\n <DisableableReactSelect\n value={get(editingMetric, 'query.resourceType')}\n options={toReactSelectOptions(RESOURCE_TYPES)}\n onChange={(option: Option<string>) => updatePrometheusMetricQueryField('resourceType', option)}\n disabledStateKeys={[DISABLE_EDIT_CONFIG]}\n />\n </FormRow>\n <FormRow label=\"Metric Name\" inputOnly={true} error={get(validationErrors, 'metricName.message', null)}>\n <PrometheusMetricTypeSelector\n value={get(editingMetric, 'query.metricName', '')}\n onChange={(option: Option<string>) => updatePrometheusMetricQueryField('metricName', option)}\n />\n </FormRow>\n <FormRow label=\"Label Bindings\">\n <List list={editingMetric.query.labelBindings || []} actionCreator={updateLabelBindings} />\n </FormRow>\n <FormRow label=\"Group By\">\n <List list={editingMetric.query.groupByFields || []} actionCreator={updateGroupBy} />\n </FormRow>\n </>\n )}\n </>\n );\n}\n\nfunction mapStateToProps(state: ICanaryState): IPrometheusMetricConfigurerStateProps {\n return {\n editingMetric: state.selectedConfig.editingMetric,\n queryType: queryTypeSelector(state),\n validationErrors: prometheusMetricValidationSelector(state),\n };\n}\n\nfunction mapDispatchToProps(dispatch: (action: Action & any) => void): IPrometheusMetricConfigurerDispatchProps {\n return {\n updateLabelBindings: (payload) => dispatch(Creators.updatePrometheusLabelBindings(payload)),\n updateGroupBy: (payload) => dispatch(Creators.updatePrometheusGroupBy(payload)),\n updatePrometheusMetricQueryField: (field, option) =>\n dispatch(Creators.updatePrometheusMetricQueryField({ field, value: option && option.value })),\n updateFilterQueryType: (value: PrometheusQueryType) => {\n dispatch(Creators.updatePrometheusMetricQueryField({ field: 'queryType', value }));\n dispatch(Creators.editTemplateCancel()); // clear template editing\n dispatch(Creators.selectTemplate({ name: null })); // deselect template\n dispatch(Creators.editInlineTemplate({ value: '' })); // clear inline template\n },\n };\n}\n\nconst prometheusMetricValidationSelector = createSelector(editingMetricSelector, validateMetric);\n\n/**\n * Validates Prometheus specific fields on the edit metric modal\n */\nfunction validateMetric(editingMetric: ICanaryMetricConfig): ICanaryMetricValidationErrors {\n const errors: ICanaryMetricValidationErrors = {\n metricName: null,\n };\n return [validatePrometheusMetricName].reduce(\n (reducedErrors, validator) => validator(reducedErrors, editingMetric),\n errors,\n );\n}\n\n/**\n * Validates that the user has supplied a Prometheus metric.\n */\nfunction validatePrometheusMetricName(\n errors: ICanaryMetricValidationErrors,\n editingMetric: ICanaryMetricConfig,\n): ICanaryMetricValidationErrors {\n const nextErrors = { ...errors };\n const metricName = get(editingMetric, 'query.metricName', '');\n if (!metricName) {\n nextErrors.metricName = { message: 'The Prometheus metric is required.' };\n return nextErrors;\n }\n return nextErrors;\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(PrometheusMetricConfigurer);\n","import { ICanaryMetricConfig } from 'kayenta/domain/ICanaryConfig';\nimport { get } from 'lodash';\n\nimport PrometheusMetricConfigurer from './metricConfigurer';\nimport metricStoreConfigStore from '../metricStoreConfig.service';\n\nmetricStoreConfigStore.register({\n name: 'prometheus',\n metricConfigurer: PrometheusMetricConfigurer,\n queryFinder: (metric: ICanaryMetricConfig) => get(metric, 'query.metricName', ''),\n useTemplates: true,\n});\n","import classNames from 'classnames';\nimport * as React from 'react';\n\nimport { IKayentaAction } from '../actions/creators';\nimport AddNewButton from './addNewButton';\nimport DeleteButton from './deleteButton';\nimport { DISABLE_EDIT_CONFIG, DisableableInput } from './disableable';\n\nimport './keyValueList.less';\n\nexport enum KeyValueListAction {\n ADD,\n DELETE,\n KEY_EDIT,\n VALUE_EDIT,\n}\n\nexport interface IKeyValuePair {\n key: string;\n value: string;\n}\n\nexport interface IUpdateKeyValueListPayload {\n type: KeyValueListAction;\n index?: number;\n key?: string;\n value?: string;\n}\n\nexport const updateListReducer = (defaultValue = { key: '', value: '' }) => (\n state: IKeyValuePair[],\n action: IKayentaAction<IUpdateKeyValueListPayload>,\n) => {\n const { index, value, type } = action.payload;\n switch (type) {\n case KeyValueListAction.ADD:\n return state.concat(defaultValue);\n case KeyValueListAction.DELETE:\n return [...state.slice(0, index), ...state.slice(index + 1)];\n case KeyValueListAction.KEY_EDIT:\n return [...state.slice(0, index), { ...state[index], key: value }, ...state.slice(index + 1)];\n case KeyValueListAction.VALUE_EDIT:\n return [...state.slice(0, index), { ...state[index], value }, ...state.slice(index + 1)];\n }\n};\n\nexport interface IKeyValueListProps {\n list: IKeyValuePair[];\n className?: string;\n actionCreator: (action: IUpdateKeyValueListPayload) => void;\n}\n\nexport default function KeyValueList({ list, className, actionCreator }: IKeyValueListProps) {\n const onKeyChange = (i: number) => (event: any) =>\n actionCreator({\n type: KeyValueListAction.KEY_EDIT,\n index: i,\n value: event.target.value,\n });\n\n const onValueChange = (i: number) => (event: any) =>\n actionCreator({\n type: KeyValueListAction.VALUE_EDIT,\n index: i,\n value: event.target.value,\n });\n\n const deleteValue = (i: number) => () =>\n actionCreator({\n type: KeyValueListAction.DELETE,\n index: i,\n });\n\n const addValue = () =>\n actionCreator({\n type: KeyValueListAction.ADD,\n });\n\n return (\n <section className={classNames('kv-pair-list', className)}>\n {list.map((kvPair, index) => {\n const { key, value } = kvPair;\n return (\n <div key={index} className=\"kv-pair-item\">\n <div className=\"kv-pair-item-section\">\n <div className=\"kv-pair-item-section-label-wrapper\">\n <div className=\"kv-pair-item-section-label\">Key</div>\n </div>\n <div className=\"kv-pair-item-section-input\">\n <DisableableInput value={key} onChange={onKeyChange(index)} disabledStateKeys={[DISABLE_EDIT_CONFIG]} />\n </div>\n </div>\n <div className=\"kv-pair-item-section\">\n <div className=\"kv-pair-item-section-label-wrapper\">\n <div className=\"kv-pair-item-section-label\">Value</div>\n </div>\n <div className=\"kv-pair-item-section-input\">\n <DisableableInput\n value={value}\n onChange={onValueChange(index)}\n disabledStateKeys={[DISABLE_EDIT_CONFIG]}\n />\n </div>\n </div>\n <div className=\"kv-pair-item-section\">\n <DeleteButton onClick={deleteValue(index)} />\n </div>\n </div>\n );\n })}\n <AddNewButton onClick={addValue} />\n </section>\n );\n}\n","import autoBindMethods from 'class-autobind-decorator';\nimport * as Creators from 'kayenta/actions/creators';\nimport { ICanaryMetricConfig } from 'kayenta/domain';\nimport { DISABLE_EDIT_CONFIG, DisableableInput } from 'kayenta/layout/disableable';\nimport FormRow from 'kayenta/layout/formRow';\nimport { ICanaryState } from 'kayenta/reducers';\nimport { get } from 'lodash';\nimport * as React from 'react';\nimport { connect } from 'react-redux';\nimport { Action } from 'redux';\nimport { createSelector } from 'reselect';\n\nimport { ICanaryMetricValidationErrors, MetricValidatorFunction } from '../../edit/editMetricValidation';\nimport KeyValueList, { IKeyValuePair, IUpdateKeyValueListPayload } from '../../layout/keyValueList';\nimport { editingMetricSelector } from '../../selectors';\n\nimport './metricConfigurer.less';\n\ninterface ISignalFxMetricConfigurerStateProps {\n editingMetric: ICanaryMetricConfig;\n validationErrors: ICanaryMetricValidationErrors;\n}\n\ninterface ISignalFxMetricConfigurerDispatchProps {\n updateMetricName: (name: string) => void;\n updateAggregationMethod: (method: string) => void;\n updateQueryPairs: (payload: IUpdateKeyValueListPayload) => void;\n}\n\ntype SignalFxMetricConfigurerProps = ISignalFxMetricConfigurerStateProps & ISignalFxMetricConfigurerDispatchProps;\n\nexport const queryFinder = (metric: ICanaryMetricConfig) => get(metric, 'query.metricName', '');\nconst getSignalFxMetric = queryFinder;\nconst getQueryPairs = (metric: ICanaryMetricConfig) => get(metric, 'query.queryPairs', []) as IKeyValuePair[];\nconst getAggregationMethod = (metric: ICanaryMetricConfig) => get(metric, 'query.aggregationMethod', '');\n\n@autoBindMethods\nclass SignalFxMetricConfigurer extends React.Component<SignalFxMetricConfigurerProps> {\n public onMetricNameChange(e: React.ChangeEvent<HTMLInputElement>) {\n this.props.updateMetricName(e.target.value);\n }\n\n public onAggregationMethodChange(e: React.ChangeEvent<HTMLInputElement>) {\n this.props.updateAggregationMethod(e.target.value);\n }\n\n public render() {\n const { editingMetric, updateQueryPairs, validationErrors } = this.props;\n\n return (\n <section>\n <FormRow label=\"SignalFx Metric\" error={get(validationErrors, 'signalFxMetric.message', null)} inputOnly={true}>\n <DisableableInput\n type=\"text\"\n value={getSignalFxMetric(editingMetric)}\n onChange={this.onMetricNameChange}\n disabledStateKeys={[DISABLE_EDIT_CONFIG]}\n />\n </FormRow>\n <FormRow\n label=\"Aggregation Method\"\n inputOnly={true}\n helpId=\"canary.config.signalFx.aggregationMethod\"\n error={get(validationErrors, 'aggregationMethod.message', null)}\n >\n <DisableableInput\n type=\"text\"\n value={getAggregationMethod(editingMetric)}\n onChange={this.onAggregationMethodChange}\n disabledStateKeys={[DISABLE_EDIT_CONFIG]}\n />\n </FormRow>\n <FormRow\n label=\"Query Pairs\"\n helpId=\"canary.config.signalFx.queryPairs\"\n error={get(validationErrors, 'queryPairs.message', null)}\n >\n <KeyValueList\n className=\"signalfx-query-pairs\"\n list={getQueryPairs(editingMetric)}\n actionCreator={updateQueryPairs}\n />\n </FormRow>\n </section>\n );\n }\n}\n\n/**\n * Validates SignalFx specific fields on the edit metric modal\n */\nexport function validateMetric(editingMetric: ICanaryMetricConfig): ICanaryMetricValidationErrors {\n const errors: ICanaryMetricValidationErrors = {};\n\n const validators: MetricValidatorFunction[] = [...getSignalFxValidators(editingMetric)];\n\n return validators.reduce((reducedErrors, validator) => validator(reducedErrors, editingMetric), errors);\n}\n\n/**\n * returns the list of validators for the SignalFx edit metric form.\n */\nexport function getSignalFxValidators(editingMetric: ICanaryMetricConfig): MetricValidatorFunction[] {\n if (!editingMetric || !editingMetric.query) {\n return [];\n }\n return [validateSignalFxMetricName, validateAggregationMethod, validateQueryPairs];\n}\n\n/**\n * Validates that the user has supplied a SignalFx metric.\n */\nfunction validateSignalFxMetricName(\n errors: ICanaryMetricValidationErrors,\n editingMetric: ICanaryMetricConfig,\n): ICanaryMetricValidationErrors {\n const nextErrors = { ...errors };\n\n const signalFxMetric = getSignalFxMetric(editingMetric);\n\n if (!signalFxMetric) {\n nextErrors.signalFxMetric = { message: 'The SignalFx metric is required.' };\n }\n\n return nextErrors;\n}\n\n/**\n * Validates that the user has supplied an aggregation method.\n */\nfunction validateAggregationMethod(\n errors: ICanaryMetricValidationErrors,\n editingMetric: ICanaryMetricConfig,\n): ICanaryMetricValidationErrors {\n const nextErrors = { ...errors };\n\n const aggregationMethod = getAggregationMethod(editingMetric);\n\n if (!aggregationMethod) {\n nextErrors.aggregationMethod = { message: 'The SignalFx SignalFlow stream aggregation method is required.' };\n }\n\n return nextErrors;\n}\n\n/**\n * Validates that if the user has supplied query pairs that all key value combos contain values.\n */\nfunction validateQueryPairs(\n errors: ICanaryMetricValidationErrors,\n editingMetric: ICanaryMetricConfig,\n): ICanaryMetricValidationErrors {\n const nextErrors = { ...errors };\n\n const queryPairs: IKeyValuePair[] = getQueryPairs(editingMetric);\n\n queryPairs.forEach((qp) => {\n if (!qp.key || !qp.value) {\n nextErrors.queryPairs = { message: 'All query pairs must contain a non-blank key and value.' };\n }\n });\n\n return nextErrors;\n}\n\nconst sfxEditingMetricValidationErrorsSelector = createSelector(editingMetricSelector, validateMetric);\n\nfunction mapStateToProps(state: ICanaryState): ISignalFxMetricConfigurerStateProps {\n return {\n editingMetric: state.selectedConfig.editingMetric,\n validationErrors: sfxEditingMetricValidationErrorsSelector(state),\n };\n}\n\nfunction mapDispatchToProps(dispatch: (action: Action & any) => void): ISignalFxMetricConfigurerDispatchProps {\n return {\n updateMetricName: (metricName: string): void => {\n dispatch(Creators.updateSignalFxMetricName({ metricName }));\n },\n updateAggregationMethod: (aggregationMethod: string): void => {\n dispatch(Creators.updateSignalFxAggregationMethod({ aggregationMethod }));\n },\n updateQueryPairs: (payload) => dispatch(Creators.updateSignalFxQueryPairs(payload)),\n };\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(SignalFxMetricConfigurer);\n","import SignalFxMetricConfigurer, { queryFinder } from './metricConfigurer';\nimport metricStoreConfigStore from '../metricStoreConfig.service';\n\nmetricStoreConfigStore.register({\n name: 'signalfx',\n metricConfigurer: SignalFxMetricConfigurer,\n queryFinder,\n});\n","import * as Creators from 'kayenta/actions/creators';\nimport { DISABLE_EDIT_CONFIG, DisableableReactSelect } from 'kayenta/layout/disableable';\nimport { ICanaryState } from 'kayenta/reducers';\nimport { AsyncRequestState } from 'kayenta/reducers/asyncRequest';\nimport * as React from 'react';\nimport { connect } from 'react-redux';\nimport { Option } from 'react-select';\nimport { Dispatch } from 'redux';\n\nimport { IStackdriverMetricDescriptor } from './domain/IStackdriverMetricDescriptor';\n\nexport interface IStackdriverMetricTypeSelectorDispatchProps {\n load: (filter: string) => void;\n}\n\nexport interface IStackdriverMetricTypeSelectorStateProps {\n descriptors: IStackdriverMetricDescriptor[];\n loading: boolean;\n}\n\nexport interface IStackdriverMetricTypeSelectorOwnProps {\n value: string;\n onChange: (option: Option) => void;\n}\n\ntype IStackdriverMetricTypeProps = IStackdriverMetricTypeSelectorDispatchProps &\n IStackdriverMetricTypeSelectorStateProps &\n IStackdriverMetricTypeSelectorOwnProps;\n\nconst MetricField = ({\n descriptor,\n field,\n label,\n}: {\n descriptor: IStackdriverMetricDescriptor;\n field: keyof IStackdriverMetricDescriptor;\n label: string;\n}) => {\n if (!descriptor || !descriptor[field]) {\n return null;\n }\n return (\n <div>\n <strong>{label}: </strong>\n {descriptor[field]}\n </div>\n );\n};\n\nexport class StackdriverMetricTypeSelector extends React.Component<IStackdriverMetricTypeProps> {\n public componentDidMount() {\n this.props.load(this.props.value);\n }\n\n public render() {\n const { loading, load, descriptors, value, onChange } = this.props;\n\n let options: Option[] = descriptors.map((d) => ({ label: d.type, value: d.type }));\n if (value && options.every((o) => o.value !== value)) {\n options = options.concat({ label: value, value });\n }\n\n return (\n <DisableableReactSelect\n isLoading={loading}\n options={options}\n onChange={onChange}\n value={value}\n optionRenderer={(option: Option<string>) => {\n const descriptor = descriptors.find((d) => d.type === option.value);\n if (!descriptor) {\n return <span>{option.label}</span>;\n }\n\n return (\n <>\n <MetricField descriptor={descriptor} field=\"type\" label=\"Metric\" />\n <MetricField descriptor={descriptor} field=\"description\" label=\"Description\" />\n <MetricField descriptor={descriptor} field=\"unit\" label=\"Unit\" />\n <MetricField descriptor={descriptor} field=\"metricKind\" label=\"Kind\" />\n <MetricField descriptor={descriptor} field=\"valueType\" label=\"Value type\" />\n </>\n );\n }}\n placeholder={'Enter at least three characters to search.'}\n onInputChange={(input) => {\n load(input);\n return input;\n }}\n disabledStateKeys={[DISABLE_EDIT_CONFIG]}\n />\n );\n }\n}\n\nexport const mapStateToProps = (state: ICanaryState, ownProps: IStackdriverMetricTypeSelectorOwnProps) => {\n const descriptors = state.data.metricsServiceMetadata.data as IStackdriverMetricDescriptor[];\n return {\n descriptors,\n loading: state.data.metricsServiceMetadata.load === AsyncRequestState.Requesting,\n ...ownProps,\n };\n};\n\nexport const mapDispatchToProps = (dispatch: Dispatch<ICanaryState>) => {\n return {\n load: (filter: string) => {\n dispatch(Creators.updateStackdriverMetricDescriptorFilter({ filter }));\n },\n };\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(StackdriverMetricTypeSelector);\n","import * as Creators from 'kayenta/actions/creators';\nimport { ICanaryMetricConfig } from 'kayenta/domain/ICanaryConfig';\nimport { DISABLE_EDIT_CONFIG, DisableableReactSelect } from 'kayenta/layout/disableable';\nimport FormRow from 'kayenta/layout/formRow';\nimport { IUpdateListPayload, List } from 'kayenta/layout/list';\nimport { ICanaryState } from 'kayenta/reducers';\nimport { get } from 'lodash';\nimport * as React from 'react';\nimport { connect } from 'react-redux';\nimport { Option } from 'react-select';\nimport { Action } from 'redux';\n\nimport { IStackdriverCanaryMetricSetQueryConfig } from './domain/IStackdriverCanaryMetricSetQueryConfig';\nimport StackdriverMetricTypeSelector from './metricTypeSelector';\n\ninterface IStackdriverMetricConfigurerStateProps {\n editingMetric: ICanaryMetricConfig;\n}\n\ninterface IStackdriverMetricConfigurerDispatchProps {\n updateStackdriverQueryField: <T extends keyof IStackdriverCanaryMetricSetQueryConfig>(\n field: keyof IStackdriverCanaryMetricSetQueryConfig,\n value: Option<IStackdriverCanaryMetricSetQueryConfig[T]>,\n ) => void;\n updateGroupBy: (payload: IUpdateListPayload) => void;\n}\n\n// TODO(dpeach): externalize these values.\nconst RESOURCE_TYPES = [\n 'gce_instance',\n 'aws_ec2_instance',\n 'gae_app',\n 'k8s_container',\n 'k8s_pod',\n 'k8s_node',\n 'gke_container',\n 'https_lb_rule',\n 'global',\n];\n\nconst CROSS_SERIES_REDUCERS = [\n 'REDUCE_NONE',\n 'REDUCE_MEAN',\n 'REDUCE_MIN',\n 'REDUCE_MAX',\n 'REDUCE_SUM',\n 'REDUCE_COUNT_TRUE',\n 'REDUCE_COUNT_FALSE',\n 'REDUCE_FRACTION_TRUE',\n 'REDUCE_PERCENTILE_99',\n 'REDUCE_PERCENTILE_95',\n 'REDUCE_PERCENTILE_50',\n 'REDUCE_PERCENTILE_05',\n];\n\nconst PER_SERIES_ALIGNERS = [\n 'ALIGN_NONE',\n 'ALIGN_DELTA',\n 'ALIGN_RATE',\n 'ALIGN_INTERPOLATE',\n 'ALIGN_NEXT_OLDER',\n 'ALIGN_MIN',\n 'ALIGN_MAX',\n 'ALIGN_MEAN',\n 'ALIGN_COUNT',\n 'ALIGN_SUM',\n 'ALIGN_STDDEV',\n 'ALIGN_COUNT_TRUE',\n 'ALIGN_COUNT_FALSE',\n 'ALIGN_FRACTION_TRUE',\n 'ALIGN_PERCENTILE_99',\n 'ALIGN_PERCENTILE_95',\n 'ALIGN_PERCENTILE_50',\n 'ALIGN_PERCENTILE_05',\n 'ALIGN_PERCENT_CHANGE',\n];\n\nconst STACKDRIVER_HELP_ID_PREFIX = 'stackdriver';\n\nconst toReactSelectOptions = (values: string[]): Array<Option<string>> =>\n values.map((value) => ({ value, label: value }));\n\n/*\n * Component for configuring a Stackdriver metric.\n * */\nfunction StackdriverMetricConfigurer({\n editingMetric,\n updateGroupBy,\n updateStackdriverQueryField,\n}: IStackdriverMetricConfigurerStateProps & IStackdriverMetricConfigurerDispatchProps) {\n return (\n <>\n <FormRow label=\"Resource Type\" helpId={`${STACKDRIVER_HELP_ID_PREFIX}.resourceType`} inputOnly={true}>\n <DisableableReactSelect\n value={get(editingMetric, 'query.resourceType')}\n options={toReactSelectOptions(RESOURCE_TYPES)}\n onChange={(option: Option<string>) => updateStackdriverQueryField('resourceType', option)}\n disabledStateKeys={[DISABLE_EDIT_CONFIG]}\n />\n </FormRow>\n <FormRow label=\"Metric Type\" helpId={`${STACKDRIVER_HELP_ID_PREFIX}.metricType`} inputOnly={true}>\n <StackdriverMetricTypeSelector\n value={get(editingMetric, 'query.metricType', '')}\n onChange={(option: Option<string>) => updateStackdriverQueryField('metricType', option)}\n />\n </FormRow>\n <FormRow label=\"Group By\" helpId={`${STACKDRIVER_HELP_ID_PREFIX}.groupBy`}>\n <List list={editingMetric.query.groupByFields || []} actionCreator={updateGroupBy} />\n </FormRow>\n <FormRow label=\"Aligner\" helpId={`${STACKDRIVER_HELP_ID_PREFIX}.perSeriesAligner`} inputOnly={true}>\n <DisableableReactSelect\n value={get(editingMetric, 'query.perSeriesAligner')}\n options={toReactSelectOptions(PER_SERIES_ALIGNERS)}\n onChange={(option: Option<string>) => updateStackdriverQueryField('perSeriesAligner', option)}\n disabledStateKeys={[DISABLE_EDIT_CONFIG]}\n />\n </FormRow>\n <FormRow label=\"Reducer\" helpId={`${STACKDRIVER_HELP_ID_PREFIX}.crossSeriesReducer`} inputOnly={true}>\n <DisableableReactSelect\n value={get(editingMetric, 'query.crossSeriesReducer')}\n options={toReactSelectOptions(CROSS_SERIES_REDUCERS)}\n onChange={(option: Option<string>) => updateStackdriverQueryField('crossSeriesReducer', option)}\n disabledStateKeys={[DISABLE_EDIT_CONFIG]}\n />\n </FormRow>\n </>\n );\n}\n\nfunction mapStateToProps(state: ICanaryState): IStackdriverMetricConfigurerStateProps {\n return {\n editingMetric: state.selectedConfig.editingMetric,\n };\n}\n\nfunction mapDispatchToProps(dispatch: (action: Action & any) => void): IStackdriverMetricConfigurerDispatchProps {\n return {\n updateStackdriverQueryField: (field, option) =>\n dispatch(Creators.updateStackdriverMetricResourceField({ field, value: option && option.value })),\n updateGroupBy: (payload) => dispatch(Creators.updateStackdriverGroupBy(payload)),\n };\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(StackdriverMetricConfigurer);\n","import { ICanaryAnalysisResult, IMetricSetPair } from 'kayenta/domain';\nimport { buildDelegateService } from 'kayenta/service/delegateFactory';\nimport * as React from 'react';\n\n// e.g., amplitude vs. time, histogram, etc.\nexport enum GraphType {\n TimeSeries = 'Time Series',\n Histogram = 'Histogram',\n BoxPlot = 'Beeswarm Box Plot',\n}\n\nexport interface IMetricSetPairGraphProps {\n type: GraphType;\n metricSetPair: IMetricSetPair;\n result: ICanaryAnalysisResult;\n}\n\nexport interface IMetricSetPairGraph {\n /*\n * Name of the graph implementation, referenced in settings.js.\n * */\n name: string;\n\n /*\n * Returns top-level graph component class.\n * */\n getGraph: () => React.ComponentType<IMetricSetPairGraphProps>;\n\n /*\n * Returns true if the graph implementation supports a given graph type.\n * */\n handlesGraphType: (type: GraphType) => boolean;\n}\n\nexport const metricSetPairGraphService = buildDelegateService<IMetricSetPairGraph>();\n","import { ICanaryMetricConfig } from 'kayenta/domain/ICanaryConfig';\nimport { get } from 'lodash';\n\nimport StackdriverMetricConfigurer from './metricConfigurer';\nimport metricStoreConfigStore from '../metricStoreConfig.service';\n\nmetricStoreConfigStore.register({\n name: 'stackdriver',\n metricConfigurer: StackdriverMetricConfigurer,\n queryFinder: (metric: ICanaryMetricConfig) => get(metric, 'query.metricType', ''),\n useTemplates: true,\n});\n","import * as React from 'react';\nimport { Suspense } from 'react';\n\nimport { Spinner } from '@spinnaker/core';\n\nimport { GraphType, IMetricSetPairGraphProps, metricSetPairGraphService } from '../metricSetPairGraph.service';\nconst SemioticGraphLazy = React.lazy(() => import(/* webpackChunkName: \"Lazy-KayentaGraphs\" */ './semioticGraph'));\n\nconst supportedGraphTypes: GraphType[] = [GraphType.TimeSeries, GraphType.Histogram, GraphType.BoxPlot];\n// Semiotic component registration\nmetricSetPairGraphService.register({\n name: 'semiotic',\n handlesGraphType: (type) => supportedGraphTypes.includes(type),\n getGraph: () => (props: IMetricSetPairGraphProps) => (\n <Suspense fallback={<Spinner />}>\n <SemioticGraphLazy {...props} />\n </Suspense>\n ),\n});\n","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?t(exports):\"function\"==typeof define&&define.amd?define([\"exports\"],t):t(e.reduxLogger=e.reduxLogger||{})}(this,function(e){\"use strict\";function t(e,t){e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})}function r(e,t){Object.defineProperty(this,\"kind\",{value:e,enumerable:!0}),t&&t.length&&Object.defineProperty(this,\"path\",{value:t,enumerable:!0})}function n(e,t,r){n.super_.call(this,\"E\",e),Object.defineProperty(this,\"lhs\",{value:t,enumerable:!0}),Object.defineProperty(this,\"rhs\",{value:r,enumerable:!0})}function o(e,t){o.super_.call(this,\"N\",e),Object.defineProperty(this,\"rhs\",{value:t,enumerable:!0})}function i(e,t){i.super_.call(this,\"D\",e),Object.defineProperty(this,\"lhs\",{value:t,enumerable:!0})}function a(e,t,r){a.super_.call(this,\"A\",e),Object.defineProperty(this,\"index\",{value:t,enumerable:!0}),Object.defineProperty(this,\"item\",{value:r,enumerable:!0})}function f(e,t,r){var n=e.slice((r||t)+1||e.length);return e.length=t<0?e.length+t:t,e.push.apply(e,n),e}function u(e){var t=\"undefined\"==typeof e?\"undefined\":N(e);return\"object\"!==t?t:e===Math?\"math\":null===e?\"null\":Array.isArray(e)?\"array\":\"[object Date]\"===Object.prototype.toString.call(e)?\"date\":\"function\"==typeof e.toString&&/^\\/.*\\//.test(e.toString())?\"regexp\":\"object\"}function l(e,t,r,c,s,d,p){s=s||[],p=p||[];var g=s.slice(0);if(\"undefined\"!=typeof d){if(c){if(\"function\"==typeof c&&c(g,d))return;if(\"object\"===(\"undefined\"==typeof c?\"undefined\":N(c))){if(c.prefilter&&c.prefilter(g,d))return;if(c.normalize){var h=c.normalize(g,d,e,t);h&&(e=h[0],t=h[1])}}}g.push(d)}\"regexp\"===u(e)&&\"regexp\"===u(t)&&(e=e.toString(),t=t.toString());var y=\"undefined\"==typeof e?\"undefined\":N(e),v=\"undefined\"==typeof t?\"undefined\":N(t),b=\"undefined\"!==y||p&&p[p.length-1].lhs&&p[p.length-1].lhs.hasOwnProperty(d),m=\"undefined\"!==v||p&&p[p.length-1].rhs&&p[p.length-1].rhs.hasOwnProperty(d);if(!b&&m)r(new o(g,t));else if(!m&&b)r(new i(g,e));else if(u(e)!==u(t))r(new n(g,e,t));else if(\"date\"===u(e)&&e-t!==0)r(new n(g,e,t));else if(\"object\"===y&&null!==e&&null!==t)if(p.filter(function(t){return t.lhs===e}).length)e!==t&&r(new n(g,e,t));else{if(p.push({lhs:e,rhs:t}),Array.isArray(e)){var w;e.length;for(w=0;w<e.length;w++)w>=t.length?r(new a(g,w,new i(void 0,e[w]))):l(e[w],t[w],r,c,g,w,p);for(;w<t.length;)r(new a(g,w,new o(void 0,t[w++])))}else{var x=Object.keys(e),S=Object.keys(t);x.forEach(function(n,o){var i=S.indexOf(n);i>=0?(l(e[n],t[n],r,c,g,n,p),S=f(S,i)):l(e[n],void 0,r,c,g,n,p)}),S.forEach(function(e){l(void 0,t[e],r,c,g,e,p)})}p.length=p.length-1}else e!==t&&(\"number\"===y&&isNaN(e)&&isNaN(t)||r(new n(g,e,t)))}function c(e,t,r,n){return n=n||[],l(e,t,function(e){e&&n.push(e)},r),n.length?n:void 0}function s(e,t,r){if(r.path&&r.path.length){var n,o=e[t],i=r.path.length-1;for(n=0;n<i;n++)o=o[r.path[n]];switch(r.kind){case\"A\":s(o[r.path[n]],r.index,r.item);break;case\"D\":delete o[r.path[n]];break;case\"E\":case\"N\":o[r.path[n]]=r.rhs}}else switch(r.kind){case\"A\":s(e[t],r.index,r.item);break;case\"D\":e=f(e,t);break;case\"E\":case\"N\":e[t]=r.rhs}return e}function d(e,t,r){if(e&&t&&r&&r.kind){for(var n=e,o=-1,i=r.path?r.path.length-1:0;++o<i;)\"undefined\"==typeof n[r.path[o]]&&(n[r.path[o]]=\"number\"==typeof r.path[o]?[]:{}),n=n[r.path[o]];switch(r.kind){case\"A\":s(r.path?n[r.path[o]]:n,r.index,r.item);break;case\"D\":delete n[r.path[o]];break;case\"E\":case\"N\":n[r.path[o]]=r.rhs}}}function p(e,t,r){if(r.path&&r.path.length){var n,o=e[t],i=r.path.length-1;for(n=0;n<i;n++)o=o[r.path[n]];switch(r.kind){case\"A\":p(o[r.path[n]],r.index,r.item);break;case\"D\":o[r.path[n]]=r.lhs;break;case\"E\":o[r.path[n]]=r.lhs;break;case\"N\":delete o[r.path[n]]}}else switch(r.kind){case\"A\":p(e[t],r.index,r.item);break;case\"D\":e[t]=r.lhs;break;case\"E\":e[t]=r.lhs;break;case\"N\":e=f(e,t)}return e}function g(e,t,r){if(e&&t&&r&&r.kind){var n,o,i=e;for(o=r.path.length-1,n=0;n<o;n++)\"undefined\"==typeof i[r.path[n]]&&(i[r.path[n]]={}),i=i[r.path[n]];switch(r.kind){case\"A\":p(i[r.path[n]],r.index,r.item);break;case\"D\":i[r.path[n]]=r.lhs;break;case\"E\":i[r.path[n]]=r.lhs;break;case\"N\":delete i[r.path[n]]}}}function h(e,t,r){if(e&&t){var n=function(n){r&&!r(e,t,n)||d(e,t,n)};l(e,t,n)}}function y(e){return\"color: \"+F[e].color+\"; font-weight: bold\"}function v(e){var t=e.kind,r=e.path,n=e.lhs,o=e.rhs,i=e.index,a=e.item;switch(t){case\"E\":return[r.join(\".\"),n,\"→\",o];case\"N\":return[r.join(\".\"),o];case\"D\":return[r.join(\".\")];case\"A\":return[r.join(\".\")+\"[\"+i+\"]\",a];default:return[]}}function b(e,t,r,n){var o=c(e,t);try{n?r.groupCollapsed(\"diff\"):r.group(\"diff\")}catch(e){r.log(\"diff\")}o?o.forEach(function(e){var t=e.kind,n=v(e);r.log.apply(r,[\"%c \"+F[t].text,y(t)].concat(P(n)))}):r.log(\"—— no diff ——\");try{r.groupEnd()}catch(e){r.log(\"—— diff end —— \")}}function m(e,t,r,n){switch(\"undefined\"==typeof e?\"undefined\":N(e)){case\"object\":return\"function\"==typeof e[n]?e[n].apply(e,P(r)):e[n];case\"function\":return e(t);default:return e}}function w(e){var t=e.timestamp,r=e.duration;return function(e,n,o){var i=[\"action\"];return i.push(\"%c\"+String(e.type)),t&&i.push(\"%c@ \"+n),r&&i.push(\"%c(in \"+o.toFixed(2)+\" ms)\"),i.join(\" \")}}function x(e,t){var r=t.logger,n=t.actionTransformer,o=t.titleFormatter,i=void 0===o?w(t):o,a=t.collapsed,f=t.colors,u=t.level,l=t.diff,c=\"undefined\"==typeof t.titleFormatter;e.forEach(function(o,s){var d=o.started,p=o.startedTime,g=o.action,h=o.prevState,y=o.error,v=o.took,w=o.nextState,x=e[s+1];x&&(w=x.prevState,v=x.started-d);var S=n(g),k=\"function\"==typeof a?a(function(){return w},g,o):a,j=D(p),E=f.title?\"color: \"+f.title(S)+\";\":\"\",A=[\"color: gray; font-weight: lighter;\"];A.push(E),t.timestamp&&A.push(\"color: gray; font-weight: lighter;\"),t.duration&&A.push(\"color: gray; font-weight: lighter;\");var O=i(S,j,v);try{k?f.title&&c?r.groupCollapsed.apply(r,[\"%c \"+O].concat(A)):r.groupCollapsed(O):f.title&&c?r.group.apply(r,[\"%c \"+O].concat(A)):r.group(O)}catch(e){r.log(O)}var N=m(u,S,[h],\"prevState\"),P=m(u,S,[S],\"action\"),C=m(u,S,[y,h],\"error\"),F=m(u,S,[w],\"nextState\");if(N)if(f.prevState){var L=\"color: \"+f.prevState(h)+\"; font-weight: bold\";r[N](\"%c prev state\",L,h)}else r[N](\"prev state\",h);if(P)if(f.action){var T=\"color: \"+f.action(S)+\"; font-weight: bold\";r[P](\"%c action \",T,S)}else r[P](\"action \",S);if(y&&C)if(f.error){var M=\"color: \"+f.error(y,h)+\"; font-weight: bold;\";r[C](\"%c error \",M,y)}else r[C](\"error \",y);if(F)if(f.nextState){var _=\"color: \"+f.nextState(w)+\"; font-weight: bold\";r[F](\"%c next state\",_,w)}else r[F](\"next state\",w);l&&b(h,w,r,k);try{r.groupEnd()}catch(e){r.log(\"—— log end ——\")}})}function S(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=Object.assign({},L,e),r=t.logger,n=t.stateTransformer,o=t.errorTransformer,i=t.predicate,a=t.logErrors,f=t.diffPredicate;if(\"undefined\"==typeof r)return function(){return function(e){return function(t){return e(t)}}};if(e.getState&&e.dispatch)return console.error(\"[redux-logger] redux-logger not installed. Make sure to pass logger instance as middleware:\\n// Logger with default options\\nimport { logger } from 'redux-logger'\\nconst store = createStore(\\n reducer,\\n applyMiddleware(logger)\\n)\\n// Or you can create your own logger with custom options http://bit.ly/redux-logger-options\\nimport createLogger from 'redux-logger'\\nconst logger = createLogger({\\n // ...options\\n});\\nconst store = createStore(\\n reducer,\\n applyMiddleware(logger)\\n)\\n\"),function(){return function(e){return function(t){return e(t)}}};var u=[];return function(e){var r=e.getState;return function(e){return function(l){if(\"function\"==typeof i&&!i(r,l))return e(l);var c={};u.push(c),c.started=O.now(),c.startedTime=new Date,c.prevState=n(r()),c.action=l;var s=void 0;if(a)try{s=e(l)}catch(e){c.error=o(e)}else s=e(l);c.took=O.now()-c.started,c.nextState=n(r());var d=t.diff&&\"function\"==typeof f?f(r,l):t.diff;if(x(u,Object.assign({},t,{diff:d})),u.length=0,c.error)throw c.error;return s}}}}var k,j,E=function(e,t){return new Array(t+1).join(e)},A=function(e,t){return E(\"0\",t-e.toString().length)+e},D=function(e){return A(e.getHours(),2)+\":\"+A(e.getMinutes(),2)+\":\"+A(e.getSeconds(),2)+\".\"+A(e.getMilliseconds(),3)},O=\"undefined\"!=typeof performance&&null!==performance&&\"function\"==typeof performance.now?performance:Date,N=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},P=function(e){if(Array.isArray(e)){for(var t=0,r=Array(e.length);t<e.length;t++)r[t]=e[t];return r}return Array.from(e)},C=[];k=\"object\"===(\"undefined\"==typeof global?\"undefined\":N(global))&&global?global:\"undefined\"!=typeof window?window:{},j=k.DeepDiff,j&&C.push(function(){\"undefined\"!=typeof j&&k.DeepDiff===c&&(k.DeepDiff=j,j=void 0)}),t(n,r),t(o,r),t(i,r),t(a,r),Object.defineProperties(c,{diff:{value:c,enumerable:!0},observableDiff:{value:l,enumerable:!0},applyDiff:{value:h,enumerable:!0},applyChange:{value:d,enumerable:!0},revertChange:{value:g,enumerable:!0},isConflict:{value:function(){return\"undefined\"!=typeof j},enumerable:!0},noConflict:{value:function(){return C&&(C.forEach(function(e){e()}),C=null),c},enumerable:!0}});var F={E:{color:\"#2196F3\",text:\"CHANGED:\"},N:{color:\"#4CAF50\",text:\"ADDED:\"},D:{color:\"#F44336\",text:\"DELETED:\"},A:{color:\"#2196F3\",text:\"ARRAY:\"}},L={level:\"log\",logger:console,logErrors:!0,collapsed:void 0,predicate:void 0,duration:!1,timestamp:!0,stateTransformer:function(e){return e},actionTransformer:function(e){return e},errorTransformer:function(e){return e},colors:{title:function(){return\"inherit\"},prevState:function(){return\"#9E9E9E\"},action:function(){return\"#03A9F4\"},nextState:function(){return\"#4CAF50\"},error:function(){return\"#F20404\"}},diff:!1,diffPredicate:void 0,transformer:void 0},T=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.dispatch,r=e.getState;return\"function\"==typeof t||\"function\"==typeof r?S()({dispatch:t,getState:r}):void console.error(\"\\n[redux-logger v3] BREAKING CHANGE\\n[redux-logger v3] Since 3.0.0 redux-logger exports by default logger with default settings.\\n[redux-logger v3] Change\\n[redux-logger v3] import createLogger from 'redux-logger'\\n[redux-logger v3] to\\n[redux-logger v3] import { createLogger } from 'redux-logger'\\n\")};e.defaults=L,e.createLogger=S,e.logger=T,e.default=T,Object.defineProperty(e,\"__esModule\",{value:!0})});\n","\"use strict\";\n// CommonJS / Node have global context exposed as \"global\" variable.\n// We don't want to include the whole node.d.ts this this compilation unit so we'll just fake\n// the global \"global\" var for now.\nvar __window = typeof window !== 'undefined' && window;\nvar __self = typeof self !== 'undefined' && typeof WorkerGlobalScope !== 'undefined' &&\n self instanceof WorkerGlobalScope && self;\nvar __global = typeof global !== 'undefined' && global;\nvar _root = __window || __global || __self;\nexports.root = _root;\n// Workaround Closure Compiler restriction: The body of a goog.module cannot use throw.\n// This is needed when used with angular/tsickle which inserts a goog.module statement.\n// Wrap in IIFE\n(function () {\n if (!_root) {\n throw new Error('RxJS could not find any global context (window, self, global)');\n }\n})();\n//# sourceMappingURL=root.js.map","\"use strict\";\nfunction isFunction(x) {\n return typeof x === 'function';\n}\nexports.isFunction = isFunction;\n//# sourceMappingURL=isFunction.js.map","\"use strict\";\nexports.isArray = Array.isArray || (function (x) { return x && typeof x.length === 'number'; });\n//# sourceMappingURL=isArray.js.map","\"use strict\";\nfunction isObject(x) {\n return x != null && typeof x === 'object';\n}\nexports.isObject = isObject;\n//# sourceMappingURL=isObject.js.map","\"use strict\";\nvar errorObject_1 = require('./errorObject');\nvar tryCatchTarget;\nfunction tryCatcher() {\n try {\n return tryCatchTarget.apply(this, arguments);\n }\n catch (e) {\n errorObject_1.errorObject.e = e;\n return errorObject_1.errorObject;\n }\n}\nfunction tryCatch(fn) {\n tryCatchTarget = fn;\n return tryCatcher;\n}\nexports.tryCatch = tryCatch;\n;\n//# sourceMappingURL=tryCatch.js.map","\"use strict\";\n// typeof any so that it we don't have to cast when comparing a result to the error object\nexports.errorObject = { e: {} };\n//# sourceMappingURL=errorObject.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\n/**\n * An error thrown when one or more errors have occurred during the\n * `unsubscribe` of a {@link Subscription}.\n */\nvar UnsubscriptionError = (function (_super) {\n __extends(UnsubscriptionError, _super);\n function UnsubscriptionError(errors) {\n _super.call(this);\n this.errors = errors;\n var err = Error.call(this, errors ?\n errors.length + \" errors occurred during unsubscription:\\n \" + errors.map(function (err, i) { return ((i + 1) + \") \" + err.toString()); }).join('\\n ') : '');\n this.name = err.name = 'UnsubscriptionError';\n this.stack = err.stack;\n this.message = err.message;\n }\n return UnsubscriptionError;\n}(Error));\nexports.UnsubscriptionError = UnsubscriptionError;\n//# sourceMappingURL=UnsubscriptionError.js.map","\"use strict\";\nvar isArray_1 = require('./util/isArray');\nvar isObject_1 = require('./util/isObject');\nvar isFunction_1 = require('./util/isFunction');\nvar tryCatch_1 = require('./util/tryCatch');\nvar errorObject_1 = require('./util/errorObject');\nvar UnsubscriptionError_1 = require('./util/UnsubscriptionError');\n/**\n * Represents a disposable resource, such as the execution of an Observable. A\n * Subscription has one important method, `unsubscribe`, that takes no argument\n * and just disposes the resource held by the subscription.\n *\n * Additionally, subscriptions may be grouped together through the `add()`\n * method, which will attach a child Subscription to the current Subscription.\n * When a Subscription is unsubscribed, all its children (and its grandchildren)\n * will be unsubscribed as well.\n *\n * @class Subscription\n */\nvar Subscription = (function () {\n /**\n * @param {function(): void} [unsubscribe] A function describing how to\n * perform the disposal of resources when the `unsubscribe` method is called.\n */\n function Subscription(unsubscribe) {\n /**\n * A flag to indicate whether this Subscription has already been unsubscribed.\n * @type {boolean}\n */\n this.closed = false;\n this._parent = null;\n this._parents = null;\n this._subscriptions = null;\n if (unsubscribe) {\n this._unsubscribe = unsubscribe;\n }\n }\n /**\n * Disposes the resources held by the subscription. May, for instance, cancel\n * an ongoing Observable execution or cancel any other type of work that\n * started when the Subscription was created.\n * @return {void}\n */\n Subscription.prototype.unsubscribe = function () {\n var hasErrors = false;\n var errors;\n if (this.closed) {\n return;\n }\n var _a = this, _parent = _a._parent, _parents = _a._parents, _unsubscribe = _a._unsubscribe, _subscriptions = _a._subscriptions;\n this.closed = true;\n this._parent = null;\n this._parents = null;\n // null out _subscriptions first so any child subscriptions that attempt\n // to remove themselves from this subscription will noop\n this._subscriptions = null;\n var index = -1;\n var len = _parents ? _parents.length : 0;\n // if this._parent is null, then so is this._parents, and we\n // don't have to remove ourselves from any parent subscriptions.\n while (_parent) {\n _parent.remove(this);\n // if this._parents is null or index >= len,\n // then _parent is set to null, and the loop exits\n _parent = ++index < len && _parents[index] || null;\n }\n if (isFunction_1.isFunction(_unsubscribe)) {\n var trial = tryCatch_1.tryCatch(_unsubscribe).call(this);\n if (trial === errorObject_1.errorObject) {\n hasErrors = true;\n errors = errors || (errorObject_1.errorObject.e instanceof UnsubscriptionError_1.UnsubscriptionError ?\n flattenUnsubscriptionErrors(errorObject_1.errorObject.e.errors) : [errorObject_1.errorObject.e]);\n }\n }\n if (isArray_1.isArray(_subscriptions)) {\n index = -1;\n len = _subscriptions.length;\n while (++index < len) {\n var sub = _subscriptions[index];\n if (isObject_1.isObject(sub)) {\n var trial = tryCatch_1.tryCatch(sub.unsubscribe).call(sub);\n if (trial === errorObject_1.errorObject) {\n hasErrors = true;\n errors = errors || [];\n var err = errorObject_1.errorObject.e;\n if (err instanceof UnsubscriptionError_1.UnsubscriptionError) {\n errors = errors.concat(flattenUnsubscriptionErrors(err.errors));\n }\n else {\n errors.push(err);\n }\n }\n }\n }\n }\n if (hasErrors) {\n throw new UnsubscriptionError_1.UnsubscriptionError(errors);\n }\n };\n /**\n * Adds a tear down to be called during the unsubscribe() of this\n * Subscription.\n *\n * If the tear down being added is a subscription that is already\n * unsubscribed, is the same reference `add` is being called on, or is\n * `Subscription.EMPTY`, it will not be added.\n *\n * If this subscription is already in an `closed` state, the passed\n * tear down logic will be executed immediately.\n *\n * @param {TeardownLogic} teardown The additional logic to execute on\n * teardown.\n * @return {Subscription} Returns the Subscription used or created to be\n * added to the inner subscriptions list. This Subscription can be used with\n * `remove()` to remove the passed teardown logic from the inner subscriptions\n * list.\n */\n Subscription.prototype.add = function (teardown) {\n if (!teardown || (teardown === Subscription.EMPTY)) {\n return Subscription.EMPTY;\n }\n if (teardown === this) {\n return this;\n }\n var subscription = teardown;\n switch (typeof teardown) {\n case 'function':\n subscription = new Subscription(teardown);\n case 'object':\n if (subscription.closed || typeof subscription.unsubscribe !== 'function') {\n return subscription;\n }\n else if (this.closed) {\n subscription.unsubscribe();\n return subscription;\n }\n else if (typeof subscription._addParent !== 'function' /* quack quack */) {\n var tmp = subscription;\n subscription = new Subscription();\n subscription._subscriptions = [tmp];\n }\n break;\n default:\n throw new Error('unrecognized teardown ' + teardown + ' added to Subscription.');\n }\n var subscriptions = this._subscriptions || (this._subscriptions = []);\n subscriptions.push(subscription);\n subscription._addParent(this);\n return subscription;\n };\n /**\n * Removes a Subscription from the internal list of subscriptions that will\n * unsubscribe during the unsubscribe process of this Subscription.\n * @param {Subscription} subscription The subscription to remove.\n * @return {void}\n */\n Subscription.prototype.remove = function (subscription) {\n var subscriptions = this._subscriptions;\n if (subscriptions) {\n var subscriptionIndex = subscriptions.indexOf(subscription);\n if (subscriptionIndex !== -1) {\n subscriptions.splice(subscriptionIndex, 1);\n }\n }\n };\n Subscription.prototype._addParent = function (parent) {\n var _a = this, _parent = _a._parent, _parents = _a._parents;\n if (!_parent || _parent === parent) {\n // If we don't have a parent, or the new parent is the same as the\n // current parent, then set this._parent to the new parent.\n this._parent = parent;\n }\n else if (!_parents) {\n // If there's already one parent, but not multiple, allocate an Array to\n // store the rest of the parent Subscriptions.\n this._parents = [parent];\n }\n else if (_parents.indexOf(parent) === -1) {\n // Only add the new parent to the _parents list if it's not already there.\n _parents.push(parent);\n }\n };\n Subscription.EMPTY = (function (empty) {\n empty.closed = true;\n return empty;\n }(new Subscription()));\n return Subscription;\n}());\nexports.Subscription = Subscription;\nfunction flattenUnsubscriptionErrors(errors) {\n return errors.reduce(function (errs, err) { return errs.concat((err instanceof UnsubscriptionError_1.UnsubscriptionError) ? err.errors : err); }, []);\n}\n//# sourceMappingURL=Subscription.js.map","\"use strict\";\nexports.empty = {\n closed: true,\n next: function (value) { },\n error: function (err) { throw err; },\n complete: function () { }\n};\n//# sourceMappingURL=Observer.js.map","\"use strict\";\nvar root_1 = require('../util/root');\nvar Symbol = root_1.root.Symbol;\nexports.rxSubscriber = (typeof Symbol === 'function' && typeof Symbol.for === 'function') ?\n Symbol.for('rxSubscriber') : '@@rxSubscriber';\n/**\n * @deprecated use rxSubscriber instead\n */\nexports.$$rxSubscriber = exports.rxSubscriber;\n//# sourceMappingURL=rxSubscriber.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar isFunction_1 = require('./util/isFunction');\nvar Subscription_1 = require('./Subscription');\nvar Observer_1 = require('./Observer');\nvar rxSubscriber_1 = require('./symbol/rxSubscriber');\n/**\n * Implements the {@link Observer} interface and extends the\n * {@link Subscription} class. While the {@link Observer} is the public API for\n * consuming the values of an {@link Observable}, all Observers get converted to\n * a Subscriber, in order to provide Subscription-like capabilities such as\n * `unsubscribe`. Subscriber is a common type in RxJS, and crucial for\n * implementing operators, but it is rarely used as a public API.\n *\n * @class Subscriber<T>\n */\nvar Subscriber = (function (_super) {\n __extends(Subscriber, _super);\n /**\n * @param {Observer|function(value: T): void} [destinationOrNext] A partially\n * defined Observer or a `next` callback function.\n * @param {function(e: ?any): void} [error] The `error` callback of an\n * Observer.\n * @param {function(): void} [complete] The `complete` callback of an\n * Observer.\n */\n function Subscriber(destinationOrNext, error, complete) {\n _super.call(this);\n this.syncErrorValue = null;\n this.syncErrorThrown = false;\n this.syncErrorThrowable = false;\n this.isStopped = false;\n switch (arguments.length) {\n case 0:\n this.destination = Observer_1.empty;\n break;\n case 1:\n if (!destinationOrNext) {\n this.destination = Observer_1.empty;\n break;\n }\n if (typeof destinationOrNext === 'object') {\n if (destinationOrNext instanceof Subscriber) {\n this.destination = destinationOrNext;\n this.destination.add(this);\n }\n else {\n this.syncErrorThrowable = true;\n this.destination = new SafeSubscriber(this, destinationOrNext);\n }\n break;\n }\n default:\n this.syncErrorThrowable = true;\n this.destination = new SafeSubscriber(this, destinationOrNext, error, complete);\n break;\n }\n }\n Subscriber.prototype[rxSubscriber_1.rxSubscriber] = function () { return this; };\n /**\n * A static factory for a Subscriber, given a (potentially partial) definition\n * of an Observer.\n * @param {function(x: ?T): void} [next] The `next` callback of an Observer.\n * @param {function(e: ?any): void} [error] The `error` callback of an\n * Observer.\n * @param {function(): void} [complete] The `complete` callback of an\n * Observer.\n * @return {Subscriber<T>} A Subscriber wrapping the (partially defined)\n * Observer represented by the given arguments.\n */\n Subscriber.create = function (next, error, complete) {\n var subscriber = new Subscriber(next, error, complete);\n subscriber.syncErrorThrowable = false;\n return subscriber;\n };\n /**\n * The {@link Observer} callback to receive notifications of type `next` from\n * the Observable, with a value. The Observable may call this method 0 or more\n * times.\n * @param {T} [value] The `next` value.\n * @return {void}\n */\n Subscriber.prototype.next = function (value) {\n if (!this.isStopped) {\n this._next(value);\n }\n };\n /**\n * The {@link Observer} callback to receive notifications of type `error` from\n * the Observable, with an attached {@link Error}. Notifies the Observer that\n * the Observable has experienced an error condition.\n * @param {any} [err] The `error` exception.\n * @return {void}\n */\n Subscriber.prototype.error = function (err) {\n if (!this.isStopped) {\n this.isStopped = true;\n this._error(err);\n }\n };\n /**\n * The {@link Observer} callback to receive a valueless notification of type\n * `complete` from the Observable. Notifies the Observer that the Observable\n * has finished sending push-based notifications.\n * @return {void}\n */\n Subscriber.prototype.complete = function () {\n if (!this.isStopped) {\n this.isStopped = true;\n this._complete();\n }\n };\n Subscriber.prototype.unsubscribe = function () {\n if (this.closed) {\n return;\n }\n this.isStopped = true;\n _super.prototype.unsubscribe.call(this);\n };\n Subscriber.prototype._next = function (value) {\n this.destination.next(value);\n };\n Subscriber.prototype._error = function (err) {\n this.destination.error(err);\n this.unsubscribe();\n };\n Subscriber.prototype._complete = function () {\n this.destination.complete();\n this.unsubscribe();\n };\n Subscriber.prototype._unsubscribeAndRecycle = function () {\n var _a = this, _parent = _a._parent, _parents = _a._parents;\n this._parent = null;\n this._parents = null;\n this.unsubscribe();\n this.closed = false;\n this.isStopped = false;\n this._parent = _parent;\n this._parents = _parents;\n return this;\n };\n return Subscriber;\n}(Subscription_1.Subscription));\nexports.Subscriber = Subscriber;\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar SafeSubscriber = (function (_super) {\n __extends(SafeSubscriber, _super);\n function SafeSubscriber(_parentSubscriber, observerOrNext, error, complete) {\n _super.call(this);\n this._parentSubscriber = _parentSubscriber;\n var next;\n var context = this;\n if (isFunction_1.isFunction(observerOrNext)) {\n next = observerOrNext;\n }\n else if (observerOrNext) {\n next = observerOrNext.next;\n error = observerOrNext.error;\n complete = observerOrNext.complete;\n if (observerOrNext !== Observer_1.empty) {\n context = Object.create(observerOrNext);\n if (isFunction_1.isFunction(context.unsubscribe)) {\n this.add(context.unsubscribe.bind(context));\n }\n context.unsubscribe = this.unsubscribe.bind(this);\n }\n }\n this._context = context;\n this._next = next;\n this._error = error;\n this._complete = complete;\n }\n SafeSubscriber.prototype.next = function (value) {\n if (!this.isStopped && this._next) {\n var _parentSubscriber = this._parentSubscriber;\n if (!_parentSubscriber.syncErrorThrowable) {\n this.__tryOrUnsub(this._next, value);\n }\n else if (this.__tryOrSetError(_parentSubscriber, this._next, value)) {\n this.unsubscribe();\n }\n }\n };\n SafeSubscriber.prototype.error = function (err) {\n if (!this.isStopped) {\n var _parentSubscriber = this._parentSubscriber;\n if (this._error) {\n if (!_parentSubscriber.syncErrorThrowable) {\n this.__tryOrUnsub(this._error, err);\n this.unsubscribe();\n }\n else {\n this.__tryOrSetError(_parentSubscriber, this._error, err);\n this.unsubscribe();\n }\n }\n else if (!_parentSubscriber.syncErrorThrowable) {\n this.unsubscribe();\n throw err;\n }\n else {\n _parentSubscriber.syncErrorValue = err;\n _parentSubscriber.syncErrorThrown = true;\n this.unsubscribe();\n }\n }\n };\n SafeSubscriber.prototype.complete = function () {\n var _this = this;\n if (!this.isStopped) {\n var _parentSubscriber = this._parentSubscriber;\n if (this._complete) {\n var wrappedComplete = function () { return _this._complete.call(_this._context); };\n if (!_parentSubscriber.syncErrorThrowable) {\n this.__tryOrUnsub(wrappedComplete);\n this.unsubscribe();\n }\n else {\n this.__tryOrSetError(_parentSubscriber, wrappedComplete);\n this.unsubscribe();\n }\n }\n else {\n this.unsubscribe();\n }\n }\n };\n SafeSubscriber.prototype.__tryOrUnsub = function (fn, value) {\n try {\n fn.call(this._context, value);\n }\n catch (err) {\n this.unsubscribe();\n throw err;\n }\n };\n SafeSubscriber.prototype.__tryOrSetError = function (parent, fn, value) {\n try {\n fn.call(this._context, value);\n }\n catch (err) {\n parent.syncErrorValue = err;\n parent.syncErrorThrown = true;\n return true;\n }\n return false;\n };\n SafeSubscriber.prototype._unsubscribe = function () {\n var _parentSubscriber = this._parentSubscriber;\n this._context = null;\n this._parentSubscriber = null;\n _parentSubscriber.unsubscribe();\n };\n return SafeSubscriber;\n}(Subscriber));\n//# sourceMappingURL=Subscriber.js.map","\"use strict\";\nvar Subscriber_1 = require('../Subscriber');\nvar rxSubscriber_1 = require('../symbol/rxSubscriber');\nvar Observer_1 = require('../Observer');\nfunction toSubscriber(nextOrObserver, error, complete) {\n if (nextOrObserver) {\n if (nextOrObserver instanceof Subscriber_1.Subscriber) {\n return nextOrObserver;\n }\n if (nextOrObserver[rxSubscriber_1.rxSubscriber]) {\n return nextOrObserver[rxSubscriber_1.rxSubscriber]();\n }\n }\n if (!nextOrObserver && !error && !complete) {\n return new Subscriber_1.Subscriber(Observer_1.empty);\n }\n return new Subscriber_1.Subscriber(nextOrObserver, error, complete);\n}\nexports.toSubscriber = toSubscriber;\n//# sourceMappingURL=toSubscriber.js.map","\"use strict\";\nvar root_1 = require('../util/root');\nfunction getSymbolObservable(context) {\n var $$observable;\n var Symbol = context.Symbol;\n if (typeof Symbol === 'function') {\n if (Symbol.observable) {\n $$observable = Symbol.observable;\n }\n else {\n $$observable = Symbol('observable');\n Symbol.observable = $$observable;\n }\n }\n else {\n $$observable = '@@observable';\n }\n return $$observable;\n}\nexports.getSymbolObservable = getSymbolObservable;\nexports.observable = getSymbolObservable(root_1.root);\n/**\n * @deprecated use observable instead\n */\nexports.$$observable = exports.observable;\n//# sourceMappingURL=observable.js.map","\"use strict\";\n/* tslint:disable:no-empty */\nfunction noop() { }\nexports.noop = noop;\n//# sourceMappingURL=noop.js.map","\"use strict\";\nvar noop_1 = require('./noop');\n/* tslint:enable:max-line-length */\nfunction pipe() {\n var fns = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n fns[_i - 0] = arguments[_i];\n }\n return pipeFromArray(fns);\n}\nexports.pipe = pipe;\n/* @internal */\nfunction pipeFromArray(fns) {\n if (!fns) {\n return noop_1.noop;\n }\n if (fns.length === 1) {\n return fns[0];\n }\n return function piped(input) {\n return fns.reduce(function (prev, fn) { return fn(prev); }, input);\n };\n}\nexports.pipeFromArray = pipeFromArray;\n//# sourceMappingURL=pipe.js.map","\"use strict\";\nvar root_1 = require('./util/root');\nvar toSubscriber_1 = require('./util/toSubscriber');\nvar observable_1 = require('./symbol/observable');\nvar pipe_1 = require('./util/pipe');\n/**\n * A representation of any set of values over any amount of time. This is the most basic building block\n * of RxJS.\n *\n * @class Observable<T>\n */\nvar Observable = (function () {\n /**\n * @constructor\n * @param {Function} subscribe the function that is called when the Observable is\n * initially subscribed to. This function is given a Subscriber, to which new values\n * can be `next`ed, or an `error` method can be called to raise an error, or\n * `complete` can be called to notify of a successful completion.\n */\n function Observable(subscribe) {\n this._isScalar = false;\n if (subscribe) {\n this._subscribe = subscribe;\n }\n }\n /**\n * Creates a new Observable, with this Observable as the source, and the passed\n * operator defined as the new observable's operator.\n * @method lift\n * @param {Operator} operator the operator defining the operation to take on the observable\n * @return {Observable} a new observable with the Operator applied\n */\n Observable.prototype.lift = function (operator) {\n var observable = new Observable();\n observable.source = this;\n observable.operator = operator;\n return observable;\n };\n /**\n * Invokes an execution of an Observable and registers Observer handlers for notifications it will emit.\n *\n * <span class=\"informal\">Use it when you have all these Observables, but still nothing is happening.</span>\n *\n * `subscribe` is not a regular operator, but a method that calls Observable's internal `subscribe` function. It\n * might be for example a function that you passed to a {@link create} static factory, but most of the time it is\n * a library implementation, which defines what and when will be emitted by an Observable. This means that calling\n * `subscribe` is actually the moment when Observable starts its work, not when it is created, as it is often\n * thought.\n *\n * Apart from starting the execution of an Observable, this method allows you to listen for values\n * that an Observable emits, as well as for when it completes or errors. You can achieve this in two\n * following ways.\n *\n * The first way is creating an object that implements {@link Observer} interface. It should have methods\n * defined by that interface, but note that it should be just a regular JavaScript object, which you can create\n * yourself in any way you want (ES6 class, classic function constructor, object literal etc.). In particular do\n * not attempt to use any RxJS implementation details to create Observers - you don't need them. Remember also\n * that your object does not have to implement all methods. If you find yourself creating a method that doesn't\n * do anything, you can simply omit it. Note however, that if `error` method is not provided, all errors will\n * be left uncaught.\n *\n * The second way is to give up on Observer object altogether and simply provide callback functions in place of its methods.\n * This means you can provide three functions as arguments to `subscribe`, where first function is equivalent\n * of a `next` method, second of an `error` method and third of a `complete` method. Just as in case of Observer,\n * if you do not need to listen for something, you can omit a function, preferably by passing `undefined` or `null`,\n * since `subscribe` recognizes these functions by where they were placed in function call. When it comes\n * to `error` function, just as before, if not provided, errors emitted by an Observable will be thrown.\n *\n * Whatever style of calling `subscribe` you use, in both cases it returns a Subscription object.\n * This object allows you to call `unsubscribe` on it, which in turn will stop work that an Observable does and will clean\n * up all resources that an Observable used. Note that cancelling a subscription will not call `complete` callback\n * provided to `subscribe` function, which is reserved for a regular completion signal that comes from an Observable.\n *\n * Remember that callbacks provided to `subscribe` are not guaranteed to be called asynchronously.\n * It is an Observable itself that decides when these functions will be called. For example {@link of}\n * by default emits all its values synchronously. Always check documentation for how given Observable\n * will behave when subscribed and if its default behavior can be modified with a {@link Scheduler}.\n *\n * @example <caption>Subscribe with an Observer</caption>\n * const sumObserver = {\n * sum: 0,\n * next(value) {\n * console.log('Adding: ' + value);\n * this.sum = this.sum + value;\n * },\n * error() { // We actually could just remove this method,\n * }, // since we do not really care about errors right now.\n * complete() {\n * console.log('Sum equals: ' + this.sum);\n * }\n * };\n *\n * Rx.Observable.of(1, 2, 3) // Synchronously emits 1, 2, 3 and then completes.\n * .subscribe(sumObserver);\n *\n * // Logs:\n * // \"Adding: 1\"\n * // \"Adding: 2\"\n * // \"Adding: 3\"\n * // \"Sum equals: 6\"\n *\n *\n * @example <caption>Subscribe with functions</caption>\n * let sum = 0;\n *\n * Rx.Observable.of(1, 2, 3)\n * .subscribe(\n * function(value) {\n * console.log('Adding: ' + value);\n * sum = sum + value;\n * },\n * undefined,\n * function() {\n * console.log('Sum equals: ' + sum);\n * }\n * );\n *\n * // Logs:\n * // \"Adding: 1\"\n * // \"Adding: 2\"\n * // \"Adding: 3\"\n * // \"Sum equals: 6\"\n *\n *\n * @example <caption>Cancel a subscription</caption>\n * const subscription = Rx.Observable.interval(1000).subscribe(\n * num => console.log(num),\n * undefined,\n * () => console.log('completed!') // Will not be called, even\n * ); // when cancelling subscription\n *\n *\n * setTimeout(() => {\n * subscription.unsubscribe();\n * console.log('unsubscribed!');\n * }, 2500);\n *\n * // Logs:\n * // 0 after 1s\n * // 1 after 2s\n * // \"unsubscribed!\" after 2.5s\n *\n *\n * @param {Observer|Function} observerOrNext (optional) Either an observer with methods to be called,\n * or the first of three possible handlers, which is the handler for each value emitted from the subscribed\n * Observable.\n * @param {Function} error (optional) A handler for a terminal event resulting from an error. If no error handler is provided,\n * the error will be thrown as unhandled.\n * @param {Function} complete (optional) A handler for a terminal event resulting from successful completion.\n * @return {ISubscription} a subscription reference to the registered handlers\n * @method subscribe\n */\n Observable.prototype.subscribe = function (observerOrNext, error, complete) {\n var operator = this.operator;\n var sink = toSubscriber_1.toSubscriber(observerOrNext, error, complete);\n if (operator) {\n operator.call(sink, this.source);\n }\n else {\n sink.add(this.source ? this._subscribe(sink) : this._trySubscribe(sink));\n }\n if (sink.syncErrorThrowable) {\n sink.syncErrorThrowable = false;\n if (sink.syncErrorThrown) {\n throw sink.syncErrorValue;\n }\n }\n return sink;\n };\n Observable.prototype._trySubscribe = function (sink) {\n try {\n return this._subscribe(sink);\n }\n catch (err) {\n sink.syncErrorThrown = true;\n sink.syncErrorValue = err;\n sink.error(err);\n }\n };\n /**\n * @method forEach\n * @param {Function} next a handler for each value emitted by the observable\n * @param {PromiseConstructor} [PromiseCtor] a constructor function used to instantiate the Promise\n * @return {Promise} a promise that either resolves on observable completion or\n * rejects with the handled error\n */\n Observable.prototype.forEach = function (next, PromiseCtor) {\n var _this = this;\n if (!PromiseCtor) {\n if (root_1.root.Rx && root_1.root.Rx.config && root_1.root.Rx.config.Promise) {\n PromiseCtor = root_1.root.Rx.config.Promise;\n }\n else if (root_1.root.Promise) {\n PromiseCtor = root_1.root.Promise;\n }\n }\n if (!PromiseCtor) {\n throw new Error('no Promise impl found');\n }\n return new PromiseCtor(function (resolve, reject) {\n // Must be declared in a separate statement to avoid a RefernceError when\n // accessing subscription below in the closure due to Temporal Dead Zone.\n var subscription;\n subscription = _this.subscribe(function (value) {\n if (subscription) {\n // if there is a subscription, then we can surmise\n // the next handling is asynchronous. Any errors thrown\n // need to be rejected explicitly and unsubscribe must be\n // called manually\n try {\n next(value);\n }\n catch (err) {\n reject(err);\n subscription.unsubscribe();\n }\n }\n else {\n // if there is NO subscription, then we're getting a nexted\n // value synchronously during subscription. We can just call it.\n // If it errors, Observable's `subscribe` will ensure the\n // unsubscription logic is called, then synchronously rethrow the error.\n // After that, Promise will trap the error and send it\n // down the rejection path.\n next(value);\n }\n }, reject, resolve);\n });\n };\n Observable.prototype._subscribe = function (subscriber) {\n return this.source.subscribe(subscriber);\n };\n /**\n * An interop point defined by the es7-observable spec https://github.com/zenparsing/es-observable\n * @method Symbol.observable\n * @return {Observable} this instance of the observable\n */\n Observable.prototype[observable_1.observable] = function () {\n return this;\n };\n /* tslint:enable:max-line-length */\n /**\n * Used to stitch together functional operators into a chain.\n * @method pipe\n * @return {Observable} the Observable result of all of the operators having\n * been called in the order they were passed in.\n *\n * @example\n *\n * import { map, filter, scan } from 'rxjs/operators';\n *\n * Rx.Observable.interval(1000)\n * .pipe(\n * filter(x => x % 2 === 0),\n * map(x => x + x),\n * scan((acc, x) => acc + x)\n * )\n * .subscribe(x => console.log(x))\n */\n Observable.prototype.pipe = function () {\n var operations = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n operations[_i - 0] = arguments[_i];\n }\n if (operations.length === 0) {\n return this;\n }\n return pipe_1.pipeFromArray(operations)(this);\n };\n /* tslint:enable:max-line-length */\n Observable.prototype.toPromise = function (PromiseCtor) {\n var _this = this;\n if (!PromiseCtor) {\n if (root_1.root.Rx && root_1.root.Rx.config && root_1.root.Rx.config.Promise) {\n PromiseCtor = root_1.root.Rx.config.Promise;\n }\n else if (root_1.root.Promise) {\n PromiseCtor = root_1.root.Promise;\n }\n }\n if (!PromiseCtor) {\n throw new Error('no Promise impl found');\n }\n return new PromiseCtor(function (resolve, reject) {\n var value;\n _this.subscribe(function (x) { return value = x; }, function (err) { return reject(err); }, function () { return resolve(value); });\n });\n };\n // HACK: Since TypeScript inherits static properties too, we have to\n // fight against TypeScript here so Subject can have a different static create signature\n /**\n * Creates a new cold Observable by calling the Observable constructor\n * @static true\n * @owner Observable\n * @method create\n * @param {Function} subscribe? the subscriber function to be passed to the Observable constructor\n * @return {Observable} a new cold observable\n */\n Observable.create = function (subscribe) {\n return new Observable(subscribe);\n };\n return Observable;\n}());\nexports.Observable = Observable;\n//# sourceMappingURL=Observable.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\n/**\n * An error thrown when an action is invalid because the object has been\n * unsubscribed.\n *\n * @see {@link Subject}\n * @see {@link BehaviorSubject}\n *\n * @class ObjectUnsubscribedError\n */\nvar ObjectUnsubscribedError = (function (_super) {\n __extends(ObjectUnsubscribedError, _super);\n function ObjectUnsubscribedError() {\n var err = _super.call(this, 'object unsubscribed');\n this.name = err.name = 'ObjectUnsubscribedError';\n this.stack = err.stack;\n this.message = err.message;\n }\n return ObjectUnsubscribedError;\n}(Error));\nexports.ObjectUnsubscribedError = ObjectUnsubscribedError;\n//# sourceMappingURL=ObjectUnsubscribedError.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar Subscription_1 = require('./Subscription');\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar SubjectSubscription = (function (_super) {\n __extends(SubjectSubscription, _super);\n function SubjectSubscription(subject, subscriber) {\n _super.call(this);\n this.subject = subject;\n this.subscriber = subscriber;\n this.closed = false;\n }\n SubjectSubscription.prototype.unsubscribe = function () {\n if (this.closed) {\n return;\n }\n this.closed = true;\n var subject = this.subject;\n var observers = subject.observers;\n this.subject = null;\n if (!observers || observers.length === 0 || subject.isStopped || subject.closed) {\n return;\n }\n var subscriberIndex = observers.indexOf(this.subscriber);\n if (subscriberIndex !== -1) {\n observers.splice(subscriberIndex, 1);\n }\n };\n return SubjectSubscription;\n}(Subscription_1.Subscription));\nexports.SubjectSubscription = SubjectSubscription;\n//# sourceMappingURL=SubjectSubscription.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar Observable_1 = require('./Observable');\nvar Subscriber_1 = require('./Subscriber');\nvar Subscription_1 = require('./Subscription');\nvar ObjectUnsubscribedError_1 = require('./util/ObjectUnsubscribedError');\nvar SubjectSubscription_1 = require('./SubjectSubscription');\nvar rxSubscriber_1 = require('./symbol/rxSubscriber');\n/**\n * @class SubjectSubscriber<T>\n */\nvar SubjectSubscriber = (function (_super) {\n __extends(SubjectSubscriber, _super);\n function SubjectSubscriber(destination) {\n _super.call(this, destination);\n this.destination = destination;\n }\n return SubjectSubscriber;\n}(Subscriber_1.Subscriber));\nexports.SubjectSubscriber = SubjectSubscriber;\n/**\n * @class Subject<T>\n */\nvar Subject = (function (_super) {\n __extends(Subject, _super);\n function Subject() {\n _super.call(this);\n this.observers = [];\n this.closed = false;\n this.isStopped = false;\n this.hasError = false;\n this.thrownError = null;\n }\n Subject.prototype[rxSubscriber_1.rxSubscriber] = function () {\n return new SubjectSubscriber(this);\n };\n Subject.prototype.lift = function (operator) {\n var subject = new AnonymousSubject(this, this);\n subject.operator = operator;\n return subject;\n };\n Subject.prototype.next = function (value) {\n if (this.closed) {\n throw new ObjectUnsubscribedError_1.ObjectUnsubscribedError();\n }\n if (!this.isStopped) {\n var observers = this.observers;\n var len = observers.length;\n var copy = observers.slice();\n for (var i = 0; i < len; i++) {\n copy[i].next(value);\n }\n }\n };\n Subject.prototype.error = function (err) {\n if (this.closed) {\n throw new ObjectUnsubscribedError_1.ObjectUnsubscribedError();\n }\n this.hasError = true;\n this.thrownError = err;\n this.isStopped = true;\n var observers = this.observers;\n var len = observers.length;\n var copy = observers.slice();\n for (var i = 0; i < len; i++) {\n copy[i].error(err);\n }\n this.observers.length = 0;\n };\n Subject.prototype.complete = function () {\n if (this.closed) {\n throw new ObjectUnsubscribedError_1.ObjectUnsubscribedError();\n }\n this.isStopped = true;\n var observers = this.observers;\n var len = observers.length;\n var copy = observers.slice();\n for (var i = 0; i < len; i++) {\n copy[i].complete();\n }\n this.observers.length = 0;\n };\n Subject.prototype.unsubscribe = function () {\n this.isStopped = true;\n this.closed = true;\n this.observers = null;\n };\n Subject.prototype._trySubscribe = function (subscriber) {\n if (this.closed) {\n throw new ObjectUnsubscribedError_1.ObjectUnsubscribedError();\n }\n else {\n return _super.prototype._trySubscribe.call(this, subscriber);\n }\n };\n Subject.prototype._subscribe = function (subscriber) {\n if (this.closed) {\n throw new ObjectUnsubscribedError_1.ObjectUnsubscribedError();\n }\n else if (this.hasError) {\n subscriber.error(this.thrownError);\n return Subscription_1.Subscription.EMPTY;\n }\n else if (this.isStopped) {\n subscriber.complete();\n return Subscription_1.Subscription.EMPTY;\n }\n else {\n this.observers.push(subscriber);\n return new SubjectSubscription_1.SubjectSubscription(this, subscriber);\n }\n };\n Subject.prototype.asObservable = function () {\n var observable = new Observable_1.Observable();\n observable.source = this;\n return observable;\n };\n Subject.create = function (destination, source) {\n return new AnonymousSubject(destination, source);\n };\n return Subject;\n}(Observable_1.Observable));\nexports.Subject = Subject;\n/**\n * @class AnonymousSubject<T>\n */\nvar AnonymousSubject = (function (_super) {\n __extends(AnonymousSubject, _super);\n function AnonymousSubject(destination, source) {\n _super.call(this);\n this.destination = destination;\n this.source = source;\n }\n AnonymousSubject.prototype.next = function (value) {\n var destination = this.destination;\n if (destination && destination.next) {\n destination.next(value);\n }\n };\n AnonymousSubject.prototype.error = function (err) {\n var destination = this.destination;\n if (destination && destination.error) {\n this.destination.error(err);\n }\n };\n AnonymousSubject.prototype.complete = function () {\n var destination = this.destination;\n if (destination && destination.complete) {\n this.destination.complete();\n }\n };\n AnonymousSubject.prototype._subscribe = function (subscriber) {\n var source = this.source;\n if (source) {\n return this.source.subscribe(subscriber);\n }\n else {\n return Subscription_1.Subscription.EMPTY;\n }\n };\n return AnonymousSubject;\n}(Subject));\nexports.AnonymousSubject = AnonymousSubject;\n//# sourceMappingURL=Subject.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar Subscriber_1 = require('../Subscriber');\n/**\n * Applies a given `project` function to each value emitted by the source\n * Observable, and emits the resulting values as an Observable.\n *\n * <span class=\"informal\">Like [Array.prototype.map()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map),\n * it passes each source value through a transformation function to get\n * corresponding output values.</span>\n *\n * <img src=\"./img/map.png\" width=\"100%\">\n *\n * Similar to the well known `Array.prototype.map` function, this operator\n * applies a projection to each value and emits that projection in the output\n * Observable.\n *\n * @example <caption>Map every click to the clientX position of that click</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var positions = clicks.map(ev => ev.clientX);\n * positions.subscribe(x => console.log(x));\n *\n * @see {@link mapTo}\n * @see {@link pluck}\n *\n * @param {function(value: T, index: number): R} project The function to apply\n * to each `value` emitted by the source Observable. The `index` parameter is\n * the number `i` for the i-th emission that has happened since the\n * subscription, starting from the number `0`.\n * @param {any} [thisArg] An optional argument to define what `this` is in the\n * `project` function.\n * @return {Observable<R>} An Observable that emits the values from the source\n * Observable transformed by the given `project` function.\n * @method map\n * @owner Observable\n */\nfunction map(project, thisArg) {\n return function mapOperation(source) {\n if (typeof project !== 'function') {\n throw new TypeError('argument is not a function. Are you looking for `mapTo()`?');\n }\n return source.lift(new MapOperator(project, thisArg));\n };\n}\nexports.map = map;\nvar MapOperator = (function () {\n function MapOperator(project, thisArg) {\n this.project = project;\n this.thisArg = thisArg;\n }\n MapOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new MapSubscriber(subscriber, this.project, this.thisArg));\n };\n return MapOperator;\n}());\nexports.MapOperator = MapOperator;\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar MapSubscriber = (function (_super) {\n __extends(MapSubscriber, _super);\n function MapSubscriber(destination, project, thisArg) {\n _super.call(this, destination);\n this.project = project;\n this.count = 0;\n this.thisArg = thisArg || this;\n }\n // NOTE: This looks unoptimized, but it's actually purposefully NOT\n // using try/catch optimizations.\n MapSubscriber.prototype._next = function (value) {\n var result;\n try {\n result = this.project.call(this.thisArg, value, this.count++);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n this.destination.next(result);\n };\n return MapSubscriber;\n}(Subscriber_1.Subscriber));\n//# sourceMappingURL=map.js.map","\"use strict\";\nvar map_1 = require('../operators/map');\n/**\n * Applies a given `project` function to each value emitted by the source\n * Observable, and emits the resulting values as an Observable.\n *\n * <span class=\"informal\">Like [Array.prototype.map()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map),\n * it passes each source value through a transformation function to get\n * corresponding output values.</span>\n *\n * <img src=\"./img/map.png\" width=\"100%\">\n *\n * Similar to the well known `Array.prototype.map` function, this operator\n * applies a projection to each value and emits that projection in the output\n * Observable.\n *\n * @example <caption>Map every click to the clientX position of that click</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var positions = clicks.map(ev => ev.clientX);\n * positions.subscribe(x => console.log(x));\n *\n * @see {@link mapTo}\n * @see {@link pluck}\n *\n * @param {function(value: T, index: number): R} project The function to apply\n * to each `value` emitted by the source Observable. The `index` parameter is\n * the number `i` for the i-th emission that has happened since the\n * subscription, starting from the number `0`.\n * @param {any} [thisArg] An optional argument to define what `this` is in the\n * `project` function.\n * @return {Observable<R>} An Observable that emits the values from the source\n * Observable transformed by the given `project` function.\n * @method map\n * @owner Observable\n */\nfunction map(project, thisArg) {\n return map_1.map(project, thisArg)(this);\n}\nexports.map = map;\n//# sourceMappingURL=map.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar Subscriber_1 = require('./Subscriber');\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar OuterSubscriber = (function (_super) {\n __extends(OuterSubscriber, _super);\n function OuterSubscriber() {\n _super.apply(this, arguments);\n }\n OuterSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n this.destination.next(innerValue);\n };\n OuterSubscriber.prototype.notifyError = function (error, innerSub) {\n this.destination.error(error);\n };\n OuterSubscriber.prototype.notifyComplete = function (innerSub) {\n this.destination.complete();\n };\n return OuterSubscriber;\n}(Subscriber_1.Subscriber));\nexports.OuterSubscriber = OuterSubscriber;\n//# sourceMappingURL=OuterSubscriber.js.map","\"use strict\";\nexports.isArrayLike = (function (x) { return x && typeof x.length === 'number'; });\n//# sourceMappingURL=isArrayLike.js.map","\"use strict\";\nfunction isPromise(value) {\n return value && typeof value.subscribe !== 'function' && typeof value.then === 'function';\n}\nexports.isPromise = isPromise;\n//# sourceMappingURL=isPromise.js.map","\"use strict\";\nvar root_1 = require('../util/root');\nfunction symbolIteratorPonyfill(root) {\n var Symbol = root.Symbol;\n if (typeof Symbol === 'function') {\n if (!Symbol.iterator) {\n Symbol.iterator = Symbol('iterator polyfill');\n }\n return Symbol.iterator;\n }\n else {\n // [for Mozilla Gecko 27-35:](https://mzl.la/2ewE1zC)\n var Set_1 = root.Set;\n if (Set_1 && typeof new Set_1()['@@iterator'] === 'function') {\n return '@@iterator';\n }\n var Map_1 = root.Map;\n // required for compatability with es6-shim\n if (Map_1) {\n var keys = Object.getOwnPropertyNames(Map_1.prototype);\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n // according to spec, Map.prototype[@@iterator] and Map.orototype.entries must be equal.\n if (key !== 'entries' && key !== 'size' && Map_1.prototype[key] === Map_1.prototype['entries']) {\n return key;\n }\n }\n }\n return '@@iterator';\n }\n}\nexports.symbolIteratorPonyfill = symbolIteratorPonyfill;\nexports.iterator = symbolIteratorPonyfill(root_1.root);\n/**\n * @deprecated use iterator instead\n */\nexports.$$iterator = exports.iterator;\n//# sourceMappingURL=iterator.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar Subscriber_1 = require('./Subscriber');\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar InnerSubscriber = (function (_super) {\n __extends(InnerSubscriber, _super);\n function InnerSubscriber(parent, outerValue, outerIndex) {\n _super.call(this);\n this.parent = parent;\n this.outerValue = outerValue;\n this.outerIndex = outerIndex;\n this.index = 0;\n }\n InnerSubscriber.prototype._next = function (value) {\n this.parent.notifyNext(this.outerValue, value, this.outerIndex, this.index++, this);\n };\n InnerSubscriber.prototype._error = function (error) {\n this.parent.notifyError(error, this);\n this.unsubscribe();\n };\n InnerSubscriber.prototype._complete = function () {\n this.parent.notifyComplete(this);\n this.unsubscribe();\n };\n return InnerSubscriber;\n}(Subscriber_1.Subscriber));\nexports.InnerSubscriber = InnerSubscriber;\n//# sourceMappingURL=InnerSubscriber.js.map","\"use strict\";\nvar root_1 = require('./root');\nvar isArrayLike_1 = require('./isArrayLike');\nvar isPromise_1 = require('./isPromise');\nvar isObject_1 = require('./isObject');\nvar Observable_1 = require('../Observable');\nvar iterator_1 = require('../symbol/iterator');\nvar InnerSubscriber_1 = require('../InnerSubscriber');\nvar observable_1 = require('../symbol/observable');\nfunction subscribeToResult(outerSubscriber, result, outerValue, outerIndex) {\n var destination = new InnerSubscriber_1.InnerSubscriber(outerSubscriber, outerValue, outerIndex);\n if (destination.closed) {\n return null;\n }\n if (result instanceof Observable_1.Observable) {\n if (result._isScalar) {\n destination.next(result.value);\n destination.complete();\n return null;\n }\n else {\n destination.syncErrorThrowable = true;\n return result.subscribe(destination);\n }\n }\n else if (isArrayLike_1.isArrayLike(result)) {\n for (var i = 0, len = result.length; i < len && !destination.closed; i++) {\n destination.next(result[i]);\n }\n if (!destination.closed) {\n destination.complete();\n }\n }\n else if (isPromise_1.isPromise(result)) {\n result.then(function (value) {\n if (!destination.closed) {\n destination.next(value);\n destination.complete();\n }\n }, function (err) { return destination.error(err); })\n .then(null, function (err) {\n // Escaping the Promise trap: globally throw unhandled errors\n root_1.root.setTimeout(function () { throw err; });\n });\n return destination;\n }\n else if (result && typeof result[iterator_1.iterator] === 'function') {\n var iterator = result[iterator_1.iterator]();\n do {\n var item = iterator.next();\n if (item.done) {\n destination.complete();\n break;\n }\n destination.next(item.value);\n if (destination.closed) {\n break;\n }\n } while (true);\n }\n else if (result && typeof result[observable_1.observable] === 'function') {\n var obs = result[observable_1.observable]();\n if (typeof obs.subscribe !== 'function') {\n destination.error(new TypeError('Provided object does not correctly implement Symbol.observable'));\n }\n else {\n return obs.subscribe(new InnerSubscriber_1.InnerSubscriber(outerSubscriber, outerValue, outerIndex));\n }\n }\n else {\n var value = isObject_1.isObject(result) ? 'an invalid object' : \"'\" + result + \"'\";\n var msg = (\"You provided \" + value + \" where a stream was expected.\")\n + ' You can provide an Observable, Promise, Array, or Iterable.';\n destination.error(new TypeError(msg));\n }\n return null;\n}\nexports.subscribeToResult = subscribeToResult;\n//# sourceMappingURL=subscribeToResult.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar OuterSubscriber_1 = require('../OuterSubscriber');\nvar subscribeToResult_1 = require('../util/subscribeToResult');\n/* tslint:enable:max-line-length */\n/**\n * Projects each source value to an Observable which is merged in the output\n * Observable, emitting values only from the most recently projected Observable.\n *\n * <span class=\"informal\">Maps each value to an Observable, then flattens all of\n * these inner Observables using {@link switch}.</span>\n *\n * <img src=\"./img/switchMap.png\" width=\"100%\">\n *\n * Returns an Observable that emits items based on applying a function that you\n * supply to each item emitted by the source Observable, where that function\n * returns an (so-called \"inner\") Observable. Each time it observes one of these\n * inner Observables, the output Observable begins emitting the items emitted by\n * that inner Observable. When a new inner Observable is emitted, `switchMap`\n * stops emitting items from the earlier-emitted inner Observable and begins\n * emitting items from the new one. It continues to behave like this for\n * subsequent inner Observables.\n *\n * @example <caption>Rerun an interval Observable on every click event</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var result = clicks.switchMap((ev) => Rx.Observable.interval(1000));\n * result.subscribe(x => console.log(x));\n *\n * @see {@link concatMap}\n * @see {@link exhaustMap}\n * @see {@link mergeMap}\n * @see {@link switch}\n * @see {@link switchMapTo}\n *\n * @param {function(value: T, ?index: number): ObservableInput} project A function\n * that, when applied to an item emitted by the source Observable, returns an\n * Observable.\n * @param {function(outerValue: T, innerValue: I, outerIndex: number, innerIndex: number): any} [resultSelector]\n * A function to produce the value on the output Observable based on the values\n * and the indices of the source (outer) emission and the inner Observable\n * emission. The arguments passed to this function are:\n * - `outerValue`: the value that came from the source\n * - `innerValue`: the value that came from the projected Observable\n * - `outerIndex`: the \"index\" of the value that came from the source\n * - `innerIndex`: the \"index\" of the value from the projected Observable\n * @return {Observable} An Observable that emits the result of applying the\n * projection function (and the optional `resultSelector`) to each item emitted\n * by the source Observable and taking only the values from the most recently\n * projected inner Observable.\n * @method switchMap\n * @owner Observable\n */\nfunction switchMap(project, resultSelector) {\n return function switchMapOperatorFunction(source) {\n return source.lift(new SwitchMapOperator(project, resultSelector));\n };\n}\nexports.switchMap = switchMap;\nvar SwitchMapOperator = (function () {\n function SwitchMapOperator(project, resultSelector) {\n this.project = project;\n this.resultSelector = resultSelector;\n }\n SwitchMapOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new SwitchMapSubscriber(subscriber, this.project, this.resultSelector));\n };\n return SwitchMapOperator;\n}());\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar SwitchMapSubscriber = (function (_super) {\n __extends(SwitchMapSubscriber, _super);\n function SwitchMapSubscriber(destination, project, resultSelector) {\n _super.call(this, destination);\n this.project = project;\n this.resultSelector = resultSelector;\n this.index = 0;\n }\n SwitchMapSubscriber.prototype._next = function (value) {\n var result;\n var index = this.index++;\n try {\n result = this.project(value, index);\n }\n catch (error) {\n this.destination.error(error);\n return;\n }\n this._innerSub(result, value, index);\n };\n SwitchMapSubscriber.prototype._innerSub = function (result, value, index) {\n var innerSubscription = this.innerSubscription;\n if (innerSubscription) {\n innerSubscription.unsubscribe();\n }\n this.add(this.innerSubscription = subscribeToResult_1.subscribeToResult(this, result, value, index));\n };\n SwitchMapSubscriber.prototype._complete = function () {\n var innerSubscription = this.innerSubscription;\n if (!innerSubscription || innerSubscription.closed) {\n _super.prototype._complete.call(this);\n }\n };\n SwitchMapSubscriber.prototype._unsubscribe = function () {\n this.innerSubscription = null;\n };\n SwitchMapSubscriber.prototype.notifyComplete = function (innerSub) {\n this.remove(innerSub);\n this.innerSubscription = null;\n if (this.isStopped) {\n _super.prototype._complete.call(this);\n }\n };\n SwitchMapSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n if (this.resultSelector) {\n this._tryNotifyNext(outerValue, innerValue, outerIndex, innerIndex);\n }\n else {\n this.destination.next(innerValue);\n }\n };\n SwitchMapSubscriber.prototype._tryNotifyNext = function (outerValue, innerValue, outerIndex, innerIndex) {\n var result;\n try {\n result = this.resultSelector(outerValue, innerValue, outerIndex, innerIndex);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n this.destination.next(result);\n };\n return SwitchMapSubscriber;\n}(OuterSubscriber_1.OuterSubscriber));\n//# sourceMappingURL=switchMap.js.map","\"use strict\";\nvar switchMap_1 = require('../operators/switchMap');\n/* tslint:enable:max-line-length */\n/**\n * Projects each source value to an Observable which is merged in the output\n * Observable, emitting values only from the most recently projected Observable.\n *\n * <span class=\"informal\">Maps each value to an Observable, then flattens all of\n * these inner Observables using {@link switch}.</span>\n *\n * <img src=\"./img/switchMap.png\" width=\"100%\">\n *\n * Returns an Observable that emits items based on applying a function that you\n * supply to each item emitted by the source Observable, where that function\n * returns an (so-called \"inner\") Observable. Each time it observes one of these\n * inner Observables, the output Observable begins emitting the items emitted by\n * that inner Observable. When a new inner Observable is emitted, `switchMap`\n * stops emitting items from the earlier-emitted inner Observable and begins\n * emitting items from the new one. It continues to behave like this for\n * subsequent inner Observables.\n *\n * @example <caption>Rerun an interval Observable on every click event</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var result = clicks.switchMap((ev) => Rx.Observable.interval(1000));\n * result.subscribe(x => console.log(x));\n *\n * @see {@link concatMap}\n * @see {@link exhaustMap}\n * @see {@link mergeMap}\n * @see {@link switch}\n * @see {@link switchMapTo}\n *\n * @param {function(value: T, ?index: number): ObservableInput} project A function\n * that, when applied to an item emitted by the source Observable, returns an\n * Observable.\n * @param {function(outerValue: T, innerValue: I, outerIndex: number, innerIndex: number): any} [resultSelector]\n * A function to produce the value on the output Observable based on the values\n * and the indices of the source (outer) emission and the inner Observable\n * emission. The arguments passed to this function are:\n * - `outerValue`: the value that came from the source\n * - `innerValue`: the value that came from the projected Observable\n * - `outerIndex`: the \"index\" of the value that came from the source\n * - `innerIndex`: the \"index\" of the value from the projected Observable\n * @return {Observable} An Observable that emits the result of applying the\n * projection function (and the optional `resultSelector`) to each item emitted\n * by the source Observable and taking only the values from the most recently\n * projected inner Observable.\n * @method switchMap\n * @owner Observable\n */\nfunction switchMap(project, resultSelector) {\n return switchMap_1.switchMap(project, resultSelector)(this);\n}\nexports.switchMap = switchMap;\n//# sourceMappingURL=switchMap.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar Observable_1 = require('../Observable');\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @extends {Ignored}\n * @hide true\n */\nvar ScalarObservable = (function (_super) {\n __extends(ScalarObservable, _super);\n function ScalarObservable(value, scheduler) {\n _super.call(this);\n this.value = value;\n this.scheduler = scheduler;\n this._isScalar = true;\n if (scheduler) {\n this._isScalar = false;\n }\n }\n ScalarObservable.create = function (value, scheduler) {\n return new ScalarObservable(value, scheduler);\n };\n ScalarObservable.dispatch = function (state) {\n var done = state.done, value = state.value, subscriber = state.subscriber;\n if (done) {\n subscriber.complete();\n return;\n }\n subscriber.next(value);\n if (subscriber.closed) {\n return;\n }\n state.done = true;\n this.schedule(state);\n };\n ScalarObservable.prototype._subscribe = function (subscriber) {\n var value = this.value;\n var scheduler = this.scheduler;\n if (scheduler) {\n return scheduler.schedule(ScalarObservable.dispatch, 0, {\n done: false, value: value, subscriber: subscriber\n });\n }\n else {\n subscriber.next(value);\n if (!subscriber.closed) {\n subscriber.complete();\n }\n }\n };\n return ScalarObservable;\n}(Observable_1.Observable));\nexports.ScalarObservable = ScalarObservable;\n//# sourceMappingURL=ScalarObservable.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar Observable_1 = require('../Observable');\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @extends {Ignored}\n * @hide true\n */\nvar EmptyObservable = (function (_super) {\n __extends(EmptyObservable, _super);\n function EmptyObservable(scheduler) {\n _super.call(this);\n this.scheduler = scheduler;\n }\n /**\n * Creates an Observable that emits no items to the Observer and immediately\n * emits a complete notification.\n *\n * <span class=\"informal\">Just emits 'complete', and nothing else.\n * </span>\n *\n * <img src=\"./img/empty.png\" width=\"100%\">\n *\n * This static operator is useful for creating a simple Observable that only\n * emits the complete notification. It can be used for composing with other\n * Observables, such as in a {@link mergeMap}.\n *\n * @example <caption>Emit the number 7, then complete.</caption>\n * var result = Rx.Observable.empty().startWith(7);\n * result.subscribe(x => console.log(x));\n *\n * @example <caption>Map and flatten only odd numbers to the sequence 'a', 'b', 'c'</caption>\n * var interval = Rx.Observable.interval(1000);\n * var result = interval.mergeMap(x =>\n * x % 2 === 1 ? Rx.Observable.of('a', 'b', 'c') : Rx.Observable.empty()\n * );\n * result.subscribe(x => console.log(x));\n *\n * // Results in the following to the console:\n * // x is equal to the count on the interval eg(0,1,2,3,...)\n * // x will occur every 1000ms\n * // if x % 2 is equal to 1 print abc\n * // if x % 2 is not equal to 1 nothing will be output\n *\n * @see {@link create}\n * @see {@link never}\n * @see {@link of}\n * @see {@link throw}\n *\n * @param {Scheduler} [scheduler] A {@link IScheduler} to use for scheduling\n * the emission of the complete notification.\n * @return {Observable} An \"empty\" Observable: emits only the complete\n * notification.\n * @static true\n * @name empty\n * @owner Observable\n */\n EmptyObservable.create = function (scheduler) {\n return new EmptyObservable(scheduler);\n };\n EmptyObservable.dispatch = function (arg) {\n var subscriber = arg.subscriber;\n subscriber.complete();\n };\n EmptyObservable.prototype._subscribe = function (subscriber) {\n var scheduler = this.scheduler;\n if (scheduler) {\n return scheduler.schedule(EmptyObservable.dispatch, 0, { subscriber: subscriber });\n }\n else {\n subscriber.complete();\n }\n };\n return EmptyObservable;\n}(Observable_1.Observable));\nexports.EmptyObservable = EmptyObservable;\n//# sourceMappingURL=EmptyObservable.js.map","\"use strict\";\nfunction isScheduler(value) {\n return value && typeof value.schedule === 'function';\n}\nexports.isScheduler = isScheduler;\n//# sourceMappingURL=isScheduler.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar Observable_1 = require('../Observable');\nvar ScalarObservable_1 = require('./ScalarObservable');\nvar EmptyObservable_1 = require('./EmptyObservable');\nvar isScheduler_1 = require('../util/isScheduler');\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @extends {Ignored}\n * @hide true\n */\nvar ArrayObservable = (function (_super) {\n __extends(ArrayObservable, _super);\n function ArrayObservable(array, scheduler) {\n _super.call(this);\n this.array = array;\n this.scheduler = scheduler;\n if (!scheduler && array.length === 1) {\n this._isScalar = true;\n this.value = array[0];\n }\n }\n ArrayObservable.create = function (array, scheduler) {\n return new ArrayObservable(array, scheduler);\n };\n /**\n * Creates an Observable that emits some values you specify as arguments,\n * immediately one after the other, and then emits a complete notification.\n *\n * <span class=\"informal\">Emits the arguments you provide, then completes.\n * </span>\n *\n * <img src=\"./img/of.png\" width=\"100%\">\n *\n * This static operator is useful for creating a simple Observable that only\n * emits the arguments given, and the complete notification thereafter. It can\n * be used for composing with other Observables, such as with {@link concat}.\n * By default, it uses a `null` IScheduler, which means the `next`\n * notifications are sent synchronously, although with a different IScheduler\n * it is possible to determine when those notifications will be delivered.\n *\n * @example <caption>Emit 10, 20, 30, then 'a', 'b', 'c', then start ticking every second.</caption>\n * var numbers = Rx.Observable.of(10, 20, 30);\n * var letters = Rx.Observable.of('a', 'b', 'c');\n * var interval = Rx.Observable.interval(1000);\n * var result = numbers.concat(letters).concat(interval);\n * result.subscribe(x => console.log(x));\n *\n * @see {@link create}\n * @see {@link empty}\n * @see {@link never}\n * @see {@link throw}\n *\n * @param {...T} values Arguments that represent `next` values to be emitted.\n * @param {Scheduler} [scheduler] A {@link IScheduler} to use for scheduling\n * the emissions of the `next` notifications.\n * @return {Observable<T>} An Observable that emits each given input value.\n * @static true\n * @name of\n * @owner Observable\n */\n ArrayObservable.of = function () {\n var array = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n array[_i - 0] = arguments[_i];\n }\n var scheduler = array[array.length - 1];\n if (isScheduler_1.isScheduler(scheduler)) {\n array.pop();\n }\n else {\n scheduler = null;\n }\n var len = array.length;\n if (len > 1) {\n return new ArrayObservable(array, scheduler);\n }\n else if (len === 1) {\n return new ScalarObservable_1.ScalarObservable(array[0], scheduler);\n }\n else {\n return new EmptyObservable_1.EmptyObservable(scheduler);\n }\n };\n ArrayObservable.dispatch = function (state) {\n var array = state.array, index = state.index, count = state.count, subscriber = state.subscriber;\n if (index >= count) {\n subscriber.complete();\n return;\n }\n subscriber.next(array[index]);\n if (subscriber.closed) {\n return;\n }\n state.index = index + 1;\n this.schedule(state);\n };\n ArrayObservable.prototype._subscribe = function (subscriber) {\n var index = 0;\n var array = this.array;\n var count = array.length;\n var scheduler = this.scheduler;\n if (scheduler) {\n return scheduler.schedule(ArrayObservable.dispatch, 0, {\n array: array, index: index, count: count, subscriber: subscriber\n });\n }\n else {\n for (var i = 0; i < count && !subscriber.closed; i++) {\n subscriber.next(array[i]);\n }\n subscriber.complete();\n }\n };\n return ArrayObservable;\n}(Observable_1.Observable));\nexports.ArrayObservable = ArrayObservable;\n//# sourceMappingURL=ArrayObservable.js.map","\"use strict\";\nvar ArrayObservable_1 = require('./ArrayObservable');\nexports.of = ArrayObservable_1.ArrayObservable.of;\n//# sourceMappingURL=of.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar root_1 = require('../util/root');\nvar Observable_1 = require('../Observable');\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @extends {Ignored}\n * @hide true\n */\nvar PromiseObservable = (function (_super) {\n __extends(PromiseObservable, _super);\n function PromiseObservable(promise, scheduler) {\n _super.call(this);\n this.promise = promise;\n this.scheduler = scheduler;\n }\n /**\n * Converts a Promise to an Observable.\n *\n * <span class=\"informal\">Returns an Observable that just emits the Promise's\n * resolved value, then completes.</span>\n *\n * Converts an ES2015 Promise or a Promises/A+ spec compliant Promise to an\n * Observable. If the Promise resolves with a value, the output Observable\n * emits that resolved value as a `next`, and then completes. If the Promise\n * is rejected, then the output Observable emits the corresponding Error.\n *\n * @example <caption>Convert the Promise returned by Fetch to an Observable</caption>\n * var result = Rx.Observable.fromPromise(fetch('http://myserver.com/'));\n * result.subscribe(x => console.log(x), e => console.error(e));\n *\n * @see {@link bindCallback}\n * @see {@link from}\n *\n * @param {PromiseLike<T>} promise The promise to be converted.\n * @param {Scheduler} [scheduler] An optional IScheduler to use for scheduling\n * the delivery of the resolved value (or the rejection).\n * @return {Observable<T>} An Observable which wraps the Promise.\n * @static true\n * @name fromPromise\n * @owner Observable\n */\n PromiseObservable.create = function (promise, scheduler) {\n return new PromiseObservable(promise, scheduler);\n };\n PromiseObservable.prototype._subscribe = function (subscriber) {\n var _this = this;\n var promise = this.promise;\n var scheduler = this.scheduler;\n if (scheduler == null) {\n if (this._isScalar) {\n if (!subscriber.closed) {\n subscriber.next(this.value);\n subscriber.complete();\n }\n }\n else {\n promise.then(function (value) {\n _this.value = value;\n _this._isScalar = true;\n if (!subscriber.closed) {\n subscriber.next(value);\n subscriber.complete();\n }\n }, function (err) {\n if (!subscriber.closed) {\n subscriber.error(err);\n }\n })\n .then(null, function (err) {\n // escape the promise trap, throw unhandled errors\n root_1.root.setTimeout(function () { throw err; });\n });\n }\n }\n else {\n if (this._isScalar) {\n if (!subscriber.closed) {\n return scheduler.schedule(dispatchNext, 0, { value: this.value, subscriber: subscriber });\n }\n }\n else {\n promise.then(function (value) {\n _this.value = value;\n _this._isScalar = true;\n if (!subscriber.closed) {\n subscriber.add(scheduler.schedule(dispatchNext, 0, { value: value, subscriber: subscriber }));\n }\n }, function (err) {\n if (!subscriber.closed) {\n subscriber.add(scheduler.schedule(dispatchError, 0, { err: err, subscriber: subscriber }));\n }\n })\n .then(null, function (err) {\n // escape the promise trap, throw unhandled errors\n root_1.root.setTimeout(function () { throw err; });\n });\n }\n }\n };\n return PromiseObservable;\n}(Observable_1.Observable));\nexports.PromiseObservable = PromiseObservable;\nfunction dispatchNext(arg) {\n var value = arg.value, subscriber = arg.subscriber;\n if (!subscriber.closed) {\n subscriber.next(value);\n subscriber.complete();\n }\n}\nfunction dispatchError(arg) {\n var err = arg.err, subscriber = arg.subscriber;\n if (!subscriber.closed) {\n subscriber.error(err);\n }\n}\n//# sourceMappingURL=PromiseObservable.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar root_1 = require('../util/root');\nvar Observable_1 = require('../Observable');\nvar iterator_1 = require('../symbol/iterator');\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @extends {Ignored}\n * @hide true\n */\nvar IteratorObservable = (function (_super) {\n __extends(IteratorObservable, _super);\n function IteratorObservable(iterator, scheduler) {\n _super.call(this);\n this.scheduler = scheduler;\n if (iterator == null) {\n throw new Error('iterator cannot be null.');\n }\n this.iterator = getIterator(iterator);\n }\n IteratorObservable.create = function (iterator, scheduler) {\n return new IteratorObservable(iterator, scheduler);\n };\n IteratorObservable.dispatch = function (state) {\n var index = state.index, hasError = state.hasError, iterator = state.iterator, subscriber = state.subscriber;\n if (hasError) {\n subscriber.error(state.error);\n return;\n }\n var result = iterator.next();\n if (result.done) {\n subscriber.complete();\n return;\n }\n subscriber.next(result.value);\n state.index = index + 1;\n if (subscriber.closed) {\n if (typeof iterator.return === 'function') {\n iterator.return();\n }\n return;\n }\n this.schedule(state);\n };\n IteratorObservable.prototype._subscribe = function (subscriber) {\n var index = 0;\n var _a = this, iterator = _a.iterator, scheduler = _a.scheduler;\n if (scheduler) {\n return scheduler.schedule(IteratorObservable.dispatch, 0, {\n index: index, iterator: iterator, subscriber: subscriber\n });\n }\n else {\n do {\n var result = iterator.next();\n if (result.done) {\n subscriber.complete();\n break;\n }\n else {\n subscriber.next(result.value);\n }\n if (subscriber.closed) {\n if (typeof iterator.return === 'function') {\n iterator.return();\n }\n break;\n }\n } while (true);\n }\n };\n return IteratorObservable;\n}(Observable_1.Observable));\nexports.IteratorObservable = IteratorObservable;\nvar StringIterator = (function () {\n function StringIterator(str, idx, len) {\n if (idx === void 0) { idx = 0; }\n if (len === void 0) { len = str.length; }\n this.str = str;\n this.idx = idx;\n this.len = len;\n }\n StringIterator.prototype[iterator_1.iterator] = function () { return (this); };\n StringIterator.prototype.next = function () {\n return this.idx < this.len ? {\n done: false,\n value: this.str.charAt(this.idx++)\n } : {\n done: true,\n value: undefined\n };\n };\n return StringIterator;\n}());\nvar ArrayIterator = (function () {\n function ArrayIterator(arr, idx, len) {\n if (idx === void 0) { idx = 0; }\n if (len === void 0) { len = toLength(arr); }\n this.arr = arr;\n this.idx = idx;\n this.len = len;\n }\n ArrayIterator.prototype[iterator_1.iterator] = function () { return this; };\n ArrayIterator.prototype.next = function () {\n return this.idx < this.len ? {\n done: false,\n value: this.arr[this.idx++]\n } : {\n done: true,\n value: undefined\n };\n };\n return ArrayIterator;\n}());\nfunction getIterator(obj) {\n var i = obj[iterator_1.iterator];\n if (!i && typeof obj === 'string') {\n return new StringIterator(obj);\n }\n if (!i && obj.length !== undefined) {\n return new ArrayIterator(obj);\n }\n if (!i) {\n throw new TypeError('object is not iterable');\n }\n return obj[iterator_1.iterator]();\n}\nvar maxSafeInteger = Math.pow(2, 53) - 1;\nfunction toLength(o) {\n var len = +o.length;\n if (isNaN(len)) {\n return 0;\n }\n if (len === 0 || !numberIsFinite(len)) {\n return len;\n }\n len = sign(len) * Math.floor(Math.abs(len));\n if (len <= 0) {\n return 0;\n }\n if (len > maxSafeInteger) {\n return maxSafeInteger;\n }\n return len;\n}\nfunction numberIsFinite(value) {\n return typeof value === 'number' && root_1.root.isFinite(value);\n}\nfunction sign(value) {\n var valueAsNumber = +value;\n if (valueAsNumber === 0) {\n return valueAsNumber;\n }\n if (isNaN(valueAsNumber)) {\n return valueAsNumber;\n }\n return valueAsNumber < 0 ? -1 : 1;\n}\n//# sourceMappingURL=IteratorObservable.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar Observable_1 = require('../Observable');\nvar ScalarObservable_1 = require('./ScalarObservable');\nvar EmptyObservable_1 = require('./EmptyObservable');\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @extends {Ignored}\n * @hide true\n */\nvar ArrayLikeObservable = (function (_super) {\n __extends(ArrayLikeObservable, _super);\n function ArrayLikeObservable(arrayLike, scheduler) {\n _super.call(this);\n this.arrayLike = arrayLike;\n this.scheduler = scheduler;\n if (!scheduler && arrayLike.length === 1) {\n this._isScalar = true;\n this.value = arrayLike[0];\n }\n }\n ArrayLikeObservable.create = function (arrayLike, scheduler) {\n var length = arrayLike.length;\n if (length === 0) {\n return new EmptyObservable_1.EmptyObservable();\n }\n else if (length === 1) {\n return new ScalarObservable_1.ScalarObservable(arrayLike[0], scheduler);\n }\n else {\n return new ArrayLikeObservable(arrayLike, scheduler);\n }\n };\n ArrayLikeObservable.dispatch = function (state) {\n var arrayLike = state.arrayLike, index = state.index, length = state.length, subscriber = state.subscriber;\n if (subscriber.closed) {\n return;\n }\n if (index >= length) {\n subscriber.complete();\n return;\n }\n subscriber.next(arrayLike[index]);\n state.index = index + 1;\n this.schedule(state);\n };\n ArrayLikeObservable.prototype._subscribe = function (subscriber) {\n var index = 0;\n var _a = this, arrayLike = _a.arrayLike, scheduler = _a.scheduler;\n var length = arrayLike.length;\n if (scheduler) {\n return scheduler.schedule(ArrayLikeObservable.dispatch, 0, {\n arrayLike: arrayLike, index: index, length: length, subscriber: subscriber\n });\n }\n else {\n for (var i = 0; i < length && !subscriber.closed; i++) {\n subscriber.next(arrayLike[i]);\n }\n subscriber.complete();\n }\n };\n return ArrayLikeObservable;\n}(Observable_1.Observable));\nexports.ArrayLikeObservable = ArrayLikeObservable;\n//# sourceMappingURL=ArrayLikeObservable.js.map","\"use strict\";\nvar Observable_1 = require('./Observable');\n/**\n * Represents a push-based event or value that an {@link Observable} can emit.\n * This class is particularly useful for operators that manage notifications,\n * like {@link materialize}, {@link dematerialize}, {@link observeOn}, and\n * others. Besides wrapping the actual delivered value, it also annotates it\n * with metadata of, for instance, what type of push message it is (`next`,\n * `error`, or `complete`).\n *\n * @see {@link materialize}\n * @see {@link dematerialize}\n * @see {@link observeOn}\n *\n * @class Notification<T>\n */\nvar Notification = (function () {\n function Notification(kind, value, error) {\n this.kind = kind;\n this.value = value;\n this.error = error;\n this.hasValue = kind === 'N';\n }\n /**\n * Delivers to the given `observer` the value wrapped by this Notification.\n * @param {Observer} observer\n * @return\n */\n Notification.prototype.observe = function (observer) {\n switch (this.kind) {\n case 'N':\n return observer.next && observer.next(this.value);\n case 'E':\n return observer.error && observer.error(this.error);\n case 'C':\n return observer.complete && observer.complete();\n }\n };\n /**\n * Given some {@link Observer} callbacks, deliver the value represented by the\n * current Notification to the correctly corresponding callback.\n * @param {function(value: T): void} next An Observer `next` callback.\n * @param {function(err: any): void} [error] An Observer `error` callback.\n * @param {function(): void} [complete] An Observer `complete` callback.\n * @return {any}\n */\n Notification.prototype.do = function (next, error, complete) {\n var kind = this.kind;\n switch (kind) {\n case 'N':\n return next && next(this.value);\n case 'E':\n return error && error(this.error);\n case 'C':\n return complete && complete();\n }\n };\n /**\n * Takes an Observer or its individual callback functions, and calls `observe`\n * or `do` methods accordingly.\n * @param {Observer|function(value: T): void} nextOrObserver An Observer or\n * the `next` callback.\n * @param {function(err: any): void} [error] An Observer `error` callback.\n * @param {function(): void} [complete] An Observer `complete` callback.\n * @return {any}\n */\n Notification.prototype.accept = function (nextOrObserver, error, complete) {\n if (nextOrObserver && typeof nextOrObserver.next === 'function') {\n return this.observe(nextOrObserver);\n }\n else {\n return this.do(nextOrObserver, error, complete);\n }\n };\n /**\n * Returns a simple Observable that just delivers the notification represented\n * by this Notification instance.\n * @return {any}\n */\n Notification.prototype.toObservable = function () {\n var kind = this.kind;\n switch (kind) {\n case 'N':\n return Observable_1.Observable.of(this.value);\n case 'E':\n return Observable_1.Observable.throw(this.error);\n case 'C':\n return Observable_1.Observable.empty();\n }\n throw new Error('unexpected notification kind value');\n };\n /**\n * A shortcut to create a Notification instance of the type `next` from a\n * given value.\n * @param {T} value The `next` value.\n * @return {Notification<T>} The \"next\" Notification representing the\n * argument.\n */\n Notification.createNext = function (value) {\n if (typeof value !== 'undefined') {\n return new Notification('N', value);\n }\n return Notification.undefinedValueNotification;\n };\n /**\n * A shortcut to create a Notification instance of the type `error` from a\n * given error.\n * @param {any} [err] The `error` error.\n * @return {Notification<T>} The \"error\" Notification representing the\n * argument.\n */\n Notification.createError = function (err) {\n return new Notification('E', undefined, err);\n };\n /**\n * A shortcut to create a Notification instance of the type `complete`.\n * @return {Notification<any>} The valueless \"complete\" Notification.\n */\n Notification.createComplete = function () {\n return Notification.completeNotification;\n };\n Notification.completeNotification = new Notification('C');\n Notification.undefinedValueNotification = new Notification('N', undefined);\n return Notification;\n}());\nexports.Notification = Notification;\n//# sourceMappingURL=Notification.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar Subscriber_1 = require('../Subscriber');\nvar Notification_1 = require('../Notification');\n/**\n *\n * Re-emits all notifications from source Observable with specified scheduler.\n *\n * <span class=\"informal\">Ensure a specific scheduler is used, from outside of an Observable.</span>\n *\n * `observeOn` is an operator that accepts a scheduler as a first parameter, which will be used to reschedule\n * notifications emitted by the source Observable. It might be useful, if you do not have control over\n * internal scheduler of a given Observable, but want to control when its values are emitted nevertheless.\n *\n * Returned Observable emits the same notifications (nexted values, complete and error events) as the source Observable,\n * but rescheduled with provided scheduler. Note that this doesn't mean that source Observables internal\n * scheduler will be replaced in any way. Original scheduler still will be used, but when the source Observable emits\n * notification, it will be immediately scheduled again - this time with scheduler passed to `observeOn`.\n * An anti-pattern would be calling `observeOn` on Observable that emits lots of values synchronously, to split\n * that emissions into asynchronous chunks. For this to happen, scheduler would have to be passed into the source\n * Observable directly (usually into the operator that creates it). `observeOn` simply delays notifications a\n * little bit more, to ensure that they are emitted at expected moments.\n *\n * As a matter of fact, `observeOn` accepts second parameter, which specifies in milliseconds with what delay notifications\n * will be emitted. The main difference between {@link delay} operator and `observeOn` is that `observeOn`\n * will delay all notifications - including error notifications - while `delay` will pass through error\n * from source Observable immediately when it is emitted. In general it is highly recommended to use `delay` operator\n * for any kind of delaying of values in the stream, while using `observeOn` to specify which scheduler should be used\n * for notification emissions in general.\n *\n * @example <caption>Ensure values in subscribe are called just before browser repaint.</caption>\n * const intervals = Rx.Observable.interval(10); // Intervals are scheduled\n * // with async scheduler by default...\n *\n * intervals\n * .observeOn(Rx.Scheduler.animationFrame) // ...but we will observe on animationFrame\n * .subscribe(val => { // scheduler to ensure smooth animation.\n * someDiv.style.height = val + 'px';\n * });\n *\n * @see {@link delay}\n *\n * @param {IScheduler} scheduler Scheduler that will be used to reschedule notifications from source Observable.\n * @param {number} [delay] Number of milliseconds that states with what delay every notification should be rescheduled.\n * @return {Observable<T>} Observable that emits the same notifications as the source Observable,\n * but with provided scheduler.\n *\n * @method observeOn\n * @owner Observable\n */\nfunction observeOn(scheduler, delay) {\n if (delay === void 0) { delay = 0; }\n return function observeOnOperatorFunction(source) {\n return source.lift(new ObserveOnOperator(scheduler, delay));\n };\n}\nexports.observeOn = observeOn;\nvar ObserveOnOperator = (function () {\n function ObserveOnOperator(scheduler, delay) {\n if (delay === void 0) { delay = 0; }\n this.scheduler = scheduler;\n this.delay = delay;\n }\n ObserveOnOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new ObserveOnSubscriber(subscriber, this.scheduler, this.delay));\n };\n return ObserveOnOperator;\n}());\nexports.ObserveOnOperator = ObserveOnOperator;\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar ObserveOnSubscriber = (function (_super) {\n __extends(ObserveOnSubscriber, _super);\n function ObserveOnSubscriber(destination, scheduler, delay) {\n if (delay === void 0) { delay = 0; }\n _super.call(this, destination);\n this.scheduler = scheduler;\n this.delay = delay;\n }\n ObserveOnSubscriber.dispatch = function (arg) {\n var notification = arg.notification, destination = arg.destination;\n notification.observe(destination);\n this.unsubscribe();\n };\n ObserveOnSubscriber.prototype.scheduleMessage = function (notification) {\n this.add(this.scheduler.schedule(ObserveOnSubscriber.dispatch, this.delay, new ObserveOnMessage(notification, this.destination)));\n };\n ObserveOnSubscriber.prototype._next = function (value) {\n this.scheduleMessage(Notification_1.Notification.createNext(value));\n };\n ObserveOnSubscriber.prototype._error = function (err) {\n this.scheduleMessage(Notification_1.Notification.createError(err));\n };\n ObserveOnSubscriber.prototype._complete = function () {\n this.scheduleMessage(Notification_1.Notification.createComplete());\n };\n return ObserveOnSubscriber;\n}(Subscriber_1.Subscriber));\nexports.ObserveOnSubscriber = ObserveOnSubscriber;\nvar ObserveOnMessage = (function () {\n function ObserveOnMessage(notification, destination) {\n this.notification = notification;\n this.destination = destination;\n }\n return ObserveOnMessage;\n}());\nexports.ObserveOnMessage = ObserveOnMessage;\n//# sourceMappingURL=observeOn.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar isArray_1 = require('../util/isArray');\nvar isArrayLike_1 = require('../util/isArrayLike');\nvar isPromise_1 = require('../util/isPromise');\nvar PromiseObservable_1 = require('./PromiseObservable');\nvar IteratorObservable_1 = require('./IteratorObservable');\nvar ArrayObservable_1 = require('./ArrayObservable');\nvar ArrayLikeObservable_1 = require('./ArrayLikeObservable');\nvar iterator_1 = require('../symbol/iterator');\nvar Observable_1 = require('../Observable');\nvar observeOn_1 = require('../operators/observeOn');\nvar observable_1 = require('../symbol/observable');\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @extends {Ignored}\n * @hide true\n */\nvar FromObservable = (function (_super) {\n __extends(FromObservable, _super);\n function FromObservable(ish, scheduler) {\n _super.call(this, null);\n this.ish = ish;\n this.scheduler = scheduler;\n }\n /**\n * Creates an Observable from an Array, an array-like object, a Promise, an\n * iterable object, or an Observable-like object.\n *\n * <span class=\"informal\">Converts almost anything to an Observable.</span>\n *\n * <img src=\"./img/from.png\" width=\"100%\">\n *\n * Convert various other objects and data types into Observables. `from`\n * converts a Promise or an array-like or an\n * [iterable](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols#iterable)\n * object into an Observable that emits the items in that promise or array or\n * iterable. A String, in this context, is treated as an array of characters.\n * Observable-like objects (contains a function named with the ES2015 Symbol\n * for Observable) can also be converted through this operator.\n *\n * @example <caption>Converts an array to an Observable</caption>\n * var array = [10, 20, 30];\n * var result = Rx.Observable.from(array);\n * result.subscribe(x => console.log(x));\n *\n * // Results in the following:\n * // 10 20 30\n *\n * @example <caption>Convert an infinite iterable (from a generator) to an Observable</caption>\n * function* generateDoubles(seed) {\n * var i = seed;\n * while (true) {\n * yield i;\n * i = 2 * i; // double it\n * }\n * }\n *\n * var iterator = generateDoubles(3);\n * var result = Rx.Observable.from(iterator).take(10);\n * result.subscribe(x => console.log(x));\n *\n * // Results in the following:\n * // 3 6 12 24 48 96 192 384 768 1536\n *\n * @see {@link create}\n * @see {@link fromEvent}\n * @see {@link fromEventPattern}\n * @see {@link fromPromise}\n *\n * @param {ObservableInput<T>} ish A subscribable object, a Promise, an\n * Observable-like, an Array, an iterable or an array-like object to be\n * converted.\n * @param {Scheduler} [scheduler] The scheduler on which to schedule the\n * emissions of values.\n * @return {Observable<T>} The Observable whose values are originally from the\n * input object that was converted.\n * @static true\n * @name from\n * @owner Observable\n */\n FromObservable.create = function (ish, scheduler) {\n if (ish != null) {\n if (typeof ish[observable_1.observable] === 'function') {\n if (ish instanceof Observable_1.Observable && !scheduler) {\n return ish;\n }\n return new FromObservable(ish, scheduler);\n }\n else if (isArray_1.isArray(ish)) {\n return new ArrayObservable_1.ArrayObservable(ish, scheduler);\n }\n else if (isPromise_1.isPromise(ish)) {\n return new PromiseObservable_1.PromiseObservable(ish, scheduler);\n }\n else if (typeof ish[iterator_1.iterator] === 'function' || typeof ish === 'string') {\n return new IteratorObservable_1.IteratorObservable(ish, scheduler);\n }\n else if (isArrayLike_1.isArrayLike(ish)) {\n return new ArrayLikeObservable_1.ArrayLikeObservable(ish, scheduler);\n }\n }\n throw new TypeError((ish !== null && typeof ish || ish) + ' is not observable');\n };\n FromObservable.prototype._subscribe = function (subscriber) {\n var ish = this.ish;\n var scheduler = this.scheduler;\n if (scheduler == null) {\n return ish[observable_1.observable]().subscribe(subscriber);\n }\n else {\n return ish[observable_1.observable]().subscribe(new observeOn_1.ObserveOnSubscriber(subscriber, scheduler, 0));\n }\n };\n return FromObservable;\n}(Observable_1.Observable));\nexports.FromObservable = FromObservable;\n//# sourceMappingURL=FromObservable.js.map","\"use strict\";\nvar FromObservable_1 = require('./FromObservable');\nexports.from = FromObservable_1.FromObservable.create;\n//# sourceMappingURL=from.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar Subscriber_1 = require('../Subscriber');\n/* tslint:enable:max-line-length */\n/**\n * Filter items emitted by the source Observable by only emitting those that\n * satisfy a specified predicate.\n *\n * <span class=\"informal\">Like\n * [Array.prototype.filter()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter),\n * it only emits a value from the source if it passes a criterion function.</span>\n *\n * <img src=\"./img/filter.png\" width=\"100%\">\n *\n * Similar to the well-known `Array.prototype.filter` method, this operator\n * takes values from the source Observable, passes them through a `predicate`\n * function and only emits those values that yielded `true`.\n *\n * @example <caption>Emit only click events whose target was a DIV element</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var clicksOnDivs = clicks.filter(ev => ev.target.tagName === 'DIV');\n * clicksOnDivs.subscribe(x => console.log(x));\n *\n * @see {@link distinct}\n * @see {@link distinctUntilChanged}\n * @see {@link distinctUntilKeyChanged}\n * @see {@link ignoreElements}\n * @see {@link partition}\n * @see {@link skip}\n *\n * @param {function(value: T, index: number): boolean} predicate A function that\n * evaluates each value emitted by the source Observable. If it returns `true`,\n * the value is emitted, if `false` the value is not passed to the output\n * Observable. The `index` parameter is the number `i` for the i-th source\n * emission that has happened since the subscription, starting from the number\n * `0`.\n * @param {any} [thisArg] An optional argument to determine the value of `this`\n * in the `predicate` function.\n * @return {Observable} An Observable of values from the source that were\n * allowed by the `predicate` function.\n * @method filter\n * @owner Observable\n */\nfunction filter(predicate, thisArg) {\n return function filterOperatorFunction(source) {\n return source.lift(new FilterOperator(predicate, thisArg));\n };\n}\nexports.filter = filter;\nvar FilterOperator = (function () {\n function FilterOperator(predicate, thisArg) {\n this.predicate = predicate;\n this.thisArg = thisArg;\n }\n FilterOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new FilterSubscriber(subscriber, this.predicate, this.thisArg));\n };\n return FilterOperator;\n}());\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar FilterSubscriber = (function (_super) {\n __extends(FilterSubscriber, _super);\n function FilterSubscriber(destination, predicate, thisArg) {\n _super.call(this, destination);\n this.predicate = predicate;\n this.thisArg = thisArg;\n this.count = 0;\n }\n // the try catch block below is left specifically for\n // optimization and perf reasons. a tryCatcher is not necessary here.\n FilterSubscriber.prototype._next = function (value) {\n var result;\n try {\n result = this.predicate.call(this.thisArg, value, this.count++);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n if (result) {\n this.destination.next(value);\n }\n };\n return FilterSubscriber;\n}(Subscriber_1.Subscriber));\n//# sourceMappingURL=filter.js.map","\"use strict\";\nvar filter_1 = require('../operators/filter');\n/* tslint:enable:max-line-length */\n/**\n * Filter items emitted by the source Observable by only emitting those that\n * satisfy a specified predicate.\n *\n * <span class=\"informal\">Like\n * [Array.prototype.filter()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter),\n * it only emits a value from the source if it passes a criterion function.</span>\n *\n * <img src=\"./img/filter.png\" width=\"100%\">\n *\n * Similar to the well-known `Array.prototype.filter` method, this operator\n * takes values from the source Observable, passes them through a `predicate`\n * function and only emits those values that yielded `true`.\n *\n * @example <caption>Emit only click events whose target was a DIV element</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var clicksOnDivs = clicks.filter(ev => ev.target.tagName === 'DIV');\n * clicksOnDivs.subscribe(x => console.log(x));\n *\n * @see {@link distinct}\n * @see {@link distinctUntilChanged}\n * @see {@link distinctUntilKeyChanged}\n * @see {@link ignoreElements}\n * @see {@link partition}\n * @see {@link skip}\n *\n * @param {function(value: T, index: number): boolean} predicate A function that\n * evaluates each value emitted by the source Observable. If it returns `true`,\n * the value is emitted, if `false` the value is not passed to the output\n * Observable. The `index` parameter is the number `i` for the i-th source\n * emission that has happened since the subscription, starting from the number\n * `0`.\n * @param {any} [thisArg] An optional argument to determine the value of `this`\n * in the `predicate` function.\n * @return {Observable} An Observable of values from the source that were\n * allowed by the `predicate` function.\n * @method filter\n * @owner Observable\n */\nfunction filter(predicate, thisArg) {\n return filter_1.filter(predicate, thisArg)(this);\n}\nexports.filter = filter;\n//# sourceMappingURL=filter.js.map","var _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\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\nimport { Observable } from 'rxjs/Observable';\nimport { of as _of } from 'rxjs/observable/of';\nimport { from as _from } from 'rxjs/observable/from';\nimport { filter } from 'rxjs/operator/filter';\n\nexport var ActionsObservable = function (_Observable) {\n _inherits(ActionsObservable, _Observable);\n\n _createClass(ActionsObservable, null, [{\n key: 'of',\n value: function of() {\n return new this(_of.apply(undefined, arguments));\n }\n }, {\n key: 'from',\n value: function from(actions, scheduler) {\n return new this(_from(actions, scheduler));\n }\n }]);\n\n function ActionsObservable(actionsSubject) {\n _classCallCheck(this, ActionsObservable);\n\n var _this = _possibleConstructorReturn(this, (ActionsObservable.__proto__ || Object.getPrototypeOf(ActionsObservable)).call(this));\n\n _this.source = actionsSubject;\n return _this;\n }\n\n _createClass(ActionsObservable, [{\n key: 'lift',\n value: function lift(operator) {\n var observable = new ActionsObservable(this);\n observable.operator = operator;\n return observable;\n }\n }, {\n key: 'ofType',\n value: function ofType() {\n for (var _len = arguments.length, keys = Array(_len), _key = 0; _key < _len; _key++) {\n keys[_key] = arguments[_key];\n }\n\n return filter.call(this, function (_ref) {\n var type = _ref.type;\n\n var len = keys.length;\n if (len === 1) {\n return type === keys[0];\n } else {\n for (var i = 0; i < len; i++) {\n if (keys[i] === type) {\n return true;\n }\n }\n }\n return false;\n });\n }\n }]);\n\n return ActionsObservable;\n}(Observable);","export var EPIC_END = '@@redux-observable/EPIC_END';","var _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\nimport { Subject } from 'rxjs/Subject';\nimport { map } from 'rxjs/operator/map';\nimport { switchMap } from 'rxjs/operator/switchMap';\nimport { ActionsObservable } from './ActionsObservable';\nimport { EPIC_END } from './EPIC_END';\n\nvar defaultAdapter = {\n input: function input(action$) {\n return action$;\n },\n output: function output(action$) {\n return action$;\n }\n};\n\nvar defaultOptions = {\n adapter: defaultAdapter\n};\n\nexport function createEpicMiddleware(epic) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultOptions;\n\n if (typeof epic !== 'function') {\n throw new TypeError('You must provide a root Epic to createEpicMiddleware');\n }\n\n // even though we used default param, we need to merge the defaults\n // inside the options object as well in case they declare only some\n options = _extends({}, defaultOptions, options);\n var input$ = new Subject();\n var action$ = options.adapter.input(new ActionsObservable(input$));\n var epic$ = new Subject();\n var store = void 0;\n\n var epicMiddleware = function epicMiddleware(_store) {\n store = _store;\n\n return function (next) {\n var _context;\n\n (_context = map.call(epic$, function (epic) {\n var output$ = 'dependencies' in options ? epic(action$, store, options.dependencies) : epic(action$, store);\n\n if (!output$) {\n throw new TypeError('Your root Epic \"' + (epic.name || '<anonymous>') + '\" does not return a stream. Double check you\\'re not missing a return statement!');\n }\n\n return output$;\n }), switchMap).call(_context, function (output$) {\n return options.adapter.output(output$);\n }).subscribe(store.dispatch);\n\n // Setup initial root epic\n epic$.next(epic);\n\n return function (action) {\n var result = next(action);\n input$.next(action);\n return result;\n };\n };\n };\n\n epicMiddleware.replaceEpic = function (epic) {\n // gives the previous root Epic a last chance\n // to do some clean up\n store.dispatch({ type: EPIC_END });\n // switches to the new root Epic, synchronously terminating\n // the previous one\n epic$.next(epic);\n };\n\n return epicMiddleware;\n}","\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar subscribeToResult_1 = require('../util/subscribeToResult');\nvar OuterSubscriber_1 = require('../OuterSubscriber');\n/* tslint:enable:max-line-length */\n/**\n * Projects each source value to an Observable which is merged in the output\n * Observable.\n *\n * <span class=\"informal\">Maps each value to an Observable, then flattens all of\n * these inner Observables using {@link mergeAll}.</span>\n *\n * <img src=\"./img/mergeMap.png\" width=\"100%\">\n *\n * Returns an Observable that emits items based on applying a function that you\n * supply to each item emitted by the source Observable, where that function\n * returns an Observable, and then merging those resulting Observables and\n * emitting the results of this merger.\n *\n * @example <caption>Map and flatten each letter to an Observable ticking every 1 second</caption>\n * var letters = Rx.Observable.of('a', 'b', 'c');\n * var result = letters.mergeMap(x =>\n * Rx.Observable.interval(1000).map(i => x+i)\n * );\n * result.subscribe(x => console.log(x));\n *\n * // Results in the following:\n * // a0\n * // b0\n * // c0\n * // a1\n * // b1\n * // c1\n * // continues to list a,b,c with respective ascending integers\n *\n * @see {@link concatMap}\n * @see {@link exhaustMap}\n * @see {@link merge}\n * @see {@link mergeAll}\n * @see {@link mergeMapTo}\n * @see {@link mergeScan}\n * @see {@link switchMap}\n *\n * @param {function(value: T, ?index: number): ObservableInput} project A function\n * that, when applied to an item emitted by the source Observable, returns an\n * Observable.\n * @param {function(outerValue: T, innerValue: I, outerIndex: number, innerIndex: number): any} [resultSelector]\n * A function to produce the value on the output Observable based on the values\n * and the indices of the source (outer) emission and the inner Observable\n * emission. The arguments passed to this function are:\n * - `outerValue`: the value that came from the source\n * - `innerValue`: the value that came from the projected Observable\n * - `outerIndex`: the \"index\" of the value that came from the source\n * - `innerIndex`: the \"index\" of the value from the projected Observable\n * @param {number} [concurrent=Number.POSITIVE_INFINITY] Maximum number of input\n * Observables being subscribed to concurrently.\n * @return {Observable} An Observable that emits the result of applying the\n * projection function (and the optional `resultSelector`) to each item emitted\n * by the source Observable and merging the results of the Observables obtained\n * from this transformation.\n * @method mergeMap\n * @owner Observable\n */\nfunction mergeMap(project, resultSelector, concurrent) {\n if (concurrent === void 0) { concurrent = Number.POSITIVE_INFINITY; }\n return function mergeMapOperatorFunction(source) {\n if (typeof resultSelector === 'number') {\n concurrent = resultSelector;\n resultSelector = null;\n }\n return source.lift(new MergeMapOperator(project, resultSelector, concurrent));\n };\n}\nexports.mergeMap = mergeMap;\nvar MergeMapOperator = (function () {\n function MergeMapOperator(project, resultSelector, concurrent) {\n if (concurrent === void 0) { concurrent = Number.POSITIVE_INFINITY; }\n this.project = project;\n this.resultSelector = resultSelector;\n this.concurrent = concurrent;\n }\n MergeMapOperator.prototype.call = function (observer, source) {\n return source.subscribe(new MergeMapSubscriber(observer, this.project, this.resultSelector, this.concurrent));\n };\n return MergeMapOperator;\n}());\nexports.MergeMapOperator = MergeMapOperator;\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar MergeMapSubscriber = (function (_super) {\n __extends(MergeMapSubscriber, _super);\n function MergeMapSubscriber(destination, project, resultSelector, concurrent) {\n if (concurrent === void 0) { concurrent = Number.POSITIVE_INFINITY; }\n _super.call(this, destination);\n this.project = project;\n this.resultSelector = resultSelector;\n this.concurrent = concurrent;\n this.hasCompleted = false;\n this.buffer = [];\n this.active = 0;\n this.index = 0;\n }\n MergeMapSubscriber.prototype._next = function (value) {\n if (this.active < this.concurrent) {\n this._tryNext(value);\n }\n else {\n this.buffer.push(value);\n }\n };\n MergeMapSubscriber.prototype._tryNext = function (value) {\n var result;\n var index = this.index++;\n try {\n result = this.project(value, index);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n this.active++;\n this._innerSub(result, value, index);\n };\n MergeMapSubscriber.prototype._innerSub = function (ish, value, index) {\n this.add(subscribeToResult_1.subscribeToResult(this, ish, value, index));\n };\n MergeMapSubscriber.prototype._complete = function () {\n this.hasCompleted = true;\n if (this.active === 0 && this.buffer.length === 0) {\n this.destination.complete();\n }\n };\n MergeMapSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n if (this.resultSelector) {\n this._notifyResultSelector(outerValue, innerValue, outerIndex, innerIndex);\n }\n else {\n this.destination.next(innerValue);\n }\n };\n MergeMapSubscriber.prototype._notifyResultSelector = function (outerValue, innerValue, outerIndex, innerIndex) {\n var result;\n try {\n result = this.resultSelector(outerValue, innerValue, outerIndex, innerIndex);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n this.destination.next(result);\n };\n MergeMapSubscriber.prototype.notifyComplete = function (innerSub) {\n var buffer = this.buffer;\n this.remove(innerSub);\n this.active--;\n if (buffer.length > 0) {\n this._next(buffer.shift());\n }\n else if (this.active === 0 && this.hasCompleted) {\n this.destination.complete();\n }\n };\n return MergeMapSubscriber;\n}(OuterSubscriber_1.OuterSubscriber));\nexports.MergeMapSubscriber = MergeMapSubscriber;\n//# sourceMappingURL=mergeMap.js.map","\"use strict\";\nfunction identity(x) {\n return x;\n}\nexports.identity = identity;\n//# sourceMappingURL=identity.js.map","\"use strict\";\nvar mergeMap_1 = require('./mergeMap');\nvar identity_1 = require('../util/identity');\n/**\n * Converts a higher-order Observable into a first-order Observable which\n * concurrently delivers all values that are emitted on the inner Observables.\n *\n * <span class=\"informal\">Flattens an Observable-of-Observables.</span>\n *\n * <img src=\"./img/mergeAll.png\" width=\"100%\">\n *\n * `mergeAll` subscribes to an Observable that emits Observables, also known as\n * a higher-order Observable. Each time it observes one of these emitted inner\n * Observables, it subscribes to that and delivers all the values from the\n * inner Observable on the output Observable. The output Observable only\n * completes once all inner Observables have completed. Any error delivered by\n * a inner Observable will be immediately emitted on the output Observable.\n *\n * @example <caption>Spawn a new interval Observable for each click event, and blend their outputs as one Observable</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var higherOrder = clicks.map((ev) => Rx.Observable.interval(1000));\n * var firstOrder = higherOrder.mergeAll();\n * firstOrder.subscribe(x => console.log(x));\n *\n * @example <caption>Count from 0 to 9 every second for each click, but only allow 2 concurrent timers</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var higherOrder = clicks.map((ev) => Rx.Observable.interval(1000).take(10));\n * var firstOrder = higherOrder.mergeAll(2);\n * firstOrder.subscribe(x => console.log(x));\n *\n * @see {@link combineAll}\n * @see {@link concatAll}\n * @see {@link exhaust}\n * @see {@link merge}\n * @see {@link mergeMap}\n * @see {@link mergeMapTo}\n * @see {@link mergeScan}\n * @see {@link switch}\n * @see {@link zipAll}\n *\n * @param {number} [concurrent=Number.POSITIVE_INFINITY] Maximum number of inner\n * Observables being subscribed to concurrently.\n * @return {Observable} An Observable that emits values coming from all the\n * inner Observables emitted by the source Observable.\n * @method mergeAll\n * @owner Observable\n */\nfunction mergeAll(concurrent) {\n if (concurrent === void 0) { concurrent = Number.POSITIVE_INFINITY; }\n return mergeMap_1.mergeMap(identity_1.identity, null, concurrent);\n}\nexports.mergeAll = mergeAll;\n//# sourceMappingURL=mergeAll.js.map","\"use strict\";\nvar Observable_1 = require('../Observable');\nvar ArrayObservable_1 = require('../observable/ArrayObservable');\nvar mergeAll_1 = require('./mergeAll');\nvar isScheduler_1 = require('../util/isScheduler');\n/* tslint:enable:max-line-length */\nfunction merge() {\n var observables = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n observables[_i - 0] = arguments[_i];\n }\n return function (source) { return source.lift.call(mergeStatic.apply(void 0, [source].concat(observables))); };\n}\nexports.merge = merge;\n/* tslint:enable:max-line-length */\n/**\n * Creates an output Observable which concurrently emits all values from every\n * given input Observable.\n *\n * <span class=\"informal\">Flattens multiple Observables together by blending\n * their values into one Observable.</span>\n *\n * <img src=\"./img/merge.png\" width=\"100%\">\n *\n * `merge` subscribes to each given input Observable (as arguments), and simply\n * forwards (without doing any transformation) all the values from all the input\n * Observables to the output Observable. The output Observable only completes\n * once all input Observables have completed. Any error delivered by an input\n * Observable will be immediately emitted on the output Observable.\n *\n * @example <caption>Merge together two Observables: 1s interval and clicks</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var timer = Rx.Observable.interval(1000);\n * var clicksOrTimer = Rx.Observable.merge(clicks, timer);\n * clicksOrTimer.subscribe(x => console.log(x));\n *\n * // Results in the following:\n * // timer will emit ascending values, one every second(1000ms) to console\n * // clicks logs MouseEvents to console everytime the \"document\" is clicked\n * // Since the two streams are merged you see these happening\n * // as they occur.\n *\n * @example <caption>Merge together 3 Observables, but only 2 run concurrently</caption>\n * var timer1 = Rx.Observable.interval(1000).take(10);\n * var timer2 = Rx.Observable.interval(2000).take(6);\n * var timer3 = Rx.Observable.interval(500).take(10);\n * var concurrent = 2; // the argument\n * var merged = Rx.Observable.merge(timer1, timer2, timer3, concurrent);\n * merged.subscribe(x => console.log(x));\n *\n * // Results in the following:\n * // - First timer1 and timer2 will run concurrently\n * // - timer1 will emit a value every 1000ms for 10 iterations\n * // - timer2 will emit a value every 2000ms for 6 iterations\n * // - after timer1 hits it's max iteration, timer2 will\n * // continue, and timer3 will start to run concurrently with timer2\n * // - when timer2 hits it's max iteration it terminates, and\n * // timer3 will continue to emit a value every 500ms until it is complete\n *\n * @see {@link mergeAll}\n * @see {@link mergeMap}\n * @see {@link mergeMapTo}\n * @see {@link mergeScan}\n *\n * @param {...ObservableInput} observables Input Observables to merge together.\n * @param {number} [concurrent=Number.POSITIVE_INFINITY] Maximum number of input\n * Observables being subscribed to concurrently.\n * @param {Scheduler} [scheduler=null] The IScheduler to use for managing\n * concurrency of input Observables.\n * @return {Observable} an Observable that emits items that are the result of\n * every input Observable.\n * @static true\n * @name merge\n * @owner Observable\n */\nfunction mergeStatic() {\n var observables = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n observables[_i - 0] = arguments[_i];\n }\n var concurrent = Number.POSITIVE_INFINITY;\n var scheduler = null;\n var last = observables[observables.length - 1];\n if (isScheduler_1.isScheduler(last)) {\n scheduler = observables.pop();\n if (observables.length > 1 && typeof observables[observables.length - 1] === 'number') {\n concurrent = observables.pop();\n }\n }\n else if (typeof last === 'number') {\n concurrent = observables.pop();\n }\n if (scheduler === null && observables.length === 1 && observables[0] instanceof Observable_1.Observable) {\n return observables[0];\n }\n return mergeAll_1.mergeAll(concurrent)(new ArrayObservable_1.ArrayObservable(observables, scheduler));\n}\nexports.mergeStatic = mergeStatic;\n//# sourceMappingURL=merge.js.map","\"use strict\";\nvar merge_1 = require('../operators/merge');\nvar merge_2 = require('../operators/merge');\nexports.mergeStatic = merge_2.mergeStatic;\n/* tslint:enable:max-line-length */\n/**\n * Creates an output Observable which concurrently emits all values from every\n * given input Observable.\n *\n * <span class=\"informal\">Flattens multiple Observables together by blending\n * their values into one Observable.</span>\n *\n * <img src=\"./img/merge.png\" width=\"100%\">\n *\n * `merge` subscribes to each given input Observable (either the source or an\n * Observable given as argument), and simply forwards (without doing any\n * transformation) all the values from all the input Observables to the output\n * Observable. The output Observable only completes once all input Observables\n * have completed. Any error delivered by an input Observable will be immediately\n * emitted on the output Observable.\n *\n * @example <caption>Merge together two Observables: 1s interval and clicks</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var timer = Rx.Observable.interval(1000);\n * var clicksOrTimer = clicks.merge(timer);\n * clicksOrTimer.subscribe(x => console.log(x));\n *\n * @example <caption>Merge together 3 Observables, but only 2 run concurrently</caption>\n * var timer1 = Rx.Observable.interval(1000).take(10);\n * var timer2 = Rx.Observable.interval(2000).take(6);\n * var timer3 = Rx.Observable.interval(500).take(10);\n * var concurrent = 2; // the argument\n * var merged = timer1.merge(timer2, timer3, concurrent);\n * merged.subscribe(x => console.log(x));\n *\n * @see {@link mergeAll}\n * @see {@link mergeMap}\n * @see {@link mergeMapTo}\n * @see {@link mergeScan}\n *\n * @param {ObservableInput} other An input Observable to merge with the source\n * Observable. More than one input Observables may be given as argument.\n * @param {number} [concurrent=Number.POSITIVE_INFINITY] Maximum number of input\n * Observables being subscribed to concurrently.\n * @param {Scheduler} [scheduler=null] The IScheduler to use for managing\n * concurrency of input Observables.\n * @return {Observable} An Observable that emits items that are the result of\n * every input Observable.\n * @method merge\n * @owner Observable\n */\nfunction merge() {\n var observables = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n observables[_i - 0] = arguments[_i];\n }\n return merge_1.merge.apply(void 0, observables)(this);\n}\nexports.merge = merge;\n//# sourceMappingURL=merge.js.map","\"use strict\";\nvar merge_1 = require('../operator/merge');\nexports.merge = merge_1.mergeStatic;\n//# sourceMappingURL=merge.js.map","function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nimport { merge } from 'rxjs/observable/merge';\n\n/**\n Merges all epics into a single one.\n */\nexport var combineEpics = function combineEpics() {\n for (var _len = arguments.length, epics = Array(_len), _key = 0; _key < _len; _key++) {\n epics[_key] = arguments[_key];\n }\n\n return function () {\n for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return merge.apply(undefined, _toConsumableArray(epics.map(function (epic) {\n var output$ = epic.apply(undefined, args);\n if (!output$) {\n throw new TypeError('combineEpics: one of the provided Epics \"' + (epic.name || '<anonymous>') + '\" does not return a stream. Double check you\\'re not missing a return statement!');\n }\n return output$;\n })));\n };\n};","\"use strict\";\nvar mergeAll_1 = require('./mergeAll');\n/**\n * Converts a higher-order Observable into a first-order Observable by\n * concatenating the inner Observables in order.\n *\n * <span class=\"informal\">Flattens an Observable-of-Observables by putting one\n * inner Observable after the other.</span>\n *\n * <img src=\"./img/concatAll.png\" width=\"100%\">\n *\n * Joins every Observable emitted by the source (a higher-order Observable), in\n * a serial fashion. It subscribes to each inner Observable only after the\n * previous inner Observable has completed, and merges all of their values into\n * the returned observable.\n *\n * __Warning:__ If the source Observable emits Observables quickly and\n * endlessly, and the inner Observables it emits generally complete slower than\n * the source emits, you can run into memory issues as the incoming Observables\n * collect in an unbounded buffer.\n *\n * Note: `concatAll` is equivalent to `mergeAll` with concurrency parameter set\n * to `1`.\n *\n * @example <caption>For each click event, tick every second from 0 to 3, with no concurrency</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var higherOrder = clicks.map(ev => Rx.Observable.interval(1000).take(4));\n * var firstOrder = higherOrder.concatAll();\n * firstOrder.subscribe(x => console.log(x));\n *\n * // Results in the following:\n * // (results are not concurrent)\n * // For every click on the \"document\" it will emit values 0 to 3 spaced\n * // on a 1000ms interval\n * // one click = 1000ms-> 0 -1000ms-> 1 -1000ms-> 2 -1000ms-> 3\n *\n * @see {@link combineAll}\n * @see {@link concat}\n * @see {@link concatMap}\n * @see {@link concatMapTo}\n * @see {@link exhaust}\n * @see {@link mergeAll}\n * @see {@link switch}\n * @see {@link zipAll}\n *\n * @return {Observable} An Observable emitting values from all the inner\n * Observables concatenated.\n * @method concatAll\n * @owner Observable\n */\nfunction concatAll() {\n return mergeAll_1.mergeAll(1);\n}\nexports.concatAll = concatAll;\n//# sourceMappingURL=concatAll.js.map","\"use strict\";\nvar isScheduler_1 = require('../util/isScheduler');\nvar of_1 = require('./of');\nvar from_1 = require('./from');\nvar concatAll_1 = require('../operators/concatAll');\n/* tslint:enable:max-line-length */\n/**\n * Creates an output Observable which sequentially emits all values from given\n * Observable and then moves on to the next.\n *\n * <span class=\"informal\">Concatenates multiple Observables together by\n * sequentially emitting their values, one Observable after the other.</span>\n *\n * <img src=\"./img/concat.png\" width=\"100%\">\n *\n * `concat` joins multiple Observables together, by subscribing to them one at a time and\n * merging their results into the output Observable. You can pass either an array of\n * Observables, or put them directly as arguments. Passing an empty array will result\n * in Observable that completes immediately.\n *\n * `concat` will subscribe to first input Observable and emit all its values, without\n * changing or affecting them in any way. When that Observable completes, it will\n * subscribe to then next Observable passed and, again, emit its values. This will be\n * repeated, until the operator runs out of Observables. When last input Observable completes,\n * `concat` will complete as well. At any given moment only one Observable passed to operator\n * emits values. If you would like to emit values from passed Observables concurrently, check out\n * {@link merge} instead, especially with optional `concurrent` parameter. As a matter of fact,\n * `concat` is an equivalent of `merge` operator with `concurrent` parameter set to `1`.\n *\n * Note that if some input Observable never completes, `concat` will also never complete\n * and Observables following the one that did not complete will never be subscribed. On the other\n * hand, if some Observable simply completes immediately after it is subscribed, it will be\n * invisible for `concat`, which will just move on to the next Observable.\n *\n * If any Observable in chain errors, instead of passing control to the next Observable,\n * `concat` will error immediately as well. Observables that would be subscribed after\n * the one that emitted error, never will.\n *\n * If you pass to `concat` the same Observable many times, its stream of values\n * will be \"replayed\" on every subscription, which means you can repeat given Observable\n * as many times as you like. If passing the same Observable to `concat` 1000 times becomes tedious,\n * you can always use {@link repeat}.\n *\n * @example <caption>Concatenate a timer counting from 0 to 3 with a synchronous sequence from 1 to 10</caption>\n * var timer = Rx.Observable.interval(1000).take(4);\n * var sequence = Rx.Observable.range(1, 10);\n * var result = Rx.Observable.concat(timer, sequence);\n * result.subscribe(x => console.log(x));\n *\n * // results in:\n * // 0 -1000ms-> 1 -1000ms-> 2 -1000ms-> 3 -immediate-> 1 ... 10\n *\n *\n * @example <caption>Concatenate an array of 3 Observables</caption>\n * var timer1 = Rx.Observable.interval(1000).take(10);\n * var timer2 = Rx.Observable.interval(2000).take(6);\n * var timer3 = Rx.Observable.interval(500).take(10);\n * var result = Rx.Observable.concat([timer1, timer2, timer3]); // note that array is passed\n * result.subscribe(x => console.log(x));\n *\n * // results in the following:\n * // (Prints to console sequentially)\n * // -1000ms-> 0 -1000ms-> 1 -1000ms-> ... 9\n * // -2000ms-> 0 -2000ms-> 1 -2000ms-> ... 5\n * // -500ms-> 0 -500ms-> 1 -500ms-> ... 9\n *\n *\n * @example <caption>Concatenate the same Observable to repeat it</caption>\n * const timer = Rx.Observable.interval(1000).take(2);\n *\n * Rx.Observable.concat(timer, timer) // concating the same Observable!\n * .subscribe(\n * value => console.log(value),\n * err => {},\n * () => console.log('...and it is done!')\n * );\n *\n * // Logs:\n * // 0 after 1s\n * // 1 after 2s\n * // 0 after 3s\n * // 1 after 4s\n * // \"...and it is done!\" also after 4s\n *\n * @see {@link concatAll}\n * @see {@link concatMap}\n * @see {@link concatMapTo}\n *\n * @param {ObservableInput} input1 An input Observable to concatenate with others.\n * @param {ObservableInput} input2 An input Observable to concatenate with others.\n * More than one input Observables may be given as argument.\n * @param {Scheduler} [scheduler=null] An optional IScheduler to schedule each\n * Observable subscription on.\n * @return {Observable} All values of each passed Observable merged into a\n * single Observable, in order, in serial fashion.\n * @static true\n * @name concat\n * @owner Observable\n */\nfunction concat() {\n var observables = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n observables[_i - 0] = arguments[_i];\n }\n if (observables.length === 1 || (observables.length === 2 && isScheduler_1.isScheduler(observables[1]))) {\n return from_1.from(observables[0]);\n }\n return concatAll_1.concatAll()(of_1.of.apply(void 0, observables));\n}\nexports.concat = concat;\n//# sourceMappingURL=concat.js.map","\"use strict\";\nvar Observable_1 = require('../../Observable');\nvar concat_1 = require('../../observable/concat');\nObservable_1.Observable.concat = concat_1.concat;\n//# sourceMappingURL=concat.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar Observable_1 = require('../Observable');\nvar EmptyObservable_1 = require('./EmptyObservable');\nvar isArray_1 = require('../util/isArray');\nvar subscribeToResult_1 = require('../util/subscribeToResult');\nvar OuterSubscriber_1 = require('../OuterSubscriber');\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @extends {Ignored}\n * @hide true\n */\nvar ForkJoinObservable = (function (_super) {\n __extends(ForkJoinObservable, _super);\n function ForkJoinObservable(sources, resultSelector) {\n _super.call(this);\n this.sources = sources;\n this.resultSelector = resultSelector;\n }\n /* tslint:enable:max-line-length */\n /**\n * Joins last values emitted by passed Observables.\n *\n * <span class=\"informal\">Wait for Observables to complete and then combine last values they emitted.</span>\n *\n * <img src=\"./img/forkJoin.png\" width=\"100%\">\n *\n * `forkJoin` is an operator that takes any number of Observables which can be passed either as an array\n * or directly as arguments. If no input Observables are provided, resulting stream will complete\n * immediately.\n *\n * `forkJoin` will wait for all passed Observables to complete and then it will emit an array with last\n * values from corresponding Observables. So if you pass `n` Observables to the operator, resulting\n * array will have `n` values, where first value is the last thing emitted by the first Observable,\n * second value is the last thing emitted by the second Observable and so on. That means `forkJoin` will\n * not emit more than once and it will complete after that. If you need to emit combined values not only\n * at the end of lifecycle of passed Observables, but also throughout it, try out {@link combineLatest}\n * or {@link zip} instead.\n *\n * In order for resulting array to have the same length as the number of input Observables, whenever any of\n * that Observables completes without emitting any value, `forkJoin` will complete at that moment as well\n * and it will not emit anything either, even if it already has some last values from other Observables.\n * Conversely, if there is an Observable that never completes, `forkJoin` will never complete as well,\n * unless at any point some other Observable completes without emitting value, which brings us back to\n * the previous case. Overall, in order for `forkJoin` to emit a value, all Observables passed as arguments\n * have to emit something at least once and complete.\n *\n * If any input Observable errors at some point, `forkJoin` will error as well and all other Observables\n * will be immediately unsubscribed.\n *\n * Optionally `forkJoin` accepts project function, that will be called with values which normally\n * would land in emitted array. Whatever is returned by project function, will appear in output\n * Observable instead. This means that default project can be thought of as a function that takes\n * all its arguments and puts them into an array. Note that project function will be called only\n * when output Observable is supposed to emit a result.\n *\n * @example <caption>Use forkJoin with operator emitting immediately</caption>\n * const observable = Rx.Observable.forkJoin(\n * Rx.Observable.of(1, 2, 3, 4),\n * Rx.Observable.of(5, 6, 7, 8)\n * );\n * observable.subscribe(\n * value => console.log(value),\n * err => {},\n * () => console.log('This is how it ends!')\n * );\n *\n * // Logs:\n * // [4, 8]\n * // \"This is how it ends!\"\n *\n *\n * @example <caption>Use forkJoin with operator emitting after some time</caption>\n * const observable = Rx.Observable.forkJoin(\n * Rx.Observable.interval(1000).take(3), // emit 0, 1, 2 every second and complete\n * Rx.Observable.interval(500).take(4) // emit 0, 1, 2, 3 every half a second and complete\n * );\n * observable.subscribe(\n * value => console.log(value),\n * err => {},\n * () => console.log('This is how it ends!')\n * );\n *\n * // Logs:\n * // [2, 3] after 3 seconds\n * // \"This is how it ends!\" immediately after\n *\n *\n * @example <caption>Use forkJoin with project function</caption>\n * const observable = Rx.Observable.forkJoin(\n * Rx.Observable.interval(1000).take(3), // emit 0, 1, 2 every second and complete\n * Rx.Observable.interval(500).take(4), // emit 0, 1, 2, 3 every half a second and complete\n * (n, m) => n + m\n * );\n * observable.subscribe(\n * value => console.log(value),\n * err => {},\n * () => console.log('This is how it ends!')\n * );\n *\n * // Logs:\n * // 5 after 3 seconds\n * // \"This is how it ends!\" immediately after\n *\n * @see {@link combineLatest}\n * @see {@link zip}\n *\n * @param {...SubscribableOrPromise} sources Any number of Observables provided either as an array or as an arguments\n * passed directly to the operator.\n * @param {function} [project] Function that takes values emitted by input Observables and returns value\n * that will appear in resulting Observable instead of default array.\n * @return {Observable} Observable emitting either an array of last values emitted by passed Observables\n * or value from project function.\n * @static true\n * @name forkJoin\n * @owner Observable\n */\n ForkJoinObservable.create = function () {\n var sources = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n sources[_i - 0] = arguments[_i];\n }\n if (sources === null || arguments.length === 0) {\n return new EmptyObservable_1.EmptyObservable();\n }\n var resultSelector = null;\n if (typeof sources[sources.length - 1] === 'function') {\n resultSelector = sources.pop();\n }\n // if the first and only other argument besides the resultSelector is an array\n // assume it's been called with `forkJoin([obs1, obs2, obs3], resultSelector)`\n if (sources.length === 1 && isArray_1.isArray(sources[0])) {\n sources = sources[0];\n }\n if (sources.length === 0) {\n return new EmptyObservable_1.EmptyObservable();\n }\n return new ForkJoinObservable(sources, resultSelector);\n };\n ForkJoinObservable.prototype._subscribe = function (subscriber) {\n return new ForkJoinSubscriber(subscriber, this.sources, this.resultSelector);\n };\n return ForkJoinObservable;\n}(Observable_1.Observable));\nexports.ForkJoinObservable = ForkJoinObservable;\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar ForkJoinSubscriber = (function (_super) {\n __extends(ForkJoinSubscriber, _super);\n function ForkJoinSubscriber(destination, sources, resultSelector) {\n _super.call(this, destination);\n this.sources = sources;\n this.resultSelector = resultSelector;\n this.completed = 0;\n this.haveValues = 0;\n var len = sources.length;\n this.total = len;\n this.values = new Array(len);\n for (var i = 0; i < len; i++) {\n var source = sources[i];\n var innerSubscription = subscribeToResult_1.subscribeToResult(this, source, null, i);\n if (innerSubscription) {\n innerSubscription.outerIndex = i;\n this.add(innerSubscription);\n }\n }\n }\n ForkJoinSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n this.values[outerIndex] = innerValue;\n if (!innerSub._hasValue) {\n innerSub._hasValue = true;\n this.haveValues++;\n }\n };\n ForkJoinSubscriber.prototype.notifyComplete = function (innerSub) {\n var destination = this.destination;\n var _a = this, haveValues = _a.haveValues, resultSelector = _a.resultSelector, values = _a.values;\n var len = values.length;\n if (!innerSub._hasValue) {\n destination.complete();\n return;\n }\n this.completed++;\n if (this.completed !== len) {\n return;\n }\n if (haveValues === len) {\n var value = resultSelector ? resultSelector.apply(this, values) : values;\n destination.next(value);\n }\n destination.complete();\n };\n return ForkJoinSubscriber;\n}(OuterSubscriber_1.OuterSubscriber));\n//# sourceMappingURL=ForkJoinObservable.js.map","\"use strict\";\nvar ForkJoinObservable_1 = require('./ForkJoinObservable');\nexports.forkJoin = ForkJoinObservable_1.ForkJoinObservable.create;\n//# sourceMappingURL=forkJoin.js.map","\"use strict\";\nvar Observable_1 = require('../../Observable');\nvar forkJoin_1 = require('../../observable/forkJoin');\nObservable_1.Observable.forkJoin = forkJoin_1.forkJoin;\n//# sourceMappingURL=forkJoin.js.map","\"use strict\";\nvar PromiseObservable_1 = require('./PromiseObservable');\nexports.fromPromise = PromiseObservable_1.PromiseObservable.create;\n//# sourceMappingURL=fromPromise.js.map","\"use strict\";\nvar Observable_1 = require('../../Observable');\nvar fromPromise_1 = require('../../observable/fromPromise');\nObservable_1.Observable.fromPromise = fromPromise_1.fromPromise;\n//# sourceMappingURL=fromPromise.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar OuterSubscriber_1 = require('../OuterSubscriber');\nvar subscribeToResult_1 = require('../util/subscribeToResult');\n/**\n * Catches errors on the observable to be handled by returning a new observable or throwing an error.\n *\n * <img src=\"./img/catch.png\" width=\"100%\">\n *\n * @example <caption>Continues with a different Observable when there's an error</caption>\n *\n * Observable.of(1, 2, 3, 4, 5)\n * .map(n => {\n * \t if (n == 4) {\n * \t throw 'four!';\n * }\n *\t return n;\n * })\n * .catch(err => Observable.of('I', 'II', 'III', 'IV', 'V'))\n * .subscribe(x => console.log(x));\n * // 1, 2, 3, I, II, III, IV, V\n *\n * @example <caption>Retries the caught source Observable again in case of error, similar to retry() operator</caption>\n *\n * Observable.of(1, 2, 3, 4, 5)\n * .map(n => {\n * \t if (n === 4) {\n * \t throw 'four!';\n * }\n * \t return n;\n * })\n * .catch((err, caught) => caught)\n * .take(30)\n * .subscribe(x => console.log(x));\n * // 1, 2, 3, 1, 2, 3, ...\n *\n * @example <caption>Throws a new error when the source Observable throws an error</caption>\n *\n * Observable.of(1, 2, 3, 4, 5)\n * .map(n => {\n * if (n == 4) {\n * throw 'four!';\n * }\n * return n;\n * })\n * .catch(err => {\n * throw 'error in source. Details: ' + err;\n * })\n * .subscribe(\n * x => console.log(x),\n * err => console.log(err)\n * );\n * // 1, 2, 3, error in source. Details: four!\n *\n * @param {function} selector a function that takes as arguments `err`, which is the error, and `caught`, which\n * is the source observable, in case you'd like to \"retry\" that observable by returning it again. Whatever observable\n * is returned by the `selector` will be used to continue the observable chain.\n * @return {Observable} An observable that originates from either the source or the observable returned by the\n * catch `selector` function.\n * @name catchError\n */\nfunction catchError(selector) {\n return function catchErrorOperatorFunction(source) {\n var operator = new CatchOperator(selector);\n var caught = source.lift(operator);\n return (operator.caught = caught);\n };\n}\nexports.catchError = catchError;\nvar CatchOperator = (function () {\n function CatchOperator(selector) {\n this.selector = selector;\n }\n CatchOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new CatchSubscriber(subscriber, this.selector, this.caught));\n };\n return CatchOperator;\n}());\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar CatchSubscriber = (function (_super) {\n __extends(CatchSubscriber, _super);\n function CatchSubscriber(destination, selector, caught) {\n _super.call(this, destination);\n this.selector = selector;\n this.caught = caught;\n }\n // NOTE: overriding `error` instead of `_error` because we don't want\n // to have this flag this subscriber as `isStopped`. We can mimic the\n // behavior of the RetrySubscriber (from the `retry` operator), where\n // we unsubscribe from our source chain, reset our Subscriber flags,\n // then subscribe to the selector result.\n CatchSubscriber.prototype.error = function (err) {\n if (!this.isStopped) {\n var result = void 0;\n try {\n result = this.selector(err, this.caught);\n }\n catch (err2) {\n _super.prototype.error.call(this, err2);\n return;\n }\n this._unsubscribeAndRecycle();\n this.add(subscribeToResult_1.subscribeToResult(this, result));\n }\n };\n return CatchSubscriber;\n}(OuterSubscriber_1.OuterSubscriber));\n//# sourceMappingURL=catchError.js.map","\"use strict\";\nvar catchError_1 = require('../operators/catchError');\n/**\n * Catches errors on the observable to be handled by returning a new observable or throwing an error.\n *\n * <img src=\"./img/catch.png\" width=\"100%\">\n *\n * @example <caption>Continues with a different Observable when there's an error</caption>\n *\n * Observable.of(1, 2, 3, 4, 5)\n * .map(n => {\n * \t if (n == 4) {\n * \t throw 'four!';\n * }\n *\t return n;\n * })\n * .catch(err => Observable.of('I', 'II', 'III', 'IV', 'V'))\n * .subscribe(x => console.log(x));\n * // 1, 2, 3, I, II, III, IV, V\n *\n * @example <caption>Retries the caught source Observable again in case of error, similar to retry() operator</caption>\n *\n * Observable.of(1, 2, 3, 4, 5)\n * .map(n => {\n * \t if (n === 4) {\n * \t throw 'four!';\n * }\n * \t return n;\n * })\n * .catch((err, caught) => caught)\n * .take(30)\n * .subscribe(x => console.log(x));\n * // 1, 2, 3, 1, 2, 3, ...\n *\n * @example <caption>Throws a new error when the source Observable throws an error</caption>\n *\n * Observable.of(1, 2, 3, 4, 5)\n * .map(n => {\n * if (n == 4) {\n * throw 'four!';\n * }\n * return n;\n * })\n * .catch(err => {\n * throw 'error in source. Details: ' + err;\n * })\n * .subscribe(\n * x => console.log(x),\n * err => console.log(err)\n * );\n * // 1, 2, 3, error in source. Details: four!\n *\n * @param {function} selector a function that takes as arguments `err`, which is the error, and `caught`, which\n * is the source observable, in case you'd like to \"retry\" that observable by returning it again. Whatever observable\n * is returned by the `selector` will be used to continue the observable chain.\n * @return {Observable} An observable that originates from either the source or the observable returned by the\n * catch `selector` function.\n * @method catch\n * @name catch\n * @owner Observable\n */\nfunction _catch(selector) {\n return catchError_1.catchError(selector)(this);\n}\nexports._catch = _catch;\n//# sourceMappingURL=catch.js.map","\"use strict\";\nvar Observable_1 = require('../../Observable');\nvar catch_1 = require('../../operator/catch');\nObservable_1.Observable.prototype.catch = catch_1._catch;\nObservable_1.Observable.prototype._catch = catch_1._catch;\n//# sourceMappingURL=catch.js.map","\"use strict\";\nvar mergeMap_1 = require('./mergeMap');\n/* tslint:enable:max-line-length */\n/**\n * Projects each source value to an Observable which is merged in the output\n * Observable, in a serialized fashion waiting for each one to complete before\n * merging the next.\n *\n * <span class=\"informal\">Maps each value to an Observable, then flattens all of\n * these inner Observables using {@link concatAll}.</span>\n *\n * <img src=\"./img/concatMap.png\" width=\"100%\">\n *\n * Returns an Observable that emits items based on applying a function that you\n * supply to each item emitted by the source Observable, where that function\n * returns an (so-called \"inner\") Observable. Each new inner Observable is\n * concatenated with the previous inner Observable.\n *\n * __Warning:__ if source values arrive endlessly and faster than their\n * corresponding inner Observables can complete, it will result in memory issues\n * as inner Observables amass in an unbounded buffer waiting for their turn to\n * be subscribed to.\n *\n * Note: `concatMap` is equivalent to `mergeMap` with concurrency parameter set\n * to `1`.\n *\n * @example <caption>For each click event, tick every second from 0 to 3, with no concurrency</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var result = clicks.concatMap(ev => Rx.Observable.interval(1000).take(4));\n * result.subscribe(x => console.log(x));\n *\n * // Results in the following:\n * // (results are not concurrent)\n * // For every click on the \"document\" it will emit values 0 to 3 spaced\n * // on a 1000ms interval\n * // one click = 1000ms-> 0 -1000ms-> 1 -1000ms-> 2 -1000ms-> 3\n *\n * @see {@link concat}\n * @see {@link concatAll}\n * @see {@link concatMapTo}\n * @see {@link exhaustMap}\n * @see {@link mergeMap}\n * @see {@link switchMap}\n *\n * @param {function(value: T, ?index: number): ObservableInput} project A function\n * that, when applied to an item emitted by the source Observable, returns an\n * Observable.\n * @param {function(outerValue: T, innerValue: I, outerIndex: number, innerIndex: number): any} [resultSelector]\n * A function to produce the value on the output Observable based on the values\n * and the indices of the source (outer) emission and the inner Observable\n * emission. The arguments passed to this function are:\n * - `outerValue`: the value that came from the source\n * - `innerValue`: the value that came from the projected Observable\n * - `outerIndex`: the \"index\" of the value that came from the source\n * - `innerIndex`: the \"index\" of the value from the projected Observable\n * @return {Observable} An Observable that emits the result of applying the\n * projection function (and the optional `resultSelector`) to each item emitted\n * by the source Observable and taking values from each projected inner\n * Observable sequentially.\n * @method concatMap\n * @owner Observable\n */\nfunction concatMap(project, resultSelector) {\n return mergeMap_1.mergeMap(project, resultSelector, 1);\n}\nexports.concatMap = concatMap;\n//# sourceMappingURL=concatMap.js.map","\"use strict\";\nvar concatMap_1 = require('../operators/concatMap');\n/* tslint:enable:max-line-length */\n/**\n * Projects each source value to an Observable which is merged in the output\n * Observable, in a serialized fashion waiting for each one to complete before\n * merging the next.\n *\n * <span class=\"informal\">Maps each value to an Observable, then flattens all of\n * these inner Observables using {@link concatAll}.</span>\n *\n * <img src=\"./img/concatMap.png\" width=\"100%\">\n *\n * Returns an Observable that emits items based on applying a function that you\n * supply to each item emitted by the source Observable, where that function\n * returns an (so-called \"inner\") Observable. Each new inner Observable is\n * concatenated with the previous inner Observable.\n *\n * __Warning:__ if source values arrive endlessly and faster than their\n * corresponding inner Observables can complete, it will result in memory issues\n * as inner Observables amass in an unbounded buffer waiting for their turn to\n * be subscribed to.\n *\n * Note: `concatMap` is equivalent to `mergeMap` with concurrency parameter set\n * to `1`.\n *\n * @example <caption>For each click event, tick every second from 0 to 3, with no concurrency</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var result = clicks.concatMap(ev => Rx.Observable.interval(1000).take(4));\n * result.subscribe(x => console.log(x));\n *\n * // Results in the following:\n * // (results are not concurrent)\n * // For every click on the \"document\" it will emit values 0 to 3 spaced\n * // on a 1000ms interval\n * // one click = 1000ms-> 0 -1000ms-> 1 -1000ms-> 2 -1000ms-> 3\n *\n * @see {@link concat}\n * @see {@link concatAll}\n * @see {@link concatMapTo}\n * @see {@link exhaustMap}\n * @see {@link mergeMap}\n * @see {@link switchMap}\n *\n * @param {function(value: T, ?index: number): ObservableInput} project A function\n * that, when applied to an item emitted by the source Observable, returns an\n * Observable.\n * @param {function(outerValue: T, innerValue: I, outerIndex: number, innerIndex: number): any} [resultSelector]\n * A function to produce the value on the output Observable based on the values\n * and the indices of the source (outer) emission and the inner Observable\n * emission. The arguments passed to this function are:\n * - `outerValue`: the value that came from the source\n * - `innerValue`: the value that came from the projected Observable\n * - `outerIndex`: the \"index\" of the value that came from the source\n * - `innerIndex`: the \"index\" of the value from the projected Observable\n * @return {Observable} An Observable that emits the result of applying the\n * projection function (and the optional `resultSelector`) to each item emitted\n * by the source Observable and taking values from each projected inner\n * Observable sequentially.\n * @method concatMap\n * @owner Observable\n */\nfunction concatMap(project, resultSelector) {\n return concatMap_1.concatMap(project, resultSelector)(this);\n}\nexports.concatMap = concatMap;\n//# sourceMappingURL=concatMap.js.map","\"use strict\";\nvar Observable_1 = require('../../Observable');\nvar concatMap_1 = require('../../operator/concatMap');\nObservable_1.Observable.prototype.concatMap = concatMap_1.concatMap;\n//# sourceMappingURL=concatMap.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar Subscription_1 = require('../Subscription');\n/**\n * A unit of work to be executed in a {@link Scheduler}. An action is typically\n * created from within a Scheduler and an RxJS user does not need to concern\n * themselves about creating and manipulating an Action.\n *\n * ```ts\n * class Action<T> extends Subscription {\n * new (scheduler: Scheduler, work: (state?: T) => void);\n * schedule(state?: T, delay: number = 0): Subscription;\n * }\n * ```\n *\n * @class Action<T>\n */\nvar Action = (function (_super) {\n __extends(Action, _super);\n function Action(scheduler, work) {\n _super.call(this);\n }\n /**\n * Schedules this action on its parent Scheduler for execution. May be passed\n * some context object, `state`. May happen at some point in the future,\n * according to the `delay` parameter, if specified.\n * @param {T} [state] Some contextual data that the `work` function uses when\n * called by the Scheduler.\n * @param {number} [delay] Time to wait before executing the work, where the\n * time unit is implicit and defined by the Scheduler.\n * @return {void}\n */\n Action.prototype.schedule = function (state, delay) {\n if (delay === void 0) { delay = 0; }\n return this;\n };\n return Action;\n}(Subscription_1.Subscription));\nexports.Action = Action;\n//# sourceMappingURL=Action.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar root_1 = require('../util/root');\nvar Action_1 = require('./Action');\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar AsyncAction = (function (_super) {\n __extends(AsyncAction, _super);\n function AsyncAction(scheduler, work) {\n _super.call(this, scheduler, work);\n this.scheduler = scheduler;\n this.work = work;\n this.pending = false;\n }\n AsyncAction.prototype.schedule = function (state, delay) {\n if (delay === void 0) { delay = 0; }\n if (this.closed) {\n return this;\n }\n // Always replace the current state with the new state.\n this.state = state;\n // Set the pending flag indicating that this action has been scheduled, or\n // has recursively rescheduled itself.\n this.pending = true;\n var id = this.id;\n var scheduler = this.scheduler;\n //\n // Important implementation note:\n //\n // Actions only execute once by default, unless rescheduled from within the\n // scheduled callback. This allows us to implement single and repeat\n // actions via the same code path, without adding API surface area, as well\n // as mimic traditional recursion but across asynchronous boundaries.\n //\n // However, JS runtimes and timers distinguish between intervals achieved by\n // serial `setTimeout` calls vs. a single `setInterval` call. An interval of\n // serial `setTimeout` calls can be individually delayed, which delays\n // scheduling the next `setTimeout`, and so on. `setInterval` attempts to\n // guarantee the interval callback will be invoked more precisely to the\n // interval period, regardless of load.\n //\n // Therefore, we use `setInterval` to schedule single and repeat actions.\n // If the action reschedules itself with the same delay, the interval is not\n // canceled. If the action doesn't reschedule, or reschedules with a\n // different delay, the interval will be canceled after scheduled callback\n // execution.\n //\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, delay);\n }\n this.delay = delay;\n // If this action has already an async Id, don't request a new one.\n this.id = this.id || this.requestAsyncId(scheduler, this.id, delay);\n return this;\n };\n AsyncAction.prototype.requestAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) { delay = 0; }\n return root_1.root.setInterval(scheduler.flush.bind(scheduler, this), delay);\n };\n AsyncAction.prototype.recycleAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) { delay = 0; }\n // If this action is rescheduled with the same delay time, don't clear the interval id.\n if (delay !== null && this.delay === delay && this.pending === false) {\n return id;\n }\n // Otherwise, if the action's delay time is different from the current delay,\n // or the action has been rescheduled before it's executed, clear the interval id\n return root_1.root.clearInterval(id) && undefined || undefined;\n };\n /**\n * Immediately executes this action and the `work` it contains.\n * @return {any}\n */\n AsyncAction.prototype.execute = function (state, delay) {\n if (this.closed) {\n return new Error('executing a cancelled action');\n }\n this.pending = false;\n var error = this._execute(state, delay);\n if (error) {\n return error;\n }\n else if (this.pending === false && this.id != null) {\n // Dequeue if the action didn't reschedule itself. Don't call\n // unsubscribe(), because the action could reschedule later.\n // For example:\n // ```\n // scheduler.schedule(function doWork(counter) {\n // /* ... I'm a busy worker bee ... */\n // var originalAction = this;\n // /* wait 100ms before rescheduling the action */\n // setTimeout(function () {\n // originalAction.schedule(counter + 1);\n // }, 100);\n // }, 1000);\n // ```\n this.id = this.recycleAsyncId(this.scheduler, this.id, null);\n }\n };\n AsyncAction.prototype._execute = function (state, delay) {\n var errored = false;\n var errorValue = undefined;\n try {\n this.work(state);\n }\n catch (e) {\n errored = true;\n errorValue = !!e && e || new Error(e);\n }\n if (errored) {\n this.unsubscribe();\n return errorValue;\n }\n };\n AsyncAction.prototype._unsubscribe = function () {\n var id = this.id;\n var scheduler = this.scheduler;\n var actions = scheduler.actions;\n var index = actions.indexOf(this);\n this.work = null;\n this.state = null;\n this.pending = false;\n this.scheduler = null;\n if (index !== -1) {\n actions.splice(index, 1);\n }\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, null);\n }\n this.delay = null;\n };\n return AsyncAction;\n}(Action_1.Action));\nexports.AsyncAction = AsyncAction;\n//# sourceMappingURL=AsyncAction.js.map","\"use strict\";\n/**\n * An execution context and a data structure to order tasks and schedule their\n * execution. Provides a notion of (potentially virtual) time, through the\n * `now()` getter method.\n *\n * Each unit of work in a Scheduler is called an {@link Action}.\n *\n * ```ts\n * class Scheduler {\n * now(): number;\n * schedule(work, delay?, state?): Subscription;\n * }\n * ```\n *\n * @class Scheduler\n */\nvar Scheduler = (function () {\n function Scheduler(SchedulerAction, now) {\n if (now === void 0) { now = Scheduler.now; }\n this.SchedulerAction = SchedulerAction;\n this.now = now;\n }\n /**\n * Schedules a function, `work`, for execution. May happen at some point in\n * the future, according to the `delay` parameter, if specified. May be passed\n * some context object, `state`, which will be passed to the `work` function.\n *\n * The given arguments will be processed an stored as an Action object in a\n * queue of actions.\n *\n * @param {function(state: ?T): ?Subscription} work A function representing a\n * task, or some unit of work to be executed by the Scheduler.\n * @param {number} [delay] Time to wait before executing the work, where the\n * time unit is implicit and defined by the Scheduler itself.\n * @param {T} [state] Some contextual data that the `work` function uses when\n * called by the Scheduler.\n * @return {Subscription} A subscription in order to be able to unsubscribe\n * the scheduled work.\n */\n Scheduler.prototype.schedule = function (work, delay, state) {\n if (delay === void 0) { delay = 0; }\n return new this.SchedulerAction(this, work).schedule(state, delay);\n };\n Scheduler.now = Date.now ? Date.now : function () { return +new Date(); };\n return Scheduler;\n}());\nexports.Scheduler = Scheduler;\n//# sourceMappingURL=Scheduler.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar Scheduler_1 = require('../Scheduler');\nvar AsyncScheduler = (function (_super) {\n __extends(AsyncScheduler, _super);\n function AsyncScheduler() {\n _super.apply(this, arguments);\n this.actions = [];\n /**\n * A flag to indicate whether the Scheduler is currently executing a batch of\n * queued actions.\n * @type {boolean}\n */\n this.active = false;\n /**\n * An internal ID used to track the latest asynchronous task such as those\n * coming from `setTimeout`, `setInterval`, `requestAnimationFrame`, and\n * others.\n * @type {any}\n */\n this.scheduled = undefined;\n }\n AsyncScheduler.prototype.flush = function (action) {\n var actions = this.actions;\n if (this.active) {\n actions.push(action);\n return;\n }\n var error;\n this.active = true;\n do {\n if (error = action.execute(action.state, action.delay)) {\n break;\n }\n } while (action = actions.shift()); // exhaust the scheduler queue\n this.active = false;\n if (error) {\n while (action = actions.shift()) {\n action.unsubscribe();\n }\n throw error;\n }\n };\n return AsyncScheduler;\n}(Scheduler_1.Scheduler));\nexports.AsyncScheduler = AsyncScheduler;\n//# sourceMappingURL=AsyncScheduler.js.map","\"use strict\";\nvar AsyncAction_1 = require('./AsyncAction');\nvar AsyncScheduler_1 = require('./AsyncScheduler');\n/**\n *\n * Async Scheduler\n *\n * <span class=\"informal\">Schedule task as if you used setTimeout(task, duration)</span>\n *\n * `async` scheduler schedules tasks asynchronously, by putting them on the JavaScript\n * event loop queue. It is best used to delay tasks in time or to schedule tasks repeating\n * in intervals.\n *\n * If you just want to \"defer\" task, that is to perform it right after currently\n * executing synchronous code ends (commonly achieved by `setTimeout(deferredTask, 0)`),\n * better choice will be the {@link asap} scheduler.\n *\n * @example <caption>Use async scheduler to delay task</caption>\n * const task = () => console.log('it works!');\n *\n * Rx.Scheduler.async.schedule(task, 2000);\n *\n * // After 2 seconds logs:\n * // \"it works!\"\n *\n *\n * @example <caption>Use async scheduler to repeat task in intervals</caption>\n * function task(state) {\n * console.log(state);\n * this.schedule(state + 1, 1000); // `this` references currently executing Action,\n * // which we reschedule with new state and delay\n * }\n *\n * Rx.Scheduler.async.schedule(task, 3000, 0);\n *\n * // Logs:\n * // 0 after 3s\n * // 1 after 4s\n * // 2 after 5s\n * // 3 after 6s\n *\n * @static true\n * @name async\n * @owner Scheduler\n */\nexports.async = new AsyncScheduler_1.AsyncScheduler(AsyncAction_1.AsyncAction);\n//# sourceMappingURL=async.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar Subscriber_1 = require('../Subscriber');\nvar async_1 = require('../scheduler/async');\n/**\n * Emits a value from the source Observable only after a particular time span\n * has passed without another source emission.\n *\n * <span class=\"informal\">It's like {@link delay}, but passes only the most\n * recent value from each burst of emissions.</span>\n *\n * <img src=\"./img/debounceTime.png\" width=\"100%\">\n *\n * `debounceTime` delays values emitted by the source Observable, but drops\n * previous pending delayed emissions if a new value arrives on the source\n * Observable. This operator keeps track of the most recent value from the\n * source Observable, and emits that only when `dueTime` enough time has passed\n * without any other value appearing on the source Observable. If a new value\n * appears before `dueTime` silence occurs, the previous value will be dropped\n * and will not be emitted on the output Observable.\n *\n * This is a rate-limiting operator, because it is impossible for more than one\n * value to be emitted in any time window of duration `dueTime`, but it is also\n * a delay-like operator since output emissions do not occur at the same time as\n * they did on the source Observable. Optionally takes a {@link IScheduler} for\n * managing timers.\n *\n * @example <caption>Emit the most recent click after a burst of clicks</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var result = clicks.debounceTime(1000);\n * result.subscribe(x => console.log(x));\n *\n * @see {@link auditTime}\n * @see {@link debounce}\n * @see {@link delay}\n * @see {@link sampleTime}\n * @see {@link throttleTime}\n *\n * @param {number} dueTime The timeout duration in milliseconds (or the time\n * unit determined internally by the optional `scheduler`) for the window of\n * time required to wait for emission silence before emitting the most recent\n * source value.\n * @param {Scheduler} [scheduler=async] The {@link IScheduler} to use for\n * managing the timers that handle the timeout for each value.\n * @return {Observable} An Observable that delays the emissions of the source\n * Observable by the specified `dueTime`, and may drop some values if they occur\n * too frequently.\n * @method debounceTime\n * @owner Observable\n */\nfunction debounceTime(dueTime, scheduler) {\n if (scheduler === void 0) { scheduler = async_1.async; }\n return function (source) { return source.lift(new DebounceTimeOperator(dueTime, scheduler)); };\n}\nexports.debounceTime = debounceTime;\nvar DebounceTimeOperator = (function () {\n function DebounceTimeOperator(dueTime, scheduler) {\n this.dueTime = dueTime;\n this.scheduler = scheduler;\n }\n DebounceTimeOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new DebounceTimeSubscriber(subscriber, this.dueTime, this.scheduler));\n };\n return DebounceTimeOperator;\n}());\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar DebounceTimeSubscriber = (function (_super) {\n __extends(DebounceTimeSubscriber, _super);\n function DebounceTimeSubscriber(destination, dueTime, scheduler) {\n _super.call(this, destination);\n this.dueTime = dueTime;\n this.scheduler = scheduler;\n this.debouncedSubscription = null;\n this.lastValue = null;\n this.hasValue = false;\n }\n DebounceTimeSubscriber.prototype._next = function (value) {\n this.clearDebounce();\n this.lastValue = value;\n this.hasValue = true;\n this.add(this.debouncedSubscription = this.scheduler.schedule(dispatchNext, this.dueTime, this));\n };\n DebounceTimeSubscriber.prototype._complete = function () {\n this.debouncedNext();\n this.destination.complete();\n };\n DebounceTimeSubscriber.prototype.debouncedNext = function () {\n this.clearDebounce();\n if (this.hasValue) {\n this.destination.next(this.lastValue);\n this.lastValue = null;\n this.hasValue = false;\n }\n };\n DebounceTimeSubscriber.prototype.clearDebounce = function () {\n var debouncedSubscription = this.debouncedSubscription;\n if (debouncedSubscription !== null) {\n this.remove(debouncedSubscription);\n debouncedSubscription.unsubscribe();\n this.debouncedSubscription = null;\n }\n };\n return DebounceTimeSubscriber;\n}(Subscriber_1.Subscriber));\nfunction dispatchNext(subscriber) {\n subscriber.debouncedNext();\n}\n//# sourceMappingURL=debounceTime.js.map","\"use strict\";\nvar async_1 = require('../scheduler/async');\nvar debounceTime_1 = require('../operators/debounceTime');\n/**\n * Emits a value from the source Observable only after a particular time span\n * has passed without another source emission.\n *\n * <span class=\"informal\">It's like {@link delay}, but passes only the most\n * recent value from each burst of emissions.</span>\n *\n * <img src=\"./img/debounceTime.png\" width=\"100%\">\n *\n * `debounceTime` delays values emitted by the source Observable, but drops\n * previous pending delayed emissions if a new value arrives on the source\n * Observable. This operator keeps track of the most recent value from the\n * source Observable, and emits that only when `dueTime` enough time has passed\n * without any other value appearing on the source Observable. If a new value\n * appears before `dueTime` silence occurs, the previous value will be dropped\n * and will not be emitted on the output Observable.\n *\n * This is a rate-limiting operator, because it is impossible for more than one\n * value to be emitted in any time window of duration `dueTime`, but it is also\n * a delay-like operator since output emissions do not occur at the same time as\n * they did on the source Observable. Optionally takes a {@link IScheduler} for\n * managing timers.\n *\n * @example <caption>Emit the most recent click after a burst of clicks</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var result = clicks.debounceTime(1000);\n * result.subscribe(x => console.log(x));\n *\n * @see {@link auditTime}\n * @see {@link debounce}\n * @see {@link delay}\n * @see {@link sampleTime}\n * @see {@link throttleTime}\n *\n * @param {number} dueTime The timeout duration in milliseconds (or the time\n * unit determined internally by the optional `scheduler`) for the window of\n * time required to wait for emission silence before emitting the most recent\n * source value.\n * @param {Scheduler} [scheduler=async] The {@link IScheduler} to use for\n * managing the timers that handle the timeout for each value.\n * @return {Observable} An Observable that delays the emissions of the source\n * Observable by the specified `dueTime`, and may drop some values if they occur\n * too frequently.\n * @method debounceTime\n * @owner Observable\n */\nfunction debounceTime(dueTime, scheduler) {\n if (scheduler === void 0) { scheduler = async_1.async; }\n return debounceTime_1.debounceTime(dueTime, scheduler)(this);\n}\nexports.debounceTime = debounceTime;\n//# sourceMappingURL=debounceTime.js.map","\"use strict\";\nvar Observable_1 = require('../../Observable');\nvar debounceTime_1 = require('../../operator/debounceTime');\nObservable_1.Observable.prototype.debounceTime = debounceTime_1.debounceTime;\n//# sourceMappingURL=debounceTime.js.map","\"use strict\";\nvar Observable_1 = require('../../Observable');\nvar filter_1 = require('../../operator/filter');\nObservable_1.Observable.prototype.filter = filter_1.filter;\n//# sourceMappingURL=filter.js.map","\"use strict\";\nvar Observable_1 = require('../../Observable');\nvar map_1 = require('../../operator/map');\nObservable_1.Observable.prototype.map = map_1.map;\n//# sourceMappingURL=map.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar Subscriber_1 = require('../Subscriber');\n/**\n * Emits the given constant value on the output Observable every time the source\n * Observable emits a value.\n *\n * <span class=\"informal\">Like {@link map}, but it maps every source value to\n * the same output value every time.</span>\n *\n * <img src=\"./img/mapTo.png\" width=\"100%\">\n *\n * Takes a constant `value` as argument, and emits that whenever the source\n * Observable emits a value. In other words, ignores the actual source value,\n * and simply uses the emission moment to know when to emit the given `value`.\n *\n * @example <caption>Map every click to the string 'Hi'</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var greetings = clicks.mapTo('Hi');\n * greetings.subscribe(x => console.log(x));\n *\n * @see {@link map}\n *\n * @param {any} value The value to map each source value to.\n * @return {Observable} An Observable that emits the given `value` every time\n * the source Observable emits something.\n * @method mapTo\n * @owner Observable\n */\nfunction mapTo(value) {\n return function (source) { return source.lift(new MapToOperator(value)); };\n}\nexports.mapTo = mapTo;\nvar MapToOperator = (function () {\n function MapToOperator(value) {\n this.value = value;\n }\n MapToOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new MapToSubscriber(subscriber, this.value));\n };\n return MapToOperator;\n}());\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar MapToSubscriber = (function (_super) {\n __extends(MapToSubscriber, _super);\n function MapToSubscriber(destination, value) {\n _super.call(this, destination);\n this.value = value;\n }\n MapToSubscriber.prototype._next = function (x) {\n this.destination.next(this.value);\n };\n return MapToSubscriber;\n}(Subscriber_1.Subscriber));\n//# sourceMappingURL=mapTo.js.map","\"use strict\";\nvar mapTo_1 = require('../operators/mapTo');\n/**\n * Emits the given constant value on the output Observable every time the source\n * Observable emits a value.\n *\n * <span class=\"informal\">Like {@link map}, but it maps every source value to\n * the same output value every time.</span>\n *\n * <img src=\"./img/mapTo.png\" width=\"100%\">\n *\n * Takes a constant `value` as argument, and emits that whenever the source\n * Observable emits a value. In other words, ignores the actual source value,\n * and simply uses the emission moment to know when to emit the given `value`.\n *\n * @example <caption>Map every click to the string 'Hi'</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var greetings = clicks.mapTo('Hi');\n * greetings.subscribe(x => console.log(x));\n *\n * @see {@link map}\n *\n * @param {any} value The value to map each source value to.\n * @return {Observable} An Observable that emits the given `value` every time\n * the source Observable emits something.\n * @method mapTo\n * @owner Observable\n */\nfunction mapTo(value) {\n return mapTo_1.mapTo(value)(this);\n}\nexports.mapTo = mapTo;\n//# sourceMappingURL=mapTo.js.map","\"use strict\";\nvar Observable_1 = require('../../Observable');\nvar mapTo_1 = require('../../operator/mapTo');\nObservable_1.Observable.prototype.mapTo = mapTo_1.mapTo;\n//# sourceMappingURL=mapTo.js.map","import * as Actions from 'kayenta/actions';\nimport * as Creators from 'kayenta/actions/creators';\nimport { ICanaryConfigUpdateResponse, KayentaAccountType } from 'kayenta/domain';\nimport { ICanaryState } from 'kayenta/reducers';\nimport { runSelector } from 'kayenta/selectors';\nimport {\n createCanaryConfig,\n deleteCanaryConfig,\n getCanaryConfigById,\n listKayentaAccounts,\n mapStateToConfig,\n updateCanaryConfig,\n} from 'kayenta/service/canaryConfig.service';\nimport { listMetricsServiceMetadata } from 'kayenta/service/metricsServiceMetadata.service';\nimport { Action, MiddlewareAPI } from 'redux';\nimport { combineEpics, createEpicMiddleware, EpicMiddleware } from 'redux-observable';\nimport { Observable } from 'rxjs/Observable';\nimport 'rxjs/add/observable/concat';\nimport 'rxjs/add/observable/forkJoin';\nimport 'rxjs/add/observable/fromPromise';\nimport 'rxjs/add/operator/catch';\nimport 'rxjs/add/operator/concatMap';\nimport 'rxjs/add/operator/debounceTime';\nimport 'rxjs/add/operator/filter';\nimport 'rxjs/add/operator/map';\nimport 'rxjs/add/operator/mapTo';\n\nimport { ReactInjector } from '@spinnaker/core';\n\nimport { getCanaryRun, getMetricSetPair } from '../service/canaryRun.service';\n\nconst typeMatches = (...actions: string[]) => (action: Action & any) => actions.includes(action.type);\n\nconst loadConfigEpic = (action$: Observable<Action & any>) =>\n action$.filter(typeMatches(Actions.LOAD_CONFIG_REQUEST, Actions.SAVE_CONFIG_SUCCESS)).concatMap((action) =>\n Observable.fromPromise(getCanaryConfigById(action.payload.id))\n .map((config) => Creators.loadConfigSuccess({ config }))\n .catch((error) => Observable.of(Creators.loadConfigFailure({ error }))),\n );\n\nconst selectConfigEpic = (action$: Observable<Action & any>) =>\n action$\n .filter(typeMatches(Actions.LOAD_CONFIG_SUCCESS))\n .map((action) => Creators.selectConfig({ config: action.payload.config }));\n\nconst saveConfigEpic = (action$: Observable<Action & any>, store: MiddlewareAPI<ICanaryState>) =>\n action$.filter(typeMatches(Actions.SAVE_CONFIG_REQUEST)).concatMap(() => {\n const config = mapStateToConfig(store.getState());\n let saveAction: PromiseLike<ICanaryConfigUpdateResponse>;\n if (config.isNew) {\n delete config.isNew;\n saveAction = createCanaryConfig(config);\n } else {\n saveAction = updateCanaryConfig(config);\n }\n\n return Observable.fromPromise(saveAction)\n .concatMap(({ canaryConfigId }) =>\n Observable.forkJoin(\n ReactInjector.$state.go('^.configDetail', { id: canaryConfigId, copy: false, new: false }),\n store.getState().data.application.getDataSource('canaryConfigs').refresh(true),\n ).mapTo(Creators.saveConfigSuccess({ id: canaryConfigId })),\n )\n .catch((error: Error) => Observable.of(Creators.saveConfigFailure({ error })));\n });\n\nconst deleteConfigRequestEpic = (action$: Observable<Action & any>, store: MiddlewareAPI<ICanaryState>) =>\n action$.filter(typeMatches(Actions.DELETE_CONFIG_REQUEST)).concatMap(() =>\n Observable.fromPromise(deleteCanaryConfig(store.getState().selectedConfig.config.id))\n .mapTo(Creators.deleteConfigSuccess())\n .catch((error: Error) => Observable.of(Creators.deleteConfigFailure({ error }))),\n );\n\nconst deleteConfigSuccessEpic = (action$: Observable<Action & any>, store: MiddlewareAPI<ICanaryState>) =>\n action$\n .filter(typeMatches(Actions.DELETE_CONFIG_SUCCESS))\n .concatMap(() =>\n Observable.forkJoin(\n ReactInjector.$state.go('^.configDefault'),\n // TODO: handle config summary load failure (in general, not just here).\n store.getState().data.application.getDataSource('canaryConfigs').refresh(true),\n ),\n )\n .mapTo(Creators.closeDeleteConfigModal());\n\nconst loadCanaryRunRequestEpic = (action$: Observable<Action & any>) =>\n action$.filter(typeMatches(Actions.LOAD_RUN_REQUEST)).concatMap((action) =>\n Observable.fromPromise(getCanaryRun(action.payload.configId, action.payload.runId))\n .map((run) => Creators.loadRunSuccess({ run }))\n .catch((error: Error) => Observable.of(Creators.loadRunFailure({ error }))),\n );\n\nconst loadMetricSetPairEpic = (action$: Observable<Action & any>, store: MiddlewareAPI<ICanaryState>) =>\n action$.filter(typeMatches(Actions.LOAD_METRIC_SET_PAIR_REQUEST)).concatMap((action) => {\n const run = runSelector(store.getState());\n return Observable.fromPromise(getMetricSetPair(run.metricSetPairListId, action.payload.pairId))\n .map((metricSetPair) => Creators.loadMetricSetPairSuccess({ metricSetPair }))\n .catch((error: Error) => Observable.of(Creators.loadMetricSetPairFailure({ error })));\n });\n\nconst updatePrometheusMetricDescriptionFilterEpic = (action$: Observable<Action & any>) =>\n action$\n .filter(typeMatches(Actions.UPDATE_PROMETHEUS_METRIC_DESCRIPTOR_FILTER))\n .filter((action) => action.payload.filter && action.payload.filter.length > 2)\n .debounceTime(200 /* milliseconds */)\n .map((action) => {\n return Creators.loadMetricsServiceMetadataRequest({\n filter: action.payload.filter,\n metricsAccountName: action.payload.metricsAccountName,\n });\n });\n\nconst updateStackdriverMetricDescriptionFilterEpic = (\n action$: Observable<Action & any>,\n store: MiddlewareAPI<ICanaryState>,\n) =>\n action$\n .filter(typeMatches(Actions.UPDATE_STACKDRIVER_METRIC_DESCRIPTOR_FILTER))\n .filter((action) => action.payload.filter && action.payload.filter.length > 2)\n .debounceTime(200 /* milliseconds */)\n .map((action) => {\n const [metricsAccountName] = store\n .getState()\n .data.kayentaAccounts.data.filter(\n (account) =>\n account.supportedTypes.includes(KayentaAccountType.MetricsStore) &&\n account.metricsStoreType === 'stackdriver',\n )\n .map((account) => account.name);\n\n return Creators.loadMetricsServiceMetadataRequest({\n filter: action.payload.filter,\n metricsAccountName,\n });\n });\n\nconst updateGraphiteMetricDescriptionFilterEpic = (\n action$: Observable<Action & any>,\n store: MiddlewareAPI<ICanaryState>,\n) =>\n action$\n .filter(typeMatches(Actions.UPDATE_GRAPHITE_METRIC_DESCRIPTOR_FILTER))\n .filter((action) => action.payload.filter && action.payload.filter.length > 2)\n .debounceTime(200 /* milliseconds */)\n .map((action) => {\n const [metricsAccountName] = store\n .getState()\n .data.kayentaAccounts.data.filter(\n (account) => account.supportedTypes.includes(KayentaAccountType.MetricsStore) && account.type === 'graphite',\n )\n .map((account) => account.name);\n\n return Creators.loadMetricsServiceMetadataRequest({\n filter: action.payload.filter,\n metricsAccountName,\n });\n });\n\nconst updateDatadogMetricDescriptionFilterEpic = (\n action$: Observable<Action & any>,\n store: MiddlewareAPI<ICanaryState>,\n) =>\n action$\n .filter(typeMatches(Actions.UPDATE_DATADOG_METRIC_DESCRIPTOR_FILTER))\n .filter((action) => action.payload.filter && action.payload.filter.length > 2)\n .debounceTime(200 /* milliseconds */)\n .map((action) => {\n const [metricsAccountName] = store\n .getState()\n .data.kayentaAccounts.data.filter(\n (account) => account.supportedTypes.includes(KayentaAccountType.MetricsStore) && account.type === 'datadog',\n )\n .map((account) => account.name);\n\n return Creators.loadMetricsServiceMetadataRequest({\n filter: action.payload.filter,\n metricsAccountName,\n });\n });\n\nconst loadMetricsServiceMetadataEpic = (action$: Observable<Action & any>) =>\n action$.filter(typeMatches(Actions.LOAD_METRICS_SERVICE_METADATA_REQUEST)).concatMap((action) => {\n return Observable.fromPromise(listMetricsServiceMetadata(action.payload.filter, action.payload.metricsAccountName))\n .map((data) => Creators.loadMetricsServiceMetadataSuccess({ data }))\n .catch((error: Error) => Observable.of(Creators.loadMetricsServiceMetadataFailure({ error })));\n });\n\nconst loadKayentaAccountsEpic = (action$: Observable<Action & any>) =>\n action$.filter(typeMatches(Actions.LOAD_KAYENTA_ACCOUNTS_REQUEST, Actions.INITIALIZE)).concatMap(() =>\n Observable.fromPromise(listKayentaAccounts())\n .map((accounts) => Creators.loadKayentaAccountsSuccess({ accounts }))\n .catch((error: Error) => Observable.of(Creators.loadKayentaAccountsFailure({ error }))),\n );\n\nconst rootEpic = combineEpics(\n loadConfigEpic,\n selectConfigEpic,\n saveConfigEpic,\n deleteConfigRequestEpic,\n deleteConfigSuccessEpic,\n loadCanaryRunRequestEpic,\n loadMetricSetPairEpic,\n updateGraphiteMetricDescriptionFilterEpic,\n updatePrometheusMetricDescriptionFilterEpic,\n updateStackdriverMetricDescriptionFilterEpic,\n updateDatadogMetricDescriptionFilterEpic,\n loadMetricsServiceMetadataEpic,\n loadKayentaAccountsEpic,\n);\n\nexport const epicMiddleware: EpicMiddleware<Action & any, ICanaryState> = createEpicMiddleware(rootEpic);\n","import { IMetricsServiceMetadata } from 'kayenta/domain/IMetricsServiceMetadata';\n\nimport { REST } from '@spinnaker/core';\n\nexport const listMetricsServiceMetadata = (\n filter?: string,\n metricsAccountName?: string,\n): PromiseLike<IMetricsServiceMetadata[]> =>\n REST('/v2/canaries/metadata/metricsService').query({ filter, metricsAccountName }).get();\n","import * as Creators from 'kayenta/actions/creators';\nimport { DISABLE_EDIT_CONFIG, DisableableInput, DisableableReactSelect } from 'kayenta/layout/disableable';\nimport FormRow from 'kayenta/layout/formRow';\nimport { ICanaryState } from 'kayenta/reducers';\nimport * as React from 'react';\nimport { connect } from 'react-redux';\nimport { Option } from 'react-select';\nimport { Action } from 'redux';\n\ninterface IJudgeSelectStateProps {\n judgeOptions: Option[];\n selectedJudge: string;\n renderState: JudgeSelectRenderState;\n}\n\ninterface IJudgeSelectDispatchProps {\n handleJudgeSelect: (option: Option) => void;\n}\n\nexport enum JudgeSelectRenderState {\n Multiple,\n Single,\n None,\n}\n\n/*\n * Select field for picking canary judge.\n */\nfunction JudgeSelect({\n judgeOptions,\n selectedJudge,\n handleJudgeSelect,\n renderState,\n}: IJudgeSelectStateProps & IJudgeSelectDispatchProps) {\n switch (renderState) {\n case JudgeSelectRenderState.Multiple:\n return (\n <FormRow>\n <DisableableReactSelect\n value={selectedJudge}\n options={judgeOptions}\n clearable={false}\n onChange={handleJudgeSelect}\n disabledStateKeys={[DISABLE_EDIT_CONFIG]}\n />\n </FormRow>\n );\n case JudgeSelectRenderState.Single:\n return (\n <FormRow>\n <DisableableInput\n type=\"text\"\n value={selectedJudge}\n disabled={true}\n disabledStateKeys={[DISABLE_EDIT_CONFIG]}\n />\n </FormRow>\n );\n case JudgeSelectRenderState.None:\n return null;\n }\n}\n\nfunction mapStateToProps(state: ICanaryState): IJudgeSelectStateProps {\n return {\n judgeOptions: (state.data.judges || []).map((judge) => ({ value: judge.name, label: judge.name })),\n selectedJudge: state.selectedConfig.judge.judgeConfig.name,\n renderState: state.selectedConfig.judge.renderState,\n };\n}\n\nfunction mapDispatchToProps(dispatch: (action: Action & any) => void): IJudgeSelectDispatchProps {\n return {\n handleJudgeSelect: (option: Option) => {\n dispatch(Creators.selectJudgeName({ judge: { name: option.value as string } }));\n },\n };\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(JudgeSelect);\n","ace.define(\"ace/ext/searchbox\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/lib/lang\",\"ace/lib/event\",\"ace/keyboard/hash_handler\",\"ace/lib/keys\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar dom = acequire(\"../lib/dom\");\nvar lang = acequire(\"../lib/lang\");\nvar event = acequire(\"../lib/event\");\nvar searchboxCss = \"\\\n.ace_search {\\\nbackground-color: #ddd;\\\ncolor: #666;\\\nborder: 1px solid #cbcbcb;\\\nborder-top: 0 none;\\\noverflow: hidden;\\\nmargin: 0;\\\npadding: 4px 6px 0 4px;\\\nposition: absolute;\\\ntop: 0;\\\nz-index: 99;\\\nwhite-space: normal;\\\n}\\\n.ace_search.left {\\\nborder-left: 0 none;\\\nborder-radius: 0px 0px 5px 0px;\\\nleft: 0;\\\n}\\\n.ace_search.right {\\\nborder-radius: 0px 0px 0px 5px;\\\nborder-right: 0 none;\\\nright: 0;\\\n}\\\n.ace_search_form, .ace_replace_form {\\\nmargin: 0 20px 4px 0;\\\noverflow: hidden;\\\nline-height: 1.9;\\\n}\\\n.ace_replace_form {\\\nmargin-right: 0;\\\n}\\\n.ace_search_form.ace_nomatch {\\\noutline: 1px solid red;\\\n}\\\n.ace_search_field {\\\nborder-radius: 3px 0 0 3px;\\\nbackground-color: white;\\\ncolor: black;\\\nborder: 1px solid #cbcbcb;\\\nborder-right: 0 none;\\\nbox-sizing: border-box!important;\\\noutline: 0;\\\npadding: 0;\\\nfont-size: inherit;\\\nmargin: 0;\\\nline-height: inherit;\\\npadding: 0 6px;\\\nmin-width: 17em;\\\nvertical-align: top;\\\n}\\\n.ace_searchbtn {\\\nborder: 1px solid #cbcbcb;\\\nline-height: inherit;\\\ndisplay: inline-block;\\\npadding: 0 6px;\\\nbackground: #fff;\\\nborder-right: 0 none;\\\nborder-left: 1px solid #dcdcdc;\\\ncursor: pointer;\\\nmargin: 0;\\\nposition: relative;\\\nbox-sizing: content-box!important;\\\ncolor: #666;\\\n}\\\n.ace_searchbtn:last-child {\\\nborder-radius: 0 3px 3px 0;\\\nborder-right: 1px solid #cbcbcb;\\\n}\\\n.ace_searchbtn:disabled {\\\nbackground: none;\\\ncursor: default;\\\n}\\\n.ace_searchbtn:hover {\\\nbackground-color: #eef1f6;\\\n}\\\n.ace_searchbtn.prev, .ace_searchbtn.next {\\\npadding: 0px 0.7em\\\n}\\\n.ace_searchbtn.prev:after, .ace_searchbtn.next:after {\\\ncontent: \\\"\\\";\\\nborder: solid 2px #888;\\\nwidth: 0.5em;\\\nheight: 0.5em;\\\nborder-width: 2px 0 0 2px;\\\ndisplay:inline-block;\\\ntransform: rotate(-45deg);\\\n}\\\n.ace_searchbtn.next:after {\\\nborder-width: 0 2px 2px 0 ;\\\n}\\\n.ace_searchbtn_close {\\\nbackground: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAcCAYAAABRVo5BAAAAZ0lEQVR42u2SUQrAMAhDvazn8OjZBilCkYVVxiis8H4CT0VrAJb4WHT3C5xU2a2IQZXJjiQIRMdkEoJ5Q2yMqpfDIo+XY4k6h+YXOyKqTIj5REaxloNAd0xiKmAtsTHqW8sR2W5f7gCu5nWFUpVjZwAAAABJRU5ErkJggg==) no-repeat 50% 0;\\\nborder-radius: 50%;\\\nborder: 0 none;\\\ncolor: #656565;\\\ncursor: pointer;\\\nfont: 16px/16px Arial;\\\npadding: 0;\\\nheight: 14px;\\\nwidth: 14px;\\\ntop: 9px;\\\nright: 7px;\\\nposition: absolute;\\\n}\\\n.ace_searchbtn_close:hover {\\\nbackground-color: #656565;\\\nbackground-position: 50% 100%;\\\ncolor: white;\\\n}\\\n.ace_button {\\\nmargin-left: 2px;\\\ncursor: pointer;\\\n-webkit-user-select: none;\\\n-moz-user-select: none;\\\n-o-user-select: none;\\\n-ms-user-select: none;\\\nuser-select: none;\\\noverflow: hidden;\\\nopacity: 0.7;\\\nborder: 1px solid rgba(100,100,100,0.23);\\\npadding: 1px;\\\nbox-sizing: border-box!important;\\\ncolor: black;\\\n}\\\n.ace_button:hover {\\\nbackground-color: #eee;\\\nopacity:1;\\\n}\\\n.ace_button:active {\\\nbackground-color: #ddd;\\\n}\\\n.ace_button.checked {\\\nborder-color: #3399ff;\\\nopacity:1;\\\n}\\\n.ace_search_options{\\\nmargin-bottom: 3px;\\\ntext-align: right;\\\n-webkit-user-select: none;\\\n-moz-user-select: none;\\\n-o-user-select: none;\\\n-ms-user-select: none;\\\nuser-select: none;\\\nclear: both;\\\n}\\\n.ace_search_counter {\\\nfloat: left;\\\nfont-family: arial;\\\npadding: 0 8px;\\\n}\";\nvar HashHandler = acequire(\"../keyboard/hash_handler\").HashHandler;\nvar keyUtil = acequire(\"../lib/keys\");\n\nvar MAX_COUNT = 999;\n\ndom.importCssString(searchboxCss, \"ace_searchbox\");\n\nvar html = '<div class=\"ace_search right\">\\\n <span action=\"hide\" class=\"ace_searchbtn_close\"></span>\\\n <div class=\"ace_search_form\">\\\n <input class=\"ace_search_field\" placeholder=\"Search for\" spellcheck=\"false\"></input>\\\n <span action=\"findPrev\" class=\"ace_searchbtn prev\"></span>\\\n <span action=\"findNext\" class=\"ace_searchbtn next\"></span>\\\n <span action=\"findAll\" class=\"ace_searchbtn\" title=\"Alt-Enter\">All</span>\\\n </div>\\\n <div class=\"ace_replace_form\">\\\n <input class=\"ace_search_field\" placeholder=\"Replace with\" spellcheck=\"false\"></input>\\\n <span action=\"replaceAndFindNext\" class=\"ace_searchbtn\">Replace</span>\\\n <span action=\"replaceAll\" class=\"ace_searchbtn\">All</span>\\\n </div>\\\n <div class=\"ace_search_options\">\\\n <span action=\"toggleReplace\" class=\"ace_button\" title=\"Toggel Replace mode\"\\\n style=\"float:left;margin-top:-2px;padding:0 5px;\">+</span>\\\n <span class=\"ace_search_counter\"></span>\\\n <span action=\"toggleRegexpMode\" class=\"ace_button\" title=\"RegExp Search\">.*</span>\\\n <span action=\"toggleCaseSensitive\" class=\"ace_button\" title=\"CaseSensitive Search\">Aa</span>\\\n <span action=\"toggleWholeWords\" class=\"ace_button\" title=\"Whole Word Search\">\\\\b</span>\\\n <span action=\"searchInSelection\" class=\"ace_button\" title=\"Search In Selection\">S</span>\\\n </div>\\\n</div>'.replace(/> +/g, \">\");\n\nvar SearchBox = function(editor, range, showReplaceForm) {\n var div = dom.createElement(\"div\");\n div.innerHTML = html;\n this.element = div.firstChild;\n\n this.setSession = this.setSession.bind(this);\n\n this.$init();\n this.setEditor(editor);\n};\n\n(function() {\n this.setEditor = function(editor) {\n editor.searchBox = this;\n editor.renderer.scroller.appendChild(this.element);\n this.editor = editor;\n };\n\n this.setSession = function(e) {\n this.searchRange = null;\n this.$syncOptions(true);\n };\n\n this.$initElements = function(sb) {\n this.searchBox = sb.querySelector(\".ace_search_form\");\n this.replaceBox = sb.querySelector(\".ace_replace_form\");\n this.searchOption = sb.querySelector(\"[action=searchInSelection]\");\n this.replaceOption = sb.querySelector(\"[action=toggleReplace]\");\n this.regExpOption = sb.querySelector(\"[action=toggleRegexpMode]\");\n this.caseSensitiveOption = sb.querySelector(\"[action=toggleCaseSensitive]\");\n this.wholeWordOption = sb.querySelector(\"[action=toggleWholeWords]\");\n this.searchInput = this.searchBox.querySelector(\".ace_search_field\");\n this.replaceInput = this.replaceBox.querySelector(\".ace_search_field\");\n this.searchCounter = sb.querySelector(\".ace_search_counter\");\n };\n \n this.$init = function() {\n var sb = this.element;\n \n this.$initElements(sb);\n \n var _this = this;\n event.addListener(sb, \"mousedown\", function(e) {\n setTimeout(function(){\n _this.activeInput.focus();\n }, 0);\n event.stopPropagation(e);\n });\n event.addListener(sb, \"click\", function(e) {\n var t = e.target || e.srcElement;\n var action = t.getAttribute(\"action\");\n if (action && _this[action])\n _this[action]();\n else if (_this.$searchBarKb.commands[action])\n _this.$searchBarKb.commands[action].exec(_this);\n event.stopPropagation(e);\n });\n\n event.addCommandKeyListener(sb, function(e, hashId, keyCode) {\n var keyString = keyUtil.keyCodeToString(keyCode);\n var command = _this.$searchBarKb.findKeyCommand(hashId, keyString);\n if (command && command.exec) {\n command.exec(_this);\n event.stopEvent(e);\n }\n });\n\n this.$onChange = lang.delayedCall(function() {\n _this.find(false, false);\n });\n\n event.addListener(this.searchInput, \"input\", function() {\n _this.$onChange.schedule(20);\n });\n event.addListener(this.searchInput, \"focus\", function() {\n _this.activeInput = _this.searchInput;\n _this.searchInput.value && _this.highlight();\n });\n event.addListener(this.replaceInput, \"focus\", function() {\n _this.activeInput = _this.replaceInput;\n _this.searchInput.value && _this.highlight();\n });\n };\n this.$closeSearchBarKb = new HashHandler([{\n bindKey: \"Esc\",\n name: \"closeSearchBar\",\n exec: function(editor) {\n editor.searchBox.hide();\n }\n }]);\n this.$searchBarKb = new HashHandler();\n this.$searchBarKb.bindKeys({\n \"Ctrl-f|Command-f\": function(sb) {\n var isReplace = sb.isReplace = !sb.isReplace;\n sb.replaceBox.style.display = isReplace ? \"\" : \"none\";\n sb.replaceOption.checked = false;\n sb.$syncOptions();\n sb.searchInput.focus();\n },\n \"Ctrl-H|Command-Option-F\": function(sb) {\n sb.replaceOption.checked = true;\n sb.$syncOptions();\n sb.replaceInput.focus();\n },\n \"Ctrl-G|Command-G\": function(sb) {\n sb.findNext();\n },\n \"Ctrl-Shift-G|Command-Shift-G\": function(sb) {\n sb.findPrev();\n },\n \"esc\": function(sb) {\n setTimeout(function() { sb.hide();});\n },\n \"Return\": function(sb) {\n if (sb.activeInput == sb.replaceInput)\n sb.replace();\n sb.findNext();\n },\n \"Shift-Return\": function(sb) {\n if (sb.activeInput == sb.replaceInput)\n sb.replace();\n sb.findPrev();\n },\n \"Alt-Return\": function(sb) {\n if (sb.activeInput == sb.replaceInput)\n sb.replaceAll();\n sb.findAll();\n },\n \"Tab\": function(sb) {\n (sb.activeInput == sb.replaceInput ? sb.searchInput : sb.replaceInput).focus();\n }\n });\n\n this.$searchBarKb.addCommands([{\n name: \"toggleRegexpMode\",\n bindKey: {win: \"Alt-R|Alt-/\", mac: \"Ctrl-Alt-R|Ctrl-Alt-/\"},\n exec: function(sb) {\n sb.regExpOption.checked = !sb.regExpOption.checked;\n sb.$syncOptions();\n }\n }, {\n name: \"toggleCaseSensitive\",\n bindKey: {win: \"Alt-C|Alt-I\", mac: \"Ctrl-Alt-R|Ctrl-Alt-I\"},\n exec: function(sb) {\n sb.caseSensitiveOption.checked = !sb.caseSensitiveOption.checked;\n sb.$syncOptions();\n }\n }, {\n name: \"toggleWholeWords\",\n bindKey: {win: \"Alt-B|Alt-W\", mac: \"Ctrl-Alt-B|Ctrl-Alt-W\"},\n exec: function(sb) {\n sb.wholeWordOption.checked = !sb.wholeWordOption.checked;\n sb.$syncOptions();\n }\n }, {\n name: \"toggleReplace\",\n exec: function(sb) {\n sb.replaceOption.checked = !sb.replaceOption.checked;\n sb.$syncOptions();\n }\n }, {\n name: \"searchInSelection\",\n exec: function(sb) {\n sb.searchOption.checked = !sb.searchRange;\n sb.setSearchRange(sb.searchOption.checked && sb.editor.getSelectionRange());\n sb.$syncOptions();\n }\n }]);\n\n this.setSearchRange = function(range) {\n this.searchRange = range;\n if (range) {\n this.searchRangeMarker = this.editor.session.addMarker(range, \"ace_active-line\");\n } else if (this.searchRangeMarker) {\n this.editor.session.removeMarker(this.searchRangeMarker);\n this.searchRangeMarker = null;\n }\n };\n\n this.$syncOptions = function(preventScroll) {\n dom.setCssClass(this.replaceOption, \"checked\", this.searchRange);\n dom.setCssClass(this.searchOption, \"checked\", this.searchOption.checked);\n this.replaceOption.textContent = this.replaceOption.checked ? \"-\" : \"+\";\n dom.setCssClass(this.regExpOption, \"checked\", this.regExpOption.checked);\n dom.setCssClass(this.wholeWordOption, \"checked\", this.wholeWordOption.checked);\n dom.setCssClass(this.caseSensitiveOption, \"checked\", this.caseSensitiveOption.checked);\n this.replaceBox.style.display = this.replaceOption.checked ? \"\" : \"none\";\n this.find(false, false, preventScroll);\n };\n\n this.highlight = function(re) {\n this.editor.session.highlight(re || this.editor.$search.$options.re);\n this.editor.renderer.updateBackMarkers();\n };\n this.find = function(skipCurrent, backwards, preventScroll) {\n var range = this.editor.find(this.searchInput.value, {\n skipCurrent: skipCurrent,\n backwards: backwards,\n wrap: true,\n regExp: this.regExpOption.checked,\n caseSensitive: this.caseSensitiveOption.checked,\n wholeWord: this.wholeWordOption.checked,\n preventScroll: preventScroll,\n range: this.searchRange\n });\n var noMatch = !range && this.searchInput.value;\n dom.setCssClass(this.searchBox, \"ace_nomatch\", noMatch);\n this.editor._emit(\"findSearchBox\", { match: !noMatch });\n this.highlight();\n this.updateCounter();\n };\n this.updateCounter = function() {\n var editor = this.editor;\n var regex = editor.$search.$options.re;\n var all = 0;\n var before = 0;\n if (regex) {\n var value = this.searchRange\n ? editor.session.getTextRange(this.searchRange)\n : editor.getValue();\n\n var offset = editor.session.doc.positionToIndex(editor.selection.anchor);\n if (this.searchRange)\n offset -= editor.session.doc.positionToIndex(this.searchRange.start);\n\n var last = regex.lastIndex = 0;\n var m;\n while ((m = regex.exec(value))) {\n all++;\n last = m.index;\n if (last <= offset)\n before++;\n if (all > MAX_COUNT)\n break;\n if (!m[0]) {\n regex.lastIndex = last += 1;\n if (last >= value.length)\n break;\n }\n }\n }\n this.searchCounter.textContent = before + \" of \" + (all > MAX_COUNT ? MAX_COUNT + \"+\" : all);\n };\n this.findNext = function() {\n this.find(true, false);\n };\n this.findPrev = function() {\n this.find(true, true);\n };\n this.findAll = function(){\n var range = this.editor.findAll(this.searchInput.value, { \n regExp: this.regExpOption.checked,\n caseSensitive: this.caseSensitiveOption.checked,\n wholeWord: this.wholeWordOption.checked\n });\n var noMatch = !range && this.searchInput.value;\n dom.setCssClass(this.searchBox, \"ace_nomatch\", noMatch);\n this.editor._emit(\"findSearchBox\", { match: !noMatch });\n this.highlight();\n this.hide();\n };\n this.replace = function() {\n if (!this.editor.getReadOnly())\n this.editor.replace(this.replaceInput.value);\n }; \n this.replaceAndFindNext = function() {\n if (!this.editor.getReadOnly()) {\n this.editor.replace(this.replaceInput.value);\n this.findNext();\n }\n };\n this.replaceAll = function() {\n if (!this.editor.getReadOnly())\n this.editor.replaceAll(this.replaceInput.value);\n };\n\n this.hide = function() {\n this.active = false;\n this.setSearchRange(null);\n this.editor.off(\"changeSession\", this.setSession);\n\n this.element.style.display = \"none\";\n this.editor.keyBinding.removeKeyboardHandler(this.$closeSearchBarKb);\n this.editor.focus();\n };\n this.show = function(value, isReplace) {\n this.active = true;\n this.editor.on(\"changeSession\", this.setSession);\n this.element.style.display = \"\";\n this.replaceOption.checked = isReplace;\n\n if (value)\n this.searchInput.value = value;\n \n this.searchInput.focus();\n this.searchInput.select();\n\n this.editor.keyBinding.addKeyboardHandler(this.$closeSearchBarKb);\n\n this.$syncOptions(true);\n };\n\n this.isFocused = function() {\n var el = document.activeElement;\n return el == this.searchInput || el == this.replaceInput;\n };\n}).call(SearchBox.prototype);\n\nexports.SearchBox = SearchBox;\n\nexports.Search = function(editor, isReplace) {\n var sb = editor.searchBox || new SearchBox(editor);\n sb.show(editor.session.getTextRange(), isReplace);\n};\n\n});\n (function() {\n ace.acequire([\"ace/ext/searchbox\"], function() {});\n })();\n ","module.exports.id = 'ace/mode/json_worker';\nmodule.exports.src = \"\\\"no use strict\\\";!function(window){function resolveModuleId(id,paths){for(var testPath=id,tail=\\\"\\\";testPath;){var alias=paths[testPath];if(\\\"string\\\"==typeof alias)return alias+tail;if(alias)return alias.location.replace(/\\\\/*$/,\\\"/\\\")+(tail||alias.main||alias.name);if(alias===!1)return\\\"\\\";var i=testPath.lastIndexOf(\\\"/\\\");if(-1===i)break;tail=testPath.substr(i)+tail,testPath=testPath.slice(0,i)}return id}if(!(void 0!==window.window&&window.document||window.acequire&&window.define)){window.console||(window.console=function(){var msgs=Array.prototype.slice.call(arguments,0);postMessage({type:\\\"log\\\",data:msgs})},window.console.error=window.console.warn=window.console.log=window.console.trace=window.console),window.window=window,window.ace=window,window.onerror=function(message,file,line,col,err){postMessage({type:\\\"error\\\",data:{message:message,data:err.data,file:file,line:line,col:col,stack:err.stack}})},window.normalizeModule=function(parentId,moduleName){if(-1!==moduleName.indexOf(\\\"!\\\")){var chunks=moduleName.split(\\\"!\\\");return window.normalizeModule(parentId,chunks[0])+\\\"!\\\"+window.normalizeModule(parentId,chunks[1])}if(\\\".\\\"==moduleName.charAt(0)){var base=parentId.split(\\\"/\\\").slice(0,-1).join(\\\"/\\\");for(moduleName=(base?base+\\\"/\\\":\\\"\\\")+moduleName;-1!==moduleName.indexOf(\\\".\\\")&&previous!=moduleName;){var previous=moduleName;moduleName=moduleName.replace(/^\\\\.\\\\//,\\\"\\\").replace(/\\\\/\\\\.\\\\//,\\\"/\\\").replace(/[^\\\\/]+\\\\/\\\\.\\\\.\\\\//,\\\"\\\")}}return moduleName},window.acequire=function acequire(parentId,id){if(id||(id=parentId,parentId=null),!id.charAt)throw Error(\\\"worker.js acequire() accepts only (parentId, id) as arguments\\\");id=window.normalizeModule(parentId,id);var module=window.acequire.modules[id];if(module)return module.initialized||(module.initialized=!0,module.exports=module.factory().exports),module.exports;if(!window.acequire.tlns)return console.log(\\\"unable to load \\\"+id);var path=resolveModuleId(id,window.acequire.tlns);return\\\".js\\\"!=path.slice(-3)&&(path+=\\\".js\\\"),window.acequire.id=id,window.acequire.modules[id]={},importScripts(path),window.acequire(parentId,id)},window.acequire.modules={},window.acequire.tlns={},window.define=function(id,deps,factory){if(2==arguments.length?(factory=deps,\\\"string\\\"!=typeof id&&(deps=id,id=window.acequire.id)):1==arguments.length&&(factory=id,deps=[],id=window.acequire.id),\\\"function\\\"!=typeof factory)return window.acequire.modules[id]={exports:factory,initialized:!0},void 0;deps.length||(deps=[\\\"require\\\",\\\"exports\\\",\\\"module\\\"]);var req=function(childId){return window.acequire(id,childId)};window.acequire.modules[id]={exports:{},factory:function(){var module=this,returnExports=factory.apply(this,deps.map(function(dep){switch(dep){case\\\"require\\\":return req;case\\\"exports\\\":return module.exports;case\\\"module\\\":return module;default:return req(dep)}}));return returnExports&&(module.exports=returnExports),module}}},window.define.amd={},acequire.tlns={},window.initBaseUrls=function(topLevelNamespaces){for(var i in topLevelNamespaces)acequire.tlns[i]=topLevelNamespaces[i]},window.initSender=function(){var EventEmitter=window.acequire(\\\"ace/lib/event_emitter\\\").EventEmitter,oop=window.acequire(\\\"ace/lib/oop\\\"),Sender=function(){};return function(){oop.implement(this,EventEmitter),this.callback=function(data,callbackId){postMessage({type:\\\"call\\\",id:callbackId,data:data})},this.emit=function(name,data){postMessage({type:\\\"event\\\",name:name,data:data})}}.call(Sender.prototype),new Sender};var main=window.main=null,sender=window.sender=null;window.onmessage=function(e){var msg=e.data;if(msg.event&&sender)sender._signal(msg.event,msg.data);else if(msg.command)if(main[msg.command])main[msg.command].apply(main,msg.args);else{if(!window[msg.command])throw Error(\\\"Unknown command:\\\"+msg.command);window[msg.command].apply(window,msg.args)}else if(msg.init){window.initBaseUrls(msg.tlns),acequire(\\\"ace/lib/es5-shim\\\"),sender=window.sender=window.initSender();var clazz=acequire(msg.module)[msg.classname];main=window.main=new clazz(sender)}}}}(this),ace.define(\\\"ace/lib/oop\\\",[\\\"require\\\",\\\"exports\\\",\\\"module\\\"],function(acequire,exports){\\\"use strict\\\";exports.inherits=function(ctor,superCtor){ctor.super_=superCtor,ctor.prototype=Object.create(superCtor.prototype,{constructor:{value:ctor,enumerable:!1,writable:!0,configurable:!0}})},exports.mixin=function(obj,mixin){for(var key in mixin)obj[key]=mixin[key];return obj},exports.implement=function(proto,mixin){exports.mixin(proto,mixin)}}),ace.define(\\\"ace/range\\\",[\\\"require\\\",\\\"exports\\\",\\\"module\\\"],function(acequire,exports){\\\"use strict\\\";var comparePoints=function(p1,p2){return p1.row-p2.row||p1.column-p2.column},Range=function(startRow,startColumn,endRow,endColumn){this.start={row:startRow,column:startColumn},this.end={row:endRow,column:endColumn}};(function(){this.isEqual=function(range){return this.start.row===range.start.row&&this.end.row===range.end.row&&this.start.column===range.start.column&&this.end.column===range.end.column},this.toString=function(){return\\\"Range: [\\\"+this.start.row+\\\"/\\\"+this.start.column+\\\"] -> [\\\"+this.end.row+\\\"/\\\"+this.end.column+\\\"]\\\"},this.contains=function(row,column){return 0==this.compare(row,column)},this.compareRange=function(range){var cmp,end=range.end,start=range.start;return cmp=this.compare(end.row,end.column),1==cmp?(cmp=this.compare(start.row,start.column),1==cmp?2:0==cmp?1:0):-1==cmp?-2:(cmp=this.compare(start.row,start.column),-1==cmp?-1:1==cmp?42:0)},this.comparePoint=function(p){return this.compare(p.row,p.column)},this.containsRange=function(range){return 0==this.comparePoint(range.start)&&0==this.comparePoint(range.end)},this.intersects=function(range){var cmp=this.compareRange(range);return-1==cmp||0==cmp||1==cmp},this.isEnd=function(row,column){return this.end.row==row&&this.end.column==column},this.isStart=function(row,column){return this.start.row==row&&this.start.column==column},this.setStart=function(row,column){\\\"object\\\"==typeof row?(this.start.column=row.column,this.start.row=row.row):(this.start.row=row,this.start.column=column)},this.setEnd=function(row,column){\\\"object\\\"==typeof row?(this.end.column=row.column,this.end.row=row.row):(this.end.row=row,this.end.column=column)},this.inside=function(row,column){return 0==this.compare(row,column)?this.isEnd(row,column)||this.isStart(row,column)?!1:!0:!1},this.insideStart=function(row,column){return 0==this.compare(row,column)?this.isEnd(row,column)?!1:!0:!1},this.insideEnd=function(row,column){return 0==this.compare(row,column)?this.isStart(row,column)?!1:!0:!1},this.compare=function(row,column){return this.isMultiLine()||row!==this.start.row?this.start.row>row?-1:row>this.end.row?1:this.start.row===row?column>=this.start.column?0:-1:this.end.row===row?this.end.column>=column?0:1:0:this.start.column>column?-1:column>this.end.column?1:0},this.compareStart=function(row,column){return this.start.row==row&&this.start.column==column?-1:this.compare(row,column)},this.compareEnd=function(row,column){return this.end.row==row&&this.end.column==column?1:this.compare(row,column)},this.compareInside=function(row,column){return this.end.row==row&&this.end.column==column?1:this.start.row==row&&this.start.column==column?-1:this.compare(row,column)},this.clipRows=function(firstRow,lastRow){if(this.end.row>lastRow)var end={row:lastRow+1,column:0};else if(firstRow>this.end.row)var end={row:firstRow,column:0};if(this.start.row>lastRow)var start={row:lastRow+1,column:0};else if(firstRow>this.start.row)var start={row:firstRow,column:0};return Range.fromPoints(start||this.start,end||this.end)},this.extend=function(row,column){var cmp=this.compare(row,column);if(0==cmp)return this;if(-1==cmp)var start={row:row,column:column};else var end={row:row,column:column};return Range.fromPoints(start||this.start,end||this.end)},this.isEmpty=function(){return this.start.row===this.end.row&&this.start.column===this.end.column},this.isMultiLine=function(){return this.start.row!==this.end.row},this.clone=function(){return Range.fromPoints(this.start,this.end)},this.collapseRows=function(){return 0==this.end.column?new Range(this.start.row,0,Math.max(this.start.row,this.end.row-1),0):new Range(this.start.row,0,this.end.row,0)},this.toScreenRange=function(session){var screenPosStart=session.documentToScreenPosition(this.start),screenPosEnd=session.documentToScreenPosition(this.end);return new Range(screenPosStart.row,screenPosStart.column,screenPosEnd.row,screenPosEnd.column)},this.moveBy=function(row,column){this.start.row+=row,this.start.column+=column,this.end.row+=row,this.end.column+=column}}).call(Range.prototype),Range.fromPoints=function(start,end){return new Range(start.row,start.column,end.row,end.column)},Range.comparePoints=comparePoints,Range.comparePoints=function(p1,p2){return p1.row-p2.row||p1.column-p2.column},exports.Range=Range}),ace.define(\\\"ace/apply_delta\\\",[\\\"require\\\",\\\"exports\\\",\\\"module\\\"],function(acequire,exports){\\\"use strict\\\";exports.applyDelta=function(docLines,delta){var row=delta.start.row,startColumn=delta.start.column,line=docLines[row]||\\\"\\\";switch(delta.action){case\\\"insert\\\":var lines=delta.lines;if(1===lines.length)docLines[row]=line.substring(0,startColumn)+delta.lines[0]+line.substring(startColumn);else{var args=[row,1].concat(delta.lines);docLines.splice.apply(docLines,args),docLines[row]=line.substring(0,startColumn)+docLines[row],docLines[row+delta.lines.length-1]+=line.substring(startColumn)}break;case\\\"remove\\\":var endColumn=delta.end.column,endRow=delta.end.row;row===endRow?docLines[row]=line.substring(0,startColumn)+line.substring(endColumn):docLines.splice(row,endRow-row+1,line.substring(0,startColumn)+docLines[endRow].substring(endColumn))}}}),ace.define(\\\"ace/lib/event_emitter\\\",[\\\"require\\\",\\\"exports\\\",\\\"module\\\"],function(acequire,exports){\\\"use strict\\\";var EventEmitter={},stopPropagation=function(){this.propagationStopped=!0},preventDefault=function(){this.defaultPrevented=!0};EventEmitter._emit=EventEmitter._dispatchEvent=function(eventName,e){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var listeners=this._eventRegistry[eventName]||[],defaultHandler=this._defaultHandlers[eventName];if(listeners.length||defaultHandler){\\\"object\\\"==typeof e&&e||(e={}),e.type||(e.type=eventName),e.stopPropagation||(e.stopPropagation=stopPropagation),e.preventDefault||(e.preventDefault=preventDefault),listeners=listeners.slice();for(var i=0;listeners.length>i&&(listeners[i](e,this),!e.propagationStopped);i++);return defaultHandler&&!e.defaultPrevented?defaultHandler(e,this):void 0}},EventEmitter._signal=function(eventName,e){var listeners=(this._eventRegistry||{})[eventName];if(listeners){listeners=listeners.slice();for(var i=0;listeners.length>i;i++)listeners[i](e,this)}},EventEmitter.once=function(eventName,callback){var _self=this;callback&&this.addEventListener(eventName,function newCallback(){_self.removeEventListener(eventName,newCallback),callback.apply(null,arguments)})},EventEmitter.setDefaultHandler=function(eventName,callback){var handlers=this._defaultHandlers;if(handlers||(handlers=this._defaultHandlers={_disabled_:{}}),handlers[eventName]){var old=handlers[eventName],disabled=handlers._disabled_[eventName];disabled||(handlers._disabled_[eventName]=disabled=[]),disabled.push(old);var i=disabled.indexOf(callback);-1!=i&&disabled.splice(i,1)}handlers[eventName]=callback},EventEmitter.removeDefaultHandler=function(eventName,callback){var handlers=this._defaultHandlers;if(handlers){var disabled=handlers._disabled_[eventName];if(handlers[eventName]==callback)handlers[eventName],disabled&&this.setDefaultHandler(eventName,disabled.pop());else if(disabled){var i=disabled.indexOf(callback);-1!=i&&disabled.splice(i,1)}}},EventEmitter.on=EventEmitter.addEventListener=function(eventName,callback,capturing){this._eventRegistry=this._eventRegistry||{};var listeners=this._eventRegistry[eventName];return listeners||(listeners=this._eventRegistry[eventName]=[]),-1==listeners.indexOf(callback)&&listeners[capturing?\\\"unshift\\\":\\\"push\\\"](callback),callback},EventEmitter.off=EventEmitter.removeListener=EventEmitter.removeEventListener=function(eventName,callback){this._eventRegistry=this._eventRegistry||{};var listeners=this._eventRegistry[eventName];if(listeners){var index=listeners.indexOf(callback);-1!==index&&listeners.splice(index,1)}},EventEmitter.removeAllListeners=function(eventName){this._eventRegistry&&(this._eventRegistry[eventName]=[])},exports.EventEmitter=EventEmitter}),ace.define(\\\"ace/anchor\\\",[\\\"require\\\",\\\"exports\\\",\\\"module\\\",\\\"ace/lib/oop\\\",\\\"ace/lib/event_emitter\\\"],function(acequire,exports){\\\"use strict\\\";var oop=acequire(\\\"./lib/oop\\\"),EventEmitter=acequire(\\\"./lib/event_emitter\\\").EventEmitter,Anchor=exports.Anchor=function(doc,row,column){this.$onChange=this.onChange.bind(this),this.attach(doc),column===void 0?this.setPosition(row.row,row.column):this.setPosition(row,column)};(function(){function $pointsInOrder(point1,point2,equalPointsInOrder){var bColIsAfter=equalPointsInOrder?point1.column<=point2.column:point1.column<point2.column;return point1.row<point2.row||point1.row==point2.row&&bColIsAfter}function $getTransformedPoint(delta,point,moveIfEqual){var deltaIsInsert=\\\"insert\\\"==delta.action,deltaRowShift=(deltaIsInsert?1:-1)*(delta.end.row-delta.start.row),deltaColShift=(deltaIsInsert?1:-1)*(delta.end.column-delta.start.column),deltaStart=delta.start,deltaEnd=deltaIsInsert?deltaStart:delta.end;return $pointsInOrder(point,deltaStart,moveIfEqual)?{row:point.row,column:point.column}:$pointsInOrder(deltaEnd,point,!moveIfEqual)?{row:point.row+deltaRowShift,column:point.column+(point.row==deltaEnd.row?deltaColShift:0)}:{row:deltaStart.row,column:deltaStart.column}}oop.implement(this,EventEmitter),this.getPosition=function(){return this.$clipPositionToDocument(this.row,this.column)},this.getDocument=function(){return this.document},this.$insertRight=!1,this.onChange=function(delta){if(!(delta.start.row==delta.end.row&&delta.start.row!=this.row||delta.start.row>this.row)){var point=$getTransformedPoint(delta,{row:this.row,column:this.column},this.$insertRight);this.setPosition(point.row,point.column,!0)}},this.setPosition=function(row,column,noClip){var pos;if(pos=noClip?{row:row,column:column}:this.$clipPositionToDocument(row,column),this.row!=pos.row||this.column!=pos.column){var old={row:this.row,column:this.column};this.row=pos.row,this.column=pos.column,this._signal(\\\"change\\\",{old:old,value:pos})}},this.detach=function(){this.document.removeEventListener(\\\"change\\\",this.$onChange)},this.attach=function(doc){this.document=doc||this.document,this.document.on(\\\"change\\\",this.$onChange)},this.$clipPositionToDocument=function(row,column){var pos={};return row>=this.document.getLength()?(pos.row=Math.max(0,this.document.getLength()-1),pos.column=this.document.getLine(pos.row).length):0>row?(pos.row=0,pos.column=0):(pos.row=row,pos.column=Math.min(this.document.getLine(pos.row).length,Math.max(0,column))),0>column&&(pos.column=0),pos}}).call(Anchor.prototype)}),ace.define(\\\"ace/document\\\",[\\\"require\\\",\\\"exports\\\",\\\"module\\\",\\\"ace/lib/oop\\\",\\\"ace/apply_delta\\\",\\\"ace/lib/event_emitter\\\",\\\"ace/range\\\",\\\"ace/anchor\\\"],function(acequire,exports){\\\"use strict\\\";var oop=acequire(\\\"./lib/oop\\\"),applyDelta=acequire(\\\"./apply_delta\\\").applyDelta,EventEmitter=acequire(\\\"./lib/event_emitter\\\").EventEmitter,Range=acequire(\\\"./range\\\").Range,Anchor=acequire(\\\"./anchor\\\").Anchor,Document=function(textOrLines){this.$lines=[\\\"\\\"],0===textOrLines.length?this.$lines=[\\\"\\\"]:Array.isArray(textOrLines)?this.insertMergedLines({row:0,column:0},textOrLines):this.insert({row:0,column:0},textOrLines)};(function(){oop.implement(this,EventEmitter),this.setValue=function(text){var len=this.getLength()-1;this.remove(new Range(0,0,len,this.getLine(len).length)),this.insert({row:0,column:0},text)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(row,column){return new Anchor(this,row,column)},this.$split=0===\\\"aaa\\\".split(/a/).length?function(text){return text.replace(/\\\\r\\\\n|\\\\r/g,\\\"\\\\n\\\").split(\\\"\\\\n\\\")}:function(text){return text.split(/\\\\r\\\\n|\\\\r|\\\\n/)},this.$detectNewLine=function(text){var match=text.match(/^.*?(\\\\r\\\\n|\\\\r|\\\\n)/m);this.$autoNewLine=match?match[1]:\\\"\\\\n\\\",this._signal(\\\"changeNewLineMode\\\")},this.getNewLineCharacter=function(){switch(this.$newLineMode){case\\\"windows\\\":return\\\"\\\\r\\\\n\\\";case\\\"unix\\\":return\\\"\\\\n\\\";default:return this.$autoNewLine||\\\"\\\\n\\\"}},this.$autoNewLine=\\\"\\\",this.$newLineMode=\\\"auto\\\",this.setNewLineMode=function(newLineMode){this.$newLineMode!==newLineMode&&(this.$newLineMode=newLineMode,this._signal(\\\"changeNewLineMode\\\"))},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(text){return\\\"\\\\r\\\\n\\\"==text||\\\"\\\\r\\\"==text||\\\"\\\\n\\\"==text},this.getLine=function(row){return this.$lines[row]||\\\"\\\"},this.getLines=function(firstRow,lastRow){return this.$lines.slice(firstRow,lastRow+1)},this.getAllLines=function(){return this.getLines(0,this.getLength())},this.getLength=function(){return this.$lines.length},this.getTextRange=function(range){return this.getLinesForRange(range).join(this.getNewLineCharacter())},this.getLinesForRange=function(range){var lines;if(range.start.row===range.end.row)lines=[this.getLine(range.start.row).substring(range.start.column,range.end.column)];else{lines=this.getLines(range.start.row,range.end.row),lines[0]=(lines[0]||\\\"\\\").substring(range.start.column);var l=lines.length-1;range.end.row-range.start.row==l&&(lines[l]=lines[l].substring(0,range.end.column))}return lines},this.insertLines=function(row,lines){return console.warn(\\\"Use of document.insertLines is deprecated. Use the insertFullLines method instead.\\\"),this.insertFullLines(row,lines)},this.removeLines=function(firstRow,lastRow){return console.warn(\\\"Use of document.removeLines is deprecated. Use the removeFullLines method instead.\\\"),this.removeFullLines(firstRow,lastRow)},this.insertNewLine=function(position){return console.warn(\\\"Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead.\\\"),this.insertMergedLines(position,[\\\"\\\",\\\"\\\"])},this.insert=function(position,text){return 1>=this.getLength()&&this.$detectNewLine(text),this.insertMergedLines(position,this.$split(text))},this.insertInLine=function(position,text){var start=this.clippedPos(position.row,position.column),end=this.pos(position.row,position.column+text.length);return this.applyDelta({start:start,end:end,action:\\\"insert\\\",lines:[text]},!0),this.clonePos(end)},this.clippedPos=function(row,column){var length=this.getLength();void 0===row?row=length:0>row?row=0:row>=length&&(row=length-1,column=void 0);var line=this.getLine(row);return void 0==column&&(column=line.length),column=Math.min(Math.max(column,0),line.length),{row:row,column:column}},this.clonePos=function(pos){return{row:pos.row,column:pos.column}},this.pos=function(row,column){return{row:row,column:column}},this.$clipPosition=function(position){var length=this.getLength();return position.row>=length?(position.row=Math.max(0,length-1),position.column=this.getLine(length-1).length):(position.row=Math.max(0,position.row),position.column=Math.min(Math.max(position.column,0),this.getLine(position.row).length)),position},this.insertFullLines=function(row,lines){row=Math.min(Math.max(row,0),this.getLength());var column=0;this.getLength()>row?(lines=lines.concat([\\\"\\\"]),column=0):(lines=[\\\"\\\"].concat(lines),row--,column=this.$lines[row].length),this.insertMergedLines({row:row,column:column},lines)},this.insertMergedLines=function(position,lines){var start=this.clippedPos(position.row,position.column),end={row:start.row+lines.length-1,column:(1==lines.length?start.column:0)+lines[lines.length-1].length};return this.applyDelta({start:start,end:end,action:\\\"insert\\\",lines:lines}),this.clonePos(end)},this.remove=function(range){var start=this.clippedPos(range.start.row,range.start.column),end=this.clippedPos(range.end.row,range.end.column);return this.applyDelta({start:start,end:end,action:\\\"remove\\\",lines:this.getLinesForRange({start:start,end:end})}),this.clonePos(start)},this.removeInLine=function(row,startColumn,endColumn){var start=this.clippedPos(row,startColumn),end=this.clippedPos(row,endColumn);return this.applyDelta({start:start,end:end,action:\\\"remove\\\",lines:this.getLinesForRange({start:start,end:end})},!0),this.clonePos(start)},this.removeFullLines=function(firstRow,lastRow){firstRow=Math.min(Math.max(0,firstRow),this.getLength()-1),lastRow=Math.min(Math.max(0,lastRow),this.getLength()-1);var deleteFirstNewLine=lastRow==this.getLength()-1&&firstRow>0,deleteLastNewLine=this.getLength()-1>lastRow,startRow=deleteFirstNewLine?firstRow-1:firstRow,startCol=deleteFirstNewLine?this.getLine(startRow).length:0,endRow=deleteLastNewLine?lastRow+1:lastRow,endCol=deleteLastNewLine?0:this.getLine(endRow).length,range=new Range(startRow,startCol,endRow,endCol),deletedLines=this.$lines.slice(firstRow,lastRow+1);return this.applyDelta({start:range.start,end:range.end,action:\\\"remove\\\",lines:this.getLinesForRange(range)}),deletedLines},this.removeNewLine=function(row){this.getLength()-1>row&&row>=0&&this.applyDelta({start:this.pos(row,this.getLine(row).length),end:this.pos(row+1,0),action:\\\"remove\\\",lines:[\\\"\\\",\\\"\\\"]})},this.replace=function(range,text){if(range instanceof Range||(range=Range.fromPoints(range.start,range.end)),0===text.length&&range.isEmpty())return range.start;if(text==this.getTextRange(range))return range.end;this.remove(range);var end;return end=text?this.insert(range.start,text):range.start},this.applyDeltas=function(deltas){for(var i=0;deltas.length>i;i++)this.applyDelta(deltas[i])},this.revertDeltas=function(deltas){for(var i=deltas.length-1;i>=0;i--)this.revertDelta(deltas[i])},this.applyDelta=function(delta,doNotValidate){var isInsert=\\\"insert\\\"==delta.action;(isInsert?1>=delta.lines.length&&!delta.lines[0]:!Range.comparePoints(delta.start,delta.end))||(isInsert&&delta.lines.length>2e4&&this.$splitAndapplyLargeDelta(delta,2e4),applyDelta(this.$lines,delta,doNotValidate),this._signal(\\\"change\\\",delta))},this.$splitAndapplyLargeDelta=function(delta,MAX){for(var lines=delta.lines,l=lines.length,row=delta.start.row,column=delta.start.column,from=0,to=0;;){from=to,to+=MAX-1;var chunk=lines.slice(from,to);if(to>l){delta.lines=chunk,delta.start.row=row+from,delta.start.column=column;break}chunk.push(\\\"\\\"),this.applyDelta({start:this.pos(row+from,column),end:this.pos(row+to,column=0),action:delta.action,lines:chunk},!0)}},this.revertDelta=function(delta){this.applyDelta({start:this.clonePos(delta.start),end:this.clonePos(delta.end),action:\\\"insert\\\"==delta.action?\\\"remove\\\":\\\"insert\\\",lines:delta.lines.slice()})},this.indexToPosition=function(index,startRow){for(var lines=this.$lines||this.getAllLines(),newlineLength=this.getNewLineCharacter().length,i=startRow||0,l=lines.length;l>i;i++)if(index-=lines[i].length+newlineLength,0>index)return{row:i,column:index+lines[i].length+newlineLength};return{row:l-1,column:lines[l-1].length}},this.positionToIndex=function(pos,startRow){for(var lines=this.$lines||this.getAllLines(),newlineLength=this.getNewLineCharacter().length,index=0,row=Math.min(pos.row,lines.length),i=startRow||0;row>i;++i)index+=lines[i].length+newlineLength;return index+pos.column}}).call(Document.prototype),exports.Document=Document}),ace.define(\\\"ace/lib/lang\\\",[\\\"require\\\",\\\"exports\\\",\\\"module\\\"],function(acequire,exports){\\\"use strict\\\";exports.last=function(a){return a[a.length-1]},exports.stringReverse=function(string){return string.split(\\\"\\\").reverse().join(\\\"\\\")},exports.stringRepeat=function(string,count){for(var result=\\\"\\\";count>0;)1&count&&(result+=string),(count>>=1)&&(string+=string);return result};var trimBeginRegexp=/^\\\\s\\\\s*/,trimEndRegexp=/\\\\s\\\\s*$/;exports.stringTrimLeft=function(string){return string.replace(trimBeginRegexp,\\\"\\\")},exports.stringTrimRight=function(string){return string.replace(trimEndRegexp,\\\"\\\")},exports.copyObject=function(obj){var copy={};for(var key in obj)copy[key]=obj[key];return copy},exports.copyArray=function(array){for(var copy=[],i=0,l=array.length;l>i;i++)copy[i]=array[i]&&\\\"object\\\"==typeof array[i]?this.copyObject(array[i]):array[i];return copy},exports.deepCopy=function deepCopy(obj){if(\\\"object\\\"!=typeof obj||!obj)return obj;var copy;if(Array.isArray(obj)){copy=[];for(var key=0;obj.length>key;key++)copy[key]=deepCopy(obj[key]);return copy}if(\\\"[object Object]\\\"!==Object.prototype.toString.call(obj))return obj;copy={};for(var key in obj)copy[key]=deepCopy(obj[key]);return copy},exports.arrayToMap=function(arr){for(var map={},i=0;arr.length>i;i++)map[arr[i]]=1;return map},exports.createMap=function(props){var map=Object.create(null);for(var i in props)map[i]=props[i];return map},exports.arrayRemove=function(array,value){for(var i=0;array.length>=i;i++)value===array[i]&&array.splice(i,1)},exports.escapeRegExp=function(str){return str.replace(/([.*+?^${}()|[\\\\]\\\\/\\\\\\\\])/g,\\\"\\\\\\\\$1\\\")},exports.escapeHTML=function(str){return str.replace(/&/g,\\\"&#38;\\\").replace(/\\\"/g,\\\"&#34;\\\").replace(/'/g,\\\"&#39;\\\").replace(/</g,\\\"&#60;\\\")},exports.getMatchOffsets=function(string,regExp){var matches=[];return string.replace(regExp,function(str){matches.push({offset:arguments[arguments.length-2],length:str.length})}),matches},exports.deferredCall=function(fcn){var timer=null,callback=function(){timer=null,fcn()},deferred=function(timeout){return deferred.cancel(),timer=setTimeout(callback,timeout||0),deferred};return deferred.schedule=deferred,deferred.call=function(){return this.cancel(),fcn(),deferred},deferred.cancel=function(){return clearTimeout(timer),timer=null,deferred},deferred.isPending=function(){return timer},deferred},exports.delayedCall=function(fcn,defaultTimeout){var timer=null,callback=function(){timer=null,fcn()},_self=function(timeout){null==timer&&(timer=setTimeout(callback,timeout||defaultTimeout))};return _self.delay=function(timeout){timer&&clearTimeout(timer),timer=setTimeout(callback,timeout||defaultTimeout)},_self.schedule=_self,_self.call=function(){this.cancel(),fcn()},_self.cancel=function(){timer&&clearTimeout(timer),timer=null},_self.isPending=function(){return timer},_self}}),ace.define(\\\"ace/worker/mirror\\\",[\\\"require\\\",\\\"exports\\\",\\\"module\\\",\\\"ace/range\\\",\\\"ace/document\\\",\\\"ace/lib/lang\\\"],function(acequire,exports){\\\"use strict\\\";acequire(\\\"../range\\\").Range;var Document=acequire(\\\"../document\\\").Document,lang=acequire(\\\"../lib/lang\\\"),Mirror=exports.Mirror=function(sender){this.sender=sender;var doc=this.doc=new Document(\\\"\\\"),deferredUpdate=this.deferredUpdate=lang.delayedCall(this.onUpdate.bind(this)),_self=this;sender.on(\\\"change\\\",function(e){var data=e.data;if(data[0].start)doc.applyDeltas(data);else for(var i=0;data.length>i;i+=2){if(Array.isArray(data[i+1]))var d={action:\\\"insert\\\",start:data[i],lines:data[i+1]};else var d={action:\\\"remove\\\",start:data[i],end:data[i+1]};doc.applyDelta(d,!0)}return _self.$timeout?deferredUpdate.schedule(_self.$timeout):(_self.onUpdate(),void 0)})};(function(){this.$timeout=500,this.setTimeout=function(timeout){this.$timeout=timeout},this.setValue=function(value){this.doc.setValue(value),this.deferredUpdate.schedule(this.$timeout)},this.getValue=function(callbackId){this.sender.callback(this.doc.getValue(),callbackId)},this.onUpdate=function(){},this.isPending=function(){return this.deferredUpdate.isPending()}}).call(Mirror.prototype)}),ace.define(\\\"ace/mode/json/json_parse\\\",[\\\"require\\\",\\\"exports\\\",\\\"module\\\"],function(){\\\"use strict\\\";var at,ch,text,value,escapee={'\\\"':'\\\"',\\\"\\\\\\\\\\\":\\\"\\\\\\\\\\\",\\\"/\\\":\\\"/\\\",b:\\\"\\\\b\\\",f:\\\"\\\\f\\\",n:\\\"\\\\n\\\",r:\\\"\\\\r\\\",t:\\\"\\t\\\"},error=function(m){throw{name:\\\"SyntaxError\\\",message:m,at:at,text:text}},next=function(c){return c&&c!==ch&&error(\\\"Expected '\\\"+c+\\\"' instead of '\\\"+ch+\\\"'\\\"),ch=text.charAt(at),at+=1,ch},number=function(){var number,string=\\\"\\\";for(\\\"-\\\"===ch&&(string=\\\"-\\\",next(\\\"-\\\"));ch>=\\\"0\\\"&&\\\"9\\\">=ch;)string+=ch,next();if(\\\".\\\"===ch)for(string+=\\\".\\\";next()&&ch>=\\\"0\\\"&&\\\"9\\\">=ch;)string+=ch;if(\\\"e\\\"===ch||\\\"E\\\"===ch)for(string+=ch,next(),(\\\"-\\\"===ch||\\\"+\\\"===ch)&&(string+=ch,next());ch>=\\\"0\\\"&&\\\"9\\\">=ch;)string+=ch,next();return number=+string,isNaN(number)?(error(\\\"Bad number\\\"),void 0):number},string=function(){var hex,i,uffff,string=\\\"\\\";if('\\\"'===ch)for(;next();){if('\\\"'===ch)return next(),string;if(\\\"\\\\\\\\\\\"===ch)if(next(),\\\"u\\\"===ch){for(uffff=0,i=0;4>i&&(hex=parseInt(next(),16),isFinite(hex));i+=1)uffff=16*uffff+hex;string+=String.fromCharCode(uffff)}else{if(\\\"string\\\"!=typeof escapee[ch])break;string+=escapee[ch]}else string+=ch}error(\\\"Bad string\\\")},white=function(){for(;ch&&\\\" \\\">=ch;)next()},word=function(){switch(ch){case\\\"t\\\":return next(\\\"t\\\"),next(\\\"r\\\"),next(\\\"u\\\"),next(\\\"e\\\"),!0;case\\\"f\\\":return next(\\\"f\\\"),next(\\\"a\\\"),next(\\\"l\\\"),next(\\\"s\\\"),next(\\\"e\\\"),!1;case\\\"n\\\":return next(\\\"n\\\"),next(\\\"u\\\"),next(\\\"l\\\"),next(\\\"l\\\"),null}error(\\\"Unexpected '\\\"+ch+\\\"'\\\")},array=function(){var array=[];if(\\\"[\\\"===ch){if(next(\\\"[\\\"),white(),\\\"]\\\"===ch)return next(\\\"]\\\"),array;for(;ch;){if(array.push(value()),white(),\\\"]\\\"===ch)return next(\\\"]\\\"),array;next(\\\",\\\"),white()}}error(\\\"Bad array\\\")},object=function(){var key,object={};if(\\\"{\\\"===ch){if(next(\\\"{\\\"),white(),\\\"}\\\"===ch)return next(\\\"}\\\"),object;for(;ch;){if(key=string(),white(),next(\\\":\\\"),Object.hasOwnProperty.call(object,key)&&error('Duplicate key \\\"'+key+'\\\"'),object[key]=value(),white(),\\\"}\\\"===ch)return next(\\\"}\\\"),object;next(\\\",\\\"),white()}}error(\\\"Bad object\\\")};return value=function(){switch(white(),ch){case\\\"{\\\":return object();case\\\"[\\\":return array();case'\\\"':return string();case\\\"-\\\":return number();default:return ch>=\\\"0\\\"&&\\\"9\\\">=ch?number():word()}},function(source,reviver){var result;return text=source,at=0,ch=\\\" \\\",result=value(),white(),ch&&error(\\\"Syntax error\\\"),\\\"function\\\"==typeof reviver?function walk(holder,key){var k,v,value=holder[key];if(value&&\\\"object\\\"==typeof value)for(k in value)Object.hasOwnProperty.call(value,k)&&(v=walk(value,k),void 0!==v?value[k]=v:delete value[k]);return reviver.call(holder,key,value)}({\\\"\\\":result},\\\"\\\"):result}}),ace.define(\\\"ace/mode/json_worker\\\",[\\\"require\\\",\\\"exports\\\",\\\"module\\\",\\\"ace/lib/oop\\\",\\\"ace/worker/mirror\\\",\\\"ace/mode/json/json_parse\\\"],function(acequire,exports){\\\"use strict\\\";var oop=acequire(\\\"../lib/oop\\\"),Mirror=acequire(\\\"../worker/mirror\\\").Mirror,parse=acequire(\\\"./json/json_parse\\\"),JsonWorker=exports.JsonWorker=function(sender){Mirror.call(this,sender),this.setTimeout(200)};oop.inherits(JsonWorker,Mirror),function(){this.onUpdate=function(){var value=this.doc.getValue(),errors=[];try{value&&parse(value)}catch(e){var pos=this.doc.indexToPosition(e.at-1);errors.push({row:pos.row,column:pos.column,text:e.message,type:\\\"error\\\"})}this.sender.emit(\\\"annotate\\\",errors)}}.call(JsonWorker.prototype)}),ace.define(\\\"ace/lib/es5-shim\\\",[\\\"require\\\",\\\"exports\\\",\\\"module\\\"],function(){function Empty(){}function doesDefinePropertyWork(object){try{return Object.defineProperty(object,\\\"sentinel\\\",{}),\\\"sentinel\\\"in object}catch(exception){}}function toInteger(n){return n=+n,n!==n?n=0:0!==n&&n!==1/0&&n!==-(1/0)&&(n=(n>0||-1)*Math.floor(Math.abs(n))),n}Function.prototype.bind||(Function.prototype.bind=function(that){var target=this;if(\\\"function\\\"!=typeof target)throw new TypeError(\\\"Function.prototype.bind called on incompatible \\\"+target);var args=slice.call(arguments,1),bound=function(){if(this instanceof bound){var result=target.apply(this,args.concat(slice.call(arguments)));return Object(result)===result?result:this}return target.apply(that,args.concat(slice.call(arguments)))};return target.prototype&&(Empty.prototype=target.prototype,bound.prototype=new Empty,Empty.prototype=null),bound});var defineGetter,defineSetter,lookupGetter,lookupSetter,supportsAccessors,call=Function.prototype.call,prototypeOfArray=Array.prototype,prototypeOfObject=Object.prototype,slice=prototypeOfArray.slice,_toString=call.bind(prototypeOfObject.toString),owns=call.bind(prototypeOfObject.hasOwnProperty);if((supportsAccessors=owns(prototypeOfObject,\\\"__defineGetter__\\\"))&&(defineGetter=call.bind(prototypeOfObject.__defineGetter__),defineSetter=call.bind(prototypeOfObject.__defineSetter__),lookupGetter=call.bind(prototypeOfObject.__lookupGetter__),lookupSetter=call.bind(prototypeOfObject.__lookupSetter__)),2!=[1,2].splice(0).length)if(function(){function makeArray(l){var a=Array(l+2);return a[0]=a[1]=0,a}var lengthBefore,array=[];return array.splice.apply(array,makeArray(20)),array.splice.apply(array,makeArray(26)),lengthBefore=array.length,array.splice(5,0,\\\"XXX\\\"),lengthBefore+1==array.length,lengthBefore+1==array.length?!0:void 0\\n}()){var array_splice=Array.prototype.splice;Array.prototype.splice=function(start,deleteCount){return arguments.length?array_splice.apply(this,[void 0===start?0:start,void 0===deleteCount?this.length-start:deleteCount].concat(slice.call(arguments,2))):[]}}else Array.prototype.splice=function(pos,removeCount){var length=this.length;pos>0?pos>length&&(pos=length):void 0==pos?pos=0:0>pos&&(pos=Math.max(length+pos,0)),length>pos+removeCount||(removeCount=length-pos);var removed=this.slice(pos,pos+removeCount),insert=slice.call(arguments,2),add=insert.length;if(pos===length)add&&this.push.apply(this,insert);else{var remove=Math.min(removeCount,length-pos),tailOldPos=pos+remove,tailNewPos=tailOldPos+add-remove,tailCount=length-tailOldPos,lengthAfterRemove=length-remove;if(tailOldPos>tailNewPos)for(var i=0;tailCount>i;++i)this[tailNewPos+i]=this[tailOldPos+i];else if(tailNewPos>tailOldPos)for(i=tailCount;i--;)this[tailNewPos+i]=this[tailOldPos+i];if(add&&pos===lengthAfterRemove)this.length=lengthAfterRemove,this.push.apply(this,insert);else for(this.length=lengthAfterRemove+add,i=0;add>i;++i)this[pos+i]=insert[i]}return removed};Array.isArray||(Array.isArray=function(obj){return\\\"[object Array]\\\"==_toString(obj)});var boxedString=Object(\\\"a\\\"),splitString=\\\"a\\\"!=boxedString[0]||!(0 in boxedString);if(Array.prototype.forEach||(Array.prototype.forEach=function(fun){var object=toObject(this),self=splitString&&\\\"[object String]\\\"==_toString(this)?this.split(\\\"\\\"):object,thisp=arguments[1],i=-1,length=self.length>>>0;if(\\\"[object Function]\\\"!=_toString(fun))throw new TypeError;for(;length>++i;)i in self&&fun.call(thisp,self[i],i,object)}),Array.prototype.map||(Array.prototype.map=function(fun){var object=toObject(this),self=splitString&&\\\"[object String]\\\"==_toString(this)?this.split(\\\"\\\"):object,length=self.length>>>0,result=Array(length),thisp=arguments[1];if(\\\"[object Function]\\\"!=_toString(fun))throw new TypeError(fun+\\\" is not a function\\\");for(var i=0;length>i;i++)i in self&&(result[i]=fun.call(thisp,self[i],i,object));return result}),Array.prototype.filter||(Array.prototype.filter=function(fun){var value,object=toObject(this),self=splitString&&\\\"[object String]\\\"==_toString(this)?this.split(\\\"\\\"):object,length=self.length>>>0,result=[],thisp=arguments[1];if(\\\"[object Function]\\\"!=_toString(fun))throw new TypeError(fun+\\\" is not a function\\\");for(var i=0;length>i;i++)i in self&&(value=self[i],fun.call(thisp,value,i,object)&&result.push(value));return result}),Array.prototype.every||(Array.prototype.every=function(fun){var object=toObject(this),self=splitString&&\\\"[object String]\\\"==_toString(this)?this.split(\\\"\\\"):object,length=self.length>>>0,thisp=arguments[1];if(\\\"[object Function]\\\"!=_toString(fun))throw new TypeError(fun+\\\" is not a function\\\");for(var i=0;length>i;i++)if(i in self&&!fun.call(thisp,self[i],i,object))return!1;return!0}),Array.prototype.some||(Array.prototype.some=function(fun){var object=toObject(this),self=splitString&&\\\"[object String]\\\"==_toString(this)?this.split(\\\"\\\"):object,length=self.length>>>0,thisp=arguments[1];if(\\\"[object Function]\\\"!=_toString(fun))throw new TypeError(fun+\\\" is not a function\\\");for(var i=0;length>i;i++)if(i in self&&fun.call(thisp,self[i],i,object))return!0;return!1}),Array.prototype.reduce||(Array.prototype.reduce=function(fun){var object=toObject(this),self=splitString&&\\\"[object String]\\\"==_toString(this)?this.split(\\\"\\\"):object,length=self.length>>>0;if(\\\"[object Function]\\\"!=_toString(fun))throw new TypeError(fun+\\\" is not a function\\\");if(!length&&1==arguments.length)throw new TypeError(\\\"reduce of empty array with no initial value\\\");var result,i=0;if(arguments.length>=2)result=arguments[1];else for(;;){if(i in self){result=self[i++];break}if(++i>=length)throw new TypeError(\\\"reduce of empty array with no initial value\\\")}for(;length>i;i++)i in self&&(result=fun.call(void 0,result,self[i],i,object));return result}),Array.prototype.reduceRight||(Array.prototype.reduceRight=function(fun){var object=toObject(this),self=splitString&&\\\"[object String]\\\"==_toString(this)?this.split(\\\"\\\"):object,length=self.length>>>0;if(\\\"[object Function]\\\"!=_toString(fun))throw new TypeError(fun+\\\" is not a function\\\");if(!length&&1==arguments.length)throw new TypeError(\\\"reduceRight of empty array with no initial value\\\");var result,i=length-1;if(arguments.length>=2)result=arguments[1];else for(;;){if(i in self){result=self[i--];break}if(0>--i)throw new TypeError(\\\"reduceRight of empty array with no initial value\\\")}do i in this&&(result=fun.call(void 0,result,self[i],i,object));while(i--);return result}),Array.prototype.indexOf&&-1==[0,1].indexOf(1,2)||(Array.prototype.indexOf=function(sought){var self=splitString&&\\\"[object String]\\\"==_toString(this)?this.split(\\\"\\\"):toObject(this),length=self.length>>>0;if(!length)return-1;var i=0;for(arguments.length>1&&(i=toInteger(arguments[1])),i=i>=0?i:Math.max(0,length+i);length>i;i++)if(i in self&&self[i]===sought)return i;return-1}),Array.prototype.lastIndexOf&&-1==[0,1].lastIndexOf(0,-3)||(Array.prototype.lastIndexOf=function(sought){var self=splitString&&\\\"[object String]\\\"==_toString(this)?this.split(\\\"\\\"):toObject(this),length=self.length>>>0;if(!length)return-1;var i=length-1;for(arguments.length>1&&(i=Math.min(i,toInteger(arguments[1]))),i=i>=0?i:length-Math.abs(i);i>=0;i--)if(i in self&&sought===self[i])return i;return-1}),Object.getPrototypeOf||(Object.getPrototypeOf=function(object){return object.__proto__||(object.constructor?object.constructor.prototype:prototypeOfObject)}),!Object.getOwnPropertyDescriptor){var ERR_NON_OBJECT=\\\"Object.getOwnPropertyDescriptor called on a non-object: \\\";Object.getOwnPropertyDescriptor=function(object,property){if(\\\"object\\\"!=typeof object&&\\\"function\\\"!=typeof object||null===object)throw new TypeError(ERR_NON_OBJECT+object);if(owns(object,property)){var descriptor,getter,setter;if(descriptor={enumerable:!0,configurable:!0},supportsAccessors){var prototype=object.__proto__;object.__proto__=prototypeOfObject;var getter=lookupGetter(object,property),setter=lookupSetter(object,property);if(object.__proto__=prototype,getter||setter)return getter&&(descriptor.get=getter),setter&&(descriptor.set=setter),descriptor}return descriptor.value=object[property],descriptor}}}if(Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(object){return Object.keys(object)}),!Object.create){var createEmpty;createEmpty=null===Object.prototype.__proto__?function(){return{__proto__:null}}:function(){var empty={};for(var i in empty)empty[i]=null;return empty.constructor=empty.hasOwnProperty=empty.propertyIsEnumerable=empty.isPrototypeOf=empty.toLocaleString=empty.toString=empty.valueOf=empty.__proto__=null,empty},Object.create=function(prototype,properties){var object;if(null===prototype)object=createEmpty();else{if(\\\"object\\\"!=typeof prototype)throw new TypeError(\\\"typeof prototype[\\\"+typeof prototype+\\\"] != 'object'\\\");var Type=function(){};Type.prototype=prototype,object=new Type,object.__proto__=prototype}return void 0!==properties&&Object.defineProperties(object,properties),object}}if(Object.defineProperty){var definePropertyWorksOnObject=doesDefinePropertyWork({}),definePropertyWorksOnDom=\\\"undefined\\\"==typeof document||doesDefinePropertyWork(document.createElement(\\\"div\\\"));if(!definePropertyWorksOnObject||!definePropertyWorksOnDom)var definePropertyFallback=Object.defineProperty}if(!Object.defineProperty||definePropertyFallback){var ERR_NON_OBJECT_DESCRIPTOR=\\\"Property description must be an object: \\\",ERR_NON_OBJECT_TARGET=\\\"Object.defineProperty called on non-object: \\\",ERR_ACCESSORS_NOT_SUPPORTED=\\\"getters & setters can not be defined on this javascript engine\\\";Object.defineProperty=function(object,property,descriptor){if(\\\"object\\\"!=typeof object&&\\\"function\\\"!=typeof object||null===object)throw new TypeError(ERR_NON_OBJECT_TARGET+object);if(\\\"object\\\"!=typeof descriptor&&\\\"function\\\"!=typeof descriptor||null===descriptor)throw new TypeError(ERR_NON_OBJECT_DESCRIPTOR+descriptor);if(definePropertyFallback)try{return definePropertyFallback.call(Object,object,property,descriptor)}catch(exception){}if(owns(descriptor,\\\"value\\\"))if(supportsAccessors&&(lookupGetter(object,property)||lookupSetter(object,property))){var prototype=object.__proto__;object.__proto__=prototypeOfObject,delete object[property],object[property]=descriptor.value,object.__proto__=prototype}else object[property]=descriptor.value;else{if(!supportsAccessors)throw new TypeError(ERR_ACCESSORS_NOT_SUPPORTED);owns(descriptor,\\\"get\\\")&&defineGetter(object,property,descriptor.get),owns(descriptor,\\\"set\\\")&&defineSetter(object,property,descriptor.set)}return object}}Object.defineProperties||(Object.defineProperties=function(object,properties){for(var property in properties)owns(properties,property)&&Object.defineProperty(object,property,properties[property]);return object}),Object.seal||(Object.seal=function(object){return object}),Object.freeze||(Object.freeze=function(object){return object});try{Object.freeze(function(){})}catch(exception){Object.freeze=function(freezeObject){return function(object){return\\\"function\\\"==typeof object?object:freezeObject(object)}}(Object.freeze)}if(Object.preventExtensions||(Object.preventExtensions=function(object){return object}),Object.isSealed||(Object.isSealed=function(){return!1}),Object.isFrozen||(Object.isFrozen=function(){return!1}),Object.isExtensible||(Object.isExtensible=function(object){if(Object(object)===object)throw new TypeError;for(var name=\\\"\\\";owns(object,name);)name+=\\\"?\\\";object[name]=!0;var returnValue=owns(object,name);return delete object[name],returnValue}),!Object.keys){var hasDontEnumBug=!0,dontEnums=[\\\"toString\\\",\\\"toLocaleString\\\",\\\"valueOf\\\",\\\"hasOwnProperty\\\",\\\"isPrototypeOf\\\",\\\"propertyIsEnumerable\\\",\\\"constructor\\\"],dontEnumsLength=dontEnums.length;for(var key in{toString:null})hasDontEnumBug=!1;Object.keys=function(object){if(\\\"object\\\"!=typeof object&&\\\"function\\\"!=typeof object||null===object)throw new TypeError(\\\"Object.keys called on a non-object\\\");var keys=[];for(var name in object)owns(object,name)&&keys.push(name);if(hasDontEnumBug)for(var i=0,ii=dontEnumsLength;ii>i;i++){var dontEnum=dontEnums[i];owns(object,dontEnum)&&keys.push(dontEnum)}return keys}}Date.now||(Date.now=function(){return(new Date).getTime()});var ws=\\\"\\t\\\\n\\u000b\\\\f\\\\r   ᠎              \\\\u2028\\\\u2029\\\";if(!String.prototype.trim||ws.trim()){ws=\\\"[\\\"+ws+\\\"]\\\";var trimBeginRegexp=RegExp(\\\"^\\\"+ws+ws+\\\"*\\\"),trimEndRegexp=RegExp(ws+ws+\\\"*$\\\");String.prototype.trim=function(){return(this+\\\"\\\").replace(trimBeginRegexp,\\\"\\\").replace(trimEndRegexp,\\\"\\\")}}var toObject=function(o){if(null==o)throw new TypeError(\\\"can't convert \\\"+o+\\\" to object\\\");return Object(o)}});\";","import classNames from 'classnames';\nimport * as React from 'react';\n\nexport interface ITabsProps {\n children: any;\n className?: string;\n style?: React.CSSProperties;\n}\n\nexport function Tabs({ children, className, style }: ITabsProps) {\n return (\n <ul className={classNames('tabs-basic', 'list-unstyled', className)} style={style}>\n {children}\n </ul>\n );\n}\n\nexport interface ITabProps {\n selected: boolean;\n children: JSX.Element | JSX.Element[];\n className?: string;\n}\n\nexport function Tab({ selected = false, children, className }: ITabProps) {\n return <li className={classNames(selected ? 'selected' : '', className)}>{children}</li>;\n}\n","ace.define(\"ace/mode/json_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar JsonHighlightRules = function() {\n this.$rules = {\n \"start\" : [\n {\n token : \"variable\", // single line\n regex : '[\"](?:(?:\\\\\\\\.)|(?:[^\"\\\\\\\\]))*?[\"]\\\\s*(?=:)'\n }, {\n token : \"string\", // single line\n regex : '\"',\n next : \"string\"\n }, {\n token : \"constant.numeric\", // hex\n regex : \"0[xX][0-9a-fA-F]+\\\\b\"\n }, {\n token : \"constant.numeric\", // float\n regex : \"[+-]?\\\\d+(?:(?:\\\\.\\\\d*)?(?:[eE][+-]?\\\\d+)?)?\\\\b\"\n }, {\n token : \"constant.language.boolean\",\n regex : \"(?:true|false)\\\\b\"\n }, {\n token : \"text\", // single quoted strings are not allowed\n regex : \"['](?:(?:\\\\\\\\.)|(?:[^'\\\\\\\\]))*?[']\"\n }, {\n token : \"comment\", // comments are not allowed, but who cares?\n regex : \"\\\\/\\\\/.*$\"\n }, {\n token : \"comment.start\", // comments are not allowed, but who cares?\n regex : \"\\\\/\\\\*\",\n next : \"comment\"\n }, {\n token : \"paren.lparen\",\n regex : \"[[({]\"\n }, {\n token : \"paren.rparen\",\n regex : \"[\\\\])}]\"\n }, {\n token : \"text\",\n regex : \"\\\\s+\"\n }\n ],\n \"string\" : [\n {\n token : \"constant.language.escape\",\n regex : /\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|[\"\\\\\\/bfnrt])/\n }, {\n token : \"string\",\n regex : '\"|$',\n next : \"start\"\n }, {\n defaultToken : \"string\"\n }\n ],\n \"comment\" : [\n {\n token : \"comment.end\", // comments are not allowed, but who cares?\n regex : \"\\\\*\\\\/\",\n next : \"start\"\n }, {\n defaultToken: \"comment\"\n }\n ]\n };\n \n};\n\noop.inherits(JsonHighlightRules, TextHighlightRules);\n\nexports.JsonHighlightRules = JsonHighlightRules;\n});\n\nace.define(\"ace/mode/matching_brace_outdent\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar Range = acequire(\"../range\").Range;\n\nvar MatchingBraceOutdent = function() {};\n\n(function() {\n\n this.checkOutdent = function(line, input) {\n if (! /^\\s+$/.test(line))\n return false;\n\n return /^\\s*\\}/.test(input);\n };\n\n this.autoOutdent = function(doc, row) {\n var line = doc.getLine(row);\n var match = line.match(/^(\\s*\\})/);\n\n if (!match) return 0;\n\n var column = match[1].length;\n var openBracePos = doc.findMatchingBracket({row: row, column: column});\n\n if (!openBracePos || openBracePos.row == row) return 0;\n\n var indent = this.$getIndent(doc.getLine(openBracePos.row));\n doc.replace(new Range(row, 0, row, column-1), indent);\n };\n\n this.$getIndent = function(line) {\n return line.match(/^\\s*/)[0];\n };\n\n}).call(MatchingBraceOutdent.prototype);\n\nexports.MatchingBraceOutdent = MatchingBraceOutdent;\n});\n\nace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../../lib/oop\");\nvar Range = acequire(\"../../range\").Range;\nvar BaseFoldMode = acequire(\"./fold_mode\").FoldMode;\n\nvar FoldMode = exports.FoldMode = function(commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(\n this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start)\n );\n this.foldingStopMarker = new RegExp(\n this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end)\n );\n }\n};\noop.inherits(FoldMode, BaseFoldMode);\n\n(function() {\n \n this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n this.singleLineBlockCommentRe= /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n this._getFoldWidgetBase = this.getFoldWidget;\n this.getFoldWidget = function(session, foldStyle, row) {\n var line = session.getLine(row);\n \n if (this.singleLineBlockCommentRe.test(line)) {\n if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))\n return \"\";\n }\n \n var fw = this._getFoldWidgetBase(session, foldStyle, row);\n \n if (!fw && this.startRegionRe.test(line))\n return \"start\"; // lineCommentRegionStart\n \n return fw;\n };\n\n this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) {\n var line = session.getLine(row);\n \n if (this.startRegionRe.test(line))\n return this.getCommentRegionBlock(session, line, row);\n \n var match = line.match(this.foldingStartMarker);\n if (match) {\n var i = match.index;\n\n if (match[1])\n return this.openingBracketBlock(session, match[1], row, i);\n \n var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n \n if (range && !range.isMultiLine()) {\n if (forceMultiline) {\n range = this.getSectionRange(session, row);\n } else if (foldStyle != \"all\")\n range = null;\n }\n \n return range;\n }\n\n if (foldStyle === \"markbegin\")\n return;\n\n var match = line.match(this.foldingStopMarker);\n if (match) {\n var i = match.index + match[0].length;\n\n if (match[1])\n return this.closingBracketBlock(session, match[1], row, i);\n\n return session.getCommentFoldRange(row, i, -1);\n }\n };\n \n this.getSectionRange = function(session, row) {\n var line = session.getLine(row);\n var startIndent = line.search(/\\S/);\n var startRow = row;\n var startColumn = line.length;\n row = row + 1;\n var endRow = row;\n var maxRow = session.getLength();\n while (++row < maxRow) {\n line = session.getLine(row);\n var indent = line.search(/\\S/);\n if (indent === -1)\n continue;\n if (startIndent > indent)\n break;\n var subRange = this.getFoldWidgetRange(session, \"all\", row);\n \n if (subRange) {\n if (subRange.start.row <= startRow) {\n break;\n } else if (subRange.isMultiLine()) {\n row = subRange.end.row;\n } else if (startIndent == indent) {\n break;\n }\n }\n endRow = row;\n }\n \n return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n };\n this.getCommentRegionBlock = function(session, line, row) {\n var startColumn = line.search(/\\s*$/);\n var maxRow = session.getLength();\n var startRow = row;\n \n var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n var depth = 1;\n while (++row < maxRow) {\n line = session.getLine(row);\n var m = re.exec(line);\n if (!m) continue;\n if (m[1]) depth--;\n else depth++;\n\n if (!depth) break;\n }\n\n var endRow = row;\n if (endRow > startRow) {\n return new Range(startRow, startColumn, endRow, line.length);\n }\n };\n\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/json\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/json_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/mode/behaviour/cstyle\",\"ace/mode/folding/cstyle\",\"ace/worker/worker_client\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextMode = acequire(\"./text\").Mode;\nvar HighlightRules = acequire(\"./json_highlight_rules\").JsonHighlightRules;\nvar MatchingBraceOutdent = acequire(\"./matching_brace_outdent\").MatchingBraceOutdent;\nvar CstyleBehaviour = acequire(\"./behaviour/cstyle\").CstyleBehaviour;\nvar CStyleFoldMode = acequire(\"./folding/cstyle\").FoldMode;\nvar WorkerClient = acequire(\"../worker/worker_client\").WorkerClient;\n\nvar Mode = function() {\n this.HighlightRules = HighlightRules;\n this.$outdent = new MatchingBraceOutdent();\n this.$behaviour = new CstyleBehaviour();\n this.foldingRules = new CStyleFoldMode();\n};\noop.inherits(Mode, TextMode);\n\n(function() {\n\n this.getNextLineIndent = function(state, line, tab) {\n var indent = this.$getIndent(line);\n\n if (state == \"start\") {\n var match = line.match(/^.*[\\{\\(\\[]\\s*$/);\n if (match) {\n indent += tab;\n }\n }\n\n return indent;\n };\n\n this.checkOutdent = function(state, line, input) {\n return this.$outdent.checkOutdent(line, input);\n };\n\n this.autoOutdent = function(state, doc, row) {\n this.$outdent.autoOutdent(doc, row);\n };\n\n this.createWorker = function(session) {\n var worker = new WorkerClient([\"ace\"], require(\"../worker/json\"), \"JsonWorker\");\n worker.attachToDocument(session.getDocument());\n\n worker.on(\"annotate\", function(e) {\n session.setAnnotations(e.data);\n });\n\n worker.on(\"terminate\", function() {\n session.clearAnnotations();\n });\n\n return worker;\n };\n\n\n this.$id = \"ace/mode/json\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n","import 'brace/ext/searchbox';\nimport 'brace/mode/json';\nimport * as Creators from 'kayenta/actions/creators';\nimport { DISABLE_EDIT_CONFIG } from 'kayenta/layout/disableable';\nimport Styleguide from 'kayenta/layout/styleguide';\nimport { Tab, Tabs } from 'kayenta/layout/tabs';\nimport { ICanaryState } from 'kayenta/reducers';\nimport { mapStateToConfig } from 'kayenta/service/canaryConfig.service';\nimport { get, omit } from 'lodash';\nimport * as React from 'react';\nimport { Modal } from 'react-bootstrap';\nimport { connect } from 'react-redux';\nimport { Action } from 'redux';\n\nimport { DiffView, IJsonDiff, JsonEditor, JsonUtils } from '@spinnaker/core';\n\nimport './configJson.less';\n\ninterface IConfigJsonDispatchProps {\n closeModal: () => void;\n setConfigJson: (json: string) => void;\n updateConfig: (event: any) => void;\n setTabState: (state: ConfigJsonModalTabState) => () => void;\n}\n\ninterface IConfigJsonStateProps {\n show: boolean;\n disabled: boolean;\n configJson: string;\n id: string;\n deserializationError: string;\n tabState: ConfigJsonModalTabState;\n diff: IJsonDiff;\n}\n\nexport enum ConfigJsonModalTabState {\n Edit,\n Diff,\n}\n\n/*\n * Modal for viewing canary config JSON.\n */\nfunction ConfigJsonModal({\n show,\n disabled,\n configJson,\n id,\n deserializationError,\n closeModal,\n setConfigJson,\n updateConfig,\n setTabState,\n tabState,\n diff,\n}: IConfigJsonDispatchProps & IConfigJsonStateProps) {\n return (\n <Modal show={show} onHide={(): void => null} bsSize=\"large\">\n <Styleguide>\n <Modal.Header>\n <Modal.Title>JSON</Modal.Title>\n </Modal.Header>\n <Modal.Body>\n <section>\n <Tabs>\n <Tab selected={tabState === ConfigJsonModalTabState.Edit}>\n <a onClick={setTabState(ConfigJsonModalTabState.Edit)}>Edit</a>\n </Tab>\n <Tab selected={tabState === ConfigJsonModalTabState.Diff}>\n <a onClick={setTabState(ConfigJsonModalTabState.Diff)}>Diff</a>\n </Tab>\n </Tabs>\n </section>\n <section className=\"kayenta-config-json\">\n {tabState === ConfigJsonModalTabState.Edit && (\n <JsonEditor value={configJson} debounceChangePeriod={500} onChange={setConfigJson} readOnly={disabled} />\n )}\n {tabState === ConfigJsonModalTabState.Diff && !deserializationError && (\n <div className=\"modal-show-history\">\n <div className=\"show-history\">\n <DiffView diff={diff} />\n </div>\n </div>\n )}\n {!!deserializationError && (\n <div className=\"horizontal row center\">\n <span className=\"error-message\">Error: {deserializationError}</span>\n </div>\n )}\n </section>\n </Modal.Body>\n <Modal.Footer>\n <ul className=\"list-inline pull-right\">\n <li>\n <button className=\"passive\" onClick={closeModal}>\n Close\n </button>\n </li>\n <li>\n <button\n className=\"primary\"\n data-id={id}\n data-serialized={configJson}\n onClick={updateConfig}\n disabled={!!deserializationError || disabled}\n >\n Update\n </button>\n </li>\n </ul>\n </Modal.Footer>\n </Styleguide>\n </Modal>\n );\n}\n\nfunction mapDispatchToProps(dispatch: (action: Action & any) => void): IConfigJsonDispatchProps {\n return {\n closeModal: () => dispatch(Creators.closeConfigJsonModal()),\n setTabState: (state: ConfigJsonModalTabState) => () => dispatch(Creators.setConfigJsonModalTabState({ state })),\n setConfigJson: (json: string) => dispatch(Creators.setConfigJson({ json })),\n updateConfig: (event: any) => {\n dispatch(\n Creators.selectConfig({\n config: {\n id: event.target.dataset.id,\n ...JSON.parse(event.target.dataset.serialized),\n },\n }),\n );\n },\n };\n}\n\nfunction mapStateToProps(state: ICanaryState): IConfigJsonStateProps {\n const id: string = get(state, 'selectedConfig.config.id');\n const persistedConfig = JsonUtils.makeSortedStringFromObject(\n omit(state.data.configs.find((c) => c.id === id) || {}, 'id'),\n );\n\n const configJson =\n state.selectedConfig.json.configJson ||\n JsonUtils.makeSortedStringFromObject(omit(mapStateToConfig(state) || {}, 'id'));\n\n const disabled = get(state, DISABLE_EDIT_CONFIG, false);\n\n return {\n configJson,\n id,\n disabled,\n show: state.app.configJsonModalOpen,\n deserializationError: state.selectedConfig.json.error,\n tabState: state.app.configJsonModalTabState,\n diff: state.selectedConfig.json.error ? null : JsonUtils.diff(persistedConfig, configJson, true),\n };\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(ConfigJsonModal);\n","import { Action, combineReducers, Reducer } from 'redux';\nimport { combineActions, handleActions } from 'redux-actions';\n\nimport * as Actions from '../actions';\nimport { CanarySettings } from '../canary.settings';\nimport { ConfigJsonModalTabState } from '../edit/configJsonModal';\n\nexport interface IAppState {\n deleteConfigModalOpen: boolean;\n configJsonModalOpen: boolean;\n configJsonModalTabState: ConfigJsonModalTabState;\n disableConfigEdit: boolean;\n executionsCount: number;\n}\n\nconst executionsCount = handleActions(\n {\n [Actions.SET_EXECUTIONS_COUNT]: (_state: IAppState, action: Action & any) => action.payload.count,\n },\n CanarySettings.defaultExecutionCount ?? CanarySettings.executionsCountOptions?.[0] ?? 20,\n);\n\nconst deleteConfigModalOpen = handleActions(\n {\n [Actions.DELETE_CONFIG_MODAL_OPEN]: () => true,\n [combineActions(Actions.DELETE_CONFIG_MODAL_CLOSE, Actions.DELETE_CONFIG_SUCCESS)]: () => false,\n },\n false,\n);\n\nconst configJsonModalOpen = handleActions(\n {\n [Actions.CONFIG_JSON_MODAL_OPEN]: () => true,\n [combineActions(Actions.CONFIG_JSON_MODAL_CLOSE, Actions.SELECT_CONFIG)]: () => false,\n },\n false,\n);\n\nconst configJsonModalTabState = handleActions(\n {\n [Actions.SET_CONFIG_JSON_MODAL_TAB_STATE]: (_state: ConfigJsonModalTabState, action: Action & any) =>\n action.payload.state,\n [Actions.CONFIG_JSON_MODAL_OPEN]: () => ConfigJsonModalTabState.Edit,\n },\n ConfigJsonModalTabState.Edit,\n);\n\nconst disableConfigEdit = handleActions<boolean>({}, false);\n\nexport const app: Reducer<IAppState> = combineReducers<IAppState>({\n executionsCount,\n deleteConfigModalOpen,\n configJsonModalOpen,\n configJsonModalTabState,\n disableConfigEdit,\n});\n","import {\n ICanaryConfig,\n ICanaryConfigSummary,\n ICanaryExecutionStatusResult,\n IJudge,\n IKayentaAccount,\n IMetricsServiceMetadata,\n} from 'kayenta/domain';\nimport { without } from 'lodash';\nimport { Action, combineReducers, Reducer } from 'redux';\nimport { handleActions } from 'redux-actions';\n\nimport { Application } from '@spinnaker/core';\n\nimport * as Actions from '../actions';\nimport { AsyncRequestState } from './asyncRequest';\n\ninterface IMetricsServiceMetadataState {\n load: AsyncRequestState;\n data: IMetricsServiceMetadata[];\n}\n\ninterface IExecutionsState {\n load: AsyncRequestState;\n data: ICanaryExecutionStatusResult[];\n}\n\ninterface IKayentaAccountsState {\n load: AsyncRequestState;\n data: IKayentaAccount[];\n}\n\nexport interface IDataState {\n application: Application;\n configSummaries: ICanaryConfigSummary[];\n configs: ICanaryConfig[];\n judges: IJudge[];\n metricsServiceMetadata: IMetricsServiceMetadataState;\n executions: IExecutionsState;\n kayentaAccounts: IKayentaAccountsState;\n}\n\nexport const application = handleActions(\n {\n [Actions.INITIALIZE]: (_state: Application, action: Action & any) => action.state.data.application,\n },\n null,\n);\n\nexport const configSummaries = handleActions(\n {\n [Actions.INITIALIZE]: (_state: ICanaryConfigSummary, action: Action & any) => action.state.data.configSummaries,\n [Actions.UPDATE_CONFIG_SUMMARIES]: (_state: ICanaryConfigSummary, action: Action & any) =>\n action.payload.configSummaries,\n },\n [],\n);\n\nconst configs = handleActions(\n {\n [Actions.LOAD_CONFIG_SUCCESS]: (state: ICanaryConfig[], action: Action & any): ICanaryConfig[] => {\n if (state.some((config) => config.id === action.payload.config.id)) {\n return without(\n state,\n state.find((config) => config.id === action.payload.config.id),\n ).concat([action.payload.config]);\n } else {\n return state.concat([action.payload.config]);\n }\n },\n },\n [],\n);\n\nconst judges = handleActions(\n {\n [Actions.INITIALIZE]: (_state: IJudge[], action: Action & any): IJudge[] => action.state.data.judges,\n [Actions.UPDATE_JUDGES]: (_state: IJudge[], action: Action & any): IJudge[] => action.payload.judges,\n },\n null,\n);\n\nconst executions = combineReducers<IExecutionsState>({\n data: handleActions(\n {\n [Actions.LOAD_EXECUTIONS_SUCCESS]: (_state: ICanaryExecutionStatusResult[], action: Action & any) =>\n action.payload.executions,\n },\n [],\n ),\n load: handleActions(\n {\n [Actions.LOAD_EXECUTIONS_REQUEST]: () => AsyncRequestState.Requesting,\n [Actions.LOAD_EXECUTIONS_SUCCESS]: () => AsyncRequestState.Fulfilled,\n [Actions.LOAD_EXECUTIONS_FAILURE]: () => AsyncRequestState.Failed,\n },\n AsyncRequestState.Fulfilled,\n ),\n});\n\nconst metricsServiceMetadata = combineReducers<IMetricsServiceMetadataState>({\n load: handleActions(\n {\n [Actions.LOAD_METRICS_SERVICE_METADATA_REQUEST]: () => AsyncRequestState.Requesting,\n [Actions.LOAD_METRICS_SERVICE_METADATA_SUCCESS]: () => AsyncRequestState.Fulfilled,\n [Actions.LOAD_METRICS_SERVICE_METADATA_FAILURE]: () => AsyncRequestState.Failed,\n },\n AsyncRequestState.Fulfilled,\n ),\n data: handleActions(\n {\n [Actions.LOAD_METRICS_SERVICE_METADATA_SUCCESS]: (_state: IMetricsServiceMetadata[], action: Action & any) =>\n action.payload.data,\n [Actions.UPDATE_PROMETHEUS_METRIC_TYPE]: (state: IMetricsServiceMetadata, action: Action & any) => {\n // When the user clears the Prometheus metric type dropdown,\n // clear the backing set of metric descriptors, since they\n // no longer apply to the filter.\n return action.payload.metricName ? state : [];\n },\n [Actions.UPDATE_STACKDRIVER_METRIC_TYPE]: (state: IMetricsServiceMetadata, action: Action & any) => {\n // When the user clears the Stackdriver metric type dropdown,\n // clear the backing set of metric descriptors, since they\n // no longer apply to the filter.\n return action.payload.metricType ? state : [];\n },\n [Actions.UPDATE_DATADOG_METRIC_TYPE]: (state: IMetricsServiceMetadata, action: Action & any) => {\n // When the user clears the Datadog metric type dropdown,\n // clear the backing set of metric descriptors, since they\n // no longer apply to the filter.\n return action.payload.metricType ? state : [];\n },\n [Actions.UPDATE_NEWRELIC_SELECT]: (state: IMetricsServiceMetadata, action: Action & any) => {\n return action.payload.select ? state : [];\n },\n [Actions.UPDATE_GRAPHITE_METRIC_NAME]: (state: IMetricsServiceMetadata, action: Action & any) => {\n return action.payload.metricName ? state : [];\n },\n [Actions.EDIT_METRIC_BEGIN]: () => [],\n },\n [],\n ),\n});\n\nconst kayentaAccounts = combineReducers<IKayentaAccountsState>({\n load: handleActions<AsyncRequestState>(\n {\n [Actions.LOAD_KAYENTA_ACCOUNTS_REQUEST]: () => AsyncRequestState.Requesting,\n [Actions.LOAD_KAYENTA_ACCOUNTS_SUCCESS]: () => AsyncRequestState.Fulfilled,\n [Actions.LOAD_KAYENTA_ACCOUNTS_FAILURE]: () => AsyncRequestState.Failed,\n },\n AsyncRequestState.Requesting,\n ),\n data: handleActions<IKayentaAccount[]>(\n {\n [Actions.LOAD_KAYENTA_ACCOUNTS_SUCCESS]: (_state, action: Action & any) => action.payload.accounts,\n },\n [],\n ),\n});\n\nexport const data: Reducer<IDataState> = combineReducers<IDataState>({\n application,\n configSummaries,\n judges,\n configs,\n executions,\n metricsServiceMetadata,\n kayentaAccounts,\n});\n","import * as Creators from 'kayenta/actions/creators';\nimport { DISABLE_EDIT_CONFIG, DisableableInput } from 'kayenta/layout/disableable';\nimport { ICanaryState } from 'kayenta/reducers';\nimport * as React from 'react';\nimport { connect } from 'react-redux';\nimport { Action } from 'redux';\n\ninterface IGroupNameStateProps {\n group: string;\n edit: string;\n editing: boolean;\n}\n\ninterface IGroupNameDispatchProps {\n handleSubmit: (event: any) => void;\n handleUpdate: (event: any) => void;\n}\n\nexport interface IGroupNameOwnProps {\n group: string;\n editing: boolean;\n onClick: (event: React.SyntheticEvent<HTMLAnchorElement>) => void;\n defaultGroup: string;\n}\n\n/*\n * Configures a group name.\n */\nfunction GroupName({\n editing,\n edit,\n group,\n onClick,\n handleUpdate,\n handleSubmit,\n defaultGroup,\n}: IGroupNameStateProps & IGroupNameDispatchProps & IGroupNameOwnProps) {\n if (editing) {\n return (\n <form onSubmit={handleSubmit} onBlur={handleSubmit} data-group={group} data-edit={edit}>\n <DisableableInput\n autoFocus={true}\n value={edit}\n onChange={handleUpdate}\n disabledStateKeys={[DISABLE_EDIT_CONFIG]}\n />\n </form>\n );\n } else {\n return (\n <a data-group={group} onClick={onClick}>\n {group || defaultGroup}\n </a>\n );\n }\n}\n\nfunction mapStateToProps(state: ICanaryState, ownProps: IGroupNameOwnProps): IGroupNameStateProps & IGroupNameOwnProps {\n return {\n edit: state.selectedConfig.group.edit,\n ...ownProps,\n };\n}\n\nfunction mapDispatchToProps(dispatch: (action: Action & any) => void): IGroupNameDispatchProps {\n return {\n handleUpdate: (event: any) => {\n dispatch(Creators.editGroupUpdate({ edit: event.target.value }));\n },\n handleSubmit: (event: any) => {\n dispatch(Creators.editGroupConfirm({ ...event.currentTarget.dataset }));\n event.stopPropagation();\n event.preventDefault();\n },\n };\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(GroupName);\n","import classNames from 'classnames';\nimport * as Creators from 'kayenta/actions/creators';\nimport { DISABLE_EDIT_CONFIG, DisableableButton } from 'kayenta/layout/disableable';\nimport { Tab, Tabs } from 'kayenta/layout/tabs';\nimport { ICanaryState } from 'kayenta/reducers';\nimport * as React from 'react';\nimport { connect } from 'react-redux';\nimport { Action } from 'redux';\n\nimport { noop } from '@spinnaker/core';\n\nimport GroupName from './groupName';\n\nexport const ALL = 'all';\n\ninterface IGroupTabsStateProps {\n groupList: string[];\n selectedGroup: string;\n editing: boolean;\n disableConfigEdit: boolean;\n}\n\ninterface IGroupTabsDispatchProps {\n selectGroup: (event: any) => void;\n addGroup: (event: any) => void;\n editGroupBegin: (event: any) => void;\n}\n\n/*\n * Configures an entire list of metrics.\n */\nfunction GroupTabs({\n groupList,\n selectedGroup,\n selectGroup,\n addGroup,\n editing,\n editGroupBegin,\n disableConfigEdit,\n}: IGroupTabsStateProps & IGroupTabsDispatchProps) {\n const GroupTab = ({ group, editable = false }: { group: string; editable?: boolean }) => {\n const selected = selectedGroup === group;\n return (\n <Tab selected={selected}>\n <GroupName group={group} editing={selected && editing} onClick={selectGroup} defaultGroup={ALL} />\n {selected && editable && !editing && (\n <i\n data-group={group}\n onClick={disableConfigEdit ? noop : editGroupBegin}\n className={classNames('fas', 'fa-pencil-alt', { disabled: disableConfigEdit })}\n />\n )}\n </Tab>\n );\n };\n return (\n <section className=\"group-tabs\">\n <Tabs style={{ marginBottom: '0' }}>\n <GroupTab group=\"\" />\n {groupList.map((group) => (\n <GroupTab key={group} group={group} editable={true} />\n ))}\n <DisableableButton className=\"passive float-right\" onClick={addGroup} disabledStateKeys={[DISABLE_EDIT_CONFIG]}>\n Add Group\n </DisableableButton>\n </Tabs>\n </section>\n );\n}\n\nfunction mapStateToProps(state: ICanaryState): IGroupTabsStateProps {\n return {\n groupList: state.selectedConfig.group.list,\n selectedGroup: state.selectedConfig.group.selected,\n editing: !!state.selectedConfig.group.edit || state.selectedConfig.group.edit === '',\n disableConfigEdit: state.app.disableConfigEdit,\n };\n}\n\nfunction mapDispatchToProps(dispatch: (action: Action & any) => void): IGroupTabsDispatchProps {\n return {\n selectGroup: (event: any) => {\n dispatch(Creators.selectGroup({ name: event.target.dataset.group }));\n event.preventDefault();\n event.stopPropagation();\n },\n addGroup: (event: any) => {\n dispatch(Creators.addGroup());\n event.preventDefault();\n event.stopPropagation();\n },\n editGroupBegin: (event: any) => {\n dispatch(Creators.editGroupBegin({ group: event.target.dataset.group }));\n },\n };\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(GroupTabs);\n","import * as Actions from 'kayenta/actions';\nimport { Action, combineReducers } from 'redux';\nimport { combineActions, handleActions } from 'redux-actions';\n\nexport interface IEditingTemplateState {\n name: string;\n editedName: string;\n editedValue: string;\n isNew: boolean;\n}\n\nconst name = handleActions<string>(\n {\n [Actions.EDIT_TEMPLATE_BEGIN]: (_state, action: Action & any) => action.payload.name,\n [Actions.EDIT_TEMPLATE_CANCEL]: () => null,\n [Actions.ADD_TEMPLATE]: () => '',\n },\n null,\n);\n\nconst editedName = handleActions<string>(\n {\n [combineActions(Actions.EDIT_TEMPLATE_BEGIN, Actions.EDIT_TEMPLATE_NAME)]: (_state, action: Action & any) =>\n action.payload.name,\n [Actions.EDIT_TEMPLATE_CANCEL]: () => null,\n [Actions.ADD_TEMPLATE]: () => '',\n },\n null,\n);\n\nconst editedValue = handleActions<string>(\n {\n [combineActions(Actions.EDIT_TEMPLATE_VALUE, Actions.EDIT_TEMPLATE_BEGIN)]: (_state, action: Action & any) =>\n action.payload.value,\n [Actions.EDIT_TEMPLATE_CANCEL]: () => null,\n [Actions.ADD_TEMPLATE]: () => '',\n },\n null,\n);\n\nconst isNew = handleActions<boolean>(\n {\n [Actions.ADD_TEMPLATE]: () => true,\n [Actions.EDIT_TEMPLATE_CANCEL]: () => false,\n },\n false,\n);\n\nexport const editingTemplate = combineReducers<IEditingTemplateState>({\n name,\n editedName,\n editedValue,\n isNew,\n});\n","import { get } from 'lodash';\nimport { Action, combineReducers, Reducer } from 'redux';\nimport { combineActions, handleActions } from 'redux-actions';\n\nimport * as Actions from '../actions';\nimport { ICanaryMetricConfig, IGroupWeights } from '../domain/ICanaryConfig';\n\nexport interface IGroupState {\n list: string[];\n selected: string;\n groupWeights: { [group: string]: number };\n edit: string;\n}\n\nfunction groupsFromMetrics(metrics: ICanaryMetricConfig[] = []) {\n const results = metrics\n .reduce((groups, metric) => {\n return groups.concat(metric.groups.filter((g: string) => !groups.includes(g)));\n }, [])\n .sort();\n if (!results.length) {\n results.push('Group 1');\n }\n return results;\n}\n\nconst list = handleActions(\n {\n [Actions.SELECT_CONFIG]: (_state: string[], action: Action & any) =>\n groupsFromMetrics(action.payload.config.metrics),\n [Actions.ADD_METRIC]: (state: string[], action: Action & any) => {\n const groups = action.payload.metric.groups;\n return state.concat(groups.filter((g: string) => !state.includes(g)));\n },\n [Actions.ADD_GROUP]: (state: string[]) => {\n let n = 1;\n let name = null;\n do {\n name = 'Group ' + n;\n n++;\n } while (state.includes(name));\n return state.concat([name]);\n },\n },\n [],\n);\n\nconst selected = handleActions(\n {\n [Actions.SELECT_GROUP]: (_state: string, action: Action & any) => action.payload.name,\n [Actions.SELECT_CONFIG]: () => '',\n },\n '',\n);\n\nconst groupWeights = handleActions(\n {\n [Actions.SELECT_CONFIG]: (_state: IGroupWeights, action: Action & any) =>\n get(action, 'payload.config.classifier.groupWeights', {}),\n [Actions.UPDATE_GROUP_WEIGHT]: (state: IGroupWeights, action: Action & any) => ({\n ...state,\n [action.payload.group]: action.payload.weight,\n }),\n },\n {},\n);\n\nconst edit = handleActions(\n {\n [Actions.EDIT_GROUP_BEGIN]: (_state: string, action: Action & any) => action.payload.group,\n [Actions.EDIT_GROUP_UPDATE]: (_state: string, action: Action & any) => action.payload.edit,\n [combineActions(Actions.SELECT_GROUP, Actions.EDIT_GROUP_CONFIRM)]: () => null,\n },\n null,\n);\n\nexport const group: Reducer<IGroupState> = combineReducers<IGroupState>({\n list,\n selected,\n groupWeights,\n edit,\n});\n","import * as Actions from 'kayenta/actions';\nimport { IKayentaAction } from 'kayenta/actions/creators';\nimport { ICanaryMetricConfig } from 'kayenta/domain';\nimport { IUpdateListPayload, updateListReducer } from 'kayenta/layout/list';\nimport { IPrometheusCanaryMetricSetQueryConfig } from 'kayenta/metricStore/prometheus/domain/IPrometheusCanaryMetricSetQueryConfig';\nimport { omit } from 'lodash';\nimport { Action } from 'redux';\nimport { handleActions } from 'redux-actions';\n\nconst updateLabelBindingsReducer = updateListReducer();\nconst updateGroupByReducer = updateListReducer();\n\ntype IPrometheusMetricConfig = ICanaryMetricConfig<IPrometheusCanaryMetricSetQueryConfig>;\n\nexport const prometheusMetricConfigReducer = handleActions<IPrometheusMetricConfig, Action & any>(\n {\n [Actions.UPDATE_PROMETHEUS_METRIC_TYPE]: (state: IPrometheusMetricConfig, action: Action & any) => ({\n ...state,\n query: { ...state.query, metricName: action.payload.metricName, type: 'prometheus' },\n }),\n [Actions.UPDATE_PROMETHEUS_METRIC_QUERY_FIELD]: (state: IPrometheusMetricConfig, action: Action & any) => {\n if (!action.payload.value) {\n return {\n ...state,\n query: omit(state.query, action.payload.field),\n };\n }\n\n return {\n ...state,\n query: { ...state.query, [action.payload.field]: action.payload.value },\n };\n },\n [Actions.UPDATE_PROMETHEUS_LABEL_BINDINGS]: (\n state: IPrometheusMetricConfig,\n action: IKayentaAction<IUpdateListPayload>,\n ) => ({\n ...state,\n query: {\n ...state.query,\n labelBindings: updateLabelBindingsReducer(state.query.labelBindings || [], action),\n },\n }),\n [Actions.UPDATE_PROMETHEUS_GROUP_BY_FIELDS]: (\n state: IPrometheusMetricConfig,\n action: IKayentaAction<IUpdateListPayload>,\n ) => ({\n ...state,\n query: {\n ...state.query,\n groupByFields: updateGroupByReducer(state.query.groupByFields || [], action),\n },\n }),\n },\n null,\n);\n","import * as Actions from 'kayenta/actions';\nimport { ISignalFxCanaryMetricSetQueryConfig } from 'kayenta/metricStore/signalfx/domain/ISignalFxCanaryMetricSetQueryConfig';\nimport { Action } from 'redux';\nimport { handleActions } from 'redux-actions';\n\nimport { IKayentaAction } from '../actions/creators';\nimport { ICanaryMetricConfig } from '../domain';\nimport { IUpdateKeyValueListPayload, updateListReducer } from '../layout/keyValueList';\n\nconst updateQueryPairsReducer = updateListReducer();\n\ntype ISignalFxMetricConfig = ICanaryMetricConfig<ISignalFxCanaryMetricSetQueryConfig>;\n\nexport const signalFxMetricConfigReducer = handleActions(\n {\n [Actions.UPDATE_SIGNAL_FX_QUERY_PAIRS]: (\n state: ISignalFxMetricConfig,\n action: IKayentaAction<IUpdateKeyValueListPayload>,\n ) => ({\n ...state,\n query: {\n ...state.query,\n queryPairs: updateQueryPairsReducer(state.query.queryPairs || [], action),\n },\n }),\n [Actions.UPDATE_SIGNAL_FX_METRIC_NAME]: (state: ISignalFxMetricConfig, action: Action & any) => ({\n ...state,\n query: { ...state.query, metricName: action.payload.metricName },\n }),\n [Actions.UPDATE_SIGNAL_FX_AGGREGATION_METHOD]: (state: ISignalFxMetricConfig, action: Action & any) => ({\n ...state,\n query: { ...state.query, aggregationMethod: action.payload.aggregationMethod },\n }),\n },\n null,\n);\n","import * as Actions from 'kayenta/actions';\nimport { IKayentaAction } from 'kayenta/actions/creators';\nimport { ICanaryMetricConfig } from 'kayenta/domain';\nimport { IUpdateListPayload, updateListReducer } from 'kayenta/layout/list';\nimport { IStackdriverCanaryMetricSetQueryConfig } from 'kayenta/metricStore/stackdriver/domain/IStackdriverCanaryMetricSetQueryConfig';\nimport { omit } from 'lodash';\nimport { Action } from 'redux';\nimport { handleActions } from 'redux-actions';\n\nconst updateGroupByReducer = updateListReducer();\n\ntype IStackdriverMetricConfig = ICanaryMetricConfig<IStackdriverCanaryMetricSetQueryConfig>;\n\nexport const stackdriverMetricConfigReducer = handleActions<IStackdriverMetricConfig, Action & any>(\n {\n [Actions.UPDATE_STACKDRIVER_GROUP_BY_FIELDS]: (\n state: IStackdriverMetricConfig,\n action: IKayentaAction<IUpdateListPayload>,\n ) => ({\n ...state,\n query: {\n ...state.query,\n groupByFields: updateGroupByReducer(state.query.groupByFields || [], action),\n },\n }),\n [Actions.UPDATE_STACKDRIVER_METRIC_QUERY_FIELD]: (state: IStackdriverMetricConfig, action: Action & any) => {\n if (!action.payload.value) {\n return {\n ...state,\n query: omit(state.query, action.payload.field),\n };\n }\n\n return {\n ...state,\n query: { ...state.query, [action.payload.field]: action.payload.value, type: 'stackdriver' },\n };\n },\n },\n null,\n);\n","import { chain, cloneDeep, flatMap, fromPairs, get, has, omit, pick, set, unset } from 'lodash';\nimport { Action, combineReducers } from 'redux';\nimport { combineActions, handleActions } from 'redux-actions';\n\nimport * as Actions from '../actions';\nimport { AsyncRequestState } from './asyncRequest';\nimport { CanarySettings } from '../canary.settings';\nimport { ICanaryConfig, ICanaryJudgeConfig, ICanaryMetricConfig, IGroupWeights } from '../domain/ICanaryConfig';\nimport { IJudge } from '../domain/IJudge';\nimport { ALL } from '../edit/groupTabs';\nimport { JudgeSelectRenderState } from '../edit/judgeSelect';\nimport { editingTemplate, IEditingTemplateState } from './editingTemplate';\nimport { group, IGroupState } from './group';\nimport { prometheusMetricConfigReducer } from './prometheusMetricConfig';\nimport { signalFxMetricConfigReducer } from './signalFxMetricConfig';\nimport { stackdriverMetricConfigReducer } from './stackdriverMetricConfig';\nimport { IConfigValidationError } from './validators';\n\nexport interface ILoadState {\n state: AsyncRequestState;\n}\n\nexport interface ISaveState {\n state: AsyncRequestState;\n error: string;\n}\n\n// Mixing destroy/delete here because delete is a JS keyword.\nexport interface IDestroyState {\n state: AsyncRequestState;\n error: string;\n}\n\nexport interface IJsonState {\n configJson: string;\n error: string;\n}\n\nexport interface IJudgeState {\n judgeConfig: ICanaryJudgeConfig;\n renderState: JudgeSelectRenderState;\n}\n\nexport interface IChangeMetricGroupState {\n metric: string;\n toGroup: string;\n}\n\nexport interface ISelectedConfigState {\n config: ICanaryConfig;\n isInSyncWithServer: boolean;\n metricList: ICanaryMetricConfig[];\n editingMetric: ICanaryMetricConfig;\n judge: IJudgeState;\n group: IGroupState;\n load: ILoadState;\n save: ISaveState;\n destroy: IDestroyState;\n json: IJsonState;\n changeMetricGroup: IChangeMetricGroupState;\n validationErrors: IConfigValidationError[];\n editingTemplate: IEditingTemplateState;\n selectedStore: string;\n}\n\nconst config = handleActions(\n {\n [Actions.SELECT_CONFIG]: (_state: ICanaryConfig, action: Action & any) => action.payload.config,\n [Actions.UPDATE_CONFIG_NAME]: (state: ICanaryConfig, action: Action & any) => ({\n ...state,\n name: action.payload.name,\n }),\n [Actions.UPDATE_CONFIG_DESCRIPTION]: (state: ICanaryConfig, action: Action & any) => ({\n ...state,\n description: action.payload.description,\n }),\n [combineActions(Actions.DELETE_CONFIG_SUCCESS, Actions.CLEAR_SELECTED_CONFIG)]: () => null,\n [Actions.DELETE_TEMPLATE]: (state: ICanaryConfig, action: Action & any) => {\n if (!action.payload.name) {\n return state;\n }\n\n return {\n ...state,\n templates: omit(state.templates, action.payload.name),\n };\n },\n },\n null,\n);\n\nconst load = combineReducers({\n state: handleActions(\n {\n [Actions.LOAD_CONFIG_REQUEST]: () => AsyncRequestState.Requesting,\n [Actions.LOAD_CONFIG_FAILURE]: () => AsyncRequestState.Failed,\n [Actions.SELECT_CONFIG]: () => AsyncRequestState.Fulfilled,\n },\n AsyncRequestState.Requesting,\n ),\n});\n\nfunction idMetrics(metrics: ICanaryMetricConfig[] = []) {\n return metrics.map((metric, index) => ({ ...metric, id: '#' + index }));\n}\n\nconst metricList = handleActions(\n {\n [Actions.SELECT_CONFIG]: (_state: ICanaryMetricConfig[], action: Action & any) =>\n idMetrics(action.payload.config.metrics),\n [Actions.ADD_METRIC]: (state: ICanaryMetricConfig[], action: Action & any) =>\n idMetrics(state.concat([action.payload.metric])),\n [Actions.REMOVE_METRIC]: (state: ICanaryMetricConfig[], action: Action & any) =>\n idMetrics(state.filter((metric) => metric.id !== action.payload.id)),\n [Actions.DELETE_TEMPLATE]: (state: ICanaryMetricConfig[], action: Action & any) =>\n state.map((m) => removeDeletedTemplateFromMetric(m, action.payload.name)),\n },\n [],\n);\n\nfunction removeDeletedTemplateFromMetric(metric: ICanaryMetricConfig, deletedTemplateName: string) {\n if (get(metric, 'query.customFilterTemplate') === deletedTemplateName) {\n return {\n ...metric,\n query: {\n ...metric.query,\n customFilterTemplate: null,\n },\n };\n }\n return metric;\n}\n\nconst editingMetric = handleActions(\n {\n [Actions.RENAME_METRIC]: (state: ICanaryMetricConfig, action: Action & any) => ({\n ...state,\n name: action.payload.name,\n }),\n [Actions.UPDATE_METRIC_DIRECTION]: (state: ICanaryMetricConfig, action: Action & any) =>\n set(cloneDeep(state), ['analysisConfigurations', 'canary', 'direction'], action.payload.direction),\n [Actions.UPDATE_METRIC_NAN_STRATEGY]: (state: ICanaryMetricConfig, { payload }: Action & any) => {\n const newState = cloneDeep(state);\n\n payload.strategy === 'default'\n ? unset(newState, ['analysisConfigurations', 'canary', 'nanStrategy'])\n : set(newState, ['analysisConfigurations', 'canary', 'nanStrategy'], payload.strategy);\n\n return newState;\n },\n [Actions.UPDATE_METRIC_CRITICALITY]: (state: ICanaryMetricConfig, { payload }: Action & any) => {\n const newState = cloneDeep(state);\n\n payload.critical\n ? set(newState, ['analysisConfigurations', 'canary', 'critical'], payload.critical)\n : unset(newState, ['analysisConfigurations', 'canary', 'critical']);\n\n return newState;\n },\n [Actions.UPDATE_EFFECT_SIZE]: (state: ICanaryMetricConfig, { payload }: Action & any) => {\n const newState = cloneDeep(state);\n Object.keys(payload.value).length\n ? set(newState, ['analysisConfigurations', 'canary', 'effectSize'], payload.value)\n : unset(newState, ['analysisConfigurations', 'canary', 'effectSize']);\n return newState;\n },\n [Actions.UPDATE_METRIC_GROUP]: (state: ICanaryMetricConfig, action: Action & any) => ({\n ...state,\n groups: [action.payload.group],\n }),\n [Actions.UPDATE_ATLAS_QUERY]: (state: ICanaryMetricConfig, action: Action & any) => ({\n ...state,\n query: { ...state.query, q: action.query },\n }),\n [Actions.UPDATE_DATADOG_METRIC_NAME]: (state: ICanaryMetricConfig, action: Action & any) => ({\n ...state,\n query: { ...state.query, metricName: action.payload.metricName },\n }),\n [Actions.UPDATE_NEWRELIC_SELECT]: (state: ICanaryMetricConfig, action: Action & any) => ({\n ...state,\n query: { ...state.query, select: action.payload.select },\n }),\n [Actions.SELECT_TEMPLATE]: (state: ICanaryMetricConfig, action: Action & any) => ({\n ...state,\n query: { ...state.query, customFilterTemplate: action.payload.name },\n }),\n [Actions.UPDATE_METRIC_SCOPE_NAME]: (state: ICanaryMetricConfig, action: Action & any) => ({\n ...state,\n scopeName: action.payload.scopeName,\n }),\n [Actions.UPDATE_GRAPHITE_METRIC_NAME]: (state: ICanaryMetricConfig, action: Action & any) => ({\n ...state,\n query: { ...state.query, metricName: action.payload.metricName },\n }),\n [Actions.EDIT_INLINE_TEMPLATE]: (state: ICanaryMetricConfig, action: Action & any) => ({\n ...state,\n query: { ...state.query, customInlineTemplate: action.payload.value },\n }),\n },\n null,\n);\n\nconst save = combineReducers<ISaveState>({\n state: handleActions(\n {\n [Actions.SAVE_CONFIG_REQUEST]: () => AsyncRequestState.Requesting,\n [combineActions(Actions.SAVE_CONFIG_SUCCESS, Actions.DISMISS_SAVE_CONFIG_ERROR)]: () =>\n AsyncRequestState.Fulfilled,\n [Actions.SAVE_CONFIG_FAILURE]: () => AsyncRequestState.Failed,\n },\n AsyncRequestState.Fulfilled,\n ),\n error: handleActions(\n {\n [Actions.SAVE_CONFIG_FAILURE]: (_state: string, action: Action & any) =>\n get(action, 'payload.error.data.message', null),\n },\n null,\n ),\n});\n\nconst destroy = combineReducers<IDestroyState>({\n state: handleActions(\n {\n [Actions.DELETE_CONFIG_REQUEST]: () => AsyncRequestState.Requesting,\n [Actions.DELETE_CONFIG_SUCCESS]: () => AsyncRequestState.Fulfilled,\n [Actions.DELETE_CONFIG_FAILURE]: () => AsyncRequestState.Failed,\n },\n AsyncRequestState.Fulfilled,\n ),\n error: handleActions(\n {\n [Actions.DELETE_CONFIG_FAILURE]: (_state: string, action: Action & any) =>\n get(action, 'payload.error.data.message', null),\n },\n null,\n ),\n});\n\nconst json = combineReducers<IJsonState>({\n configJson: handleActions(\n {\n [Actions.SET_CONFIG_JSON]: (_state: IJsonState, action: Action & any) => action.payload.json,\n [combineActions(Actions.CONFIG_JSON_MODAL_CLOSE, Actions.SELECT_CONFIG)]: (): void => null,\n },\n null,\n ),\n error: handleActions(\n {\n [combineActions(Actions.CONFIG_JSON_MODAL_CLOSE, Actions.SELECT_CONFIG, Actions.SET_CONFIG_JSON)]: () => null,\n [Actions.SET_CONFIG_JSON]: (_state: IJsonState, action: Action & any) => {\n try {\n const parsed: ICanaryConfig = JSON.parse(action.payload.json);\n parsed.metrics.forEach((m, index) => {\n if (!m.groups || !m.groups.length) {\n throw new Error(`metric #${index + 1}: 'groups' is a required field`);\n }\n });\n return null;\n } catch (e) {\n return e.message;\n }\n },\n },\n null,\n ),\n});\n\nconst judge = combineReducers<IJudgeState>({\n judgeConfig: handleActions(\n {\n [Actions.SELECT_JUDGE_NAME]: (state: IJudge, action: Action & any) => ({\n ...state,\n name: action.payload.judge.name,\n }),\n },\n null,\n ),\n renderState: handleActions({}, JudgeSelectRenderState.None),\n});\n\nconst changeMetricGroup = combineReducers<IChangeMetricGroupState>({\n toGroup: handleActions(\n {\n [Actions.CHANGE_METRIC_GROUP_SELECT]: (_state: string, action: Action & any) => action.payload.group,\n [Actions.CHANGE_METRIC_GROUP]: () => null,\n },\n null,\n ),\n metric: handleActions(\n {\n [Actions.CHANGE_METRIC_GROUP]: (_state: string, action: Action & any) => action.payload.id,\n [Actions.CHANGE_METRIC_GROUP_CONFIRM]: () => null,\n },\n null,\n ),\n});\n\nconst isInSyncWithServer = handleActions({}, null);\n\n// This reducer needs to be able to access both metricList and editingMetric so it won't fit the combineReducers paradigm.\nfunction editingMetricReducer(state: ISelectedConfigState = null, action: Action & any): ISelectedConfigState {\n switch (action.type) {\n case Actions.ADD_METRIC:\n return {\n ...state,\n editingMetric: state.metricList[state.metricList.length - 1],\n };\n\n case Actions.EDIT_METRIC_BEGIN:\n return {\n ...state,\n editingMetric: state.metricList.find((metric) => metric.id === action.payload.id),\n };\n\n case Actions.EDIT_METRIC_CONFIRM: {\n const editing: ICanaryMetricConfig = omit(state.editingMetric, 'isNew');\n return {\n ...state,\n metricList: state.metricList.map((metric) => (metric.id === editing.id ? editing : metric)),\n editingMetric: null,\n };\n }\n\n case Actions.EDIT_METRIC_CANCEL:\n return {\n ...state,\n metricList: state.metricList.filter((metric) => !metric.isNew),\n editingMetric: null,\n };\n\n default:\n return state;\n }\n}\n\nfunction selectedJudgeReducer(state: ISelectedConfigState = null, action: Action & any): ISelectedConfigState {\n switch (action.type) {\n case Actions.SELECT_CONFIG:\n if (has(action, 'payload.config.judge')) {\n return { ...state, judge: { ...state.judge, judgeConfig: { ...action.payload.config.judge } } };\n } else {\n return {\n ...state,\n judge: {\n ...state.judge,\n judgeConfig: { name: CanarySettings.defaultJudge || 'NetflixACAJudge-v1.0', judgeConfigurations: {} },\n },\n };\n }\n\n default:\n return state;\n }\n}\n\nexport function editGroupConfirmReducer(\n state: ISelectedConfigState = null,\n action: Action & any,\n): ISelectedConfigState {\n if (action.type !== Actions.EDIT_GROUP_CONFIRM) {\n return state;\n }\n\n const { payload } = action;\n const allGroups = flatMap(state.metricList, (metric) => metric.groups);\n if (!payload.edit || payload.edit === ALL || allGroups.includes(payload.edit)) {\n return state;\n }\n\n const metricUpdater = (c: ICanaryMetricConfig): ICanaryMetricConfig => ({\n ...c,\n groups: (c.groups || []).includes(payload.group)\n ? [payload.edit].concat((c.groups || []).filter((g) => g !== payload.group))\n : c.groups,\n });\n\n const weightsUpdater = (weights: IGroupWeights): IGroupWeights => {\n const weight = weights[payload.group];\n weights = omit(weights, payload.group);\n return {\n ...weights,\n [payload.edit]: weight,\n };\n };\n\n const listUpdater = (groupList: string[]): string[] =>\n [payload.edit].concat((groupList || []).filter((g) => g !== payload.group));\n return {\n ...state,\n metricList: state.metricList.map(metricUpdater),\n group: {\n ...state.group,\n selected: payload.edit,\n groupWeights: weightsUpdater(state.group.groupWeights),\n list: listUpdater(state.group.list),\n },\n };\n}\n\nexport function changeMetricGroupConfirmReducer(\n state: ISelectedConfigState,\n action: Action & any,\n): ISelectedConfigState {\n if (action.type !== Actions.CHANGE_METRIC_GROUP_CONFIRM) {\n return state;\n }\n\n const {\n changeMetricGroup: { toGroup },\n } = state;\n const {\n payload: { metricId },\n } = action;\n if (!metricId) {\n return state;\n }\n\n const metricUpdater = (m: ICanaryMetricConfig): ICanaryMetricConfig => ({\n ...m,\n groups: m.id === metricId ? [toGroup] : m.groups,\n });\n\n return {\n ...state,\n metricList: state.metricList.map(metricUpdater),\n };\n}\n\nexport function updateGroupWeightsReducer(state: ISelectedConfigState, action: Action & any): ISelectedConfigState {\n if (\n ![Actions.SELECT_CONFIG, Actions.CHANGE_METRIC_GROUP_CONFIRM, Actions.ADD_METRIC, Actions.REMOVE_METRIC].includes(\n action.type,\n )\n ) {\n return state;\n }\n\n const groups = chain(state.metricList)\n .flatMap((metric) => metric.groups)\n .uniq()\n .value();\n\n // Prune weights for groups that no longer exist.\n let groupWeights: IGroupWeights = pick(state.group.groupWeights, groups);\n\n // Initialize weights for new groups.\n groupWeights = {\n ...fromPairs(groups.map((g) => [g, 0])),\n ...groupWeights,\n };\n\n return {\n ...state,\n group: {\n ...state.group,\n groupWeights,\n },\n };\n}\n\nconst editingTemplateConfirmReducer = (state: ISelectedConfigState, action: Action & any): ISelectedConfigState => {\n if (action.type !== Actions.EDIT_TEMPLATE_CONFIRM) {\n return state;\n }\n\n const { name, editedName, editedValue, isNew } = state.editingTemplate;\n const templates = {\n ...(name ? omit(state.config.templates, name) : state.config.templates),\n [editedName]: editedValue,\n };\n\n const metricUpdater = (metric: ICanaryMetricConfig) => {\n if (get(metric, 'query.customFilterTemplate') !== name) {\n return metric;\n }\n return {\n ...metric,\n query: {\n ...metric.query,\n customFilterTemplate: editedName,\n },\n };\n };\n\n // Select new template for editingMetric\n const editingMetricUpdater = (metric: ICanaryMetricConfig) => {\n if (isNew) {\n return {\n ...metric,\n query: {\n ...metric.query,\n customFilterTemplate: editedName,\n },\n };\n }\n return metricUpdater(metric);\n };\n\n return {\n ...state,\n editingTemplate: {\n name: null,\n editedName: null,\n editedValue: null,\n isNew: false,\n },\n config: {\n ...state.config,\n templates,\n },\n metricList: (state.metricList || []).map(metricUpdater),\n editingMetric: editingMetricUpdater(state.editingMetric),\n };\n};\n\nconst combined = combineReducers<ISelectedConfigState>({\n config,\n load,\n save,\n destroy,\n json,\n judge,\n metricList,\n editingMetric: (metric, action) =>\n [editingMetric, prometheusMetricConfigReducer, signalFxMetricConfigReducer, stackdriverMetricConfigReducer].reduce(\n (s, reducer) => reducer(s, action),\n metric,\n ),\n group,\n changeMetricGroup,\n isInSyncWithServer,\n validationErrors: () => null,\n editingTemplate,\n selectedStore: handleActions<string>({}, null),\n});\n\n// First combine all simple reducers, then apply more complex ones as needed.\nexport const selectedConfig = (state: ISelectedConfigState, action: Action & any): ISelectedConfigState => {\n return [\n combined,\n editingMetricReducer,\n selectedJudgeReducer,\n editGroupConfirmReducer,\n changeMetricGroupConfirmReducer,\n updateGroupWeightsReducer,\n editingTemplateConfirmReducer,\n ].reduce((s, reducer) => reducer(s, action), state);\n};\n","import * as Actions from 'kayenta/actions';\nimport { ICanaryExecutionStatusResult, IMetricSetPair, MetricClassificationLabel } from 'kayenta/domain';\nimport { GraphType } from 'kayenta/report/detail/graph/metricSetPairGraph.service';\nimport { Action, combineReducers, Reducer } from 'redux';\nimport { handleActions } from 'redux-actions';\n\nimport { AsyncRequestState } from './asyncRequest';\n\ninterface IMetricSetPairState {\n pair: IMetricSetPair;\n load: AsyncRequestState;\n}\n\nexport interface ISelectedRunState {\n run: ICanaryExecutionStatusResult;\n load: AsyncRequestState;\n selectedGroup: string;\n selectedMetric: string;\n metricSetPair: IMetricSetPairState;\n graphType: GraphType;\n metricFilters: MetricClassificationLabel[];\n}\n\nconst metricFilters = handleActions(\n {\n [Actions.TOGGLE_METRIC_CLASSIFICATION_FILTER]: (_state: MetricClassificationLabel[], action: Action & any) => {\n const { classification } = action.payload;\n if (_state.includes(classification)) {\n return _state.filter((s) => s !== classification);\n }\n return _state.concat([classification]);\n },\n },\n [],\n);\n\nconst run = handleActions(\n {\n [Actions.LOAD_RUN_SUCCESS]: (_state: ICanaryExecutionStatusResult, action: Action & any) => action.payload.run,\n },\n null,\n);\n\nconst load = handleActions(\n {\n [Actions.LOAD_RUN_REQUEST]: () => AsyncRequestState.Requesting,\n [Actions.LOAD_RUN_SUCCESS]: () => AsyncRequestState.Fulfilled,\n [Actions.LOAD_RUN_FAILURE]: () => AsyncRequestState.Failed,\n },\n AsyncRequestState.Requesting,\n);\n\nconst selectedGroup = handleActions(\n {\n [Actions.SELECT_REPORT_METRIC_GROUP]: (_state: string, action: Action & any) => action.payload.group,\n },\n null,\n);\n\nconst selectedMetric = handleActions(\n {\n [Actions.SELECT_REPORT_METRIC_GROUP]: () => null,\n },\n null,\n);\n\nconst metricSetPair = combineReducers<IMetricSetPairState>({\n pair: handleActions(\n {\n [Actions.LOAD_METRIC_SET_PAIR_REQUEST]: () => null,\n [Actions.LOAD_METRIC_SET_PAIR_SUCCESS]: (_state: IMetricSetPair, action: Action & any) =>\n action.payload.metricSetPair,\n },\n null,\n ),\n load: handleActions(\n {\n [Actions.LOAD_METRIC_SET_PAIR_REQUEST]: () => AsyncRequestState.Requesting,\n [Actions.LOAD_METRIC_SET_PAIR_SUCCESS]: () => AsyncRequestState.Fulfilled,\n [Actions.LOAD_METRIC_SET_PAIR_FAILURE]: () => AsyncRequestState.Failed,\n },\n AsyncRequestState.Fulfilled,\n ),\n});\n\nconst graphType = handleActions<GraphType>(\n {\n [Actions.SELECT_GRAPH_TYPE]: (_state: GraphType, action: Action & any) => action.payload.type,\n },\n GraphType.TimeSeries,\n);\n\nexport const selectedRun: Reducer<ISelectedRunState> = combineReducers<ISelectedRunState>({\n run,\n load,\n selectedGroup,\n selectedMetric,\n metricSetPair,\n graphType,\n metricFilters,\n});\n","import { KayentaAccountType } from 'kayenta/domain';\nimport { chain } from 'lodash';\n\nimport { ICanaryState } from './index';\n\nexport interface IConfigValidationError {\n message: string;\n}\n\ntype IConfigValidator = (state: ICanaryState) => IConfigValidationError;\n\nconst createValidationReducer = (validator: IConfigValidator) => {\n return (state: ICanaryState) => {\n if (!state.selectedConfig.config) {\n return state;\n }\n\n const error = validator(state);\n if (!error) {\n return state;\n }\n\n return {\n ...state,\n selectedConfig: {\n ...state.selectedConfig,\n validationErrors: state.selectedConfig.validationErrors.concat(error ? [error] : []),\n },\n };\n };\n};\n\nconst isConfigNameUnique: IConfigValidator = (state) => {\n const selectedConfig = state.selectedConfig.config;\n const configSummaries = state.data.configSummaries;\n const isUnique = configSummaries.every((s) => selectedConfig.name !== s.name || selectedConfig.id === s.id);\n\n return isUnique ? null : { message: `Canary config '${selectedConfig.name}' already exists.` };\n};\n\n// See https://github.com/Netflix-Skunkworks/kayenta/blob/master/kayenta-web/src/main/java/com/netflix/kayenta/controllers/CanaryConfigController.java\nconst pattern = /^[a-zA-Z0-9_-]*$/;\nconst isConfigNameValid: IConfigValidator = (state) => {\n const isValid = pattern.test(state.selectedConfig.config.name);\n return isValid\n ? null\n : {\n message: 'Canary config names must contain only letters, numbers, dashes (-) and underscores (_).',\n };\n};\n\nconst isGroupWeightsSumValid: IConfigValidator = (state) => {\n const weights = Object.values(state.selectedConfig.group.groupWeights);\n const sumOfWeights = weights.reduce((sum, weight) => sum + weight, 0);\n const groupWeightsSumIsValid = weights.length === 0 || sumOfWeights === 100;\n\n return groupWeightsSumIsValid ? null : { message: 'Metric group weights must sum to 100.' };\n};\n\nconst isEveryGroupWeightValid: IConfigValidator = (state) => {\n const everyGroupWeightIsValid = Object.values(state.selectedConfig.group.groupWeights).every((weight) => weight >= 0);\n\n return everyGroupWeightIsValid ? null : { message: 'A group weight must be greater than or equal to 0.' };\n};\n\nconst isEveryQueriedMetricStoreAvailable: IConfigValidator = (state) => {\n const available = chain(state.data.kayentaAccounts.data)\n .filter((account) => account.supportedTypes.includes(KayentaAccountType.MetricsStore))\n .map((account) => account.metricsStoreType || account.type)\n .uniq()\n .valueOf();\n\n const queried = chain(state.selectedConfig.metricList)\n .map((metric) => metric.query.type)\n .uniq()\n .valueOf();\n\n const unavailableQueried = queried.filter((store) => !available.includes(store));\n let message: string;\n if (unavailableQueried.length === 1) {\n message = `This config contains metrics configured to query a metric\n store (${unavailableQueried[0]})\n that does not have any configured accounts.`;\n } else if (unavailableQueried.length > 1) {\n message = `This config contains metrics configured to query metric\n stores (${unavailableQueried.join()})\n that do not have any configured accounts.`;\n }\n return unavailableQueried.length ? { message } : null;\n};\n\nconst areMultipleMetricStoresQueried: IConfigValidator = (state) => {\n const queried = chain(state.selectedConfig.metricList)\n .map((metric) => metric.query.type)\n .uniq()\n .valueOf();\n\n return queried.length > 1 ? { message: 'All metrics must be from the same metric store.' } : null;\n};\n\nexport const validationErrorsReducer = (state: ICanaryState): ICanaryState => {\n if (!state.selectedConfig) {\n return state;\n }\n\n if (!state.selectedConfig.validationErrors) {\n state = { ...state, selectedConfig: { ...state.selectedConfig, validationErrors: [] } };\n }\n\n return [\n isConfigNameUnique,\n isConfigNameValid,\n isGroupWeightsSumValid,\n isEveryGroupWeightValid,\n isEveryQueriedMetricStoreAvailable,\n areMultipleMetricStoresQueried,\n ].reduce((s, validator) => createValidationReducer(validator)(s), state);\n};\n","import * as Actions from 'kayenta/actions';\nimport * as Creators from 'kayenta/actions/creators';\nimport { CanarySettings } from 'kayenta/canary.settings';\nimport {\n ICanaryAnalysisResult,\n ICanaryJudgeConfig,\n ICanaryMetricConfig,\n IJudge,\n KayentaAccountType,\n} from 'kayenta/domain';\nimport { JudgeSelectRenderState } from 'kayenta/edit/judgeSelect';\nimport { metricResultsSelector } from 'kayenta/selectors';\nimport { mapStateToConfig } from 'kayenta/service/canaryConfig.service';\nimport { chain, isEqual } from 'lodash';\nimport { Action, combineReducers } from 'redux';\nimport { combineActions, handleActions } from 'redux-actions';\n\nimport { app, IAppState } from './app';\nimport { AsyncRequestState } from './asyncRequest';\nimport { data, IDataState } from './data';\nimport { ISelectedConfigState, selectedConfig } from './selectedConfig';\nimport { ISelectedRunState, selectedRun } from './selectedRun';\nimport { validationErrorsReducer } from './validators';\n\nexport interface ICanaryState {\n app: IAppState;\n data: IDataState;\n selectedConfig: ISelectedConfigState;\n selectedRun: ISelectedRunState;\n}\n\nconst combined = combineReducers<ICanaryState>({\n app,\n configValidationErrors: () => null,\n data,\n selectedConfig,\n selectedRun,\n});\n\nconst getRenderState = (judges: IJudge[], judgeConfig: ICanaryJudgeConfig): JudgeSelectRenderState => {\n if (judges.some((judge) => judge.name === judgeConfig.name)) {\n if (judges.length === 1) {\n return JudgeSelectRenderState.None;\n } else {\n return JudgeSelectRenderState.Multiple;\n }\n } else {\n return JudgeSelectRenderState.Single;\n }\n};\n\nconst judgeRenderStateReducer = handleActions(\n {\n [combineActions(Actions.SELECT_CONFIG, Actions.UPDATE_JUDGES)]: (state: ICanaryState) => {\n // At this point, we've already passed through the rest of the reducers, so\n // the judge has been normalized on the state.\n const {\n data: { judges = [] },\n selectedConfig: {\n judge: { judgeConfig },\n },\n } = state;\n\n if (!judgeConfig) {\n return state;\n } else {\n return {\n ...state,\n selectedConfig: {\n ...state.selectedConfig,\n judge: {\n ...state.selectedConfig.judge,\n renderState: getRenderState(judges, judgeConfig),\n },\n },\n };\n }\n },\n },\n null,\n);\n\nconst isInSyncWithServerReducer = (state: ICanaryState): ICanaryState => {\n return {\n ...state,\n selectedConfig: {\n ...state.selectedConfig,\n isInSyncWithServer: (() => {\n const editedConfig = mapStateToConfig(state);\n if (!editedConfig) {\n return true;\n } else {\n const originalConfig = state.data.configs.find((c) => c.id === editedConfig.id);\n // If we're saving the config right now, don't warn that\n // the config hasn't been saved.\n if (\n !originalConfig &&\n editedConfig.isNew &&\n state.selectedConfig.save.state === AsyncRequestState.Requesting\n ) {\n return true;\n }\n return isEqual(editedConfig, originalConfig);\n }\n })(),\n },\n };\n};\n\nconst resolveSelectedMetricId = (state: ICanaryState, action: Action & any): string => {\n switch (action.type) {\n case Actions.SELECT_REPORT_METRIC:\n return action.payload.metricId;\n\n // On report load, pick the first metric.\n case Actions.LOAD_RUN_SUCCESS:\n return metricResultsSelector(state).length ? metricResultsSelector(state)[0].id : null;\n\n // On group select, pick the first metric in the group.\n case Actions.SELECT_REPORT_METRIC_GROUP: {\n const results = metricResultsSelector(state);\n if (!results.length) {\n return null;\n }\n\n const group = action.payload.group;\n const filter: (r: ICanaryAnalysisResult) => boolean = group ? (r) => r.groups.includes(group) : () => true;\n\n return results.find(filter) ? results.find(filter).id : null;\n }\n\n default:\n return null;\n }\n};\n\nconst selectedMetricReducer = (state: ICanaryState, action: Action & any) => {\n if (\n ![Actions.SELECT_REPORT_METRIC, Actions.SELECT_REPORT_METRIC_GROUP, Actions.LOAD_RUN_SUCCESS].includes(action.type)\n ) {\n return state;\n }\n\n const id = resolveSelectedMetricId(state, action);\n if (!id) {\n return state;\n }\n\n // Load metric set pair.\n action.asyncDispatch(\n Creators.loadMetricSetPairRequest({\n pairId: id,\n }),\n );\n\n return {\n ...state,\n selectedRun: {\n ...state.selectedRun,\n selectedMetric: id,\n metricSetPair: {\n ...state.selectedRun.metricSetPair,\n load: AsyncRequestState.Requesting,\n },\n },\n };\n};\n\n// TODO(dpeach): this assumes that a config can only use one metric store.\n// If that changes, then metric store handling will have to be done per metric.\nconst selectedMetricStoreReducer = (state: ICanaryState, action: Action & any) => {\n switch (action.type) {\n case Actions.SELECT_CONFIG:\n case Actions.LOAD_KAYENTA_ACCOUNTS_SUCCESS: {\n const stores = chain(state.data.kayentaAccounts.data)\n .filter((account) => account.supportedTypes.includes(KayentaAccountType.MetricsStore))\n .map((account) => account.metricsStoreType || account.type)\n .uniq()\n .valueOf();\n\n let selectedStore = (state.selectedConfig.metricList || [])\n .map((metric) => metric.query.type)\n .find((store) => !!store);\n\n selectedStore =\n selectedStore ||\n (stores.length ? (stores.includes(CanarySettings.metricStore) ? CanarySettings.metricStore : stores[0]) : null);\n\n return {\n ...state,\n selectedConfig: {\n ...state.selectedConfig,\n selectedStore,\n },\n };\n }\n\n case Actions.SELECT_METRIC_STORE: {\n const selectedStore: string = action.payload.store;\n // Flips all metrics to use the selected metric store.\n const metricUpdater = (metric: ICanaryMetricConfig): ICanaryMetricConfig => ({\n ...metric,\n query: { ...metric.query, type: selectedStore, serviceType: selectedStore },\n });\n\n return {\n ...state,\n selectedConfig: {\n ...state.selectedConfig,\n metricList: state.selectedConfig.metricList.map(metricUpdater),\n selectedStore,\n },\n };\n }\n\n default:\n return state;\n }\n};\n\nconst disableConfigEditReducer = (state: ICanaryState) => {\n if (!state.selectedConfig.config) {\n return state;\n }\n\n return {\n ...state,\n app: {\n ...state.app,\n disableConfigEdit: !state.selectedConfig.config.applications.includes(state.data.application.name),\n },\n };\n};\n\nexport const rootReducer = (state: ICanaryState, action: Action & any): ICanaryState => {\n return [\n combined,\n judgeRenderStateReducer,\n selectedMetricStoreReducer,\n selectedMetricReducer,\n disableConfigEditReducer,\n validationErrorsReducer,\n isInSyncWithServerReducer,\n ].reduce((s, reducer) => reducer(s, action), state);\n};\n","import { UIView } from '@uirouter/react';\nimport * as React from 'react';\nimport { Provider, Store } from 'react-redux';\nimport { applyMiddleware, createStore } from 'redux';\nimport { logger } from 'redux-logger';\n\nimport { Application } from '@spinnaker/core';\n\nimport { INITIALIZE } from './actions';\nimport { CanarySettings } from './canary.settings';\nimport { ICanaryConfigSummary, IJudge } from './domain';\nimport Styleguide from './layout/styleguide';\nimport { actionInterceptingMiddleware, asyncDispatchMiddleware, epicMiddleware } from './middleware';\nimport { ICanaryState, rootReducer } from './reducers';\n\nexport interface ICanaryProps {\n app: Application;\n}\n\nconst middleware = [epicMiddleware, actionInterceptingMiddleware, asyncDispatchMiddleware];\n\nexport const canaryStore: Store<ICanaryState> = createStore<ICanaryState>(\n rootReducer,\n applyMiddleware(...(CanarySettings.reduxLogger ? [...middleware, logger] : middleware)),\n);\n\nexport default class Canary extends React.Component<ICanaryProps> {\n private readonly store: Store<ICanaryState>;\n\n constructor(props: ICanaryProps) {\n super(props);\n this.store = canaryStore;\n this.initializeAppState(props.app);\n }\n\n public componentWillReceiveProps(nextProps: ICanaryProps) {\n if (this.props.app.name !== nextProps.app.name) {\n this.initializeAppState(nextProps.app);\n }\n }\n\n private initializeAppState(app: Application): void {\n this.store.dispatch({\n type: INITIALIZE,\n state: {\n data: {\n application: app,\n configSummaries: app.getDataSource('canaryConfigs').data as ICanaryConfigSummary[],\n judges: app.getDataSource('canaryJudges').data as IJudge[],\n },\n },\n });\n }\n\n public render() {\n const noWrap = { wrap: false };\n return (\n <Styleguide className=\"kayenta-root vertical\">\n <Provider store={this.store}>\n <div className=\"vertical flex-1\">\n <UIView {...noWrap} name=\"canary\" />\n </div>\n </Provider>\n </Styleguide>\n );\n }\n}\n","import * as Creators from 'kayenta/actions/creators';\nimport * as Actions from 'kayenta/actions/index';\nimport { Action, Dispatch, Middleware, MiddlewareAPI } from 'redux';\n\nimport { ICanaryState } from '../reducers/index';\nimport { buildConfigCopy, buildNewConfig } from '../service/canaryConfig.service';\n\n// TODO: replace the `any` generic passed to MiddlewareAPI with ICanaryState. The Redux typings here are wrong.\n// Should be fixed in this PR: https://github.com/reactjs/redux/pull/2563\nexport const actionInterceptingMiddleware: Middleware = (store: MiddlewareAPI<any>) => (\n next: Dispatch<ICanaryState>,\n) => (action: Action & any) => {\n switch (action.type) {\n case Actions.CREATE_NEW_CONFIG: {\n const newConfig = buildNewConfig(store.getState());\n const newAction = Creators.selectConfig({ config: newConfig });\n return next(newAction);\n }\n\n case Actions.COPY_SELECTED_CONFIG: {\n const copiedConfig = buildConfigCopy(store.getState());\n const newAction = Creators.selectConfig({ config: copiedConfig });\n return next(newAction);\n }\n\n default:\n return next(action);\n }\n};\n","import { Action, Dispatch, Middleware, MiddlewareAPI } from 'redux';\n\nimport { ICanaryState } from '../reducers/index';\n\n/*\n * Middleware for scheduling actions from within reducers.\n * Provides every action with an `asyncDispatch` method.\n * Actions provided to `asyncDispatch` will run after all reducers have completed.\n * TODO: type actions to include `asyncDispatch`.\n * */\n\n// TODO: replace the `any` generic passed to MiddlewareAPI with ICanaryState. The Redux typings here are wrong.\n// Should be fixed in this PR: https://github.com/reactjs/redux/pull/2563\nexport const asyncDispatchMiddleware: Middleware = (store: MiddlewareAPI<any>) => (next: Dispatch<ICanaryState>) => (\n action: Action & any,\n) => {\n let syncActivityFinished = false;\n let actionQueue: Action[] = [];\n\n const flushQueue = () => {\n actionQueue.forEach((a) => store.dispatch(a));\n actionQueue = [];\n };\n\n const asyncDispatch = (a: Action & any) => {\n actionQueue.push(a);\n if (syncActivityFinished) {\n flushQueue();\n }\n };\n\n const nextAction = next({ ...action, asyncDispatch });\n syncActivityFinished = true;\n flushQueue();\n\n return nextAction;\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\nexport default isObjectLike;\n","import { AsyncRequestState } from 'kayenta/reducers/asyncRequest';\nimport * as React from 'react';\n\nimport { Spinner } from '@spinnaker/core';\n\nexport interface ILoadStatesProps {\n state: AsyncRequestState;\n}\n\n/*\n * Builder for rendering load states. Defaults to standard spinner during\n * `Requesting` state.\n * */\nexport default class LoadStatesBuilder {\n private requesting: JSX.Element;\n private fulfilled: JSX.Element;\n private failed: JSX.Element;\n\n public onRequesting(requesting: JSX.Element): LoadStatesBuilder {\n this.requesting = requesting;\n return this;\n }\n\n public onFulfilled(fulfilled: JSX.Element): LoadStatesBuilder {\n this.fulfilled = fulfilled;\n return this;\n }\n\n public onFailed(failed: JSX.Element): LoadStatesBuilder {\n this.failed = failed;\n return this;\n }\n\n public build(): React.SFC<ILoadStatesProps> {\n return ({ state }: ILoadStatesProps) => {\n switch (state) {\n case AsyncRequestState.Requesting:\n return (\n this.requesting || (\n <div className=\"horizontal center middle spinner-container\">\n <Spinner />\n </div>\n )\n );\n case AsyncRequestState.Fulfilled:\n return this.fulfilled;\n case AsyncRequestState.Failed:\n return this.failed;\n }\n };\n }\n}\n","import * as React from 'react';\nimport { timestamp } from '@spinnaker/core';\n\nexport interface IDateLabelProps {\n dateIso: string;\n}\n\nexport default function FormattedDate({ dateIso }: IDateLabelProps) {\n if (dateIso) {\n return <span>{timestamp(new Date(dateIso).getTime())}</span>;\n } else {\n return <span>N/A</span>;\n }\n}\n","import { UISref } from '@uirouter/react';\nimport { get } from 'lodash';\nimport * as React from 'react';\nimport { connect } from 'react-redux';\n\nimport { ICanaryState } from '../reducers/index';\n\ninterface ICopyConfigButtonStateProps {\n disabled: boolean;\n}\n\n/*\n * Button for copying a canary config.\n */\nfunction CopyConfigButton({ disabled }: ICopyConfigButtonStateProps) {\n return (\n <UISref to=\"^.configDetail\" params={{ copy: true }}>\n <button className=\"passive\" disabled={disabled}>\n <i className=\"fa fa-copy\" />\n <span>Copy</span>\n </button>\n </UISref>\n );\n}\n\nfunction mapStateToProps(state: ICanaryState) {\n return {\n disabled: get(state.selectedConfig, 'config.isNew') || state.app.disableConfigEdit,\n };\n}\n\nexport default connect(mapStateToProps)(CopyConfigButton);\n","import * as React from 'react';\nimport { connect } from 'react-redux';\nimport { Action } from 'redux';\n\nimport * as Creators from '../actions/creators';\nimport ConfigJsonModal from './configJsonModal';\n\ninterface IOpenConfigJsonModalDispatchProps {\n openConfigJsonModal: () => void;\n}\n\n/*\n * Button for opening the edit config JSON modal.\n */\nfunction OpenConfigJsonModalButton({ openConfigJsonModal }: IOpenConfigJsonModalDispatchProps) {\n return (\n <div>\n <button className=\"passive\" onClick={openConfigJsonModal}>\n <i className=\"far fa-file-code\" />\n <span>JSON</span>\n </button>\n <ConfigJsonModal />\n </div>\n );\n}\n\nfunction mapDispatchToProps(dispatch: (action: Action & any) => void): IOpenConfigJsonModalDispatchProps {\n return {\n openConfigJsonModal: () => dispatch(Creators.openConfigJsonModal()),\n };\n}\n\nexport default connect(null, mapDispatchToProps)(OpenConfigJsonModalButton);\n","import classNames from 'classnames';\nimport * as Creators from 'kayenta/actions/creators';\nimport * as React from 'react';\nimport { Modal } from 'react-bootstrap';\nimport { connect } from 'react-redux';\nimport { Action } from 'redux';\n\nimport Styleguide from '../layout/styleguide';\nimport { AsyncRequestState } from '../reducers/asyncRequest';\nimport { ICanaryState } from '../reducers/index';\n\ninterface IDeleteModalDispatchProps {\n closeDeleteConfigModal: () => void;\n deleteConfig: () => void;\n}\n\ninterface IDeleteModalStateProps {\n show: boolean;\n selectedConfigName: string;\n deleteConfigState: AsyncRequestState;\n deleteConfigErrorMessage: string;\n}\n\n/*\n * Modal to confirm canary config deletion.\n */\nfunction DeleteConfigModal({\n show,\n selectedConfigName,\n deleteConfigState,\n deleteConfigErrorMessage,\n closeDeleteConfigModal,\n deleteConfig,\n}: IDeleteModalDispatchProps & IDeleteModalStateProps) {\n return (\n <Modal show={show} onHide={null}>\n <Styleguide>\n <Modal.Header>\n <Modal.Title>Really delete {selectedConfigName}?</Modal.Title>\n </Modal.Header>\n {deleteConfigState === AsyncRequestState.Failed && (\n <Modal.Body>\n {/*TODO: create generic error message component */}\n <span className={classNames('alert', 'alert-danger')}>{buildErrorMessage(deleteConfigErrorMessage)}</span>\n </Modal.Body>\n )}\n <Modal.Footer>\n <ul className=\"list-inline pull-right\">\n <li>\n <button className=\"passive\" onClick={closeDeleteConfigModal}>\n Cancel\n </button>\n </li>\n <li>\n <button className=\"primary\" onClick={deleteConfig}>\n Delete\n </button>\n </li>\n </ul>\n </Modal.Footer>\n </Styleguide>\n </Modal>\n );\n}\n\nfunction buildErrorMessage(deleteConfigErrorMessage: string): string {\n const message = 'The was an error deleting your config';\n return deleteConfigErrorMessage ? message + `: ${deleteConfigErrorMessage}.` : message + '.';\n}\n\nfunction mapDispatchToProps(dispatch: (action: Action & any) => void): IDeleteModalDispatchProps {\n return {\n closeDeleteConfigModal: () => dispatch(Creators.closeDeleteConfigModal()),\n deleteConfig: () => dispatch(Creators.deleteConfig()),\n };\n}\n\nfunction mapStateToProps(state: ICanaryState): IDeleteModalStateProps {\n return {\n show: state.app.deleteConfigModalOpen,\n selectedConfigName: state.selectedConfig.config ? state.selectedConfig.config.name : null,\n deleteConfigState: state.selectedConfig.destroy.state,\n deleteConfigErrorMessage: state.selectedConfig.destroy.error,\n };\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(DeleteConfigModal);\n","import * as Creators from 'kayenta/actions/creators';\nimport { DISABLE_EDIT_CONFIG, DisableableButton } from 'kayenta/layout/disableable';\nimport { ICanaryState } from 'kayenta/reducers';\nimport * as React from 'react';\nimport { connect } from 'react-redux';\n\nimport DeleteConfigModal from './deleteModal';\n\ninterface IDeleteButtonStateProps {\n disabled: boolean;\n}\n\ninterface IDeleteButtonDispatchProps {\n openDeleteConfigModal: () => void;\n}\n\n/*\n * Button for opening the delete canary config confirmation modal.\n */\nfunction DeleteConfigButton({ openDeleteConfigModal, disabled }: IDeleteButtonDispatchProps & IDeleteButtonStateProps) {\n return (\n <div>\n <DisableableButton\n className=\"passive\"\n disabled={disabled}\n onClick={openDeleteConfigModal}\n disabledStateKeys={[DISABLE_EDIT_CONFIG]}\n >\n <i className=\"fa fa-trash\" />\n <span>Delete</span>\n </DisableableButton>\n <DeleteConfigModal />\n </div>\n );\n}\n\nfunction mapStateToProps(state: ICanaryState) {\n return {\n disabled: state.selectedConfig.config && state.selectedConfig.config.isNew,\n };\n}\n\nfunction mapDispatchToProps(dispatch: any): IDeleteButtonDispatchProps {\n return {\n openDeleteConfigModal: () => dispatch(Creators.openDeleteConfigModal()),\n };\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(DeleteConfigButton);\n","import * as React from 'react';\n\nimport CopyConfigButton from './copyConfigButton';\nimport OpenEditConfigJsonModalButton from './openConfigJsonModalButton';\nimport OpenDeleteModalButton from './openDeleteModalButton';\n\n/*\n * Layout for canary config action buttons.\n */\nexport default function ConfigDetailActionButtons() {\n return (\n <ul className=\"list-inline pull-right\">\n <li>\n <OpenEditConfigJsonModalButton />\n </li>\n <li>\n <CopyConfigButton />\n </li>\n <li>\n <OpenDeleteModalButton />\n </li>\n </ul>\n );\n}\n","import { UISref } from '@uirouter/react';\nimport { ICanaryConfig } from 'kayenta/domain';\nimport FormattedDate from 'kayenta/layout/formattedDate';\nimport { ICanaryState } from 'kayenta/reducers';\nimport { mapStateToConfig } from 'kayenta/service/canaryConfig.service';\nimport * as React from 'react';\nimport { connect } from 'react-redux';\n\nimport ConfigDetailActionButtons from './configDetailActionButtons';\n\ninterface IConfigDetailStateProps {\n selectedConfig: ICanaryConfig;\n editingDisabled: boolean;\n}\n\nconst getOwnerAppLinks = (owners: string[]) => {\n if (owners.length === 1) {\n return (\n <UISref to=\".\" params={{ application: owners[0] }}>\n <a>{owners[0]}</a>\n </UISref>\n );\n } else {\n // totally gross to read, but a somewhat-straightforward way of creating\n // a 'one, two, or three' sentence from this array of app names with some JSX in between\n const lastIndex = owners.length - 1;\n return owners.map((owner, index) => (\n <React.Fragment key={owner}>\n {index === lastIndex ? 'or ' : ''}\n <UISref to=\".\" params={{ application: owner }}>\n <a>{owner}</a>\n </UISref>\n {index < lastIndex && owners.length === 2 ? ' ' : ''}\n {index < lastIndex && owners.length > 2 ? ', ' : ''}\n </React.Fragment>\n ));\n }\n};\n\nconst EditingDisabledWarning = ({ owners }: { owners: string[] }) => {\n return (\n <div className=\"horizontal middle well-compact alert alert-warning config-detail-edit-warning\">\n <i className=\"fa fa-exclamation-triangle sp-margin-m-right\" />\n <span>\n <b>\n Editing is disabled because this config is owned by{' '}\n {owners.length > 1 ? `${owners.length} other applications` : 'another application'}.\n </b>{' '}\n To edit, view in {getOwnerAppLinks(owners)}\n </span>\n </div>\n );\n};\n\n/*\n * Config detail header layout.\n */\nfunction ConfigDetailHeader({ selectedConfig, editingDisabled }: IConfigDetailStateProps) {\n return (\n <div className=\"vertical\">\n <div className=\"horizontal config-detail-header\">\n <div className=\"flex-3\">\n <h1 className=\"heading-1 color-text-primary\">{selectedConfig ? selectedConfig.name : ''}</h1>\n </div>\n <div className=\"flex-1\">\n <h5 className=\"heading-5\">\n <strong>Edited:</strong>{' '}\n <FormattedDate dateIso={selectedConfig ? selectedConfig.updatedTimestampIso : ''} />\n </h5>\n </div>\n <div className=\"flex-2\">\n <ConfigDetailActionButtons />\n </div>\n </div>\n {selectedConfig && editingDisabled && <EditingDisabledWarning owners={selectedConfig.applications} />}\n </div>\n );\n}\n\nfunction mapStateToProps(state: ICanaryState): IConfigDetailStateProps {\n return {\n selectedConfig: mapStateToConfig(state),\n editingDisabled: state.app.disableConfigEdit,\n };\n}\n\nexport default connect(mapStateToProps)(ConfigDetailHeader);\n","import * as Creators from 'kayenta/actions/creators';\nimport { ICanaryMetricEffectSizeConfig } from 'kayenta/domain';\nimport FormRow from 'kayenta/layout/formRow';\nimport RadioChoice from 'kayenta/layout/radioChoice';\nimport { ICanaryState } from 'kayenta/reducers';\nimport * as React from 'react';\nimport { connect } from 'react-redux';\n\nimport { HelpField, robotToHuman } from '@spinnaker/core';\n\nimport { DISABLE_EDIT_CONFIG, DisableableInput } from '../layout/disableable';\n\ninterface IEditMetricEffectSizesProps {\n metricId: string;\n direction: string;\n disabled: boolean;\n effectSizes: ICanaryMetricEffectSizeConfig;\n}\n\ninterface IEditMetricEffectSizesDispatchProps {\n updateEffectSize: (id: string, value: ICanaryMetricEffectSizeConfig) => void;\n}\n\nexport function EditMetricEffectSizes({\n effectSizes = {},\n updateEffectSize,\n direction,\n metricId,\n disabled,\n}: IEditMetricEffectSizesProps & IEditMetricEffectSizesDispatchProps) {\n const [showEffectSizes, setShowEffectSizes] = React.useState<boolean>(!!Object.keys(effectSizes).length);\n // only allow editing of measurement type if it was set to \"cles\" programmatically\n const [allowEditMeasurementType] = React.useState<boolean>(effectSizes.measure === 'cles');\n\n const description = (\n <p>\n Effect sizes should be used when your canary data produces a lot of metrics that flag as \"high\", but where you\n only want the test to fail if they are sufficiently larger or smaller than the control data.\n </p>\n );\n\n if (!showEffectSizes && disabled) {\n return null;\n }\n\n if (!showEffectSizes) {\n return (\n <FormRow label=\"Effect Sizes\">\n {description}\n <button className=\"passive\" onClick={() => setShowEffectSizes(true)}>\n Configure effect sizes\n </button>\n </FormRow>\n );\n }\n\n const isCles = effectSizes.measure === 'cles';\n const defaultSize = isCles ? 0.5 : 1;\n\n const {\n allowedIncrease = defaultSize,\n criticalIncrease = defaultSize,\n allowedDecrease = defaultSize,\n criticalDecrease = defaultSize,\n measure = 'meanRatio',\n } = effectSizes;\n\n const updateSize = (field: keyof ICanaryMetricEffectSizeConfig, percent: string) => {\n const value = isCles ? Number(percent) : fromPercent(field, percent);\n const newEffectSizes = { ...effectSizes, [field]: value };\n if (value === defaultSize) {\n delete newEffectSizes[field];\n }\n updateEffectSize(metricId, newEffectSizes);\n };\n\n const updateMeasure = (event: React.ChangeEvent<HTMLInputElement>) => {\n updateEffectSize(metricId, { ...effectSizes, measure: event.target.value });\n };\n\n const fromPercent = (field: keyof ICanaryMetricEffectSizeConfig, percent: string) => {\n const size = Number(percent) / 100;\n return field.endsWith('Increase') ? 1 + size : 1 - size;\n };\n\n const toPercent = (value: number, field: keyof ICanaryMetricEffectSizeConfig) => {\n const normalized = field.endsWith('Increase') ? value - 1 : 1 - value;\n return Math.round(normalized * 100);\n };\n\n const clesLabel = (\n <>\n CLES <HelpField id=\"canary.config.effectSize.cles\" />\n </>\n );\n\n const noEffectLabel = (effect: number) => {\n if (effect === defaultSize) {\n return <HelpField expand={true} content=\"(will not affect metric evaluation)\" />;\n }\n return null;\n };\n\n const buildInput = (field: keyof ICanaryMetricEffectSizeConfig, value: number) => (\n <div className=\"form-group flex-1\">\n <label>{robotToHuman(field)}</label>\n <div className=\"row\">\n <div className=\"col-md-4\">\n <div className=\"input-group effect-size-wrapper\">\n <DisableableInput\n className=\"form-control input-sm\"\n type=\"number\"\n min={0}\n step={isCles ? 0.01 : 1}\n onChange={(e) => updateSize(field, e.target.value)}\n value={isCles ? value : toPercent(value, field)}\n disabledStateKeys={[DISABLE_EDIT_CONFIG]}\n />\n {!isCles && <div className=\"input-group-addon\">%</div>}\n </div>\n </div>\n </div>\n {noEffectLabel(value)}\n </div>\n );\n\n return (\n <FormRow label=\"Effect Sizes\">\n {description}\n <div className=\"vertical\" style={{ marginTop: '5px' }}>\n {allowEditMeasurementType && (\n <div className=\"form-group vertical\">\n <label>Measurement Type</label>\n <div>\n <RadioChoice\n value=\"meanRatio\"\n label=\"Mean (default)\"\n name=\"measure\"\n current={measure}\n action={updateMeasure}\n />\n <RadioChoice value=\"cles\" label={clesLabel} name=\"measure\" current={measure} action={updateMeasure} />\n </div>\n </div>\n )}\n <label className=\"sp-margin-m-top\">Allowed Effects</label>\n <p>\n If the canary surpasses the baseline by the supplied (non-zero) percentage, the <em>metric</em> will fail.\n </p>\n <div className=\"horizontal\">\n {direction !== 'increase' && buildInput('allowedDecrease', allowedDecrease)}\n {direction !== 'decrease' && buildInput('allowedIncrease', allowedIncrease)}\n </div>\n <label className=\"sp-margin-m-top\">Critical Effects</label>\n <p>\n If the canary surpasses the baseline by the supplied (non-zero) percentage, the <em>entire analysis</em> will\n fail with a score of 0.\n </p>\n <div className=\"horizontal\">\n {direction !== 'increase' && buildInput('criticalDecrease', criticalDecrease)}\n {direction !== 'decrease' && buildInput('criticalIncrease', criticalIncrease)}\n </div>\n </div>\n </FormRow>\n );\n}\n\nfunction mapStateToProps(state: ICanaryState): IEditMetricEffectSizesProps {\n return {\n metricId: state.selectedConfig.editingMetric.id,\n direction: state.selectedConfig.editingMetric.analysisConfigurations?.canary?.direction ?? 'either',\n disabled: state.app.disableConfigEdit,\n effectSizes: state.selectedConfig.editingMetric.analysisConfigurations?.canary?.effectSize ?? {},\n };\n}\n\nfunction mapDispatchToProps(dispatch: any): IEditMetricEffectSizesDispatchProps {\n return {\n updateEffectSize: (id: string, value: ICanaryMetricEffectSizeConfig) =>\n dispatch(Creators.updateEffectSize({ id, value })),\n };\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(EditMetricEffectSizes);\n","import * as Creators from 'kayenta/actions/creators';\nimport { ICanaryFilterTemplateValidationMessages } from 'kayenta/edit/filterTemplatesValidation';\nimport {\n DISABLE_EDIT_CONFIG,\n DisableableInput,\n DisableableReactSelect,\n DisableableTextarea,\n} from 'kayenta/layout/disableable';\nimport FormRow from 'kayenta/layout/formRow';\nimport { ICanaryState } from 'kayenta/reducers';\nimport { configTemplatesSelector, editingTemplateSelector } from 'kayenta/selectors';\nimport {\n editingTemplateValidationSelector,\n selectedTemplateNameSelector,\n} from 'kayenta/selectors/filterTemplatesSelectors';\nimport { get, isString } from 'lodash';\nimport * as React from 'react';\nimport { connect } from 'react-redux';\nimport { Option } from 'react-select';\nimport { Dispatch } from 'redux';\n\nimport './filterTemplateSelector.less';\n\ninterface IFilterTemplateSelectorStateProps {\n editedTemplateName: string;\n editedTemplateValue: string;\n selectedTemplateName: string;\n templates: { [key: string]: string };\n validation: ICanaryFilterTemplateValidationMessages;\n}\n\ninterface IFilterTemplateSelectorDispatchProps {\n deleteTemplate: (e: any, name: string) => void;\n editTemplateBegin: (e: any, name: string, value: string) => void;\n editTemplateCancel: () => void;\n editTemplateConfirm: () => void;\n editTemplateName: (event: any) => void;\n editTemplateValue: (event: any) => void;\n selectTemplate: (option: Option) => void;\n}\n\nexport type IFilterTemplateSelectorProps = IFilterTemplateSelectorStateProps & IFilterTemplateSelectorDispatchProps;\n\nexport class FilterTemplateSelector extends React.Component<IFilterTemplateSelectorProps> {\n private getOptions = (): Option[] => {\n const templateOptions = Object.keys(this.props.templates).map((t) => ({\n value: t,\n label: t,\n requestingNew: false,\n }));\n templateOptions.push({ value: null, label: null, requestingNew: true });\n return templateOptions;\n };\n\n private optionRenderer = (option: Option<string>): JSX.Element => {\n if (option.requestingNew) {\n return <span>Create new...</span>;\n }\n return (\n <span className=\"filter-template-option\">\n <span>{option.label}</span>\n <span>\n <button className=\"link\" onMouseDown={(e) => this.props.deleteTemplate(e, option.value)}>\n Delete\n </button>\n <button\n className=\"link\"\n onMouseDown={(e) => this.props.editTemplateBegin(e, option.value, this.props.templates[option.value])}\n >\n Edit\n </button>\n </span>\n </span>\n );\n };\n\n public render() {\n const {\n editedTemplateName,\n editedTemplateValue,\n editTemplateCancel,\n editTemplateConfirm,\n editTemplateName,\n editTemplateValue,\n selectTemplate,\n selectedTemplateName,\n templates,\n validation,\n } = this.props;\n const isEditing = isString(editedTemplateName) && isString(editedTemplateValue);\n return (\n <>\n <FormRow label=\"Filter Template\" helpId=\"canary.config.filterTemplate\" inputOnly={true}>\n {!isEditing && (\n <DisableableReactSelect\n value={selectedTemplateName}\n disabledStateKeys={[DISABLE_EDIT_CONFIG]}\n onChange={selectTemplate}\n options={this.getOptions()}\n optionRenderer={this.optionRenderer}\n />\n )}\n </FormRow>\n {isEditing && (\n <>\n <FormRow label=\"Name\" error={get(validation, 'errors.templateName.message')} inputOnly={true}>\n <DisableableInput\n disabledStateKeys={[DISABLE_EDIT_CONFIG]}\n onChange={editTemplateName}\n value={editedTemplateName}\n />\n </FormRow>\n <FormRow\n label=\"Template\"\n inputOnly={true}\n error={get(validation, 'errors.templateValue.message')}\n warning={get(validation, 'warnings.template.message')}\n >\n <DisableableTextarea\n className=\"template-editor-textarea\"\n disabledStateKeys={[DISABLE_EDIT_CONFIG]}\n onChange={editTemplateValue}\n value={editedTemplateValue}\n />\n </FormRow>\n <FormRow>\n <div className=\"horizontal pull-right\">\n <button className=\"link\" onClick={editTemplateCancel}>\n Cancel\n </button>\n <button\n className=\"link\"\n disabled={[validation.errors.templateName, validation.errors.templateValue].some((e) => e != null)}\n onClick={editTemplateConfirm}\n >\n Save\n </button>\n </div>\n </FormRow>\n </>\n )}\n {!isEditing && selectedTemplateName && (\n <FormRow>\n <pre className=\"template-editor-value-formatted\">{templates[selectedTemplateName]}</pre>\n </FormRow>\n )}\n </>\n );\n }\n}\n\nconst mapStateToProps = (state: ICanaryState): IFilterTemplateSelectorStateProps => ({\n editedTemplateName: get(editingTemplateSelector(state), 'editedName'),\n editedTemplateValue: get(editingTemplateSelector(state), 'editedValue'),\n selectedTemplateName: selectedTemplateNameSelector(state),\n templates: configTemplatesSelector(state),\n validation: editingTemplateValidationSelector(state),\n});\n\nconst mapDispatchToProps = (dispatch: Dispatch<ICanaryState>): IFilterTemplateSelectorDispatchProps => ({\n deleteTemplate: (e: any, name: string) => {\n e.stopPropagation();\n dispatch(Creators.selectTemplate({ name: null }));\n dispatch(Creators.deleteTemplate({ name }));\n },\n editTemplateBegin: (e: any, name: string, value: string) => {\n e.stopPropagation();\n dispatch(Creators.selectTemplate({ name }));\n dispatch(\n Creators.editTemplateBegin({\n name,\n value,\n }),\n );\n },\n editTemplateCancel: () => dispatch(Creators.editTemplateCancel()),\n editTemplateConfirm: () => dispatch(Creators.editTemplateConfirm()),\n editTemplateName: (event: any) => dispatch(Creators.editTemplateName({ name: event.target.value })),\n editTemplateValue: (event: any) => dispatch(Creators.editTemplateValue({ value: event.target.value })),\n selectTemplate: (option: Option<string>) => {\n if (option && option.requestingNew === true) {\n dispatch(Creators.selectTemplate({ name: null }));\n dispatch(Creators.addTemplate());\n } else {\n dispatch(Creators.selectTemplate({ name: option ? option.value : null }));\n }\n },\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(FilterTemplateSelector);\n","import * as Creators from 'kayenta/actions/creators';\nimport { DISABLE_EDIT_CONFIG, DisableableTextarea } from 'kayenta/layout/disableable';\nimport FormRow from 'kayenta/layout/formRow';\nimport { ICanaryState } from 'kayenta/reducers';\nimport {\n inlineTemplateValueSelector,\n transformInlineTemplateForSave,\n} from 'kayenta/selectors/filterTemplatesSelectors';\nimport { isEmpty } from 'lodash';\nimport * as React from 'react';\nimport { connect } from 'react-redux';\n\ninterface IInlineTemplateEditorStateProps {\n templateValue: string;\n transformValueForSave: (value: string) => string;\n}\n\ninterface IInlineTemplateEditorDispatchProps {\n editTemplateValue: (value: string) => void;\n}\n\nexport type IInlineTemplateEditorProps = IInlineTemplateEditorStateProps & IInlineTemplateEditorDispatchProps;\n\nexport function InlineTemplateEditor({\n editTemplateValue,\n templateValue,\n transformValueForSave,\n}: IInlineTemplateEditorProps) {\n return (\n <FormRow\n label=\"Template\"\n inputOnly={true}\n helpId=\"canary.config.filterTemplate\"\n error={isEmpty(templateValue) && 'Template is required'}\n >\n <DisableableTextarea\n className=\"template-editor-textarea\"\n disabledStateKeys={[DISABLE_EDIT_CONFIG]}\n onChange={(e: any) => editTemplateValue(transformValueForSave(e.target.value))}\n value={templateValue}\n />\n </FormRow>\n );\n}\n\nfunction mapStateToProps(state: ICanaryState): IInlineTemplateEditorStateProps {\n return {\n templateValue: inlineTemplateValueSelector(state),\n transformValueForSave: transformInlineTemplateForSave(state),\n };\n}\n\nfunction mapDispatchToProps(dispatch: any): IInlineTemplateEditorDispatchProps {\n return {\n editTemplateValue: (value: string) => dispatch(Creators.editInlineTemplate({ value })),\n };\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(InlineTemplateEditor);\n","import { ICanaryMetricConfig } from 'kayenta/domain/ICanaryConfig';\nimport metricStoreConfigService from 'kayenta/metricStore/metricStoreConfig.service';\nimport { ICanaryState } from 'kayenta/reducers';\nimport * as React from 'react';\nimport { connect } from 'react-redux';\n\ninterface IMetricConfigurerDelegatorStateProps {\n editingMetric: ICanaryMetricConfig;\n}\n\n/*\n * Should find and render the appropriate metric configurer for a given metric store.\n * */\nfunction MetricConfigurerDelegator({ editingMetric }: IMetricConfigurerDelegatorStateProps) {\n const config = metricStoreConfigService.getDelegate(editingMetric.query.type);\n if (config && config.metricConfigurer) {\n const MetricConfigurer = config.metricConfigurer;\n return <MetricConfigurer />;\n } else {\n return <p>Metric configuration has not been implemented for {editingMetric.query.type}.</p>;\n }\n}\n\nfunction mapStateToProps(state: ICanaryState): IMetricConfigurerDelegatorStateProps {\n return {\n editingMetric: state.selectedConfig.editingMetric,\n };\n}\n\nexport default connect(mapStateToProps)(MetricConfigurerDelegator);\n","import classNames from 'classnames';\nimport * as Creators from 'kayenta/actions/creators';\nimport { CanarySettings } from 'kayenta/canary.settings';\nimport { ICanaryMetricConfig } from 'kayenta/domain';\nimport { DISABLE_EDIT_CONFIG, DisableableInput, DisableableSelect } from 'kayenta/layout/disableable';\nimport FormRow from 'kayenta/layout/formRow';\nimport RadioChoice from 'kayenta/layout/radioChoice';\nimport Styleguide from 'kayenta/layout/styleguide';\nimport metricStoreConfigService from 'kayenta/metricStore/metricStoreConfig.service';\nimport { ICanaryState } from 'kayenta/reducers';\nimport { editingMetricValidationErrorsSelector } from 'kayenta/selectors';\nimport { isTemplateValidSelector, useInlineTemplateEditorSelector } from 'kayenta/selectors/filterTemplatesSelectors';\nimport { isNull, values } from 'lodash';\nimport * as React from 'react';\nimport { Modal } from 'react-bootstrap';\nimport { connect } from 'react-redux';\n\nimport { noop } from '@spinnaker/core';\n\nimport EditMetricEffectSizes from './editMetricEffectSizes';\nimport { ICanaryMetricValidationErrors } from './editMetricValidation';\nimport FilterTemplateSelector from './filterTemplateSelector';\nimport InlineTemplateEditor from './inlineTemplateEditor';\nimport MetricConfigurerDelegator from './metricConfigurerDelegator';\n\nimport './editMetricModal.less';\n\ninterface IEditMetricModalDispatchProps {\n rename: (event: any) => void;\n changeGroup: (event: any) => void;\n updateDirection: (event: any) => void;\n updateNanStrategy: (event: any) => void;\n updateCriticality: (event: any) => void;\n confirm: () => void;\n cancel: () => void;\n}\n\ninterface IEditMetricModalStateProps {\n metric: ICanaryMetricConfig;\n groups: string[];\n isTemplateValid: boolean;\n useInlineTemplateEditor: boolean;\n disableEdit: boolean;\n validationErrors: ICanaryMetricValidationErrors;\n}\n\n/*\n * Modal to edit metric details.\n */\nfunction EditMetricModal({\n metric,\n rename,\n changeGroup,\n groups,\n confirm,\n cancel,\n isTemplateValid,\n updateDirection,\n updateNanStrategy,\n updateCriticality,\n useInlineTemplateEditor,\n disableEdit,\n validationErrors,\n}: IEditMetricModalDispatchProps & IEditMetricModalStateProps) {\n if (!metric) {\n return null;\n }\n\n const direction = metric.analysisConfigurations?.canary?.direction ?? 'either';\n const nanStrategy = metric.analysisConfigurations?.canary?.nanStrategy ?? 'default';\n const critical = metric.analysisConfigurations?.canary?.critical ?? false;\n const isConfirmDisabled = !isTemplateValid || disableEdit || values(validationErrors).some((e) => !isNull(e));\n\n const metricGroup = metric.groups.length ? metric.groups[0] : groups[0];\n const templatesEnabled =\n metricStoreConfigService.getDelegate(metric.query.type) &&\n metricStoreConfigService.getDelegate(metric.query.type).useTemplates &&\n CanarySettings.templatesEnabled;\n return (\n <Modal bsSize=\"large\" show={true} onHide={noop} className={classNames('kayenta-edit-metric-modal')}>\n <Styleguide>\n <Modal.Header>\n <Modal.Title>{disableEdit ? 'Metric Details' : 'Configure Metric'}</Modal.Title>\n </Modal.Header>\n <Modal.Body>\n <FormRow label=\"Group\" inputOnly={true}>\n {metric.groups.length > 1 && (\n <DisableableInput\n type=\"text\"\n value={metric.groups}\n data-id={metric.id}\n onChange={changeGroup}\n disabledStateKeys={[DISABLE_EDIT_CONFIG]}\n />\n )}\n {metric.groups.length < 2 && (\n <DisableableSelect\n value={metricGroup}\n onChange={changeGroup}\n className=\"form-control input-sm\"\n disabledStateKeys={[DISABLE_EDIT_CONFIG]}\n >\n {groups.map((g) => (\n <option key={g} value={g}>\n {g}\n </option>\n ))}\n </DisableableSelect>\n )}\n </FormRow>\n <FormRow label=\"Name\" error={validationErrors?.name?.message ?? null} inputOnly={true}>\n <DisableableInput\n type=\"text\"\n value={metric.name}\n data-id={metric.id}\n onChange={rename}\n disabledStateKeys={[DISABLE_EDIT_CONFIG]}\n />\n </FormRow>\n <FormRow label=\"Fail on\">\n <RadioChoice\n value=\"increase\"\n label=\"Increase\"\n name=\"direction\"\n current={direction}\n action={updateDirection}\n />\n <RadioChoice\n value=\"decrease\"\n label=\"Decrease\"\n name=\"direction\"\n current={direction}\n action={updateDirection}\n />\n <RadioChoice value=\"either\" label=\"Either\" name=\"direction\" current={direction} action={updateDirection} />\n </FormRow>\n <FormRow label=\"Criticality\" checkbox={true}>\n <label>\n <DisableableInput\n type=\"checkbox\"\n checked={critical}\n onChange={updateCriticality}\n disabledStateKeys={[DISABLE_EDIT_CONFIG]}\n />\n Fail the canary if this metric fails\n </label>\n </FormRow>\n <FormRow label=\"NaN Strategy\" helpId=\"canary.config.nanStrategy\">\n <RadioChoice\n value=\"default\"\n label=\"Default (remove)\"\n name=\"nanStrategy\"\n current={nanStrategy}\n action={updateNanStrategy}\n />\n <RadioChoice\n value=\"replace\"\n label=\"Replace with zero\"\n name=\"nanStrategy\"\n current={nanStrategy}\n action={updateNanStrategy}\n />\n <RadioChoice\n value=\"remove\"\n label=\"Remove\"\n name=\"nanStrategy\"\n current={nanStrategy}\n action={updateNanStrategy}\n />\n </FormRow>\n <EditMetricEffectSizes />\n <MetricConfigurerDelegator />\n {templatesEnabled && !useInlineTemplateEditor && <FilterTemplateSelector />}\n {templatesEnabled && useInlineTemplateEditor && <InlineTemplateEditor />}\n </Modal.Body>\n <Modal.Footer>\n <ul className=\"list-inline pull-right\">\n <li>\n <button className=\"passive\" onClick={cancel}>\n Cancel\n </button>\n </li>\n <li>\n <button className=\"primary\" disabled={isConfirmDisabled} onClick={confirm}>\n OK\n </button>\n </li>\n </ul>\n </Modal.Footer>\n </Styleguide>\n </Modal>\n );\n}\n\nfunction mapDispatchToProps(dispatch: any): IEditMetricModalDispatchProps {\n return {\n rename: (event: any) => {\n dispatch(Creators.renameMetric({ id: event.target.dataset.id, name: event.target.value }));\n },\n changeGroup: (event: any) => {\n dispatch(Creators.updateMetricGroup({ id: event.target.dataset.id, group: event.target.value }));\n },\n cancel: () => {\n dispatch(Creators.editMetricCancel());\n dispatch(Creators.editTemplateCancel());\n },\n confirm: () => {\n dispatch(Creators.editMetricConfirm());\n dispatch(Creators.editTemplateCancel());\n },\n updateDirection: ({ target }: React.ChangeEvent<HTMLInputElement>) => {\n dispatch(Creators.updateMetricDirection({ id: target.dataset.id, direction: target.value }));\n },\n updateNanStrategy: ({ target }: React.ChangeEvent<HTMLInputElement>) => {\n dispatch(Creators.updateMetricNanStrategy({ id: target.dataset.id, strategy: target.value }));\n },\n updateCriticality: ({ target }: React.ChangeEvent<HTMLInputElement>) => {\n dispatch(Creators.updateMetricCriticality({ id: target.dataset.id, critical: Boolean(target.checked) }));\n },\n };\n}\n\nfunction mapStateToProps(state: ICanaryState): IEditMetricModalStateProps {\n return {\n metric: state.selectedConfig.editingMetric,\n groups: state.selectedConfig.group.list.sort(),\n isTemplateValid: isTemplateValidSelector(state),\n // eslint-disable-next-line react-hooks/rules-of-hooks\n useInlineTemplateEditor: useInlineTemplateEditorSelector(state),\n disableEdit: state.app.disableConfigEdit,\n validationErrors: editingMetricValidationErrorsSelector(state),\n };\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(EditMetricModal);\n","import * as React from 'react';\n\nimport './titledSection.less';\n\nexport interface ISectionProps {\n title: string;\n children?: any;\n}\n\n// TODO: implemented the mocks using a modified open pod, but the styleguide should add something more directly appropriate\nexport default function TitledSection({ title, children }: ISectionProps) {\n return (\n <section className=\"pod open titled-section\">\n <div className=\"header horizontal middle\">\n <div className=\"flex-1 heading-2 uppercase\">{title}</div>\n </div>\n <div className=\"contents vertical\">{children}</div>\n </section>\n );\n}\n","import * as Creators from 'kayenta/actions/creators';\nimport { ICanaryMetricConfig } from 'kayenta/domain/ICanaryConfig';\nimport { DISABLE_EDIT_CONFIG, DisableableSelect } from 'kayenta/layout/disableable';\nimport Styleguide from 'kayenta/layout/styleguide';\nimport { ICanaryState } from 'kayenta/reducers';\nimport * as React from 'react';\nimport { Modal } from 'react-bootstrap';\nimport { connect } from 'react-redux';\nimport { Action } from 'redux';\n\nimport { noop } from '@spinnaker/core';\n\ninterface IChangeMetricGroupModalOwnProps {\n metric: ICanaryMetricConfig;\n}\n\ninterface IChangeMetricGroupModalStateProps {\n groups: string[];\n toGroup: string;\n}\n\ninterface IChangeMetricGroupModalDispatchProps {\n select: (event: any) => void;\n clear: () => void;\n confirm: () => void;\n}\n\nfunction ChangeMetricGroupModal({\n groups,\n toGroup,\n confirm,\n clear,\n select,\n}: IChangeMetricGroupModalStateProps & IChangeMetricGroupModalDispatchProps) {\n return (\n <Modal show={true} onHide={noop}>\n <Styleguide>\n <Modal.Header>\n <Modal.Title>Change Metric Group</Modal.Title>\n </Modal.Header>\n <Modal.Body>\n <DisableableSelect\n value={toGroup || ''}\n onChange={select}\n className=\"form-control input-sm\"\n disabledStateKeys={[DISABLE_EDIT_CONFIG]}\n >\n <option value={''}>-- select group --</option>\n {groups.map((g) => (\n <option key={g} value={g}>\n {g}\n </option>\n ))}\n </DisableableSelect>\n </Modal.Body>\n <Modal.Footer>\n <ul className=\"list-inline pull-right\">\n <li>\n <button className=\"passive\" onClick={clear}>\n Cancel\n </button>\n </li>\n <li>\n <button className=\"primary\" disabled={!toGroup} onClick={confirm}>\n OK\n </button>\n </li>\n </ul>\n </Modal.Footer>\n </Styleguide>\n </Modal>\n );\n}\n\nfunction mapStateToProps(\n state: ICanaryState,\n { metric }: IChangeMetricGroupModalOwnProps,\n): IChangeMetricGroupModalStateProps {\n // If a metric belongs to more than one group, allow a move into one of those groups.\n // e.g., a [system, requests] -> [requests] move should be allowed, but\n // don't offer a [system] -> [system] move.\n return {\n groups: state.selectedConfig.group.list.filter((g) => metric.groups.length > 1 || !metric.groups.includes(g)),\n toGroup: state.selectedConfig.changeMetricGroup.toGroup,\n };\n}\n\nfunction mapDispatchToProps(\n dispatch: (action: Action & any) => void,\n { metric }: IChangeMetricGroupModalOwnProps,\n): IChangeMetricGroupModalDispatchProps {\n return {\n select: (event: any) => {\n dispatch(Creators.changeMetricGroupSelect({ group: event.target.value || null }));\n },\n clear: () => {\n dispatch(Creators.changeMetricGroupConfirm({ metricId: null }));\n },\n confirm: () => {\n dispatch(Creators.changeMetricGroupConfirm({ metricId: metric.id }));\n },\n };\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(ChangeMetricGroupModal);\n","import classNames from 'classnames';\nimport * as Creators from 'kayenta/actions/creators';\nimport { ICanaryMetricConfig } from 'kayenta/domain';\nimport { DISABLE_EDIT_CONFIG, DisableableButton } from 'kayenta/layout/disableable';\nimport { ITableColumn, NativeTable } from 'kayenta/layout/table';\nimport { ICanaryState } from 'kayenta/reducers';\nimport { cloneDeep } from 'lodash';\nimport * as React from 'react';\nimport { connect } from 'react-redux';\nimport { Action } from 'redux';\n\nimport { Tooltip } from '@spinnaker/core';\n\nimport ChangeMetricGroupModal from './changeMetricGroupModal';\n\nimport './metricList.less';\n\ninterface IMetricListStateProps {\n selectedGroup: string;\n metrics: ICanaryMetricConfig[];\n showGroups: boolean;\n changingGroupMetric: ICanaryMetricConfig;\n groupList: string[];\n metricStore: string;\n disableEdit: boolean;\n}\n\ninterface IMetricListDispatchProps {\n addMetric: (event: any) => void;\n editMetric: (event: any) => void;\n copyMetric: (metric: ICanaryMetricConfig) => void;\n removeMetric: (event: any) => void;\n openChangeMetricGroupModal: (event: any) => void;\n}\n\nfunction FailOn({ metric }: { metric: ICanaryMetricConfig }) {\n const direction = metric.analysisConfigurations?.canary?.direction;\n const isCritical = metric.analysisConfigurations?.canary?.critical;\n const tooltipSuffix = isCritical ? '(critical — if this metric fails, the entire canary will fail)' : '';\n const classes = classNames('metric-fail-on-icon', 'fas', 'sp-margin-xs-right', { critical: isCritical });\n if (direction === 'decrease') {\n return (\n <Tooltip value={`decrease ${tooltipSuffix}`}>\n <i className={`fa-caret-square-down ${classes}`} />\n </Tooltip>\n );\n }\n if (direction === 'increase') {\n return (\n <Tooltip value={`increase ${tooltipSuffix}`}>\n <i className={`fa-caret-square-up ${classes}`} />\n </Tooltip>\n );\n }\n return (\n <Tooltip value={`increase OR decrease ${tooltipSuffix}`}>\n <span>\n <i className={`fa-caret-square-down ${classes}`} />\n <i className={`fa-caret-square-up ${classes}`} />\n </span>\n </Tooltip>\n );\n}\n\n/*\n * Configures an entire list of metrics.\n */\nfunction MetricList({\n metrics,\n groupList,\n selectedGroup,\n showGroups,\n addMetric,\n editMetric,\n copyMetric,\n removeMetric,\n changingGroupMetric,\n openChangeMetricGroupModal,\n metricStore,\n disableEdit,\n}: IMetricListStateProps & IMetricListDispatchProps) {\n const columns: Array<ITableColumn<ICanaryMetricConfig>> = [\n {\n label: 'Metric Name',\n getContent: (metric) => <span>{metric.name || '(new)'}</span>,\n },\n {\n label: 'Fail On',\n getContent: (metric) => <FailOn metric={metric} />,\n },\n {\n label: 'Groups',\n getContent: (metric) => <span>{metric.groups.join(', ')}</span>,\n hide: () => !showGroups,\n },\n {\n getContent: (metric) => (\n <div className=\"horizontal pull-right metrics-action-buttons\">\n <button className=\"link\" data-id={metric.id} onClick={editMetric}>\n {disableEdit ? 'View' : 'Edit'}\n </button>\n <button className=\"link\" data-id={metric.id} disabled={disableEdit} onClick={openChangeMetricGroupModal}>\n Move Group\n </button>\n <button className=\"link\" data-id={metric.id} disabled={disableEdit} onClick={() => copyMetric(metric)}>\n Copy\n </button>\n <button className=\"link\" data-id={metric.id} disabled={disableEdit} onClick={removeMetric}>\n Delete\n </button>\n </div>\n ),\n },\n ];\n\n return (\n <>\n <NativeTable columns={columns} rows={metrics} rowKey={(metric) => metric.id} className=\"header-white\" />\n {!metrics.length && selectedGroup ? (\n <p>\n This group is empty! The group will be not be present the next time the config is loaded unless it is saved\n with at least one metric in it.\n </p>\n ) : null}\n {changingGroupMetric && <ChangeMetricGroupModal metric={changingGroupMetric} />}\n <DisableableButton\n className=\"passive self-left\"\n data-group={selectedGroup}\n data-default={groupList[0]}\n data-metric-store={metricStore}\n onClick={addMetric}\n disabledStateKeys={[DISABLE_EDIT_CONFIG]}\n >\n Add Metric\n </DisableableButton>\n </>\n );\n}\n\nfunction mapStateToProps(state: ICanaryState): IMetricListStateProps {\n const selectedGroup = state.selectedConfig.group.selected;\n const metricList = state.selectedConfig.metricList;\n\n const filter = selectedGroup ? (metric: ICanaryMetricConfig) => metric.groups.includes(selectedGroup) : () => true;\n return {\n selectedGroup,\n groupList: state.selectedConfig.group.list,\n metrics: metricList.filter(filter),\n showGroups: !selectedGroup || metricList.filter(filter).some((metric) => metric.groups.length > 1),\n changingGroupMetric: state.selectedConfig.metricList.find(\n (m) => m.id === state.selectedConfig.changeMetricGroup.metric,\n ),\n metricStore: state.selectedConfig.selectedStore,\n disableEdit: state.app.disableConfigEdit,\n };\n}\n\nfunction mapDispatchToProps(dispatch: (action: Action & any) => void): IMetricListDispatchProps {\n return {\n addMetric: (event: any) => {\n const group = event.target.dataset.group || event.target.dataset.default;\n dispatch(\n Creators.addMetric({\n metric: {\n // TODO: need to block saving an invalid name\n // TODO: for Atlas metrics, attempt to gather name when query changes\n id: '[new]',\n analysisConfigurations: {},\n name: '',\n query: {\n type: event.target.dataset.metricStore,\n serviceType: event.target.dataset.metricStore,\n },\n groups: group ? [group] : [],\n scopeName: 'default', // scopeName always defaults to `default` and is not configurable from the UI\n isNew: true,\n },\n }),\n );\n },\n copyMetric: (metric: ICanaryMetricConfig) => {\n const metricCopy: ICanaryMetricConfig = cloneDeep(metric);\n metricCopy.id = '[new]';\n metricCopy.isNew = true;\n metricCopy.name = '';\n dispatch(Creators.addMetric({ metric: metricCopy }));\n },\n editMetric: (event: any) => {\n dispatch(Creators.editMetricBegin({ id: event.target.dataset.id }));\n },\n removeMetric: (event: any) => {\n dispatch(Creators.removeMetric({ id: event.target.dataset.id }));\n },\n openChangeMetricGroupModal: (event: any) => dispatch(Creators.changeMetricGroup({ id: event.target.dataset.id })),\n };\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(MetricList);\n","import * as React from 'react';\n\nexport interface IFormListProps {\n children: JSX.Element[] | JSX.Element;\n}\n\n/*\n * Mostly exists to centralize styles for form components.\n * */\nexport default function FormList({ children }: IFormListProps) {\n return (\n <ul className=\"list-group\">\n {React.Children.map(\n children,\n (c) =>\n c && (\n <li className=\"list-unstyled\">\n <form role=\"form\" className=\"form-horizontal container-fluid\">\n <div className=\"col-md-12\">{c}</div>\n </form>\n </li>\n ),\n )}\n </ul>\n );\n}\n","import * as Creators from 'kayenta/actions/creators';\nimport { KayentaAccountType } from 'kayenta/domain';\nimport { DISABLE_EDIT_CONFIG, DisableableSelect } from 'kayenta/layout/disableable';\nimport FormRow from 'kayenta/layout/formRow';\nimport { ICanaryState } from 'kayenta/reducers';\nimport { chain } from 'lodash';\nimport * as React from 'react';\nimport { connect, Dispatch } from 'react-redux';\n\ninterface IMetricStoreSelectorStateProps {\n stores: string[];\n selectedStore: string;\n}\n\ninterface IMetricStoreSelectorDispatchProps {\n select: (event: any) => void;\n}\n\nconst MetricStoreSelector = ({\n stores,\n selectedStore,\n select,\n}: IMetricStoreSelectorDispatchProps & IMetricStoreSelectorStateProps) => {\n if (stores.length < 2) {\n return null;\n }\n\n return (\n <FormRow label=\"Metric Store\" inputOnly={true}>\n <DisableableSelect\n value={selectedStore || ''}\n onChange={select}\n className=\"form-control input-sm\"\n disabledStateKeys={[DISABLE_EDIT_CONFIG]}\n >\n {stores.map((s) => (\n <option key={s} value={s}>\n {s}\n </option>\n ))}\n </DisableableSelect>\n </FormRow>\n );\n};\n\nconst mapStateToProps = (state: ICanaryState): IMetricStoreSelectorStateProps => {\n return {\n stores: chain(state.data.kayentaAccounts.data)\n .filter((account) => account.supportedTypes.includes(KayentaAccountType.MetricsStore))\n .map((account) => account.metricsStoreType || account.type)\n .uniq()\n .sort()\n .valueOf(),\n selectedStore: state.selectedConfig.selectedStore,\n };\n};\n\nconst mapDispatchToProps = (dispatch: Dispatch<ICanaryState>): IMetricStoreSelectorDispatchProps => {\n return {\n select: (event: any) => dispatch(Creators.selectMetricStore({ store: event.target.value })),\n };\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(MetricStoreSelector);\n","import * as Creators from 'kayenta/actions/creators';\nimport { DISABLE_EDIT_CONFIG, DisableableInput, DisableableTextarea } from 'kayenta/layout/disableable';\nimport FormList from 'kayenta/layout/formList';\nimport FormRow from 'kayenta/layout/formRow';\nimport { ICanaryState } from 'kayenta/reducers';\nimport * as React from 'react';\nimport { connect } from 'react-redux';\nimport { Action } from 'redux';\n\nimport MetricStoreSelector from './metricStoreSelector';\n\ninterface INameAndDescriptionDispatchProps {\n changeName: (event: React.ChangeEvent<HTMLInputElement>) => void;\n changeDescription: (event: React.ChangeEvent<HTMLTextAreaElement>) => void;\n}\n\ninterface INameAndDescriptionStateProps {\n name: string;\n description: string;\n}\n\n/*\n * Configures canary config name and description.\n */\nfunction NameAndDescription({\n name,\n description,\n changeName,\n changeDescription,\n}: INameAndDescriptionDispatchProps & INameAndDescriptionStateProps) {\n return (\n <FormList>\n <FormRow label=\"Configuration Name\" inputOnly={true}>\n <DisableableInput type=\"text\" value={name} onChange={changeName} disabledStateKeys={[DISABLE_EDIT_CONFIG]} />\n </FormRow>\n <MetricStoreSelector />\n <FormRow label=\"Description\" inputOnly={true}>\n <DisableableTextarea\n className=\"form-control input-sm\"\n value={description}\n onChange={changeDescription}\n disabledStateKeys={[DISABLE_EDIT_CONFIG]}\n />\n </FormRow>\n </FormList>\n );\n}\n\nfunction mapStateToProps(state: ICanaryState): INameAndDescriptionStateProps {\n if (state.selectedConfig.config) {\n return {\n name: state.selectedConfig.config.name,\n description: state.selectedConfig.config.description,\n };\n } else {\n return {\n name: '',\n description: '',\n };\n }\n}\n\nfunction mapDispatchToProps(dispatch: (action: Action & any) => void): INameAndDescriptionDispatchProps {\n return {\n changeName: (event: React.ChangeEvent<HTMLInputElement>) => {\n dispatch(\n Creators.updateConfigName({\n name: event.target.value,\n }),\n );\n },\n changeDescription: (event: React.ChangeEvent<HTMLTextAreaElement>) => {\n dispatch(\n Creators.updateConfigDescription({\n description: event.target.value,\n }),\n );\n },\n };\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(NameAndDescription);\n","import * as React from 'react';\nimport { HelpField } from '@spinnaker/core';\n\nimport './titledSubsection.less';\n\nexport interface ITitledSubsectionProps {\n children: any;\n title: string;\n helpKey?: string;\n}\n\nexport default function TitledSubsection({ title, children, helpKey }: ITitledSubsectionProps) {\n return (\n <section className=\"titled-subsection\">\n <h5 className=\"heading-5\">\n {title} {helpKey && <HelpField id={helpKey} />}\n </h5>\n <hr />\n {children}\n </section>\n );\n}\n","import * as Creators from 'kayenta/actions/creators';\nimport { ICanaryConfig } from 'kayenta/domain/ICanaryConfig';\nimport { DISABLE_EDIT_CONFIG, DisableableInput } from 'kayenta/layout/disableable';\nimport { ICanaryState } from 'kayenta/reducers';\nimport { mapStateToConfig } from 'kayenta/service/canaryConfig.service';\nimport { get, isNumber } from 'lodash';\nimport * as React from 'react';\nimport { connect } from 'react-redux';\nimport { Action } from 'redux';\n\nimport FormRow from '../layout/formRow';\n\nexport interface IGroupWeightOwnProps {\n group: string;\n}\n\ninterface IGroupWeightStateProps {\n config: ICanaryConfig;\n}\n\ninterface IGroupWeightDispatchProps {\n handleInputChange: (event: React.ChangeEvent<HTMLInputElement>) => void;\n}\n\n/*\n * Component for configuring a group weight.\n * */\nfunction GroupWeight({\n group,\n config,\n handleInputChange,\n}: IGroupWeightOwnProps & IGroupWeightStateProps & IGroupWeightDispatchProps) {\n const groupWeight = getGroupWeights(config)[group];\n return (\n <FormRow label={group} inputOnly={true}>\n <DisableableInput\n type=\"number\"\n value={isNumber(groupWeight) ? groupWeight : ''}\n onChange={handleInputChange}\n min={0}\n max={100}\n disabledStateKeys={[DISABLE_EDIT_CONFIG]}\n />\n </FormRow>\n );\n}\n\nfunction getGroupWeights(config: ICanaryConfig): { [key: string]: number } {\n return get(config, 'classifier.groupWeights', {});\n}\n\nfunction mapStateToProps(\n state: ICanaryState,\n ownProps: IGroupWeightOwnProps,\n): IGroupWeightOwnProps & IGroupWeightStateProps {\n return {\n ...ownProps,\n config: mapStateToConfig(state),\n };\n}\n\nfunction mapDispatchToProps(\n dispatch: (action: Action & any) => void,\n { group }: IGroupWeightOwnProps,\n): IGroupWeightDispatchProps {\n return {\n handleInputChange: (event: React.ChangeEvent<HTMLInputElement>) => {\n dispatch(\n Creators.updateGroupWeight({\n group,\n weight: event.target.value ? parseInt(event.target.value, 10) : null,\n }),\n );\n },\n };\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(GroupWeight);\n","import { flatMap, uniq } from 'lodash';\nimport * as React from 'react';\nimport { connect } from 'react-redux';\n\nimport GroupWeight from './groupWeight';\nimport { ICanaryState } from '../reducers/index';\nimport { mapStateToConfig } from '../service/canaryConfig.service';\n\ninterface IGroupWeightsStateProps {\n groups: string[];\n}\n\n/*\n * Component for rendering list of group weight configurers.\n */\nfunction GroupWeights({ groups }: IGroupWeightsStateProps) {\n const hasGroups = groups.length > 0;\n return (\n <section>\n {hasGroups ? (\n groups.map((group) => <GroupWeight key={group} group={group} />)\n ) : (\n <p key=\"no-groups\">You have not configured any grouped metrics.</p>\n )}\n </section>\n );\n}\n\nfunction mapStateToProps(state: ICanaryState): IGroupWeightsStateProps {\n const config = mapStateToConfig(state);\n const metrics = config ? config.metrics : [];\n const groups = uniq(flatMap(metrics, (metric) => metric.groups || []));\n return {\n groups,\n };\n}\n\nexport default connect(mapStateToProps)(GroupWeights);\n","import TitledSubsection from 'kayenta/layout/titledSubsection';\nimport * as React from 'react';\nimport { connect } from 'react-redux';\n\nimport GroupWeights from './groupWeights';\nimport JudgeSelect, { JudgeSelectRenderState } from './judgeSelect';\nimport FormList from '../layout/formList';\nimport { ICanaryState } from '../reducers/index';\n\ninterface IScoringStateProps {\n renderJudgeSelect: boolean;\n}\n\nfunction Scoring({ renderJudgeSelect }: IScoringStateProps) {\n return (\n <FormList>\n {renderJudgeSelect && (\n <TitledSubsection title=\"Judge\">\n <JudgeSelect />\n </TitledSubsection>\n )}\n <TitledSubsection title=\"Metric Group Weights\" helpKey=\"canary.config.metricGroupWeights\">\n <GroupWeights />\n </TitledSubsection>\n </FormList>\n );\n}\n\nfunction mapStateToProps(state: ICanaryState) {\n return {\n renderJudgeSelect: state.selectedConfig.judge.renderState !== JudgeSelectRenderState.None,\n };\n}\n\nexport default connect(mapStateToProps)(Scoring);\n","import * as React from 'react';\n\nimport ConfigDetailHeader from './configDetailHeader';\nimport EditMetricModal from './editMetricModal';\nimport GroupTabs from './groupTabs';\nimport TitledSection from '../layout/titledSection';\nimport MetricList from './metricList';\nimport NameAndDescription from './nameAndDescription';\nimport Scoring from './scoring';\n\n/*\n * Top-level config detail layout\n */\nexport default function ConfigDetail() {\n return (\n <section className=\"config-detail\">\n <ConfigDetailHeader />\n <TitledSection title=\"Name and Description\">\n <NameAndDescription />\n </TitledSection>\n <TitledSection title=\"Metrics\">\n <GroupTabs />\n <MetricList />\n <EditMetricModal />\n </TitledSection>\n <TitledSection title=\"Scoring\">\n <Scoring />\n </TitledSection>\n </section>\n );\n}\n","import * as React from 'react';\n\nexport interface ICenteredDetailProps {\n children: JSX.Element;\n}\n\nexport default function CenteredDetail({ children }: ICenteredDetailProps) {\n return (\n <div className=\"row\">\n <div className=\"col-sm-offset-4\">{children}</div>\n </div>\n );\n}\n","import LoadStatesBuilder from 'kayenta/components/loadStates';\nimport * as React from 'react';\nimport { connect } from 'react-redux';\n\nimport ConfigDetail from './configDetail';\nimport CenteredDetail from '../layout/centeredDetail';\nimport { AsyncRequestState } from '../reducers/asyncRequest';\nimport { ICanaryState } from '../reducers/index';\n\ninterface IConfigLoadStatesProps {\n configLoadState: AsyncRequestState;\n}\n\n/*\n * Renders appropriate view given the configuration detail's load state.\n */\nfunction ConfigDetailLoadStates({ configLoadState }: IConfigLoadStatesProps) {\n const LoadStates = new LoadStatesBuilder()\n .onFulfilled(<ConfigDetail />)\n .onFailed(\n <CenteredDetail>\n <h3 className=\"heading-3\">Could not load canary config.</h3>\n </CenteredDetail>,\n )\n .build();\n\n return <LoadStates state={configLoadState} />;\n}\n\nfunction mapStateToProps(state: ICanaryState): IConfigLoadStatesProps {\n return {\n configLoadState: state.selectedConfig.load.state,\n };\n}\n\nexport default connect(mapStateToProps)(ConfigDetailLoadStates);\n","import * as React from 'react';\nimport { connect } from 'react-redux';\nimport { Action } from 'redux';\nimport { Observable } from 'rxjs/Observable';\nimport { Subscription } from 'rxjs/Subscription';\n\nimport * as Creators from '../actions/creators';\nimport ConfigDetailLoadStates from './configDetailLoadStates';\n\ninterface IConfigLoaderStateParamsProps {\n configNameStream: Observable<IConfigDetailStateParams>;\n}\n\ninterface IConfigLoaderDispatchProps {\n loadConfig: (stateParams: IConfigDetailStateParams) => void;\n}\n\ninterface IConfigDetailStateParams {\n id: string;\n copy: boolean;\n new: boolean;\n}\n\n/*\n * Top-level .configDetail state component.\n * Loads config details on changes to /canary/:configName path parameter, renders load states.\n */\nclass ConfigDetailLoader extends React.Component<IConfigLoaderDispatchProps & IConfigLoaderStateParamsProps> {\n private subscription: Subscription;\n\n constructor(props: IConfigLoaderDispatchProps & IConfigLoaderStateParamsProps) {\n const { configNameStream, loadConfig } = props;\n super(props);\n this.subscription = configNameStream.subscribe(loadConfig);\n }\n\n public componentWillUnmount(): void {\n this.subscription.unsubscribe();\n }\n\n public render() {\n return <ConfigDetailLoadStates />;\n }\n}\n\nfunction mapDispatchToProps(dispatch: (action: Action & any) => void): IConfigLoaderDispatchProps {\n return {\n loadConfig: (stateParams: IConfigDetailStateParams) => {\n if (stateParams.copy) {\n dispatch(Creators.copySelectedConfig());\n } else if (stateParams.new) {\n dispatch(Creators.createNewConfig());\n } else if (stateParams.id) {\n dispatch(Creators.loadConfigRequest({ id: stateParams.id }));\n }\n },\n };\n}\n\nexport default connect(null, mapDispatchToProps)(ConfigDetailLoader);\n","import { UISref } from '@uirouter/react';\nimport * as React from 'react';\nimport { connect } from 'react-redux';\n\nimport { UUIDGenerator } from '@spinnaker/core';\n\nimport { ICanaryState } from '../reducers/index';\n\ninterface ICreateConfigButtonStateProps {\n disabled: boolean;\n}\n\n/*\n * Button for creating a new canary config.\n */\nfunction CreateConfigButton({ disabled }: ICreateConfigButtonStateProps) {\n return (\n <UISref to=\".configDetail\" params={{ id: UUIDGenerator.generateUuid(), new: true }}>\n <button className=\"zombie text-left form-control\" disabled={disabled}>\n <i className=\"fa fa-plus-circle\" />\n <span>Add configuration</span>\n </button>\n </UISref>\n );\n}\n\nfunction mapStateToProps(state: ICanaryState): ICreateConfigButtonStateProps {\n return {\n disabled: state.selectedConfig.config && state.selectedConfig.config.isNew,\n };\n}\n\nexport default connect(mapStateToProps)(CreateConfigButton);\n","import * as React from 'react';\n\nimport { HelpField } from '@spinnaker/core';\n\ninterface IOwnedByProps {\n owningApplications: string[];\n currentApplication: string;\n}\n\nconst buildHelpText = (ownedBy: string[]): string => {\n if (ownedBy.length === 0) {\n return null;\n } else if (ownedBy.length === 1) {\n return `This config can only be edited from within the application <strong>${ownedBy[0]}.</strong>`;\n } else {\n return `This config can only be edited from within the following applications: <strong>${ownedBy.join(\n ', ',\n )}.</strong>`;\n }\n};\n\nexport const OwnedBy = ({ owningApplications, currentApplication }: IOwnedByProps) => {\n if (owningApplications.length < 2 && owningApplications.includes(currentApplication)) {\n return null;\n }\n\n return (\n <span>\n Owned by: {owningApplications.join(', ')}\n &nbsp;\n <HelpField placement=\"right\" content={buildHelpText(owningApplications)} />\n </span>\n );\n};\n","import { UISref } from '@uirouter/react';\nimport { ICanaryConfigSummary } from 'kayenta/domain/ICanaryConfigSummary';\nimport FormattedDate from 'kayenta/layout/formattedDate';\nimport { ICanaryState } from 'kayenta/reducers';\nimport { sortBy } from 'lodash';\nimport * as React from 'react';\nimport { connect } from 'react-redux';\n\nimport CreateConfigButton from './createConfigButton';\nimport { OwnedBy } from './ownedBy';\n\nimport './configList.less';\n\ninterface IConfigListStateProps {\n configs: ICanaryConfigSummary[];\n selectedConfigId: string;\n application: string;\n}\n\n/*\n * Shows a list of available configurations the user can select for editing.\n */\nfunction ConfigList({ configs, selectedConfigId, application }: IConfigListStateProps) {\n return (\n <section className=\"config-list\">\n <ul className=\"tabs-vertical list-unstyled \" style={{ wordBreak: 'break-all' }}>\n {configs.map((config) => (\n <li key={config.id} className={config.id === selectedConfigId ? 'selected' : ''}>\n <UISref to=\".configDetail\" params={{ id: config.id, new: false, copy: false }}>\n <a>\n <div className=\"heading-4 color-text-primary\">{config.name}</div>\n <div className=\"body-small color-text-caption caption\" style={{ marginTop: '5px', marginBottom: '0' }}>\n Edited: <FormattedDate dateIso={config.updatedTimestampIso} />\n <br />\n <OwnedBy owningApplications={config.applications} currentApplication={application} />\n </div>\n </a>\n </UISref>\n </li>\n ))}\n </ul>\n <CreateConfigButton />\n </section>\n );\n}\n\nfunction mapStateToProps(state: ICanaryState): IConfigListStateProps {\n const selectedConfigId = state.selectedConfig.config ? state.selectedConfig.config.id : null;\n const application = state.data.application.name;\n return {\n selectedConfigId,\n configs: sortBy(state.data.configSummaries, 'name'),\n application,\n };\n}\n\nexport default connect(mapStateToProps)(ConfigList);\n","import classNames from 'classnames';\nimport * as React from 'react';\n\nimport './footer.less';\n\nexport interface IFooterProps {\n children?: JSX.Element;\n}\n\nexport default function Footer({ children }: IFooterProps) {\n return <div className={classNames('row', 'canary-footer')}>{children}</div>;\n}\n","import classNames from 'classnames';\nimport * as React from 'react';\n\nexport interface IListDetailProps {\n className?: string;\n list: JSX.Element;\n listClass?: string;\n listWidth?: number;\n detail: JSX.Element;\n detailWidth?: number;\n detailClass?: string;\n}\n\n/*\n * A composite view that combines a list view in one panel and a detail view in another.\n * The contents of the detail view are dependent on the user's selection in the list view.\n */\nexport default function ListDetail({\n className,\n list,\n listWidth = 2,\n detail,\n detailWidth = 10,\n listClass,\n detailClass,\n}: IListDetailProps) {\n return (\n <div className={classNames('list-detail', 'horizontal', className)}>\n <div className={classNames(`col-md-${listWidth}`, listClass)}>{list}</div>\n <div className={classNames(`col-md-${detailWidth}`, detailClass)}>{detail}</div>\n </div>\n );\n}\n","import { UIView } from '@uirouter/react';\nimport * as React from 'react';\n\nimport ConfigList from './configList';\nimport Footer from './footer';\nimport ListDetail from '../layout/listDetail';\n\n/*\n * Component for editing canary configurations for an application.\n */\nexport default function CanaryConfigEdit() {\n const List = <ConfigList />;\n // TODO: need to break these down by groups\n const noWrap = { wrap: false };\n const Detail = <UIView {...noWrap} name=\"detail\" />;\n return (\n <div className=\"vertical flex-1\">\n <ListDetail list={List} detail={Detail} className=\"flex-1\" detailClass=\"vertical flex-1\" />\n <Footer>\n <UIView {...noWrap} name=\"footer\" />\n </Footer>\n </div>\n );\n}\n","import * as React from 'react';\nimport { connect } from 'react-redux';\n\nimport { SubmitButton } from '@spinnaker/core';\n\nimport * as Creators from '../actions/creators';\nimport { ICanaryState } from '../reducers';\nimport { AsyncRequestState } from '../reducers/asyncRequest';\n\ninterface ISaveButtonStateProps {\n saveConfigState: AsyncRequestState;\n inSyncWithServer: boolean;\n disable: boolean;\n}\n\ninterface ISaveButtonDispatchProps {\n saveConfig: () => void;\n}\n\n/*\n * Button for saving a canary config.\n */\nfunction SaveConfigButton({\n saveConfigState,\n inSyncWithServer,\n saveConfig,\n disable,\n}: ISaveButtonStateProps & ISaveButtonDispatchProps) {\n if (inSyncWithServer && saveConfigState !== AsyncRequestState.Requesting) {\n return (\n <span className=\"btn btn-link disabled\">\n <i className=\"far fa-check-circle\" /> In sync with server\n </span>\n );\n } else {\n return (\n <SubmitButton\n label=\"Save Changes\"\n onClick={saveConfig}\n isDisabled={disable}\n submitting={saveConfigState === AsyncRequestState.Requesting}\n />\n );\n }\n}\n\nfunction mapStateToProps(state: ICanaryState): ISaveButtonStateProps {\n const disable = !!state.selectedConfig.validationErrors.length;\n return {\n saveConfigState: state.selectedConfig.save.state,\n inSyncWithServer: state.selectedConfig.isInSyncWithServer,\n disable,\n };\n}\n\nfunction mapDispatchToProps(dispatch: any): ISaveButtonDispatchProps {\n return {\n saveConfig: () => {\n dispatch(Creators.saveConfig());\n },\n };\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(SaveConfigButton);\n","import classNames from 'classnames';\nimport * as React from 'react';\nimport { connect } from 'react-redux';\n\nimport * as Creators from '../actions/creators';\nimport { ICanaryState } from '../reducers';\nimport { AsyncRequestState } from '../reducers/asyncRequest';\n\ninterface ISaveErrorStateProps {\n saveConfigState: AsyncRequestState;\n saveConfigErrorMessage: string;\n}\n\ninterface ISaveErrorDispatchProps {\n dismissError: () => void;\n}\n\n/*\n * Renders canary config save error.\n */\nfunction SaveConfigError({\n saveConfigState,\n saveConfigErrorMessage,\n dismissError,\n}: ISaveErrorStateProps & ISaveErrorDispatchProps) {\n return (\n saveConfigState === AsyncRequestState.Failed && (\n <span className={classNames('alert', 'alert-danger')}>\n {buildErrorMessage(saveConfigErrorMessage)}\n <a className={classNames('alert-dismiss', 'clickable')} onClick={dismissError}>\n {' '}\n [dismiss]\n </a>\n </span>\n )\n );\n}\n\nfunction buildErrorMessage(saveConfigErrorMessage: string): string {\n const message = 'There was an error saving your config';\n return saveConfigErrorMessage ? message + `: ${saveConfigErrorMessage}.` : message + '.';\n}\n\nfunction mapStateToProps(state: ICanaryState): ISaveErrorStateProps {\n return {\n saveConfigState: state.selectedConfig.save.state,\n saveConfigErrorMessage: state.selectedConfig.save.error,\n };\n}\n\nfunction mapDispatchToProps(dispatch: any): ISaveErrorDispatchProps {\n return {\n dismissError: () => {\n dispatch(Creators.dismissSaveConfigError());\n },\n };\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(SaveConfigError);\n","import * as React from 'react';\nimport { connect } from 'react-redux';\nimport { HoverablePopover } from '@spinnaker/core';\nimport { ICanaryState } from '../reducers/index';\n\ninterface IConfigValidationErrorsStateProps {\n errors: string[];\n}\n\nconst ConfigValidationErrors = ({ errors }: IConfigValidationErrorsStateProps) => {\n if (!errors || !errors.length) {\n return null;\n }\n\n const template = (\n <section>\n <p>The following errors may prevent this config from working properly:</p>\n <ul>\n {errors.map((e) => (\n <li key={e}>{e}</li>\n ))}\n </ul>\n </section>\n );\n\n return (\n <HoverablePopover placement={'left'} template={template}>\n <button className=\"btn btn-link\">\n <i className=\"fa fa-exclamation-triangle\" />\n </button>\n </HoverablePopover>\n );\n};\n\nconst mapStateToProps = (state: ICanaryState): IConfigValidationErrorsStateProps => ({\n errors: state.selectedConfig.validationErrors.map((e) => e.message),\n});\n\nexport default connect(mapStateToProps)(ConfigValidationErrors);\n","import classNames from 'classnames';\nimport * as React from 'react';\n\nimport SaveConfigButton from './saveConfigButton';\nimport SaveConfigError from './saveConfigError';\nimport ValidationErrors from './validationErrors';\n\n/*\n * Responsible for canary config save component layout.\n */\nexport default function Save() {\n return (\n <div className={classNames('col-sm-12', 'text-right')}>\n <ValidationErrors />\n <SaveConfigError />\n <SaveConfigButton />\n </div>\n );\n}\n","import * as React from 'react';\nimport CenteredDetail from '../layout/centeredDetail';\n\nexport default function SelectConfig() {\n return (\n <CenteredDetail>\n <h3 className=\"heading-3\">Click a configuration to edit.</h3>\n </CenteredDetail>\n );\n}\n","import { CanarySettings } from 'kayenta/canary.settings';\nimport { ICanaryExecutionStatusResult } from 'kayenta/domain';\nimport { ICanaryState } from 'kayenta/reducers';\nimport { runSelector, serializedCanaryConfigSelector } from 'kayenta/selectors';\nimport * as React from 'react';\nimport { connect } from 'react-redux';\n\nimport { SETTINGS } from '@spinnaker/core';\n\ninterface ISourceJsonStateProps {\n reportUrl: string;\n metricListUrl: string;\n}\n\nconst SourceLinks = ({ reportUrl, metricListUrl }: ISourceJsonStateProps) => {\n return (\n <ul className=\"list-unstyled small\">\n <li>\n <a target=\"_blank\" href={reportUrl}>\n Report\n </a>\n </li>\n {metricListUrl && (\n <li>\n <p>\n <a target=\"_blank\" href={metricListUrl}>\n Metrics\n </a>\n </p>\n </li>\n )}\n </ul>\n );\n};\n\nconst resolveReportUrl = (state: ICanaryState): string => {\n const canaryConfigId = serializedCanaryConfigSelector(state).id;\n const result: ICanaryExecutionStatusResult = runSelector(state);\n const canaryRunId = result.id;\n let url = `${SETTINGS.gateUrl}/v2/canaries/canary/${canaryConfigId}/${canaryRunId}`;\n const storageAccountName = result.storageAccountName || CanarySettings.storageAccountName;\n if (storageAccountName) {\n url += `?storageAccountName=${storageAccountName}`;\n }\n return url;\n};\n\nconst resolveMetricListUrl = (state: ICanaryState): string => {\n const status = runSelector(state);\n const { metricSetPairListId } = status;\n if (!metricSetPairListId) {\n return null;\n }\n let url = `${SETTINGS.gateUrl}/v2/canaries/metricSetPairList/${metricSetPairListId}`;\n const storageAccountName = status.storageAccountName || CanarySettings.storageAccountName;\n if (storageAccountName) {\n url += `?storageAccountName=${storageAccountName}`;\n }\n return url;\n};\n\nconst mapStateToProps = (state: ICanaryState): ISourceJsonStateProps => {\n return {\n reportUrl: resolveReportUrl(state),\n metricListUrl: resolveMetricListUrl(state),\n };\n};\n\nexport default connect(mapStateToProps)(SourceLinks);\n","import { ICanaryExecutionStatusResult } from 'kayenta/domain/ICanaryExecutionStatusResult';\nimport FormattedDate from 'kayenta/layout/formattedDate';\nimport { ICanaryState } from 'kayenta/reducers';\nimport * as React from 'react';\nimport { connect } from 'react-redux';\n\nimport { HoverablePopover } from '@spinnaker/core';\n\nimport SourceLinks from './sourceLinks';\n\ninterface IReportMetadata {\n run: ICanaryExecutionStatusResult;\n}\n\ninterface IMetadataGroup {\n label?: string;\n entries: IMetadataEntry[];\n}\n\ninterface IMetadataEntry {\n label: string;\n getContent: () => JSX.Element;\n popover?: boolean;\n}\n\nconst Label = ({ label, extraClass }: { label: string; extraClass?: string }) => (\n <label className={`label uppercase color-text-primary ${extraClass}`}>{label}</label>\n);\n\n// TODO(dpeach): this only supports canary runs with a single scope.\nconst buildScopeMetadataEntries = (run: ICanaryExecutionStatusResult): IMetadataGroup[] => {\n const request = run.canaryExecutionRequest;\n const scopes = Object.values(request.scopes);\n if (scopes.length > 1) {\n return null;\n }\n\n const {\n controlScope: { step, location: controlLocation, scope: controlScope },\n experimentScope: {\n // Since baseline starttime may be offset in canaries from Orca,\n // Choose the experiment start and end to represent\n // the canary start and end times\n start: experimentStart,\n end: experimentEnd,\n location: experimentLocation,\n scope: experimentScope,\n },\n } = scopes[0];\n\n return [\n {\n label: 'baseline',\n entries: [\n {\n label: 'scope',\n popover: true,\n getContent: () => <p className=\"kayenta-scope\">{controlScope}</p>,\n },\n {\n label: 'location',\n getContent: () => <p>{controlLocation}</p>,\n },\n ],\n },\n {\n label: 'canary',\n entries: [\n {\n label: 'scope',\n popover: true,\n getContent: () => <p className=\"kayenta-scope\">{experimentScope}</p>,\n },\n {\n label: 'location',\n getContent: () => <p>{experimentLocation}</p>,\n },\n ],\n },\n {\n label: 'time',\n entries: [\n {\n label: 'start',\n getContent: () => (\n <p>\n <FormattedDate dateIso={experimentStart} />\n </p>\n ),\n },\n {\n label: 'end',\n getContent: () => (\n <p>\n <FormattedDate dateIso={experimentEnd} />\n </p>\n ),\n },\n {\n label: 'step',\n getContent: () => {\n const mins = step / 60;\n return (\n <p>\n {mins} min\n {mins === 1 ? '' : 's'}\n </p>\n );\n },\n },\n ],\n },\n ];\n};\n\nconst ReportMetadata = ({ run }: IReportMetadata) => {\n const {\n thresholds: { marginal, pass },\n } = run.canaryExecutionRequest;\n\n const metadataGroups = buildScopeMetadataEntries(run) || [];\n metadataGroups.push({\n label: 'threshold',\n entries: [\n {\n label: 'marginal',\n getContent: () => <p>{marginal}</p>,\n },\n {\n label: 'pass',\n getContent: () => <p>{pass}</p>,\n },\n ],\n });\n\n return (\n <section className=\"report-metadata\">\n {metadataGroups.map((group, index) => (\n <div className={`group group-${group.label}`} key={group.label || index}>\n <Label label={group.label || ''} extraClass=\"label-lg\" />\n <ul className=\"list-unstyled\">\n {group.entries.map((e) => (\n <li key={e.label || index}>\n <Label label={e.label} />\n {e.popover ? (\n <HoverablePopover template={e.getContent()}>{e.getContent()}</HoverablePopover>\n ) : (\n <>{e.getContent()}</>\n )}\n </li>\n ))}\n </ul>\n </div>\n ))}\n <div className=\"group group-source\" key=\"source\">\n <Label label=\"Source\" extraClass=\"label-lgf\" />\n <SourceLinks />\n </div>\n </section>\n );\n};\n\nconst mapStateToProps = (state: ICanaryState) => ({\n run: state.selectedRun.run,\n});\n\nexport default connect(mapStateToProps)(ReportMetadata);\n","import { CanaryScore } from 'kayenta/components/canaryScore';\nimport { ICanaryJudgeScore } from 'kayenta/domain/ICanaryJudgeResult';\nimport { ScoreClassificationLabel } from 'kayenta/domain/ScoreClassificationLabel';\nimport { round } from 'lodash';\nimport * as React from 'react';\n\nexport interface ICanaryJudgeScoreProps {\n score: ICanaryJudgeScore;\n showClassification?: boolean;\n inverse?: boolean;\n}\n\n// TODO(dpeach): don't use ACA statuses in the CanaryScore component.\nconst mapKayentaToACA = (score: ICanaryJudgeScore): { health: string; result: string } => {\n if (score.classification === ScoreClassificationLabel.Pass) {\n return { health: null, result: 'success' };\n } else if (score.classification === ScoreClassificationLabel.Fail) {\n return { health: 'unhealthy', result: null };\n } else {\n return { health: null, result: null };\n }\n};\n\nexport default ({ score, showClassification, inverse }: ICanaryJudgeScoreProps) => (\n <CanaryScore\n className=\"score-report\"\n score={round(score.score, 2)}\n result={mapKayentaToACA(score).result}\n health={mapKayentaToACA(score).health}\n classification={showClassification ? score.classification : null}\n inverse={inverse}\n />\n);\n","import { UISref } from '@uirouter/react';\nimport { ICanaryJudgeScore } from 'kayenta/domain/ICanaryJudgeResult';\nimport { ICanaryState } from 'kayenta/reducers';\nimport { judgeResultSelector, serializedCanaryConfigSelector } from 'kayenta/selectors';\nimport * as React from 'react';\nimport { connect } from 'react-redux';\n\nimport ReportMetadata from './reportMetadata';\nimport ReportScore from './score';\n\nimport './header.less';\n\nexport interface IReportHeaderStateProps {\n id: string;\n name: string;\n score: ICanaryJudgeScore;\n}\n\nconst ReportHeader = ({ id, name, score }: IReportHeaderStateProps) => (\n <section className=\"horizontal report-header\">\n <div className=\"report-score-wrapper\">\n <ReportScore score={score} showClassification={true} />\n <h1 className=\"heading-2 color-text-primary\">\n <UISref to=\"^.^.canaryConfig.configDetail\" params={{ id }}>\n <a className=\"clickable color-text-primary\"> {name}</a>\n </UISref>\n </h1>\n </div>\n <ReportMetadata />\n </section>\n);\n\nconst mapStateToProps = (state: ICanaryState): IReportHeaderStateProps => ({\n id: serializedCanaryConfigSelector(state).id,\n name: serializedCanaryConfigSelector(state).name,\n score: judgeResultSelector(state).score,\n});\n\nexport default connect(mapStateToProps)(ReportHeader);\n","import { ICanaryAnalysisResult } from 'kayenta/domain/ICanaryJudgeResult';\nimport { IMetricSetPair } from 'kayenta/domain/IMetricSetPair';\nimport { ICanaryState } from 'kayenta/reducers';\nimport { metricResultsSelector } from 'kayenta/selectors';\nimport * as React from 'react';\nimport { connect } from 'react-redux';\n\nimport { GraphType, metricSetPairGraphService } from './metricSetPairGraph.service';\n\ninterface IMetricSetPairGraphStateProps {\n pair: IMetricSetPair;\n result: ICanaryAnalysisResult;\n graphType: GraphType;\n}\n\nconst GRAPH_IMPLEMENTATIONS = ['semiotic'];\n\nconst MetricSetPairGraph = ({ pair, result, graphType }: IMetricSetPairGraphStateProps) => {\n const delegates = GRAPH_IMPLEMENTATIONS.map((name) => metricSetPairGraphService.getDelegate(name)).filter((d) => !!d);\n const delegate = delegates.find((candidate) => candidate.handlesGraphType(graphType));\n if (!delegate) {\n return <h3 className=\"heading-3\">Could not load graph.</h3>;\n }\n const Graph = delegate.getGraph();\n return <Graph metricSetPair={pair} result={result} type={graphType} />;\n};\n\nconst mapStateToProps = (state: ICanaryState): IMetricSetPairGraphStateProps => {\n const selectedMetric = state.selectedRun.selectedMetric;\n return {\n pair: state.selectedRun.metricSetPair.pair,\n result: metricResultsSelector(state).find((result) => result.id === selectedMetric),\n graphType: state.selectedRun.graphType,\n };\n};\n\nexport default connect(mapStateToProps)(MetricSetPairGraph);\n","import * as Creators from 'kayenta/actions/creators';\nimport { ICanaryState } from 'kayenta/reducers';\nimport * as React from 'react';\nimport { connect, Dispatch } from 'react-redux';\n\nimport { GraphType } from './graph/metricSetPairGraph.service';\n\nimport './graphTypeSelector.less';\n\ninterface IGraphTypeSelectorStateProps {\n selected: GraphType;\n}\n\ninterface IGraphTypeSelectorDispatchProps {\n selectGraphType: (type: GraphType) => void;\n}\n\nconst GraphTypeSelector = ({\n selected,\n selectGraphType,\n}: IGraphTypeSelectorStateProps & IGraphTypeSelectorDispatchProps) => {\n return (\n <ul className=\"list-inline graph-type-selector\">\n <li>\n <label className=\"label uppercase color-text-primary\" style={{ paddingLeft: 0 }}>\n Graph:\n </label>\n </li>\n {Object.values(GraphType).map((type) => (\n <li\n style={selected === type ? { textDecoration: 'underline' } : null}\n key={type}\n onClick={() => selectGraphType(type)}\n >\n <a className=\"small clickable\">{type}</a>\n </li>\n ))}\n </ul>\n );\n};\n\nconst mapStateToProps = (state: ICanaryState): IGraphTypeSelectorStateProps => ({\n selected: state.selectedRun.graphType,\n});\n\nconst mapDispatchToProps = (dispatch: Dispatch<ICanaryState>): IGraphTypeSelectorDispatchProps => ({\n selectGraphType: (type: GraphType) => dispatch(Creators.selectGraphType({ type })),\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(GraphTypeSelector);\n","import { CanarySettings } from 'kayenta/canary.settings';\nimport { ICanaryMetricConfig } from 'kayenta/domain/ICanaryConfig';\nimport { IMetricSetPair } from 'kayenta/domain/IMetricSetPair';\nimport metricStoreConfigStore from 'kayenta/metricStore/metricStoreConfig.service';\nimport { ICanaryState } from 'kayenta/reducers';\nimport { selectedMetricConfigSelector } from 'kayenta/selectors';\nimport * as React from 'react';\nimport { connect } from 'react-redux';\n\nimport { CopyToClipboard } from '@spinnaker/core';\n\nimport './metricResultActions.less';\n\nexport interface IMetricResultStatsStateProps {\n metricConfig: ICanaryMetricConfig;\n metricSetPair: IMetricSetPair;\n}\n\nconst buildAtlasGraphUrl = (metricSetPair: IMetricSetPair) => {\n const { attributes, scopes, values, tags } = metricSetPair;\n const { atlasGraphBaseUrl } = CanarySettings;\n let legendTags = '';\n if (Object.keys(tags).length) {\n legendTags = ` (${Object.keys(tags)\n .map((tag) => `$${tag}`)\n .join('|')})`;\n }\n\n // TODO: If the control and experiment have different baseURLs, generate two links instead of a combined one.\n const backend = encodeURIComponent(attributes.control.baseURL);\n const experimentQuery = encodeURIComponent(attributes.experiment.query);\n const controlQuery = encodeURIComponent(attributes.control.query);\n const query = `${experimentQuery},Canary${legendTags},:legend,:freeze,${controlQuery},Baseline${legendTags},:legend`;\n\n const startTime = Math.min(scopes.control.startTimeMillis, scopes.experiment.startTimeMillis);\n const controlEndTime = scopes.control.startTimeMillis + values.control.length * scopes.control.stepMillis;\n const experimentEndTime = scopes.experiment.startTimeMillis + values.experiment.length * scopes.experiment.stepMillis;\n const endTime = Math.max(controlEndTime, experimentEndTime);\n\n return `${atlasGraphBaseUrl}?backend=${backend}&g.q=${query}&g.s=${startTime}&g.e=${endTime}&g.w=651&mode=png&axis=0`;\n};\n\nconst MetricResultActions = ({ metricSetPair, metricConfig }: IMetricResultStatsStateProps) => {\n const atlasURL = buildAtlasGraphUrl(metricSetPair);\n const atlasQuery = metricStoreConfigStore.getDelegate(metricConfig.query.type).queryFinder(metricConfig);\n\n // Mask CopyToClipboard component as a larger button, fire event when clicked\n const copyToClipboard = (\n <div className=\"copy-button-container\">\n <CopyToClipboard displayText={false} text={atlasQuery} toolTip={null} />\n <button className=\"primary copy-button\" key=\"copy-link\">\n <i className=\"glyphicon glyphicon-copy copy-icon\" />\n Copy metric query\n </button>\n </div>\n );\n\n const openAtlas = (\n <a href={atlasURL} target=\"_blank\">\n <button className=\"primary\">\n <i className=\"fas fa-chart-line\" />\n Explore more data in Atlas\n </button>\n </a>\n );\n\n const actions = [copyToClipboard, openAtlas].map((action, i) => {\n return (\n <li className=\"action\" key={i}>\n {action}\n </li>\n );\n });\n\n return (\n <div className=\"metric-result-actions\">\n <ul className=\"actions-layout list-inline\">{actions}</ul>\n </div>\n );\n};\n\nconst mapStateToProps = (state: ICanaryState): IMetricResultStatsStateProps => ({\n metricConfig: selectedMetricConfigSelector(state),\n metricSetPair: state.selectedRun.metricSetPair.pair,\n});\n\nexport default connect(mapStateToProps)(MetricResultActions);\n","import { ICanaryAnalysisResultsStats } from 'kayenta/domain';\nimport { ICanaryMetricConfig } from 'kayenta/domain/ICanaryConfig';\nimport { ICanaryExecutionStatusResult } from 'kayenta/domain/ICanaryExecutionStatusResult';\nimport { IMetricSetPair } from 'kayenta/domain/IMetricSetPair';\nimport FormattedDate from 'kayenta/layout/formattedDate';\nimport { ITableColumn, NativeTable } from 'kayenta/layout/table';\nimport { ICanaryState } from 'kayenta/reducers';\nimport { runSelector, selectedMetricConfigSelector } from 'kayenta/selectors';\nimport { round } from 'lodash';\nimport * as React from 'react';\nimport { connect } from 'react-redux';\n\nimport './metricResultStats.less';\n\nexport interface IMetricResultStatsStateProps {\n metricConfig: ICanaryMetricConfig;\n metricSetPair: IMetricSetPair;\n run: ICanaryExecutionStatusResult;\n service: string;\n}\n\nconst getStats = (run: ICanaryExecutionStatusResult, id: string, target: string): ICanaryAnalysisResultsStats => {\n const result = run.result.judgeResult.results.find((r) => r.id === id);\n if (target === 'experiment') {\n return result.experimentMetadata.stats;\n } else if (target === 'control') {\n return result.controlMetadata.stats;\n } else {\n return null;\n }\n};\n\ninterface IResultMetadataRow {\n label: string;\n getContent: () => JSX.Element;\n}\n\nconst ResultMetadataRow = ({ row }: { row: IResultMetadataRow }) => {\n if (!row.getContent()) {\n return null;\n }\n\n return (\n <div>\n <label className=\"label uppercase color-text-primary\">{row.label}</label>\n {row.getContent()}\n </div>\n );\n};\n\nconst MetricResultStats = ({ metricConfig, metricSetPair, run }: IMetricResultStatsStateProps) => {\n const tableColumns: Array<ITableColumn<string>> = [\n {\n getContent: (target) => <span>{target === 'control' ? 'Baseline' : 'Canary'}</span>,\n },\n {\n label: 'start',\n getContent: (target) => <FormattedDate dateIso={metricSetPair.scopes[target].startTimeIso} />,\n hide: () => {\n const request = run.canaryExecutionRequest;\n const configuredControlStart = request.scopes[metricConfig.scopeName].controlScope.start;\n const actualControlStart = metricSetPair.scopes.control.startTimeIso;\n\n const configuredExperimentStart = request.scopes[metricConfig.scopeName].experimentScope.start;\n const actualExperimentStart = metricSetPair.scopes.experiment.startTimeIso;\n\n return configuredControlStart === actualControlStart && configuredExperimentStart === actualExperimentStart;\n },\n },\n {\n label: 'count',\n getContent: (target) => <span>{getStats(run, metricSetPair.id, target).count}</span>,\n },\n {\n label: 'avg',\n getContent: (target) => <span>{round(getStats(run, metricSetPair.id, target).mean, 3)}</span>,\n },\n {\n label: 'max',\n getContent: (target) => <span>{round(getStats(run, metricSetPair.id, target).max, 3)}</span>,\n },\n {\n label: 'min',\n getContent: (target) => <span>{round(getStats(run, metricSetPair.id, target).min, 3)}</span>,\n },\n ];\n\n const metadataRows: IResultMetadataRow[] = [\n {\n label: 'classification reason',\n getContent: () => {\n const result = run.result.judgeResult.results.find((r) => r.id === metricSetPair.id);\n\n if (!result.classificationReason) {\n return null;\n }\n\n return <p>{result.classificationReason}</p>;\n },\n },\n ];\n\n return (\n <div className=\"metric-stats vertical\">\n {metadataRows.map((row) => (\n <ResultMetadataRow row={row} key={row.label} />\n ))}\n <NativeTable columns={tableColumns} rows={['control', 'experiment']} rowKey={(row) => row} />\n </div>\n );\n};\n\nconst mapStateToProps = (state: ICanaryState): IMetricResultStatsStateProps => ({\n metricConfig: selectedMetricConfigSelector(state),\n metricSetPair: state.selectedRun.metricSetPair.pair,\n run: runSelector(state),\n service: selectedMetricConfigSelector(state).query.type,\n});\n\nexport default connect(mapStateToProps)(MetricResultStats);\n","import * as React from 'react';\n\nimport Graph from './graph/graph';\nimport GraphTypeSelector from './graphTypeSelector';\nimport MetricResultActions from './metricResultActions';\nimport MetricResultStats from './metricResultStats';\n\n/*\n * Responsible for layout of the metric result detail view after the metric set\n * pair for the result has loaded successfully.\n * */\nexport default () => (\n <section className=\"vertical flex-1 sp-padding-xl-bottom\" style={{ overflowY: 'auto' }}>\n <GraphTypeSelector />\n <Graph />\n <MetricResultActions />\n <MetricResultStats />\n </section>\n);\n","import LoadStatesBuilder from 'kayenta/components/loadStates';\nimport { AsyncRequestState } from 'kayenta/reducers/asyncRequest';\nimport { ICanaryState } from 'kayenta/reducers/index';\nimport * as React from 'react';\nimport { connect } from 'react-redux';\n\nimport MetricResultDetailLayout from './metricResultDetailLayout';\n\nconst MetricSetPairLoadStates = ({ state }: { state: AsyncRequestState }) => {\n const LoadStates = new LoadStatesBuilder()\n .onFulfilled(<MetricResultDetailLayout />)\n .onFailed(<h3 className=\"heading-3 text-center\">Could not load metrics.</h3>)\n .build();\n\n return <LoadStates state={state} />;\n};\n\nconst mapStateToProps = (state: ICanaryState) => ({\n state: state.selectedRun.metricSetPair.load,\n});\n\nexport default connect(mapStateToProps)(MetricSetPairLoadStates);\n","import { ICanaryAnalysisResult } from 'kayenta/domain/ICanaryJudgeResult';\nimport * as React from 'react';\n\nimport MetricSetPairLoadStates from './metricSetPairLoadStates';\n\nexport interface IMetricResultDetailProps {\n result: ICanaryAnalysisResult;\n}\n\n/*\n * Top-level component for the metric result detail - i.e., the right side of the\n * screen that opens when you click on a metric result.\n * */\nexport default ({ result }: IMetricResultDetailProps) => {\n if (result) {\n return <MetricSetPairLoadStates />;\n } else {\n return <h3 className=\"heading-3 text-center\">Select a metric result.</h3>;\n }\n};\n","import * as React from 'react';\nimport { connect, Dispatch } from 'react-redux';\n\nimport * as Creators from '../../actions/creators';\nimport { ICanaryAnalysisResult, MetricClassificationLabel } from '../../domain';\nimport { ICanaryState } from '../../reducers';\n\nexport interface IMetricFiltersOwnProps {\n results: ICanaryAnalysisResult[];\n}\n\ninterface IMetricFiltersStateProps {\n metricFilters: MetricClassificationLabel[];\n}\n\ninterface IMetricFiltersDispatchProps {\n toggle: (classification: MetricClassificationLabel) => void;\n}\n\nconst MetricFilters = ({\n results,\n metricFilters,\n toggle,\n}: IMetricFiltersOwnProps & IMetricFiltersStateProps & IMetricFiltersDispatchProps) => {\n const options = [\n MetricClassificationLabel.Error,\n MetricClassificationLabel.High,\n MetricClassificationLabel.Low,\n MetricClassificationLabel.Nodata,\n MetricClassificationLabel.Pass,\n ]\n .map((classification) => ({\n classification,\n count: results.filter((r) => r.classification === classification).length,\n }))\n .filter((option) => option.count);\n\n const checkboxes = options.map((o) => (\n <label key={o.classification}>\n <input\n type=\"checkbox\"\n checked={metricFilters.includes(o.classification)}\n onChange={() => toggle(o.classification)}\n />{' '}\n {o.classification} ({o.count}){' '}\n </label>\n ));\n\n return <div className=\"metric-filter-options horizontal center\">{checkboxes}</div>;\n};\n\nconst mapStateToProps = (state: ICanaryState): IMetricFiltersStateProps => ({\n metricFilters: state.selectedRun.metricFilters,\n});\n\nconst mapDispatchToProps = (\n dispatch: Dispatch<ICanaryState>,\n ownProps: IMetricFiltersOwnProps,\n): IMetricFiltersOwnProps & IMetricFiltersDispatchProps => ({\n toggle: (classification: MetricClassificationLabel) =>\n dispatch(Creators.toggleMetricClassificationFilter({ classification })),\n ...ownProps,\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(MetricFilters);\n","import {\n ICanaryJudgeGroupScore,\n ICanaryJudgeScore,\n ICanaryScoreThresholds,\n MetricClassificationLabel,\n ScoreClassificationLabel,\n} from 'kayenta/domain';\n\n// Standard Spinnaker styleguide colors.\nconst GREEN = 'var(--color-success)';\nconst RED = 'var(--color-danger)';\nconst GREY = 'var(--color-text-caption)';\nconst YELLOW = 'var(--color-warning)';\n\nexport const mapMetricClassificationToColor = (classification: MetricClassificationLabel): string =>\n ({\n [MetricClassificationLabel.High]: RED,\n [MetricClassificationLabel.Low]: RED,\n [MetricClassificationLabel.Error]: YELLOW,\n [MetricClassificationLabel.Nodata]: GREY,\n [MetricClassificationLabel.Pass]: GREEN,\n }[classification]);\n\nexport const mapScoreClassificationToColor = (classification: ScoreClassificationLabel): string =>\n ({\n [ScoreClassificationLabel.Fail]: RED,\n [ScoreClassificationLabel.Error]: YELLOW,\n [ScoreClassificationLabel.Marginal]: GREY,\n [ScoreClassificationLabel.Nodata]: GREY,\n [ScoreClassificationLabel.Pass]: GREEN,\n }[classification]);\n\nexport const mapGroupToColor = (\n group: ICanaryJudgeGroupScore | ICanaryJudgeScore,\n scoreThresholds: ICanaryScoreThresholds,\n): string => {\n if (typeof group.score !== 'number') {\n return YELLOW; // Some kind of error.\n } else if (group.score > scoreThresholds.pass) {\n return GREEN;\n } else if (group.score > scoreThresholds.marginal) {\n return GREY;\n } else {\n return RED;\n }\n};\n","import classNames from 'classnames';\nimport { MetricClassificationLabel } from 'kayenta/domain/MetricClassificationLabel';\nimport * as React from 'react';\n\nimport { mapMetricClassificationToColor } from './colors';\n\ninterface IMetricResultClassificationProps {\n classification: MetricClassificationLabel;\n className?: string;\n}\n\nconst buildStyle = (classification: MetricClassificationLabel) => ({\n backgroundColor: mapMetricClassificationToColor(classification),\n});\n\nconst TEXT_COLOR = 'var(--color-text-on-dark)';\n\nexport default ({ classification, className }: IMetricResultClassificationProps) => (\n <div className={classNames('pill', 'metric-result-classification', className)} style={buildStyle(classification)}>\n <span style={{ color: TEXT_COLOR }}>{classification}</span>\n </div>\n);\n","import * as React from 'react';\n\ninterface IMetricResultDeviationProps {\n className?: string;\n ratio: number;\n}\n\nconst formatDeviationAsPercentage = (ratio: number) => {\n if (typeof ratio !== 'number') {\n return 'N/A';\n } else if (ratio === 1) {\n return '0%';\n } else if (ratio < 1) {\n return ((ratio - 1) * 100).toFixed(1) + '%';\n } else {\n return '+' + ((ratio - 1) * 100).toFixed(1) + '%';\n }\n};\n\nexport default ({ ratio, className }: IMetricResultDeviationProps) =>\n ratio && (\n <span className={className} style={{ color: 'var(--color-text-caption' }}>\n {formatDeviationAsPercentage(ratio)}\n </span>\n );\n","import { ITableColumn } from 'kayenta/layout/table';\nimport * as React from 'react';\n\nimport { BreakString } from '@spinnaker/core';\n\nimport MetricResultClassification from './metricResultClassification';\nimport MetricResultDeviation from './metricResultDeviation';\nimport { IMetricResultsTableRow } from './metricResultsList';\n\nexport const metricResultsColumns: Array<ITableColumn<IMetricResultsTableRow>> = [\n {\n label: 'metric name',\n getContent: ({ metricName }) => <BreakString>{metricName}</BreakString>,\n width: 5,\n },\n {\n label: 'deviation',\n getContent: ({ results }) =>\n results[0].resultMetadata && <MetricResultDeviation ratio={results[0].resultMetadata.ratio} />,\n width: 1,\n },\n {\n label: 'result',\n getContent: ({ results }) => <MetricResultClassification classification={results[0].classification} />,\n width: 1,\n },\n];\n","import classNames from 'classnames';\nimport * as Creators from 'kayenta/actions/creators';\nimport { ICanaryAnalysisResult } from 'kayenta/domain/ICanaryJudgeResult';\nimport { ITableColumn, Table } from 'kayenta/layout/table';\nimport { ICanaryState } from 'kayenta/reducers';\nimport { selectedMetricResultIdSelector } from 'kayenta/selectors';\nimport { chain } from 'lodash';\nimport * as React from 'react';\nimport { connect, Dispatch } from 'react-redux';\n\nimport { BreakString } from '@spinnaker/core';\n\nimport MetricResultClassification from './metricResultClassification';\nimport MetricResultDeviation from './metricResultDeviation';\n\ninterface IMultipleResultsTableOwnProps {\n results: ICanaryAnalysisResult[];\n}\n\ninterface IMultipleResultsTableStateProps {\n selectedResult: string;\n}\n\ninterface IMultipleResultsTableDispatchProps {\n select: (metricId: string) => void;\n}\n\nconst MultipleResultsTable = ({\n results,\n select,\n selectedResult,\n}: IMultipleResultsTableOwnProps & IMultipleResultsTableStateProps & IMultipleResultsTableDispatchProps) => {\n const tagKeys = chain(results)\n .flatMap((r) => Object.keys(r.tags || {}))\n .uniq()\n .value();\n\n let columns: Array<ITableColumn<ICanaryAnalysisResult>> = tagKeys.map((key) => ({\n label: key,\n width: 5,\n getContent: (result: ICanaryAnalysisResult) => <BreakString>{result.tags[key]}</BreakString>,\n }));\n\n columns = columns.concat([\n {\n width: 1,\n getContent: ({ resultMetadata }) => resultMetadata && <MetricResultDeviation ratio={resultMetadata.ratio} />,\n },\n {\n width: 1,\n getContent: ({ classification }) => <MetricResultClassification classification={classification} />,\n },\n ]);\n\n return (\n <Table\n rows={results}\n columns={columns}\n className=\"multiple-results-table\"\n headerClassName=\"sticky-header-2\"\n rowClassName={(r) => classNames('horizontal', { selected: r.id === selectedResult })}\n rowKey={(r) =>\n Object.entries(r.tags || {})\n .map(([key, value]) => `${key}:${value}`)\n .join(':')\n }\n onRowClick={(r) => select(r.id)}\n />\n );\n};\n\nconst mapStateToProps = (state: ICanaryState) => ({\n selectedResult: selectedMetricResultIdSelector(state),\n});\n\nconst mapDispatchToProps = (dispatch: Dispatch<ICanaryState>, ownProps: IMultipleResultsTableOwnProps) => ({\n ...ownProps,\n select: (metricId: string) => dispatch(Creators.selectReportMetric({ metricId })),\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(MultipleResultsTable);\n","import classNames from 'classnames';\nimport * as Creators from 'kayenta/actions/creators';\nimport { ICanaryAnalysisResult } from 'kayenta/domain/ICanaryJudgeResult';\nimport { Table } from 'kayenta/layout/table';\nimport { ICanaryState } from 'kayenta/reducers';\nimport * as React from 'react';\nimport { connect, Dispatch } from 'react-redux';\n\nimport { MetricClassificationLabel } from '../../domain';\nimport MetricFilters from './metricResultsClassificationFilters';\nimport { metricResultsColumns } from './metricResultsColumns';\nimport MultipleResultsTable from './multipleResultsTable';\n\nimport './metricResultsList.less';\n\nexport interface IResultsListOwnProps {\n results: ICanaryAnalysisResult[];\n}\n\ninterface IResultsListDispatchProps {\n select: (metric: string) => void;\n}\n\ninterface IResultsListStateProps {\n selectedMetric: string;\n metricFilters: MetricClassificationLabel[];\n}\n\nexport interface IMetricResultsTableRow {\n metricName: string;\n results: ICanaryAnalysisResult[];\n hasMultipleRows: boolean;\n}\n\nconst buildTableRows = (\n results: ICanaryAnalysisResult[],\n metricFilters: MetricClassificationLabel[],\n): IMetricResultsTableRow[] => {\n const unfilteredCounts = results.reduce((map, result) => {\n if (!map.has(result.name)) {\n map.set(result.name, 0);\n }\n map.set(result.name, map.get(result.name) + 1);\n return map;\n }, new Map<string, number>());\n\n const tableRowsByMetricName = results\n .filter((result) => !metricFilters.length || metricFilters.includes(result.classification))\n .reduce(\n (map, result) =>\n map.has(result.name)\n ? map.set(result.name, {\n metricName: result.name,\n results: map.get(result.name).results.concat(result),\n hasMultipleRows: unfilteredCounts.get(result.name) > 1,\n })\n : map.set(result.name, {\n metricName: result.name,\n results: [result],\n hasMultipleRows: unfilteredCounts.get(result.name) > 1,\n }),\n new Map<string, IMetricResultsTableRow>(),\n );\n\n return Array.from(tableRowsByMetricName.values());\n};\n\nconst buildRowForMetricWithMultipleResults = (row: IMetricResultsTableRow) => {\n if (!row.hasMultipleRows) {\n return null;\n }\n\n return (\n <li className=\"horizontal multiple-results\">\n <section className=\"vertical flex-fill\">\n <div>{row.metricName}</div>\n <MultipleResultsTable results={row.results} />\n </section>\n </li>\n );\n};\n\nconst ResultsList = ({\n results,\n select,\n selectedMetric,\n metricFilters,\n}: IResultsListOwnProps & IResultsListDispatchProps & IResultsListStateProps) => {\n const rows = buildTableRows(results, metricFilters);\n return (\n <section className=\"vertical metric-results-list flex-1\">\n <MetricFilters results={results} />\n <Table\n rowKey={(r) => r.metricName}\n tableBodyClassName=\"list-unstyled tabs-vertical flex-1 sp-padding-xl-bottom\"\n rowClassName={(r) => classNames('horizontal', { selected: r.results[0].id === selectedMetric })}\n rows={rows}\n columns={metricResultsColumns}\n onRowClick={(r) => select(r.results[0].id)}\n className=\"flex-1 vertical\"\n customRow={buildRowForMetricWithMultipleResults}\n />\n </section>\n );\n};\n\nconst mapStateToProps = (state: ICanaryState): IResultsListStateProps => ({\n selectedMetric: state.selectedRun.selectedMetric,\n metricFilters: state.selectedRun.metricFilters,\n});\n\nconst mapDispatchToProps = (\n dispatch: Dispatch<ICanaryState>,\n ownProps: IResultsListOwnProps,\n): IResultsListOwnProps & IResultsListDispatchProps => ({\n select: (metricId: string) => dispatch(Creators.selectReportMetric({ metricId })),\n ...ownProps,\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(ResultsList);\n","import { ICanaryAnalysisResult } from 'kayenta/domain/ICanaryJudgeResult';\nimport { ICanaryState } from 'kayenta/reducers';\nimport { judgeResultSelector } from 'kayenta/selectors';\nimport * as React from 'react';\nimport { connect } from 'react-redux';\n\nimport ListDetail from '../../layout/listDetail';\nimport MetricResultDetail from './metricResultDetail';\nimport MetricResultsList from './metricResultsList';\n\nimport './metricResults.less';\n\ninterface IMetricResultsStateProps {\n metricResults: ICanaryAnalysisResult[];\n selectedMetricResult: ICanaryAnalysisResult;\n}\n\nconst MetricResults = ({ metricResults, selectedMetricResult }: IMetricResultsStateProps) => {\n const list = <MetricResultsList results={metricResults} />;\n const detail = <MetricResultDetail result={selectedMetricResult} />;\n\n return (\n <ListDetail\n list={list}\n listClass=\"vertical\"\n listWidth={5}\n detail={detail}\n detailClass=\"vertical\"\n detailWidth={9}\n className=\"metric-results flex-1\"\n />\n );\n};\n\nconst mapStateToProps = (state: ICanaryState): IMetricResultsStateProps => {\n const {\n selectedRun: { selectedGroup, selectedMetric },\n } = state;\n const result = judgeResultSelector(state);\n\n // Build list of metric results to render.\n const filter: (r: ICanaryAnalysisResult) => boolean = selectedGroup\n ? (r) => r.groups.includes(selectedGroup)\n : () => true;\n\n return {\n metricResults: Object.values(result.results).filter(filter),\n selectedMetricResult: Object.values(result.results).find((r) => r.id === selectedMetric),\n };\n};\n\nexport default connect(mapStateToProps)(MetricResults);\n","import { ICanaryExecutionException } from 'kayenta/domain';\nimport { ICanaryState } from 'kayenta/reducers';\nimport * as React from 'react';\nimport { connect } from 'react-redux';\n\nimport SourceLinks from './sourceLinks';\n\nimport './reportExplanation.less';\n\ninterface IReportExceptionProps {\n exception: ICanaryExecutionException;\n}\n\nconst ReportException = ({ exception }: IReportExceptionProps) => {\n const errorMessages = [];\n if (exception.details) {\n // error messages can be in an array on the details, or a single field, or possibly both?\n // it's unclear based on Orca where the error message might be\n const { error, errors } = exception.details;\n if (error) {\n errorMessages.push(error);\n }\n if (errors?.length) {\n errors.forEach((m: string) => errorMessages.push(m));\n }\n }\n // if there were no errors, set a default message\n if (!errorMessages.length) {\n errorMessages.push('No error message provided. Click the \"Report\" link to see more details.');\n }\n\n return (\n <>\n <h3 className=\"text-center\">Canary report failed</h3>\n <dl>\n <dt>Details</dt>\n <dd>\n {errorMessages.map((message, i) => (\n <div key={i}>\n <code>{message}</code>\n </div>\n ))}\n </dd>\n <dt>Source</dt>\n <dd>\n <SourceLinks />\n </dd>\n </dl>\n </>\n );\n};\n\nconst mapStateToProps = (state: ICanaryState) => ({\n exception: state.selectedRun.run.exception,\n});\n\nexport default connect(mapStateToProps)(ReportException);\n","import { ICanaryExecutionStatusResult } from 'kayenta/domain/ICanaryExecutionStatusResult';\nimport { ICanaryState } from 'kayenta/reducers';\nimport * as React from 'react';\nimport { connect } from 'react-redux';\n\nimport './reportExplanation.less';\n\ninterface IReportMetadata {\n run: ICanaryExecutionStatusResult;\n}\n\nconst getReason = (run: ICanaryExecutionStatusResult): string =>\n run?.result?.judgeResult?.score?.classificationReason ?? null;\n\nconst ReportExplanation = ({ run }: IReportMetadata) => {\n const classificationReason = getReason(run);\n\n if (classificationReason) {\n return (\n <section>\n <div className=\"report-explanation\">{classificationReason}</div>\n </section>\n );\n }\n return null;\n};\n\nconst mapStateToProps = (state: ICanaryState) => ({\n run: state.selectedRun.run,\n});\n\nexport default connect(mapStateToProps)(ReportExplanation);\n","import classNames from 'classnames';\nimport * as React from 'react';\n\nconst ARROW_CLASS = 'arrow-down';\n\nexport interface IHeaderArrowProps {\n arrowColor: string;\n className?: string;\n}\n\nexport default ({ arrowColor, className }: IHeaderArrowProps) => (\n <div className={classNames(ARROW_CLASS, className)} style={{ borderTopColor: arrowColor }} />\n);\n","import classNames from 'classnames';\nimport { ICanaryJudgeScore, ICanaryScoreThresholds } from 'kayenta/domain';\nimport * as React from 'react';\n\nimport { mapGroupToColor } from './colors';\nimport HeaderArrow from './headerArrow';\n\nexport interface IAllMetricResultsHeader {\n onClick: () => void;\n className: string;\n score: ICanaryJudgeScore;\n scoreThresholds: ICanaryScoreThresholds;\n}\n\n/*\n * Clickable header for all metric results.\n */\nexport default ({ className, onClick, score, scoreThresholds }: IAllMetricResultsHeader) => (\n <section className={className}>\n <div\n onClick={onClick}\n style={{\n backgroundColor: mapGroupToColor(score, scoreThresholds),\n }}\n className={classNames('clickable', 'text-center', 'all-metric-results-header')}\n >\n <h3 className=\"heading-3 label\">ALL</h3>\n <HeaderArrow className=\"outer\" arrowColor=\"var(--color-titanium)\" />\n <HeaderArrow className=\"inner\" arrowColor={mapGroupToColor(score, scoreThresholds)} />\n </div>\n </section>\n);\n","import classNames from 'classnames';\nimport * as React from 'react';\n\nimport HeaderArrow from './headerArrow';\n\nexport interface IGroupScoreProps {\n label: string;\n style?: { [key: string]: string };\n onClick: () => void;\n className: string;\n}\n\n/*\n * Component for a labeled, clickable, colored header.\n * */\nexport default ({ label, onClick, style, className }: IGroupScoreProps) => (\n <section style={style} onClick={onClick} className={classNames('clickable', 'text-center', 'group-score', className)}>\n <h3 className=\"heading-3 uppercase label\">{label}</h3>\n <HeaderArrow arrowColor={style.backgroundColor} />\n </section>\n);\n","import classNames from 'classnames';\nimport * as Creators from 'kayenta/actions/creators';\nimport { ICanaryJudgeGroupScore, ICanaryScoreThresholds, IGroupWeights } from 'kayenta/domain';\nimport { ICanaryState } from 'kayenta/reducers';\nimport { canaryExecutionRequestSelector, serializedGroupWeightsSelector } from 'kayenta/selectors';\nimport * as React from 'react';\nimport { connect, Dispatch } from 'react-redux';\n\nimport ClickableHeader from './clickableHeader';\nimport { mapGroupToColor } from './colors';\n\nexport interface IGroupScoresOwnProps {\n groups: ICanaryJudgeGroupScore[];\n className?: string;\n}\n\ninterface IGroupScoresStateProps {\n groupWeights: IGroupWeights;\n scoreThresholds: ICanaryScoreThresholds;\n selectedGroup: string;\n}\n\ninterface IGroupScoresDispatchProps {\n select: (event: any) => void;\n}\n\n/*\n * Renders list of group scores.\n * */\nconst GroupScores = ({\n groups,\n groupWeights,\n scoreThresholds,\n className,\n select,\n selectedGroup,\n}: IGroupScoresOwnProps & IGroupScoresDispatchProps & IGroupScoresStateProps) => (\n <section className={classNames('horizontal', className)}>\n {groups.map((g) => (\n <ClickableHeader\n key={g.name}\n style={{\n width: `${groupWeights[g.name]}%`, // TODO: at some point (around 4%), the group name doesn't fit.\n backgroundColor: mapGroupToColor(g, scoreThresholds),\n }}\n onClick={() => select(g.name)}\n label={g.name}\n className={classNames('report-score', { active: g.name === selectedGroup })}\n />\n ))}\n </section>\n);\n\nconst mapStateToProps = (state: ICanaryState): IGroupScoresStateProps => ({\n selectedGroup: state.selectedRun.selectedGroup,\n groupWeights: serializedGroupWeightsSelector(state),\n scoreThresholds: canaryExecutionRequestSelector(state).thresholds,\n});\n\nconst mapDispatchToProps = (\n dispatch: Dispatch<ICanaryState>,\n ownProps: IGroupScoresOwnProps,\n): IGroupScoresOwnProps & IGroupScoresDispatchProps => ({\n select: (group: string) => dispatch(Creators.selectReportMetricGroup({ group })),\n ...ownProps,\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(GroupScores);\n","import classNames from 'classnames';\nimport * as Creators from 'kayenta/actions/creators';\nimport { ICanaryJudgeGroupScore, ICanaryJudgeScore, ICanaryScoreThresholds } from 'kayenta/domain';\nimport { ICanaryState } from 'kayenta/reducers';\nimport { judgeResultSelector, serializedGroupWeightsSelector } from 'kayenta/selectors';\nimport { sortBy } from 'lodash';\nimport * as React from 'react';\nimport { connect, Dispatch } from 'react-redux';\n\nimport AllMetricResultsHeader from './allMetricResultsHeader';\nimport GroupScores from './groupScores';\n\nimport './reportScores.less';\n\ninterface IReportScoresStateProps {\n groups: ICanaryJudgeGroupScore[];\n score: ICanaryJudgeScore;\n scoreThresholds: ICanaryScoreThresholds;\n selectedGroup: string;\n}\n\ninterface IReportScoresDispatchProps {\n clearSelectedGroup: () => void;\n}\n\ninterface IReportScoreParentProps {\n isExpanded: boolean;\n toggleHeader: () => void;\n}\n\n/*\n * Layout for the report scores.\n * */\nconst ReportScores = ({\n groups,\n isExpanded,\n selectedGroup,\n clearSelectedGroup,\n score,\n scoreThresholds,\n toggleHeader,\n}: IReportScoresStateProps & IReportScoresDispatchProps & IReportScoreParentProps) => {\n const chevronStyle = {\n transform: isExpanded ? 'rotate(90deg)' : 'rotate(0deg)',\n transition: 'all ease 0.15s',\n };\n\n return (\n <section className=\"horizontal report-scores\">\n <AllMetricResultsHeader\n onClick={clearSelectedGroup}\n score={score}\n scoreThresholds={scoreThresholds}\n className={classNames('flex-1', 'report-score', { active: !selectedGroup })}\n />\n <GroupScores groups={groups} className=\"flex-12\" />\n <div className=\"kayenta-overview-toggle horizontal middle\" onClick={() => toggleHeader()}>\n {isExpanded ? <p>hide details</p> : <p>show details</p>}\n <span className=\"glyphicon glyphicon-chevron-right\" style={chevronStyle} />\n </div>\n </section>\n );\n};\n\nconst mapStateToProps = (state: ICanaryState): IReportScoresStateProps => ({\n groups: sortBy(\n judgeResultSelector(state).groupScores,\n // Sort by group weight, then by name.\n [(group: ICanaryJudgeGroupScore) => -serializedGroupWeightsSelector(state)[group.name], 'name'],\n ),\n score: judgeResultSelector(state).score,\n scoreThresholds: state.selectedRun.run.canaryExecutionRequest.thresholds,\n selectedGroup: state.selectedRun.selectedGroup,\n});\n\nconst mapDispatchToProps = (dispatch: Dispatch<ICanaryState>): IReportScoresDispatchProps => ({\n clearSelectedGroup: () => dispatch(Creators.selectReportMetricGroup({ group: null })),\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(ReportScores);\n","import { ICanaryExecutionStatusResult } from 'kayenta/domain';\nimport { ICanaryState } from 'kayenta/reducers';\nimport * as React from 'react';\nimport { connect } from 'react-redux';\n\nimport ReportHeader from './header';\nimport MetricResults from './metricResults';\nimport ReportException from './reportException';\nimport ReportExplanation from './reportExplanation';\nimport ReportScores from './reportScores';\n\nimport './detail.less';\n\n/*\n * Layout for report detail view.\n * */\n\ninterface IDetailViewProps {\n run: ICanaryExecutionStatusResult;\n}\n\nfunction DetailView({ run }: IDetailViewProps) {\n const [isExpanded, setIsExpanded] = React.useState<boolean>(true);\n\n if (!run.result?.judgeResult.results?.length && run.exception) {\n return <ReportException />;\n }\n\n const toggleDetailHeader = () => {\n setIsExpanded(!isExpanded);\n };\n return (\n <>\n <div className=\"vertical flex-1\">\n {isExpanded && <ReportHeader />}\n <ReportExplanation />\n <ReportScores isExpanded={isExpanded} toggleHeader={toggleDetailHeader} />\n <MetricResults />\n </div>\n </>\n );\n}\n\nconst mapStateToProps = (state: ICanaryState) => ({\n run: state.selectedRun.run,\n});\n\nexport default connect(mapStateToProps)(DetailView);\n","import LoadStatesBuilder from 'kayenta/components/loadStates';\nimport CenteredDetail from 'kayenta/layout/centeredDetail';\nimport { ICanaryState } from 'kayenta/reducers';\nimport { AsyncRequestState } from 'kayenta/reducers/asyncRequest';\nimport * as React from 'react';\nimport { connect } from 'react-redux';\n\nimport ReportDetail from './detail';\n\ninterface IReportLoadStatesStateProps {\n loadState: AsyncRequestState;\n}\n\nconst ReportLoadStates = ({ loadState }: IReportLoadStatesStateProps) => {\n const LoadStates = new LoadStatesBuilder()\n .onFulfilled(<ReportDetail />)\n .onFailed(\n <CenteredDetail>\n <h3 className=\"heading-3\">Could not load canary report.</h3>\n </CenteredDetail>,\n )\n .build();\n\n return <LoadStates state={loadState} />;\n};\n\nconst mapStateToProps = (state: ICanaryState) => ({\n loadState: state.selectedRun.load,\n});\n\nexport default connect(mapStateToProps)(ReportLoadStates);\n","import * as Creators from 'kayenta/actions/creators';\nimport { ICanaryState } from 'kayenta/reducers';\nimport * as React from 'react';\nimport { connect, Dispatch } from 'react-redux';\nimport { Observable } from 'rxjs/Observable';\nimport { Subscription } from 'rxjs/Subscription';\n\nimport ReportDetailLoadStates from './loadStates';\n\ninterface IResultLoaderStateParamsProps {\n resultIdStream: Observable<IResultLoaderStateParams>;\n}\n\ninterface IResultLoaderDispatchProps {\n loadResult: (stateParams: IResultLoaderStateParams) => void;\n}\n\ninterface IResultLoaderStateParams {\n configId: string;\n runId: string;\n}\n\n/*\n * Top-level .reportDetail state component.\n * Loads result details on changes to /report/:configId/:runId path parameter, renders load states.\n */\nclass ResultDetailLoader extends React.Component<IResultLoaderDispatchProps & IResultLoaderStateParamsProps> {\n private subscription: Subscription;\n\n constructor(props: IResultLoaderDispatchProps & IResultLoaderStateParamsProps) {\n super(props);\n const { resultIdStream, loadResult } = props;\n this.subscription = resultIdStream.subscribe(loadResult);\n }\n\n public componentWillUnmount(): void {\n this.subscription.unsubscribe();\n }\n\n public render() {\n return <ReportDetailLoadStates />;\n }\n}\n\nconst mapDispatchToProps = (dispatch: Dispatch<ICanaryState>): IResultLoaderDispatchProps => ({\n loadResult: (stateParams: IResultLoaderStateParams) =>\n dispatch(\n Creators.loadRunRequest({\n configId: stateParams.configId,\n runId: stateParams.runId,\n }),\n ),\n});\n\nexport default connect(null, mapDispatchToProps)(ResultDetailLoader);\n","import { Field, Form, Formik, FormikActions, FormikErrors, FormikProps, FormikTouched } from 'formik';\nimport { get } from 'lodash';\nimport * as React from 'react';\nimport { Modal } from 'react-bootstrap';\n\nimport {\n Application,\n HelpField,\n HoverablePopover,\n IModalComponentProps,\n MapEditor,\n ModalClose,\n noop,\n ReactModal,\n SubmitButton,\n TetheredSelect,\n} from '@spinnaker/core';\n\nimport { CanaryScores } from '../components/canaryScores';\nimport { ICanaryConfigSummary, ICanaryExecutionRequest, IKayentaAccount, KayentaAccountType } from '../domain';\nimport { startCanaryRun } from '../service/canaryRun.service';\n\nconst RESOURCE_TYPES = {\n prometheus: [\n { label: '', value: '' },\n { label: 'gce_instance', value: 'gce_instance' },\n { label: 'aws_ec2_instance', value: 'aws_ec2_instance' },\n ],\n stackdriver: [\n { label: 'gce_instance', value: 'gce_instance' },\n { label: 'aws_ec2_instance', value: 'aws_ec2_instance' },\n { label: 'gae_app', value: 'gae_app' },\n { label: 'k8s_container', value: 'k8s_container' },\n { label: 'k8s_pod', value: 'k8s_pod' },\n { label: 'k8s_node', value: 'k8s_node' },\n { label: 'gke_container', value: 'gke_container' },\n { label: 'https_lb_rule', value: 'https_lb_rule' },\n { label: 'global', value: 'global' },\n ],\n};\n\nexport interface IManualAnalysisModalProps extends IModalComponentProps {\n title: string;\n application: Application;\n accounts: IKayentaAccount[];\n initialValues?: IManualAnalysisModalFormProps;\n}\n\nexport interface IManualAnalysisModalState {\n showAllControlLocations: boolean;\n showAllExperimentLocations: boolean;\n}\n\nexport interface IManualAnalysisModalFormProps {\n configId: string;\n startTime: string;\n endTime: string;\n step: string;\n baselineScope: string;\n canaryScope: string;\n baselineLocation: string;\n canaryLocation: string;\n extendedScopeParams: { [key: string]: string };\n resourceType: string;\n marginalThreshold: string;\n passThreshold: string;\n metricsAccountName: string;\n storageAccountName: string;\n}\n\nconst transformFormPropsToExecutionRequest = (\n values: IManualAnalysisModalFormProps,\n accounts: IKayentaAccount[],\n): ICanaryExecutionRequest => {\n const step = parseInt(values.step, 10);\n const pass = parseInt(values.passThreshold, 10);\n const marginal = parseInt(values.marginalThreshold, 10);\n\n const metricsAccount = accounts.find(({ name }) => values.metricsAccountName === name);\n\n const accountSpecificParams: { [param: string]: string } = {};\n\n if (values.resourceType) {\n accountSpecificParams.resourceType = values.resourceType;\n }\n\n if (metricsAccount.type === 'atlas' && !values.extendedScopeParams?.type) {\n accountSpecificParams.type = 'cluster';\n }\n\n const extendedScopeParams = { ...values.extendedScopeParams, ...accountSpecificParams };\n\n return {\n scopes: {\n default: {\n controlScope: {\n scope: values.baselineScope,\n start: values.startTime,\n end: values.endTime,\n location: values.baselineLocation,\n step,\n extendedScopeParams,\n },\n experimentScope: {\n scope: values.canaryScope,\n start: values.startTime,\n end: values.endTime,\n location: values.canaryLocation,\n step,\n extendedScopeParams,\n },\n },\n },\n thresholds: {\n pass,\n marginal,\n },\n };\n};\n\nconst defaultValues: IManualAnalysisModalFormProps = {\n configId: null,\n startTime: '',\n endTime: '',\n step: '',\n baselineScope: '',\n canaryScope: '',\n baselineLocation: '',\n canaryLocation: '',\n extendedScopeParams: {},\n resourceType: '',\n marginalThreshold: '',\n passThreshold: '',\n metricsAccountName: '',\n storageAccountName: '',\n};\n\nexport class ManualAnalysisModal extends React.Component<IManualAnalysisModalProps, IManualAnalysisModalState> {\n public static defaultProps: Partial<IManualAnalysisModalProps> = {\n closeModal: noop,\n dismissModal: noop,\n initialValues: defaultValues,\n };\n\n public static show(props: IManualAnalysisModalProps): Promise<any> {\n const modalProps = { dialogClassName: 'modal-lg' };\n return ReactModal.show(ManualAnalysisModal, props, modalProps);\n }\n\n constructor(props: IManualAnalysisModalProps) {\n super(props);\n const { initialValues, accounts } = props;\n const selectedMetricsStore = accounts.find(({ name }) => initialValues.metricsAccountName === name);\n const recommendedLocations = selectedMetricsStore?.recommendedLocations ?? [];\n this.state = {\n showAllControlLocations: !recommendedLocations.includes(initialValues.baselineLocation),\n showAllExperimentLocations: !recommendedLocations.includes(initialValues.canaryLocation),\n };\n }\n\n private validate = (values: IManualAnalysisModalFormProps) => {\n const errors = {} as FormikErrors<IManualAnalysisModalFormProps>;\n let startTime, endTime;\n\n if (!values.configId) {\n errors.configId = 'You must choose a canary config';\n }\n\n if (!values.startTime) {\n errors.startTime = 'You must provide a start time';\n } else {\n try {\n startTime = new Date(values.startTime).getTime();\n } catch (e) {\n errors.startTime = 'Invalid start time. Time must be in ISO-8601 format, e.g. 2018-07-12T22:28:29Z';\n }\n }\n\n if (!values.endTime) {\n errors.endTime = 'You must provide an end time';\n } else {\n try {\n endTime = new Date(values.endTime).getTime();\n } catch (e) {\n errors.endTime = 'Invalid start time. Time must be in ISO-8601 format, e.g. 2018-07-12T22:28:29Z';\n }\n }\n\n if (startTime && endTime && endTime <= startTime) {\n errors.endTime = 'End time must be after start time';\n }\n\n if (!values.step) {\n errors.step = 'You must provide a step value';\n } else if (parseInt(values.step, 10) < 1) {\n errors.step = 'Invalid step value';\n }\n\n if (!values.baselineScope) {\n errors.baselineScope = 'You must provide a baseline scope';\n }\n\n if (!values.canaryScope) {\n errors.canaryScope = 'You must provide a canary scope';\n }\n\n if (!values.baselineLocation) {\n errors.baselineLocation = 'You must provide a baseline location';\n }\n\n if (!values.canaryLocation) {\n errors.canaryLocation = 'You must provide a canary location';\n }\n\n const marginalThreshold = parseInt(values.marginalThreshold, 10);\n const passThreshold = parseInt(values.passThreshold, 10);\n\n if (!values.marginalThreshold) {\n errors.marginalThreshold = 'You must provide a marginal score threshold';\n } else if (marginalThreshold > passThreshold) {\n errors.marginalThreshold = 'Marginal threshold must be greater than passing threshold';\n } else if (marginalThreshold < 1) {\n errors.marginalThreshold = 'Marginal threshold must be positive';\n }\n\n if (!values.passThreshold) {\n errors.passThreshold = 'You must provide a passing score threshold';\n } else if (passThreshold > 100) {\n errors.passThreshold = 'Passing threshold cannot be greater than 100';\n }\n\n if (!values.metricsAccountName) {\n errors.metricsAccountName = 'You must choose a metrics account';\n }\n\n if (!values.storageAccountName) {\n errors.storageAccountName = 'You must choose a storage account';\n }\n\n return errors;\n };\n\n private submit = (values: IManualAnalysisModalFormProps, actions: FormikActions<IManualAnalysisModalFormProps>) => {\n const { configId, metricsAccountName, storageAccountName } = values;\n const { application, accounts } = this.props;\n const executionRequest = transformFormPropsToExecutionRequest(values, accounts);\n\n startCanaryRun(configId, executionRequest, {\n application: application.name,\n metricsAccountName,\n storageAccountName,\n })\n .then(() => {\n actions.setSubmitting(false);\n actions.setStatus({ succeeded: true });\n })\n .catch((error) => {\n actions.setSubmitting(false);\n actions.setStatus({ succeeded: false, error });\n });\n };\n\n public render() {\n const { dismissModal, title, application, accounts, initialValues } = this.props;\n const { showAllControlLocations, showAllExperimentLocations } = this.state;\n\n const canaryConfigs: ICanaryConfigSummary[] = application\n .getDataSource('canaryConfigs')\n .data.slice()\n .sort((a: ICanaryConfigSummary, b: ICanaryConfigSummary) => a.name.localeCompare(b.name));\n const metricsStores = accounts.filter(({ supportedTypes }) =>\n supportedTypes.includes(KayentaAccountType.MetricsStore),\n );\n const objectStores = accounts.filter(({ supportedTypes }) =>\n supportedTypes.includes(KayentaAccountType.ObjectStore),\n );\n // TODO: support a scope name besides 'default'.\n const showAdvancedSettings = metricsStores.length > 1 || objectStores.length > 1;\n\n return (\n <Formik\n initialValues={{\n ...initialValues,\n metricsAccountName: get(metricsStores[0], 'name', ''),\n storageAccountName: get(objectStores[0], 'name', ''),\n }}\n onSubmit={this.submit}\n validate={this.validate}\n isInitialValid={!!initialValues.configId} // if we have a config id initially, everything else should be valid\n render={({\n values,\n touched,\n isValid,\n isSubmitting,\n status,\n setFieldValue,\n setFieldTouched,\n errors,\n }: FormikProps<IManualAnalysisModalFormProps>) => {\n if (get(status, 'succeeded') === true) {\n return (\n <>\n <ModalClose dismiss={dismissModal} />\n <Modal.Header>{<h3>Analysis Started</h3>}</Modal.Header>\n <Modal.Body>\n <p>Analysis started — check the list of reports in a few minutes to view results</p>\n </Modal.Body>\n <Modal.Footer className=\"horizontal right\">\n <button className=\"btn btn-primary\" onClick={dismissModal} type=\"button\">\n Got it\n </button>\n </Modal.Footer>\n </>\n );\n }\n\n const selectedMetricsStore = metricsStores.find(({ name }) => values.metricsAccountName === name);\n const selectedObjectStore = objectStores.find(({ name }) => values.storageAccountName === name);\n\n const recommendedLocations = get(selectedMetricsStore, 'recommendedLocations', []);\n const { canaryLocation, baselineLocation } = initialValues;\n const locations = get(selectedMetricsStore, 'locations', []);\n // Almost every report generated for Atlas uses a simple region for its location. On the backend, Kayenta\n // performs amazing feats to reconcile the location with an Atlas backend, considering the values of several\n // extended params. We are not going to reverse engineer that logic here in order to pick a predefined value\n // from the dropdown: if a location was valid to generate the report, it'll probably be valid when we\n // regenerate it.\n if (canaryLocation && !locations.includes(canaryLocation)) {\n locations.push(canaryLocation);\n }\n if (baselineLocation && !locations.includes(baselineLocation)) {\n locations.push(baselineLocation);\n }\n\n const hasLocationChoices = recommendedLocations.length > 0 || locations.length > 0;\n\n return (\n <Form className=\"form-horizontal\">\n <ModalClose dismiss={dismissModal} />\n <Modal.Header>{title && <h3>{title}</h3>}</Modal.Header>\n <Modal.Body>\n <div className=\"row\">\n <div className=\"col-md-12\">\n <div className=\"container-fluid form-horizontal\">\n <h5>Analysis Configuration</h5>\n <div className=\"horizontal-rule\" />\n <div className=\"form-group\">\n <div className=\"col-md-3 sm-label-right\">Config Name</div>\n <div className=\"col-md-7\">\n <TetheredSelect\n value={values.configId}\n options={canaryConfigs.map(({ id, name }) => ({ label: name, value: id }))}\n onChange={(item: { label: string; value: string }) =>\n setFieldValue('configId', (item && item.value) || null)\n }\n />\n </div>\n </div>\n <div className=\"form-group\">\n <div className=\"col-md-3 sm-label-right\">\n Start Time <HelpField id=\"pipeline.config.canary.startTimeIso\" />\n </div>\n <div className=\"col-md-7\">\n <ValidatedField errors={errors} touched={touched} name=\"startTime\" />\n </div>\n </div>\n <div className=\"form-group\">\n <div className=\"col-md-3 sm-label-right\">\n End Time <HelpField id=\"pipeline.config.canary.endTimeIso\" />\n </div>\n <div className=\"col-md-7\">\n <ValidatedField errors={errors} touched={touched} name=\"endTime\" />\n </div>\n </div>\n <div className=\"form-group\">\n <div className=\"col-md-3 sm-label-right\">Step</div>\n <div className=\"col-md-7\">\n <ValidatedField\n errors={errors}\n touched={touched}\n type=\"number\"\n style={{ width: '60px', display: 'inline-block' }}\n name=\"step\"\n />\n <span className=\"form-control-static\"> seconds</span>\n </div>\n </div>\n <h5>Baseline + Canary Pair</h5>\n <div className=\"horizontal-rule\" />\n <div className=\"form-group\">\n <div className=\"col-md-3 sm-label-right\">\n Baseline <HelpField id=\"pipeline.config.canary.baselineGroup\" />\n </div>\n <div className=\"col-md-7\">\n <ValidatedField name=\"baselineScope\" errors={errors} touched={touched} />\n </div>\n </div>\n <div className=\"form-group\">\n <div className=\"col-md-3 sm-label-right\">\n Baseline Location <HelpField id=\"pipeline.config.canary.baselineLocation\" />\n </div>\n <div className=\"col-md-7\">\n <LocationField\n hasLocationChoices={hasLocationChoices}\n showAll={showAllControlLocations}\n recommendedLocations={recommendedLocations}\n locations={locations}\n value={values.baselineLocation}\n field=\"baselineLocation\"\n errors={errors}\n touched={touched}\n onChange={(location) => {\n setFieldTouched('baselineLocation', true);\n setFieldValue('baselineLocation', location);\n }}\n onShowAllChange={(showAll) => this.setState({ showAllControlLocations: showAll })}\n />\n </div>\n </div>\n <div className=\"form-group\">\n <div className=\"col-md-3 sm-label-right\">\n Canary <HelpField id=\"pipeline.config.canary.canaryGroup\" />\n </div>\n <div className=\"col-md-7\">\n <ValidatedField errors={errors} touched={touched} name=\"canaryScope\" />\n </div>\n </div>\n <div className=\"form-group\">\n <div className=\"col-md-3 sm-label-right\">\n Canary Location <HelpField id=\"pipeline.config.canary.canaryLocation\" />\n </div>\n <div className=\"col-md-7\">\n <LocationField\n hasLocationChoices={hasLocationChoices}\n showAll={showAllExperimentLocations}\n recommendedLocations={recommendedLocations}\n locations={locations}\n value={values.canaryLocation}\n field=\"canaryLocation\"\n errors={errors}\n touched={touched}\n onChange={(location) => {\n setFieldTouched('canaryLocation', true);\n setFieldValue('canaryLocation', location);\n }}\n onShowAllChange={(showAll) => this.setState({ showAllExperimentLocations: showAll })}\n />\n </div>\n </div>\n <h5>Metric Scope</h5>\n <div className=\"horizontal-rule\" />\n {RESOURCE_TYPES.hasOwnProperty(get(selectedMetricsStore, 'type')) && (\n <div className=\"form-group\">\n <div className=\"col-md-3 sm-label-right\">Resource Type</div>\n <div className=\"col-md-7\">\n <TetheredSelect\n value={values.resourceType}\n options={RESOURCE_TYPES[selectedMetricsStore.type as keyof typeof RESOURCE_TYPES]}\n onChange={(item: { label: string; value: string }) =>\n setFieldValue('resourceType', (item && item.value) || '')\n }\n />\n <ErrorMessage field=\"resourceType\" errors={errors} touched={touched} />\n </div>\n </div>\n )}\n <div className=\"form-group\">\n <div className=\"col-md-3 sm-label-right\">\n Extended Params <HelpField id=\"pipeline.config.canary.extendedScopeParams\" />\n </div>\n <div className=\"col-md-7\">\n <MapEditor\n model={values.extendedScopeParams}\n onChange={(model) => setFieldValue('extendedScopeParams', model)}\n hiddenKeys={['resourceType']}\n />\n </div>\n </div>\n <h5>Scoring Thresholds</h5>\n <div className=\"horizontal-rule\" />\n <CanaryScores\n onChange={({ unhealthyScore, successfulScore }) => {\n setFieldValue('marginalThreshold', unhealthyScore);\n setFieldValue('passThreshold', successfulScore);\n }}\n successfulHelpFieldId=\"pipeline.config.canary.passingScore\"\n successfulLabel=\"Pass \"\n successfulScore={values.passThreshold}\n unhealthyHelpFieldId=\"pipeline.config.canary.marginalScore\"\n unhealthyLabel=\"Marginal \"\n unhealthyScore={values.marginalThreshold}\n />\n {showAdvancedSettings && (\n <AdvancedSettings\n metricsStores={metricsStores}\n selectedMetricsStore={selectedMetricsStore}\n objectStores={objectStores}\n selectedObjectStore={selectedObjectStore}\n onChange={setFieldValue}\n errors={errors}\n touched={touched}\n />\n )}\n </div>\n </div>\n </div>\n {get(status, 'error') && (\n <div className=\"row\">\n <div className=\"col-md-7 col-md-offset-3\">\n <div className=\"well-compact alert alert-danger\">\n <b>There was a problem starting your analysis:</b>\n <span>{JSON.stringify(status.error.data)}</span>\n </div>\n </div>\n </div>\n )}\n </Modal.Body>\n <Modal.Footer className=\"horizontal right\">\n <button className=\"btn btn-default\" onClick={dismissModal} type=\"button\">\n Cancel\n </button>\n <SubmitFormButton isValid={isValid} isSubmitting={isSubmitting} errors={errors} />\n </Modal.Footer>\n </Form>\n );\n }}\n />\n );\n }\n}\n\nconst SubmitFormButton = ({\n errors,\n isValid,\n isSubmitting,\n}: {\n errors: FormikErrors<any>;\n isValid: boolean;\n isSubmitting: boolean;\n}) => {\n const button = (\n <SubmitButton isDisabled={!isValid} submitting={isSubmitting} isFormSubmit={true} label=\"Start analysis\" />\n );\n const errorMessages = Object.values(errors).map((error: string, i) => <li key={i}>{error}</li>);\n if (isValid || !errorMessages.length) {\n return button;\n }\n\n const popoverComponent = () => (\n <div>\n The following errors must be corrected before submitting:<ul>{errorMessages}</ul>\n </div>\n );\n return (\n <div className=\"sp-margin-s-left\">\n <HoverablePopover Component={popoverComponent}>{button}</HoverablePopover>\n </div>\n );\n};\n\nconst combineLocations = (includeAll: boolean, recommendedLocations: string[], locations: string[]) => {\n if (includeAll) {\n return [...new Set(recommendedLocations.concat(locations))];\n }\n\n return recommendedLocations.length > 0 ? recommendedLocations : locations;\n};\n\ninterface ILocationFieldProps {\n hasLocationChoices: boolean;\n showAll: boolean;\n recommendedLocations: string[];\n locations: string[];\n value: string;\n onChange: (location: string) => any;\n onShowAllChange: (showAll: boolean) => any;\n errors: FormikErrors<IManualAnalysisModalFormProps>;\n touched: FormikTouched<IManualAnalysisModalFormProps>;\n field: keyof IManualAnalysisModalFormProps;\n}\n\nconst LocationField = ({\n hasLocationChoices,\n showAll,\n recommendedLocations,\n locations,\n value,\n onChange,\n onShowAllChange,\n errors,\n touched,\n field,\n}: ILocationFieldProps) => {\n if (!hasLocationChoices) {\n return <ValidatedField name={field} errors={errors} touched={touched} />;\n }\n const combinedLocations = combineLocations(showAll, recommendedLocations, locations).sort();\n const options = combinedLocations.map((location) => ({ label: location, value: location }));\n\n return (\n <>\n <TetheredSelect\n clearable={false}\n value={value}\n options={options}\n onChange={(item: { label: string; value: string }) => onChange((item && item.value) || '')}\n />\n <ErrorMessage field={field} errors={errors} touched={touched} />\n {recommendedLocations.length > 0 && locations.length > 0 && (\n <div className=\"pull-right\">\n <button\n type=\"button\"\n className=\"link\"\n onClick={() => {\n onShowAllChange(!showAll);\n if (!combineLocations(!showAll, recommendedLocations, locations).includes(value)) {\n onChange('');\n }\n }}\n >\n {showAll ? 'Only show recommended locations' : 'Show all locations'}\n </button>\n </div>\n )}\n </>\n );\n};\n\ninterface IAdvancedSettingsProps {\n metricsStores: IKayentaAccount[];\n objectStores: IKayentaAccount[];\n selectedMetricsStore: IKayentaAccount;\n selectedObjectStore: IKayentaAccount;\n onChange: (field: 'metricsAccountName' | 'storageAccountName', value: string) => any;\n errors: FormikErrors<IManualAnalysisModalFormProps>;\n touched: FormikTouched<IManualAnalysisModalFormProps>;\n}\n\nconst AdvancedSettings = ({\n metricsStores,\n selectedMetricsStore,\n objectStores,\n selectedObjectStore,\n onChange,\n errors,\n touched,\n}: IAdvancedSettingsProps) => {\n return (\n <>\n <h5>Advanced Settings</h5>\n <div className=\"horizontal-rule\" />\n <div className=\"form-group\">\n <div className=\"col-md-3 sm-label-right\">\n Metrics Account <HelpField id=\"pipeline.config.metricsAccount\" />\n </div>\n <div className=\"col-md-7\">\n <TetheredSelect\n clearable={false}\n value={get(selectedMetricsStore, 'name')}\n options={metricsStores.map(({ name }) => ({ label: name, value: name }))}\n onChange={(item: { label: string; value: string }) =>\n onChange('metricsAccountName', (item && item.value) || '')\n }\n />\n <ErrorMessage field=\"metricsAccountName\" errors={errors} touched={touched} />\n </div>\n </div>\n <div className=\"form-group\">\n <div className=\"col-md-3 sm-label-right\">\n Storage Account <HelpField id=\"pipeline.config.storageAccount\" />\n </div>\n <div className=\"col-md-7\">\n <TetheredSelect\n clearable={false}\n value={get(selectedObjectStore, 'name')}\n options={objectStores.map(({ name }) => ({ label: name, value: name }))}\n onChange={(item: { label: string; value: string }) =>\n onChange('storageAccountName', (item && item.value) || '')\n }\n />\n <ErrorMessage field=\"storageAccountName\" errors={errors} touched={touched} />\n </div>\n </div>\n </>\n );\n};\n\ninterface IErrorMessageProps {\n field: keyof IManualAnalysisModalFormProps;\n errors: FormikErrors<IManualAnalysisModalFormProps>;\n touched: FormikTouched<IManualAnalysisModalFormProps>;\n}\n\nconst ErrorMessage = ({ field, errors, touched }: IErrorMessageProps) => {\n if (!touched[field] || !errors[field]) {\n return null;\n }\n return <div className=\"error-message\">{errors[field]}</div>;\n};\n\nexport interface IValidatedFieldProps {\n errors: FormikErrors<IManualAnalysisModalFormProps>;\n touched: FormikTouched<IManualAnalysisModalFormProps>;\n name: keyof IManualAnalysisModalFormProps;\n [field: string]: any;\n}\n\nconst ValidatedField = (props: IValidatedFieldProps) => {\n const { errors, name, touched } = props;\n return (\n <>\n <Field {...props} className=\"form-control input-sm\" required={touched[name]} error={errors[name]} />\n <ErrorMessage field={name} errors={errors} touched={touched} />\n </>\n );\n};\n","import { useSref } from '@uirouter/react';\nimport { ICanaryState } from 'kayenta/reducers';\nimport { resolveConfigIdFromExecutionId } from 'kayenta/selectors';\nimport * as React from 'react';\nimport { connect } from 'react-redux';\n\ninterface IConfigLinkOwnProps {\n configName: string;\n executionId: string;\n application: string;\n}\n\ninterface IConfigLinkStateProps {\n configId: string;\n}\n\nexport const ConfigLink = ({ configId, configName }: IConfigLinkOwnProps & IConfigLinkStateProps) => {\n const sref = useSref('^.^.canaryConfig.configDetail', { id: configId });\n return <a {...sref}>{configName}</a>;\n};\n\nconst mapStateToProps = (\n state: ICanaryState,\n ownProps: IConfigLinkOwnProps,\n): IConfigLinkStateProps & IConfigLinkOwnProps => {\n return {\n configId: resolveConfigIdFromExecutionId(state, ownProps.executionId),\n ...ownProps,\n };\n};\n\nexport default connect(mapStateToProps)(ConfigLink);\n","import { useSref } from '@uirouter/react';\nimport * as React from 'react';\n\ninterface IParentPipelineLinkProps {\n parentPipelineExecutionId: string;\n application: string;\n}\n\nexport const PipelineLink = ({ parentPipelineExecutionId, application }: IParentPipelineLinkProps) => {\n const sref = useSref('home.applications.application.pipelines.executionDetails.execution', {\n application,\n executionId: parentPipelineExecutionId,\n });\n return <a {...sref}>Pipeline</a>;\n};\n","import { useSref } from '@uirouter/react';\nimport { ICanaryState } from 'kayenta/reducers';\nimport { resolveConfigIdFromExecutionId } from 'kayenta/selectors';\nimport * as React from 'react';\nimport { connect } from 'react-redux';\n\ninterface IReportLinkOwnProps {\n configName: string;\n executionId: string;\n application: string;\n children?: React.ReactNode;\n}\n\ninterface IReportLinkStateProps {\n configId: string;\n}\n\nexport const ReportLink = ({ configId, executionId, children }: IReportLinkOwnProps & IReportLinkStateProps) => {\n const sref = useSref('^.reportDetail', { configId, runId: executionId });\n return <a {...sref}>{children}</a>;\n};\n\nconst mapStateToProps = (\n state: ICanaryState,\n ownProps: IReportLinkOwnProps,\n): IReportLinkStateProps & IReportLinkOwnProps => {\n return {\n configId: resolveConfigIdFromExecutionId(state, ownProps.executionId),\n ...ownProps,\n };\n};\n\nexport default connect(mapStateToProps)(ReportLink);\n","import { CanarySettings } from 'kayenta/canary.settings';\nimport {\n CANARY_EXECUTION_NO_PIPELINE_STATUS,\n ICanaryExecutionStatusResult,\n ICanaryMetricConfig,\n ICanaryScopesByName,\n IKayentaAccount,\n} from 'kayenta/domain';\nimport CenteredDetail from 'kayenta/layout/centeredDetail';\nimport FormattedDate from 'kayenta/layout/formattedDate';\nimport { ITableColumn, NativeTable } from 'kayenta/layout/table';\nimport { ManualAnalysisModal } from 'kayenta/manualAnalysis/ManualAnalysisModal';\nimport { ICanaryState } from 'kayenta/reducers';\nimport { get, isEqual } from 'lodash';\nimport * as React from 'react';\nimport { connect } from 'react-redux';\n\nimport { Application, ReactInjector, relativeTime, Spinner, Tooltip } from '@spinnaker/core';\n\nimport ConfigLink from './configLink';\nimport Score from '../detail/score';\nimport { PipelineLink } from './pipelineLink';\nimport ReportLink from './reportLink';\n\nimport './executionList.less';\n\n// Both this and the atlas-specific logic in `getScopeLocations` shouldn't really\n// be in this file, and probably shouldn't even be referenced directly.\n// Ideally this and any other metric store customizations should happen in a registry\n// of store-specific transformation functions or similar.\nconst isAtlasScope = (scope: string, metrics: ICanaryMetricConfig[]) =>\n metrics.some(({ query, scopeName }) => scopeName === scope && query.type === 'atlas');\n\nconst getScopeLocations = (scopes: ICanaryScopesByName, metrics: ICanaryMetricConfig[]) =>\n Object.keys(scopes).reduce((acc, scopeName) => {\n const { controlScope, experimentScope } = scopes[scopeName];\n const isAtlas = isAtlasScope(scopeName, metrics);\n\n // When atlas metrics have the dataset param set to global,\n // the location field is not accurate.\n if (isAtlas && get(controlScope, 'extendedScopeParams.dataset') === 'global') {\n acc.add('Global');\n } else {\n acc.add(controlScope.location);\n }\n if (isAtlas && get(experimentScope, 'extendedScopeParams.dataset') === 'global') {\n acc.add('Global');\n } else {\n acc.add(experimentScope.location);\n }\n\n return acc;\n }, new Set<string>());\n\nconst baseColumns: Array<ITableColumn<ICanaryExecutionStatusResult>> = [\n {\n label: 'Summary',\n getContent: (execution) => (\n <div>\n <ReportLink\n configName={execution.config.name}\n executionId={execution.pipelineId}\n application={execution.application}\n >\n <Score score={execution.result.judgeResult.score} showClassification={false} inverse={true} />\n {' '}\n <FormattedDate dateIso={execution.startTimeIso} />\n </ReportLink>\n {execution.startTimeIso && (\n <div className=\"color-text-caption body-small\">\n {relativeTime(new Date(execution.startTimeIso).getTime())}\n </div>\n )}\n </div>\n ),\n },\n {\n label: 'Locations',\n getContent: ({ canaryExecutionRequest: { scopes }, config: { metrics } }) => {\n const locations = [...getScopeLocations(scopes, metrics)];\n\n return (\n <div className=\"vertical\">\n {locations.map((location) => (\n <span key={location}>{location}</span>\n ))}\n </div>\n );\n },\n },\n {\n label: 'Config',\n getContent: (execution) => (\n <ConfigLink\n configName={execution.config.name}\n executionId={execution.pipelineId}\n application={execution.application}\n />\n ),\n },\n {\n label: 'Scopes',\n getContent: ({ canaryExecutionRequest: { scopes } }) => {\n const baselineScopeNames = Object.keys(scopes).reduce(\n (acc, scope) => acc.add(scopes[scope].controlScope.scope),\n new Set<string>(),\n );\n const canaryScopeNames = Object.keys(scopes).reduce(\n (acc, scope) => acc.add(scopes[scope].experimentScope.scope),\n new Set<string>(),\n );\n\n const areScopesIdentical = isEqual(baselineScopeNames, canaryScopeNames);\n\n const styles: React.CSSProperties = { maxWidth: '350px', wordBreak: 'break-all' };\n if (areScopesIdentical) {\n return (\n <div className=\"vertical\" style={styles}>\n {[...canaryScopeNames].map((scope) => (\n <span key={scope}>{scope}</span>\n ))}\n </div>\n );\n } else {\n return (\n <div className=\"vertical\" style={styles}>\n <span className=\"heading-6 uppercase color-text-caption\">Baseline</span>\n {[...baselineScopeNames].map((scope) => (\n <span key={scope}>{scope}</span>\n ))}\n <span className=\"heading-6 uppercase color-text-caption\" style={{ marginTop: '5px' }}>\n Canary\n </span>\n {[...canaryScopeNames].map((scope) => (\n <span key={scope}>{scope}</span>\n ))}\n </div>\n );\n }\n },\n },\n {\n getContent: ({ parentPipelineExecutionId, application }) =>\n parentPipelineExecutionId &&\n parentPipelineExecutionId !== CANARY_EXECUTION_NO_PIPELINE_STATUS && (\n <PipelineLink parentPipelineExecutionId={parentPipelineExecutionId} application={application} />\n ),\n },\n];\n\nconst getTableColumns = (application: Application, accounts: IKayentaAccount[]) => {\n if (!CanarySettings.manualAnalysisEnabled) {\n return baseColumns;\n }\n return baseColumns.concat([\n {\n label: 'Actions',\n getContent: (execution) => (\n <Tooltip value=\"Re-run analysis\">\n <button className=\"link\" onClick={() => rerunAnalysis(execution, application, accounts)}>\n <i className=\"fas fa-redo-alt\" />\n </button>\n </Tooltip>\n ),\n },\n ]);\n};\n\nconst rerunAnalysis = (\n execution: ICanaryExecutionStatusResult,\n application: Application,\n accounts: IKayentaAccount[],\n) => {\n const { controlScope, experimentScope } = Object.values(execution.canaryExecutionRequest.scopes)[0];\n const step = `${controlScope.step ?? 60}`;\n ManualAnalysisModal.show({\n title: 'Start Manual Analysis',\n application,\n accounts,\n initialValues: {\n configId: execution.canaryConfigId,\n startTime: controlScope.start,\n endTime: controlScope.end,\n step,\n baselineScope: controlScope.scope,\n canaryScope: experimentScope.scope,\n baselineLocation: controlScope.location,\n canaryLocation: experimentScope.location,\n extendedScopeParams: controlScope.extendedScopeParams,\n resourceType: controlScope.resourceType,\n marginalThreshold: `${execution.canaryExecutionRequest.thresholds.marginal}`,\n passThreshold: `${execution.canaryExecutionRequest.thresholds.pass}`,\n metricsAccountName: execution.metricsAccountName,\n storageAccountName: execution.storageAccountName,\n },\n });\n};\n\nconst startManualAnalysis = (application: Application, accounts: IKayentaAccount[]) => {\n ManualAnalysisModal.show({\n title: 'Start Manual Analysis',\n application,\n accounts,\n });\n};\n\ninterface IExecutionListTableStateProps {\n executions: ICanaryExecutionStatusResult[];\n application: Application;\n accounts: IKayentaAccount[];\n executionsCount: number;\n}\n\nconst TableRows = ({\n executions,\n application,\n accounts,\n}: {\n executions: ICanaryExecutionStatusResult[];\n application: Application;\n accounts: IKayentaAccount[];\n}) => {\n if (!application.getDataSource('canaryExecutions').loaded) {\n return (\n <CenteredDetail>\n <div className=\"horizontal center middle spinner-container\">\n <Spinner />\n </div>\n </CenteredDetail>\n );\n }\n if (!executions || !executions.length) {\n return (\n <CenteredDetail>\n <h3 className=\"heading-3\">No canary execution history for this application.</h3>\n </CenteredDetail>\n );\n }\n return (\n <NativeTable\n rows={executions}\n className=\"flex-1 execution-list-table\"\n columns={getTableColumns(application, accounts)}\n rowKey={(execution) => execution.pipelineId}\n />\n );\n};\n\nconst updateExecutionsCount = (event: React.ChangeEvent<HTMLSelectElement>) => {\n ReactInjector.$state.go('.', { count: Number(event.target.value) });\n};\n\nconst ExecutionListTable = ({ executions, application, accounts, executionsCount }: IExecutionListTableStateProps) => {\n React.useEffect(() => {\n const dataSource = application.getDataSource('canaryExecutions');\n if (!dataSource.active) {\n dataSource.activate();\n }\n dataSource.refresh();\n return () => dataSource.deactivate();\n }, [application, executionsCount]);\n\n const countOptions: number[] = CanarySettings.executionsCountOptions ?? [20, 50, 100, 200];\n if (!countOptions.includes(executionsCount)) {\n countOptions.push(executionsCount);\n countOptions.sort((a, b) => a - b);\n }\n\n return (\n <div className=\"vertical execution-list-container\">\n <div className=\"horizontal space-between form-inline\">\n <div className=\"form-group\">\n {countOptions.length > 1 && (\n <>\n <span className=\"sp-margin-s-right\">Showing</span>\n <select className=\"form-control input-sm\" onChange={updateExecutionsCount}>\n {countOptions.map((o) => (\n <option selected={executionsCount === o} value={o}>\n {o}\n </option>\n ))}\n </select>\n <span className=\"sp-margin-s-left\">most recent reports</span>\n </>\n )}\n </div>\n {CanarySettings.manualAnalysisEnabled && (\n <button\n style={{ alignSelf: 'flex-end', flexShrink: 0 }}\n className=\"primary\"\n onClick={() => startManualAnalysis(application, accounts)}\n >\n <i className=\"fa fa-play\" /> Start Manual Analysis\n </button>\n )}\n </div>\n <TableRows executions={executions} application={application} accounts={accounts} />\n </div>\n );\n};\n\nconst mapStateToProps = (state: ICanaryState) => ({\n executions: Object.values(state.data.executions.data).filter((e) => e.result),\n application: state.data.application,\n accounts: state.data.kayentaAccounts.data,\n executionsCount: state.app.executionsCount,\n});\n\nexport default connect(mapStateToProps)(ExecutionListTable);\n","import LoadStatesBuilder from 'kayenta/components/loadStates';\nimport CenteredDetail from 'kayenta/layout/centeredDetail';\nimport { ICanaryState } from 'kayenta/reducers';\nimport { AsyncRequestState } from 'kayenta/reducers/asyncRequest';\nimport * as React from 'react';\nimport { connect } from 'react-redux';\n\nimport ExecutionListTable from './table';\n\ninterface IExecutionListLoadStatesStateProps {\n loadState: AsyncRequestState;\n}\n\nconst ExecutionListLoadStates = ({ loadState }: IExecutionListLoadStatesStateProps) => {\n const LoadStates = new LoadStatesBuilder()\n .onFulfilled(<ExecutionListTable />)\n .onFailed(\n <CenteredDetail>\n <h3 className=\"heading-3\">Could not load canary execution history.</h3>\n </CenteredDetail>,\n )\n .build();\n return <LoadStates state={loadState} />;\n};\n\nconst mapStateToProps = (state: ICanaryState) => {\n return {\n loadState: state.data.executions.load,\n };\n};\n\nexport default connect(mapStateToProps)(ExecutionListLoadStates);\n","import { UIView } from '@uirouter/react';\nimport * as React from 'react';\n\nexport default () => {\n const noWrap = { wrap: false };\n return (\n <div className=\"vertical flex-1\">\n <UIView {...noWrap} name=\"detail\" />\n </div>\n );\n};\n","import { UIRouter } from '@uirouter/core';\nimport 'kayenta/metricStore/index';\nimport 'kayenta/report/detail/graph/semiotic';\n\nimport { ApplicationStateProvider } from '@spinnaker/core';\n\n// This import has a side effect of instantiating the canary redux store\nimport { bridgeKayentaDataSourceToReduxStore } from './kayenta/canary.dataSource.bridge';\nimport { registerStates, registerTransitionHooks } from './kayenta/navigation/canary.states';\n\nexport function lazyInitializeKayenta(applicationState: ApplicationStateProvider, uiRouter: UIRouter) {\n const { stateRegistry } = uiRouter;\n\n // deregister the stub states, starting with the deepest children first\n stateRegistry\n .get()\n .filter((state) => state.name.match(/home.(project|applications).application.canary/))\n .sort((a, b) => b.name.length - a.name.length)\n .forEach((stub) => stateRegistry.deregister(stub));\n\n // Now register the full states\n registerStates(uiRouter, applicationState);\n registerTransitionHooks(uiRouter);\n\n // Patch the data source so data flows into the redux store\n bridgeKayentaDataSourceToReduxStore();\n\n return {};\n}\n","import { Transition, UIRouter } from '@uirouter/core';\nimport * as Creators from 'kayenta/actions/creators';\nimport Canary, { canaryStore } from 'kayenta/canary';\nimport ConfigDetailLoader from 'kayenta/edit/configDetailLoader';\nimport CanaryConfigEdit from 'kayenta/edit/edit';\nimport CanaryConfigSave from 'kayenta/edit/save';\nimport SelectConfig from 'kayenta/edit/selectConfig';\nimport ResultDetailLoader from 'kayenta/report/detail/detailLoader';\nimport ExecutionListLoadStates from 'kayenta/report/list/loadStates';\nimport Report from 'kayenta/report/report';\nimport { $rootScope } from 'ngimport';\n\nimport { ApplicationStateProvider, INestedState } from '@spinnaker/core';\n\nimport '../canary.dataSource.bridge';\nimport { CanarySettings } from '../canary.settings';\n\nexport function registerStates($uiRouter: UIRouter, applicationStateProvider: ApplicationStateProvider) {\n const configDetail: INestedState = {\n name: 'configDetail',\n url: '/:id?copy&new',\n views: {\n detail: {\n component: ConfigDetailLoader,\n $type: 'react',\n },\n footer: {\n component: CanaryConfigSave,\n $type: 'react',\n },\n },\n params: {\n copy: { type: 'boolean', value: false, squash: true },\n new: { type: 'boolean', value: false, squash: true },\n },\n resolve: [\n {\n token: 'configNameStream',\n deps: [UIRouter],\n resolveFn: (uiRouter: any) => uiRouter.globals.params$,\n },\n ],\n };\n\n const configDefault: INestedState = {\n name: 'configDefault',\n url: '',\n views: {\n detail: {\n component: SelectConfig,\n $type: 'react',\n },\n },\n };\n\n const config: INestedState = {\n name: 'canaryConfig',\n url: '/config',\n views: {\n canary: {\n component: CanaryConfigEdit,\n $type: 'react',\n },\n },\n children: [configDefault, configDetail],\n redirectTo: (transition) => transition.to().name + '.configDefault',\n };\n\n const reportDetail: INestedState = {\n name: 'reportDetail',\n url: '/:configId/:runId',\n views: {\n detail: {\n component: ResultDetailLoader,\n $type: 'react',\n },\n },\n resolve: [\n {\n token: 'resultIdStream',\n deps: [UIRouter],\n resolveFn: (uiRouter: any) => uiRouter.globals.params$,\n },\n ],\n };\n\n const reportDefault: INestedState = {\n name: 'reportDefault',\n url: '',\n views: {\n detail: {\n component: ExecutionListLoadStates,\n $type: 'react',\n },\n },\n };\n\n const report: INestedState = {\n name: 'report',\n url: '/report?count',\n views: {\n canary: {\n component: Report,\n $type: 'react',\n },\n },\n params: {\n count: {\n type: 'int',\n value: CanarySettings.defaultExecutionCount ?? CanarySettings.executionsCountOptions?.[0] ?? 20,\n squash: true,\n },\n },\n children: [reportDetail, reportDefault],\n redirectTo: (transition) => transition.to().name + '.reportDefault',\n };\n\n const canaryRoot: INestedState = {\n abstract: true,\n name: 'canary',\n url: '/canary',\n views: {\n insight: {\n component: Canary,\n $type: 'react',\n },\n },\n data: {\n pageTitleSection: {\n title: 'Canary',\n },\n },\n children: [config, report],\n };\n\n applicationStateProvider.addChildState(canaryRoot);\n}\n\nexport function registerTransitionHooks($uiRouter: UIRouter) {\n // When leaving a config detail state, clear that config.\n $uiRouter.transitionService.onBefore(\n {\n from: '**.configDetail.**',\n to: (state) => !state.name.includes('configDetail'),\n },\n () => {\n canaryStore.dispatch(Creators.clearSelectedConfig());\n },\n );\n\n // Prompts confirmation for page navigation if config hasn't been saved.\n // Should be possible with a $uiRouter transition hook, but it's not.\n $rootScope.$on('$stateChangeStart', (event) => {\n const state = canaryStore.getState();\n const warningMessage = 'You have unsaved changes.\\nAre you sure you want to navigate away from this page?';\n if (state.selectedConfig && !state.selectedConfig.isInSyncWithServer) {\n if (!window.confirm(warningMessage)) {\n event.preventDefault();\n }\n }\n });\n\n // Prompts confirmation for page reload if config hasn't been saved.\n $uiRouter.transitionService.onEnter({ to: '**.configDetail.**' }, () => {\n window.onbeforeunload = () => {\n const state = canaryStore.getState();\n // Must return `null` if reload should be allowed.\n return (state.selectedConfig && !state.selectedConfig.isInSyncWithServer) || null;\n };\n });\n\n // Clears reload hook when leaving canary config view.\n $uiRouter.transitionService.onExit({ from: '**.configDetail.**' }, () => {\n window.onbeforeunload = undefined;\n });\n\n $uiRouter.transitionService.onSuccess({ to: '**.report.**' }, (transition: Transition) => {\n if (transition.params('from').count !== transition.params('to').count) {\n canaryStore.dispatch(Creators.setExecutionsCount({ count: transition.params('to').count }));\n }\n });\n}\n","import { Application } from '@spinnaker/core';\n\nimport * as Creators from './actions/creators';\nimport { canaryStore } from './canary';\nimport { stub } from './canary.dataSource.stub';\nimport { ICanaryExecutionStatusResult } from './domain/ICanaryExecutionStatusResult';\nimport { ICanaryConfigSummary, IJudge } from './domain/index';\nimport { listCanaryExecutions } from './service/canaryRun.service';\n\nexport function bridgeKayentaDataSourceToReduxStore() {\n stub.afterConfigsLoaded = (application: Application) => {\n if (application !== canaryStore.getState().data.application) {\n return;\n }\n canaryStore.dispatch(\n Creators.updateConfigSummaries({\n configSummaries: application.getDataSource('canaryConfigs').data as ICanaryConfigSummary[],\n }),\n );\n };\n\n stub.afterJudgesLoaded = (application: Application) => {\n if (application !== canaryStore.getState().data.application) {\n return;\n }\n canaryStore.dispatch(\n Creators.updateJudges({\n judges: application.getDataSource('canaryJudges').data as IJudge[],\n }),\n );\n };\n\n stub.loadCanaryExecutions = (application: Application) => {\n const listExecutionsRequest = listCanaryExecutions(application.name);\n\n listExecutionsRequest.catch((error) => {\n canaryStore.dispatch(Creators.loadExecutionsFailure({ error }));\n });\n\n return listExecutionsRequest;\n };\n\n stub.afterCanaryExecutionsLoaded = (application: Application) => {\n if (application !== canaryStore.getState().data.application) {\n return;\n }\n canaryStore.dispatch(\n Creators.loadExecutionsSuccess({\n executions: application.getDataSource('canaryExecutions').data as ICanaryExecutionStatusResult[],\n }),\n );\n };\n}\n"],"names":["TableHeader","columns","className","React","classNames","map","c","i","key","label","width","hide","labelClassName","Table","rows","rowKey","tableBodyClassName","rowClassName","onRowClick","customRow","headerClassName","TableRow","row","onClick","horizontal","table-row","getContent","r","__rest","s","e","t","p","Object","prototype","hasOwnProperty","call","indexOf","getOwnPropertySymbols","length","propertyIsEnumerable","__decorate","decorators","target","desc","d","arguments","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","_typeof","Symbol","iterator","obj","constructor","input","autoBindMethodsDecorator","this","options","undefined","TypeError","_options$methodsToIgn","methodsToIgnore","_options$dontOptimize","dontOptimize","ownProps","getOwnPropertyNames","concat","filter","prop","forEach","ownPropIdentifier","propDescriptor","value","configurable","get","boundMethod","bind","writable","enumerable","subscriptionShape","PropTypes","shape","trySubscribe","func","isRequired","tryUnsubscribe","notifyNestedSubs","isSubscribed","storeShape","subscribe","dispatch","getState","_classCallCheck","instance","Constructor","_possibleConstructorReturn","self","ReferenceError","_inherits","subClass","superClass","create","setPrototypeOf","__proto__","_Provider$childContex","storeKey","subKey","subscriptionKey","Provider","_Component","props","context","_this","store","getChildContext","_ref","render","Children","only","children","Component","propTypes","element","childContextTypes","createProvider","module","REACT_STATICS","contextTypes","defaultProps","displayName","getDefaultProps","getDerivedStateFromProps","mixins","type","KNOWN_STATICS","name","caller","callee","arity","getPrototypeOf","objectPrototype","hoistNonReactStatics","targetComponent","sourceComponent","blacklist","inheritedComponent","keys","descriptor","factory","condition","format","a","b","f","error","Error","args","argIndex","replace","framesToPop","nullListeners","notify","Subscription","parentSub","onStateChange","unsubscribe","listeners","addNestedSub","listener","Boolean","current","next","clear","slice","push","splice","_extends","assign","source","_objectWithoutProperties","hotReloadingVersion","dummyState","noop","makeSelectorStateful","sourceSelector","selector","run","nextProps","shouldComponentUpdate","connectAdvanced","selectorFactory","_contextTypes","_childContextTypes","_ref$getDisplayName","getDisplayName","_ref$methodName","methodName","_ref$renderCountProp","renderCountProp","_ref$shouldHandleStat","shouldHandleStateChanges","_ref$storeKey","_ref$withRef","withRef","connectOptions","version","WrappedComponent","invariant","JSON","stringify","wrappedComponentName","selectorFactoryOptions","Connect","state","renderCount","propsMode","setWrappedInstance","initSelector","initSubscription","_ref2","subscription","componentDidMount","forceUpdate","componentWillReceiveProps","componentWillUnmount","getWrappedInstance","wrappedInstance","ref","componentDidUpdate","notifyNestedSubsOnComponentDidUpdate","setState","addExtraProps","withExtras","createElement","hoistStatics","hasOwn","is","x","y","shallowEqual","objA","objB","keysA","keysB","freeGlobal","global","freeSelf","Function","objectProto","nativeObjectToString","toString","symToStringTag","toStringTag","baseGetTag","isOwn","tag","unmasked","result","getRawTag","objectToString","transform","getPrototype","arg","funcProto","funcToString","objectCtorString","exports","root","_Symbol","observable","_ponyfill2","_ponyfill","__esModule","default","window","ActionTypes","getUndefinedStateErrorMessage","action","actionType","combineReducers","reducers","reducerKeys","finalReducers","finalReducerKeys","shapeAssertionError","reducer","Math","random","substring","split","join","assertReducerShape","hasChanged","nextState","_i","_key","previousStateForKey","nextStateForKey","errorMessage","bindActionCreator","actionCreator","apply","compose","_len","funcs","Array","reduce","wrapMapToPropsConstant","getConstant","constant","constantSelector","dependsOnOwnProps","getDependsOnOwnProps","mapToProps","wrapMapToPropsFunc","proxy","stateOrDispatch","mapDispatchToProps","actionCreators","boundActionCreators","bindActionCreators","mapStateToProps","defaultMergeProps","stateProps","dispatchProps","mergeProps","pure","areMergedPropsEqual","hasRunOnce","mergedProps","nextMergedProps","wrapMergePropsFunc","impureFinalPropsSelectorFactory","pureFinalPropsSelectorFactory","areStatesEqual","areOwnPropsEqual","areStatePropsEqual","hasRunAtLeastOnce","handleSubsequentCalls","nextOwnProps","nextStateProps","statePropsChanged","propsChanged","stateChanged","finalPropsSelectorFactory","initMapStateToProps","initMapDispatchToProps","initMergeProps","match","factories","strictEqual","_ref$connectHOC","connectHOC","_ref$mapStateToPropsF","mapStateToPropsFactories","defaultMapStateToPropsFactories","_ref$mapDispatchToPro","mapDispatchToPropsFactories","defaultMapDispatchToPropsFactories","_ref$mergePropsFactor","mergePropsFactories","defaultMergePropsFactories","_ref$selectorFactory","defaultSelectorFactory","_ref2$pure","_ref2$areStatesEqual","_ref2$areOwnPropsEqua","_ref2$areStatePropsEq","_ref2$areMergedPropsE","extraOptions","createConnect","ADD_METRIC","REMOVE_METRIC","SELECT_CONFIG","CHANGE_METRIC_GROUP_CONFIRM","LOAD_RUN_SUCCESS","SELECT_REPORT_METRIC_GROUP","SELECT_REPORT_METRIC","CanarySettings","atlasWebComponentsUrl","ReactDOM","atlasWebComponentsPolyfillUrl","polyfillScript","document","src","head","appendChild","componentScript","queryFinder","metric","AtlasMetricConfigurer","[object Object]","super","webComponent","addEventListener","event","updateQuery","detail","setAttribute","editingMetric","query","class","backends","bindComponent","autoBindMethods","connect","selectedConfig","buildDelegateService","delegate","delegates","find","identity","metricStoreConfigStore","register","metricConfigurer","isObject","isFunction","isNull","createAction","payloadCreator","metaCreator","finalPayloadCreator","hasMeta","typeString","payload","meta","overArg","isObjectLike","isPlainObject","proto","Ctor","isNil","isUndefined","baseIsNaN","isLength","isArrayLike","isArray","isString","isSymbol","reTrim","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","parseInt","toFinite","other","valueOf","isBinary","test","toNumber","arrayMap","array","iteratee","index","baseIsArguments","isArguments","freeExports","nodeType","freeModule","Buffer","isBuffer","reIsUint","isIndex","typedArrayTags","freeProcess","process","nodeUtil","binding","nodeIsTypedArray","isTypedArray","baseUnary","arrayLikeKeys","inherited","isArr","isArg","isBuff","isType","skipIndexes","n","baseTimes","String","isPrototype","nativeKeys","baseKeys","object","values","baseValues","nativeMax","max","includes","collection","fromIndex","guard","remainder","toInteger","strictIndexOf","predicate","fromRight","baseFindIndex","baseIndexOf","coreJsData","maskSrcKey","uid","exec","IE_PROTO","toSource","reIsHostCtor","reIsNative","RegExp","baseIsNative","isMasked","getNative","getValue","DataView","Map","Promise","Set","WeakMap","dataViewCtorString","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","getTag","ArrayBuffer","resolve","ctorString","symbolProto","symbolToString","baseToString","isValidActionType","isValidActionTypes","types","size","isEmpty","every","combineActions","actionsTypes","combinedActionType","_slicedToArray","arr","_arr","_n","_d","_e","_s","done","err","sliceIterator","handleAction","defaultState","throw","aReducer","nextReducer","throwReducer","previous","ownKeys","flattenReducerMap","node","handler","hasOnlyInterfaceNames","ownKey","hasGeneratorInterface","flatten","namespace","partialFlatMap","partialFlatActionType","connectNamespace","nextNamespace","mapValue","_toConsumableArray","arr2","from","handleActions","handlers","flattenedReducerMap","reduceReducers","toggleMetricClassificationFilter","setExecutionsCount","openDeleteConfigModal","closeDeleteConfigModal","deleteConfig","closeConfigJsonModal","openConfigJsonModal","editMetricCancel","editMetricConfirm","updateMetricDirection","updateMetricNanStrategy","updateMetricCriticality","updateEffectSize","updateMetricGroup","addGroup","saveConfig","dismissSaveConfigError","setConfigJsonModalTabState","setConfigJson","deleteConfigSuccess","loadConfigRequest","saveConfigSuccess","selectConfig","Actions.SELECT_CONFIG","clearSelectedConfig","renameMetric","selectGroup","updateGroupWeight","selectJudgeName","editMetricBegin","removeMetric","Actions.REMOVE_METRIC","addMetric","Actions.ADD_METRIC","updateConfigName","updateConfigDescription","saveConfigFailure","deleteConfigFailure","updateConfigSummaries","updateJudges","loadConfigSuccess","loadConfigFailure","copySelectedConfig","createNewConfig","editGroupBegin","editGroupUpdate","editGroupConfirm","changeMetricGroupSelect","changeMetricGroupConfirm","Actions.CHANGE_METRIC_GROUP_CONFIRM","loadRunRequest","loadRunSuccess","Actions.LOAD_RUN_SUCCESS","loadRunFailure","selectReportMetricGroup","Actions.SELECT_REPORT_METRIC_GROUP","selectReportMetric","Actions.SELECT_REPORT_METRIC","loadMetricSetPairRequest","loadMetricSetPairSuccess","loadMetricSetPairFailure","addTemplate","editTemplateBegin","editTemplateConfirm","editTemplateCancel","editTemplateName","editTemplateValue","editInlineTemplate","updatePrometheusLabelBindings","updatePrometheusGroupBy","updatePrometheusMetricQueryField","updateStackdriverGroupBy","deleteTemplate","selectTemplate","changeMetricGroup","loadMetricsServiceMetadataRequest","loadMetricsServiceMetadataSuccess","loadMetricsServiceMetadataFailure","updatePrometheusMetricDescriptorFilter","updateGraphiteMetricDescriptorFilter","updateStackdriverMetricDescriptorFilter","updateDatadogMetricDescriptorFilter","updateStackdriverMetricResourceField","updateDatadogMetricName","updateNewRelicSelect","loadExecutionsFailure","loadExecutionsSuccess","selectGraphType","loadKayentaAccountsSuccess","loadKayentaAccountsFailure","selectMetricStore","updateSignalFxMetricName","updateSignalFxAggregationMethod","updateSignalFxQueryPairs","updateGraphiteMetricName","FormRow","helpId","checkbox","warning","inputOnly","style","marginTop","marginBottom","HelpField","id","ValidationMessage","message","Date","now","nativeMin","min","wait","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","invokeFunc","time","thisArg","leadingEdge","setTimeout","timerExpired","shouldInvoke","timeSinceLastCall","trailingEdge","timeWaiting","remainingWait","debounced","isInvoking","clearTimeout","cancel","flush","results","allowNew","labelKey","text","trim","some","o","_index","getOptionLabel","__data__","eq","data","assocIndexOf","pop","ListCache","entries","entry","set","listCacheClear","listCacheDelete","listCacheGet","has","listCacheHas","listCacheSet","nativeCreate","Hash","hashClear","hashDelete","hashGet","hashHas","hashSet","hash","string","isKeyable","getMapData","MapCache","mapCacheClear","mapCacheDelete","mapCacheGet","mapCacheHas","mapCacheSet","pairs","LARGE_ARRAY_SIZE","Stack","stackClear","stackDelete","stackGet","stackHas","stackSet","SetCache","add","setCacheAdd","setCacheHas","cache","bitmask","customizer","equalFunc","stack","isPartial","arrLength","othLength","stacked","seen","arrValue","othValue","compared","arraySome","othIndex","cacheHas","Uint8Array","symbolValueOf","byteLength","byteOffset","buffer","convert","mapToArray","setToArray","equalArrays","offset","keysFunc","symbolsFunc","arrayPush","resIndex","nativeGetSymbols","arrayFilter","symbol","stubArray","stubFalse","require","baseIsTypedArray","baseGetAllKeys","getSymbols","objProps","getAllKeys","objLength","skipCtor","objValue","objCtor","othCtor","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","equalByTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","equalObjects","baseIsEqual","baseIsEqualDeep","matchData","noCustomizer","srcValue","COMPARE_PARTIAL_FLAG","isStrictComparable","getMatchData","matchesStrictComparable","baseIsMatch","reIsDeepProp","reIsPlainProp","memoize","resolver","memoized","Cache","rePropName","reEscapeChar","memoizeCapped","charCodeAt","number","quote","subString","isKey","stringToPath","path","castPath","toKey","defaultValue","baseGet","hasFunc","hasPath","baseHasIn","hasIn","baseProperty","basePropertyDeep","baseMatchesProperty","baseMatches","property","iterable","createBaseFor","eachFunc","createBaseEach","baseFor","baseEach","baseSome","isIterateeCall","baseIteratee","str","diacriticsMap","base","letters","ii","jj","falseToWarn","warned","_warning2","option","filterBy","multiple","selected","_isEqual2","fields","_isFunction2","isMatch","_isString2","unshift","_warn2","_some2","field","_interopRequireDefault","_isEqual","_isFunction","_isString","_some","_stripDiacritics2","_stripDiacritics","_warn","caseSensitive","toLowerCase","ignoreDiacritics","a11yNumResults","a11yNumSelected","emptyLabel","isMenuShown","matchOperatorsRe","subject","search","matches","_escapeStringRegexp2","start","matchLength","COMBINING_MARKS","_ii","end","_defaultLabelKey","DEFAULT_LABELKEY","_invariant2","_invariant","_isPlainObject2","_isPlainObject","_getStringLabelKey2","_getStringLabelKey","paginationOption","customOption","optionLabel","_getMatchBounds2","_getMatchBounds","_getOptionLabel2","_getOptionLabel","activeItem","initialItem","initialItemStr","bounds","_head2","_head","selectedItem","position","maxResults","minLength","showMenu","count","plural","preventDefault","Element","scrollIntoViewIfNeeded","rect","getBoundingClientRect","parent","parentNode","parentRect","parentComputedStyle","getComputedStyle","parentBorderTopWidth","getPropertyValue","top","bottom","scrollTop","offsetTop","clientHeight","_addCustomOption3","_addCustomOption2","_defaultFilterBy3","_defaultFilterBy2","_getAccessibilityStatus3","_getAccessibilityStatus2","_getDisplayName3","_getDisplayName2","_getHintText3","_getHintText2","_getInputText3","_getInputText2","_getMatchBounds3","_getMenuItemId3","_getMenuItemId2","_getOptionLabel3","_getStringLabelKey3","_getTruncatedOptions3","_getTruncatedOptions2","_isShown3","_isShown2","_pluralize3","_pluralize2","_preventInputBlur3","_preventInputBlur2","_scrollIntoViewIfNeeded3","_scrollIntoViewIfNeeded2","_stripDiacritics3","_warn3","_createClass","defineProperties","protoProps","staticProps","_debounce2","_debounce","_propTypes2","_propTypes","_react2","_react","Typeahead","WrappedTypeahead","_React$Component","_temp","_getEmptyLabel","_this$props","isLoading","promptText","searchText","useCache","_cache","_handleInputChange","onInputChange","_handleSearchDebounced","_handleSearch","_this$props2","onSearch","delay","_this2","_props","cachedQuery","_instance","getInstance","_utils","bool","classes","argType","inner","baseAssignValue","lastIndex","nested","newValue","assignValue","paths","baseSet","basePickBy","spreadableSymbol","isConcatSpreadable","baseFlatten","depth","isStrict","isFlattenable","otherArgs","nativeNow","lastCalled","stamp","remaining","shortOut","baseSetToString","setToString","overRest","flatRest","basePick","_classnames2","_classnames","ClearButton","bsSize","_onClick","aria-label","rbt-close-lg","stopPropagation","aria-hidden","oneOf","Loader","rbt-loader-lg","rbt-loader-sm","validate","checkType","propName","componentName","location","propFullName","componentNameSafe","propFullNameSafe","chainedCheckType","_createChainableTypeChecker2","_createChainableTypeChecker","propValue","propType","isValidElement","container","defaultContainer","_reactDom2","findDOMNode","_reactDom","ownerDocument","componentOrElement","_ownerDocument2","_ownerDocument","_componentOrElement2","_componentOrElement","_getContainer2","_getContainer","Portal","_mountOverlayTarget","_overlayTarget","_portalContainerNode","body","_unmountOverlayTarget","removeChild","_renderOverlay","overlay","initialRender","_overlayInstance","unstable_renderSubtreeIntoContainer","onRendered","_unrenderOverlay","unmountComponentAtNode","getMountNode","_isMounted","oneOfType","_LegacyPortal2","_LegacyPortal","setContainer","createPortal","__g","core","__e","fn","that","it","aFunction","require$$0","require$$1","require$$2","S","val","dP","O","P","Attributes","anObject","toPrimitive","IE8_DOM_DEFINE","bitmap","createDesc","$export","own","out","IS_FORCED","F","IS_GLOBAL","G","IS_STATIC","IS_PROTO","IS_BIND","B","IS_WRAP","W","expProto","ctx","C","virtual","R","U","IS_INCLUDES","cof","IObject","defined","ceil","floor","isNaN","px","shared","arrayIndexOf","$this","el","toIObject","toIndex","names","$keys","enumBugKeys","$assign","A","K","k","T","toObject","aLen","gOPS","isEnum","pIE","getKeys","j","Properties","documentElement","Empty","createDict","iframeDocument","iframe","display","contentWindow","open","write","lt","close","dPs","USE_SYMBOL","def","TAG","stat","IteratorPrototype","TO_STRING","NAME","setToStringTag","ObjectProto","ITERATOR","BUGGY","Base","DEFAULT","IS_SET","FORCED","$iterCreate","methods","getMethod","kind","DEF_VALUES","VALUES_BUG","$native","$default","$entries","$anyNative","redefine","$at","pos","l","charAt","iterated","_t","point","_k","step","TO_STRING_TAG","collections","Collection","META","setDesc","isExtensible","FREEZE","preventExtensions","setMeta","w","KEY","NEED","fastKey","getWeak","onFreeze","$Symbol","wksExt","hiddenKeys","gOPN","windowNames","getWindowNames","gOPD","$GOPD","$DP","gOPNExt","$JSON","_stringify","HIDDEN","wks","TO_PRIMITIVE","SymbolRegistry","AllSymbols","OPSymbols","USE_NATIVE","QObject","setter","findChild","setSymbolDesc","DESCRIPTORS","$fails","_create","D","protoDesc","wrap","sym","$defineProperty","$defineProperties","symbols","enumKeys","$propertyIsEnumerable","E","$getOwnPropertyDescriptor","$getOwnPropertyNames","$getOwnPropertySymbols","IS_OP","$set","require$$3","wksDefine","for","keyFor","keyOf","useSetter","useSimple","replacer","$replacer","require$$5","_iterator2","_iterator","_symbol2","_symbol","_typeof3","_typeof2","check","buggy","$Object","_setPrototypeOf2","_setPrototypeOf","_create2","isBrowser","longerTimeoutBrowsers","timeoutDuration","navigator","userAgent","debounce","called","then","scheduled","functionToCheck","getStyleComputedProperty","css","defaultView","getParentNode","nodeName","host","getScrollParent","_getStyleComputedProp","overflow","overflowX","overflowY","isIE11","MSInputMethodContext","documentMode","isIE10","isIE","getOffsetParent","noOffsetParent","offsetParent","nextElementSibling","getRoot","findCommonOffsetParent","element1","element2","order","compareDocumentPosition","Node","DOCUMENT_POSITION_FOLLOWING","range","createRange","setStart","setEnd","commonAncestorContainer","contains","firstElementChild","element1root","getScroll","side","upperSide","html","scrollingElement","includeScroll","subtract","scrollLeft","modifier","left","right","getBordersSize","styles","axis","sideA","sideB","parseFloat","getSize","computedStyle","getWindowSizes","height","classCallCheck","createClass","getClientRect","offsets","sizes","clientWidth","horizScrollbar","offsetWidth","vertScrollbar","offsetHeight","getOffsetRectRelativeToArbitraryNode","fixedPosition","isHTML","childrenRect","scrollParent","borderTopWidth","borderLeftWidth","marginLeft","getViewportOffsetRectRelativeToArtbitraryNode","excludeScroll","relativeOffset","innerWidth","innerHeight","isFixed","getFixedPositionOffsetParent","parentElement","getBoundaries","popper","reference","padding","boundariesElement","boundaries","boundariesNode","_getWindowSizes","isPaddingNumber","getArea","computeAutoPlacement","placement","refRect","rects","sortedAreas","area","sort","filteredAreas","computedPlacement","variation","getReferenceOffsets","commonOffsetParent","getOuterSizes","marginRight","getOppositePlacement","matched","getPopperOffsets","referenceOffsets","popperRect","popperOffsets","isHoriz","mainSide","secondarySide","measurement","secondaryMeasurement","runModifiers","modifiers","ends","findIndex","cur","console","warn","enabled","update","isDestroyed","arrowStyles","attributes","flipped","positionFixed","flip","originalPlacement","isCreated","onUpdate","onCreate","isModifierEnabled","modifierName","getSupportedPropertyName","prefixes","upperProp","toUpperCase","prefix","toCheck","destroy","removeAttribute","willChange","disableEventListeners","removeOnDestroy","getWindow","attachToScrollParents","callback","scrollParents","isBody","passive","setupEventListeners","updateBound","scrollElement","eventsEnabled","enableEventListeners","scheduleUpdate","cancelAnimationFrame","removeEventListener","isNumeric","isFinite","setStyles","unit","isFirefox","isModifierRequired","requestingName","requestedName","requesting","_requesting","requested","placements","validPlacements","clockwise","counter","reverse","BEHAVIORS","parseOffset","basePlacement","useHeight","fragments","frag","divider","splitRegex","ops","op","mergeWithPrevious","toValue","index2","Defaults","shift","shiftvariation","_data$offsets","isVertical","shiftOffsets","preventOverflow","transformProp","popperStyles","priority","primary","escapeWithReference","secondary","keepTogether","opSide","arrow","_data$offsets$arrow","arrowElement","querySelector","len","sideCapitalized","altSide","arrowElementSize","center","popperMarginSide","popperBorderSide","sideValue","round","placementOpposite","flipOrder","behavior","refOffsets","overlapsRef","overflowsLeft","overflowsRight","overflowsTop","overflowsBottom","overflowsBoundaries","flippedVariation","flipVariations","getOppositeVariation","subtractLength","bound","computeStyle","legacyGpuAccelerationOption","gpuAcceleration","offsetParentRect","shouldRound","isVariation","sameWidthOddness","bothOddWidth","noRound","v","horizontalToInteger","verticalToInteger","getRoundedOffsets","devicePixelRatio","prefixedProperty","invertTop","invertLeft","x-placement","applyStyle","onLoad","modifierOptions","Popper","requestAnimationFrame","jquery","Utils","PopperUtils","makeEmptyFunction","emptyFunction","thatReturns","thatReturnsFalse","thatReturnsTrue","thatReturnsNull","thatReturnsThis","thatReturnsArgument","_gud2","_gud","_warning","MAX_SIGNED_31_BIT_INT","createEventEmitter","on","off","h","changedBits","calculateChangedBits","_Consumer$contextType","contextProp","emitter","oldValue","Consumer","_Component2","_temp2","_len2","_key2","observedBits","_implementation2","_implementation","createContext","_extends3","_extends2","_classCallCheck3","_classCallCheck2","_possibleConstructorReturn3","_possibleConstructorReturn2","_inherits3","_inherits2","newObj","_interopRequireWildcard","_createReactContext2","_createReactContext","ManagerContext","getReferenceRef","referenceNode","Manager","_Manager","InnerPopper","referenceElement","_popper2","_popper","initialStyle","opacity","pointerEvents","initialArrowStyle","_ret","popperNode","arrowNode","setPopperNode","safeInvoke","innerRef","updatePopperInstance","setArrowNode","popperInstance","updateStateModifier","getOptions","getPopperStyle","getPopperPlacement","getArrowStyle","getOutOfBoundariesState","destroyPopperInstance","prevProps","prevState","unwrapArray","outOfBoundaries","arrowProps","_Portal2","_Portal","_Popper2","_Popper","_defineProperty","getModifiers","align","computeStyles","Overlay","_update","_container$classList","show","classList","onMenuHide","onMenuShow","_container$classList2","remove","_props2","dropup","child","xPlacement","yPlacement","_ref3","cloneElement","SIZER_STYLE","visibility","whiteSpace","INPUT_PROPS_BLACKLIST","copyStyles","fontSize","fontFamily","fontWeight","fontStyle","letterSpacing","textTransform","AutosizeInput","inputWidth","_copyInputStyles","inputStyles","_input","_sizer","_placeHolderSizer","_updateInputWidth","scrollWidth","placeholderWidth","placeholder","wrapperStyle","inputProps","cleanInputProps","inputClassName","inputStyle","boxSizing","inputRef","isNodeFound","componentNode","ignoreClass","correspondingElement","seed","passiveEventSupport","handlersMap","enabledInstances","touchEvents","getEventHandlerOptions","eventName","handlerOptions","config","_class","onClickOutside","__outsideClickHandler","__clickOutsideHandlerProp","handleClickOutside","enableOnClickOutside","_uid","testPassiveEventSupport","events","eventTypes","evt","disableOnClickOutside","excludeScrollbar","clientX","clientY","findHighest","outsideClickIgnoreClass","getRef","instanceRef","_proto","isReactComponent","excluded","sourceKeys","sourceSymbolKeys","wrappedRef","getClass","_reactOnclickoutside2","_reactOnclickoutside","active","_handleBlur","_handleKeyDown","keyCode","_keyCode","onRemove","_handleActive","tokenProps","onBlur","onFocus","onKeyDown","_ClearButton2","_ClearButton","_tokenContainer2","_tokenContainer","Token","_renderRemoveableToken","rbt-token-active","_handleRemoveButtonKeydown","tabIndex","_renderToken","disabled","href","classnames","rbt-token-disabled","interpolateStyle","attr","subattr","dir","inputNode","hintNode","borderStyle","borderWidth","lineHeight","margin","Input","HintedInput","_this$context","hintText","onAdd","selectHintOnEnter","selectionStart","_hint","readOnly","hint","backgroundColor","borderColor","boxShadow","color","WrappedInput","isFocused","persist","_handleFocus","getHintText","_cx","activeIndex","isInvalid","isValid","menuId","onChange","renderToken","aria-activedescendant","getMenuItemId","aria-autocomplete","aria-expanded","aria-haspopup","aria-owns","autoComplete","role","getInputText","_AutosizeInput2","_AutosizeInput","_Token2","_Token","_hintContainer2","_hintContainer","_inputContainer2","_inputContainer","HintedAutosizeInput","TypeaheadInputMulti","idx","_onRemove","_handleContainerClickOrFocus","blur","focus","_wrapper","lastToken","border","cursor","outline","zIndex","TypeaheadInputSingle","Highlighter","_React$PureComponent","_count","PureComponent","_renderHighlightedChildren","getMatchBounds","nonMatch","validator","WrappedMenuItem","_handleClick","onMenuItemClick","_updateInitialItem","onInitialItemChange","nextContext","currentlyActive","onActiveItemChange","_context","isOnlyResult","aria-selected","onMouseDown","preventInputBlur","_noop2","_noop","_menuItemContainer2","_menuItemContainer","BaseMenuItem","conditionalClassNames","_isRequiredForA11y2","_isRequiredForA11y","Menu","maxHeight","contents","_MenuItem","Divider","Header","_Highlighter2","_Highlighter","_Menu2","_Menu","_MenuItem2","TypeaheadMenu","_renderMenuItem","newSelectionPrefix","renderMenuItemChildren","menuItemProps","menuProps","objectCreate","LodashWrapper","chainAll","__wrapped__","__actions__","__chain__","__index__","__values__","baseCreate","baseLodash","metaMap","realNames","otherFunc","LazyWrapper","__dir__","__filtered__","__iteratees__","__takeCount__","__views__","wrapper","clone","copyArray","lodash","wrapperClone","funcName","getFuncName","getData","prereq","thru","isLaziable","plant","createFlow","idCounter","highlightOnlyResult","checkPropTypes","defaultInputValue","defaultSelected","BLACKLIST","alt","msg","arrayOf","_caseSensitiveType3","_caseSensitiveType2","_checkPropType3","_checkPropType2","_defaultInputValueType3","_defaultInputValueType2","_highlightOnlyResultType3","_highlightOnlyResultType2","_ignoreDiacriticsType3","_ignoreDiacriticsType2","_inputPropsType3","_inputPropsType2","_labelKeyType3","_labelKeyType2","_optionType3","_optionType2","_flowRight2","_flowRight","_uniqueId2","_uniqueId","_highlightOnlyResultContainer2","_highlightOnlyResultContainer","getInitialState","shownResults","getInput","_hideMenu","_handleActiveIndexChange","newState","_handleActiveItemChange","_handleClear","_updateSelected","_handleInitialItemChange","currentItem","_getInitialState","_showMenu","_handleMenuItemSelect","_handleSelectionAdd","_handlePaginate","onPaginate","selection","_this$props3","_handleSelectionRemove","_getInitialState2","_menuId","substr","genId","autoFocus","newSelected","mergedPropsAndState","paginate","paginationText","cb","defaultFilterBy","_results$push2","shouldPaginate","getTruncatedOptions","addCustomOption","getStringLabelKey","isShown","onClear","bodyContainer","_propTypes3","checkPropType","caseSensitiveType","clearButton","defaultInputValueType","optionType","highlightOnlyResultType","ignoreDiacriticsType","inputPropsType","labelKeyType","renderMenu","pluralize","_pick2","_pick","_Loader2","_Loader","_Overlay2","_Overlay","_TypeaheadInputMulti2","_TypeaheadInputMulti","_TypeaheadInputSingle2","_TypeaheadInputSingle","_TypeaheadMenu2","_TypeaheadMenu","_typeaheadContainer2","_typeaheadContainer","_renderInput","_renderAux","content","rbt-aux-lg","overlayProps","auxContent","has-aux","aria-atomic","aria-live","getAccessibilityStatus","_asyncContainer2","_asyncContainer","_Typeahead2","_Typeahead","_AsyncTypeahead3","_AsyncTypeahead2","_Highlighter3","_Menu3","_MenuItem3","_Token3","_Typeahead3","_TypeaheadMenu3","_asyncContainer3","_menuItemContainer3","_tokenContainer3","DISABLE_EDIT_CONFIG","disabledBecauseOfState","disabledStateKeys","disableable","otherProps","omit","DisableableButton","DisableableInput","form-control","input-sm","DisableableReactSelect","selectProps","Select","DisableableReactTypeahead","DisableableSelect","DisableableTextarea","textareaProps","RadioChoice","checked","AsyncRequestState","metricsServiceMetadata","loading","load","Requesting","Creators.updateDatadogMetricDescriptorFilter","nameFinder","aggFinder","changeMetricName","agg","Creators.updateDatadogMetricName","metricName","DatadogMetricTypeSelector","DatadogMetricConfigurer","Creators.updateGraphiteMetricDescriptorFilter","textDecoration","Creators.updateGraphiteMetricName","GraphiteMetricTypeSelector","GraphiteMetricConfigurer","changeSelect","Creators.updateNewRelicSelect","select","NewRelicMetricConfigurer","ListAction","updateListReducer","Add","Delete","Edit","List","list","valueKey","deleteValue","DeleteButton","AddNewButton","validateTemplateName","validation","validationInput","editingTemplate","configTemplates","editedName","errors","templateName","isNameEdited","savedTemplateNames","validateTemplateValue","editedValue","templateValue","validateTemplateInUseWarning","metricList","filterTemplate","otherMetricsUsingTemplate","m","warnings","template","PrometheusQueryType","isQueryPromQL","startsWith","prometheusQueryTypeToTransformFunction","PROMQL","fromValue","defaultEqualityCheck","areArgumentsShallowlyEqual","equalityCheck","prev","defaultMemoize","lastResult","getDependencies","dependencies","dep","dependencyTypes","createSelectorCreator","memoizeOptions","recomputations","resultFunc","memoizedResultFunc","params","resetRecomputations","selectors","selectorCreator","createSelector","objectKeys","_len3","_key3","composition","validateMetricName","nextErrors","editingMetricName","runSelector","selectedRun","judgeResultSelector","judgeResult","metricResultsSelector","canaryExecutionRequestSelector","canaryExecutionRequest","serializedCanaryConfigSelector","serializedGroupWeightsSelector","classifier","groupWeights","selectedMetricResultIdSelector","selectedMetric","selectedMetricResultSelector","selectedMetricConfigSelector","metrics","configTemplatesSelector","templates","editingTemplateSelector","resolveConfigIdFromExecutionId","executionId","ex","pipelineId","canaryConfigId","editingMetricSelector","metricListSelector","editingMetricValidationErrorsSelector","reducedErrors","queryTypeToTransformFunctions","queryTypeSelector","serviceType","queryType","customInlineTemplate","getPrometheusQueryType","transformInlineTemplateForDisplay","transformInlineTemplateForSave","selectedTemplateNameSelector","inlineTemplateValueSelector","transformer","editingTemplateValidationSelector","validateTemplate","templateValidationInput","reducedValidation","isFilterTemplateValidSelector","isInlineTemplateValidSelector","inlineTemplateQueryTypes","useInlineTemplateEditorSelector","isTemplateValidSelector","isInlineTemplate","isFilterTemplateValid","isInlineTemplateValid","PrometheusMetricTypeSelector","showAccountDropdown","selectedAccount","accountOptions","metricOptions","metricOptionsWithSelected","clearable","selectAccount","accountOptionsSelector","kayentaAccounts","accounts","chain","supportedTypes","KayentaAccountType","MetricsStore","sortBy","metricOptionsSelector","descriptors","metricsAccountName","Creators.updatePrometheusMetricDescriptorFilter","RESOURCE_TYPES","toReactSelectOptions","prometheusMetricValidationSelector","validatePrometheusMetricName","validationErrors","updateLabelBindings","Creators.updatePrometheusLabelBindings","updateGroupBy","Creators.updatePrometheusGroupBy","Creators.updatePrometheusMetricQueryField","updateFilterQueryType","Creators.editTemplateCancel","Creators.selectTemplate","Creators.editInlineTemplate","labelBindings","groupByFields","PrometheusMetricConfigurer","useTemplates","KeyValueListAction","KeyValueList","onKeyChange","KEY_EDIT","onValueChange","VALUE_EDIT","DELETE","kvPair","ADD","getSignalFxMetric","getQueryPairs","getAggregationMethod","SignalFxMetricConfigurer","updateMetricName","updateAggregationMethod","updateQueryPairs","onMetricNameChange","onAggregationMethodChange","getSignalFxValidators","validateSignalFxMetricName","validateAggregationMethod","validateQueryPairs","signalFxMetric","aggregationMethod","qp","queryPairs","sfxEditingMetricValidationErrorsSelector","Creators.updateSignalFxMetricName","Creators.updateSignalFxAggregationMethod","Creators.updateSignalFxQueryPairs","MetricField","StackdriverMetricTypeSelector","optionRenderer","Creators.updateStackdriverMetricDescriptorFilter","CROSS_SERIES_REDUCERS","PER_SERIES_ALIGNERS","GraphType","updateStackdriverQueryField","Creators.updateStackdriverMetricResourceField","Creators.updateStackdriverGroupBy","StackdriverMetricConfigurer","metricSetPairGraphService","SemioticGraphLazy","lazy","import","supportedGraphTypes","TimeSeries","Histogram","BoxPlot","handlesGraphType","getGraph","Suspense","fallback","Spinner","super_","u","N","g","prefilter","normalize","lhs","rhs","item","groupCollapsed","group","log","groupEnd","timestamp","duration","toFixed","logger","actionTransformer","titleFormatter","collapsed","colors","level","diff","started","startedTime","took","title","L","M","_","stateTransformer","errorTransformer","logErrors","diffPredicate","getHours","getMinutes","getSeconds","getMilliseconds","performance","DeepDiff","observableDiff","applyDiff","applyChange","revertChange","isConflict","noConflict","defaults","createLogger","__window","__self","WorkerGlobalScope","_root","tryCatchTarget","tryCatcher","errorObject_1","errorObject","__extends","__","_super","UnsubscriptionError","flattenUnsubscriptionErrors","errs","UnsubscriptionError_1","closed","_parent","_parents","_subscriptions","_unsubscribe","hasErrors","_a","isFunction_1","tryCatch_1","tryCatch","isArray_1","sub","isObject_1","teardown","EMPTY","_addParent","tmp","subscriptions","subscriptionIndex","empty","complete","root_1","rxSubscriber","Subscriber","destinationOrNext","syncErrorValue","syncErrorThrown","syncErrorThrowable","isStopped","destination","Observer_1","SafeSubscriber","rxSubscriber_1","subscriber","_next","_error","_complete","_unsubscribeAndRecycle","Subscription_1","_parentSubscriber","observerOrNext","__tryOrSetError","__tryOrUnsub","wrappedComplete","nextOrObserver","Subscriber_1","getSymbolObservable","$$observable","pipeFromArray","fns","noop_1","Observable","_isScalar","_subscribe","lift","operator","sink","toSubscriber_1","toSubscriber","_trySubscribe","PromiseCtor","Rx","reject","observable_1","pipe","operations","pipe_1","toPromise","ObjectUnsubscribedError","SubjectSubscription","observers","subscriberIndex","SubjectSubscriber","Subject","hasError","thrownError","AnonymousSubject","ObjectUnsubscribedError_1","copy","SubjectSubscription_1","asObservable","Observable_1","project","MapOperator","MapSubscriber","map_1","OuterSubscriber","notifyNext","outerValue","innerValue","outerIndex","innerIndex","innerSub","notifyError","notifyComplete","symbolIteratorPonyfill","Set_1","Map_1","InnerSubscriber","outerSubscriber","InnerSubscriber_1","isArrayLike_1","isPromise_1","isPromise","iterator_1","obs","resultSelector","SwitchMapOperator","SwitchMapSubscriber","_innerSub","innerSubscription","subscribeToResult_1","subscribeToResult","_tryNotifyNext","OuterSubscriber_1","switchMap_1","switchMap","ScalarObservable","scheduler","schedule","EmptyObservable","ArrayObservable","of","isScheduler_1","isScheduler","ScalarObservable_1","EmptyObservable_1","ArrayObservable_1","dispatchNext","dispatchError","PromiseObservable","promise","IteratorObservable","getIterator","return","StringIterator","ArrayIterator","valueAsNumber","sign","abs","maxSafeInteger","toLength","pow","ArrayLikeObservable","arrayLike","Notification","hasValue","observe","observer","do","accept","toObservable","createNext","undefinedValueNotification","createError","createComplete","completeNotification","ObserveOnOperator","ObserveOnSubscriber","notification","scheduleMessage","ObserveOnMessage","Notification_1","FromObservable","ish","PromiseObservable_1","IteratorObservable_1","ArrayLikeObservable_1","observeOn_1","FilterOperator","FilterSubscriber","filter_1","ActionsObservable","_Observable","actionsSubject","_of","actions","_from","EPIC_END","defaultOptions","adapter","action$","output","concurrent","Number","POSITIVE_INFINITY","MergeMapOperator","MergeMapSubscriber","hasCompleted","_tryNext","_notifyResultSelector","mergeMap_1","mergeMap","identity_1","mergeStatic","observables","last","mergeAll_1","mergeAll","merge_1","merge","from_1","concatAll_1","concatAll","of_1","concat_1","ForkJoinObservable","sources","ForkJoinSubscriber","completed","haveValues","total","_hasValue","forkJoin","forkJoin_1","fromPromise","fromPromise_1","CatchOperator","caught","CatchSubscriber","err2","catchError_1","catchError","catch","catch_1","_catch","concatMap_1","concatMap","Action","work","AsyncAction","pending","recycleAsyncId","requestAsyncId","setInterval","clearInterval","execute","_execute","errored","errorValue","Action_1","Scheduler","SchedulerAction","AsyncScheduler","Scheduler_1","AsyncAction_1","dueTime","async_1","async","DebounceTimeOperator","DebounceTimeSubscriber","debouncedSubscription","lastValue","clearDebounce","debouncedNext","debounceTime_1","debounceTime","MapToOperator","MapToSubscriber","mapTo_1","mapTo","typeMatches","epicMiddleware","epic","input$","epic$","_store","output$","replaceEpic","createEpicMiddleware","epics","combineEpics","getCanaryConfigById","Creators.loadConfigSuccess","Creators.loadConfigFailure","Creators.selectConfig","mapStateToConfig","saveAction","isNew","createCanaryConfig","updateCanaryConfig","ReactInjector","$state","go","new","application","getDataSource","refresh","Creators.saveConfigSuccess","Creators.saveConfigFailure","deleteCanaryConfig","Creators.deleteConfigSuccess","Creators.deleteConfigFailure","Creators.closeDeleteConfigModal","getCanaryRun","configId","runId","Creators.loadRunSuccess","Creators.loadRunFailure","getMetricSetPair","metricSetPairListId","pairId","metricSetPair","Creators.loadMetricSetPairSuccess","Creators.loadMetricSetPairFailure","account","Creators.loadMetricsServiceMetadataRequest","metricsStoreType","REST","listMetricsServiceMetadata","Creators.loadMetricsServiceMetadataSuccess","Creators.loadMetricsServiceMetadataFailure","listKayentaAccounts","Creators.loadKayentaAccountsSuccess","Creators.loadKayentaAccountsFailure","JudgeSelectRenderState","judgeOptions","judges","judge","selectedJudge","judgeConfig","renderState","handleJudgeSelect","Creators.selectJudgeName","Multiple","Single","None","ace","define","acequire","dom","lang","HashHandler","keyUtil","importCssString","SearchBox","editor","showReplaceForm","div","innerHTML","firstChild","setSession","$init","setEditor","searchBox","renderer","scroller","searchRange","$syncOptions","$initElements","sb","replaceBox","searchOption","replaceOption","regExpOption","caseSensitiveOption","wholeWordOption","searchInput","replaceInput","searchCounter","addListener","activeInput","srcElement","getAttribute","$searchBarKb","commands","addCommandKeyListener","hashId","keyString","keyCodeToString","command","findKeyCommand","stopEvent","$onChange","delayedCall","highlight","$closeSearchBarKb","bindKey","bindKeys","Ctrl-f|Command-f","isReplace","Ctrl-H|Command-Option-F","Ctrl-G|Command-G","findNext","Ctrl-Shift-G|Command-Shift-G","findPrev","esc","Return","Shift-Return","Alt-Return","replaceAll","findAll","Tab","addCommands","win","mac","setSearchRange","getSelectionRange","searchRangeMarker","session","addMarker","removeMarker","preventScroll","setCssClass","textContent","re","$search","$options","updateBackMarkers","skipCurrent","backwards","noMatch","regExp","wholeWord","_emit","updateCounter","regex","all","before","getTextRange","doc","positionToIndex","anchor","MAX_COUNT","getReadOnly","replaceAndFindNext","keyBinding","removeKeyboardHandler","addKeyboardHandler","activeElement","Search","Tabs","oop","TextHighlightRules","JsonHighlightRules","$rules","token","defaultToken","comment","inherits","Range","MatchingBraceOutdent","checkOutdent","line","autoOutdent","getLine","column","openBracePos","findMatchingBracket","indent","$getIndent","BaseFoldMode","FoldMode","commentRegex","foldingStartMarker","foldingStopMarker","singleLineBlockCommentRe","tripleStarBlockCommentRe","startRegionRe","_getFoldWidgetBase","getFoldWidget","foldStyle","fw","getFoldWidgetRange","forceMultiline","getCommentRegionBlock","openingBracketBlock","getCommentFoldRange","isMultiLine","getSectionRange","closingBracketBlock","startIndent","startRow","startColumn","endRow","maxRow","getLength","subRange","TextMode","Mode","HighlightRules","CstyleBehaviour","CStyleFoldMode","WorkerClient","$outdent","$behaviour","foldingRules","getNextLineIndent","tab","createWorker","worker","attachToDocument","getDocument","setAnnotations","clearAnnotations","$id","ConfigJsonModalTabState","persistedConfig","JsonUtils","makeSortedStringFromObject","configs","configJson","json","app","configJsonModalOpen","deserializationError","tabState","configJsonModalTabState","closeModal","Creators.closeConfigJsonModal","setTabState","Creators.setConfigJsonModalTabState","Creators.setConfigJson","updateConfig","dataset","parse","serialized","Modal","onHide","Styleguide","Title","Body","Diff","JsonEditor","debounceChangePeriod","DiffView","Footer","executionsCount","set_executions_count","_state","defaultExecutionCount","executionsCountOptions","deleteConfigModalOpen","delete_config_modal_open","config_json_modal_open","set_config_json_modal_tab_state","disableConfigEdit","initialize","configSummaries","update_config_summaries","load_config_success","without","update_judges","executions","load_executions_success","load_executions_request","Fulfilled","load_executions_failure","Failed","load_metrics_service_metadata_request","load_metrics_service_metadata_success","load_metrics_service_metadata_failure","update_prometheus_metric_type","update_stackdriver_metric_type","metricType","update_datadog_metric_type","update_newrelic_select","update_graphite_metric_name","edit_metric_begin","load_kayenta_accounts_request","load_kayenta_accounts_success","load_kayenta_accounts_failure","edit","handleUpdate","Creators.editGroupUpdate","handleSubmit","Creators.editGroupConfirm","currentTarget","editing","defaultGroup","onSubmit","groupList","selectedGroup","Creators.selectGroup","Creators.addGroup","Creators.editGroupBegin","GroupTab","editable","GroupName","edit_template_begin","edit_template_cancel","add_template","groups","groupsFromMetrics","add_group","select_group","update_group_weight","weight","edit_group_name_begin","edit_group_name_update","updateLabelBindingsReducer","updateGroupByReducer","prometheusMetricConfigReducer","update_prometheus_metric_query_field","update_prometheus_label_bindings","update_prometheus_group_by_fields","updateQueryPairsReducer","signalFxMetricConfigReducer","update_signalfx_query_pairs","update_signalfx_metric_name","update_signalfx_aggregation_method","stackdriverMetricConfigReducer","update_stackdriver_group_by_fields","update_stackdriver_metric_query_field","update_config_name","update_config_description","description","delete_template","load_config_request","load_config_failure","idMetrics","deletedTemplateName","customFilterTemplate","removeDeletedTemplateFromMetric","rename_metric","update_metric_direction","cloneDeep","direction","update_metric_nan_strategy","strategy","unset","update_metric_criticality","critical","update_effect_size","update_metric_group","update_atlas_query","q","update_datadog_metric_name","select_template","update_metric_scope_name","scopeName","edit_inline_template","save","save_config_request","save_config_failure","delete_config_request","delete_config_success","delete_config_failure","set_config_json","select_judge_name","toGroup","change_metric_group_select","change_metric_group","isInSyncWithServer","editingMetricReducer","selectedJudgeReducer","defaultJudge","judgeConfigurations","editGroupConfirmReducer","allGroups","flatMap","weights","weightsUpdater","changeMetricGroupConfirmReducer","metricId","updateGroupWeightsReducer","uniq","pick","fromPairs","editingTemplateConfirmReducer","metricUpdater","combined","selectedStore","metricFilters","toggle_metric_classification_filter","classification","load_run_request","load_run_failure","pair","load_metric_set_pair_request","load_metric_set_pair_success","load_metric_set_pair_failure","graphType","select_graph_type","isConfigNameUnique","pattern","isConfigNameValid","isGroupWeightsSumValid","sumOfWeights","sum","isEveryGroupWeightValid","isEveryQueriedMetricStoreAvailable","available","unavailableQueried","areMultipleMetricStoresQueried","validationErrorsReducer","createValidationReducer","configValidationErrors","getRenderState","judgeRenderStateReducer","isInSyncWithServerReducer","editedConfig","originalConfig","isEqual","selectedMetricReducer","resolveSelectedMetricId","asyncDispatch","Creators.loadMetricSetPairRequest","selectedMetricStoreReducer","stores","metricStore","disableConfigEditReducer","applications","middleware","newConfig","buildNewConfig","newAction","copiedConfig","buildConfigCopy","syncActivityFinished","actionQueue","flushQueue","nextAction","canaryStore","createStore","preloadedState","enhancer","currentReducer","currentState","currentListeners","nextListeners","isDispatching","ensureCanMutateNextListeners","replaceReducer","outerSubscribe","observeState","middlewares","_dispatch","middlewareAPI","applyMiddleware","reduxLogger","Canary","initializeAppState","UIView","LoadStatesBuilder","fulfilled","failed","FormattedDate","dateIso","getTime","UISref","to","Creators.openConfigJsonModal","ConfigJsonModal","selectedConfigName","deleteConfigState","deleteConfigErrorMessage","Creators.deleteConfig","buildErrorMessage","Creators.openDeleteConfigModal","DeleteConfigModal","ConfigDetailActionButtons","OpenEditConfigJsonModalButton","CopyConfigButton","OpenDeleteModalButton","EditingDisabledWarning","owners","owner","Fragment","getOwnerAppLinks","editingDisabled","updatedTimestampIso","analysisConfigurations","canary","effectSizes","effectSize","Creators.updateEffectSize","showEffectSizes","setShowEffectSizes","useState","allowEditMeasurementType","measure","isCles","defaultSize","allowedIncrease","criticalIncrease","allowedDecrease","criticalDecrease","updateMeasure","fromPercent","percent","endsWith","toPercent","normalized","clesLabel","buildInput","robotToHuman","newEffectSizes","updateSize","expand","FilterTemplateSelector","templateOptions","requestingNew","editedTemplateName","editedTemplateValue","selectedTemplateName","isEditing","Creators.deleteTemplate","Creators.editTemplateBegin","Creators.editTemplateConfirm","Creators.editTemplateName","Creators.editTemplateValue","Creators.addTemplate","transformValueForSave","metricStoreConfigService","getDelegate","MetricConfigurer","isTemplateValid","useInlineTemplateEditor","disableEdit","rename","Creators.renameMetric","changeGroup","Creators.updateMetricGroup","Creators.editMetricCancel","confirm","Creators.editMetricConfirm","updateDirection","Creators.updateMetricDirection","updateNanStrategy","Creators.updateMetricNanStrategy","updateCriticality","Creators.updateMetricCriticality","nanStrategy","isConfirmDisabled","metricGroup","templatesEnabled","EditMetricEffectSizes","MetricConfigurerDelegator","InlineTemplateEditor","TitledSection","Creators.changeMetricGroupSelect","Creators.changeMetricGroupConfirm","FailOn","isCritical","tooltipSuffix","Tooltip","showGroups","changingGroupMetric","Creators.addMetric","copyMetric","metricCopy","editMetric","Creators.editMetricBegin","Creators.removeMetric","openChangeMetricGroupModal","Creators.changeMetricGroup","NativeTable","ChangeMetricGroupModal","FormList","Creators.selectMetricStore","changeName","Creators.updateConfigName","changeDescription","Creators.updateConfigDescription","MetricStoreSelector","TitledSubsection","helpKey","handleInputChange","Creators.updateGroupWeight","groupWeight","getGroupWeights","isNumber","hasGroups","GroupWeight","renderJudgeSelect","JudgeSelect","GroupWeights","ConfigDetail","ConfigDetailHeader","NameAndDescription","GroupTabs","MetricList","EditMetricModal","Scoring","CenteredDetail","configLoadState","LoadStates","onFulfilled","onFailed","build","ConfigDetailLoader","configNameStream","loadConfig","ConfigDetailLoadStates","stateParams","Creators.copySelectedConfig","Creators.createNewConfig","Creators.loadConfigRequest","UUIDGenerator","generateUuid","OwnedBy","owningApplications","currentApplication","ownedBy","selectedConfigId","wordBreak","CreateConfigButton","ListDetail","listWidth","detailWidth","listClass","detailClass","CanaryConfigEdit","ConfigList","noWrap","Detail","disable","saveConfigState","inSyncWithServer","Creators.saveConfig","SubmitButton","isDisabled","submitting","saveConfigErrorMessage","dismissError","Creators.dismissSaveConfigError","HoverablePopover","Save","ValidationErrors","SaveConfigError","SaveConfigButton","SelectConfig","resolveReportUrl","canaryRunId","url","SETTINGS","gateUrl","storageAccountName","resolveMetricListUrl","status","reportUrl","metricListUrl","Label","extraClass","thresholds","marginal","pass","metadataGroups","request","scopes","controlScope","controlLocation","scope","experimentScope","experimentStart","experimentEnd","experimentLocation","popover","mins","buildScopeMetadataEntries","SourceLinks","mapKayentaToACA","score","ScoreClassificationLabel","Pass","health","Fail","showClassification","inverse","CanaryScore","ReportScore","ReportMetadata","GRAPH_IMPLEMENTATIONS","candidate","Graph","Creators.selectGraphType","paddingLeft","metricConfig","atlasURL","tags","atlasGraphBaseUrl","legendTags","backend","encodeURIComponent","control","baseURL","experiment","startTime","startTimeMillis","controlEndTime","stepMillis","experimentEndTime","buildAtlasGraphUrl","atlasQuery","CopyToClipboard","displayText","toolTip","getStats","experimentMetadata","stats","controlMetadata","ResultMetadataRow","service","tableColumns","startTimeIso","configuredControlStart","actualControlStart","configuredExperimentStart","actualExperimentStart","mean","metadataRows","classificationReason","GraphTypeSelector","MetricResultActions","MetricResultStats","MetricResultDetailLayout","MetricSetPairLoadStates","toggle","Creators.toggleMetricClassificationFilter","checkboxes","MetricClassificationLabel","High","Low","Nodata","GREEN","RED","GREY","YELLOW","mapMetricClassificationToColor","mapGroupToColor","scoreThresholds","buildStyle","ratio","formatDeviationAsPercentage","metricResultsColumns","BreakString","resultMetadata","MetricResultDeviation","MetricResultClassification","selectedResult","Creators.selectReportMetric","buildRowForMetricWithMultipleResults","hasMultipleRows","MultipleResultsTable","unfilteredCounts","tableRowsByMetricName","buildTableRows","MetricFilters","metricResults","selectedMetricResult","MetricResultsList","MetricResultDetail","exception","errorMessages","details","getReason","arrowColor","borderTopColor","HeaderArrow","Creators.selectReportMetricGroup","ClickableHeader","groupScores","clearSelectedGroup","isExpanded","toggleHeader","chevronStyle","transition","AllMetricResultsHeader","GroupScores","setIsExpanded","ReportException","ReportHeader","ReportExplanation","ReportScores","MetricResults","loadState","ReportDetail","ResultDetailLoader","resultIdStream","loadResult","ReportDetailLoadStates","Creators.loadRunRequest","prometheus","stackdriver","ManualAnalysisModal","endTime","baselineScope","canaryScope","baselineLocation","canaryLocation","marginalThreshold","passThreshold","executionRequest","metricsAccount","accountSpecificParams","resourceType","extendedScopeParams","transformFormPropsToExecutionRequest","startCanaryRun","setSubmitting","setStatus","succeeded","initialValues","selectedMetricsStore","recommendedLocations","showAllControlLocations","showAllExperimentLocations","ReactModal","dialogClassName","dismissModal","canaryConfigs","localeCompare","metricsStores","objectStores","ObjectStore","showAdvancedSettings","Formik","submit","isInitialValid","touched","isSubmitting","setFieldValue","setFieldTouched","ModalClose","dismiss","selectedObjectStore","locations","hasLocationChoices","Form","TetheredSelect","ValidatedField","LocationField","showAll","onShowAllChange","ErrorMessage","MapEditor","model","CanaryScores","unhealthyScore","successfulScore","successfulHelpFieldId","successfulLabel","unhealthyHelpFieldId","unhealthyLabel","AdvancedSettings","SubmitFormButton","button","isFormSubmit","combineLocations","includeAll","Field","required","configName","sref","useSref","PipelineLink","parentPipelineExecutionId","getScopeLocations","acc","isAtlas","isAtlasScope","baseColumns","execution","ReportLink","Score","relativeTime","ConfigLink","baselineScopeNames","canaryScopeNames","maxWidth","getTableColumns","manualAnalysisEnabled","rerunAnalysis","TableRows","loaded","updateExecutionsCount","useEffect","dataSource","activate","deactivate","countOptions","alignSelf","flexShrink","startManualAnalysis","ExecutionListTable","applicationState","uiRouter","stateRegistry","$uiRouter","stub","deregister","applicationStateProvider","views","component","$type","footer","CanaryConfigSave","squash","deps","UIRouter","resolveFn","globals","params$","redirectTo","reportDetail","reportDefault","ExecutionListLoadStates","report","Report","canaryRoot","abstract","insight","pageTitleSection","addChildState","registerStates","transitionService","onBefore","Creators.clearSelectedConfig","$rootScope","$on","onEnter","onbeforeunload","onExit","onSuccess","Creators.setExecutionsCount","afterConfigsLoaded","Creators.updateConfigSummaries","afterJudgesLoaded","Creators.updateJudges","loadCanaryExecutions","listExecutionsRequest","listCanaryExecutions","Creators.loadExecutionsFailure","afterCanaryExecutionsLoaded","Creators.loadExecutionsSuccess"],"mappings":"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sCrBmM,GAA0BnM,G3ErCE,6B2EsC5BoM,GAAoBpM,G3E9DE,uB2E+DtBqM,GAAsBrM,G3ElEE,yB2EmExBsM,GAAwBtM,G3E5CE,2B2E+C1BuM,GAAevM,G3EhCC,iB2EiChBwM,GAAoBxM,G3E3EE,uB2E4EtByM,GAAoBzM,G3E3EE,uB2E4EtB0M,GAAqB1M,G3E3BE,wB2E4BvB2M,GAAkB3M,G3E3BE,qB2E4BpB4M,GAAiB5M,G3E3BE,yB2E4BnB6M,GAAkB7M,G3E1BE,0B2E2BpB8M,GAAmB9M,G3E5BE,2B2E6BrB+M,GAA0B/M,G3E1BG,8B2E2B7BgN,GAA2BhN,GAAmCiN,IAC9DC,GAAiBlN,G3E1BE,oB2E2BnBmN,GAAiBnN,GAAoDoN,IACrEC,GAAiBrN,G3E1BE,oB2E2BnBsN,GAA0BtN,GAAgCuN,IAC1DC,GAAqBxN,GAAmCyN,IACxDC,GAA2B1N,G3EzBI,gC2E0B/B2N,GAA2B3N,G3EzBI,gC2E4B/B4N,GAA2B5N,G3E3BI,gC2E4B/B6N,GAAc7N,G3E3BC,gB2E4Bf8N,GAAoB9N,G3E3BE,uB2E4BtB+N,GAAsB/N,G3E1BE,yB2E2BxBgO,GAAqBhO,G3E5BE,wB2E6BvBiO,GAAmBjO,G3E3BE,sB2E4BrBkO,GAAoBlO,G3E3BE,uB2E4BtBmO,GAAqBnO,G3EzBE,wB2E0BvBoO,GAAgCpO,G3EhEG,oC2EiEnCqO,GAA0BrO,G3EhEU,qC2EiEpCsO,GAAmCtO,G3EnEI,wC2EuEvCuO,GAA2BvO,G3ElEU,sC2EmErCwO,GAAiBxO,G3EnCC,mB2EoClByO,GAAiBzO,G3EnCC,mB2EoClB0O,GAAoB1O,G3EvDE,uB2EwDtB2O,GAAoC3O,G3EnCI,yC2EsCxC4O,GAAoC5O,G3ErCI,yC2EwCxC6O,GAAoC7O,G3EvCI,yC2E0CxC8O,GAAyC9O,G3EzCI,8C2E4C7C+O,GAAuC/O,G3E3CI,4C2E8C3CgP,GAA0ChP,G3E7CI,+C2EgD9CiP,GAAsCjP,G3E/CI,2C2EkD1CkP,GAAuClP,G3E5FC,yC2EgGxCmP,GAA0BnP,G3ExFG,8B2EyF7BoP,GAAuBpP,G3ExFE,0B2EyFDA,G3EvDE,2B2EwDh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"}