{"version":3,"sources":["../node_modules/react/index.js","../node_modules/@redux-saga/core/dist/redux-saga-effects.esm.js","../node_modules/office-ui-fabric-react/node_modules/tslib/tslib.es6.js","../node_modules/react-redux/es/components/Context.js","../node_modules/react-redux/es/utils/batch.js","../node_modules/react-redux/es/utils/Subscription.js","../node_modules/react-redux/es/utils/useIsomorphicLayoutEffect.js","../node_modules/react-redux/es/components/Provider.js","../node_modules/react-redux/es/components/connectAdvanced.js","../node_modules/react-redux/es/utils/shallowEqual.js","../node_modules/react-redux/es/connect/wrapMapToProps.js","../node_modules/react-redux/es/connect/mapDispatchToProps.js","../node_modules/react-redux/es/utils/bindActionCreators.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","../node_modules/react-redux/es/hooks/useReduxContext.js","../node_modules/react-redux/es/hooks/useStore.js","../node_modules/react-redux/es/hooks/useDispatch.js","../node_modules/react-redux/es/hooks/useSelector.js","../node_modules/react-redux/es/index.js","../__DynamicConstants.js","../HelperFuncs.js","../node_modules/recharts/es6/util/DataUtils.js","../InternalConstants.js","../node_modules/yup/node_modules/lodash-es/_baseHas.js","../node_modules/yup/node_modules/lodash-es/isArray.js","../node_modules/yup/node_modules/lodash-es/_Symbol.js","../node_modules/yup/node_modules/lodash-es/_getRawTag.js","../node_modules/yup/node_modules/lodash-es/_objectToString.js","../node_modules/yup/node_modules/lodash-es/_baseGetTag.js","../node_modules/yup/node_modules/lodash-es/isObjectLike.js","../node_modules/yup/node_modules/lodash-es/isSymbol.js","../node_modules/yup/node_modules/lodash-es/_isKey.js","../node_modules/yup/node_modules/lodash-es/isObject.js","../node_modules/yup/node_modules/lodash-es/isFunction.js","../node_modules/yup/node_modules/lodash-es/_coreJsData.js","../node_modules/yup/node_modules/lodash-es/_isMasked.js","../node_modules/yup/node_modules/lodash-es/_toSource.js","../node_modules/yup/node_modules/lodash-es/_baseIsNative.js","../node_modules/yup/node_modules/lodash-es/_getValue.js","../node_modules/yup/node_modules/lodash-es/_getNative.js","../node_modules/yup/node_modules/lodash-es/_nativeCreate.js","../node_modules/yup/node_modules/lodash-es/_hashClear.js","../node_modules/yup/node_modules/lodash-es/_hashDelete.js","../node_modules/yup/node_modules/lodash-es/_hashGet.js","../node_modules/yup/node_modules/lodash-es/_hashHas.js","../node_modules/yup/node_modules/lodash-es/_hashSet.js","../node_modules/yup/node_modules/lodash-es/_Hash.js","../node_modules/yup/node_modules/lodash-es/_listCacheClear.js","../node_modules/yup/node_modules/lodash-es/eq.js","../node_modules/yup/node_modules/lodash-es/_assocIndexOf.js","../node_modules/yup/node_modules/lodash-es/_listCacheDelete.js","../node_modules/yup/node_modules/lodash-es/_listCacheGet.js","../node_modules/yup/node_modules/lodash-es/_listCacheHas.js","../node_modules/yup/node_modules/lodash-es/_listCacheSet.js","../node_modules/yup/node_modules/lodash-es/_ListCache.js","../node_modules/yup/node_modules/lodash-es/_Map.js","../node_modules/yup/node_modules/lodash-es/_mapCacheClear.js","../node_modules/yup/node_modules/lodash-es/_isKeyable.js","../node_modules/yup/node_modules/lodash-es/_getMapData.js","../node_modules/yup/node_modules/lodash-es/_mapCacheDelete.js","../node_modules/yup/node_modules/lodash-es/_mapCacheGet.js","../node_modules/yup/node_modules/lodash-es/_mapCacheHas.js","../node_modules/yup/node_modules/lodash-es/_mapCacheSet.js","../node_modules/yup/node_modules/lodash-es/_MapCache.js","../node_modules/yup/node_modules/lodash-es/memoize.js","../node_modules/yup/node_modules/lodash-es/_memoizeCapped.js","../node_modules/yup/node_modules/lodash-es/_stringToPath.js","../node_modules/yup/node_modules/lodash-es/_arrayMap.js","../node_modules/yup/node_modules/lodash-es/_baseToString.js","../node_modules/yup/node_modules/lodash-es/toString.js","../node_modules/yup/node_modules/lodash-es/_castPath.js","../node_modules/yup/node_modules/lodash-es/_baseIsArguments.js","../node_modules/yup/node_modules/lodash-es/isArguments.js","../node_modules/yup/node_modules/lodash-es/_isIndex.js","../node_modules/yup/node_modules/lodash-es/isLength.js","../node_modules/yup/node_modules/lodash-es/_toKey.js","../node_modules/yup/node_modules/lodash-es/_hasPath.js","../node_modules/yup/node_modules/lodash-es/has.js","../node_modules/yup/node_modules/lodash-es/_stackClear.js","../node_modules/yup/node_modules/lodash-es/_stackDelete.js","../node_modules/yup/node_modules/lodash-es/_stackGet.js","../node_modules/yup/node_modules/lodash-es/_stackHas.js","../node_modules/yup/node_modules/lodash-es/_stackSet.js","../node_modules/yup/node_modules/lodash-es/_Stack.js","../node_modules/yup/node_modules/lodash-es/_arrayEach.js","../node_modules/yup/node_modules/lodash-es/_defineProperty.js","../node_modules/yup/node_modules/lodash-es/_baseAssignValue.js","../node_modules/yup/node_modules/lodash-es/_assignValue.js","../node_modules/yup/node_modules/lodash-es/_copyObject.js","../node_modules/yup/node_modules/lodash-es/_baseTimes.js","../node_modules/yup/node_modules/lodash-es/_baseIsTypedArray.js","../node_modules/yup/node_modules/lodash-es/_baseUnary.js","../node_modules/yup/node_modules/lodash-es/isTypedArray.js","../node_modules/yup/node_modules/lodash-es/_arrayLikeKeys.js","../node_modules/yup/node_modules/lodash-es/_isPrototype.js","../node_modules/yup/node_modules/lodash-es/_overArg.js","../node_modules/yup/node_modules/lodash-es/_nativeKeys.js","../node_modules/yup/node_modules/lodash-es/_baseKeys.js","../node_modules/yup/node_modules/lodash-es/isArrayLike.js","../node_modules/yup/node_modules/lodash-es/keys.js","../node_modules/yup/node_modules/lodash-es/_baseAssign.js","../node_modules/yup/node_modules/lodash-es/_nativeKeysIn.js","../node_modules/yup/node_modules/lodash-es/_baseKeysIn.js","../node_modules/yup/node_modules/lodash-es/keysIn.js","../node_modules/yup/node_modules/lodash-es/_baseAssignIn.js","../node_modules/yup/node_modules/lodash-es/_copyArray.js","../node_modules/yup/node_modules/lodash-es/_arrayFilter.js","../node_modules/yup/node_modules/lodash-es/stubArray.js","../node_modules/yup/node_modules/lodash-es/_getSymbols.js","../node_modules/yup/node_modules/lodash-es/_copySymbols.js","../node_modules/yup/node_modules/lodash-es/_arrayPush.js","../node_modules/yup/node_modules/lodash-es/_getPrototype.js","../node_modules/yup/node_modules/lodash-es/_getSymbolsIn.js","../node_modules/yup/node_modules/lodash-es/_copySymbolsIn.js","../node_modules/yup/node_modules/lodash-es/_baseGetAllKeys.js","../node_modules/yup/node_modules/lodash-es/_getAllKeys.js","../node_modules/yup/node_modules/lodash-es/_getAllKeysIn.js","../node_modules/yup/node_modules/lodash-es/_DataView.js","../node_modules/yup/node_modules/lodash-es/_Promise.js","../node_modules/yup/node_modules/lodash-es/_Set.js","../node_modules/yup/node_modules/lodash-es/_WeakMap.js","../node_modules/yup/node_modules/lodash-es/_getTag.js","../node_modules/yup/node_modules/lodash-es/_initCloneArray.js","../node_modules/yup/node_modules/lodash-es/_Uint8Array.js","../node_modules/yup/node_modules/lodash-es/_cloneArrayBuffer.js","../node_modules/yup/node_modules/lodash-es/_cloneDataView.js","../node_modules/yup/node_modules/lodash-es/_cloneRegExp.js","../node_modules/yup/node_modules/lodash-es/_cloneSymbol.js","../node_modules/yup/node_modules/lodash-es/_cloneTypedArray.js","../node_modules/yup/node_modules/lodash-es/_initCloneByTag.js","../node_modules/yup/node_modules/lodash-es/_baseCreate.js","../node_modules/yup/node_modules/lodash-es/_initCloneObject.js","../node_modules/yup/node_modules/lodash-es/_baseIsMap.js","../node_modules/yup/node_modules/lodash-es/isMap.js","../node_modules/yup/node_modules/lodash-es/_baseIsSet.js","../node_modules/yup/node_modules/lodash-es/isSet.js","../node_modules/yup/node_modules/lodash-es/_baseClone.js","../node_modules/yup/node_modules/lodash-es/cloneDeepWith.js","../node_modules/yup/node_modules/lodash-es/isString.js","../node_modules/yup/node_modules/lodash-es/_iteratorToArray.js","../node_modules/yup/node_modules/lodash-es/_mapToArray.js","../node_modules/yup/node_modules/lodash-es/_setToArray.js","../node_modules/yup/node_modules/lodash-es/_asciiToArray.js","../node_modules/yup/node_modules/lodash-es/_hasUnicode.js","../node_modules/yup/node_modules/lodash-es/_unicodeToArray.js","../node_modules/yup/node_modules/lodash-es/_stringToArray.js","../node_modules/yup/node_modules/lodash-es/_baseValues.js","../node_modules/yup/node_modules/lodash-es/values.js","../node_modules/yup/node_modules/lodash-es/toArray.js","../node_modules/yup/es/util/printValue.js","../node_modules/yup/es/locale.js","../node_modules/yup/es/util/isSchema.js","../node_modules/yup/es/Condition.js","../node_modules/yup/es/ValidationError.js","../node_modules/yup/es/util/async.js","../node_modules/yup/es/util/runTests.js","../node_modules/yup/es/util/prependDeep.js","../node_modules/yup/node_modules/lodash-es/_createBaseFor.js","../node_modules/yup/node_modules/lodash-es/_baseFor.js","../node_modules/yup/node_modules/lodash-es/_baseForOwn.js","../node_modules/yup/node_modules/lodash-es/_setCacheAdd.js","../node_modules/yup/node_modules/lodash-es/_setCacheHas.js","../node_modules/yup/node_modules/lodash-es/_SetCache.js","../node_modules/yup/node_modules/lodash-es/_arraySome.js","../node_modules/yup/node_modules/lodash-es/_cacheHas.js","../node_modules/yup/node_modules/lodash-es/_equalArrays.js","../node_modules/yup/node_modules/lodash-es/_equalByTag.js","../node_modules/yup/node_modules/lodash-es/_equalObjects.js","../node_modules/yup/node_modules/lodash-es/_baseIsEqualDeep.js","../node_modules/yup/node_modules/lodash-es/_baseIsEqual.js","../node_modules/yup/node_modules/lodash-es/_baseIsMatch.js","../node_modules/yup/node_modules/lodash-es/_isStrictComparable.js","../node_modules/yup/node_modules/lodash-es/_getMatchData.js","../node_modules/yup/node_modules/lodash-es/_matchesStrictComparable.js","../node_modules/yup/node_modules/lodash-es/_baseMatches.js","../node_modules/yup/node_modules/lodash-es/_baseGet.js","../node_modules/yup/node_modules/lodash-es/get.js","../node_modules/yup/node_modules/lodash-es/_baseHasIn.js","../node_modules/yup/node_modules/lodash-es/hasIn.js","../node_modules/yup/node_modules/lodash-es/_baseMatchesProperty.js","../node_modules/yup/node_modules/lodash-es/identity.js","../node_modules/yup/node_modules/lodash-es/_baseProperty.js","../node_modules/yup/node_modules/lodash-es/_basePropertyDeep.js","../node_modules/yup/node_modules/lodash-es/property.js","../node_modules/yup/node_modules/lodash-es/_baseIteratee.js","../node_modules/yup/node_modules/lodash-es/mapValues.js","../node_modules/yup/es/Reference.js","../node_modules/yup/es/util/createValidation.js","../node_modules/yup/es/util/reach.js","../node_modules/yup/es/mixed.js","../node_modules/yup/es/util/inherits.js","../node_modules/yup/es/util/isAbsent.js","../node_modules/yup/es/boolean.js","../node_modules/yup/es/string.js","../node_modules/yup/es/number.js","../node_modules/yup/es/util/isodate.js","../node_modules/yup/es/date.js","../node_modules/yup/node_modules/lodash-es/_arrayReduce.js","../node_modules/yup/node_modules/lodash-es/_basePropertyOf.js","../node_modules/yup/node_modules/lodash-es/_deburrLetter.js","../node_modules/yup/node_modules/lodash-es/deburr.js","../node_modules/yup/node_modules/lodash-es/_asciiWords.js","../node_modules/yup/node_modules/lodash-es/_hasUnicodeWord.js","../node_modules/yup/node_modules/lodash-es/_unicodeWords.js","../node_modules/yup/node_modules/lodash-es/words.js","../node_modules/yup/node_modules/lodash-es/_createCompounder.js","../node_modules/yup/node_modules/lodash-es/snakeCase.js","../node_modules/yup/node_modules/lodash-es/_baseSlice.js","../node_modules/yup/node_modules/lodash-es/_castSlice.js","../node_modules/yup/node_modules/lodash-es/_createCaseFirst.js","../node_modules/yup/node_modules/lodash-es/upperFirst.js","../node_modules/yup/node_modules/lodash-es/capitalize.js","../node_modules/yup/node_modules/lodash-es/camelCase.js","../node_modules/yup/node_modules/lodash-es/mapKeys.js","../node_modules/yup/es/util/sortFields.js","../node_modules/yup/es/util/sortByKeyOrder.js","../node_modules/yup/es/object.js","../node_modules/yup/es/array.js","../node_modules/yup/es/Lazy.js","../../src/keyframes.ts","../../src/motion/AnimationStyles.ts","../../src/classNames/AnimationClassNames.ts","../../src/fonts/FluentFonts.ts","../../src/utilities/buildClassMap.ts","../../src/styles/CommonStyles.ts","../../src/styles/zIndexes.ts","../../src/styles/getFocusStyle.ts","../../src/styles/hiddenContentStyle.ts","../../src/styles/getGlobalClassNames.ts","../node_modules/@uifabric/styling/node_modules/tslib/tslib.es6.js","../../src/effects/FluentDepths.ts","../../src/colors/DefaultPalette.ts","../../src/effects/DefaultEffects.ts","../../src/fontFace.ts","../../src/fonts/createFontStyles.ts","../../src/language.ts","../../src/fonts/DefaultFontStyles.ts","../../src/localStorage.ts","../../src/merge.ts","../node_modules/@fluentui/theme/node_modules/tslib/tslib.es6.js","../../src/utilities/makeSemanticColors.ts","../../src/spacing/DefaultSpacing.ts","../../src/createTheme.ts","../../src/mergeThemes.ts","../../src/styles/theme.ts","../../src/styles/GeneralStyles.ts","../../src/styles/getPlaceholderStyles.ts","../../src/utilities/icons.ts","../../src/version.ts","../../src/index.ts","../node_modules/@redux-saga/core/dist/io-22ea0cf9.js","../node_modules/recharts/es6/util/ReactUtils.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteral.js","../../src/utils/interleave.js","../../src/utils/isPlainObject.js","../../src/utils/empties.js","../../src/utils/isFunction.js","../../src/utils/getComponentName.js","../../src/utils/isStyledComponent.js","../../src/constants.js","../../src/utils/error.js","../../src/sheet/GroupedTag.js","../../src/sheet/GroupIDAllocator.js","../../src/sheet/Rehydration.js","../../src/utils/nonce.js","../../src/sheet/dom.js","../../src/sheet/Tag.js","../../src/sheet/Sheet.js","../../src/utils/generateAlphabeticName.js","../../src/utils/hash.js","../../src/utils/isStaticRules.js","../../src/models/ComponentStyle.js","../../src/utils/stylis.js","../../src/utils/stylisPluginInsertRule.js","../../src/models/StyleSheetManager.js","../../src/models/Keyframes.js","../../src/utils/hyphenateStyleName.js","../../src/utils/flatten.js","../../src/utils/isStatelessFunction.js","../../src/utils/addUnitIfNeeded.js","../../src/constructors/css.js","../../src/utils/checkDynamicCreation.js","../../src/utils/determineTheme.js","../../src/utils/escape.js","../../src/utils/generateComponentId.js","../../src/utils/isTag.js","../../src/utils/mixinDeep.js","../../src/models/ThemeProvider.js","../../src/models/StyledComponent.js","../../src/utils/generateDisplayName.js","../../src/utils/joinStrings.js","../../src/utils/domElements.js","../../src/constructors/styled.js","../../src/constructors/constructWithOptions.js","../../src/models/GlobalStyle.js","../../src/models/ServerStyleSheet.js","../../src/base.js","../node_modules/@babel/runtime/helpers/esm/extends.js","../../src/components/Persona/Persona.types.ts","../node_modules/redux/es/redux.js","../node_modules/validator/lib/util/assertString.js","../node_modules/recharts-scale/es6/util/utils.js","../node_modules/recharts-scale/es6/util/arithmetic.js","../node_modules/recharts-scale/es6/getNiceTickValues.js","../node_modules/recharts/es6/util/ChartUtils.js","../../src/Constants.ts","../node_modules/clsx/dist/clsx.mjs","../../src/devtoolsExtension.ts","../../src/createDraftSafeSelector.ts","../../src/tsHelpers.ts","../../src/createAction.ts","../../src/utils.ts","../../src/getDefaultMiddleware.ts","../../src/autoBatchEnhancer.ts","../../src/getDefaultEnhancers.ts","../../src/configureStore.ts","../../src/mapBuilders.ts","../../src/createReducer.ts","../../src/matchers.ts","../../src/nanoid.ts","../../src/createAsyncThunk.ts","../../src/createSlice.ts","../../src/entities/state_adapter.ts","../../src/listenerMiddleware/exceptions.ts","../../src/listenerMiddleware/task.ts","../../src/listenerMiddleware/index.ts","../../src/combineSlices.ts","../../src/formatProdErrorMessage.ts","../node_modules/lodash/isFunction.js","../../src/utils/isCheckBoxInput.ts","../../src/utils/isDateObject.ts","../../src/utils/isNullOrUndefined.ts","../../src/utils/isObject.ts","../../src/logic/getEventValue.ts","../../src/logic/isNameInFieldArray.ts","../../src/logic/getNodeParentName.ts","../../src/utils/isWeb.ts","../../src/utils/cloneObject.ts","../../src/utils/isPlainObject.ts","../../src/utils/compact.ts","../../src/utils/isUndefined.ts","../../src/utils/get.ts","../../src/utils/isBoolean.ts","../../src/utils/isKey.ts","../../src/utils/stringToPath.ts","../../src/utils/set.ts","../../src/constants.ts","../../src/useFormContext.tsx","../../src/logic/getProxyFormState.ts","../../src/utils/isEmptyObject.ts","../../src/logic/shouldRenderFormState.ts","../../src/utils/convertToArrayPayload.ts","../../src/logic/shouldSubscribeByName.ts","../../src/useSubscribe.ts","../../src/utils/isString.ts","../../src/logic/generateWatchOutput.ts","../../src/useWatch.ts","../../src/useController.ts","../../src/useFormState.ts","../../src/controller.tsx","../../src/logic/appendErrors.ts","../../src/logic/generateId.ts","../../src/logic/getFocusFieldName.ts","../../src/logic/getValidationModes.ts","../../src/logic/isWatched.ts","../../src/logic/iterateFieldsByAction.ts","../../src/logic/updateFieldArrayRootError.ts","../../src/utils/isFileInput.ts","../../src/utils/isFunction.ts","../../src/utils/isHTMLElement.ts","../../src/utils/isMessage.ts","../../src/utils/isRadioInput.ts","../../src/utils/isRegex.ts","../../src/logic/getCheckboxValue.ts","../../src/logic/getRadioValue.ts","../../src/logic/getValidateError.ts","../../src/logic/getValueAndMessage.ts","../../src/logic/validateField.ts","../../src/utils/append.ts","../../src/utils/fillEmptyArray.ts","../../src/utils/insert.ts","../../src/utils/move.ts","../../src/utils/prepend.ts","../../src/utils/remove.ts","../../src/utils/swap.ts","../../src/utils/unset.ts","../../src/utils/update.ts","../../src/useFieldArray.ts","../../src/utils/createSubject.ts","../../src/utils/isPrimitive.ts","../../src/utils/deepEqual.ts","../../src/utils/isMultipleSelect.ts","../../src/utils/isRadioOrCheckbox.ts","../../src/utils/live.ts","../../src/utils/objectHasFunction.ts","../../src/logic/getDirtyFields.ts","../../src/logic/getFieldValueAs.ts","../../src/logic/getFieldValue.ts","../../src/logic/getResolverOptions.ts","../../src/logic/getRuleValue.ts","../../src/logic/hasValidation.ts","../../src/logic/schemaErrorLookup.ts","../../src/logic/skipValidation.ts","../../src/logic/unsetEmptyArray.ts","../../src/logic/createFormControl.ts","../../src/useForm.ts","../node_modules/@redux-saga/is/dist/redux-saga-is.esm.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../../modules/miniCreateReactContext.js","../../modules/createContext.js","../../modules/createNamedContext.js","../../modules/HistoryContext.js","../../modules/RouterContext.js","../../modules/Router.js","../../modules/MemoryRouter.js","../../modules/Lifecycle.js","../../modules/generatePath.js","../../modules/Redirect.js","../../modules/matchPath.js","../../modules/Route.js","../../modules/StaticRouter.js","../../modules/Switch.js","../../modules/withRouter.js","../../modules/hooks.js","../node_modules/prop-types/index.js","../node_modules/deepmerge/dist/es.js","../node_modules/formik/node_modules/lodash-es/_Symbol.js","../node_modules/formik/node_modules/lodash-es/_getRawTag.js","../node_modules/formik/node_modules/lodash-es/_objectToString.js","../node_modules/formik/node_modules/lodash-es/_baseGetTag.js","../node_modules/formik/node_modules/lodash-es/_overArg.js","../node_modules/formik/node_modules/lodash-es/_getPrototype.js","../node_modules/formik/node_modules/lodash-es/isObjectLike.js","../node_modules/formik/node_modules/lodash-es/isPlainObject.js","../node_modules/formik/node_modules/lodash-es/_listCacheClear.js","../node_modules/formik/node_modules/lodash-es/eq.js","../node_modules/formik/node_modules/lodash-es/_assocIndexOf.js","../node_modules/formik/node_modules/lodash-es/_listCacheDelete.js","../node_modules/formik/node_modules/lodash-es/_listCacheGet.js","../node_modules/formik/node_modules/lodash-es/_listCacheHas.js","../node_modules/formik/node_modules/lodash-es/_listCacheSet.js","../node_modules/formik/node_modules/lodash-es/_ListCache.js","../node_modules/formik/node_modules/lodash-es/_stackClear.js","../node_modules/formik/node_modules/lodash-es/_stackDelete.js","../node_modules/formik/node_modules/lodash-es/_stackGet.js","../node_modules/formik/node_modules/lodash-es/_stackHas.js","../node_modules/formik/node_modules/lodash-es/isObject.js","../node_modules/formik/node_modules/lodash-es/isFunction.js","../node_modules/formik/node_modules/lodash-es/_coreJsData.js","../node_modules/formik/node_modules/lodash-es/_isMasked.js","../node_modules/formik/node_modules/lodash-es/_toSource.js","../node_modules/formik/node_modules/lodash-es/_baseIsNative.js","../node_modules/formik/node_modules/lodash-es/_getValue.js","../node_modules/formik/node_modules/lodash-es/_getNative.js","../node_modules/formik/node_modules/lodash-es/_Map.js","../node_modules/formik/node_modules/lodash-es/_nativeCreate.js","../node_modules/formik/node_modules/lodash-es/_hashClear.js","../node_modules/formik/node_modules/lodash-es/_hashDelete.js","../node_modules/formik/node_modules/lodash-es/_hashGet.js","../node_modules/formik/node_modules/lodash-es/_hashHas.js","../node_modules/formik/node_modules/lodash-es/_hashSet.js","../node_modules/formik/node_modules/lodash-es/_Hash.js","../node_modules/formik/node_modules/lodash-es/_mapCacheClear.js","../node_modules/formik/node_modules/lodash-es/_isKeyable.js","../node_modules/formik/node_modules/lodash-es/_getMapData.js","../node_modules/formik/node_modules/lodash-es/_mapCacheDelete.js","../node_modules/formik/node_modules/lodash-es/_mapCacheGet.js","../node_modules/formik/node_modules/lodash-es/_mapCacheHas.js","../node_modules/formik/node_modules/lodash-es/_mapCacheSet.js","../node_modules/formik/node_modules/lodash-es/_MapCache.js","../node_modules/formik/node_modules/lodash-es/_stackSet.js","../node_modules/formik/node_modules/lodash-es/_Stack.js","../node_modules/formik/node_modules/lodash-es/_arrayEach.js","../node_modules/formik/node_modules/lodash-es/_defineProperty.js","../node_modules/formik/node_modules/lodash-es/_baseAssignValue.js","../node_modules/formik/node_modules/lodash-es/_assignValue.js","../node_modules/formik/node_modules/lodash-es/_copyObject.js","../node_modules/formik/node_modules/lodash-es/_baseTimes.js","../node_modules/formik/node_modules/lodash-es/_baseIsArguments.js","../node_modules/formik/node_modules/lodash-es/isArguments.js","../node_modules/formik/node_modules/lodash-es/isArray.js","../node_modules/formik/node_modules/lodash-es/_isIndex.js","../node_modules/formik/node_modules/lodash-es/isLength.js","../node_modules/formik/node_modules/lodash-es/_baseIsTypedArray.js","../node_modules/formik/node_modules/lodash-es/_baseUnary.js","../node_modules/formik/node_modules/lodash-es/isTypedArray.js","../node_modules/formik/node_modules/lodash-es/_arrayLikeKeys.js","../node_modules/formik/node_modules/lodash-es/_isPrototype.js","../node_modules/formik/node_modules/lodash-es/_nativeKeys.js","../node_modules/formik/node_modules/lodash-es/_baseKeys.js","../node_modules/formik/node_modules/lodash-es/isArrayLike.js","../node_modules/formik/node_modules/lodash-es/keys.js","../node_modules/formik/node_modules/lodash-es/_baseAssign.js","../node_modules/formik/node_modules/lodash-es/_nativeKeysIn.js","../node_modules/formik/node_modules/lodash-es/_baseKeysIn.js","../node_modules/formik/node_modules/lodash-es/keysIn.js","../node_modules/formik/node_modules/lodash-es/_baseAssignIn.js","../node_modules/formik/node_modules/lodash-es/_copyArray.js","../node_modules/formik/node_modules/lodash-es/_arrayFilter.js","../node_modules/formik/node_modules/lodash-es/stubArray.js","../node_modules/formik/node_modules/lodash-es/_getSymbols.js","../node_modules/formik/node_modules/lodash-es/_copySymbols.js","../node_modules/formik/node_modules/lodash-es/_arrayPush.js","../node_modules/formik/node_modules/lodash-es/_getSymbolsIn.js","../node_modules/formik/node_modules/lodash-es/_copySymbolsIn.js","../node_modules/formik/node_modules/lodash-es/_baseGetAllKeys.js","../node_modules/formik/node_modules/lodash-es/_getAllKeys.js","../node_modules/formik/node_modules/lodash-es/_getAllKeysIn.js","../node_modules/formik/node_modules/lodash-es/_DataView.js","../node_modules/formik/node_modules/lodash-es/_Promise.js","../node_modules/formik/node_modules/lodash-es/_Set.js","../node_modules/formik/node_modules/lodash-es/_WeakMap.js","../node_modules/formik/node_modules/lodash-es/_getTag.js","../node_modules/formik/node_modules/lodash-es/_initCloneArray.js","../node_modules/formik/node_modules/lodash-es/_Uint8Array.js","../node_modules/formik/node_modules/lodash-es/_cloneArrayBuffer.js","../node_modules/formik/node_modules/lodash-es/_cloneDataView.js","../node_modules/formik/node_modules/lodash-es/_cloneRegExp.js","../node_modules/formik/node_modules/lodash-es/_cloneSymbol.js","../node_modules/formik/node_modules/lodash-es/_cloneTypedArray.js","../node_modules/formik/node_modules/lodash-es/_initCloneByTag.js","../node_modules/formik/node_modules/lodash-es/_baseCreate.js","../node_modules/formik/node_modules/lodash-es/_initCloneObject.js","../node_modules/formik/node_modules/lodash-es/_baseIsMap.js","../node_modules/formik/node_modules/lodash-es/isMap.js","../node_modules/formik/node_modules/lodash-es/_baseIsSet.js","../node_modules/formik/node_modules/lodash-es/isSet.js","../node_modules/formik/node_modules/lodash-es/_baseClone.js","../node_modules/formik/node_modules/lodash-es/cloneDeep.js","../node_modules/formik/node_modules/lodash-es/clone.js","../node_modules/formik/node_modules/lodash-es/_arrayMap.js","../node_modules/formik/node_modules/lodash-es/isSymbol.js","../node_modules/formik/node_modules/lodash-es/memoize.js","../node_modules/formik/node_modules/lodash-es/_memoizeCapped.js","../node_modules/formik/node_modules/lodash-es/_stringToPath.js","../node_modules/formik/node_modules/lodash-es/_toKey.js","../node_modules/formik/node_modules/lodash-es/_baseToString.js","../node_modules/formik/node_modules/lodash-es/toString.js","../node_modules/formik/node_modules/lodash-es/toPath.js","../../src/FormikContext.tsx","../../src/Formik.tsx","../../src/Field.tsx","../../src/Form.tsx","../../src/withFormik.tsx","../../src/connect.tsx","../../src/FieldArray.tsx","../../src/ErrorMessage.tsx","../../src/FastField.tsx","../node_modules/lodash/isNil.js","../../modules/BrowserRouter.js","../../modules/HashRouter.js","../../modules/utils/locationUtils.js","../../modules/Link.js","../../modules/NavLink.js","../../src/utilities/positioning/positioning.types.ts","../node_modules/lodash/lodash.js","../../../out/lib/src/DynamicProto.js","../node_modules/recharts/es6/util/PolarUtils.js","../node_modules/recharts/es6/container/Layer.js","../../src/utils/errors.ts","../../src/utils/common.ts","../../src/utils/plugins.ts","../../src/core/scope.ts","../../src/core/finalize.ts","../../src/core/proxy.ts","../../src/core/immerClass.ts","../../src/core/current.ts","../../src/plugins/es5.ts","../../src/plugins/patches.ts","../../src/immer.ts","../../src/utils/env.ts","../node_modules/victory-vendor/d3-shape.js","../../src/components/MessageBar/MessageBar.types.ts","../node_modules/@redux-saga/symbols/dist/redux-saga-symbols.esm.js","../../src/common/DirectionalHint.ts","../node_modules/decimal.js-light/decimal.js","../node_modules/classnames/index.js","../../src/components/DetailsList/DetailsList.types.ts","../../src/dom/getWindow.ts","../../src/utils/formatProdErrorMessage.ts","../../src/utils/symbol-observable.ts","../../src/utils/actionTypes.ts","../../src/createStore.ts","../../src/combineReducers.ts","../../src/compose.ts","../../src/applyMiddleware.ts","../../src/utils/isAction.ts","../../src/properties.ts","../node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/@babel/runtime/helpers/esm/inherits.js","../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../node_modules/rc-pagination/es/Pager.js","../node_modules/rc-pagination/es/KeyCode.js","../node_modules/rc-pagination/es/Options.js","../node_modules/rc-pagination/es/Pagination.js","../node_modules/rc-pagination/es/locale/zh_CN.js","../node_modules/@uifabric/utilities/node_modules/tslib/tslib.es6.js","../../src/components/Image/Image.types.ts","../../src/KeyCodes.ts","../../src/validateFieldsNatively.ts","../../src/toNestError.ts","../../src/yup.ts","../node_modules/recharts/es6/util/types.js","../../src/selection/Selection.types.ts","../node_modules/tiny-invariant/dist/tiny-invariant.esm.js","../../src/components/DetailsList/DetailsRow.styles.ts","../node_modules/lodash/get.js","../node_modules/yup/node_modules/lodash-es/_root.js","../node_modules/formik/node_modules/lodash-es/_root.js","../../src/components/Button/BaseButton.classNames.ts","../node_modules/lodash/map.js","../node_modules/react-bootstrap/esm/ThemeProvider.js","../../src/components/GroupedList/GroupSpacer.tsx","../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../../src/components/Panel/Panel.types.ts","../node_modules/lodash/isObject.js","../../src/dom/getDocument.ts","../node_modules/lodash/isArray.js","../node_modules/victory-vendor/lib-vendor/d3-shape/src/math.js","../node_modules/recharts/es6/util/calculateViewBox.js","../node_modules/recharts/es6/context/chartLayoutContext.js","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../../src/utilities/keytips/KeytipConstants.ts","../node_modules/validator/lib/util/merge.js","../node_modules/victory-vendor/lib-vendor/d3-scale/src/init.js","../node_modules/victory-vendor/lib-vendor/d3-time/src/interval.js","../node_modules/recharts/es6/component/Label.js","../../src/dateValues/dateValues.ts","../../src/autotrackMemoize/proxy.ts","../../src/weakMapMemoize.ts","../../src/createSelectorCreator.ts","../../src/createStructuredSelector.ts","../../src/Stylesheet.ts","../node_modules/@uifabric/foundation/node_modules/tslib/tslib.es6.js","../../src/memoize.ts","../node_modules/resolve-pathname/esm/resolve-pathname.js","../node_modules/value-equal/esm/value-equal.js","../node_modules/history/esm/history.js","../../src/getParent.ts","../../src/getVirtualParent.ts","../../src/isVirtualElement.ts","../node_modules/recharts/es6/util/ReduceCSSCalc.js","../node_modules/recharts/es6/component/Text.js","../../query/core/apiState.ts","../../query/utils/copyWithStructuralSharing.ts","../../query/utils/countObjectKeys.ts","../../query/utils/flatten.ts","../../query/utils/isNotNullish.ts","../../query/utils/joinUrls.ts","../../query/utils/isAbsoluteUrl.ts","../../query/fetchBaseQuery.ts","../../query/HandledError.ts","../../query/retry.ts","../../query/core/setupListeners.ts","../../query/endpointDefinitions.ts","../../tsHelpers.ts","../../query/core/buildInitiate.ts","../../query/core/buildThunks.ts","../../query/core/buildSlice.ts","../../query/utils/isOnline.ts","../../query/utils/isDocumentVisible.ts","../../query/core/buildSelectors.ts","../../query/defaultSerializeQueryArgs.ts","../../query/createApi.ts","../../query/tsHelpers.ts","../../query/core/buildMiddleware/batchActions.ts","../../query/core/buildMiddleware/cacheCollection.ts","../../query/core/buildMiddleware/cacheLifecycle.ts","../../query/core/buildMiddleware/devMiddleware.ts","../../query/core/buildMiddleware/invalidationByTags.ts","../../query/core/buildMiddleware/polling.ts","../../query/core/buildMiddleware/queryLifecycle.ts","../../query/core/buildMiddleware/index.ts","../../query/core/buildMiddleware/windowEventHandling.ts","../../query/core/module.ts","../../query/core/index.ts","../../src/components/FocusZone/FocusZone.types.ts","../node_modules/lodash/_baseIteratee.js","../node_modules/recharts/es6/util/Global.js","../node_modules/recharts/es6/util/CartesianUtils.js","../node_modules/tiny-warning/dist/tiny-warning.esm.js","../../src/customizations/Customizations.ts","../../src/EventGroup.ts","../node_modules/victory-vendor/d3-scale.js","../node_modules/victory-vendor/lib-vendor/d3-array/src/index.js","../node_modules/react-dom/index.js","../node_modules/recharts/es6/util/LogUtils.js","../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../node_modules/lodash/_root.js","../node_modules/lodash/isObjectLike.js","../node_modules/victory-vendor/lib-vendor/d3-array/src/ascending.js","../node_modules/victory-vendor/lib-vendor/d3-time/src/duration.js","../../src/StyleOptionsState.ts","../node_modules/lodash/filter.js","../node_modules/react-smooth/es6/setRafTimeout.js","../node_modules/react-smooth/es6/AnimateManager.js","../node_modules/react-smooth/es6/util.js","../node_modules/react-smooth/es6/easing.js","../node_modules/react-smooth/es6/configUpdate.js","../node_modules/react-smooth/es6/Animate.js","../node_modules/react-transition-group/esm/utils/ChildMapping.js","../node_modules/react-transition-group/esm/TransitionGroup.js","../node_modules/react-smooth/es6/AnimateGroupChild.js","../node_modules/react-smooth/es6/AnimateGroup.js","../node_modules/react-smooth/es6/index.js","../../src/components/Icon/Icon.styles.ts","../node_modules/recharts/es6/shape/Trapezoid.js","../node_modules/recharts/es6/util/ActiveShapeUtils.js","../../src/components/Spinner/Spinner.types.ts","../node_modules/lodash/_baseGetTag.js","../node_modules/victory-vendor/lib-vendor/d3-scale/src/continuous.js","../node_modules/lodash/some.js","../../src/getVendorSettings.ts","../../src/transforms/kebabRules.ts","../../src/transforms/prefixRules.ts","../../src/transforms/provideUnits.ts","../../src/transforms/rtlifyRules.ts","../../src/styleToClassName.ts","../node_modules/yup/node_modules/lodash-es/_nodeUtil.js","../node_modules/formik/node_modules/lodash-es/_nodeUtil.js","../node_modules/recharts/es6/util/ShallowEqual.js","../node_modules/recharts/es6/util/DOMUtils.js","../node_modules/react-bootstrap/esm/SelectableContext.js","../../src/utilities/decorators/withResponsiveMode.tsx","../../src/WindowProvider.tsx","../node_modules/react-fast-compare/index.js","../node_modules/webpack/buildin/global.js","../node_modules/victory-vendor/lib-vendor/d3-scale/src/linear.js","../node_modules/property-expr/index.js","../../src/components/Button/BaseButton.styles.ts","../node_modules/lodash/isEqual.js","../node_modules/recharts/es6/shape/Rectangle.js","../node_modules/react-bootstrap/esm/NavbarContext.js","../../src/components/ContextualMenu/ContextualMenu.types.ts","../../src/components/Icon/ImageIcon.tsx","../../src/utilities/contextualMenu/contextualMenuUtility.ts","../../src/components/ContextualMenu/ContextualMenuItem.base.tsx","../../src/components/Divider/VerticalDivider.classNames.ts","../../src/components/ContextualMenu/ContextualMenu.cnstyles.ts","../../src/components/ContextualMenu/ContextualMenu.classNames.ts","../../src/components/ContextualMenu/ContextualMenuItem.ts","../../src/components/ContextualMenu/ContextualMenuItemWrapper/ContextualMenuItemWrapper.tsx","../../src/components/ContextualMenu/ContextualMenuItemWrapper/ContextualMenuAnchor.tsx","../../src/components/ContextualMenu/ContextualMenuItemWrapper/ContextualMenuButton.tsx","../../src/components/Divider/VerticalDivider.base.tsx","../../src/components/Divider/VerticalDivider.tsx","../../src/components/Divider/VerticalDivider.styles.ts","../../src/components/ContextualMenu/ContextualMenuItemWrapper/ContextualMenuSplitButton.tsx","../../src/components/ContextualMenu/ContextualMenu.base.tsx","../../src/components/ContextualMenu/ContextualMenu.styles.ts","../../src/components/ContextualMenu/ContextualMenu.tsx","../../src/components/Button/SplitButton/SplitButton.classNames.ts","../../src/components/Button/BaseButton.tsx","../node_modules/@uifabric/merge-styles/node_modules/tslib/tslib.es6.js","../../src/customizations/CustomizerContext.ts","../node_modules/lodash/isString.js","../node_modules/moment/moment.js","../node_modules/react-bootstrap/esm/createChainedFunction.js","../../src/setFocusVisibility.ts","../node_modules/recharts/es6/component/DefaultTooltipContent.js","../node_modules/recharts/es6/util/tooltip/translate.js","../node_modules/recharts/es6/component/TooltipBoundingBox.js","../node_modules/recharts/es6/component/Tooltip.js","../node_modules/lodash/identity.js","../node_modules/lodash/_getNative.js","../node_modules/victory-vendor/lib-vendor/d3-shape/src/constant.js","../node_modules/victory-vendor/lib-vendor/internmap/src/index.js","../node_modules/react-is/index.js","../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/yup/node_modules/lodash-es/isBuffer.js","../../src/components/DetailsList/DetailsRowCheck.styles.ts","../node_modules/lodash/upperFirst.js","../node_modules/lodash/isNaN.js","../../src/Helpers.ts","../node_modules/webpack/buildin/harmony-module.js","../node_modules/lodash/isArrayLike.js","../node_modules/lodash/isSymbol.js","../node_modules/victory-vendor/lib-vendor/d3-color/src/index.js","../node_modules/victory-vendor/lib-vendor/d3-interpolate/src/color.js","../node_modules/@babel/runtime/helpers/esm/createClass.js","../../src/components/DetailsList/DetailsHeader.styles.ts","../../src/components/Button/SplitButton/SplitButton.styles.ts","../../src/components/pickers/BasePicker.types.ts","../node_modules/lodash/compact.js","../node_modules/lodash/sortBy.js","../node_modules/recharts/es6/shape/Dot.js","../../src/sessionStorage.ts","../../src/components/pickers/BasePicker.styles.ts","../node_modules/lodash/range.js","../node_modules/react-transition-group/esm/TransitionGroupContext.js","../node_modules/react-transition-group/esm/config.js","../node_modules/react-transition-group/esm/Transition.js","../node_modules/react-transition-group/esm/utils/reflow.js","../node_modules/lodash/_Symbol.js","../node_modules/lodash/keys.js","../node_modules/validator/lib/alpha.js","../node_modules/lodash/_baseEach.js","../node_modules/victory-vendor/lib-vendor/d3-path/src/index.js","../node_modules/victory-vendor/lib-vendor/d3-shape/src/array.js","../node_modules/victory-vendor/lib-vendor/d3-shape/src/offset/none.js","../node_modules/victory-vendor/lib-vendor/d3-shape/src/order/none.js","../../src/warn/warn.ts","../../src/concatStyleSets.ts","../../src/utilities.ts","../node_modules/lodash/groupBy.js","../node_modules/recharts/es6/container/Surface.js","../node_modules/recharts/es6/shape/Curve.js","../../src/components/pickers/Suggestions/Suggestions.types.ts","../../src/components/Announced/Announced.base.tsx","../../src/components/Announced/Announced.ts","../../src/components/Announced/Announced.styles.ts","../../src/components/pickers/Suggestions/Suggestions.scss.ts","../../src/components/pickers/Suggestions/SuggestionsItem.tsx","../../src/components/pickers/Suggestions/Suggestions.tsx","../../src/components/pickers/Suggestions/Suggestions.styles.ts","../../src/components/pickers/Suggestions/SuggestionsController.ts","../../src/components/pickers/BasePicker.scss.ts","../../src/components/pickers/BasePicker.tsx","../node_modules/recharts/es6/component/DefaultLegendContent.js","../node_modules/recharts/es6/component/Legend.js","../../src/rtl.ts","../../src/Async.ts","../node_modules/lodash/max.js","../node_modules/lodash/min.js","../node_modules/process/browser.js","../node_modules/lodash/_baseFlatten.js","../node_modules/lodash/_nativeCreate.js","../node_modules/lodash/_ListCache.js","../node_modules/lodash/_assocIndexOf.js","../node_modules/lodash/_getMapData.js","../node_modules/webpack/buildin/module.js","../node_modules/lodash/_arrayMap.js","../node_modules/validator/lib/isIP.js","../node_modules/lodash/_toKey.js","../node_modules/lodash/_isIterateeCall.js","../node_modules/victory-vendor/lib-vendor/d3-shape/src/curve/linear.js","../node_modules/victory-vendor/lib-vendor/d3-shape/src/noop.js","../node_modules/victory-vendor/lib-vendor/d3-shape/src/curve/basis.js","../node_modules/victory-vendor/lib-vendor/d3-shape/src/curve/cardinal.js","../node_modules/victory-vendor/lib-vendor/d3-array/src/count.js","../node_modules/victory-vendor/lib-vendor/d3-array/src/sort.js","../node_modules/victory-vendor/lib-vendor/d3-interpolate/src/value.js","../node_modules/victory-vendor/lib-vendor/d3-interpolate/src/number.js","../node_modules/victory-vendor/lib-vendor/d3-format/src/exponent.js","../node_modules/victory-vendor/lib-vendor/d3-format/src/formatDecimal.js","../node_modules/lodash/_baseExtremum.js","../node_modules/@redux-saga/delay-p/dist/redux-saga-delay-p.esm.js","../../src/extractStyleParts.ts","../../src/dom/setSSR.ts","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/yup/node_modules/lodash-es/_freeGlobal.js","../node_modules/formik/node_modules/lodash-es/_freeGlobal.js","../node_modules/formik/node_modules/lodash-es/isBuffer.js","../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../../src/findElementRecursive.ts","../../src/components/Check/Check.styles.ts","../../src/components/pickers/Suggestions/SuggestionsItem.styles.ts","../node_modules/lodash/invert.js","../node_modules/lodash/flatten.js","../node_modules/recharts/es6/shape/Symbols.js","../node_modules/recharts/es6/util/payload/getUniqPayload.js","../node_modules/recharts/es6/cartesian/ErrorBar.js","../node_modules/lodash/every.js","../node_modules/recharts/es6/shape/Sector.js","../node_modules/recharts/es6/component/LabelList.js","../node_modules/recharts/es6/component/Cell.js","../node_modules/react-bootstrap/esm/SafeAnchor.js","../node_modules/react-bootstrap/esm/NavContext.js","../node_modules/recharts/es6/util/CssPrefixUtils.js","../node_modules/recharts/es6/cartesian/Brush.js","../node_modules/recharts/es6/util/IfOverflowMatches.js","../node_modules/recharts/es6/cartesian/ReferenceDot.js","../node_modules/recharts/es6/cartesian/ReferenceLine.js","../node_modules/recharts/es6/cartesian/ReferenceArea.js","../node_modules/recharts/es6/util/DetectReferenceElementsDomain.js","../node_modules/recharts/es6/util/Events.js","../node_modules/recharts/es6/chart/AccessibilityManager.js","../node_modules/recharts/es6/shape/Cross.js","../node_modules/recharts/es6/util/cursor/getRadialCursorPoints.js","../node_modules/recharts/es6/util/cursor/getCursorPoints.js","../node_modules/recharts/es6/component/Cursor.js","../node_modules/recharts/es6/util/cursor/getCursorRectangle.js","../node_modules/recharts/es6/chart/generateCategoricalChart.js","../node_modules/recharts/es6/util/isDomainSpecifiedByUser.js","../node_modules/recharts/es6/util/getEveryNthWithCondition.js","../node_modules/recharts/es6/util/TickUtils.js","../node_modules/recharts/es6/cartesian/getTicks.js","../node_modules/recharts/es6/cartesian/getEquidistantTicks.js","../node_modules/recharts/es6/cartesian/CartesianAxis.js","../node_modules/uncontrollable/lib/esm/utils.js","../node_modules/uncontrollable/lib/esm/hook.js","../node_modules/react-lifecycles-compat/react-lifecycles-compat.es.js","../../src/components/Image/Image.base.tsx","../../src/components/Image/Image.styles.ts","../../src/components/Image/Image.tsx","../../src/setVersion.ts","../../src/appendFunction.ts","../../src/extendComponent.ts","../../src/getNativeElementProps.ts","../../src/components/DetailsList/DetailsRowCheck.tsx","../../src/hoist.ts","../../src/utilities/decorators/BaseDecorator.ts","../node_modules/recharts/es6/util/BarUtils.js","../node_modules/recharts/es6/cartesian/Bar.js","../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../node_modules/@restart/hooks/esm/useCommittedRef.js","../node_modules/@restart/hooks/esm/useEventCallback.js","../../src/components/pickers/PeoplePicker/PeoplePickerItems/PeoplePickerItem.styles.ts","../../src/components/pickers/PeoplePicker/PeoplePickerItems/PeoplePickerItem.tsx","../node_modules/lodash/isArguments.js","../node_modules/lodash/_MapCache.js","../node_modules/lodash/eq.js","../node_modules/lodash/_Map.js","../node_modules/lodash/_setToArray.js","../node_modules/lodash/isLength.js","../node_modules/lodash/_isIndex.js","../node_modules/validator/lib/toDate.js","../node_modules/validator/lib/isFQDN.js","../node_modules/validator/lib/isInt.js","../node_modules/lodash/_baseForOwn.js","../node_modules/lodash/_baseIsEqual.js","../node_modules/lodash/_baseGet.js","../node_modules/lodash/_isKey.js","../node_modules/victory-vendor/lib-vendor/d3-shape/src/line.js","../node_modules/victory-vendor/lib-vendor/d3-shape/src/point.js","../node_modules/victory-vendor/lib-vendor/d3-shape/src/curve/catmullRom.js","../node_modules/victory-vendor/lib-vendor/d3-shape/src/order/ascending.js","../node_modules/victory-vendor/lib-vendor/d3-array/src/ticks.js","../node_modules/victory-vendor/lib-vendor/d3-array/src/quantile.js","../node_modules/victory-vendor/lib-vendor/d3-array/src/min.js","../node_modules/victory-vendor/lib-vendor/d3-interpolate/src/index.js","../node_modules/victory-vendor/lib-vendor/d3-color/src/color.js","../node_modules/victory-vendor/lib-vendor/d3-color/src/define.js","../node_modules/victory-vendor/lib-vendor/d3-interpolate/src/basis.js","../node_modules/victory-vendor/lib-vendor/d3-interpolate/src/numberArray.js","../node_modules/victory-vendor/lib-vendor/d3-scale/src/number.js","../node_modules/victory-vendor/lib-vendor/d3-scale/src/log.js","../node_modules/victory-vendor/lib-vendor/d3-scale/src/symlog.js","../node_modules/victory-vendor/lib-vendor/d3-scale/src/pow.js","../node_modules/victory-vendor/lib-vendor/d3-time/src/index.js","../node_modules/victory-vendor/lib-vendor/d3-time-format/src/defaultLocale.js","../node_modules/lodash/memoize.js","../node_modules/lodash/isNumber.js","../node_modules/recharts/es6/util/getLegendProps.js","../node_modules/invariant/browser.js","../node_modules/react-router/node_modules/path-to-regexp/index.js","../../src/warn/warnDeprecations.ts","../../src/getId.ts","../../src/setPortalAttribute.ts","../../src/components/Tooltip/TooltipHost.types.ts","../node_modules/validator/index.js","../node_modules/lz-string/libs/lz-string.js","../node_modules/redux-thunk/dist/redux-thunk.legacy-esm.js","../node_modules/lodash/uniqBy.js","../node_modules/@emotion/memoize/dist/emotion-memoize.esm.js","../node_modules/@emotion/is-prop-valid/dist/emotion-is-prop-valid.esm.js","../../src/components/Stack/StackItem/StackItem.styles.ts","../../src/components/Stack/StackItem/StackItem.tsx","../../src/initializeComponentRef.ts","../../src/elementContains.ts","../../src/dom/on.ts","../node_modules/object-assign/index.js","../node_modules/lodash/_arrayPush.js","../node_modules/lodash/_freeGlobal.js","../node_modules/lodash/_baseRest.js","../node_modules/lodash/constant.js","../node_modules/lodash/_defineProperty.js","../node_modules/lodash/_toSource.js","../node_modules/lodash/_baseUniq.js","../node_modules/lodash/_SetCache.js","../node_modules/lodash/_baseFindIndex.js","../node_modules/lodash/_cacheHas.js","../node_modules/lodash/_Set.js","../node_modules/lodash/_getTag.js","../node_modules/lodash/_mapToArray.js","../node_modules/lodash/isBuffer.js","../node_modules/lodash/isTypedArray.js","../node_modules/lodash/_baseUnary.js","../node_modules/lodash/_overArg.js","../SeverityLevel.js","../node_modules/validator/lib/toFloat.js","../node_modules/validator/lib/isFloat.js","../node_modules/validator/lib/util/toString.js","../node_modules/validator/lib/isEmail.js","../node_modules/validator/lib/isByteLength.js","../node_modules/validator/lib/isDate.js","../node_modules/validator/lib/isFullWidth.js","../node_modules/validator/lib/isHalfWidth.js","../node_modules/validator/lib/isHexadecimal.js","../node_modules/validator/lib/isISO31661Alpha2.js","../node_modules/validator/lib/isBase64.js","../node_modules/validator/lib/isLuhnNumber.js","../node_modules/validator/lib/util/algorithms.js","../node_modules/validator/lib/trim.js","../node_modules/validator/lib/rtrim.js","../node_modules/validator/lib/ltrim.js","../node_modules/validator/lib/blacklist.js","../node_modules/lodash/_arrayFilter.js","../node_modules/lodash/_Stack.js","../node_modules/lodash/_equalArrays.js","../node_modules/lodash/_arraySome.js","../node_modules/lodash/_isStrictComparable.js","../node_modules/lodash/_matchesStrictComparable.js","../node_modules/lodash/_castPath.js","../node_modules/lodash/toString.js","../node_modules/lodash/_baseAssignValue.js","../node_modules/lodash/_baseMap.js","../node_modules/lodash/_hasUnicode.js","../node_modules/victory-vendor/lib-vendor/d3-shape/src/area.js","../node_modules/victory-vendor/lib-vendor/d3-shape/src/curve/radial.js","../node_modules/victory-vendor/lib-vendor/d3-shape/src/lineRadial.js","../node_modules/victory-vendor/lib-vendor/d3-shape/src/pointRadial.js","../node_modules/victory-vendor/lib-vendor/d3-shape/src/curve/bump.js","../node_modules/victory-vendor/lib-vendor/d3-shape/src/symbol/asterisk.js","../node_modules/victory-vendor/lib-vendor/d3-shape/src/symbol/circle.js","../node_modules/victory-vendor/lib-vendor/d3-shape/src/symbol/cross.js","../node_modules/victory-vendor/lib-vendor/d3-shape/src/symbol/diamond.js","../node_modules/victory-vendor/lib-vendor/d3-shape/src/symbol/diamond2.js","../node_modules/victory-vendor/lib-vendor/d3-shape/src/symbol/plus.js","../node_modules/victory-vendor/lib-vendor/d3-shape/src/symbol/square.js","../node_modules/victory-vendor/lib-vendor/d3-shape/src/symbol/square2.js","../node_modules/victory-vendor/lib-vendor/d3-shape/src/symbol/star.js","../node_modules/victory-vendor/lib-vendor/d3-shape/src/symbol/triangle.js","../node_modules/victory-vendor/lib-vendor/d3-shape/src/symbol/triangle2.js","../node_modules/victory-vendor/lib-vendor/d3-shape/src/symbol/wye.js","../node_modules/victory-vendor/lib-vendor/d3-shape/src/symbol/x.js","../node_modules/victory-vendor/lib-vendor/d3-shape/src/curve/cardinalClosed.js","../node_modules/victory-vendor/lib-vendor/d3-shape/src/curve/cardinalOpen.js","../node_modules/victory-vendor/lib-vendor/d3-shape/src/order/appearance.js","../node_modules/lodash/toFinite.js","../node_modules/lodash/toNumber.js","../node_modules/victory-vendor/lib-vendor/d3-array/src/bisect.js","../node_modules/victory-vendor/lib-vendor/d3-array/src/bisector.js","../node_modules/victory-vendor/lib-vendor/d3-array/src/descending.js","../node_modules/victory-vendor/lib-vendor/d3-array/src/number.js","../node_modules/victory-vendor/lib-vendor/d3-array/src/deviation.js","../node_modules/victory-vendor/lib-vendor/d3-array/src/variance.js","../node_modules/victory-vendor/lib-vendor/d3-array/src/extent.js","../node_modules/victory-vendor/lib-vendor/d3-array/src/group.js","../node_modules/victory-vendor/lib-vendor/d3-array/src/identity.js","../node_modules/victory-vendor/lib-vendor/d3-array/src/permute.js","../node_modules/victory-vendor/lib-vendor/d3-array/src/nice.js","../node_modules/victory-vendor/lib-vendor/d3-array/src/threshold/sturges.js","../node_modules/victory-vendor/lib-vendor/d3-array/src/max.js","../node_modules/victory-vendor/lib-vendor/d3-array/src/quickselect.js","../node_modules/victory-vendor/lib-vendor/d3-array/src/maxIndex.js","../node_modules/victory-vendor/lib-vendor/d3-array/src/minIndex.js","../node_modules/victory-vendor/lib-vendor/d3-array/src/leastIndex.js","../node_modules/victory-vendor/lib-vendor/d3-array/src/transpose.js","../node_modules/victory-vendor/lib-vendor/d3-array/src/superset.js","../node_modules/victory-vendor/lib-vendor/d3-scale/src/ordinal.js","../node_modules/victory-vendor/lib-vendor/d3-color/src/math.js","../node_modules/victory-vendor/lib-vendor/d3-interpolate/src/rgb.js","../node_modules/victory-vendor/lib-vendor/d3-interpolate/src/basisClosed.js","../node_modules/victory-vendor/lib-vendor/d3-interpolate/src/constant.js","../node_modules/victory-vendor/lib-vendor/d3-interpolate/src/array.js","../node_modules/victory-vendor/lib-vendor/d3-interpolate/src/date.js","../node_modules/victory-vendor/lib-vendor/d3-interpolate/src/object.js","../node_modules/victory-vendor/lib-vendor/d3-interpolate/src/string.js","../node_modules/victory-vendor/lib-vendor/d3-scale/src/tickFormat.js","../node_modules/victory-vendor/lib-vendor/d3-format/src/index.js","../node_modules/victory-vendor/lib-vendor/d3-format/src/locale.js","../node_modules/victory-vendor/lib-vendor/d3-format/src/formatSpecifier.js","../node_modules/victory-vendor/lib-vendor/d3-format/src/formatPrefixAuto.js","../node_modules/victory-vendor/lib-vendor/d3-scale/src/nice.js","../node_modules/victory-vendor/lib-vendor/d3-scale/src/time.js","../node_modules/victory-vendor/lib-vendor/d3-time/src/millisecond.js","../node_modules/victory-vendor/lib-vendor/d3-time/src/second.js","../node_modules/victory-vendor/lib-vendor/d3-time/src/minute.js","../node_modules/victory-vendor/lib-vendor/d3-time/src/hour.js","../node_modules/victory-vendor/lib-vendor/d3-time/src/day.js","../node_modules/victory-vendor/lib-vendor/d3-time/src/week.js","../node_modules/victory-vendor/lib-vendor/d3-time/src/month.js","../node_modules/victory-vendor/lib-vendor/d3-time/src/year.js","../node_modules/victory-vendor/lib-vendor/d3-time/src/utcMinute.js","../node_modules/victory-vendor/lib-vendor/d3-time/src/utcHour.js","../node_modules/victory-vendor/lib-vendor/d3-time/src/utcDay.js","../node_modules/victory-vendor/lib-vendor/d3-time/src/utcWeek.js","../node_modules/victory-vendor/lib-vendor/d3-time/src/utcMonth.js","../node_modules/victory-vendor/lib-vendor/d3-time/src/utcYear.js","../node_modules/victory-vendor/lib-vendor/d3-time-format/src/index.js","../node_modules/victory-vendor/lib-vendor/d3-time-format/src/locale.js","../node_modules/victory-vendor/lib-vendor/d3-time-format/src/isoFormat.js","../node_modules/victory-vendor/lib-vendor/d3-scale/src/sequential.js","../node_modules/lodash/_baseGt.js","../node_modules/lodash/_baseLt.js","../node_modules/react-redux/node_modules/react-is/index.js","../../src/GlobalSettings.ts","../node_modules/shallowequal/index.js","../node_modules/@emotion/stylis/dist/stylis.browser.esm.js","../node_modules/@emotion/unitless/dist/unitless.browser.esm.js","../node_modules/yup/node_modules/lodash-es/stubFalse.js","../node_modules/yup/node_modules/lodash-es/_cloneBuffer.js","../node_modules/toposort/index.js","../node_modules/formik/node_modules/lodash-es/stubFalse.js","../node_modules/formik/node_modules/lodash-es/_cloneBuffer.js","../node_modules/lodash/union.js","../../src/components/Icon/FontIcon.tsx","../../src/slots.tsx","../../src/object.ts","../../src/array.ts","../../src/hoistStatics.ts","../../src/utilities/keytips/KeytipManager.ts","../../src/warn/warnConditionallyRequiredProps.ts","../../src/warn/warnMutuallyExclusive.ts","../node_modules/lodash/entries.js","../../src/components/Pivot/PivotItem.tsx","../../../../src/query/endpointDefinitions.ts","../../../../src/query/tsHelpers.ts","../../../../src/query/utils/capitalize.ts","../../../../src/query/defaultSerializeQueryArgs.ts","../../../../src/query/react/constants.ts","../../../../src/query/react/useSerializedStableValue.ts","../../../../src/query/react/useShallowStableValue.ts","../../../../src/query/react/buildHooks.ts","../../../../src/query/react/module.ts","../../../../src/query/react/index.ts","../node_modules/lodash/throttle.js","../node_modules/lodash/flatMap.js","../node_modules/lodash/find.js","../node_modules/lodash/mapValues.js","../../utils.ts","../../equals.ts","../../comparator.ts","../../index.ts","../node_modules/lodash/isPlainObject.js","../node_modules/lodash/isBoolean.js","../node_modules/lodash/last.js","../node_modules/eventemitter3/index.js","../node_modules/recharts/es6/cartesian/XAxis.js","../node_modules/recharts/es6/cartesian/YAxis.js","../node_modules/recharts/es6/polar/Pie.js","../node_modules/lodash/maxBy.js","../node_modules/lodash/minBy.js","../node_modules/react-bootstrap/esm/NavbarBrand.js","../node_modules/dom-helpers/esm/ownerDocument.js","../node_modules/dom-helpers/esm/canUseDOM.js","../node_modules/@redux-saga/deferred/dist/redux-saga-deferred.esm.js","../node_modules/@redux-saga/core/dist/redux-saga-core.esm.js","../node_modules/redux-saga/dist/redux-saga-core-npm-proxy.esm.js","../../src/components/DetailsList/DetailsRowFields.tsx","../../src/components/DetailsList/DetailsRow.base.tsx","../../src/components/DetailsList/DetailsRow.ts","../../src/components/Button/DefaultButton/DefaultButton.styles.ts","../../src/components/Button/ButtonThemes.ts","../../src/components/Button/DefaultButton/DefaultButton.tsx","../../src/components/Button/ActionButton/ActionButton.styles.ts","../../src/components/Button/ActionButton/ActionButton.tsx","../node_modules/react-bootstrap/esm/AbstractNavItem.js","../node_modules/react-bootstrap/esm/NavLink.js","../../src/mergeStyles.ts","../../src/css.ts","../../src/ie11Detector.ts","../../src/focus.ts","../../src/elementContainsAttribute.ts","../node_modules/react/cjs/react.production.min.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/scheduler/index.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/react-is/cjs/react-is.production.min.js","../node_modules/react-redux/node_modules/react-is/cjs/react-is.production.min.js","../node_modules/react-router/node_modules/isarray/index.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/lodash/_isFlattenable.js","../node_modules/lodash/_baseIsArguments.js","../node_modules/lodash/_getRawTag.js","../node_modules/lodash/_objectToString.js","../node_modules/lodash/_overRest.js","../node_modules/lodash/_apply.js","../node_modules/lodash/_setToString.js","../node_modules/lodash/_baseSetToString.js","../node_modules/lodash/_baseIsNative.js","../node_modules/lodash/_isMasked.js","../node_modules/lodash/_coreJsData.js","../node_modules/lodash/_getValue.js","../node_modules/lodash/_shortOut.js","../node_modules/lodash/_mapCacheClear.js","../node_modules/lodash/_Hash.js","../node_modules/lodash/_hashClear.js","../node_modules/lodash/_hashDelete.js","../node_modules/lodash/_hashGet.js","../node_modules/lodash/_hashHas.js","../node_modules/lodash/_hashSet.js","../node_modules/lodash/_listCacheClear.js","../node_modules/lodash/_listCacheDelete.js","../node_modules/lodash/_listCacheGet.js","../node_modules/lodash/_listCacheHas.js","../node_modules/lodash/_listCacheSet.js","../node_modules/lodash/_mapCacheDelete.js","../node_modules/lodash/_isKeyable.js","../node_modules/lodash/_mapCacheGet.js","../node_modules/lodash/_mapCacheHas.js","../node_modules/lodash/_mapCacheSet.js","../node_modules/lodash/_setCacheAdd.js","../node_modules/lodash/_setCacheHas.js","../node_modules/lodash/_arrayIncludes.js","../node_modules/lodash/_baseIndexOf.js","../node_modules/lodash/_baseIsNaN.js","../node_modules/lodash/_strictIndexOf.js","../node_modules/lodash/_arrayIncludesWith.js","../node_modules/lodash/_createSet.js","../node_modules/lodash/noop.js","../node_modules/lodash/isArrayLikeObject.js","../../src/controlled.ts","../node_modules/lodash/toPairs.js","../node_modules/lodash/_createToPairs.js","../node_modules/lodash/_baseToPairs.js","../node_modules/lodash/_DataView.js","../node_modules/lodash/_Promise.js","../node_modules/lodash/_WeakMap.js","../node_modules/lodash/_setToPairs.js","../node_modules/lodash/_arrayLikeKeys.js","../node_modules/lodash/_baseTimes.js","../node_modules/lodash/stubFalse.js","../node_modules/lodash/_baseIsTypedArray.js","../node_modules/lodash/_nodeUtil.js","../node_modules/lodash/_baseKeys.js","../node_modules/lodash/_isPrototype.js","../node_modules/lodash/_nativeKeys.js","../node_modules/validator/lib/toInt.js","../node_modules/validator/lib/toBoolean.js","../node_modules/validator/lib/equals.js","../node_modules/validator/lib/contains.js","../node_modules/validator/lib/matches.js","../node_modules/validator/lib/isURL.js","../node_modules/validator/lib/isMACAddress.js","../node_modules/validator/lib/isIPRange.js","../node_modules/validator/lib/isTime.js","../node_modules/validator/lib/isBoolean.js","../node_modules/validator/lib/isLocale.js","../node_modules/validator/lib/isAbaRouting.js","../node_modules/validator/lib/isAlpha.js","../node_modules/validator/lib/isAlphanumeric.js","../node_modules/validator/lib/isNumeric.js","../node_modules/validator/lib/isPassportNumber.js","../node_modules/validator/lib/isPort.js","../node_modules/validator/lib/isLowercase.js","../node_modules/validator/lib/isUppercase.js","../node_modules/validator/lib/isIMEI.js","../node_modules/validator/lib/isAscii.js","../node_modules/validator/lib/isVariableWidth.js","../node_modules/validator/lib/isMultibyte.js","../node_modules/validator/lib/isSemVer.js","../node_modules/validator/lib/util/multilineRegex.js","../node_modules/validator/lib/isSurrogatePair.js","../node_modules/validator/lib/isDecimal.js","../node_modules/validator/lib/util/includes.js","../node_modules/validator/lib/isOctal.js","../node_modules/validator/lib/isDivisibleBy.js","../node_modules/validator/lib/isHexColor.js","../node_modules/validator/lib/isRgbColor.js","../node_modules/validator/lib/isHSL.js","../node_modules/validator/lib/isISRC.js","../node_modules/validator/lib/isIBAN.js","../node_modules/validator/lib/isBIC.js","../node_modules/validator/lib/isMD5.js","../node_modules/validator/lib/isHash.js","../node_modules/validator/lib/isJWT.js","../node_modules/validator/lib/isJSON.js","../node_modules/validator/lib/isEmpty.js","../node_modules/validator/lib/isLength.js","../node_modules/validator/lib/isUUID.js","../node_modules/validator/lib/isMongoId.js","../node_modules/validator/lib/isAfter.js","../node_modules/validator/lib/isBefore.js","../node_modules/validator/lib/isIn.js","../node_modules/validator/lib/isCreditCard.js","../node_modules/validator/lib/isIdentityCard.js","../node_modules/validator/lib/isEAN.js","../node_modules/validator/lib/isISIN.js","../node_modules/validator/lib/isISBN.js","../node_modules/validator/lib/isISSN.js","../node_modules/validator/lib/isTaxID.js","../node_modules/validator/lib/isMobilePhone.js","../node_modules/validator/lib/isEthereumAddress.js","../node_modules/validator/lib/isCurrency.js","../node_modules/validator/lib/isBtcAddress.js","../node_modules/validator/lib/isISO6346.js","../node_modules/validator/lib/isISO6391.js","../node_modules/validator/lib/isISO8601.js","../node_modules/validator/lib/isRFC3339.js","../node_modules/validator/lib/isISO31661Alpha3.js","../node_modules/validator/lib/isISO4217.js","../node_modules/validator/lib/isBase32.js","../node_modules/validator/lib/isBase58.js","../node_modules/validator/lib/isDataURI.js","../node_modules/validator/lib/isMagnetURI.js","../node_modules/validator/lib/isMailtoURI.js","../node_modules/validator/lib/isMimeType.js","../node_modules/validator/lib/isLatLong.js","../node_modules/validator/lib/isPostalCode.js","../node_modules/validator/lib/escape.js","../node_modules/validator/lib/unescape.js","../node_modules/validator/lib/stripLow.js","../node_modules/validator/lib/whitelist.js","../node_modules/validator/lib/isWhitelisted.js","../node_modules/validator/lib/normalizeEmail.js","../node_modules/validator/lib/isSlug.js","../node_modules/validator/lib/isLicensePlate.js","../node_modules/validator/lib/isStrongPassword.js","../node_modules/validator/lib/isVAT.js","../node_modules/lodash/_createInverter.js","../node_modules/lodash/_baseInverter.js","../node_modules/lodash/_baseFor.js","../node_modules/lodash/_createBaseFor.js","../node_modules/lodash/_baseFilter.js","../node_modules/lodash/_createBaseEach.js","../node_modules/lodash/_baseMatches.js","../node_modules/lodash/_baseIsMatch.js","../node_modules/lodash/_stackClear.js","../node_modules/lodash/_stackDelete.js","../node_modules/lodash/_stackGet.js","../node_modules/lodash/_stackHas.js","../node_modules/lodash/_stackSet.js","../node_modules/lodash/_baseIsEqualDeep.js","../node_modules/lodash/_equalByTag.js","../node_modules/lodash/_Uint8Array.js","../node_modules/lodash/_equalObjects.js","../node_modules/lodash/_getAllKeys.js","../node_modules/lodash/_baseGetAllKeys.js","../node_modules/lodash/_getSymbols.js","../node_modules/lodash/stubArray.js","../node_modules/lodash/_getMatchData.js","../node_modules/lodash/_baseMatchesProperty.js","../node_modules/lodash/_stringToPath.js","../node_modules/lodash/_memoizeCapped.js","../node_modules/lodash/_baseToString.js","../node_modules/lodash/hasIn.js","../node_modules/lodash/_baseHasIn.js","../node_modules/lodash/_hasPath.js","../node_modules/lodash/property.js","../node_modules/lodash/_baseProperty.js","../node_modules/lodash/_basePropertyDeep.js","../node_modules/lodash/_createAggregator.js","../node_modules/lodash/_arrayAggregator.js","../node_modules/lodash/_baseAggregator.js","../node_modules/lodash/_baseSome.js","../node_modules/lodash/_createCaseFirst.js","../node_modules/lodash/_castSlice.js","../node_modules/lodash/_baseSlice.js","../node_modules/lodash/_stringToArray.js","../node_modules/lodash/_asciiToArray.js","../node_modules/lodash/_unicodeToArray.js","../node_modules/victory-vendor/lib/d3-shape.js","../node_modules/victory-vendor/lib-vendor/d3-shape/src/index.js","../node_modules/victory-vendor/lib-vendor/d3-shape/src/arc.js","../node_modules/victory-vendor/lib-vendor/d3-path/src/path.js","../node_modules/victory-vendor/lib-vendor/d3-shape/src/pie.js","../node_modules/victory-vendor/lib-vendor/d3-shape/src/descending.js","../node_modules/victory-vendor/lib-vendor/d3-shape/src/identity.js","../node_modules/victory-vendor/lib-vendor/d3-shape/src/areaRadial.js","../node_modules/victory-vendor/lib-vendor/d3-shape/src/link.js","../node_modules/victory-vendor/lib-vendor/d3-shape/src/symbol.js","../node_modules/victory-vendor/lib-vendor/d3-shape/src/curve/basisClosed.js","../node_modules/victory-vendor/lib-vendor/d3-shape/src/curve/basisOpen.js","../node_modules/victory-vendor/lib-vendor/d3-shape/src/curve/bundle.js","../node_modules/victory-vendor/lib-vendor/d3-shape/src/curve/catmullRomClosed.js","../node_modules/victory-vendor/lib-vendor/d3-shape/src/curve/catmullRomOpen.js","../node_modules/victory-vendor/lib-vendor/d3-shape/src/curve/linearClosed.js","../node_modules/victory-vendor/lib-vendor/d3-shape/src/curve/monotone.js","../node_modules/victory-vendor/lib-vendor/d3-shape/src/curve/natural.js","../node_modules/victory-vendor/lib-vendor/d3-shape/src/curve/step.js","../node_modules/victory-vendor/lib-vendor/d3-shape/src/stack.js","../node_modules/victory-vendor/lib-vendor/d3-shape/src/offset/expand.js","../node_modules/victory-vendor/lib-vendor/d3-shape/src/offset/diverging.js","../node_modules/victory-vendor/lib-vendor/d3-shape/src/offset/silhouette.js","../node_modules/victory-vendor/lib-vendor/d3-shape/src/offset/wiggle.js","../node_modules/victory-vendor/lib-vendor/d3-shape/src/order/descending.js","../node_modules/victory-vendor/lib-vendor/d3-shape/src/order/insideOut.js","../node_modules/victory-vendor/lib-vendor/d3-shape/src/order/reverse.js","../node_modules/lodash/_createRange.js","../node_modules/lodash/_baseRange.js","../node_modules/lodash/_baseTrim.js","../node_modules/lodash/_trimmedEndIndex.js","../node_modules/lodash/_baseOrderBy.js","../node_modules/lodash/_baseSortBy.js","../node_modules/lodash/_compareMultiple.js","../node_modules/lodash/_compareAscending.js","../node_modules/lodash/debounce.js","../node_modules/lodash/now.js","../node_modules/victory-vendor/lib/d3-scale.js","../node_modules/victory-vendor/lib-vendor/d3-scale/src/index.js","../node_modules/victory-vendor/lib-vendor/d3-scale/src/band.js","../node_modules/victory-vendor/lib-vendor/d3-array/src/cross.js","../node_modules/victory-vendor/lib-vendor/d3-array/src/cumsum.js","../node_modules/victory-vendor/lib-vendor/d3-array/src/fsum.js","../node_modules/victory-vendor/lib-vendor/d3-array/src/groupSort.js","../node_modules/victory-vendor/lib-vendor/d3-array/src/bin.js","../node_modules/victory-vendor/lib-vendor/d3-array/src/array.js","../node_modules/victory-vendor/lib-vendor/d3-array/src/constant.js","../node_modules/victory-vendor/lib-vendor/d3-array/src/threshold/freedmanDiaconis.js","../node_modules/victory-vendor/lib-vendor/d3-array/src/threshold/scott.js","../node_modules/victory-vendor/lib-vendor/d3-array/src/mean.js","../node_modules/victory-vendor/lib-vendor/d3-array/src/median.js","../node_modules/victory-vendor/lib-vendor/d3-array/src/merge.js","../node_modules/victory-vendor/lib-vendor/d3-array/src/mode.js","../node_modules/victory-vendor/lib-vendor/d3-array/src/pairs.js","../node_modules/victory-vendor/lib-vendor/d3-array/src/range.js","../node_modules/victory-vendor/lib-vendor/d3-array/src/rank.js","../node_modules/victory-vendor/lib-vendor/d3-array/src/least.js","../node_modules/victory-vendor/lib-vendor/d3-array/src/greatest.js","../node_modules/victory-vendor/lib-vendor/d3-array/src/greatestIndex.js","../node_modules/victory-vendor/lib-vendor/d3-array/src/scan.js","../node_modules/victory-vendor/lib-vendor/d3-array/src/shuffle.js","../node_modules/victory-vendor/lib-vendor/d3-array/src/sum.js","../node_modules/victory-vendor/lib-vendor/d3-array/src/zip.js","../node_modules/victory-vendor/lib-vendor/d3-array/src/every.js","../node_modules/victory-vendor/lib-vendor/d3-array/src/some.js","../node_modules/victory-vendor/lib-vendor/d3-array/src/filter.js","../node_modules/victory-vendor/lib-vendor/d3-array/src/map.js","../node_modules/victory-vendor/lib-vendor/d3-array/src/reduce.js","../node_modules/victory-vendor/lib-vendor/d3-array/src/reverse.js","../node_modules/victory-vendor/lib-vendor/d3-array/src/difference.js","../node_modules/victory-vendor/lib-vendor/d3-array/src/disjoint.js","../node_modules/victory-vendor/lib-vendor/d3-array/src/intersection.js","../node_modules/victory-vendor/lib-vendor/d3-array/src/subset.js","../node_modules/victory-vendor/lib-vendor/d3-array/src/union.js","../node_modules/victory-vendor/lib-vendor/d3-scale/src/identity.js","../node_modules/victory-vendor/lib-vendor/d3-color/src/lab.js","../node_modules/victory-vendor/lib-vendor/d3-color/src/cubehelix.js","../node_modules/victory-vendor/lib-vendor/d3-interpolate/src/discrete.js","../node_modules/victory-vendor/lib-vendor/d3-interpolate/src/hue.js","../node_modules/victory-vendor/lib-vendor/d3-interpolate/src/round.js","../node_modules/victory-vendor/lib-vendor/d3-interpolate/src/transform/index.js","../node_modules/victory-vendor/lib-vendor/d3-interpolate/src/transform/parse.js","../node_modules/victory-vendor/lib-vendor/d3-interpolate/src/transform/decompose.js","../node_modules/victory-vendor/lib-vendor/d3-interpolate/src/zoom.js","../node_modules/victory-vendor/lib-vendor/d3-interpolate/src/hsl.js","../node_modules/victory-vendor/lib-vendor/d3-interpolate/src/lab.js","../node_modules/victory-vendor/lib-vendor/d3-interpolate/src/hcl.js","../node_modules/victory-vendor/lib-vendor/d3-interpolate/src/cubehelix.js","../node_modules/victory-vendor/lib-vendor/d3-interpolate/src/piecewise.js","../node_modules/victory-vendor/lib-vendor/d3-interpolate/src/quantize.js","../node_modules/victory-vendor/lib-vendor/d3-scale/src/constant.js","../node_modules/victory-vendor/lib-vendor/d3-format/src/defaultLocale.js","../node_modules/victory-vendor/lib-vendor/d3-format/src/formatGroup.js","../node_modules/victory-vendor/lib-vendor/d3-format/src/formatNumerals.js","../node_modules/victory-vendor/lib-vendor/d3-format/src/formatTrim.js","../node_modules/victory-vendor/lib-vendor/d3-format/src/formatTypes.js","../node_modules/victory-vendor/lib-vendor/d3-format/src/formatRounded.js","../node_modules/victory-vendor/lib-vendor/d3-format/src/identity.js","../node_modules/victory-vendor/lib-vendor/d3-format/src/precisionFixed.js","../node_modules/victory-vendor/lib-vendor/d3-format/src/precisionPrefix.js","../node_modules/victory-vendor/lib-vendor/d3-format/src/precisionRound.js","../node_modules/victory-vendor/lib-vendor/d3-scale/src/radial.js","../node_modules/victory-vendor/lib-vendor/d3-scale/src/quantile.js","../node_modules/victory-vendor/lib-vendor/d3-scale/src/quantize.js","../node_modules/victory-vendor/lib-vendor/d3-scale/src/threshold.js","../node_modules/victory-vendor/lib-vendor/d3-time/src/ticks.js","../node_modules/victory-vendor/lib-vendor/d3-time-format/src/isoParse.js","../node_modules/victory-vendor/lib-vendor/d3-scale/src/utcTime.js","../node_modules/victory-vendor/lib-vendor/d3-scale/src/sequentialQuantile.js","../node_modules/victory-vendor/lib-vendor/d3-scale/src/diverging.js","../node_modules/lodash/_createFind.js","../node_modules/lodash/findIndex.js","../node_modules/lodash/toInteger.js","../node_modules/lodash/_arrayEvery.js","../node_modules/lodash/_baseEvery.js","../node_modules/lodash/_getPrototype.js","../node_modules/warning/warning.js","../node_modules/prop-types-extra/lib/all.js","../node_modules/prop-types-extra/lib/utils/createChainableTypeChecker.js","../../src/mergeStyleSets.ts","../../src/scroll.ts","../../src/customizations/customizable.tsx","../../src/BaseComponent.ts","../EnumHelperFuncs.js","../../src/keyboard.ts","../../src/useFocusRects.ts","../../src/concatStyleSetsWithProps.ts","../../src/classNamesFunction.ts","../../src/DelayedRender.tsx","../../src/createComponent.tsx","../../src/createMergedRef.ts","../../src/portalContainsElement.ts","../../src/renderFunction/composeRenderFunction.tsx","../../src/components/GroupedList/GroupedList.types.ts","../../src/useConst.ts","../../src/componentAs/composeComponentAs.tsx","../../src/aria.ts","../../src/utilities/selection/SelectionZone.tsx","../../src/selection/Selection.ts","../../src/utilities/selectableOption/SelectableOption.types.ts","../../src/osDetector.ts","../../src/mobileDetector.ts","../../src/components/Popup/Popup.tsx","../../src/components/Button/CommandButton/CommandButton.tsx","../../src/utilities/selectableOption/SelectableOption.ts","../../src/components/Button/PrimaryButton/PrimaryButton.tsx","../../src/initials.ts","../../src/components/Autofill/Autofill.tsx","../../src/TsLibShims.ts","../node_modules/recharts/es6/chart/BarChart.js","../../src/useId.ts","../node_modules/react-bootstrap/esm/Button.js","../EnvUtils.js","../DbgExtensionUtils.js","../DiagnosticLogger.js","../Enums.js","../StorageHelperFuncs.js","../applicationinsights-common.js","../DataSanitizer.js","../Constants.js","../TelemetryItemCreator.js","../Event.js","../Trace.js","../DataPoint.js","../Metric.js","../PageView.js","../PageViewPerformance.js","../Exception.js","../CookieMgr.js","../RandomHelper.js","../DataCacheHelper.js","../EventHelpers.js","../CoreUtils.js","../W3cTraceParent.js","../DomHelperFuncs.js","../RequestResponseHeaders.js","../UrlHelperFuncs.js","../Util.js","../RemoteDependencyData.js","../PerfManager.js","../TelemetryHelpers.js","../ProcessTelemetryContext.js","../InstrumentHooks.js","../UnloadHandlerContainer.js","../BaseTelemetryPlugin.js","../PageViewManager.js","../PageViewPerformanceManager.js","../PageVisitTimeManager.js","../Timing.js","../AnalyticsPlugin.js","../ContextTagKeys.js","../PartAExtensions.js","../Envelope.js","../Data.js","../EnvelopeCreator.js","../Offline.js","../SendBuffer.js","../Sender.js","../Serializer.js","../HashCodeScoreGenerator.js","../SamplingScoreGenerator.js","../Sample.js","../ConnectionStringParser.js","../IConfig.js","../ChannelController.js","../TelemetryInitializerPlugin.js","../BaseCore.js","../NotificationManager.js","../AppInsightsCore.js","../ajaxRecord.js","../ajax.js","../Application.js","../Device.js","../Internal.js","../Location.js","../Session.js","../TelemetryTrace.js","../User.js","../TelemetryContext.js","../Initialization.js","../PropertiesPlugin.js","../node_modules/msal/node_modules/tslib/tslib.es6.js","../../utils/CryptoUtils.ts","../../utils/Constants.ts","../../authority/Authority.ts","../../error/AuthError.ts","../../utils/StringUtils.ts","../../error/ClientAuthError.ts","../../error/ClientConfigurationError.ts","../../src/ScopeSet.ts","../../utils/UrlUtils.ts","../../cache/AccessTokenKey.ts","../../cache/AccessTokenValue.ts","../../src/ServerRequestParameters.ts","../../src/packageMetadata.ts","../../src/XHRClient.ts","../../authority/TrustedAuthority.ts","../../src/Logger.ts","../../src/ClientInfo.ts","../../utils/TimeUtils.ts","../../utils/TokenUtils.ts","../../src/IdToken.ts","../../cache/AccessTokenCacheItem.ts","../../cache/BrowserStorage.ts","../../utils/RequestUtils.ts","../../cache/AuthCache.ts","../../src/Account.ts","../../utils/WindowUtils.ts","../../utils/ResponseUtils.ts","../../authority/AuthorityFactory.ts","../../src/Configuration.ts","../../error/ServerError.ts","../../error/InteractionRequiredAuthError.ts","../../src/AuthResponse.ts","../../telemetry/TelemetryConstants.ts","../../telemetry/ApiEvent.ts","../../telemetry/TelemetryUtils.ts","../../telemetry/TelemetryEvent.ts","../../telemetry/DefaultEvent.ts","../../telemetry/HttpEvent.ts","../../telemetry/TelemetryManager.ts","../../utils/AuthCacheUtils.ts","../../src/UserAgentApplication.ts","../../src/fabric-icons.ts","../../src/fabric-icons-0.ts","../../src/fabric-icons-1.ts","../../src/fabric-icons-2.ts","../../src/fabric-icons-3.ts","../../src/fabric-icons-4.ts","../../src/fabric-icons-5.ts","../../src/fabric-icons-6.ts","../../src/fabric-icons-7.ts","../../src/fabric-icons-8.ts","../../src/fabric-icons-9.ts","../../src/fabric-icons-10.ts","../../src/fabric-icons-11.ts","../../src/fabric-icons-12.ts","../../src/fabric-icons-13.ts","../../src/fabric-icons-14.ts","../../src/fabric-icons-15.ts","../../src/fabric-icons-16.ts","../../src/fabric-icons-17.ts","../../src/iconAliases.ts","../node_modules/dom-helpers/esm/camelize.js","../node_modules/react-bootstrap/esm/createWithBsPrefix.js","../node_modules/dom-helpers/esm/getComputedStyle.js","../node_modules/dom-helpers/esm/ownerWindow.js","../node_modules/dom-helpers/esm/hyphenate.js","../node_modules/dom-helpers/esm/hyphenateStyle.js","../node_modules/dom-helpers/esm/isTransform.js","../node_modules/dom-helpers/esm/css.js","../node_modules/dom-helpers/esm/addEventListener.js","../node_modules/dom-helpers/esm/removeEventListener.js","../node_modules/dom-helpers/esm/listen.js","../node_modules/dom-helpers/esm/transitionEnd.js","../node_modules/dom-helpers/esm/triggerEvent.js","../node_modules/react-bootstrap/esm/transitionEndListener.js","../node_modules/react-bootstrap/esm/Collapse.js","../node_modules/react-bootstrap/esm/triggerBrowserReflow.js","../node_modules/react-bootstrap/esm/NavbarCollapse.js","../node_modules/react-bootstrap/esm/NavbarToggle.js","../node_modules/react-bootstrap/esm/Navbar.js","../../src/components/DetailsList/DetailsHeader.types.ts","../../src/utilities/dragdrop/DragDropHelper.tsx","../../src/components/DetailsList/DetailsColumn.base.tsx","../../src/components/DetailsList/DetailsColumn.styles.ts","../../src/components/DetailsList/DetailsColumn.ts","../../src/components/DetailsList/DetailsHeader.base.tsx","../../src/components/DetailsList/DetailsHeader.ts","../../src/dom/getRect.ts","../../src/utilities/decorators/withViewport.tsx","../../src/utilities/groupedList/GroupedListUtility.tsx","../../src/components/DetailsList/DetailsList.base.tsx","../../src/components/DetailsList/DetailsList.styles.ts","../../src/components/DetailsList/DetailsList.ts","../../src/components/GroupedList/GroupedList.styles.ts","../../src/components/GroupedList/GroupHeader.styles.ts","../../src/components/GroupedList/GroupHeader.base.tsx","../../src/components/GroupedList/GroupHeader.ts","../../src/components/GroupedList/GroupShowAll.styles.ts","../../src/components/GroupedList/GroupShowAll.base.tsx","../../src/components/GroupedList/GroupShowAll.ts","../../src/components/GroupedList/GroupFooter.styles.ts","../../src/components/GroupedList/GroupFooter.base.tsx","../../src/components/GroupedList/GroupFooter.ts","../../src/components/GroupedList/GroupedListSection.tsx","../../src/components/GroupedList/GroupedList.base.tsx","../../src/components/GroupedList/GroupedList.ts","../../src/customizations/mergeSettings.ts","../../src/customizations/Customizer.tsx","../../src/customizations/mergeCustomizations.ts","../../src/components/Fabric/Fabric.base.tsx","../../src/components/Fabric/Fabric.styles.ts","../../src/components/Fabric/Fabric.tsx","../../src/setVirtualParent.ts","../../src/components/Layer/Layer.notification.ts","../../src/components/Layer/Layer.base.tsx","../../src/components/Layer/Layer.styles.ts","../../src/components/Layer/Layer.tsx","../../src/components/Persona/PersonaConsts.tsx","../../src/components/Persona/PersonaPresence/PersonaPresence.base.tsx","../../src/components/Persona/PersonaPresence/PersonaPresence.styles.ts","../../src/components/Persona/PersonaPresence/PersonaPresence.tsx","../../src/components/Persona/PersonaInitialsColor.ts","../../src/components/Persona/PersonaCoin/PersonaCoin.base.tsx","../../src/components/Persona/PersonaCoin/PersonaCoin.styles.ts","../../src/components/Persona/PersonaCoin/PersonaCoin.tsx","../../src/components/Persona/Persona.base.tsx","../../src/components/Persona/Persona.styles.ts","../../src/components/Persona/Persona.tsx","../../src/components/ResizeGroup/ResizeGroup.types.ts","../../src/components/OverflowSet/OverflowSet.base.tsx","../../src/components/OverflowSet/OverflowSet.styles.ts","../../src/components/OverflowSet/OverflowSet.ts","../../src/components/ResizeGroup/ResizeGroup.base.tsx","../../src/components/ResizeGroup/ResizeGroup.tsx","../../src/components/CommandBar/CommandBar.styles.ts","../../src/components/CommandBar/CommandBar.base.tsx","../../src/components/CommandBar/CommandBar.tsx","../../src/string.ts","../../src/components/Calendar/Calendar.scss.ts","../../src/components/Calendar/CalendarDay.tsx","../../src/components/Calendar/CalendarYear.tsx","../../src/components/Calendar/CalendarMonth.tsx","../../src/components/Calendar/Calendar.tsx","../../src/components/DatePicker/DatePicker.base.tsx","../../src/components/DatePicker/DatePicker.styles.ts","../../src/components/DatePicker/DatePicker.tsx","../../src/components/Tooltip/Tooltip.types.ts","../../src/components/Tooltip/Tooltip.base.tsx","../../src/components/Tooltip/Tooltip.tsx","../../src/components/Tooltip/Tooltip.styles.ts","../../src/components/Tooltip/TooltipHost.base.tsx","../../src/overflow.ts","../../src/components/Tooltip/TooltipHost.styles.ts","../../src/components/Tooltip/TooltipHost.ts","../node_modules/react-bootstrap/esm/CardContext.js","../node_modules/dom-helpers/esm/querySelectorAll.js","../node_modules/@restart/hooks/esm/useMergedRefs.js","../node_modules/react-bootstrap/esm/TabContext.js","../node_modules/react-bootstrap/esm/AbstractNav.js","../node_modules/@restart/hooks/esm/useForceUpdate.js","../node_modules/react-bootstrap/esm/NavItem.js","../node_modules/react-bootstrap/esm/Nav.js","../../src/Rectangle.ts","../../src/utilities/positioning/positioning.ts","../../src/components/Callout/CalloutContent.base.tsx","../../src/components/Callout/CalloutContent.styles.ts","../../src/components/Callout/CalloutContent.tsx","../../src/components/Callout/Callout.tsx","../../src/components/ChoiceGroup/ChoiceGroupOption/ChoiceGroupOption.base.tsx","../../src/components/ChoiceGroup/ChoiceGroupOption/ChoiceGroupOption.styles.ts","../../src/components/ChoiceGroup/ChoiceGroupOption/ChoiceGroupOption.tsx","../../src/components/ChoiceGroup/ChoiceGroup.base.tsx","../../src/components/ChoiceGroup/ChoiceGroup.styles.ts","../../src/components/ChoiceGroup/ChoiceGroup.tsx","../../src/components/Dropdown/utilities/DropdownSizePosCache.ts","../../src/components/Dropdown/Dropdown.base.tsx","../../src/safeRequestAnimationFrame.ts","../../src/components/Dropdown/Dropdown.styles.ts","../../src/components/Dropdown/Dropdown.ts","../../src/components/pickers/TagPicker/TagItem.styles.ts","../../src/components/pickers/TagPicker/TagItem.tsx","../../src/components/pickers/TagPicker/TagItemSuggestion.styles.ts","../../src/components/pickers/TagPicker/TagItemSuggestion.tsx","../../src/components/pickers/TagPicker/TagPicker.tsx","../../src/components/Modal/Modal.styles.ts","../../src/utilities/DraggableZone/DraggableZone.styles.ts","../../src/utilities/DraggableZone/DraggableZone.tsx","../../src/components/Modal/Modal.base.tsx","../../src/components/Modal/Modal.ts","../../src/components/TextField/TextField.base.tsx","../../src/components/TextField/TextField.styles.tsx","../../src/components/TextField/TextField.ts","../../src/utilities/keytips/KeytipUtils.ts","../../src/components/KeytipData/useKeytipData.ts","../../src/usePrevious.ts","../../src/components/KeytipData/KeytipData.tsx","../../src/components/List/utils/scroll.ts","../../src/components/List/List.types.ts","../../src/components/List/List.tsx","../../src/components/List/utils/canUseDom.ts","../../src/components/Pivot/Pivot.types.ts","../../src/components/Pivot/Pivot.base.tsx","../../src/components/Pivot/Pivot.styles.ts","../../src/components/Pivot/Pivot.tsx","../node_modules/recharts/es6/shape/Polygon.js","../node_modules/recharts/es6/polar/PolarAngleAxis.js","../node_modules/recharts/es6/polar/PolarRadiusAxis.js","../node_modules/recharts/es6/chart/PieChart.js","../../src/components/Spinner/Spinner.base.tsx","../../src/components/Spinner/Spinner.styles.tsx","../../src/components/Spinner/Spinner.tsx","../../src/components/Stack/StackUtils.ts","../../src/components/Stack/Stack.styles.ts","../../src/components/Stack/Stack.tsx","../../src/components/Text/Text.ts","../../src/components/Text/Text.view.tsx","../../src/components/Text/Text.styles.ts","../../src/components/Label/Label.base.tsx","../../src/components/Label/Label.tsx","../../src/components/Label/Label.styles.ts","../../src/components/Icon/Icon.types.ts","../../src/components/Icon/Icon.base.tsx","../../src/components/Icon/Icon.tsx","../../src/components/Link/Link.base.tsx","../../src/components/Link/Link.styles.ts","../../src/components/Link/Link.tsx","../../src/components/Panel/Panel.base.tsx","../../src/components/Panel/Panel.styles.ts","../../src/components/Panel/Panel.ts","../../src/components/Overlay/Overlay.base.tsx","../../src/components/Overlay/Overlay.styles.ts","../../src/components/Overlay/Overlay.tsx","../../src/components/Checkbox/Checkbox.base.tsx","../../src/components/Checkbox/Checkbox.styles.ts","../../src/components/Checkbox/Checkbox.tsx","../../src/components/MessageBar/MessageBar.base.tsx","../../src/components/MessageBar/MessageBar.styles.ts","../../src/components/MessageBar/MessageBar.tsx","../../src/components/Separator/Separator.base.tsx","../../src/components/Separator/Separator.tsx","../../src/components/Separator/Separator.styles.ts","../../src/components/pickers/PeoplePicker/PeoplePickerItems/PeoplePickerItemSuggestion.styles.ts","../../src/components/pickers/PeoplePicker/PeoplePickerItems/PeoplePickerItemSuggestion.tsx","../../src/components/pickers/PeoplePicker/PeoplePicker.tsx","../../src/components/ProgressIndicator/ProgressIndicator.base.tsx","../../src/components/ProgressIndicator/ProgressIndicator.styles.ts","../../src/components/ProgressIndicator/ProgressIndicator.tsx","../../src/components/ComboBox/ComboBox.tsx","../../src/components/ComboBox/ComboBox.styles.ts","../../src/components/ComboBox/ComboBox.classNames.ts","../../src/components/Toggle/Toggle.base.tsx","../../src/components/Toggle/Toggle.tsx","../../src/components/Toggle/Toggle.styles.ts","../../src/components/SearchBox/SearchBox.base.tsx","../../src/components/SearchBox/SearchBox.styles.tsx","../../src/components/SearchBox/SearchBox.tsx","../../src/dateValues/timeConstants.ts","../../src/dateMath/dateMath.ts","../../src/customizations/useCustomizationSettings.ts","../../src/styled.tsx","../../src/components/Check/Check.base.tsx","../../src/components/Check/Check.tsx","../../src/components/Button/IconButton/IconButton.styles.ts","../../src/components/Button/IconButton/IconButton.tsx","../../src/modalize.ts","../../src/components/FocusTrapZone/FocusTrapZone.tsx","../../src/components/Button/CommandBarButton/CommandBarButton.styles.ts","../../src/components/Button/CommandBarButton/CommandBarButton.tsx","../node_modules/@fluentui/react-focus/node_modules/tslib/tslib.es6.js","../../src/components/FocusZone/FocusZone.tsx"],"names":["module","exports","require","done","value","qEnd","safeName","patternOrChannel","channel","stringableFunc","String","func","name","fsmIterator","fsm","startState","stateUpdater","errorState","effect","nextState","next","arg","error","currentState","makeIterator","takeEvery","worker","_len","arguments","length","args","Array","_key","action","yTake","take","yFork","ac","fork","apply","concat","setAction","q1","q2","takeEvery$1","extendStatics","d","b","Object","setPrototypeOf","__proto__","p","hasOwnProperty","__extends","__","this","constructor","prototype","create","__assign","assign","t","s","i","n","call","__rest","e","indexOf","getOwnPropertySymbols","propertyIsEnumerable","__decorate","decorators","target","key","desc","c","r","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","__spreadArrays","il","k","a","j","jl","ReactReduxContext","React","createContext","batch","callback","createListenerCollection","first","last","clear","notify","listener","get","listeners","push","subscribe","isSubscribed","prev","nullListeners","createSubscription","store","parentSub","unsubscribe","handleChangeWrapper","subscription","onStateChange","trySubscribe","addNestedSub","notifyNestedSubs","Boolean","tryUnsubscribe","undefined","getListeners","useIsomorphicLayoutEffect","window","document","createElement","useLayoutEffect","useEffect","Provider","_ref","context","children","contextValue","useMemo","previousState","getState","Context","_excluded","_excluded2","EMPTY_ARRAY","NO_SUBSCRIPTION_ARRAY","storeStateUpdatesReducer","state","updateCount","payload","useIsomorphicLayoutEffectWithArgs","effectFunc","effectArgs","dependencies","captureWrapperProps","lastWrapperProps","lastChildProps","renderIsScheduled","wrapperProps","actualChildProps","childPropsFromStoreUpdate","current","subscribeUpdates","shouldHandleStateChanges","childPropsSelector","forceComponentUpdateDispatch","didUnsubscribe","lastThrownError","checkForUpdates","newChildProps","latestStoreState","type","initStateUpdates","connectAdvanced","selectorFactory","_ref2","_ref2$getDisplayName","getDisplayName","_ref2$methodName","methodName","_ref2$renderCountProp","renderCountProp","_ref2$shouldHandleSta","_ref2$storeKey","storeKey","_ref2$forwardRef","withRef","forwardRef","_ref2$context","connectOptions","_objectWithoutPropertiesLoose","WrappedComponent","wrappedComponentName","displayName","selectorFactoryOptions","_extends","pure","usePureOnlyMemo","ConnectFunction","props","_useMemo","reactReduxForwardedRef","propsContext","ContextToUse","Consumer","isContextConsumer","useContext","didStoreComeFromProps","dispatch","createChildSelector","_useMemo2","bind","overriddenContextValue","_useReducer","useReducer","previousStateUpdateResult","useRef","renderedWrappedComponent","ref","Connect","memo","forwarded","hoistStatics","is","x","y","shallowEqual","objA","objB","keysA","keys","keysB","wrapMapToPropsConstant","getConstant","options","constant","constantSelector","dependsOnOwnProps","getDependsOnOwnProps","mapToProps","wrapMapToPropsFunc","proxy","stateOrDispatch","ownProps","mapDispatchToProps","actionCreators","boundActionCreators","_loop","actionCreator","bindActionCreators","mapStateToProps","defaultMergeProps","stateProps","dispatchProps","mergeProps","mergedProps","areMergedPropsEqual","hasRunOnce","nextMergedProps","wrapMergePropsFunc","impureFinalPropsSelectorFactory","pureFinalPropsSelectorFactory","areStatesEqual","areOwnPropsEqual","areStatePropsEqual","hasRunAtLeastOnce","handleSubsequentCalls","nextOwnProps","propsChanged","stateChanged","nextStateProps","statePropsChanged","handleNewState","finalPropsSelectorFactory","initMapStateToProps","initMapDispatchToProps","initMergeProps","match","factories","result","Error","strictEqual","createConnect","_temp","_ref$connectHOC","connectHOC","_ref$mapStateToPropsF","mapStateToPropsFactories","defaultMapStateToPropsFactories","_ref$mapDispatchToPro","mapDispatchToPropsFactories","defaultMapDispatchToPropsFactories","_ref$mergePropsFactor","mergePropsFactories","defaultMergePropsFactories","_ref$selectorFactory","defaultSelectorFactory","_ref3","_ref3$pure","_ref3$areStatesEqual","_ref3$areOwnPropsEqua","_ref3$areStatePropsEq","_ref3$areMergedPropsE","extraOptions","useReduxContext","createStoreHook","useDefaultReduxContext","useStore","createDispatchHook","useDefaultStore","useDispatch","refEquality","createSelectorHook","selector","equalityFn","_useReduxContext","selectedState","contextSub","forceRender","latestSubscriptionCallbackError","latestSelector","latestSelectedState","storeState","newSelectedState","err","message","stack","newStoreState","_newSelectedState","useSelectorWithStoreAndSubscription","useDebugValue","newBatch","useSelector","mathSign","isPercent","isString","isNumber","lodashIsNumber","isNan","isNumOrStr","idCounter","uniqueId","prefix","id","getPercentValue","percent","totalValue","defaultValue","validate","index","parseFloat","slice","getAnyElementOfObject","obj","hasDuplicate","ary","isArray","len","cache","interpolateNumber","numberA","numberB","findEntryInArray","specifiedKey","specifiedValue","find","entry","baseHas","object","Symbol","root","objectProto","nativeObjectToString","toString","symToStringTag","toStringTag","getRawTag","isOwn","tag","unmasked","objectToString","baseGetTag","isObjectLike","isSymbol","reIsDeepProp","reIsPlainProp","isKey","test","isObject","isFunction","coreJsData","maskSrcKey","uid","exec","IE_PROTO","isMasked","funcToString","Function","toSource","reIsHostCtor","funcProto","reIsNative","RegExp","replace","baseIsNative","getValue","getNative","nativeCreate","hashClear","__data__","size","hashDelete","has","hashGet","data","hashHas","hashSet","Hash","entries","set","listCacheClear","eq","other","assocIndexOf","array","splice","listCacheDelete","pop","listCacheGet","listCacheHas","listCacheSet","ListCache","Map","mapCacheClear","isKeyable","getMapData","map","mapCacheDelete","mapCacheGet","mapCacheHas","mapCacheSet","MapCache","memoize","resolver","TypeError","memoized","Cache","memoizeCapped","rePropName","reEscapeChar","stringToPath","string","charCodeAt","number","quote","subString","arrayMap","iteratee","symbolProto","symbolToString","baseToString","castPath","baseIsArguments","isArguments","reIsUint","isIndex","isLength","toKey","hasPath","path","hasFunc","stackClear","stackDelete","stackGet","stackHas","stackSet","pairs","LARGE_ARRAY_SIZE","Stack","arrayEach","baseAssignValue","assignValue","objValue","copyObject","source","customizer","isNew","newValue","baseTimes","typedArrayTags","baseIsTypedArray","baseUnary","nodeIsTypedArray","nodeUtil","isTypedArray","arrayLikeKeys","inherited","isArr","isArg","isBuff","isBuffer","isType","skipIndexes","isPrototype","Ctor","overArg","transform","nativeKeys","baseKeys","isArrayLike","baseAssign","nativeKeysIn","baseKeysIn","isProto","keysIn","baseAssignIn","copyArray","arrayFilter","predicate","resIndex","stubArray","nativeGetSymbols","getSymbols","symbol","copySymbols","arrayPush","values","offset","getPrototype","getPrototypeOf","getSymbolsIn","copySymbolsIn","baseGetAllKeys","keysFunc","symbolsFunc","getAllKeys","getAllKeysIn","DataView","Promise","Set","WeakMap","dataViewCtorString","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","getTag","ArrayBuffer","resolve","ctorString","initCloneArray","input","Uint8Array","cloneArrayBuffer","arrayBuffer","byteLength","cloneDataView","dataView","isDeep","buffer","byteOffset","reFlags","cloneRegExp","regexp","lastIndex","symbolValueOf","valueOf","cloneSymbol","cloneTypedArray","typedArray","initCloneByTag","objectCreate","baseCreate","proto","initCloneObject","baseIsMap","nodeIsMap","isMap","baseIsSet","nodeIsSet","isSet","cloneableTags","baseClone","bitmask","isFlat","isFull","isFunc","cloneBuffer","stacked","forEach","subValue","add","cloneDeepWith","CLONE_DEEP_FLAG","iteratorToArray","iterator","mapToArray","setToArray","asciiToArray","split","reHasUnicode","hasUnicode","rsAstral","rsCombo","rsFitz","rsNonAstral","rsRegional","rsSurrPair","reOptMod","rsSeq","join","rsSymbol","reUnicode","unicodeToArray","stringToArray","baseValues","symIterator","toArray","errorToString","regExpToString","SYMBOL_REGEXP","printSimpleValue","val","quoteStrings","typeOf","printNumber","isNaN","getTime","toISOString","printValue","JSON","stringify","mixed","default","required","oneOf","notOneOf","notType","originalValue","isCast","msg","defined","min","max","matches","email","url","uuid","trim","lowercase","uppercase","lessThan","moreThan","notEqual","positive","negative","integer","date","boolean","isValue","noUnknown","__isYupSchema__","Condition","refs","then","otherwise","check","every","fn","_len2","_key2","schema","branch","base","parent","isSchema","strReg","ValidationError","errors","field","_this","inner","captureStackTrace","isError","formatError","params","label","_","once","cb","fired","runTests","endEarly","tests","sort","count","nestedErrors","createBaseFor","baseFor","fromRight","iterable","baseForOwn","setCacheAdd","setCacheHas","SetCache","arraySome","cacheHas","equalArrays","equalFunc","isPartial","arrLength","othLength","arrStacked","othStacked","seen","arrValue","othValue","compared","othIndex","equalByTag","convert","equalObjects","objProps","objLength","objStacked","skipCtor","objCtor","othCtor","baseIsEqualDeep","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","baseIsEqual","baseIsMatch","matchData","noCustomizer","srcValue","COMPARE_PARTIAL_FLAG","isStrictComparable","getMatchData","matchesStrictComparable","baseMatches","baseGet","baseHasIn","hasIn","baseMatchesProperty","identity","baseProperty","basePropertyDeep","property","baseIteratee","mapValues","prefixes","Reference","isContext","isSibling","getter","_proto","cast","describe","isRef","__isYupRef","createValidation","config","sync","rest","item","Ref","createError","overrides","nextParams","ctx","_result","validOrError","OPTIONS","getIn","lastPart","lastPartDebug","_part","isBracket","part","substr","innerType","idx","parseInt","fields","_type","parentPath","_createForOfIteratorHelperLoose","o","allowArrayLike","it","minLen","_arrayLikeToArray","from","_unsupportedIterableToArray","arr","arr2","RefSet","list","_step","description","_iterator","_step2","_iterator2","_toArray","delete","clone","merge","newItems","removeItems","_createClass","SchemaType","_deps","_conditions","_options","abortEarly","recursive","_exclusive","_whitelist","_blacklist","transforms","withMutation","typeError","locale","_defaultDefault","_this2","_mutate","_label","meta","_meta","before","prependDeep","sourceVal","targetVal","_default","v","_nullable","_typeCheck","conditions","reduce","condition","resolvedSchema","_cast","assert","formattedValue","formattedResult","rawValue","_this3","getDefault","_validate","_value","_this4","_options$from","_options$originalValu","_options$strict","strict","_options$abortEarly","_validating","initialTests","_typeError","_whitelistError","_blacklistError","maybeCb","reject","validateSync","isValid","catch","isValidSync","_getDefault","def","console","warn","isStrict","_isPresent","exclusive","notRequired","filter","nullable","isNullable","opts","isExclusive","when","deps","dep","enums","valids","invalids","strip","_strip","_option","findIndex","method","_arr","_i","_getIn","_i2","_arr2","_i3","_arr3","inherits","ctor","superCtor","spec","enumerable","writable","configurable","optional","BooleanSchema","MixedSchema","isTrue","isAbsent","isFalse","rEmail","rUrl","rUUID","isTrimmed","objStringTag","StringSchema","strValue","_length","_min","_max","regex","excludeEmptyString","search","ensure","toLowerCase","toUpperCase","NumberSchema","parsed","NaN","Number","less","more","isInteger","truncate","round","avail","Math","isoReg","invalidDate","Date","DateSchema","timestamp","struct","numericKeys","minutesOffset","UTC","parse","isoParse","limit","arrayReduce","accumulator","initAccum","basePropertyOf","deburrLetter","reLatin","reComboMark","deburr","reAsciiWord","asciiWords","reHasUnicodeWord","hasUnicodeWord","rsBreakRange","rsMathOpRange","rsBreak","rsDigits","rsDingbat","rsLower","rsMisc","rsUpper","rsMiscLower","rsMiscUpper","rsModifier","rsEmoji","reUnicodeWord","unicodeWords","words","pattern","guard","reApos","createCompounder","snakeCase","word","baseSlice","start","end","castSlice","createCaseFirst","upperFirst","strSymbols","chr","charAt","trailing","capitalize","camelCase","mapKeys","sortFields","excludes","edges","nodes","addNode","depPath","node","toposort","reverse","Infinity","some","ii","sortByKeyOrder","ObjectSchema","_nodes","dft","_sortErrors","_excludedEdges","shape","intermediateValue","innerOptions","__validating","isChanged","prop","exists","fieldValue","_opts","_opts$from","_opts$originalValue","_opts$abortEarly","_opts$recursive","pick","picked","omit","_step3","_iterator3","_from","to","alias","fromGetter","newObj","noAllow","unknownKeys","known","unknown","stripUnknown","allow","transformKeys","_camelCase","_snakeCase","constantCase","ArraySchema","_subType","of","castArray","castElement","original","compact","rejector","Lazy","mapFn","_resolve","validateAt","validateSyncAt","keyframes","timeline","stylesheet","Stylesheet","getInstance","getClassName","rulesArray","rules","insertRule","cacheClassName","EASING_FUNCTION_1","EASING_FUNCTION_2","FADE_IN","opacity","FADE_OUT","visibility","SLIDE_RIGHT_IN10","_createSlideInX","SLIDE_RIGHT_IN20","SLIDE_RIGHT_IN40","SLIDE_RIGHT_IN400","SLIDE_LEFT_IN10","SLIDE_LEFT_IN20","SLIDE_LEFT_IN40","SLIDE_LEFT_IN400","SLIDE_UP_IN10","_createSlideInY","SLIDE_UP_IN20","SLIDE_DOWN_IN10","SLIDE_DOWN_IN20","SLIDE_RIGHT_OUT10","_createSlideOutX","SLIDE_RIGHT_OUT20","SLIDE_RIGHT_OUT40","SLIDE_RIGHT_OUT400","SLIDE_LEFT_OUT10","SLIDE_LEFT_OUT20","SLIDE_LEFT_OUT40","SLIDE_LEFT_OUT400","SLIDE_UP_OUT10","_createSlideOutY","SLIDE_UP_OUT20","SLIDE_DOWN_OUT10","SLIDE_DOWN_OUT20","SCALE_UP100","SCALE_DOWN98","SCALE_DOWN100","SCALE_UP103","ROTATE90","ROTATE_N90","AnimationVariables","easeFunction1","easeFunction2","durationValue1","durationValue2","durationValue3","durationValue4","AnimationStyles","slideRightIn10","_createAnimation","slideRightIn20","slideRightIn40","slideRightIn400","slideLeftIn10","slideLeftIn20","slideLeftIn40","slideLeftIn400","slideUpIn10","slideUpIn20","slideDownIn10","slideDownIn20","slideRightOut10","slideRightOut20","slideRightOut40","slideRightOut400","slideLeftOut10","slideLeftOut20","slideLeftOut40","slideLeftOut400","slideUpOut10","slideUpOut20","slideDownOut10","slideDownOut20","scaleUpIn100","scaleDownIn100","scaleUpOut103","scaleDownOut98","fadeIn100","fadeIn200","fadeIn400","fadeIn500","fadeOut100","fadeOut200","fadeOut400","fadeOut500","rotate90deg","rotateN90deg","animationName","animationDuration","animationTimingFunction","animationFillMode","fromX","pointerEvents","fromY","toX","toY","LocalizedFontNames","LocalizedFontFamilies","FontSizes","FontWeights","IconFontSizes","AnimationClassNames","styles","classes","styleName","mergeStyles","buildClassMap","Arabic","Cyrillic","EastEuropean","Greek","Hebrew","Thai","Vietnamese","WestEuropean","Selawik","Armenian","Georgian","ChineseSimplified","ChineseTraditional","Hindi","Japanese","Korean","size10","size12","size14","size16","size18","size20","size24","size28","size32","size42","size68","mini","xSmall","small","smallPlus","medium","mediumPlus","icon","large","xLarge","xLargePlus","xxLarge","xxLargePlus","superLarge","mega","light","semilight","regular","semibold","bold","HighContrastSelector","HighContrastSelectorWhite","ScreenWidthMinMedium","ScreenWidthMinLarge","ScreenWidthMinXLarge","ScreenWidthMinXXLarge","ScreenWidthMaxSmall","ScreenWidthMaxMedium","ScreenWidthMinUhfMobile","getScreenSelector","getHighContrastNoAdjustStyle","forcedColorAdjust","MsHighContrastAdjust","ZIndexes","getFocusStyle","theme","insetOrOptions","position","highContrastStyle","borderColor","outlineColor","isFocusedOnly","_getFocusStyleInternal","inset","width","outline","selectors","border","content","left","top","bottom","right","zIndex","FocusStyle","focusClear","Nav","ScrollablePane","Coachmark","Layer","KeytipLayer","getInputFocusStyle","borderRadius","borderType","borderPosition","isBorderBottom","hiddenContentStyle","height","margin","padding","overflow","_getGlobalClassNames","classNames","disableGlobalClassNames","styleSheet","acc","className","getGlobalClassNames","Depths","DefaultPalette","themeDarker","themeDark","themeDarkAlt","themePrimary","themeSecondary","themeTertiary","themeLight","themeLighter","themeLighterAlt","black","blackTranslucent40","neutralDark","neutralPrimary","neutralPrimaryAlt","neutralSecondary","neutralSecondaryAlt","neutralTertiary","neutralTertiaryAlt","neutralQuaternary","neutralQuaternaryAlt","neutralLight","neutralLighter","neutralLighterAlt","accent","white","whiteTranslucent40","yellowDark","yellow","yellowLight","orange","orangeLight","orangeLighter","redDark","red","magentaDark","magenta","magentaLight","purpleDark","purple","purpleLight","blueDark","blueMid","blue","blueLight","tealDark","teal","tealLight","greenDark","green","greenLight","depth0","depth4","depth8","depth16","depth64","DefaultEffects","elevation4","elevation8","elevation16","elevation64","roundedCorner2","roundedCorner4","roundedCorner6","fontFace","font","defaultFontFamily","LanguageToFontMap","ar","bg","cs","el","et","he","hi","hr","hu","ja","kk","ko","lt","lv","pl","ru","sk","th","tr","uk","vi","hy","ka","_createFont","weight","fontFamily","MozOsxFontSmoothing","WebkitFontSmoothing","fontSize","fontWeight","_language","DefaultFontStyles","localeCode","fontFamilyWithFallback","language","lang","_getLocalizedFontFamily","tiny","createFontStyles","persistenceType","doc","getDocument","savedLanguage","win","getWindow","localStorage","getItem","sessionStorage","documentElement","getAttribute","getLanguage","_registerFontFace","localFontName","src","localFontSrc","fontStyle","fontDisplay","_registerFontFaceSet","baseUrl","cdnFolder","cdnFontName","urlBase","_merge","circularReferences","isCircularReference","fontUrl","registerDefaultFontFaces","FabricConfig","fontBaseUrl","_getFontBaseUrl","makeSemanticColors","isInverted","depComments","listTextColor","listText","menuItemBackgroundChecked","warningHighlight","warningText","messageText","successText","_fixDeprecatedSlots","getSemanticColors","primaryButtonBorder","errorText","messageLink","messageLinkHovered","infoIcon","errorIcon","blockingIcon","warningIcon","severeWarningIcon","successIcon","infoBackground","errorBackground","blockingBackground","warningBackground","severeWarningBackground","successBackground","bodyBackground","bodyFrameBackground","accentButtonText","buttonBackground","primaryButtonText","primaryButtonTextHovered","primaryButtonTextPressed","inputBackground","inputForegroundChecked","listBackground","menuBackground","cardStandoutBackground","bodyTextChecked","buttonTextCheckedHovered","link","primaryButtonBackground","inputBackgroundChecked","inputIcon","inputFocusBorderAlt","menuIcon","menuHeader","accentButtonBackground","primaryButtonBackgroundPressed","inputBackgroundCheckedHovered","inputIconHovered","linkHovered","primaryButtonBackgroundHovered","inputPlaceholderBackgroundChecked","bodyBackgroundChecked","bodyFrameDivider","bodyDivider","variantBorder","buttonBackgroundCheckedHovered","buttonBackgroundPressed","listItemBackgroundChecked","listHeaderBackgroundPressed","menuItemBackgroundPressed","bodyBackgroundHovered","buttonBackgroundHovered","buttonBackgroundDisabled","buttonBorderDisabled","primaryButtonBackgroundDisabled","disabledBackground","listItemBackgroundHovered","listHeaderBackgroundHovered","menuItemBackgroundHovered","primaryButtonTextDisabled","disabledSubtext","listItemBackgroundCheckedHovered","disabledBodyText","variantBorderHovered","buttonTextDisabled","inputIconDisabled","disabledText","bodyText","actionLink","buttonText","inputBorderHovered","inputText","menuItemText","bodyStandoutBackground","defaultStateBackground","actionLinkHovered","buttonTextHovered","buttonTextChecked","buttonTextPressed","inputTextHovered","menuItemTextHovered","bodySubtext","focusBorder","inputBorder","smallInputBorder","inputPlaceholderText","buttonBorder","disabledBodySubtext","disabledBorder","buttonBackgroundChecked","menuDivider","cardShadow","cardShadowHovered","DefaultSpacing","s2","s1","m","l1","l2","createTheme","partialTheme","mergedTheme","semanticColors","palette","effects","defaultFontStyle","fonts","stylesheets","mergeThemes","spacing","rtl","_theme","_onThemeChangeCallbacks","initializeThemeInCustomizations","legacyTheme","lines","fontName","propName","_loadFonts","Customizations","applySettings","loadTheme","getSettings","getTheme","normalize","boxShadow","boxSizing","noWrap","textOverflow","whiteSpace","getPlaceholderStyles","_iconSettings","GlobalSettings","__options","disableWarnings","warnOnMissingIcons","__remapped","onReset","subset","normalizeIconName","registerIcons","iconSubset","isRegistered","icons","iconName","code","normalizedIconName","_warnDuplicateIcon","registerIconAlias","mappedToName","getIcon","style","_missingIcons","_missingIconsTimer","setTimeout","kTrue","konst","noop","asyncIterator","assignWithSymbols","flatMap","mapper","remove","called","kThrow","kReturn","thro","throw","return","isSagaIterator","logError","sagaStack","internalErr","createEmptyArray","wrapSagaDispatch","SAGA_ACTION","shouldTerminate","res","TERMINATE","shouldCancel","TASK_CANCEL","shouldComplete","createAllStyleChildCallbacks","parentCallback","totalCount","completed","completedCount","results","childCallbacks","chCbAtKey","isErr","cancel","getMetaInfo","location","getLocation","instrumented","SAGA_LOCATION","compose","funcs","zeroBuffer","isEmpty","put","ringBuffer","overflowAction","pushIndex","popIndex","flush","items","doubledLimit","none","sliding","expanding","initialSize","TAKE","PUT","ALL","RACE","CALL","CPS","FORK","JOIN","CANCEL","SELECT","ACTION_CHANNEL","CANCELLED","FLUSH","GET_CONTEXT","SET_CONTEXT","makeEffect","IO","combinator","multicastPattern","notUndef","multicast","process","channel$1","undef","all","eff","race","getFnCallDescriptor","fnDescriptor","_len3","_key3","taskOrTasks","SELF_CANCELLATION","actionChannel","pattern$1","buffer$1","delay","delayP","_objectWithoutProperties","excluded","sourceKeys","sourceSymbolKeys","REACT_BROWSER_EVENT_MAP","click","mousedown","mouseup","mouseover","mousemove","mouseout","mouseenter","mouseleave","touchcancel","touchend","touchmove","touchstart","Comp","lastChildren","lastResult","Children","child","isNil","isFragment","findAllByType","types","childType","findChildByType","validateWidthHeight","_el$props","SVG_TAGS","isSvgElement","filterProps","includeEvents","svgElementType","inputProps","isValidElement","out","_inputProps","_FilteredElementKeyMa","matchingElementTypeKeys","FilteredElementKeyMap","includes","SVGElementPropKeys","EventKeys","isValidSpreadableProp","isChildrenEqual","nextChildren","prevChildren","isSingleChildEqual","nextChild","prevChild","nextProps","prevProps","renderByOrder","renderMap","elements","record","handler","getReactEventByType","parseChildIndex","_taggedTemplateLiteral","strings","raw","freeze","defineProperties","interpolations","EMPTY_OBJECT","getComponentName","isStyledComponent","styledComponentId","SC_ATTR","REACT_APP_SC_ATTR","IS_BROWSER","DISABLE_SPEEDY","SC_DISABLE_SPEEDY","env","REACT_APP_SC_DISABLE_SPEEDY","throwStyledComponentsError","DefaultGroupedTag","groupSizes","Uint32Array","indexOfGroup","group","insertRules","oldBuffer","oldSize","newSize","throwStyledError","ruleIndex","l","clearGroup","startIndex","endIndex","deleteRule","getGroup","css","getRule","groupIDRegister","reverseRegister","nextFreeGroup","getGroupForId","getIdForGroup","setGroupForId","SELECTOR","MARKER_RE","rehydrateNamesFromContent","sheet","names","registerName","rehydrateSheetFromTag","parts","textContent","marker","getNonce","__webpack_nonce__","makeStyleTag","head","prevStyle","childNodes","nodeType","hasAttribute","nextSibling","setAttribute","__VERSION__","nonce","insertBefore","CSSOMTag","element","appendChild","createTextNode","styleSheets","ownerNode","rule","_error","cssRules","cssText","TextTag","refNode","removeChild","VirtualTag","_target","SHOULD_REHYDRATE","defaultOptions","isServer","useCSSOMInjection","StyleSheet","globalStyles","gs","server","querySelectorAll","parentNode","registerId","reconstructWithOptions","withNames","allocateGSInstance","hasNameForId","groupNames","clearNames","clearRules","clearTag","AD_REPLACER_R","getAlphabeticChar","fromCharCode","generateAlphabeticName","abs","phash","h","hash","isStaticRules","SEED","ComponentStyle","componentId","baseStyle","staticRulesId","isStatic","NODE_ENV","baseHash","generateAndInjectStyles","executionContext","stylis","cssStatic","flatten","generateName","cssStaticFormatted","dynamicHash","partRule","partChunk","partString","cssFormatted","COMMENT_REGEX","COMPLEX_SELECTOR_PREFIX","createStylisInstance","_componentId","_selector","_selectorRegexp","_consecutiveSelfRefRegExp","plugins","Stylis","parsingRules","parseRulesPlugin","toSheet","block","parents","line","column","ns","depth","at","delimiter","selfReferenceReplacer","stringifyRules","flatCSS","cssStr","use","lastIndexOf","parsedRules","plugin","StyleSheetContext","StylisContext","masterSheet","masterStylis","useStyleSheet","useStylis","StyleSheetManager","useState","stylisPlugins","setPlugins","contextStyleSheet","disableCSSOMInjection","disableVendorPrefixes","shallowequal","Keyframes","inject","stylisInstance","resolvedName","getName","uppercaseCheck","uppercasePattern","msPattern","prefixAndLowerCase","char","hyphenateStyleName","isFalsish","chunk","ruleSet","isReactComponent","isPlainObject","objToCssArray","prevKey","isCss","hyphenate","unitless","startsWith","addTag","interleave","originalConsoleError","providedTheme","defaultProps","escapeRegex","dashesAtEnds","escape","str","isTag","isValidKey","mixin","mixinDeep","ThemeContext","identifiers","createStyledComponent","isTargetStyledComp","isCompositeComponent","attrs","parentComponentId","generateComponentId","finalAttrs","shouldForwardProp","filterFn","elementToBeCreated","WrappedStyledComponent","componentStyle","forwardedComponent","forwardedRef","componentAttrs","foldedComponentIds","resolvedAttrs","resolvedAttrDef","attrDef","determineTheme","generatedClassName","warnTooManyClasses","refToForward","$as","as","isTargetTag","computedProps","propsForElement","validAttr","withComponent","previousComponentId","optionsToCopy","newComponentId","_foldedDefaultProps","hoist","styled","constructWithOptions","componentConstructor","isValidElementType","templateFunction","withConfig","StyledComponent","domElement","GlobalStyle","createStyles","instance","removeStyles","renderStyles","ServerStyleSheet","_emitSheetCSS","SC_ATTR_VERSION","getStyleTags","sealed","getStyleElement","dangerouslySetInnerHTML","__html","seal","collectStyles","interleaveWithNodeStream","PersonaSize","PersonaPresence","PersonaInitialsColor","formatProdErrorMessage","observable","randomString","random","substring","ActionTypes","INIT","REPLACE","PROBE_UNKNOWN_ACTION","combineReducers","reducers","reducerKeys","finalReducers","shapeAssertionError","finalReducerKeys","reducer","assertReducerShape","hasChanged","previousStateForKey","nextStateForKey","bindActionCreator","_typeof","invalidType","_toConsumableArray","_arrayWithoutHoles","iter","_iterableToArray","_nonIterableSpread","PLACE_HOLDER","isPlaceHolder","curry0","_curried","curry","curryN","argsLength","restArgs","newArgs","shift","range","begin","fns","firstFn","tailsFn","lastArgs","_len4","_key4","rangeStep","step","num","Decimal","toNumber","getDigitCount","floor","log","newA","uninterpolateNumber","diff","uninterpolateTruncation","_slicedToArray","_arrayWithHoles","_n","_d","_e","_s","_iterableToArrayLimit","_nonIterableRest","getValidInterval","validMin","validMax","getFormatStep","roughStep","allowDecimals","correctionFactor","lte","digitCount","Arithmetic","digitCountValue","pow","stepRatio","div","stepRatioScale","formatStep","ceil","mul","getTickOfSingleValue","tickCount","middle","isint","absVal","middleIndex","calculateStep","isFinite","tickMin","tickMax","sub","mod","belowCount","upCount","scaleCount","getNiceTickValues","_ref4","_getValidInterval","_getValidInterval2","cormin","cormax","_values","_calculateStep","getTickValuesFixedDomain","_ref5","_ref6","_getValidInterval3","_getValidInterval4","_ref7","_ref8","_getValidInterval5","_getValidInterval6","ownKeys","_objectSpread","_defineProperty","getOwnPropertyDescriptors","toPrimitive","_toPrimitive","_toPropertyKey","getValueByDataKey","dataKey","getDomainOfDataByKey","filterNil","flattenData","domain","calculateActiveTickIndex","coordinate","_ticks$length","ticks","unsortedTicks","axis","axisType","cur","after","sameDirectionCoord","diffInterval","curInRange","afterInRange","sameInterval","minValue","maxValue","getMainColorOfGraphicItem","_item$props","stroke","fill","getBarSizeList","globalSize","barSize","totalSize","_ref2$stackGroups","stackGroups","numericAxisIds","sgs","stackIds","sLen","_sgs$stackIds$j","cateAxisId","barItems","selfSize","cateId","stackList","getBarPosition","barGap","barCategoryGap","bandSize","_ref3$sizeList","sizeList","maxBarSize","realBarGap","initialValue","useFull","fullBarSize","sum","newPosition","newRes","_offset","originalSize","appendOffsetOfLegend","_unused","legendBox","legendWidth","legendProps","getLegendProps","boxWidth","boxHeight","align","verticalAlign","layout","getDomainOfErrorBars","errorBars","ErrorBar","errorBarChild","direction","isErrorBarRelevantForAxis","entryValue","mainValue","errorDomain","prevErrorArr","errorValue","lowerValue","upperValue","parseErrorBarsOfAxis","domains","getDomainOfItemsWithSameAxis","isCategoricalAxis","getTicksOfAxis","isGrid","isAll","scale","duplicateDomain","offsetForBand","realScaleType","bandwidth","niceTicks","scaleContent","row","isCategorical","categoricalDomain","handlerWeakMap","combineEventHandlers","defaultHandler","childHandler","childWeakMap","combineHandler","parseScale","chartType","hasBar","d3Scales","checkDomainOfScale","findPositionOfBar","barPosition","truncateByDomain","STACK_OFFSET_MAP","sign","series","expand","stackOffsetExpand","stackOffsetNone","silhouette","stackOffsetSilhouette","wiggle","stackOffsetWiggle","getStackedData","stackItems","offsetType","dataKeys","offsetAccessor","shapeStack","order","stackOrderNone","getStackGroupsByAxisId","_items","numericAxisId","reverseStackOrder","_item$props2","stackId","hide","axisId","parentGroup","hasStack","childGroup","g","stackedData","getTicksOfScale","originalDomain","scaleType","tickValues","_domain","getCateCoordinateOfBar","getBaseValueOfBar","numericAxis","getStackedDataOfItem","itemIndex","getDomainOfStackGroups","MIN_VALUE_REG","MAX_VALUE_REG","parseSpecifiedDomain","specifiedDomain","dataDomain","allowDataOverflow","getBandSizeOfAxis","isBar","bandWidth","orderedTicks","sortBy","parseDomainOfCategoryAxis","calculatedDomain","axisChild","isEqual","getTooltipItem","graphicalItem","_graphicalItem$props","unit","formatter","tooltipType","color","strShimFunction","strShimObject","strShimUndefined","strShimPrototype","strShimHasOwnProperty","strDefault","ObjClass","ObjProto","ObjAssign","ObjCreate","ObjDefineProperty","ObjHasOwnProperty","f","clsx","composeWithDevTools","__REDUX_DEVTOOLS_EXTENSION_COMPOSE__","hasMatchFunction","__REDUX_DEVTOOLS_EXTENSION__","createAction","prepareAction","prepared","SHOULD_AUTOBATCH","prepareAutoBatched","createQueueWithTimer","timeout","rAF","requestAnimationFrame","buildGetDefaultEnhancers","middlewareEnhancer","autoBatch","enhancerArray","Tuple","notifying","shouldNotifyAtEndOfTick","notificationQueued","queueCallback","queueMicrotask","queueNotification","notifyListeners","autoBatchEnhancer","configureStore","getDefaultMiddleware","thunk","immutableCheck","serializableCheck","actionCreatorCheck","middlewareArray","extraArgument","middleware","devTools","preloadedState","enhancers","rootReducer","finalMiddleware","finalCompose","trace","getDefaultEnhancers","composedEnhancer","executeReducerBuilderCallback","builderCallback","actionsMap","actionMatchers","defaultCaseReducer","builder","typeOrActionCreator","addMatcher","matcher","addDefaultCase","createReducer","initialState","mapOrBuilderCallback","getInitialState","finalActionMatchers","finalDefaultCaseReducer","freezeDraftable","frozenInitialState","caseReducers","cr","caseReducer","isDraft","isDraftable","createNextState","draft","isAnyOf","matchers","isAllOf","hasExpectedRequestMetadata","validStatus","hasValidRequestId","requestId","hasValidRequestStatus","requestStatus","isAsyncThunkArray","isPending","asyncThunks","asyncThunk","pending","isRejected","rejected","isRejectedWithValue","hasFlag","rejectedWithValue","isFulfilled","fulfilled","isAsyncThunkAction","urlAlphabet","nanoid","commonProperties","RejectWithValue","FulfillWithMeta","miniSerializeError","simpleError","createAsyncThunk","typePrefix","payloadCreator","serializeError","aborted","extra","idGenerator","abortController","AbortController","abortHandler","abortReason","abort","reason","promise","async","finalAction","conditionResult","signal","abortedPromise","addEventListener","getPendingMeta","rejectWithValue","fulfillWithValue","removeEventListener","dispatchConditionRejection","unwrap","unwrapResult","settled","withTypes","asyncThunkSymbol","for","getType","actionKey","buildCreateSlice","creators","cAT","reducerPath","buildReducerCreators","reducerNames","sliceCaseReducersByName","sliceCaseReducersByType","sliceMatchers","contextMethods","exposeAction","exposeCaseReducer","buildReducer","extraReducers","finalCaseReducers","addCase","sM","reducerName","reducerDefinition","reducerDetails","createNotation","isAsyncThunkSliceReducerDefinition","handleThunkCaseReducerDefinition","handleNormalReducerDefinition","selectSelf","injectedSelectorCache","_reducer","makeSelectorProps","injected","selectSlice","sliceState","getSelectors","selectState","selectorCache","emplace","insert","_a","wrapSelector","actions","injectable","pathOpt","newReducerPath","wrapper","rootState","unwrapped","createSlice","_reducerDefinitionType","preparedReducer","prepare","maybeReducerWithPrepare","prepareCallback","alm","addListener","removeListener","isObjectType","isNullOrUndefined","isDateObject","event","isCheckBoxInput","checked","getNodeParentName","HTMLElement","cloneObject","copy","isWeb","Blob","FileList","isUndefined","tempPath","EVENTS","VALIDATION_MODE","INPUT_VALIDATION_RULES","HookFormContext","useFormContext","formState","control","localProxyFormState","isRoot","defaultValues","_defaultValues","_proxyFormState","formStateData","updateFormState","isEmptyObject","signalName","exact","convertToArrayPayload","currentName","useSubscribe","_props","disabled","subject","_names","formValues","isGlobal","watch","fieldName","watchAll","useWatch","methods","_name","_subjects","shouldSubscribeByName","updateValue","generateWatchOutput","_formValues","_getWatch","_removeUnmounted","useController","shouldUnregister","isArrayField","isNameInFieldArray","_formState","_mounted","_localProxyFormState","isDirty","isLoading","dirtyFields","touchedFields","validatingFields","isValidating","shouldRenderFormState","_updateFormState","_updateValid","getProxyFormState","useFormState","_registerProps","register","isBoolean","_shouldUnregisterField","updateMounted","_fields","_f","mount","_state","unregister","_updateDisabledField","onChange","useCallback","getEventValue","onBlur","elm","focus","select","setCustomValidity","reportValidity","fieldState","invalid","isTouched","Controller","render","validateAllFieldCriteria","performance","now","shouldFocus","focusName","focusIndex","mode","isOnSubmit","isOnBlur","isOnChange","isOnAll","isOnTouch","isBlurEvent","watchName","iterateFieldsByAction","fieldsNames","currentField","fieldArrayErrors","owner","ownerDocument","defaultView","defaultResult","validResult","option","attributes","defaultReturn","previous","getValidateError","isMessage","validationData","isRegex","shouldUseNativeValidation","isFieldArray","maxLength","minLength","valueAsNumber","inputValue","inputRef","isRadio","isRadioInput","isCheckBox","isRadioOrCheckbox","isFileInput","isHTMLElement","appendErrorsCurry","appendErrors","getMinMaxMessage","exceedMax","maxLengthMessage","minLengthMessage","maxType","minType","getCheckboxValue","getRadioValue","getValueAndMessage","exceedMin","maxOutput","minOutput","valueDate","valueAsDate","convertTimeToDate","time","toDateString","isTime","isWeek","valueNumber","maxLengthOutput","minLengthOutput","patternValue","validateError","validationResult","indexes","temp","removeAtIndexes","indexA","indexB","unset","paths","childObject","updatePath","isEmptyArray","fieldValues","useFieldArray","keyName","setFields","_getFieldArray","ids","generateId","_fieldIds","_actioned","fieldArrayName","updateValues","updatedFieldArrayValues","_updateFieldArray","isWatched","getValidationModes","isSubmitted","_executeSchema","existingError","reValidateMode","validateField","criteriaMode","updateFieldArrayRootError","swap","swapArrayAt","argA","argB","move","moveArrayAt","prepend","prependValue","prependAt","getFocusFieldName","fillEmptyArray","append","appendValue","appendAt","removeArrayAt","insertValue","insertAt","update","updateAt","_observers","observer","deepEqual","object1","object2","isPrimitive","keys1","keys2","val1","val2","isConnected","markFieldsDirty","isParentNodeArray","objectHasFunction","getDirtyFieldsFromDefaultValues","dirtyFieldsFromValues","setValueAs","getFieldValue","files","isMultipleSelect","selectedOptions","getFieldValueAs","schemaErrorLookup","foundError","shouldFocusError","createFormControl","delayErrorCallback","submitCount","isSubmitting","isSubmitSuccessful","unMount","timer","createSubject","validationModeBeforeSubmit","validationModeAfterSubmit","shouldDisplayAllAssociatedErrors","debounce","wait","clearTimeout","shouldUpdateValid","executeBuiltInValidation","_updateIsValidating","shouldSetValues","shouldUpdateFieldsAndState","unsetEmptyArray","getDirtyFields","_getDirty","updateErrors","_setErrors","updateValidAndValue","shouldSkipSetValueAs","defaultChecked","setFieldValue","updateTouchAndDirty","shouldDirty","shouldRender","shouldUpdateField","isPreviousDirty","output","disabledField","isCurrentFieldPristine","isPreviousFieldTouched","shouldRenderByError","previousFieldError","delayError","updatedFormState","getResolverOptions","executeSchemaAndUpdateState","shouldOnlyCheckValid","valid","isFieldArrayRoot","fieldError","live","getValues","fieldReference","optionRef","selected","checkboxRef","radioRef","shouldTouch","shouldValidate","trigger","setValues","fieldKey","setValue","cloneValue","isFieldValueUpdated","_updateIsFieldValueUpdated","shouldSkipValidation","hasValidation","skipValidation","watched","previousErrorLookupResult","errorLookupResult","_focusInput","fieldNames","getFieldState","clearErrors","inputName","setError","currentError","currentRef","restOfErrorTree","keepValue","keepError","keepDirty","keepTouched","keepIsValidating","keepDefaultValue","keepIsValid","disabledIsDefined","progressive","getRuleValue","fieldRef","radioOrCheckbox","_focusError","_disableForm","handleSubmit","onValid","onInvalid","onValidError","preventDefault","persist","resetField","_reset","keepStateOptions","updatedValues","cloneUpdatedValues","isEmptyResetValues","keepDefaultValues","keepValues","keepDirtyValues","form","closest","reset","keepSubmitCount","keepIsSubmitted","keepErrors","keepIsSubmitSuccessful","setFocus","shouldSelect","_resetDefaultValues","resetOptions","useForm","_formControl","pat","ch","close","sym","MULTICAST","commonjsGlobal","globalThis","global","createEventEmitter","handlers","on","off","changedBits","calculateChangedBits","contextProp","getUniqueId","emitter","getChildContext","componentWillReceiveProps","oldValue","Component","childContextTypes","PropTypes","isRequired","observedBits","onUpdate","setState","componentDidMount","componentWillUnmount","contextTypes","createNamedContext","historyContext","Router","history","_isMounted","_pendingLocation","staticContext","unlisten","listen","computeRootMatch","pathname","isExact","RouterContext","HistoryContext","Lifecycle","onMount","componentDidUpdate","onUnmount","cacheCount","generatePath","generator","pathToRegexp","compile","compilePath","pretty","Redirect","computedMatch","createLocation","self","prevLocation","locationsAreEqual","matchPath","sensitive","matched","cacheKey","pathCache","Route","component","isEmptyChildren","addLeadingSlash","stripBasename","basename","createURL","createPath","staticHandler","invariant","Switch","cloneElement","withRouter","C","wrappedComponentRef","remainingProps","useHistory","useLocation","useParams","isMergeableObject","isNonNullObject","stringValue","$$typeof","REACT_ELEMENT_TYPE","isReactElement","isSpecial","cloneUnlessOtherwiseSpecified","deepmerge","defaultArrayMerge","arrayMerge","sourceIsArray","destination","mergeObject","deepmerge_1","objectCtorString","cloneDeep","toPath","FormikContext","FormikProvider","FormikConsumer","useFormikContext","formik","isPromise","setIn","resVal","pathArray","currentPath","currentObj","nextPath","setNestedObjectValues","visited","response","emptyErrors","emptyTouched","useFormik","validateOnChange","validateOnBlur","validateOnMount","isInitialValid","enableReinitialize","onSubmit","initialValues","initialErrors","initialTouched","initialStatus","isMounted","fieldRegistry","setIteration","stateRef","touched","status","formikReducer","runValidateHandler","maybePromisedErrors","actualException","runValidationSchema","validationSchema","normalizedValues","prepareDataForValidation","validateYupSchema","yupError","yupToFormErrors","runSingleFieldLevelValidation","runFieldLevelValidations","fieldKeysWithValidation","fieldValidations","fieldErrorsList","curr","runAllValidations","fieldErrors","schemaErrors","validateErrors","validateFormWithHighPriority","useEventCallback","combinedErrors","resetForm","dispatchFn","maybePromisedOnReset","imperativeMethods","maybePromise","registerField","unregisterField","setTouched","setErrors","resolvedValues","setFieldError","executeChange","eventOrTextValue","maybePath","currentTarget","outerHTML","multiple","currentValue","valueProp","currentArrayOfValues","isValueInArray","getValueForCheckbox","getSelectedValues","handleChange","eventOrPath","setFieldTouched","executeBlur","handleBlur","eventOrString","setFormikState","stateOrCb","setStatus","setSubmitting","submitForm","isInstanceOfError","promiseOrUndefined","executeSubmit","_errors","stopPropagation","validateForm","handleReset","getFieldMeta","initialError","getFieldHelpers","getFieldProps","nameOrOptions","isAnObject","valueState","dirty","Formik","formikbag","innerRef","only","shouldClone","Field","legacyBag","asElement","Form","_action","withFormik","mapPropsToValues","vanillaProps","componentDisplayName","renderFormComponent","formikProps","mapPropsToStatus","mapPropsToErrors","mapPropsToTouched","hoistNonReactStatics","connect","arrayLike","copyArrayLike","maxIndex","createAlterationHandler","alteration","defaultFunction","FieldArrayInner","updateArrayField","alterTouched","alterErrors","prevState","updateTouched","fieldTouched","handlePush","handleSwap","handleMove","handleInsert","handleReplace","unshift","handleUnshift","handleRemove","handlePop","tmp","arrayHelpers","restOfFormik","ErrorMessage","ErrorMessageImpl","shouldComponentUpdate","touch","FastField","FastFieldInner","shouldUpdate","bag","BrowserRouter","createHistory","resolveToLocation","currentLocation","normalizeToLocation","forwardRefShim","LinkAnchor","navigate","onClick","ex","defaultPrevented","button","metaKey","altKey","ctrlKey","shiftKey","isModifiedEvent","Link","href","createHref","isDuplicateNavigation","ariaCurrent","activeClassName","activeStyle","classNameProp","isActiveProp","isActive","locationProp","styleProp","toLocation","escapedPath","classnames","joinClassnames","RectangleEdge","Position","FUNC_ERROR_TEXT","PLACEHOLDER","wrapFlags","argsTag","arrayTag","boolTag","dateTag","errorTag","funcTag","genTag","mapTag","numberTag","objectTag","regexpTag","setTag","stringTag","symbolTag","weakMapTag","arrayBufferTag","dataViewTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint16Tag","uint32Tag","reEmptyStringLeading","reEmptyStringMiddle","reEmptyStringTrailing","reEscapedHtml","reUnescapedHtml","reHasEscapedHtml","reHasUnescapedHtml","reEscape","reEvaluate","reInterpolate","reRegExpChar","reHasRegExpChar","reTrimStart","reWhitespace","reWrapComment","reWrapDetails","reSplitDetails","reForbiddenIdentifierChars","reEsTemplate","reIsBadHex","reIsBinary","reIsOctal","reNoMatch","reUnescapedString","rsComboRange","rsComboMarksRange","contextProps","templateCounter","stringEscapes","freeParseFloat","freeParseInt","freeGlobal","freeSelf","freeExports","freeModule","moduleExports","freeProcess","binding","nodeIsArrayBuffer","isArrayBuffer","nodeIsDate","isDate","nodeIsRegExp","isRegExp","thisArg","arrayAggregator","setter","arrayEachRight","arrayEvery","arrayIncludes","baseIndexOf","arrayIncludesWith","comparator","arrayReduceRight","asciiSize","baseFindKey","collection","eachFunc","baseFindIndex","fromIndex","strictIndexOf","baseIsNaN","baseIndexOfWith","baseMean","baseSum","baseReduce","baseTrim","trimmedEndIndex","charsStartIndex","chrSymbols","charsEndIndex","countHolders","placeholder","escapeHtmlChar","escapeStringChar","replaceHolders","setToPairs","stringSize","unicodeSize","unescapeHtmlChar","runInContext","defaults","arrayProto","oldDash","Buffer","allocUnsafe","spreadableSymbol","isConcatSpreadable","ctxClearTimeout","ctxNow","ctxSetTimeout","nativeCeil","nativeFloor","nativeIsBuffer","nativeIsFinite","nativeJoin","nativeMax","nativeMin","nativeNow","nativeParseInt","nativeRandom","nativeReverse","metaMap","realNames","lodash","LazyWrapper","LodashWrapper","wrapperClone","baseLodash","chainAll","__wrapped__","__actions__","__chain__","__index__","__values__","__dir__","__filtered__","__iteratees__","__takeCount__","__views__","arraySample","baseRandom","arraySampleSize","shuffleSelf","baseClamp","arrayShuffle","assignMergeValue","baseAggregator","baseEach","baseAt","skip","lower","upper","baseConformsTo","baseDelay","baseDifference","isCommon","valuesLength","outer","computed","valuesIndex","templateSettings","createBaseEach","baseEachRight","baseForOwnRight","baseEvery","baseExtremum","baseFilter","baseFlatten","isFlattenable","baseForRight","baseFunctions","baseGt","baseIntersection","arrays","caches","baseInvoke","baseLt","baseMap","baseMerge","srcIndex","mergeFunc","safeGet","isTyped","isArrayLikeObject","toPlainObject","baseMergeDeep","baseNth","baseOrderBy","iteratees","orders","getIteratee","comparer","baseSortBy","objCriteria","criteria","othCriteria","ordersLength","compareAscending","compareMultiple","basePickBy","baseSet","basePullAll","basePullAt","baseUnset","baseRepeat","baseRest","setToString","overRest","baseSample","baseSampleSize","nested","baseSetData","baseSetToString","baseShuffle","baseSome","baseSortedIndex","retHighest","low","high","MAX_ARRAY_LENGTH","mid","baseSortedIndexBy","valIsNaN","valIsNull","valIsSymbol","valIsUndefined","othIsDefined","othIsNull","othIsReflexive","othIsSymbol","setLow","baseSortedUniq","baseToNumber","baseUniq","createSet","seenIndex","baseUpdate","updater","baseWhile","isDrop","baseWrapperValue","baseXor","baseZipObject","assignFunc","valsLength","castArrayLikeObject","castFunction","castRest","valIsDefined","valIsReflexive","composeArgs","partials","holders","isCurried","argsIndex","holdersLength","leftIndex","leftLength","rangeLength","isUncurried","composeArgsRight","holdersIndex","rightIndex","rightLength","createAggregator","initializer","createAssigner","assigner","sources","isIterateeCall","createCtor","thisBinding","createFind","findIndexFunc","createFlow","flatRest","prereq","thru","getFuncName","funcName","getData","isLaziable","plant","createHybrid","partialsRight","holdersRight","argPos","arity","isAry","isBind","isBindKey","isFlip","getHolder","holdersCount","newHolders","createRecurry","reorder","createInverter","toIteratee","baseInverter","createMathOperation","operator","createOver","arrayFunc","createPadding","chars","charsLength","createRange","toFinite","baseRange","createRelationalOperation","wrapFunc","isCurry","newData","setData","setWrapToString","createRound","precision","toInteger","pair","createToPairs","baseToPairs","createWrap","srcBitmask","newBitmask","isCombo","mergeData","createCurry","createPartial","createBind","customDefaultsAssignIn","customDefaultsMerge","customOmitClone","otherFunc","isMaskable","stubFalse","otherArgs","oldArray","shortOut","reference","details","insertWrapDetails","updateWrapDetails","getWrapDetails","lastCalled","stamp","remaining","rand","difference","differenceBy","differenceWith","findLastIndex","intersection","mapped","intersectionBy","intersectionWith","pull","pullAll","pullAt","union","unionBy","unionWith","unzip","unzipWith","without","xor","xorBy","xorWith","zip","zipWith","chain","interceptor","wrapperAt","countBy","findLast","forEachRight","groupBy","invokeMap","keyBy","partition","bindKey","WRAP_BIND_FLAG","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","invokeFunc","leadingEdge","timerExpired","shouldInvoke","timeSinceLastCall","trailingEdge","timeWaiting","remainingWait","debounced","isInvoking","defer","negate","overArgs","funcsLength","partial","partialRight","rearg","gt","gte","remainder","toLength","isBinary","assignIn","assignInWith","assignWith","propsIndex","propsLength","defaultsDeep","mergeWith","invert","invertBy","invoke","basePick","pickBy","toPairs","toPairsIn","kebabCase","lowerCase","lowerFirst","startCase","upperCase","attempt","bindAll","methodNames","flow","flowRight","methodOf","over","overEvery","overSome","rangeRight","augend","addend","divide","dividend","divisor","multiply","multiplier","multiplicand","subtract","minuend","subtrahend","cond","conforms","baseConforms","properties","curryRight","drop","dropRight","dropRightWhile","dropWhile","baseFill","flatMapDeep","flatMapDepth","flattenDeep","flattenDepth","flip","fromPairs","functions","functionsIn","initial","matchesProperty","nthArg","omitBy","orderBy","propertyOf","pullAllBy","pullAllWith","sampleSize","setWith","shuffle","sortedUniq","sortedUniqBy","separator","spread","tail","takeRight","takeRightWhile","takeWhile","tap","throttle","isArrLike","unary","uniq","uniqBy","uniqWith","updateWith","valuesIn","wrap","zipObject","zipObjectDeep","entriesIn","extend","extendWith","clamp","cloneWith","conformsTo","defaultTo","endsWith","escapeRegExp","findKey","findLastKey","forIn","forInRight","forOwn","forOwnRight","inRange","baseInRange","isElement","isEqualWith","isMatch","isMatchWith","isNative","isNull","isSafeInteger","isWeakMap","isWeakSet","strictLastIndexOf","maxBy","mean","meanBy","minBy","stubObject","stubString","stubTrue","nth","noConflict","pad","strLength","padEnd","padStart","radix","floating","reduceRight","repeat","sample","sortedIndex","sortedIndexBy","sortedIndexOf","sortedLastIndex","sortedLastIndexBy","sortedLastIndexOf","sumBy","template","settings","isEscaping","isEvaluating","imports","importsKeys","importsValues","interpolate","reDelimiters","evaluate","sourceURL","escapeValue","interpolateValue","esTemplateValue","evaluateValue","variable","times","toLower","toSafeInteger","toUpper","trimEnd","trimStart","omission","newEnd","unescape","each","eachRight","VERSION","isFilter","takeName","dropName","checkIteratee","isTaker","lodashFunc","retUnwrapped","isLazy","useLazy","isHybrid","isUnwrapped","onlyLazy","chainName","dir","isRight","view","getView","iterLength","takeCount","iterIndex","commit","wrapped","toJSON","define","Obj","_objGetPrototypeOf","_objGetOwnProps","_gbl","_getGlobal","_gblInst","_hasOwnProperty","_isObjectOrArrayPrototype","_isObjectArrayOrFunctionPrototype","_getObjProto","newProto","curProto","_forEachProp","name_1","lp","_isDynamicCandidate","skipOwn","_throwTypeError","_newObject","_hasVisited","_getInstFunc","currentDynProtoProxy","instFunc","instFuncTable","canAddInst","objProto","protoFunc","_getProtoFunc","_populatePrototype","baseInstFuncs","setInstanceFunc","instFuncs_1","dynProtoProxy","_createDynamicPrototype","_getObjName","unknownValue","dynamicProto","theClass","delegateFunc","classProto","thisTarget","thisProto","_checkPrototype","perfOptions","useBaseInst","instFuncs","_getInstanceFuncs","_instFuncProxy","funcHost","theFunc","baseFuncs","baseProto","_getBaseFuncs","u","RADIAN","PI","radianToDegree","angleInRadian","polarToCartesian","cx","cy","radius","angle","cos","sin","getMaxRadius","formatAxisMap","axisMap","chartName","startAngle","endAngle","maxRadius","innerRadius","outerRadius","reversed","_range2","_parseScale","finalAxis","getAngleOfPoint","point","anotherPoint","x1","y1","x2","y2","sqrt","distanceBetweenPoints","acos","reverseFormatAngleOfSetor","startCnt","endCnt","inRangeOfSector","sector","_getAngleOfPoint","_formatAngleOfSector","formatAngleOfSector","formatAngle","getTickClassName","tick","others","layerClass","die","DRAFT_STATE","DRAFTABLE","base_","enumerableOnly","getArchtype","thing","type_","propOrOldValue","hasMap","hasSet","latest","copy_","shallowCopy","descriptors","deep","isFrozen","dontMutateFrozenCollections","getPlugin","pluginKey","loadPlugin","implementation","getCurrentScope","currentScope","usePatchesInScope","scope","patchListener","patches_","inversePatches_","patchListener_","revokeScope","leaveScope","drafts_","revokeDraft","parent_","enterScope","immer","immer_","canAutoFreeze_","unfinalizedDrafts_","revoke_","revoked_","processResult","baseDraft","isReplaced","useProxies_","willFinalizeES5_","modified_","finalize","maybeFreeze","generateReplacementPatches_","NOTHING","rootScope","childValue","finalizeProperty","scope_","finalized_","draft_","generatePatches_","parentState","targetObject","rootPath","assigned_","autoFreeze_","peek","getDescriptorFromProto","markChanged","prepareCopy","createProxy","proxyMap_","proxySet_","isManual_","traps","objectTraps","arrayTraps","Proxy","revocable","revoke","createES5Proxy_","currentImpl","archType","hasChanges_","copyHelper","enablePatches","deepClonePatchValue","cloned","immerable","clonePatchValueIfNeeded","ADD","applyPatches_","patches","patch","op","parentType","basePath","inversePatches","assignedValue","origValue","replacement","hasSymbol","hasProxies","getOwnPropertyNames","deleteProperty","recipe","defaultBase","produce","hasError","arg1","arg2","produceWithPatches","ip","useProxies","setUseProxies","autoFreeze","setAutoFreeze","createDraft","finishDraft","applyPatches","applyPatchesImpl","MessageBarType","createSymbol","CHANNEL_END_TYPE","MATCH","TASK","DirectionalHint","topLeftEdge","topCenter","topRightEdge","topAutoEdge","bottomLeftEdge","bottomCenter","bottomRightEdge","bottomAutoEdge","leftTopEdge","leftCenter","leftBottomEdge","rightTopEdge","rightCenter","rightBottomEdge","globalScope","ONE","rounding","toExpNeg","toExpPos","LN10","external","decimalError","invalidArgument","exponentOutOfRange","mathfloor","mathpow","isDecimal","BASE","MAX_E","MAX_SAFE_INTEGER","P","carry","xd","yd","pr","checkInt32","digitsToString","ws","indexOfLastWord","w","getZeroString","absoluteValue","comparedTo","cmp","xdL","ydL","decimalPlaces","dp","dividedBy","dividedToIntegerBy","idiv","equals","exponent","getBase10Exponent","greaterThan","greaterThanOrEqualTo","isNegative","isneg","isPositive","ispos","isZero","lessThanOrEqualTo","logarithm","wpr","ln","minus","modulo","q","naturalExponential","exp","naturalLogarithm","negated","neg","plus","sd","z","squareRoot","toExponential","rL","toDecimalPlaces","todp","rm","toFixed","toint","toPower","yIsInt","yn","toPrecision","toSignificantDigits","tosd","multiplyInteger","compare","aL","bL","prod","prodL","qd","rem","remL","rem0","xi","xL","yd0","yL","yz","denominator","getLn10","zs","c0","numerator","parseDecimal","rd","doRound","xdi","xe","xLTy","isExp","ps","ROUND_UP","ROUND_DOWN","ROUND_CEIL","ROUND_FLOOR","ROUND_HALF_UP","ROUND_HALF_DOWN","ROUND_HALF_EVEN","ROUND_HALF_CEIL","ROUND_HALF_FLOOR","hasOwn","appendClass","parseValue","newClass","ColumnActionsMode","ConstrainMode","ColumnDragEndLocation","DetailsListLayoutMode","CheckboxVisibility","_window","rootElement","createStore","enhancer","currentReducer","currentListeners","nextListeners","listenerIdCounter","isDispatching","ensureCanMutateNextListeners","listenerId","replaceReducer","nextReducer","outerSubscribe","observeState","observerAsObserver","middlewares","middlewareAPI","toObjectMap","baseElementEvents","baseElementProperties","htmlElementProperties","labelProperties","audioProperties","videoProperties","olProperties","liProperties","anchorProperties","buttonProperties","inputProperties","textAreaProperties","selectProperties","optionProperties","tableProperties","trProperties","thProperties","tdProperties","colGroupProperties","colProperties","formProperties","iframeProperties","imgProperties","divProperties","getNativeProps","allowedPropNames","excludedPropNames","_classCallCheck","_inherits","_possibleConstructorReturn","assertThisInitialized","_getPrototypeOf","Pager","_classNames","prefixCls","rootPrefixCls","cls","page","active","title","showTitle","onKeyPress","tabIndex","itemRender","rel","_createSuper","Derived","hasNativeReflectConstruct","construct","sham","_isNativeReflectConstruct","Super","NewTarget","Options","_React$Component","_super","goInputText","buildOptionText","items_per_page","changeSize","_this$props","goButton","quickGo","relatedTarget","getValidValue","go","keyCode","KEYCODE","_this$state","_this$props2","pageSize","pageSizeOptions","_this$props3","selectComponentClass","selectPrefixCls","Select","changeSelect","goInput","gotoButton","getPageSizeOptions","opt","Option","showSearch","optionLabelProp","dropdownMatchSelectWidth","getPopupContainer","triggerNode","onKeyUp","jump_to_confirm","jump_to","symbols","calculatePage","total","Pagination","getJumpPrevPage","showLessItems","getJumpNextPage","getItemIcon","iconNode","savePaginationNode","paginationNode","shouldDisplayQuickJumper","showQuickJumper","handleKeyDown","handleKeyUp","currentInputValue","changePageSize","newCurrent","onShowSizeChange","currentPage","hasPrev","hasNext","jumpPrev","jumpNext","runIfEnter","charCode","restParams","runIfEnterPrev","runIfEnterNext","runIfEnterJumpPrev","runIfEnterJumpNext","handleGoTO","hasOnChange","_current","defaultCurrent","_pageSize","defaultPageSize","lastCurrentNode","querySelector","activeElement","blur","allPages","showSizeChanger","totalBoundaryShowSizeChanger","prevPage","prevIcon","prevButton","nextPage","_this$props4","nextIcon","nextButton","_this$props5","hideOnSinglePage","showTotal","simple","showPrevNextJumpers","jumpPrevIcon","jumpNextIcon","pagerList","firstPager","lastPager","pageBufferSize","dataOrAriaAttributeProps","prev_page","renderPrev","onKeyDown","next_page","renderNext","pagerProps","prevItemTitle","prev_3","prev_5","nextItemTitle","next_3","next_5","_active","totalText","prevDisabled","nextDisabled","unselectable","getShowSizeChanger","newState","ImageFit","ImageCoverStyle","ImageLoadState","KeyCodes","backspace","tab","enter","ctrl","alt","pauseBreak","capslock","space","pageUp","pageDown","home","up","down","del","zero","one","two","three","four","five","six","seven","eight","nine","leftWindow","rightWindow","zero_numpad","one_numpad","two_numpad","three_numpad","four_numpad","five_numpad","six_numpad","seven_numpad","eight_numpad","nine_numpad","decimalPoint","f1","f2","f3","f4","f5","f6","f7","f8","f9","f10","f11","f12","numlock","scrollLock","semicolon","equalSign","comma","dash","period","forwardSlash","graveAccent","openBracket","backSlash","closeBracket","singleQuote","fieldPath","validateFieldsNatively","toNestError","yupResolver","schemaOptions","resolverOptions","rawValues","messages","PolyElementKeys","svg","polygon","polyline","adaptEventHandlers","newHandler","adaptEventsOfChild","originalHandler","getEventHandlerOfChild","SelectionMode","SelectionDirection","SELECTION_CHANGE","SELECTION_ITEMS_CHANGE","DetailsRowGlobalClassNames","cell","cellAnimation","cellCheck","cellMeasurer","listCellFirstChild","isContentUnselectable","isSelected","isCheckVisible","isRowHeader","DEFAULT_CELL_STYLE_PROPS","cellLeftPadding","cellRightPadding","cellExtraRightPadding","DEFAULT_ROW_HEIGHTS","rowHeight","compactRowHeight","rowVerticalPadding","compactRowVerticalPadding","getDetailsRowStyles","canSelect","droppingClassName","anySelected","checkboxCellClassName","cellStyleProps","enableUpdateAnimations","colors","defaultHeaderText","defaultMetaText","defaultBackground","defaultHoverHeaderText","defaultHoverMetaText","defaultHoverBackground","selectedHeaderText","selectedMetaText","selectedBackground","selectedHoverHeaderText","selectedHoverMetaText","selectedHoverBackground","focusHeaderText","focusMetaText","focusBackground","focusHoverBackground","selectedStyles","background","borderBottom","display","borderTop","cannotSelectStyles","userSelect","cursor","rootCompactStyles","minHeight","cellCompactStyles","paddingTop","paddingBottom","paddingLeft","defaultCellStyles","maxWidth","minWidth","textAlign","cellUnpadded","paddingRight","cellPadded","checkCell","marginTop","flexShrink","checkCover","alignItems","isMultiline","wordBreak","ButtonGlobalClassNames","msButton","msButtonHasMenu","msButtonIcon","msButtonMenuIcon","msButtonLabel","msButtonDescription","msButtonScreenReaderText","msButtonFlexContainer","msButtonTextContainer","getBaseButtonClassNames","variantClassName","iconClassName","menuIconClassName","hasMenu","expanded","isSplit","isExpanded","rootChecked","rootExpanded","iconExpandedHovered","menuIconExpandedHovered","rootExpandedHovered","rootHasMenu","rootDisabled","rootHovered","labelHovered","iconHovered","descriptionHovered","menuIconHovered","rootFocused","rootPressed","iconPressed","descriptionPressed","menuIconPressed","rootCheckedDisabled","rootCheckedHovered","rootCheckedPressed","flexContainer","textContainer","iconExpanded","iconChecked","iconDisabled","labelChecked","labelDisabled","menuIconChecked","menuIconDisabled","menuIconExpanded","descriptionChecked","descriptionDisabled","screenReaderText","useBootstrapPrefix","defaultPrefix","SPACER_WIDTH","GroupSpacer","indentWidth","role","_inheritsLoose","PanelType","pi","asin","halfPi","tau","epsilon","atan2","calculateViewBox","XAxisContext","YAxisContext","ViewBoxContext","OffsetContext","ClipPathIdContext","ChartHeightContext","ChartWidthContext","ChartLayoutContextProvider","_props$state","xAxisMap","yAxisMap","clipPathId","viewBox","useClipPathId","useXAxisOrThrow","xAxisId","xAxis","useYAxisOrThrow","yAxisId","yAxis","useViewBox","useChartWidth","useChartHeight","KeytipEvents","KTP_PREFIX","KTP_SEPARATOR","DATAKTP_TARGET","DATAKTP_EXECUTE_TARGET","KTP_LAYER_ID","KEYTIP_ADDED","KEYTIP_REMOVED","KEYTIP_UPDATED","PERSISTED_KEYTIP_ADDED","PERSISTED_KEYTIP_REMOVED","PERSISTED_KEYTIP_EXECUTE","ENTER_KEYTIP_MODE","EXIT_KEYTIP_MODE","initInterpolator","interpolator","initRange","newInterval","floori","offseti","interval","d0","d1","stop","setTime","t0","t1","renderRadialLabel","labelProps","labelAngle","clockWise","deltaAngle","getDeltaAngle","startPoint","endPoint","dominantBaseline","xlinkHref","Label","_ref4$offset","_props$className","textBreakAll","getLabel","isPolarLabel","isPolar","positionAttrs","midAngle","_polarToCartesian","_x","textAnchor","verticalAnchor","_polarToCartesian2","getAttrsOfPolarLabel","parentViewBox","verticalSign","verticalOffset","verticalEnd","verticalStart","horizontalSign","horizontalOffset","horizontalEnd","horizontalStart","_attrs2","_attrs3","sizeAttrs","getAttrsOfCartesianLabel","Text","breakAll","parseViewBox","labelViewBox","parseLabel","renderCallByParent","parentProps","checkPropsLabel","explicitChildren","implicitLabel","DayOfWeek","MonthOfYear","FirstWeekOfYear","DateRangeType","assertIsFunction","errorMessage","assertIsObject","ensureIsArray","getDependencies","createSelectorArgs","itemTypes","assertIsArrayOfFunctions","collectInputSelectorResults","inputSelectorArgs","inputSelectorResults","WeakRef","weakMapMemoize","fnNode","resultEqualityCheck","resultsCount","cacheNode","objectCache","objectNode","primitiveCache","primitiveNode","terminatedNode","lastResultValue","deref","clearCache","resetResultsCount","createSelectorCreator","memoizeOrOptions","memoizeOptionsFromArgs","createSelectorCreatorOptions","memoizeOptions","createSelector","recomputations","dependencyRecomputations","directlyPassedOptions","resultFunc","combinedOptions","argsMemoize","argsMemoizeOptions","devModeChecks","finalMemoizeOptions","finalArgsMemoizeOptions","memoizedResultFunc","resetDependencyRecomputations","resetRecomputations","createStructuredSelector","inputSelectorsObject","selectorCreator","inputSelectorKeys","structuredSelector","composition","_stylesheet","InjectionMode","REUSE_STYLE_NODE","navigator","userAgent","_global","_rules","_preservedRules","_rulesToInsert","_counter","_keyToClassName","_onResetCallbacks","_classNameToArgs","_config","injectionMode","namespace","cspSettings","classNameCache","_lastStyleElement","fabricConfig","setConfig","classNameFromKey","getClassNameCache","argsFromClassName","insertedRulesFromClassName","preserve","_getStyleElement","onInsertRule","getRules","includePreservedRules","resetKeys","_styleElement","_createStyleElement","styleElement","nodeToInsertBefore","nextElementSibling","placeholderStyleTag","_findPlaceholderStyleTag","contains","_initializedStylesheetResets","_resetCounter","_emptyObject","empty","_dictionary","_weakMap","resetMemoizations","memoizeFunction","maxCacheSize","ignoreNullOrUndefinedResult","rootNode","cacheSize","localResetCounter","currentNode","_createNode","_normalizeArg","createMemoizer","isAbsolute","spliceOne","resolvePathname","hasTrailingSlash","toParts","fromParts","isToAbs","isFromAbs","mustEndAbs","valueEqual","aValue","bValue","stripLeadingSlash","hasBasename","stripTrailingSlash","hashIndex","searchIndex","parsePath","decodeURI","URIError","createTransitionManager","prompt","setPrompt","nextPrompt","confirmTransitionTo","getUserConfirmation","appendListener","canUseDOM","getConfirmation","confirm","getHistoryState","createBrowserHistory","globalHistory","canUseHistory","ua","supportsHistory","needsHashChangeListener","_props$forceRefresh","forceRefresh","_props$getUserConfirm","_props$keyLength","keyLength","getDOMLocation","historyState","_window$location","createKey","transitionManager","handlePopState","isExtraneousPopstateEvent","handleHashChange","forceNextPop","ok","fromLocation","toIndex","allKeys","delta","revertPop","initialLocation","listenerCount","checkDOMListeners","isBlocked","pushState","prevIndex","nextKeys","replaceState","goBack","goForward","unblock","HashPathCoders","hashbang","encodePath","decodePath","noslash","slash","stripHash","getHashPath","replaceHashPath","createHashHistory","_props$hashType","hashType","_HashPathCoders$hashT","ignorePath","encodedPath","allPaths","baseTag","pushHashPath","nextPaths","lowerBound","upperBound","createMemoryHistory","_props$initialEntries","initialEntries","_props$initialIndex","initialIndex","nextIndex","nextEntries","canGo","getParent","allowVirtualParents","_virtual","getVirtualParent","_defineProperties","descriptor","MULTIPLY_OR_DIVIDE_REGEX","ADD_OR_SUBTRACT_REGEX","CSS_LENGTH_UNIT_REGEX","NUM_SPLIT_REGEX","CONVERSION_RATES","cm","mm","pt","pc","Q","px","FIXED_CSS_LENGTH_UNITS","DecimalCSS","Constructor","convertToPx","protoProps","staticProps","_NUM_SPLIT_REGEX$exec","numStr","calculateArithmetic","expr","newExpr","_MULTIPLY_OR_DIVIDE_R","leftOperand","rightOperand","lTs","rTs","_ADD_OR_SUBTRACT_REGE","_leftOperand","_operator","_rightOperand","_lTs","_rTs","PARENTHESES_REGEX","evaluateExpression","expression","parentheticalExpression","calculateParentheses","reduceCSSCalc","safeEvaluateExpression","BREAKING_SPACES","calculateWordWidths","wordsWithComputedWidth","getStringSize","spaceWidth","getWordsWithoutCalculate","getWordsByLines","scaleToFit","maxLines","Global","isSsr","wordWidths","initialWordsWithComputedWith","lineWidth","shouldLimitLines","text","calculate","currentLine","newLine","originalResult","trimmedResult","checkOverflow","tempText","findLongestLine","iterations","_checkOverflow2","doesPrevOverflow","doesMiddleOverflow","calculateWordsByLines","_ref5$x","propsX","_ref5$y","propsY","_ref5$lineHeight","lineHeight","_ref5$capHeight","capHeight","_ref5$scaleToFit","_ref5$textAnchor","_ref5$verticalAnchor","_ref5$fill","wordsByLines","dx","dy","textProps","startDy","QueryStatus","countObjectKeys","isNotNullish","joinUrls","isAbsoluteUrl","withoutTrailingSlash","withoutLeadingSlash","defaultFetchFn","fetch","defaultValidateStatus","defaultIsJsonContentType","headers","stripUndefined","fetchBaseQuery","prepareHeaders","fetchFn","paramsSerializer","isJsonContentType","jsonContentType","jsonReplacer","defaultTimeout","responseHandler","globalResponseHandler","validateStatus","globalValidateStatus","baseFetchOptions","api","endpoint","forced","Headers","isJsonifiable","body","divider","URLSearchParams","request","Request","timedOut","timeoutId","responseClone","resultData","responseText","handleResponseError","handleResponse","originalStatus","HandledError","onFocus","onFocusLost","onOnline","onOffline","initialized","setupListeners","customHandler","handleFocus","handleOnline","handleOffline","handleVisibilityChange","visibilityState","isQueryDefinition","isMutationDefinition","calculateProvidedBy","queryArg","assertTagTypes","expandTagDescription","asSafePromise","fallback","forceQueryFnSymbol","isUpsertQuery","buildInitiate","serializeQueryArgs","queryThunk","mutationThunk","runningQueries","runningMutations","unsubscribeQueryResult","removeMutationResult","updateSubscriptionOptions","internalActions","buildInitiateQuery","endpointName","endpointDefinition","queryAction","forceRefetch","subscriptionOptions","forceQueryFn","queryCacheKey","queryArgs","originalArgs","endpoints","thunkResult","stateAfter","middlewareWarning","skippedSynchronously","runningQuery","selectFromState","statePromise","refetch","running","buildInitiateMutation","track","fixedCacheKey","returnValuePromise","ret","getRunningQueryThunk","endpointDefinitions","getRunningMutationThunk","_endpointName","fixedCacheKeyOrRequestId","getRunningQueriesThunk","getRunningMutationsThunk","defaultTransformResponse","baseQueryReturnValue","buildThunks","baseQuery","assertTagType","executeEndpoint","transformResponse","baseQueryApi","isForcedQuery","query","queryFn","fulfilledTimeStamp","baseQueryMeta","catchedError","transformErrorResponse","requestState","queries","baseFetchOnMountOrArgChange","refetchOnMountOrArgChange","fulfilledVal","refetchVal","startedTimeStamp","queryThunkArgs","currentArg","previousArg","endpointState","matchesEndpoint","prefetch","force","hasTheForce","maxAge","hasMaxAge","ifOlderThan","isPrefetch","initiate","latestStateValue","lastFulfilledTs","updateQueryData","updateRecipe","updateProvided","undo","util","patchQueryData","upsertQueryData","queryResultPatched","providedTags","providesTags","updateProvidedBy","buildMatchThunkActions","matchPending","matchFulfilled","matchRejected","calculateProvidedByThunk","updateQuerySubstateIfExists","substate","getMutationCacheKey","updateMutationSubstateIfExists","buildSlice","definitions","apiUid","extractRehydrationInfo","hasRehydrationInfo","resetApiState","querySlice","removeQueryResult","upserting","draftSubstateData","structuralSharing","copyWithStructuralSharing","oldObj","newKeys","oldKeys","isSameObject","mergeObj","mutationSlice","mutations","invalidationSlice","tagTypeSubscriptions","idSubscriptions","foundAt","subscribedQueries","provided","incomingTags","cacheKeys","subscriptionSlice","internalSubscriptionsSlice","subscriptionsUpdated","configSlice","online","onLine","focused","middlewareRegistered","combinedReducer","subscriptions","skipToken","initialSubState","defaultQuerySubState","defaultMutationSubState","buildSelectors","selectSkippedQuery","selectSkippedMutation","buildQuerySelector","serializedArgs","selectInternalState","withRequestFlags","buildMutationSelector","mutationId","selectInvalidatedBy","tags","apiState","toInvalidate","invalidateSubscriptions","invalidate","querySubState","selectCachedArgsForQuery","queryName","isUninitialized","isSuccess","defaultSerializeQueryArgs","serialized","cached","stringified","$bigint","buildCreateApi","modules","optionsWithDefaults","keepUnusedDataFor","refetchOnFocus","refetchOnReconnect","invalidationBehavior","queryArgsApi","finalSerializeQueryArgs","endpointSQA","initialResult","tagTypes","injectEndpoints","evaluatedEndpoints","mutation","definition","overrideExisting","_formatProdErrorMessage","initializedModules","injectEndpoint","addTagTypes","eT","partialDefinition","init","safeAssign","buildBatchedActionsHandler","internalState","subscriptionsPrefix","previousSubscriptions","updateSyncTimer","getSubscriptions","currentSubscriptions","subscriptionSelectors","getSubscriptionCount","isRequestSubscribed","mwApi","internal_getRTKQSubscriptions","actionShouldContinue","mutableState","mutated","actuallyMutateSubscriptions","newSubscriptions","isSubscriptionSliceAction","isAdditionalSubscriptionAction","buildCacheCollectionHandler","canTriggerUnsubscribe","anySubscriptionsRemainingForKey","isObjectEmpty","currentRemovalTimeouts","handleUnsubscribe","finalKeepUnusedDataFor","currentTimeout","queryState","neverResolvedError","buildCacheLifecycleHandler","isQueryThunk","isMutationThunk","isFulfilledThunk","lifecycleMap","handleNewKey","onCacheEntryAdded","lifecycle","cacheEntryRemoved","cacheDataLoaded","valueResolved","lifecycleApi","getCacheEntry","updateCachedData","runningHandler","stateBefore","getCacheKey","oldState","buildDevCheckHandler","buildInvalidationByTagsHandler","refetchQuery","isThunkActionWithTags","isQueryEnd","pendingTagInvalidations","invalidateTags","newTags","hasPendingRequests","valuesArray","subscriptionSubState","buildPollingHandler","currentPolls","startNextPoll","lowestPollingInterval","skipPollingIfUnfocused","findLowestPollingInterval","currentPoll","nextPollTimestamp","pollingInterval","updatePollingInterval","cleanupPollForKey","existingPoll","subscribers","POSITIVE_INFINITY","clearPolls","buildQueryLifecycleHandler","isPendingThunk","isRejectedThunk","isFullfilledThunk","onQueryStarted","queryFulfilled","isUnhandledError","buildMiddleware","isThisApiSliceAction","handlerBuilders","builderArgs","build","batchedActionsHandler","windowEventsHandler","refetchValidQueries","buildWindowEventHandler","mwApiWithNext","internalProbeResult","coreModuleName","coreModule","sliceActions","middlewareActions","anyApi","FocusZoneDirection","FocusZoneTabbableElements","inputOnly","steps","leftMirror","rightMirror","topMirror","bottomMirror","Bar","calculatedPadding","needSpace","orientation","_axis$padding","mirror","offsetKey","smallestDistanceBetweenValues","sortedValues","smallestDistanceInPercent","rangeWidth","gap","halfBand","rectWithPoints","rectWithCoords","ScaleHelper","bandAware","_offset2","createLabeledScales","scales","coord","isInRange","normalizeAngle","getAngledRectangleWidth","normalizedAngle","angleRadians","angleThreshold","atan","angledWidth","warning","NO_CUSTOMIZATIONS","scopedSettings","inCustomizerContext","_allSettings","_events","_raiseChange","applyScopedSettings","scopeName","localSettings","localScopedSettings","globalScopedSettings","applyBatchedUpdates","suppressUpdate","_suppressUpdates","observe","unobserve","_id","EventGroup","_uniqueId","_parent","_eventRecords","raise","eventName","eventArgs","bubbleEvent","retVal","_isElement","createEvent","ev","initEvent","dispatchEvent","createEventObject","evObj","fireEvent","events","__events__","eventRecords","eventRecordList","listIndex","objectCallback","isObserved","isDeclared","declaredEvents","__declaredEvents","cancelBubble","dispose","_isDisposed","onAll","useCapture","eventRecord","processElementEvent","elementCallback","attachEvent","targetArrayLookup","targetArray","detachEvent","declare","_fsum","Adder","_index","InternMap","InternSet","_ascending","_bin","_bisect","bisectCenter","bisectLeft","bisectRight","_bisector","_count","_cross","_cumsum","_descending","_deviation","_difference","_disjoint","_every","_extent","fcumsum","_filter","_group","flatGroup","flatRollup","fsum","_greatest","_greatestIndex","_groupSort","groups","_intersection","_least","_leastIndex","_map","_maxIndex","_mean","_median","_minIndex","_mode","_nice","_pairs","_permute","_quantile","quantileSorted","_quickselect","_range","_rank","_reduce","_reverse","rollup","rollups","_scan","_shuffle","shuffler","_some","_sort","_subset","_sum","_superset","_freedmanDiaconis","_scott","_sturges","_ticks","tickIncrement","tickStep","_transpose","_union","_variance","_zip","_interopRequireWildcard","_interopRequireDefault","__esModule","_getRequireWildcardCache","nodeInterop","cacheBabelInterop","cacheNodeInterop","hasPropertyDescriptor","checkDCE","__REACT_DEVTOOLS_GLOBAL_HOOK__","format","reactIs","REACT_STATICS","contextType","getDefaultProps","getDerivedStateFromError","getDerivedStateFromProps","mixins","propTypes","KNOWN_STATICS","caller","callee","MEMO_STATICS","TYPE_STATICS","getStatics","isMemo","ForwardRef","Memo","objectPrototype","targetComponent","sourceComponent","blacklist","inheritedComponent","targetStatics","sourceStatics","durationYear","durationWeek","durationSecond","durationMonth","durationMinute","durationHour","durationDay","setRTL","isRTL","_rtl","getRTL","getStyleOptions","safeRequestAnimationFrame","setRafTimeout","currTime","createAnimateManager","shouldStop","setStyle","_style","_styles","restStyles","_handleChange","hint","prim","param","mapObject","getTransitionVal","duration","easing","cubicBezierFactor","c1","c2","multyTime","pre","cubicBezier","derivativeCubicBezier","newParams","configBezier","_easing$1$split$0$spl","_easing$1$split$0$spl2","curveX","curveY","derCurveX","rangeValue","bezier","_t","evalT","derVal","isStepper","configSpring","_config$stiff","stiff","_config$damping","damping","_config$dt","dt","stepper","currX","destX","currV","newV","newX","alpha","needContinue","preObj","nextObj","preTime","beginTime","interKeys","timingStyle","stepperStyle","velocity","cafId","calStepperVals","preVals","nextStepVals","_easing2","currStyle","finalStyle","cancelAnimationFrame","_setPrototypeOf","_assertThisInitialized","ReferenceError","Animate","_PureComponent","subClass","superClass","attributeName","handleStyleChange","changeStyle","canBegin","mounted","runAnimation","shouldReAnimate","currentFrom","isTriggered","manager","stopJSAnimation","_newState","onAnimationEnd","unSubscribe","onAnimationStart","startAnimation","configUpdate","configEasing","_steps$","initialStyle","_steps$$duration","initialTime","sequence","nextItem","_nextItem$easing","nextProperties","preItem","runJSAnimation","transition","newStyle","propsTo","runStepAnimation","onAnimationReStart","stateStyle","cloneContainer","container","_container$props","_container$props$styl","PureComponent","oneOfType","arrayOf","bool","getChildMapping","getProp","getNextChildMapping","prevChildMapping","onExited","nextChildMapping","getValueForKey","nextKeysPending","pendingKeys","childMapping","nextKey","pendingNextKey","mergeChildMappings","isLeaving","in","exit","TransitionGroup","handleExited","isMounting","firstRender","appear","currentChildMapping","childFactory","TransitionGroupContext","parseDurationOfSingleTransition","AnimateGroupChild","_Component","isAppearing","appearOptions","enterOptions","handleStyleActive","leaveOptions","Transition","onEnter","handleEnter","onExit","handleExit","parseTimeout","AnimateGroup","leave","any","image","MS_ICON","getStyles","isPlaceholder","isImage","imageContainer","getTrapezoidPath","upperWidth","lowerWidth","widthGap","isUpdateAnimationActive","animationBegin","animationEasing","Trapezoid","trapezoidProps","pathRef","_useState2","totalLength","setTotalLength","getTotalLength","pathTotalLength","currUpperWidth","currLowerWidth","currHeight","currY","defaultPropTransformer","ShapeSelector","shapeType","elementProps","Rectangle","Sector","_elementProps","isSymbolsProps","Symbols","Shape","_ref2$propTransformer","propTransformer","_ref2$activeClassName","getPropsFromShapeOption","isFunnel","_item","isPie","isScatter","compareFunnel","shapeData","activeTooltipItem","_activeTooltipItem$la","_activeTooltipItem$la2","xMatches","yMatches","comparePie","startAngleMatches","endAngleMatches","compareScatter","zMatches","getActiveShapeIndexForTooltip","itemData","shapeKey","activeItem","getShapeDataKey","tooltipPayload","_activeItem$tooltipPa","_activeItem$tooltipPa2","getActiveShapeTooltipPayload","activeItemMatches","datum","dataIndex","valuesMatch","mouseCoordinateMatches","comparison","getComparisonFn","indexOfMouseCoordinates","SpinnerSize","SpinnerType","transformer","_index2","_constant","_number","bimap","r0","r1","polymap","bisect","untransform","piecewise","rescale","clamper","rangeRound","interpolateRound","_vendorSettings","kebabRules","rulePairs","autoPrefixNames","prefixRules","vendorSettings","nav","isWebkit","isMoz","isOpera","isMs","getVendorSettings","NON_PIXEL_NUMBER_PROPS","provideUnits","isNonPixelProp","isVariableOrPrefixed","LEFT","RIGHT","NAME_REPLACEMENTS","VALUE_REPLACEMENTS","rtlifyRules","flipQuad","partIndex","numberVal","negateNum","rootStyle","globalSelectorRegExp","expandSelector","newSelector","currentSelector","extractSelector","__order","extractRules","selectorWithGlobals","replacementInfo","findGlobal","matchIndex","matchEndIndex","expandCommaSeparatedGlobals","separatedSelector","currentRules","expandedRules","propValue","expandQuads","getKeyForRules","hasProps","rulesForSelector","repeatString","serializeRuleEntries","ruleEntries","allEntries","styleToRegistration","registration","rulesToInsert","applyRegistration","specificityMultiplier","processedRule","styleToClassName","stringCache","widthCache","SPAN_STYLE","removeInvalidKeys","copyObj","copyStyle","measurementSpan","getElementById","measurementSpanStyle","rect","getBoundingClientRect","getOffset","scrollY","clientTop","scrollX","clientLeft","SelectableContext","makeEventKey","eventKey","ResponsiveMode","WindowContext","_defaultMode","_lastMode","RESPONSIVE_MAX_CONSTRAINT","getInitialResponsiveMode","withResponsiveMode","ComposedComponent","resultClass","_onResize","responsiveMode","getResponsiveMode","_updateComposedComponentRef","BaseDecorator","getWidthOfCurrentWindow","currentWindow","clientWidth","innerWidth","keyList","hasProp","hasElementType","Element","equal","arrA","arrB","dateA","dateB","regexpA","regexpB","linear","_continuous","_init","linearish","_tickFormat","tickFormat","specifier","nice","prestep","i0","i1","maxIter","maxSize","_maxSize","_size","SPLIT_REGEX","DIGIT_REGEX","LEAD_DIGIT_REGEX","SPEC_CHAR_REGEX","CLEAN_QUOTES_REGEX","setCache","getCache","normalizePath","isQuoted","shouldBeQuoted","hasLeadingNumber","hasSpecialChars","safe","segments","noOutline","iconStyle","buttonHighContrastFocus","textDecoration","backgroundColor","flexWrap","justifyContent","flexGrow","getRectanglePath","ySign","xSign","newRadius","_newRadius","isInRectangle","py","minX","maxX","minY","maxY","isAnimationActive","rectangleProps","currWidth","ContextualMenuItemType","ImageIcon","imageProps","nativeProps","containerProps","Image","getIsChecked","canCheck","isChecked","hasSubmenu","subMenuProps","isItemDisabled","isDisabled","getMenuItemAriaRole","renderItemIcon","hasIcons","iconProps","onRenderIcon","Icon","renderCheckMarkIcon","onCheckmarkClick","isItemChecked","checkmarkIcon","renderItemName","renderSecondaryText","secondaryText","renderSubMenuIcon","submenuIconProps","subMenuIcon","openSubMenu","getSubmenuTarget","submenuTarget","dismissSubMenu","dismissMenu","dismissAll","initializeComponentRef","renderContent","onRenderContent","_renderLayout","linkContentMenu","linkContent","defaultRenders","MediumScreenSelector","getMenuItemStyles","ContextualMenuItemBackgroundHoverColor","ContextualMenuItemTextHoverColor","ContextualMenuItemBackgroundSelectedColor","ContextualMenuItemDividerColor","menuItemStyles","anchorLink","textRendering","letterSpacing","wordSpacing","textTransform","textIndent","textShadow","maxHeight","iconColor","splitButtonFlexContainer","getSplitButtonVerticalDividerClassNames","GlobalClassNames","splitMenu","isAnchorLink","knownIcon","itemClassName","dividerClassName","subMenuClassName","primaryDisabled","splitPrimary","flexBasis","splitContainer","getItemStyles","ContextualMenuItem","_onItemMouseEnter","onItemMouseEnter","_onItemClick","onItemClickBase","_onItemMouseLeave","onItemMouseLeave","_onItemKeyDown","onItemKeyDown","_onItemMouseMove","onItemMouseMove","_getSubmenuTarget","newProps","_anchor","_getMemoizedMenuButtonKeytipProps","keytipProps","onItemClick","_renderAriaDescription","ariaDescription","_ariaDescriptionId","focusableElementIndex","totalItemCount","hasCheckmarks","contextualMenuItemAs","expandedMenuItemKey","anchorRel","itemHasSubmenu","itemProps","getId","KeytipData","ariaDescribedBy","keytipAttributes","onMouseEnter","onMouseLeave","onMouseMove","ChildrenRenderer","componentRef","_btn","onItemMouseDown","defaultRole","ariaLabel","buttonNativeProperties","itemRole","ariaDescribedByIds","itemButtonProperties","onMouseDown","classNamesFunction","VerticalDividerBase","getClassNames","deprecatedGetClassNames","VerticalDivider","which","_executeItemClick","_splitButton","_onItemMouseEnterPrimary","_onItemMouseEnterIcon","_onItemMouseMovePrimary","_onItemMouseMoveIcon","_onIconItemClick","executeItemClick","_processingTouch","_onTouchStart","_handleTouchAndPointerEvent","_onPointerDown","pointerType","stopImmediatePropagation","_async","Async","splitButton","onTouchStart","_renderSplitPrimaryButton","_renderSplitDivider","_renderSplitIconButton","itemComponentProps","getDividerClassNames","buttonProps","onTap","_lastTouchTimeoutId","getContextualMenuItemClassNames","getSubmenuItems","overrideItems","subItem","preferMenuTargetAsEventTarget","contextItem","getOnClickWithOverrideTarget","_getMenuItemStylesFunction","styleProps","dismiss","onDismiss","_tryFocusPreviousActiveElement","onRestoreFocus","containsFocus","_previousActiveElement","_onRenderMenuList","menuListProps","defaultRender","indexCorrection","_onKeyDown","_onKeyUp","menuItem","_renderMenuItem","itemType","Divider","Header","indexIncrease","customOnRenderListLength","itemClassNames","renderedItems","getItemClassNames","subMenuIconClassName","itemStyleProps","subComponentStyles","_renderSeparator","headerItem","_renderHeaderMenuItem","_renderListItem","Section","_renderSectionItem","_renderNormalItem","_defaultMenuItemRenderer","_lastKeyDownWasAltOrMeta","_isAltOrMeta","dismissAllMenus","_keyHandler","_shouldHandleKeyDown","_shouldCloseSubMenu","_onMenuFocusCapture","delayUpdateFocusOnHover","_shouldUpdateFocusOnMouseEvent","_shouldHandleKeyUp","keyPressIsAltOrMetaAlone","shouldHandleKey","handled","_focusingPreviousElement","submenuCloseKey","isSubMenu","_adjustedFocusZoneProps","vertical","checkForNoWrap","_onMenuKeyDown","_host","hasModifier","isUp","isDown","elementToFocus","lastChild","firstChild","_onScroll","_isScrollIdle","_scrollIdleTimeoutId","_onItemMouseEnterBase","_shouldIgnoreMouseEvent","_updateFocusOnMouseEvent","_onItemMouseMoveBase","targetElement","_gotMouseMove","_enterTimerId","_targetWindow","_onMouseItemLeave","setActive","_onItemMouseDown","_onItemClickBase","_cancelSubMenuTimer","expandedByMouseClick","nativeEvent","detail","_onItemSubMenuExpand","_onAnchorClick","overrideTarget","menuTarget","openKey","_onSubMenuDismiss","dismissedMenuItemKey","_onPointerAndTouchEvent","warnDeprecations","getMenuClassNames","contextualMenuItems","subMenuId","shouldUpdateWhenHidden","hidden","UNSAFE_componentWillUpdate","newTarget","_setTargetWindowAndElement","_isHidden","_onMenuClosed","_onMenuOpened","UNSAFE_componentWillMount","onMenuDismissed","isBeakVisible","labelElementId","beakWidth","directionalHint","directionalHintForRTL","alignTargetEdge","gapSpace","coverTarget","doNotLayer","bounds","useTargetWidth","useTargetAsMinWidth","directionalHintFixed","shouldFocusOnMount","shouldFocusOnContainer","calloutProps","onRenderSubMenu","onRenderMenuList","focusZoneProps","itemsHaveIcons","sectionProps","_getFocusZoneDirection","contextMenuStyle","submenuItem","canAnyMenuItemsCheck","submenuProps","_getSubmenuProps","targetAsHtmlElement","offsetWidth","targetWidth","calloutStyles","callout","Callout","setInitialFocus","onScroll","host","onFocusCapture","FocusZone","isCircularNavigation","handleTabKey","defaultMenuItemRenderer","_onRenderSubMenu","onMenuOpened","documentContainsFocus","hasFocus","originalElement","sectionItem","menuClassNames","groupProps","headerContextualMenuItem","ariaLabellledby","topDivider","contextualMenuItem","itemsIndex","bottomDivider","fromSection","onRender","_renderAnchorMenuItem","_renderSplitButton","_renderButtonItem","divHtmlProperties","header","subMenuHoverDelay","timeoutDuration","_findItemByKey","_findItemByKeyFromItems","currentElement","currentDoc","ContextualMenuBase","Event","isopen","LocalContextualMenu","listStyleType","composeRenderFunction","ContextualMenu","splitButtonMenuButton","splitButtonMenuButtonExpanded","splitButtonMenuButtonDisabled","splitButtonMenuButtonChecked","splitButtonMenuFocused","splitButtonContainer","splitButtonContainerChecked","splitButtonContainerCheckedHovered","splitButtonContainerHovered","splitButtonContainerFocused","splitButtonContainerDisabled","splitButtonMenuIcon","splitButtonMenuIconDisabled","splitButtonDivider","splitButtonDividerDisabled","_buttonElement","_splitButtonContainer","_mergedRef","createMergedRef","_renderedVisibleMenu","_onRenderIcon","FontIcon","_onRenderTextContents","onRenderText","onRenderDescription","_onRenderText","_onRenderDescription","_hasText","_labelId","_onRenderChildren","_descriptionId","_onRenderAriaDescription","_onRenderMenuIcon","menuIconProps","_onRenderMenu","menuProps","MenuType","menuAs","composeComponentAs","_onDismissMenu","_dismissMenu","_menuShouldFocusOnMount","_menuShouldFocusOnContainer","menuHidden","_openMenu","_onToggleMenu","_onSplitContainerFocusCapture","portalContainsElement","_onSplitButtonPrimaryClick","_onMenuClick","_onKeyPress","_onMouseUp","onMouseUp","_onMouseDown","_onClick","_onSplitButtonContainerKeyDown","_isValidMenuOpenKey","onMenuClick","setFocusVisibility","forceUpdate","_isSplitButton","warnConditionallyRequiredProps","rootProps","toggled","ariaHidden","allowDisabledFocus","toggle","isPrimaryButtonDisabled","renderAsAnchor","resolvedAriaLabel","ariaLabelledBy","dataIsFocusable","isCheckboxTypeRole","checkedOrPressedValue","elementRef","_onRenderSplitButtonContent","_onRenderContent","onPointerUp","onAfterMenuDismiss","openMenu","Tag","onRenderAriaDescription","onRenderChildren","onRenderMenu","onRenderMenuIcon","Button","_shouldRenderMenu","_getMenuProps","Content","persistMenu","renderPersistedMenuHiddenOnMount","getSplitButtonClassNames","primaryActionButtonProps","onPointerDown","SplitButton","_onRenderSplitButtonMenuButton","_onRenderSplitButtonDivider","splitButtonMenuProps","splitButtonAriaLabel","splitButtonProps","BaseButton","menuTriggerKeyCode","baseClassName","CustomizerContext","customizations","hookCallback","hooks","hasOwnProp","arrLen","createUTC","createLocalOrUTC","utc","getParsingFlags","_pf","unusedTokens","unusedInput","charsLeftOver","nullInput","invalidEra","invalidMonth","invalidFormat","userInvalidated","iso","parsedDateParts","era","meridiem","rfc2822","weekdayMismatch","flags","parsedParts","isNowValid","invalidWeekday","_strict","bigHour","_isValid","createInvalid","fun","momentProperties","updateInProgress","copyConfig","momentPropertiesLen","_isAMomentObject","_l","_tzm","_isUTC","_locale","Moment","updateOffset","isMoment","suppressDeprecationWarnings","deprecate","firstTime","deprecationHandler","argLen","deprecations","deprecateSimple","mergeConfigs","parentConfig","childConfig","Locale","zeroFill","targetLength","forceSign","absNumber","zerosToFill","formattingTokens","localFormattingTokens","formatFunctions","formatTokenFunctions","addFormatToken","token","padded","ordinal","localeData","formatMoment","expandFormat","mom","makeFormatFunction","replaceLongDateFormatTokens","longDateFormat","aliases","D","dates","days","day","weekdays","weekday","E","isoweekdays","isoweekday","DDD","dayofyears","dayofyear","hours","hour","ms","milliseconds","millisecond","minutes","minute","M","months","month","quarters","quarter","seconds","second","gg","weekyears","weekyear","GG","isoweekyears","isoweekyear","weeks","week","W","isoweeks","isoweek","years","year","normalizeUnits","units","normalizeObjectUnits","inputObject","normalizedProp","normalizedInput","regexes","priorities","isoWeekday","dayOfYear","weekYear","isoWeekYear","isoWeek","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchOffset","matchShortOffset","matchWord","match1to2NoLeadingZero","match1to2HasZero","addRegexToken","strictRegex","getParseRegexForToken","regexEscape","p1","p2","p3","p4","absFloor","toInt","argumentForCoercion","coercedNumber","tokens","addParseToken","tokenLen","addWeekParseToken","_w","addTimeToArrayFromToken","isLeapYear","daysInYear","parseTwoDigitYear","getSetYear","makeGetSet","keepTime","set$1","isUTC","getUTCMilliseconds","getMilliseconds","getUTCSeconds","getSeconds","getUTCMinutes","getMinutes","getUTCHours","getHours","getUTCDate","getDate","getUTCDay","getDay","getUTCMonth","getMonth","getUTCFullYear","getFullYear","setUTCMilliseconds","setMilliseconds","setUTCSeconds","setSeconds","setUTCMinutes","setMinutes","setUTCHours","setHours","setUTCDate","setDate","setUTCFullYear","setFullYear","daysInMonth","modMonth","monthsShort","monthsShortRegex","monthsRegex","monthsParse","defaultLocaleMonths","defaultLocaleMonthsShort","MONTHS_IN_FORMAT","defaultMonthsShortRegex","defaultMonthsRegex","handleStrictParse","monthName","llc","toLocaleLowerCase","_monthsParse","_longMonthsParse","_shortMonthsParse","setMonth","setUTCMonth","getSetMonth","computeMonthsParse","cmpLenRev","shortP","longP","shortPieces","longPieces","mixedPieces","_monthsRegex","_monthsShortRegex","_monthsStrictRegex","_monthsShortStrictRegex","createDate","createUTCDate","firstWeekOffset","dow","doy","fwd","dayOfYearFromWeeks","resYear","resDayOfYear","weekOfYear","resWeek","weekOffset","weeksInYear","weekOffsetNext","shiftWeekdays","weekdaysMin","weekdaysShort","weekdaysMinRegex","weekdaysShortRegex","weekdaysRegex","weekdaysParse","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","defaultWeekdaysRegex","defaultWeekdaysShortRegex","defaultWeekdaysMinRegex","handleStrictParse$1","weekdayName","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","computeWeekdaysParse","minp","shortp","longp","minPieces","_weekdaysRegex","_weekdaysShortRegex","_weekdaysMinRegex","_weekdaysStrictRegex","_weekdaysShortStrictRegex","_weekdaysMinStrictRegex","hFormat","matchMeridiem","_meridiemParse","kInput","_isPm","isPM","_meridiem","pos","pos1","pos2","globalLocale","getSetHour","baseConfig","calendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","LTS","LT","L","LL","LLL","LLLL","dayOfMonthOrdinalParse","relativeTime","future","past","ss","hh","dd","ww","MM","yy","meridiemParse","locales","localeFamilies","commonPrefix","arr1","minl","normalizeLocale","loadLocale","oldLocale","isLocaleNameSane","_abbr","aliasedRequire","getSetGlobalLocale","getLocale","defineLocale","abbr","parentLocale","chooseLocale","_overflowDayOfYear","_overflowWeeks","_overflowWeekday","extendedIsoRegex","basicIsoRegex","tzRegex","isoDates","isoTimes","aspNetJsonRegex","obsOffsets","UT","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","configFromISO","allowTime","dateFormat","timeFormat","tzFormat","isoDatesLen","isoTimesLen","configFromStringAndFormat","untruncateYear","yearStr","configFromRFC2822","parsedArray","monthStr","dayStr","hourStr","minuteStr","secondStr","extractFromRFC2822Strings","weekdayStr","parsedInput","checkWeekday","obsOffset","militaryOffset","numOffset","hm","calculateOffset","configFromArray","currentDate","expectedWeekday","yearToUse","nowValue","_useUTC","currentDateArray","weekdayOverflow","curWeek","createLocal","_week","_dayOfYear","dayOfYearFromWeekInfo","_nextDay","ISO_8601","RFC_2822","skipped","stringLength","totalParsedInputLength","isPm","meridiemHour","meridiemFixWrap","erasConvertYear","prepareConfig","preparse","tempConfig","bestMoment","scoreToBeat","currentScore","validFormatFound","bestFormatIsValid","configfLen","score","configFromStringAndArray","createFromInputFallback","configFromString","dayOrDate","configFromObject","configFromInput","createFromConfig","prototypeMin","prototypeMax","moments","ordering","Duration","unitHasDecimal","orderLen","isDurationValid","_milliseconds","_days","_months","_data","_bubble","isDuration","absRound","utcOffset","offsetFromString","chunkOffset","cloneWithOffset","model","local","getDateOffset","getTimezoneOffset","isUtc","aspNetRegex","isoRegex","createDuration","diffRes","parseIso","isBefore","positiveMomentsDifference","momentsDifference","inp","isAfter","createAdder","addSubtract","isAdding","isMomentInput","arrayTest","dataTypeTest","isNumberOrStringArray","objectTest","propertyTest","propertyLen","isMomentInputObject","isCalendarSpec","monthDiff","wholeMonthDiff","anchor","newLocaleData","defaultFormat","defaultFormatUtc","mod$1","localStartOfDate","utcStartOfDate","matchEraAbbr","erasAbbrRegex","computeErasParse","erasName","erasAbbr","erasNarrow","abbrPieces","namePieces","narrowPieces","eras","narrow","_erasRegex","_erasNameRegex","_erasAbbrRegex","_erasNarrowRegex","addWeekYearFormatToken","getSetWeekYearHelper","weeksTarget","setWeekAll","dayOfYearData","erasNameRegex","erasNarrowRegex","erasParse","_eraYearOrdinalRegex","eraYearOrdinalParse","_dayOfMonthOrdinalParse","_ordinalParse","_dayOfMonthOrdinalParseLenient","getSetDayOfMonth","getSetMinute","getSetMillisecond","getSetSecond","parseMs","preParsePostFormat","formats","sod","startOf","calendarFormat","asFloat","that","zoneDelta","endOf","startOfDate","inputString","postformat","withoutSuffix","humanize","fromNow","toNow","invalidAt","localInput","isBetween","inclusivity","localFrom","localTo","isSame","inputMs","isSameOrAfter","isSameOrBefore","parsingFlags","prioritized","unitsObj","priority","getPrioritizedUnits","prioritizedLen","toObject","toDate","keepOffset","inspect","suffix","zone","isLocal","unix","creationData","eraName","since","until","eraNarrow","eraAbbr","eraYear","isoWeeks","weekInfo","weeksInWeekYear","isoWeeksInYear","isoWeeksInISOWeekYear","parseWeekday","parseIsoWeekday","keepLocalTime","keepMinutes","localAdjust","_changeInProgress","parseZone","tZone","hasAlignedHourOffset","isDST","isUtcOffset","zoneAbbr","zoneName","isDSTShifted","_isDSTShifted","array1","array2","dontConvert","lengthDiff","diffs","compareArrays","proto$1","get$1","listMonthsImpl","listWeekdaysImpl","localeSorted","_calendar","_longDateFormat","formatUpper","tok","_invalidDate","_ordinal","isFuture","_relativeTime","pastFuture","_eras","isFormat","_monthsShort","_monthsParseExact","firstDayOfYear","firstDayOfWeek","_weekdays","_weekdaysMin","_weekdaysShort","_weekdaysParseExact","_fullWeekdaysParse","isLower","langData","mathAbs","addSubtract$1","absCeil","daysToMonths","monthsToDays","makeAs","asMilliseconds","asSeconds","asMinutes","asHours","asDays","asWeeks","asMonths","asQuarters","asYears","valueOf$1","makeGetter","thresholds","substituteTimeAgo","abs$1","toISOString$1","totalSign","ymSign","daysSign","hmsSign","proto$2","monthsFromDays","argWithSuffix","argThresholds","withSuffix","posNegDuration","relativeTime$1","toIsoString","version","updateLocale","tmpLocale","relativeTimeRounding","roundingFunction","relativeTimeThreshold","threshold","myMoment","HTML5_FMT","DATETIME_LOCAL","DATETIME_LOCAL_SECONDS","DATETIME_LOCAL_MS","DATE","TIME","TIME_SECONDS","TIME_MS","WEEK","MONTH","factory","createChainedFunction","IsFocusVisibleClassName","enabled","classList","defaultFormatter","DefaultTooltipContent","_props$separator","_props$contentStyle","contentStyle","_props$itemStyle","itemStyle","_props$labelStyle","labelStyle","itemSorter","wrapperClassName","labelClassName","labelFormatter","_props$accessibilityL","accessibilityLayer","finalLabelStyle","hasLabel","finalLabel","wrapperCN","labelCN","accessibilityAttributes","finalItemStyle","finalFormatter","finalValue","finalName","formatted","_formatted","CSS_CLASS_PREFIX","TOOLTIP_HIDDEN","getTooltipCSSClassName","translateX","translateY","getTooltipTranslateXY","allowEscapeViewBox","offsetTopLeft","reverseDirection","tooltipDimension","viewBoxDimension","_callSuper","TooltipBoundingBox","dismissed","dismissedAtCoordinate","lastBoundingBox","_this$props$coordinat","_this$props$coordinat2","_this$props$coordinat3","_this$props$coordinat4","wrapperNode","box","updateBBox","_this$props$coordinat5","_this$props$coordinat6","hasPayload","useTranslate3d","wrapperStyle","_getTooltipTranslate","tooltipBox","cssProperties","getTransformStyle","cssClasses","getTooltipTranslate","outerStyle","defaultUniqBy","Tooltip","filterNull","payloadUniqBy","finalPayload","getUniqPayload","includeHidden","cursorStyle","keyof","super","_intern","intern_get","intern_set","intern_delete","isHeader","CHECK_CELL_WIDTH","isVisible","checkHost","_cachedGlobal","getGlobal","useCached","throwTypeError","objCreateFn","tmpFunc","originalModule","webpackPolyfill","_color","_cubehelix","_lab","gray","hcl","hsl","lch","rgb","nogamma","gamma","exponential","hue","tooltipHost","cellIsCheck","collapseButton","isCollapsed","isAllSelected","isSelectAllHidden","isResizingColumn","cellSizer","isResizing","dropHintCircleStyle","dropHintCaretStyle","dropHintLineStyle","cellTitle","cellName","filterChevron","gripperBarVertical","checkTooltip","HEADER_HEIGHT","getCellStyles","isSizing","isAllCollapsed","iconForegroundColor","headerForegroundColor","headerBackgroundColor","resizerColor","cellSizerFadeInStyles","cellStyles","cellWrapperPadded","cellIsGroupExpander","cellIsActionable","cellIsEmpty","cellIsResizing","cellSizerStart","cellSizerEnd","marginLeft","transformOrigin","sizingOverlay","accessibleLabel","dropHintStyle","customStyles","splitButtonDividerBaseStyles","splitButtonStyles","borderTopRightRadius","borderBottomRightRadius","borderRight","borderRightWidth","borderLeftWidth","borderLeft","marginRight","marginBottom","ValidationState","Dot","setItem","itemsWrapper","isFocused","inputClassName","placeholderStyles","disabledPlaceholderStyles","alignSelf","EXITED","ENTERING","ENTERED","EXITING","appearStatus","unmountOnExit","mountOnEnter","nextCallback","updateStatus","nextStatus","cancelNextCallback","getTimeouts","mounting","nodeRef","ReactDOM","findDOMNode","scrollTop","forceReflow","performEnter","performExit","appearing","maybeNode","maybeAppearing","timeouts","enterTimeout","safeSetState","onEntered","onEntering","onTransitionEnd","onExiting","setNextCallback","doesNotHaveTimeoutOrListener","addEndListener","maybeNextCallback","childProps","UNMOUNTED","farsiLocales","englishLocales","dotDecimal","decimal","commaDecimal","bengaliLocales","arabicLocales","alphanumeric","fa","bn","eo","_locale2","_locale3","_i4","_i5","_path","s0","concatStyleSets","styleSets","mergedSet","workingSubcomponentStyles","currentSet","currentComponentStyles","subCompProp","mergedValue","mergedSubStyles","styleFunctionOrObject","Surface","svgView","CURVE_FACTORIES","curveBasisClosed","curveBasisOpen","curveBasis","curveBumpX","curveBumpY","curveLinearClosed","curveLinear","curveMonotoneX","curveMonotoneY","curveNatural","curveStep","curveStepAfter","curveStepBefore","getX","getY","getPath","lineFunction","_ref$type","_ref$points","points","baseLine","_ref$connectNulls","connectNulls","curveFactory","getCurveFactory","formatPoints","formatBaseLine","areaPoints","shapeArea","x0","y0","curve","shapeLine","Curve","realPath","SuggestionActionType","Root","DelayedRender","Announced","suggestionsItem","closeButton","suggestionsItemIsSuggested","itemButton","actionButton","buttonSelected","suggestionsTitle","suggestionsContainer","suggestionsNone","suggestionsSpinner","legacyStyles","suggestionModel","RenderSuggestion","onRemoveItem","isSelectedOverride","removeButtonAriaLabel","suggested","CommandButton","showRemoveButton","IconButton","StyledSuggestionsItem","suggestionsProps","_forceResolveButton","_searchForMoreButton","_selectedElement","tryHandleKeyDown","currentSuggestionIndex","isEventHandled","newSelectedActionType","currentSelectedAction","selectedActionType","suggestionLength","suggestions","forceResolve","_refocusOnSuggestions","searchMore","_getAlertText","isSearching","suggestionsAvailableAlertText","noResultsFoundText","_getMoreResults","onGetMoreResults","_forceResolve","createGenericItem","_shouldShowForceResolve","showForceResolve","_onClickTypedSuggestionsItem","onSuggestionClick","refocusSuggestions","_onRemoveTypedSuggestionsItem","onSuggestionRemove","scrollSelected","activeSelectedElement","forceResolveText","mostRecentlyUsedHeaderText","searchForMoreIcon","searchForMoreText","moreSuggestionsAvailable","loadingText","onRenderNoResultFound","searchingText","isMostRecentlyUsedVisible","resultsMaximumNumber","resultsFooterFull","resultsFooter","isResultsFooterVisible","suggestionsHeaderText","suggestionsClassName","suggestionsListId","forceResolveButtonSelected","searchForMoreButtonSelected","searchForMoreButton","forceResolveButton","suggestionsAvailable","noSuggestions","spinnerStyles","spinner","spinnerClassNameOrStyles","noResults","headerText","footerTitle","hasNoSuggestions","divProps","forceResolveId","searchForMoreId","Spinner","_renderSuggestions","hasSuggestedAction","hasSuggestedActionSelected","executeSelectedAction","focusAboveSuggestions","focusBelowSuggestions","focusSearchForMoreButton","scrollIntoView","onRenderSuggestion","removeSuggestionAriaLabel","suggestionsItemClassName","showRemoveButtons","suggestionsContainerAriaLabel","StyledTypedSuggestionsItem","selectedIndex","suggestion","actionButtonStyles","actionButtonSelectedStyles","overflowY","overflowX","circle","_isSuggestionModel","_ensureSuggestionModel","primaryText","currentIndex","updateSuggestions","newSuggestions","convertSuggestionsToSuggestionItems","currentSuggestion","nextSuggestion","setSelectedSuggestion","previousSuggestion","getSuggestions","getCurrentItem","getSuggestionAtIndex","hasSelectedSuggestion","removeSuggestion","createGenericSuggestion","itemToConvert","itemToAdd","deselectAllSuggestions","pickerText","inputFocused","inputDisabled","pickerInput","pickerItems","screenReaderOnly","basePickerProps","suggestionsType","focusZone","suggestionElement","SuggestionOfProperType","_styledSuggestions","dismissSuggestions","selectItemFunction","addItemOnDismiss","suggestionStore","canAddItems","suggestedDisplayValue","addItemByIndex","currentPromise","suggestionsVisible","resetFocus","onInputChange","onRemoveSuggestion","onInputFocus","selection","setAllSelected","_userTriggeredSuggestions","onInputBlur","elementContains","completeSuggestion","_completeGenericSuggestion","onBackspace","inputElement","onSuggestionSelect","onItemChange","changedItem","_updateSelectedItems","suggestionsArray","suggestionsPromiseLike","completeSelection","addItem","processedItem","onItemSelected","processedItemObject","processedItemPromiseLike","resolvedProcessedItem","removeItem","focusNextItem","itemsToRemove","_shouldFocusZoneEnterInnerZone","_onResolveSuggestions","updatedValue","onResolveSuggestions","updateSuggestionsList","onValidateInput","onEmptyInputFocus","selectedItems","defaultSelectedItems","_ariaMap","selectedSuggestionAlert","suggestionList","combobox","SuggestionsController","Selection","onSelectionChanged","onSelectionChange","setItems","selectedIndices","resolveDelay","oldProps","currentSelectedIndex","getSelectedIndices","setIndexSelected","focusInput","forceComplete","bidirectional","shouldEnterInnerZone","getSuggestionsAlert","SelectionZone","selectionMode","renderItems","Autofill","spellCheck","onInputValueChange","getActiveDescendant","renderSuggestions","itemLimit","StyledTypedSuggestions","pickerCalloutProps","onRenderSuggestionsItem","suggestionsLoading","pickerSuggestionsProps","onRenderItem","newEl","focusElement","itemValue","_getTextFromItem","emptyResolveSuggestions","onEmptyResolveSuggestions","_updateAndResolveValue","_getShowSuggestions","resolveNewValue","isValueSelected","cursorLocation","getSelectedCount","getSelection","suggestionAlertClassName","enableSelectedSuggestionAlert","selectedSuggestion","selectedSuggestionAlertText","_onSelectedItemsUpdated","getTextFromItem","single","DefaultLegendContent","inactiveColor","inactive","strokeWidth","strokeDasharray","SIZE","legendIcon","sizeType","iconSize","svgStyle","renderIcon","Legend","chartWidth","_box","offsetHeight","onBBoxUpdate","getBBox","hPos","vPos","chartHeight","getBBoxSnapshot","getDefaultPosition","otherProps","_isRTL","savedRTL","persistSetting","getRTLSafeKeyCode","onError","_timeoutIds","_immediateIds","_intervalIds","_animationFrameIds","_onErrorHandler","_noop","clearImmediate","clearInterval","setImmediate","immediateId","_logError","setInterval","intervalId","waitMS","lastExecuteTime","userCall","waitLength","noOpFunction","markExecuted","invokeFunction","executeImmediately","maxWaitDelta","maxWaitExpired","resultFunction","animationFrameId","animationFrameCallback","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","currentQueue","queue","draining","queueIndex","cleanUpNextTick","drainQueue","run","runClearTimeout","Item","nextTick","browser","argv","versions","removeAllListeners","emit","prependListener","prependOnceListener","cwd","chdir","umask","isIP","_assertString","IPv4AddressRegExp","IPv6AddressRegExp","IPv4SegmentFormat","IPv4AddressFormat","IPv6SegmentFormat","Linear","_context","areaStart","_line","areaEnd","lineStart","_point","lineEnd","closePath","lineTo","moveTo","bezierCurveTo","_x0","_x1","_y0","_y1","Basis","_k","_x2","_y2","Cardinal","tension","custom","cardinal","valueof","ascendingDefined","compareDefined","F","_rgb","_string","_date","_numberArray","isNumberArray","_array","genericArray","_object","_formatDecimal","formatDecimalParts","toLocaleString","coefficient","extractStyleParts","objects","_processArgs","argsList","translatedArgs","_isSSR","findElementRecursive","matchFunction","CheckGlobalClassNames","sharedCircleCheck","SuggestionsItemGlobalClassNames","isSuggested","symbolFactories","symbolCircle","symbolCross","symbolDiamond","symbolSquare","symbolStar","symbolTriangle","symbolWye","_ref$size","_ref$sizeType","filteredProps","symbolFactory","getSymbolFactory","shapeSymbol","tan","calculateAreaSize","registerSymbol","dataPointFormatter","svgProps","_dataPointFormatter","errorVal","lowBound","highBound","lineCoordinates","_errorVal","yMid","yMin","yMax","xMin","xMax","_scale","xMid","_xMin","_xMax","_yMin","_yMax","coordinates","getTangentCircle","isExternal","cornerRadius","cornerIsExternal","centerRadius","theta","centerAngle","lineTangencyAngle","center","circleTangency","lineTangency","getSectorPath","tempEndAngle","outerStartPoint","outerEndPoint","innerStartPoint","innerEndPoint","forceCornerRadius","sectorProps","deltaRadius","_getTangentCircle","soct","solt","sot","_getTangentCircle2","eoct","eolt","eot","outerArcAngle","_getTangentCircle3","sict","silt","sit","_getTangentCircle4","eict","eilt","eit","innerArcAngle","getSectorWithCorner","defaultAccessor","LabelList","_ref$valueAccessor","valueAccessor","restProps","idProps","parseLabelList","implicitLabelList","Cell","isTrivialHref","SafeAnchor","_ref$as","handleClick","NavContext","PREFIX_LIST","isTouch","changedTouches","Brush","leaveTimer","isTravellerMoving","handleTravellerMove","isSlideMoving","handleSlideDrag","handleDrag","onDragEnd","detachDragEndListener","handleDragEnd","leaveTimeOut","isTextActive","slideMoveStartX","pageX","attachDragEndListener","travellerDragStartHandlers","startX","handleTravellerDragStart","endX","lineY","Fragment","renderDefaultTraveller","travellerWidth","updateId","prevData","prevUpdateId","prevTravellerWidth","prevX","prevWidth","scalePoint","scaleValues","isTravellerFocused","createScale","valueRange","minIndex","getIndexInRange","tickFormatter","newIndex","getIndex","movingTravellerId","brushMoveStartX","_this$state2","prevValue","isFullGap","_this$state3","currentScaleValue","newScaleValue","_this$props6","_this$props7","chartElement","travellerX","_data$startIndex","_data$endIndex","_this$props8","traveller","travellerProps","ariaLabelBrush","handleEnterSlideOrTraveller","handleLeaveSlideOrTraveller","handleTravellerMoveKeyboard","renderTraveller","_this$props9","handleSlideDragStart","fillOpacity","_this$props10","_this$state4","getTextOfTick","_this$props11","alwaysShowText","_this$state5","isPanoramic","camelName","generatePrefixStyle","handleLeaveWrapper","onTouchMove","handleTouchMove","renderBackground","renderPanorama","renderSlide","renderTravellerLayer","renderText","ifOverflowMatches","alwaysShow","ifOverflow","ReferenceDot","isX","isY","getCoordinate","dotProps","clipPath","renderDot","isFront","ReferenceLine","fixedX","fixedY","segment","endPoints","isFixedX","isFixedY","isSegment","xAxisOrientation","yAxisOrientation","yCoord","xCoord","_coord","_points","_points2","getEndPoints","_endPoints","_endPoints$","_endPoints$2","lineProps","renderLine","ReferenceArea","hasX1","hasX2","hasY1","hasY2","xValue1","xValue2","yValue1","yValue2","rangeMin","rangeMax","getRect","renderRect","detectReferenceElementsDomain","specifiedTicks","dots","areas","idKey","valueKey","finalDomain","key1","key2","value1","value2","eventCenter","EventEmitter","SYNC_EVENT","AccessibilityManager","_ref$coordinateList","coordinateList","_ref$container","_ref$layout","_ref$offset","_ref$mouseHandlerCall","mouseHandlerCallback","activeIndex","spoofMouse","_window2","_this$container$getBo","scrollOffsetX","scrollOffsetY","pageY","Cross","_ref$x","_ref$y","_ref$top","_ref$left","_ref$width","_ref$height","getRadialCursorPoints","activeCoordinate","getCursorPoints","innerPoint","outerPoint","Cursor","tooltipEventType","activePayload","activeTooltipIndex","tooltipAxisBandSize","cursorComp","halfSize","getCursorRectangle","_getRadialCursorPoint","cursorProps","payloadIndex","ORIENT_MAP","FULL_WIDTH_AND_HEIGHT","originCoordinate","renderAsIs","getDisplayedData","graphicalItems","dataStartIndex","dataEndIndex","itemsData","getDefaultDomainByAxisType","getTooltipContent","chartData","activeLabel","tooltipAxis","displayedData","_child$props$data","allowDuplicatedCategory","getTooltipData","rangeObj","rangeData","chartX","chartY","calculateTooltipPos","orderedTooltipTicks","tooltipTicks","_angle","_radius","getActiveCoordinate","getAxisMapByAxes","axes","axisIdKey","stackOffset","_child$props$domain2","_child$props","domainStart","domainEnd","isDomainSpecifiedByUser","defaultDomain","_child$props$domain","childDomain","duplicate","errorBarsDomain","axisDomain","getAxisMap","_ref4$axisType","AxisComp","Axis","getAxisMapByItems","createDefaultState","defaultShowTooltip","brushItem","isTooltipActive","getAxisNameByLayout","numericAxisName","cateAxisName","getCartesianAxisSize","axisObj","axisName","generateCategoricalChart","_CategoricalChartWrapper","GraphicalChild","_ref6$defaultTooltipE","defaultTooltipEventType","_ref6$validateTooltip","validateTooltipEventTypes","axisComponents","legendContent","getFormatItems","globalMaxBarSize","_getAxisNameByLayout","hasGraphicalBarItem","formattedItems","childMaxBarSize","cateAxis","cateTicks","itemIsBar","_getBandSizeOfAxis","barBandSize","composedFn","getComposedData","childIndex","updateStateOfAxisMapsOffsetAndStackGroups","_getAxisNameByLayout2","prevLegendBBox","_ref5$xAxisMap","_ref5$yAxisMap","legendItem","offsetH","offsetV","brushBottom","legendBBox","ticksObj","tooltipTicksGenerator","formattedGraphicalItems","CategoricalChartWrapper","_props$id","_props$throttleDelay","cId","syncId","eventEmitterSymbol","syncMethod","applySyncEvent","_ref9","triggerSyncEvent","mouse","getMouseInfo","_nextState","tooltipPosition","throttleTriggeredAfterMouseMove","_mouse","_nextState2","handleMouseDown","handleMouseUp","validateChartX","validateChartY","_element$props$active","getTooltipEventType","axisOption","_element$props","radialLines","polarAngles","polarRadius","radiusAxisMap","angleAxisMap","radiusAxis","angleAxis","handleLegendBBoxUpdate","_tooltipItem$props$ac","tooltipItem","_this$state6","handleBrushChange","_this$state7","_element$props2","_ref10","activePoint","basePoint","isRange","_item$item$props","activeDot","renderActiveDot","filterFormatItem","_this$state8","_item$item$props2","activeBar","activeShape","hasActive","itemEvents","handleItemMouseEnter","handleItemMouseLeave","_this$getItemByXY","_ref11$graphicalItem","getItemByXY","_ref11$graphicalItem$","xyItem","renderActivePoints","CartesianGrid","renderReferenceElement","XAxis","YAxis","renderBrush","renderGraphicChild","Line","Area","Radar","RadialBar","Scatter","Pie","Funnel","renderCursor","PolarGrid","renderPolarGrid","PolarAngleAxis","renderPolarAxis","PolarRadiusAxis","Customized","renderCustomized","triggeredAfterMouseMove","throttleDelay","_this$props$margin$le","_this$props$margin$to","accessibilityManager","setDetails","displayDefaultTooltip","tooltipElem","defaultIndex","independentAxisCoord","dependentAxisCoord","scatterPlotElement","_ref12","setIndex","_this$props$margin$le2","_this$props$margin$to2","shared","eventType","boundingRect","containerOffset","_this$state9","xScale","yScale","xValue","yValue","toolTipData","scaledX","scaledY","_this$state10","tooltipEvents","handleMouseEnter","handleMouseMove","handleMouseLeave","handleTouchStart","onTouchEnd","handleTouchEnd","handleOuterEvent","handleReceiveSyncEvent","_this$state$offset","_ref13","_ref14","axisProps","_ref15","_ref16","_this$state$xAxisMap","_this$state$yAxisMap","chartXY","_this$state11","itemDisplayName","activeBarItem","_activeBarItem","_this$props$tabIndex","_this$props$role","renderClipPath","keyboardEvent","parseEventsOfWrapper","renderLegend","renderTooltip","defaultState","prevDataKey","prevHeight","prevLayout","prevStackOffset","prevMargin","_defaultState","keepFromPrevState","updatesToState","_brush$props$startInd","_brush$props","_brush$props$endIndex","_brush$props2","brush","hasDifferentStartOrEndIndex","newUpdateId","dot","getEveryNthWithCondition","tickPosition","getSize","getTicks","minTickGap","getNumberIntervalTicks","sizeKey","unitSize","getTickSize","contentSize","getAngledTickWidth","boundaries","isWidth","getTickBoundaries","_ret","initialStart","stepsize","tickCoord","isShow","getEquidistantTicks","preserveEnd","tailSize","tailGap","_loop2","getTicksStart","getTicksEnd","_excluded3","CartesianAxis","viewBoxOld","restPropsOld","htmlLayer","layerReference","getElementsByClassName","getComputedStyle","tx","ty","tickSize","tickMargin","finalTickSize","axisLine","needHeight","needWidth","tickLine","finalTicks","getTickTextAnchor","getTickVerticalAnchor","customTickProps","tickLineProps","_this2$getTickLineCoo","getTickLineCoord","lineCoord","tickProps","visibleTicksCount","renderTickItem","ticksGenerator","noTicksProps","renderAxisLine","renderTicks","defaultKey","useUncontrolled","_extends2","Utils","propsValue","handlerName","_useUncontrolledProp","wasPropRef","_useState","stateValue","isProp","wasProp","useUncontrolledProp","componentWillMount","componentWillUpdate","__reactInternalSnapshotFlag","__reactInternalSnapshot","getSnapshotBeforeUpdate","__suppressDeprecationWarning","_coverStyle","portrait","_imageElement","_frameElement","_onImageLoaded","onLoad","_computeCoverStyle","loadState","loaded","_onImageError","notLoaded","UNSAFE_componentWillReceiveProps","_checkImageLoaded","onLoadingStateChange","shouldFadeIn","shouldStartVisible","imageFit","maximizeFrame","coverStyle","isLoaded","isLandscape","landscape","isCenter","isCenterContain","centerContain","isCenterCover","centerCover","isContain","contain","isCover","cover","isNone","isNotImageFit","naturalWidth","naturalHeight","complete","ImageBase","_svgRegex","desiredRatio","clientHeight","naturalRatio","rootMaximizeFrame","imageCenter","imageContain","imageCover","imageCenterContain","imageCenterCover","imageNone","imageLandscape","imagePortrait","ImageFitStyles","supportsObjectFit","msMaxTouchPoints","fallbackObjectFitStyles","objectFit","packagesCache","_win","setVersion","packageName","packageVersion","packages","__packages__","appendFunction","extendComponent","nativeElementMap","audio","video","ol","li","textarea","table","td","colGroup","col","iframe","img","FastCheck","Check","useFastIcons","_defaultCheckboxRender","checkboxProps","_fastDefaultCheckboxRender","DetailsRowCheck","checkClassName","onRenderDetailsCheckbox","defaultCheckboxRender","onRenderCheckbox","detailsCheckboxProps","tagName","getNativeElementProps","REACT_LIFECYCLE_EXCLUSIONS","composedComponentInstance","_composedComponentInstance","_hoisted","exclusions","hoisted","hoistMethods","typeguardBarRectangleProps","xProp","yProp","heightValue","widthValue","BarRectangle","_Bar","isAnimationFinished","animationId","prevAnimationId","curData","baseProps","handleAnimationStart","handleAnimationEnd","stepData","interpolatorX","interpolatorY","interpolatorWidth","interpolatorHeight","_interpolatorHeight","renderRectanglesStatically","renderRectanglesWithAnimation","backgroundProps","needClip","errorBarItems","dataPoint","errorBarProps","needClipX","needClipY","renderRectangles","renderErrorBar","legendType","minPointSize","xAxisTicks","yAxisTicks","minPointSizeProp","stackedDomain","baseValue","cells","rects","isValueNumber","minPointSizeCallback","baseValueScale","currentValueScale","computedHeight","_baseValueScale","_currentValueScale","toPropertyKey","useCommittedRef","itemContent","removeButton","isInvalid","PeoplePickerItem","itemId","personaStyles","persona","personaCoinStyles","personaCoin","Persona","coinProps","personaPrimaryTextStyles","personaSecondaryTextStyles","personaCoinInitialsStyles","flex","initials","default_fqdn_options","allow_trailing_dot","allow_wildcard","tld","require_tld","allow_numeric_tld","ignore_max_length","allow_underscores","allow_leading_zeroes","int","intLeadingZeroes","minCheckPassed","maxCheckPassed","ltCheckPassed","gtCheckPassed","_linear","defined0","_math","_cardinal","_l01_a","_l01_2a","_l12_a","_l12_2a","_l23_a","_l23_2a","CatmullRom","_alpha","x23","y23","catmullRom","sums","_none","step0","step1","e10","e5","e2","power","Float64Array","numbers","value0","subarray","_basis","_basisClosed","cubehelixLong","_discrete","_hcl","hclLong","_hsl","hslLong","_hue","rgbBasis","rgbBasisClosed","_round","interpolateTransformCss","interpolateTransformSvg","_zoom","_piecewise","_quantize","Color","Rgb","darker","brighter","hslConvert","rgbConvert","_define","reI","reN","reP","reHex","reRgbInteger","reRgbPercent","reRgbaInteger","reRgbaPercent","reHslPercent","reHslaPercent","named","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","blanchedalmond","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","rebeccapurple","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","thistle","tomato","turquoise","violet","wheat","whitesmoke","yellowgreen","color_formatHex","formatHex","color_formatRgb","formatRgb","rgbn","rgba","hsla","rgb_formatHex","hex","rgb_formatRgb","clampa","clampi","Hsl","clamph","clampt","hsl2rgb","m1","m2","channels","displayable","formatHex8","formatHsl","basis","v0","v1","v2","v3","t2","t3","isView","loggish","transformLog","transformExp","transformLogn","transformExpn","pow10","reflect","logs","pows","log10","log2","logp","powp","formatSpecifier","symlog","symlogish","transformSymlog","log1p","transformSymexp","expm1","powish","transformPow","transformSqrt","transformSquare","_day","friday","fridays","_hour","_interval","_millisecond","_minute","monday","mondays","_month","saturday","saturdays","_second","sunday","sundays","thursday","thursdays","timeTickInterval","timeTicks","tuesday","tuesdays","wednesday","wednesdays","_year","_utcDay","utcDays","_utcWeek","utcFriday","utcFridays","_utcHour","utcHours","_utcMinute","utcMinutes","utcMonday","utcMondays","_utcMonth","utcMonths","utcSaturday","utcSaturdays","utcSunday","utcSundays","utcThursday","utcThursdays","utcTickInterval","utcTicks","utcTuesday","utcTuesdays","utcWednesday","utcWednesdays","_utcYear","utcYears","defaultLocale","utcParse","utcFormat","timeParse","dateTime","periods","shortDays","shortMonths","legendData","sectors","iconType","getWithHeight","argIndex","framesToPop","isarray","tokensToFunction","tokensToRegExp","PATH_REGEXP","defaultDelimiter","escaped","capture","modifier","asterisk","prevText","escapeGroup","restrictBacktrack","escapeString","encodeURIComponentPretty","encodeURI","encode","encodeURIComponent","attachKeys","re","route","endsWithDelimiter","regexpToRegexp","arrayToRegexp","stringToRegexp","componentName","deprecationMap","resetIds","counter","DATA_PORTAL_ATTRIBUTE","setPortalAttribute","TooltipOverflowMode","_toDate","_toFloat","_toInt","_toBoolean","_equals","_contains","_matches","_isEmail","_isURL","_isMACAddress","_isIP","_isIPRange","_isFQDN","_isDate","_isTime","_isBoolean","_isLocale","_isAbaRouting","_isAlpha","_isAlphanumeric","_isNumeric","_isPassportNumber","_isPort","_isLowercase","_isUppercase","_isIMEI","_isAscii","_isFullWidth","_isHalfWidth","_isVariableWidth","_isMultibyte","_isSemVer","_isSurrogatePair","_isInt","_isFloat","_isDecimal","_isHexadecimal","_isOctal","_isDivisibleBy","_isHexColor","_isRgbColor","_isHSL","_isISRC","_isIBAN","_isBIC","_isMD","_isHash","_isJWT","_isJSON","_isEmpty","_isLength","_isByteLength","_isUUID","_isMongoId","_isAfter","_isBefore","_isIn","_isLuhnNumber","_isCreditCard","_isIdentityCard","_isEAN","_isISIN","_isISBN","_isISSN","_isTaxID","_isMobilePhone","_isEthereumAddress","_isCurrency","_isBtcAddress","_isISO","_isISO2","_isISO3","_isRFC","_isISO31661Alpha","_isISO31661Alpha2","_isISO4","_isBase","_isBase2","_isBase3","_isDataURI","_isMagnetURI","_isMailtoURI","_isMimeType","_isLatLong","_isPostalCode","_ltrim","_rtrim","_trim","_escape","_unescape","_stripLow","_isWhitelisted","_normalizeEmail","_isSlug","_isLicensePlate","_isStrongPassword","_isVAT","validator","toFloat","toBoolean","isEmail","isURL","isMACAddress","isIPRange","isFQDN","isIBAN","isBIC","isAbaRouting","isAlpha","isAlphaLocales","isAlphanumeric","isAlphanumericLocales","isNumeric","isPassportNumber","isPort","isLowercase","isUppercase","isAscii","isFullWidth","isHalfWidth","isVariableWidth","isMultibyte","isSemVer","isSurrogatePair","isInt","isIMEI","isFloat","isFloatLocales","isHexadecimal","isOctal","isDivisibleBy","isHexColor","isRgbColor","isHSL","isISRC","isMD5","isHash","isJWT","isJSON","isLocale","isByteLength","isUUID","isMongoId","isIn","isLuhnNumber","isCreditCard","isIdentityCard","isEAN","isISIN","isISBN","isISSN","isMobilePhone","isMobilePhoneLocales","isPostalCode","isPostalCodeLocales","isEthereumAddress","isCurrency","isBtcAddress","isISO6346","isFreightContainerID","isISO6391","isISO8601","isRFC3339","isISO31661Alpha2","isISO31661Alpha3","isISO4217","isBase32","isBase58","isBase64","isDataURI","isMagnetURI","isMailtoURI","isMimeType","isLatLong","ltrim","rtrim","stripLow","whitelist","isWhitelisted","normalizeEmail","isSlug","isStrongPassword","isTaxID","isLicensePlate","isVAT","ibanLocales","LZString","keyStrBase64","keyStrUriSafe","baseReverseDic","getBaseValue","alphabet","character","compressToBase64","_compress","decompressFromBase64","_decompress","compressToUTF16","decompressFromUTF16","compressed","compressToUint8Array","uncompressed","compress","buf","TotalLen","current_value","decompressFromUint8Array","decompress","compressToEncodedURIComponent","decompressFromEncodedURIComponent","bitsPerChar","getCharFromInt","context_dictionary","context_dictionaryToCreate","context_c","context_wc","context_w","context_enlargeIn","context_dictSize","context_numBits","context_data","context_data_val","context_data_position","resetValue","getNextValue","bits","resb","maxpower","dictionary","enlargeIn","dictSize","numBits","createThunkMiddleware","withExtraArgument","reactPropsRegex","isPropValid","alignMap","StackItem","createComponent","Slots","grow","shrink","disableShrink","verticalFill","_onMount","_onUpdate","_onUnmount","_setComponentRef","isContained","nextParent","propIsEnumerable","test1","test2","test3","letter","shouldUseNative","float","default_email_options","require_display_name","allow_display_name","display_email","splitNameAddress","display_name","display_name_without_quotes","validateDisplayName","lower_domain","host_blacklist","host_whitelist","user","domain_specific_validation","username","_user_parts","gmailUserPart","allow_ip_domain","noBracketdomain","allow_utf8_local_part","quotedEmailUserUtf8","quotedEmailUser","emailUserUtf8Part","emailUserPart","user_parts","blacklisted_chars","default_date_options","formatDelimiter","delimiters","dateDelimiter","strictMode","dateAndFormat","zippedArr","dateObj","normalCompletion","didErr","_e2","_createForOfIteratorHelper","_step$value","dateWord","formatWord","fullYear","parsedYear","currentYearLastTwoDigits","fullWidth","halfWidth","hexadecimal","CountryCodes","validISO31661Alpha2CountriesCodes","defaultBase64Options","urlSafe","urlSafeBase64","notBase64","firstPaddingChar","digit","tmpNum","shouldDouble","sanitized","iso7064Check","checkvalue","luhnCheck","checksum","product","reverseMultiplyAndSum","digits","verhoeffCheck","d_table","p_table","str_copy","strIndex","area","x0z","y0z","arealine","lineX0","lineY0","lineY1","lineX1","curveRadialLinear","curveRadial","Radial","_curve","radial","lineRadial","_radial","bumpRadial","BumpRadial","bumpX","Bump","bumpY","_pointRadial","p0","sqrt3","draw","arc","tan30","tan30_2","kr","kx","ky","CardinalClosed","_x3","_x4","_x5","_y3","_y4","_y5","CardinalOpen","peaks","peak","vj","ascendingBisect","compare1","compare2","lo","nest","_identity","_len7","_key7","unique","_len8","_key8","_len5","_key5","_len6","_key6","regroup","LN2","quickselect","newLeft","newRight","matrix","transpose","intern","io","ivalue","implicit","radians","degrees","rgbGamma","rgbSpline","spline","nb","na","am","bm","bs","bi","reA","reB","precisionPrefix","formatPrefix","precisionRound","precisionFixed","_formatSpecifier","FormatSpecifier","_defaultLocale","_precisionFixed","_precisionPrefix","_precisionRound","grouping","thousands","_formatGroup","currencyPrefix","currency","currencySuffix","numerals","_formatNumerals","nan","newFormat","_formatTypes","formatType","maybeSuffix","valuePrefix","valueSuffix","valueNegative","_formatTrim","_formatPrefixAuto","prefixExponent","_exponent","timeYear","timeMonth","timeWeek","timeDay","timeHour","timeMinute","timeSecond","tickInterval","formatMillisecond","formatSecond","formatMinute","formatHour","formatDay","formatWeek","formatMonth","formatYear","_duration","utcMinute","utcHour","utcDay","utcWeekday","utcMonth","utcYear","_isoFormat","_isoParse","locale_dateTime","locale_date","locale_time","locale_periods","locale_weekdays","locale_shortWeekdays","locale_months","locale_shortMonths","periodRe","formatRe","periodLookup","formatLookup","weekdayRe","weekdayLookup","shortWeekdayRe","shortWeekdayLookup","monthRe","monthLookup","shortMonthRe","shortMonthLookup","formatDayOfMonth","formatMicroseconds","formatYearISO","formatFullYearISO","formatHour24","formatHour12","formatDayOfYear","formatMilliseconds","formatMonthNumber","formatMinutes","formatUnixTimestamp","formatUnixTimestampSeconds","formatSeconds","formatWeekdayNumberMonday","formatWeekNumberSunday","formatWeekNumberISO","formatWeekdayNumberSunday","formatWeekNumberMonday","formatFullYear","formatZone","formatLiteralPercent","utcFormats","formatUTCDayOfMonth","formatUTCMicroseconds","formatUTCYearISO","formatUTCFullYearISO","formatUTCHour24","formatUTCHour12","formatUTCDayOfYear","formatUTCMilliseconds","formatUTCMonthNumber","formatUTCMinutes","formatUTCSeconds","formatUTCWeekdayNumberMonday","formatUTCWeekNumberSunday","formatUTCWeekNumberISO","formatUTCWeekdayNumberSunday","formatUTCWeekNumberMonday","formatUTCYear","formatUTCFullYear","formatUTCZone","parses","parseSpecifier","parseDayOfMonth","parseMicroseconds","parseYear","parseFullYear","parseHour24","parseDayOfYear","parseMilliseconds","parseMonthNumber","parseMinutes","parseQuarter","parseUnixTimestamp","parseUnixTimestampSeconds","parseSeconds","parseWeekdayNumberMonday","parseWeekNumberSunday","parseWeekNumberISO","parseWeekdayNumberSunday","parseWeekNumberMonday","parseLiteralPercent","pads","newParse","Z","newDate","H","V","utcDate","localDate","timeMonday","U","X","S","numberRe","percentRe","requoteRe","requote","timeSunday","dISO","timeThursday","UTCdISO","isoSpecifier","sequential","sequentialLog","_log","sequentialPow","sequentialSqrt","sequentialSymlog","_symlog","_pow","k10","globalSettings","_getGlobalSettings","callbacks","changeDescription","addChangeListener","__id__","_getCallbacks","removeChangeListener","globalObj","compareContext","bHasOwnProperty","valueA","valueB","stylis_min","ia","aa","G","ba","la","ma","R","ea","oa","A","B","K","I","J","N","ca","O","da","Y","ha","T","unitlessKeys","animationIterationCount","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flexPositive","flexNegative","flexOrder","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","msGridRow","msGridRowSpan","msGridColumn","msGridColumnSpan","orphans","tabSize","widows","zoom","WebkitLineClamp","floodOpacity","stopOpacity","strokeDashoffset","strokeMiterlimit","strokeOpacity","sorted","outgoingEdges","edge","makeOutgoingEdges","nodesHash","makeNodesHash","visit","predecessors","nodeRep","outgoing","uniqueNodes","getIconContent","mergeImageProps","iconContent","accessibleName","finalChildren","withSlots","slotType","isSlot","createFactory","DefaultComponent","defaultProp","componentProps","userProps","userSlotOptions","defaultStyles","finalProps","allProps","_constructFinalProps","slotProps","transformedProps","_translateShorthand","UserComponent","defaultFactory","getSlots","slots","mixedProps","slot","_renderSlot","_defaultStyles","ComponentType","slotOptions","shallowCompare","filteredAssign","isAllowed","sourceObject","addElementAtIndex","arraysEqual","dest","keytips","persistedKeytips","sequenceMapping","inKeytipMode","shouldEnterKeytipMode","delayUpdatingKeytipChange","_instance","persisted","addParentOverflow","keySequences","uniqueKeytip","_getUniqueKtp","uniqueID","keytip","newKeytipProps","oldKeyTip","visible","keytipToRemove","enterKeytipMode","exitKeytipMode","getKeytips","fullSequence","parentKeytip","overflowSetSequence","menuExecute","overflowButtonSequences","keytipSequences","KeytipManager","requiredProps","conditionalPropName","warnMutuallyExclusive","exclusiveMap","messageFromRegister","linkText","UNINITIALIZED_VALUE","useStableQueryArgs","serialize","incoming","useShallowStableValue","isDOM","isReactNative","isRunningInReactNative","getUseIsomorphicLayoutEffect","noPendingQueryStateSelector","isFetching","buildHooks","moduleOptions","unstable__sideEffectsInRender","usePossiblyImmediateEffect","buildQueryHooks","useQuerySubscription","subscriptionSelectorsRef","returnedValue","stableArg","stableSubscriptionOptions","lastRenderHadSubscription","promiseRef","currentRenderHasSubscription","subscriptionRemoved","lastPromise","lastSubscriptionOptions","useLazyQuerySubscription","setArg","subscriptionOptionsRef","preferCacheValue","useQueryState","selectFromResult","lastValue","selectDefaultResult","queryStatePreSelector","identityFunctionCheck","newLastValue","queryStateResults","info","lastArg","querySubscriptionResults","buildMutationHook","setPromise","triggerMutation","mutationSelector","finalState","usePrefetch","stableDefaultOptions","hasData","currentData","reactHooksModuleName","createApi","useQuery","useLazyQuery","useMutation","reactHooksModule","combineComparators","comparatorA","comparatorB","createIsCircular","areItemsEqual","cachedA","cachedB","getStrictProperties","sameValueZeroEqual","areArraysEqual","areDatesEqual","areMapsEqual","aResult","bResult","matchedIndices","aIterable","bIterable","hasMatch","aKey","bKey","areObjectsEqual","areObjectsEqualStrict","descriptorA","descriptorB","arePrimitiveWrappersEqual","areRegExpsEqual","areSetsEqual","areTypedArraysEqual","createCustomEqual","strictDeepEqual","circularDeepEqual","circular","strictCircularDeepEqual","createInternalComparator","strictShallowEqual","circularShallowEqual","strictCircularShallowEqual","createCustomInternalComparator","createState","createEqualityComparator","createCustomConfig","areObjectsEqualStrictDefault","areArraysEqualDefault","areDatesEqualDefault","areMapsEqualDefault","areObjectsEqualDefault","arePrimitiveWrappersEqualDefault","areRegExpsEqualDefault","areSetsEqualDefault","createEqualityComparatorConfig","createIsEqual","_indexOrKeyA","_indexOrKeyB","_parentA","_parentB","Events","EE","evt","_eventsCount","clearEvent","eventNames","ee","a1","a2","a3","a4","a5","prefixed","axisOptions","_Pie","prevIsAnimationActive","sectorToFocus","curSectors","prevSectors","alignmentBaseline","labelLine","pieProps","customLabelProps","customLabelLineProps","offsetRadius","labels","getTextAnchor","realDataKey","renderLabelLineItem","renderLabelItem","blendStroke","inactiveShapeProp","inactiveShape","isActiveIndex","hasActiveIndex","sectorOptions","sectorRefs","curAngle","paddingAngle","angleIp","interpolatorAngle","_latest","renderSectorsStatically","pieRef","onkeydown","_next","renderSectorsWithAnimation","attachKeyboardHandlers","_this5","rootTabIndex","renderSectors","renderLabels","minAngle","nameKey","presentationProps","maxPieRadius","pieData","getRealPieData","parseCoordinateOfPie","parseDeltaAngle","absDeltaAngle","notZeroItemCount","realTotalAngle","tempStartAngle","middleRadius","NavbarBrand","bsPrefix","deferred","semaphore","task","suspend","release","asap","immediately","patterns","_predicate","wildcard","matcherCreator","string$1","array$1","symbol$1","END","isEnd","closed","takers","taker","stdChannel","chan","currentTakers","nextTakers","ensureCanMutateNextTakers","multicastChannel","resolvePromise","cancelPromise","_effectRunnerMap","nextSagaId","cancelSingleTask","taskToCancel","isRunning","effectRunnerMap","_ref3$channel","maybe","takeCb","_ref11","digestEffect","effectId","childCbs","proc","cpsCb","detached","taskIterator","resolved","createTaskIterator","getIteratorMetaInfo","addTask","isAborted","joinSingleTask","taskToJoin","joiner","joiners","CANCEL$1","CANCELLED$1","isCancelled","_ref17","formatLocation","fileName","lineNumber","sagaLocationAsString","sagaMeta","cancelledTasksAsString","cancelledTasks","crashedEffect","firstSaga","otherSagas","crashedEffectLocation","effectLocationAsString","newTask","mainTask","parentContext","parentEffectId","cont","_task","taskResult","taskError","deferredEnd","cancelledDueToErrorTasks","onAbort","tasks","cancelAll","getTasks","forkQueue","frame","setContext","toPromise","iterator$1","finalRunEffect","finalizeRunEffect","currCb","effectRunner","executingContext","effectSettled","sagaMonitor","effectRejected","effectResolved","setCrashedEffect","effectTriggered","effectCancelled","runSaga","saga","_ref$channel","_ref$context","effectMiddlewares","_ref$onError","rootSagaStarted","actionDispatched","runEffect","sagaMiddlewareFactory","boundRunSaga","sagaMiddleware","createSagaMiddleware__default","DetailsRowFields","columnStartIndex","rowClassNames","onRenderItemColumn","getCellValueKey","cellsByColumn","rowHeaderId","cellValueKeysRef","cellValueKeys","columnIndex","calculatedWidth","isPadded","getValueKey","cellContentsRender","getCellText","previousValueKey","cellValueKey","showAnimation","NO_COLUMNS","_root","_cellMeasurer","_focusZone","_onSelectionChanged","selectionState","getSelectionState","_updateDroppingState","isDropping","dragDropEvents","onDragEnter","_droppingClassNames","onDragLeave","columnMeasureInfo","dragDropHelper","onDidMount","_dragDropSubscription","_getRowDragDropOptions","_onDidMountCalled","previousProps","newWidth","onMeasureDone","onWillUnmount","useReducedRowRenderer","newSelectionState","flatIndexOffset","onRenderCheck","rowWidth","checkboxVisibility","getRowAriaLabel","getRowAriaDescription","getRowAriaDescribedBy","checkButtonAriaLabel","rowFieldsAs","groupNestingDepth","isSelectionModal","isDraggable","canDrag","ariaRowDescription","canSelectItem","showCheckbox","ariaSelected","ariaPositionInSet","ariaSetSize","_rowClassNames","rowFields","RowFields","_ariaRowDescriptionId","draggable","horizontal","allowFocusRoot","always","collapseAllVisibility","measureCell","forceIntoFirstElement","_onRenderCheck","eventMap","eventsToRegister","selectionIndex","canDrop","onDragStart","updateDropState","onDrop","onDragOver","isIndexSelected","isModal","DetailsRow","primary","baseButtonStyles","defaultButtonStyles","primaryStyles","standardStyles","DefaultButton","customizable","ActionButton","AbstractNavItem","onSelect","navKey","parentOnSelect","navContext","contextControllerId","getControllerId","contextControlledId","getControlledId","activeKey","handleOnclick","NavLink","mergeCss","styleArgs","isIE11","getFirstFocusable","includeElementsInFocusZones","getNextElement","getLastFocusable","getPreviousElement","getFirstTabbable","checkNode","getLastTabbable","focusFirstChild","focusAsync","suppressParentTraversal","traverseChildren","tabbable","isCurrentElementVisible","isElementVisible","isElementFocusZone","isElementFocusSubZone","childMatch","lastElementChild","isElementTabbable","childMatchSiblingMatch","previousElementSibling","childMatchParent","parentElement","childMatchParentMatch","siblingMatch","suppressChildTraversal","firstElementChild","visibilityAttribute","offsetParent","checkTabIndex","tabIndexAttributeValue","isFocusableAttribute","isTabIndexSet","doesElementContainFocus","currentActiveElement","shouldWrapFocus","noWrapDataAttribute","attribute","elementMatch","testElement","elementContainsAttribute","targetToFocusOnNextRepaint","focusableElement","getFocusableByIndexPath","getElementIndexPath","fromElement","toElement","enqueueForceUpdate","enqueueReplaceState","enqueueSetState","isPureReactComponent","__self","__source","_owner","keyPrefix","ReactCurrentDispatcher","ReactCurrentBatchConfig","suspense","ReactCurrentOwner","IsSomeRendererActing","Profiler","StrictMode","Suspense","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","_calculateChangedBits","_currentValue","_currentValue2","_threadCount","createRef","lazy","_ctor","_status","useImperativeHandle","pa","qa","ra","sa","extractEvents","eventTypes","ta","phasedRegistrationNames","registrationName","va","wa","xa","ya","za","Aa","Ba","Ca","stateNode","Da","Ea","Fa","Ga","Ha","Ia","Ja","Ka","La","Ma","Na","Oa","Pa","Qa","acceptsBooleans","attributeNamespace","mustUseProperty","propertyName","sanitizeURL","Ua","Va","Wa","Xa","Sa","Ta","Ra","removeAttribute","setAttributeNS","Ya","Za","$a","ab","bb","db","eb","fb","gb","hb","ib","jb","kb","lb","mb","pb","qb","_debugOwner","_debugSource","rb","sb","nodeName","xb","_valueTracker","stopTracking","tb","yb","zb","_wrapperState","initialChecked","Ab","controlled","Bb","Cb","Db","Eb","Gb","Fb","Hb","defaultSelected","Ib","Jb","Kb","Lb","Mb","Nb","Ob","Pb","Qb","MSApp","execUnsafeLocalFunction","namespaceURI","innerHTML","Rb","nodeValue","Sb","Tb","animationend","animationiteration","animationstart","transitionend","Ub","Vb","Wb","animation","Xb","Yb","Zb","$b","bc","cc","dc","alternate","effectTag","ec","memoizedState","dehydrated","fc","hc","sibling","gc","ic","jc","kc","lc","_dispatchListeners","_dispatchInstances","isPropagationStopped","isPersistent","mc","nc","srcElement","correspondingUseElement","oc","qc","topLevelType","targetInst","ancestors","rc","eventSystemFlags","sc","containerInfo","tc","uc","vc","wc","xc","yc","zc","Ac","Bc","Cc","Dc","Ec","Fc","Gc","Hc","Ic","Kc","blockedOn","Lc","pointerId","Mc","Nc","Pc","unstable_runWithPriority","hydrate","Qc","Rc","Sc","Tc","Uc","unstable_scheduleCallback","unstable_NormalPriority","Vc","Wc","Yc","Zc","$c","ad","bubbled","captured","eventPriority","bd","cd","unstable_UserBlockingPriority","ed","fd","gd","hd","Oc","jd","gridArea","lineClamp","kd","ld","md","setProperty","nd","menuitem","br","embed","keygen","wbr","od","pd","ud","vd","HTMLIFrameElement","contentWindow","contentEditable","Dd","Ed","Fd","autoFocus","Gd","Hd","Id","Jd","Kd","previousSibling","Ld","Md","Nd","Od","Pd","Qd","Rd","Sd","Td","dispatchConfig","Ud","_targetInst","Vd","Wd","Xd","Yd","Zd","$d","ae","be","ce","Interface","isDefaultPrevented","returnValue","eventPool","fe","destructor","de","getPooled","eventPhase","bubbles","cancelable","timeStamp","isTrusted","ge","ie","je","ke","documentMode","le","me","ne","oe","beforeInput","compositionEnd","compositionStart","compositionUpdate","pe","qe","se","ve","te","ue","we","datetime","password","tel","ye","change","ze","Ae","Be","Ce","De","Ee","Fe","Ge","He","Ie","Je","Ke","Le","Me","_isInputEventSupported","Ne","Oe","Alt","Control","Meta","Shift","Pe","getModifierState","Qe","Re","Se","Te","Ue","Ve","screenX","screenY","clientX","clientY","buttons","movementX","movementY","We","pressure","tangentialPressure","tiltX","tiltY","twist","isPrimary","Xe","mouseEnter","mouseLeave","pointerEnter","pointerLeave","Ye","parentWindow","$e","af","bf","cf","df","ef","ff","gf","hf","jf","selectionStart","selectionEnd","anchorNode","anchorOffset","focusNode","focusOffset","kf","lf","elapsedTime","pseudoElement","mf","clipboardData","nf","pf","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","qf","8","9","12","13","16","17","18","19","20","27","32","33","34","35","36","37","38","39","40","45","46","112","113","114","115","116","117","118","119","120","121","122","123","144","145","224","rf","sf","dataTransfer","tf","touches","targetTouches","uf","vf","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","wf","SimpleEventPlugin","EnterLeaveEventPlugin","ChangeEventPlugin","SelectEventPlugin","BeforeInputEventPlugin","yf","zf","Af","Bf","Cf","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Df","Ef","Ff","Gf","__reactInternalMemoizedMergedChildContext","Hf","If","Jf","Kf","unstable_cancelCallback","Lf","unstable_requestPaint","Mf","unstable_now","Nf","unstable_getCurrentPriorityLevel","Of","unstable_ImmediatePriority","Pf","Qf","Rf","unstable_LowPriority","Sf","unstable_IdlePriority","Tf","Uf","unstable_shouldYield","Vf","Wf","Xf","Yf","Zf","$f","ag","cg","dg","eg","fg","hg","ig","jg","kg","lg","mg","ng","og","pg","childExpirationTime","qg","firstContext","expirationTime","rg","sg","responders","tg","ug","updateQueue","baseState","baseQueue","vg","wg","suspenseConfig","xg","yg","zg","Ag","Bg","Cg","Dg","Eg","Fg","Jg","_reactInternalFiber","Gg","Hg","Ig","Kg","Lg","Mg","Ng","Og","Pg","_stringRef","Qg","Rg","lastEffect","nextEffect","firstEffect","Sg","Tg","elementType","Ug","Vg","Wg","Xg","Yg","Zg","$g","ah","bh","dh","eh","fh","gh","memoizedProps","revealOrder","ih","responder","jh","kh","lh","mh","nh","oh","ph","qh","rh","sh","uh","vh","wh","lastRenderedReducer","eagerReducer","eagerState","lastRenderedState","xh","yh","zh","Ah","destroy","Bh","Ch","Dh","Eh","Fh","Gh","Hh","Ih","Jh","Kh","Lh","Mh","Nh","readContext","useResponder","useDeferredValue","useTransition","Oh","Ph","Qh","Rh","Sh","Th","pendingProps","Uh","Vh","Wh","Xh","Yh","Zh","$h","ai","ci","di","ei","fi","gi","pendingContext","ni","qi","retryTime","ji","unstable_avoidThisFallback","ki","isBackwards","rendering","renderingStartTime","tailExpiration","tailMode","mi","ri","si","wasMultiple","onclick","createElementNS","ti","ui","wi","yi","zi","Ai","Bi","WeakSet","Ci","Fi","Ei","Gi","__reactInternalSnapshotBeforeUpdate","Hi","Ii","Ji","Ki","Li","Di","Mi","Ni","Oi","Pi","Qi","_reactRootContainer","Ri","Si","Ti","Ui","Vi","Wi","Xi","Yi","Zi","$i","componentDidCatch","aj","componentStack","Rj","bj","cj","dj","kj","lj","mj","nj","oj","qj","rj","sj","tj","uj","wj","timeoutMs","xj","yj","zj","lastExpiredTime","Aj","firstPendingTime","lastPingedTime","nextKnownPendingLevel","callbackExpirationTime","callbackPriority","callbackNode","Bj","Cj","Dj","Ej","Fj","Gj","Hj","finishedWork","finishedExpirationTime","lastSuspendedTime","Ij","timeoutHandle","Jj","busyMinDurationMs","busyDelayMs","Kj","Mj","Nj","pingCache","Oj","ub","Pj","Xc","Qj","Sj","firstSuspendedTime","rangeCount","wb","activeElementDetached","focusedElem","selectionRange","Tj","wd","compareDocumentPosition","setStart","removeAllRanges","addRange","setEnd","scrollLeft","vb","Uj","Vj","Wj","ob","Xj","unstable_observedBits","Zj","pendingChildren","ak","bk","ck","dk","ek","fk","Jc","_internalRoot","gk","ik","hk","jk","unmount","Lj","lk","findFiberByHostInstance","supportsFiber","onCommitFiberRoot","onCommitFiberUnmount","Yj","overrideHookState","overrideProps","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","bundleType","rendererPackageName","createPortal","flushSync","unmountComponentAtNode","unstable_batchedUpdates","unstable_createPortal","unstable_renderSubtreeIntoContainer","MessageChannel","unstable_forceFrameRate","port2","port1","onmessage","postMessage","sortIndex","startTime","priorityLevel","unstable_Profiling","unstable_continueExecution","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_wrapCallback","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Portal","isAsyncMode","isConcurrentMode","isContextProvider","isForwardRef","isPortal","isProfiler","isStrictMode","isSuspense","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","propFullName","secret","getShim","ReactPropTypes","bigint","instanceOf","objectOf","checkPropTypes","isControlled","elem","defaulContainsOptions","ignoreCase","_toString","minOccurrences","modifiers","default_url_options","validate_length","allow_fragments","allow_query_components","protocol","auth","hostname","port","port_str","ipv6","require_valid_protocol","protocols","require_protocol","allow_protocol_relative_urls","require_host","disallow_auth","_auth$split","_auth$split2","ipv6_match","wrapped_ipv6","require_port","eui","no_colons","no_separators","macAddress48NoSeparators","macAddress64NoSeparators","macAddress48","macAddress48WithDots","macAddress64","macAddress64WithDots","subnetMaybe","isValidIP","expectedSubnet","default_time_options","hourFormat","hour24","withSeconds","hour12","loose","looseBooleans","strictBooleans","languageTagRegex","extension","grandfathered","langtag","isRoutingReg","checkSumVal","_str","ignore","no_symbols","numericNoSymbols","countryCode","normalizedStr","passportRegexByCountryCode","AM","AR","AT","AU","AZ","BE","BG","BR","BY","CA","CH","CN","CY","CZ","DE","DK","DZ","ES","FI","FR","GB","GR","HR","HU","IE","IN","ID","IR","IS","IT","JM","JP","KR","KZ","LI","LU","LV","LY","MT","MZ","MY","MX","NL","NZ","PH","PK","PL","PT","RO","RU","SE","SL","SK","TH","TR","UA","US","ZA","imeiRegex","imeiRegexWithoutHypens","allow_hyphens","imeiRegexWithHypens","tp","ascii","multibyte","semanticVersioningRegex","regexpAsStringLiteral","surrogatePair","default_decimal_options","_includes","decimal_digits","force_decimal","decimalRegExp","arrVal","octal","hexcolor","includePercentValues","rgbColor","rgbaColor","rgbColorPercent","rgbaColorPercent","strippedStr","hslComma","hslSpace","isrc","hasValidIbanFormat","hasValidIbanChecksum","ibanRegexThroughCountryCode","AD","AE","AL","BA","BH","CR","DO","EG","FO","GE","GI","GL","GT","IL","IQ","JO","KW","LB","LC","MA","MC","MD","ME","MK","MR","MU","NO","PS","QA","RS","SA","SC","SI","SM","SV","TL","TN","VA","VG","XK","isoCountryCode","isoCountryCodeInIbanRegexCodeObject","isBICReg","md5","algorithm","lengths","md4","sha1","sha256","sha384","sha512","ripemd128","ripemd160","tiger128","tiger160","tiger192","crc32","crc32b","dotSplit","currElem","default_json_options","primitives","allow_primitives","default_is_empty_options","ignore_whitespace","presentationSequences","surrogatePairs","1","2","3","4","5","7","comparisonDate","card","provider","cards","allCards","cardProvider","amex","dinersclub","discover","jcb","mastercard","unionpay","visa","tmpCardsArray","validators","weightOfDigits","6","10","11","lastDigit","charsValue","lastNumber","k1","k2","LK","incNum","idCardNo","provincesAndCities","powers","parityBit","checkAddressCode","addressCode","checkBirthDayCode","birDayCode","yyyy","xdata","checkParityBit","id17","getParityBit","check15IdCardNo","check18IdCardNo","regexIsDigit","ALPHABET_CODES","actualCheckDigit","validEanRegex","ean","getPositionWeightThroughLengthAndIndex","partialSum","calculateCheckDigit","isin","double","trunc","_digit","isbn","sanitizedIsbn","possibleIsbn10","possibleIsbn13","factor","testIssn","issn","require_hyphen","case_sensitive","strcopy","taxIdFormat","sanitizeRegexes","taxIdCheck","algorithms","enUsCampusPrefix","andover","atlanta","austin","brookhaven","cincinnati","fresno","internet","kansas","memphis","ogden","philadelphia","sba","itItNameCheck","vowelflag","xflag","tin","century_year","multip_lookup","full_year","checkdigit","occurences","trip_locations","recurrent","digitsArray","even","enUsGetPrefixes","accum","verif","lead_replace","checkdigits","number_replace","_number_locations","char_to_int","odd_convert","0","_i6","_char_to_int","first_part","lookup","_checksum","_i7","_i8","verificators","_i9","_i10","multipliers","tin_copy","current_year","current_century","allsymbols","phones","eth","digits_after_decimal","require_symbol","whole_dollar_amount_with_sep","thousands_separator","whole_dollar_amount","decimal_amount","decimal_separator","require_decimal","allow_decimal","allow_negatives","parens_for_negatives","negative_sign_after_digits","negative_sign_before_digits","allow_negative_sign_placeholder","allow_space_after_symbol","allow_space_after_digits","symbol_after_digits","currencyRegex","default_currency_options","bech32","base58","isISO6346Str","isDigit","letterCode","checkSumDigit","isISO6391Set","strictSeparator","iso8601StrictSeparator","iso8601","isValidDate","ordinalMatch","oYear","oDay","monthString","dayString","rfc3339","timeNumOffset","timeOffset","partialTime","fullDate","fullTime","validISO31661Alpha3CountriesCodes","CurrencyCodes","validISO4217CurrencyCodes","defaultBase32Options","crockford","crockfordBase32","base32","base58Reg","schemeAndMediaType","mediaType","validMediaType","validAttribute","validData","magnetURIComponent","_url$replace$split2","_url$replace$split2$","queryString","allowedParams","bcc","isParseFailed","queryParams","_q$split2","parseMailtoQueryString","mimeTypeSimple","mimeTypeText","mimeTypeMultipart","defaultLatLongOptions","checkDMS","latDMS","longDMS","lat","long","threeDigit","fourDigit","fiveDigit","sixDigit","HT","KE","MG","NP","PR","SG","TW","ZM","keep_new_lines","default_normalize_email_options","raw_parts","gmail_remove_subaddress","gmail_remove_dots","dotsReplacer","all_lowercase","gmail_lowercase","gmail_convert_googlemaildotcom","icloud_domains","icloud_remove_subaddress","icloud_lowercase","outlookdotcom_domains","outlookdotcom_remove_subaddress","outlookdotcom_lowercase","yahoo_domains","yahoo_remove_subaddress","components","yahoo_lowercase","yandex_domains","yandex_lowercase","charsetRegex","analysis","analyzePassword","returnScore","scorePassword","lowercaseCount","minLowercase","uppercaseCount","minUppercase","numberCount","minNumbers","symbolCount","minSymbols","upperCaseRegex","lowerCaseRegex","numberRegex","symbolRegex","pointsPerUnique","pointsPerRepeat","pointsForContainingLower","pointsForContainingUpper","pointsForContainingNumber","pointsForContainingSymbol","charMap","countChars","uniqueChars","scoringOptions","vatMatchers","EL","weights","ABN","NG","hasValidCheckNumber","UZ","BO","CL","CO","EC","HN","NI","PA","PY","PE","UY","VE","_arc","_area","_areaRadial","_basisOpen","_bump","_bundle","_cardinalClosed","_cardinalOpen","_catmullRom","_catmullRomClosed","_catmullRomOpen","_linearClosed","_monotone","monotoneX","monotoneY","_natural","stepAfter","stepBefore","_lineRadial","_link","linkHorizontal","linkRadial","linkVertical","_pie","_stack","_diverging","_expand","_silhouette","_wiggle","_appearance","_insideOut","_none2","_symbol","_asterisk","_circle","_diamond","_diamond2","_plus","_square","_square2","_star","_triangle","_triangle2","_wye","symbolsFill","symbolsStroke","arcInnerRadius","arcOuterRadius","padRadius","arcStartAngle","arcEndAngle","padAngle","arcPadAngle","a0","cw","a01","a11","a00","a10","da0","da1","ap","rp","rc0","rc1","x01","y01","x10","y10","x11","y11","x00","y00","intersect","ax","ay","bx","by","cornerTangents","centroid","x3","y3","x32","y32","ox","oy","d2","cx0","cy0","cx1","cy1","dx0","dy0","dx1","dy1","tauEpsilon","Path","quadraticCurveTo","arcTo","x21","y21","l01_2","x20","y20","l21_2","l20_2","l21","l01","t01","t21","ccw","sortValues","pie","arcs","lineStartAngle","lineEndAngle","lineInnerRadius","lineOuterRadius","linkSource","linkTarget","BasisClosed","BasisOpen","Bundle","beta","_beta","_y","bundle","CatmullRomClosed","CatmullRomOpen","LinearClosed","slope3","h0","h1","slope2","MonotoneX","MonotoneY","ReflectContext","_t0","Natural","controlPoints","Step","stackValue","oz","sz","stackSeries","yp","sij0","sij1","s3","skj0","skj1","tops","bottoms","_band","divergingLog","divergingPow","divergingSqrt","divergingSymlog","_sequential","_sequentialQuantile","_threshold","_time","_utcTime","band","pointish","paddingInner","ordinalRange","paddingOuter","arrayify","adder","_partials","av","bv","histogram","xz","tz","tn","bin","bins","cbrt","counts","modeValue","modeCount","pairof","compareIndex","Hcl","Lab","lab","hclConvert","labConvert","hcl2lab","rgb2lrgb","xyz2lab","lab2xyz","lrgb2rgb","Cubehelix","cubehelix","ED","EB","BC_DA","cubehelixConvert","bl","cosh","sinh","_parse","interpolateTransform","pxComma","pxParen","degParen","translate","rotate","skewX","scaleX","scaleY","parseCss","parseSvg","DOMMatrix","WebKitCSSMatrix","isIdentity","_decompose","svgNode","baseVal","consolidate","zoomRho","rho","rho2","rho4","ux0","uy0","w0","ux1","uy1","w1","b0","b1","coshr0","SQRT2","_1","_2","cubehelixGamma","samples","_formatRounded","%","squared","unsquare","square","quantile","invertExtent","ascending","quantiles","quantize","ticker","tickIntervals","bisector","utcWeek","utcSecond","sequentialQuantile","diverging","k21","r2","allPropTypes","_createChainableTypeChecker2","_createChainableTypeChecker","checkType","componentNameSafe","propFullNameSafe","chainedCheckType","mergeStyleSets","mergeCssSets","classNameSet","concatenatedStyleSet","registrations","styleSetArea","_scrollbarWidth","_bodyScrollDisabledCount","DisabledScrollClassName","allowScrollOnElement","_previousClientY","_element","passive","scrollableParent","findScrollableParent","scrollHeight","allowOverscrollOnElement","_disableIosBodyScroll","disableBodyScroll","enableBodyScroll","getScrollbarWidth","scrollDiv","startingElement","computedStyles","getPropertyValue","concatStyles","_styleCache","_onSettingChanged","mergedStyles","merged","_makeSafe","_makeAllSafe","BaseComponent","_updateComponentRef","__disposables","_disposables","disposable","__className","__async","__events","_resolveRef","refName","__resolves","currentProps","_warnDeprecations","_warnMutuallyExclusive","mutuallyExclusiveMap","_warnConditionallyRequiredProps","_skipComponentRefResolution","classMethod","prototypeMethod","nullRender","DirectionalKeyCodes","mountCounters","setMountCounters","currValue","FocusRects","rootRef","disableFocusRects","concatStyleSetsWithProps","allStyles","_memoizedClassNames","styleCalcCount","getClassNamesCount","currentMemoizedClassNames","useStaticStyles","__noStyleOverride__","disableCaching","_traverseMap","enableClassNameCacheFullWarning","_traverseEdge","_normalizeValue","inputs","__cachedInputs__","isRendered","_timeoutId","factoryOptions","ResultComponent","stateReducer","_resolveTokens","allTokens","currentTokens","_resolveStyles","viewProps","statics","createResolver","newRefs","memoizer","innerMemoizer","innerProps","outerProps","CollapseAllVisibility","useConst","componentAsMemoizer","Outer","Inner","mergeAriaAttributeValues","mergedAttribute","ariaAttributes","ignoreNextFocus","_handleNextFocus","_onSelectionChange","_onMouseDownCapture","_hasAttribute","_onFocus","isToggleModifierPressed","_isCtrlPressed","_isMetaPressed","_getSelectionMode","_shouldHandleFocus","isToggle","itemRoot","_findItemRoot","_getItemIndex","_getItemSpan","enterModalOnTouch","_isTouch","setModal","_setIsTouch","isSelectedOnFocus","_onItemSurfaceClick","_updateModifiers","toggleWithoutModifierPressed","_isSelectionDisabled","_shouldAutoSelect","_isShiftPressed","_onInvokeMouseDown","disableAutoSelectOnInputElements","_onTouchStartCapture","enableTouchInvocationTarget","isSelectionDisabled","_onToggleAllClick","span","_onToggleClick","_onInvokeClick","_onContextMenu","onItemContextMenu","getItems","_onDoubleClick","onItemInvoked","_isInputElement","_onKeyDownCapture","selectionClearedOnEscapePress","isSelectAllKey","isClearSelectionKey","_findScrollParentAndTryClearOnEmptyClick","onKeyDownCapture","onDoubleClick","onContextMenu","onMouseDownCapture","toggleAllSelected","setChangeEvents","isRangeSelected","toggleRangeSelected","toggleIndexSelected","_isTabPressed","selectToRange","selectToIndex","_clearAndSelectIndex","scrollParent","_tryClearOnEmptyClick","Node","selectionPreservedOnEmptyClick","_isNonHandledClick","selectionClearedOnSurfaceClick","setRangeSelected","indexValue","spanValue","_shouldHandleFocusTimeoutId","_isTouchTimeoutId","onItemsChanged","getKey","_getKey","defaultGetKey","_changeEventSuppressionCount","_exemptedCount","_anchoredIndex","_unselectableCount","_onItemsChanged","_canSelectItem","_keyToIndexMap","_isModal","isEnabled","suppressChange","_hasChanged","_change","shouldClear","newKeyToIndexMap","newUnselectableIndices","hasSelectionChanged","haveItemsChanged","_setAllSelected","newExemptedIndicies","newExemptedCount","indexProperty","_exemptedIndices","exemptKey","_isAllSelected","_unselectableIndices","_selectedItems","_updateCount","_selectedIndices","getItemIndex","selectableCount","isKeySelected","setKeySelected","shouldAnchor","isExempt","newAnchorIndex","selectToKey","clearSelection","anchorIndex","toggleKeySelected","preserveModalState","SelectableOptionMenuItemType","isMacResult","isMac","isIOS","_containsFocus","_onBlur","needsVerticalScrollBar","_originalFocusedElement","_updateScrollBarAsync","shouldRestoreFocus","_getScrollBar","rootHeight","firstChildHeight","defaultFocusRestorer","getAllSelectedOptions","PrimaryButton","UNWANTED_ENCLOSURES_REGEX","UNWANTED_CHARS_REGEX","PHONENUMBER_REGEX","MULTIPLE_WHITESPACES_REGEX","UNSUPPORTED_TEXT_REGEX","getInitials","isRtl","allowPhoneInitials","cleanupDisplayName","splits","getInitialsLatin","_inputElement","_autoFillEnabled","_isComposing","_onCompositionStart","_onCompositionUpdate","_updateValue","_getCurrentInputValue","_onCompositionEnd","_tryEnableAutofill","isComposing","displayValue","enableAutofillOnKeyPress","_onInputChanged","nativeEventComposing","_onChanged","composing","_getDisplayValue","_notifyInputChange","defaultVisibleValue","selectionDirection","updateValueInWillReceiveProps","updatedInputValue","newDisplayValue","shouldSelectFullInputValueInComponentDidUpdate","differenceIndex","preventValueSelection","_doesTextStartWith","shouldSelectFullRange","setSelectionRange","autoCapitalize","autoComplete","onCompositionStart","onCompositionUpdate","onCompositionEnd","onInput","isComposed","startWith","__assignFn","extendStaticsFn","__extendsFn","__spreadArrayFn","BarChart","useId","providedId","variant","_isTrident","_navUserAgentCheck","_enableMocks","_useXDomainRequest","_beaconsSupported","_hasProperty","listenerFuncs","_aiNamespace","_listenerProxyFunc","_sanitizeDiagnosticText","_logToConsole","_getLogger","logger","_canUseLocalStorage","_canUseSessionStorage","_storagePrefix","_getLocalStorageObject","_getVerifiedStorageObject","storageType","_getSessionStorageObject","DataPoint","_stringify","convertToString","_formatMessage","theEvent","errorType","_isStackDetails","_convertStackObj","errorStack","_getStackFromErrorObj","errorObj","_getErrorType","stackDetails","_supportsCookies","_allowUaSameSite","_parsedCookieValue","_doc","_cookieCache","_globalCookieConfig","_isMgrEnabled","cookieMgr","_isIgnoredCookie","cookieMgrCfg","rootConfig","_extractParts","theValue","_formatDate","theDate","_formatCookieValue","_getCookieValue","_setCookieValue","cookieValue","_mwcSeeded","_mwcW","_mwcZ","_mwcSeed","seedValue","_autoSeedMwc","_objDefineProperty","instanceName","newId","_dataUid","_canAcceptData","_getCache","strPageHideNamespace","createUniqueNamespace","rRemoveEmptyNs","rRemoveTrailingEmptyNs","_guid","elmNodeData","createElmNodeData","eventNamespace","_normalizeNamespace","_getEvtNamespace","evtNamespace","_getRegisteredEvents","evtName","addDefault","_doDetach","handlerRef","_doUnregister","unRegFn","_addEventListeners","excludeEvents","_canUseCookies","_cookieMgrs","INVALID_TRACE_ID","invalidValue","_formatValue","defValue","_formatFlags","_htmlAnchorIdx","_htmlAnchorElement","_internalEndpoints","_defaultPerfManager","pluginStateData","_chainId","_createInternalContext","telemetryChain","core","startAt","cbNames","_arrLoop","_doCallbacks","callDetails","cbArgs","hookCtx","_getOwner","checkPrototype","checkParentProto","_createInstrumentHook","aiHook","_isWebWorker","botAgentNames","_isPerformanceTimingSupported","_isPerformanceTimingDataReady","_getPerformanceTiming","_getPerformanceNavigationTiming","_shouldCollectDuration","_dispatchEvent","evnt","_configMilliseconds","_getDefaultConfig","_updateStorageUsage","extConfig","_aiNameFunc","baseName","_aiApplication","_aiDevice","_aiLocation","_aiOperation","_aiSession","_aiUser","_aiCloud","_aiInternal","Data","_setValueIf","_extractPropsAndMeasurements","measurements","_convertPropsUndefinedToCustomDefinedValue","customUndefinedValue","_createEnvelope","envelopeType","telemetryItem","EnvelopeCreatorInit","_disableEvents","_getDefaultAppInsightsChannelConfig","EnvelopeTypeCreator","_addChannelQueue","channelQueue","defaultInitConfig","_createPerfManager","notificationMgr","_isPluginPresent","thePlugin","channelPriority","allExtensions","_runListeners","isAsync","_calcPerfDuration","resourceEntry","_setPerfDuration","_setPerfValue","ajaxData","dependency","ERROR_HEADER","ERROR_PREFIX","ERROR_POSTFIX","ERROR_NOT_SENT","CORRELATION_HEADER_ERROR","CUSTOM_REQUEST_CONTEXT_ERROR","_markCount","_getAjaxData","xhr","ajaxDataId","_isHeaderSet","_getFailedAjaxDiagnosticsMessage","_throwInternalCritical","ajaxMonitorInstance","msgId","isUserAct","_throwInternalWarning","_createErrorCallbackFunc","internalMessage","_indexOf","_processDependencyContainer","_internalExcludeEndpoints","_getEmptyConfig","Application","Device","Location","Session","_validateUserInput","_removeEmpty","_internalSdkSrc","_ignoreUpdateSnippetProperties","__awaiter","_arguments","__generator","sent","trys","ops","verb","guidHolder","guidResponse","ClientAuthError","ClientAuthErrorMessage","ClientConfigurationError","ClientConfigurationErrorMessage","requestScopes","convertedCachedScopes","authEndpoint","jsonResponse","policy","claims","BrowserStorage","idToken","AuthCache","ifr","Logger","logMessage","LogLevel","ServerError","ServerErrorMessage","InteractionRequiredAuthError","TelemetryEvent","prependEventNamePrefix","API_CODE","API_EVENT_IDENTIFIER","apiCode","verbose","initializeIcons","speak","GlobalNavButton","ChevronDown","ChevronUp","Edit","Add","Cancel","More","Settings","Mail","Filter","Search","Share","BlockedSite","FavoriteStar","FavoriteStarFill","CheckMark","Delete","ChevronLeft","ChevronRight","Calendar","Megaphone","Undo","Flag","Page","Pinned","View","Clear","Download","Upload","Folder","Sort","AlignRight","AlignLeft","AddFriend","Info","SortLines","List","CircleRing","Heart","HeartFill","Tiles","Embed","Glimmer","Ascending","Descending","SortUp","SortDown","SyncToPC","LargeGrid","SkypeCheck","SkypeClock","SkypeMinus","ClearFilter","Flow","StatusCircleCheckmark","MoreVertical","registerIconAliases","iconBaseUrl","initialize","rHyphen","pascalCase","psuedoElement","ownerWindow","rUpper","supportedTransforms","isTransform","removeProperty","optionsSupported","onceSupported","wrappedHandler","__once","onceHandler","emulateTransitionEnd","handle","triggerEvent","transitionEnd","mult","parseDuration","removeEmulate","transitionEndListener","_collapseStyles","MARGINS","getDefaultDimensionValue","dimension","margins","collapseStyles","getDimensionValue","Collapse","_ref$dimension","_ref$getDimensionValu","computedDimension","handleEntering","scroll","handleEntered","handleExiting","NavbarCollapse","NavbarContext","NavbarToggle","onToggle","NavbarText","_ref$displayName","BsComponent","_ref2$as","resolvedPrefix","createWithBsPrefix","Navbar","_useUncontrolled","initialBsPrefix","fixed","sticky","_useUncontrolled$as","_onToggle","collapseOnSelect","controlledProps","handleCollapse","expandClass","navbarContext","Brand","Toggle","SelectAllVisibility","_selection","_dragEnterCounts","_activeTargets","_lastId","_initialized","dragDropOptions","_onDocumentMouseUp","isDroppable","activeTarget","dragDropTarget","_isDraggable","_isDroppable","isHandled","_onDragEnd","_isDragging","_dragData","dropTarget","_onMouseMove","_isChild","_onMouseLeave","eventTarget","dragTarget","childElement","dragContext","defaultOnRenderHeader","isIconOnly","_onRenderFilterIcon","columnProps","IconComponent","_onRenderColumnHeaderTooltip","tooltipHostProps","hostClassName","_onColumnClick","onColumnClick","columnActionsMode","_onDragStart","_updateHeaderDragInfo","borderWhileDragging","noBorderWhileDragging","setDraggedItemIndex","updateDragInfo","_onColumnContextMenu","onColumnContextMenu","_onRootMouseDown","parentId","onRenderColumnHeaderTooltip","headerClassName","isActionable","isIconVisible","isSorted","isGrouped","isFiltered","transitionDurationDrag","transitionDurationDrop","onRenderFilterIcon","onRenderHeader","isSortedDescending","gripperBarVerticalStyle","cellTooltip","setAriaDescribedBy","_hasAccessibleLabel","hasDropdown","isMenuOpen","nearIcon","sortIcon","_renderAccessibleLabel","_addDragDropHandling","isDropped","borderAfterDropping","noBorderAfterDropping","TRANSITION_DURATION_DROP","_getColumnDragDropOptions","filterAriaLabel","sortAscendingAriaLabel","sortDescendingAriaLabel","groupAriaLabel","DetailsColumn","dropdownChevronForegroundColor","nearIconStyle","borderAfterDragOrDrop","flexDirection","alignContent","_rootElement","_rootComponent","_draggedColumnIndex","_dropHintDetails","_resetDropHints","_onDragOver","_computeDropHintToBeShown","_onDrop","columnReorderProps","_getColumnReorderProps","targetIndex","_currentDropHintIndex","isValidDrop","_isValidCurrentDropHintIndex","_onDropIndexInfo","sourceIndex","onColumnDrop","dragDropDetails","draggedIndex","handleColumnReorder","_updateDragInfo","_isCheckboxColumnHidden","_getDropHintPositions","onColumnDragStart","onColumnDragEnd","columnDragEndLocation","_isEventOnHeader","dropLocation","prevRef","prevMid","frozenColumnCountFromStart","frozenColumnCountFromEnd","dropHintElement","offsetLeft","newMid","originX","dropHintElementRef","eventXRelativePosition","currentDropHintIndex","_liesBetween","lastValidColumn","indexToUpdate","_updateDropHintElement","_renderColumnSizer","columnResizeDetails","isResizable","_stopPropagation","_onSizerBlur","_onSizerDoubleClick","_onSelectAllClicked","columnIndexAttr","columnMinWidth","_onRootMouseMove","_onRootKeyDown","onColumnResized","increment","_onSizerMouseMove","onColumnIsSizingChanged","movement","_onSizerMouseUp","_onToggleCollapseAll","onToggleCollapseAll","newCollapsed","_dragDropHelper","minimumPixelsForDrag","_subscriptionObject","_getHeaderDragDropOptions","previousColumns","ariaLabelForToggleAllGroupsButton","ariaLabelForSelectAllCheckbox","selectAllVisibility","ariaLabelForSelectionColumn","isCheckboxHidden","isCheckboxAlwaysVisible","_renderDropHint","_renderColumnDivider","columnReorderOptions","displayProperty","clientRect","onRenderDivider","dropHintIndex","onColumnAutoResized","DetailsHeader","innerHeight","withViewport","_registerResizeObserver","_viewportResizeObserver","ResizeObserver","_onAsyncResize","_unregisterResizeObserver","disconnect","_updateViewport","withForceUpdate","viewport","viewportElement","scrollRect","_resizeAttempts","delayFirstMeasure","disableResizeObserver","skipViewportMeasures","_isResizeObserverAvailable","previousSkipViewportMeasures","newViewport","DetailsListInner","ariaLabelForListHeader","constrainMode","isPlaceholderData","isHeaderVisible","layoutMode","onColumnHeaderClick","onColumnHeaderContextMenu","selectionZoneProps","ariaLabelForGrid","rowElementEventMap","shouldApplyApplicationRole","listProps","usePageCache","onShouldVirtualize","getGroupHeight","adjustedColumns","isSomeGroupExpanded","listRef","focusZoneRef","groupedListRef","headerRef","onGroupExpandStateChanged","onRowDidMount","onRowWillUnmount","disableSelectionZone","onToggleCollapse","onActiveRowChanged","onRenderMissingItem","checkButtonGroupAriaLabel","enterModalSelectionOnTouch","onRenderDefaultRow","selectionZoneRef","rowId","level","groupsInLevel","getGroupNestingDepth","groupedDetailsListIndexMap","indexMap","rowCount","numGroupHeaders","numOfGroupHeadersBeforeItem","totalRowCount","useGroupedDetailsListIndexMap","additionalListProps","renderedWindowsAhead","renderedWindowsBehind","isCollapsedGroupSelectVisible","headerProps","defaultOnRenderDetailsHeader","detailsHeaderProps","defaultOnRenderDetailsFooter","propsOnRenderDetailsHeader","onRenderDetailsHeader","propsOnRenderDetailsFooter","onRenderDetailsFooter","detailsFooterProps","columnReorderOnDragEnd","finalDropLocation","outside","surface","remainingGroups","currentGroup","GetGroupCount","colCount","isFixed","fixedColumns","isHorizontalConstrained","horizontalConstrained","onRenderDetailsGroupFooter","onRenderFooter","finalOnRenderDetailsGroupFooter","groupFooterProps","onRenderDetailsGroupHeader","finalOnRenderDetailsGroupHeader","groupHeaderProps","groupIndex","groupKey","ariaColSpan","ariaPosInSet","ariaRowCount","ariaRowIndex","finalGroupProps","selectAllButtonProps","sumColumnWidths","totalWidth","onRenderCell","nestingDepth","finalOnRenderRow","onRenderRow","rowProps","onRenderListCell","isRightArrow","onActiveElementChanged","shouldRaiseClicks","FinalGroupedList","groupedListAs","GroupedList","onHeaderKeyDown","onContentKeyDown","headerWrapper","contentWrapper","_header","_groupedList","_list","_selectionZone","_onRenderRow","_getDerivedStateFromProps","setKey","isAllGroupsCollapsed","newViewportWidth","oldViewportWidth","shouldResetSelection","shouldForceUpdates","_initialFocusedIndex","initialFocusedIndex","focusedItemIndex","_adjustColumns","_onGroupExpandStateChanged","_onColumnIsSizingChanged","_onRowDidMount","itemKey","_getItemKey","_activeRows","_setFocusToRowIfPending","_onRowWillUnmount","_onToggleCollapse","collapsed","toggleCollapseAll","_onColumnResized","resizingColumn","resizingColumnIndex","newCalculatedWidth","onColumnResize","_rememberCalculatedWidth","_onColumnAutoResized","_onActiveRowChanged","onActiveItemChanged","_columnOverrides","lastWidth","_getAdjustedColumns","scrollToIndex","measureItem","scrollToMode","_setFocusToRow","getStartItemIndexInView","_notifyColumnsResized","onDidUpdate","_forceListUpdates","_getGroupNestingDepth","currentWidth","viewportWidth","lastSelectionMode","newColumns","canResizeColumns","sortedColumnKey","groupedColumnKey","firstItem","isCollapsable","isCollapsible","clickable","buildColumns","_getFixedColumns","_getJustifiedColumns","_getColumnOverride","flexMargin","remainingWidth","sumProportionalWidth","getPaddedWidth","rowCheckWidth","groupExpandWidth","widthFraction","newColumn","shrinkWidth","MAX_VALUE","minimumWidth","availableWidth","baseColumn","overflowWidth","originalWidth","isLast","spaceLeft","justified","onHover","DetailsListBase","paddingOnly","listCell","DetailsList","WebkitOverflowScrolling","beziers","dropIcon","iconTag","_toggleCollapse","isGroupLoading","newLoadingVisible","isLoadingVisible","onGroupHeaderKeyUp","shouldOpen","_onHeaderClick","onGroupHeaderClick","_onRenderTitle","onRenderName","_onRenderName","headerCount","hasMoreData","groupLevel","onRenderGroupHeaderCheckbox","expandButtonProps","expandButtonIcon","onRenderTitle","canSelectGroup","isSelectionCheckVisible","currentlySelected","groupHeaderContainer","expandIsCollapsed","GroupHeader","finalRowHeight","checkExpandResetStyles","transitionDelay","GroupShowAll","showAllLinkText","onToggleSummarize","memoizedOnClick","GroupFooter","footerText","_subGroupRefs","_droppingClassName","_onRenderGroupHeader","_onRenderGroupShowAll","_onRenderGroupFooter","_renderSubGroup","subGroup","subGroupIndex","getGroupItemLimit","showAllProps","footerProps","onRenderGroupHeader","onRenderGroupShowAll","onRenderGroupFooter","showEmptyGroups","GroupedListSection","_getGroupKey","_getGroupDragDropOptions","isGroup","newIsDropping","groupedListClassNames","renderCount","isShowAllVisible","isShowingAll","hasNestedGroups","dividerProps","ariaControlsProps","groupedListId","groupShowAllProps","canDragGroups","_getDroppingClassName","getItemCountForPage","_returnOne","_onRenderGroup","forceListUpdate","subGroupCount","pageRefs","_onRenderGroupCell","groupIsDropping","_renderGroup","onToggleSelectGroup","_onToggleSelectGroup","_onToggleSummarize","finalListProps","onRenderShowAll","_getDefaultGroupItemLimit","_getGroupItemLimit","_getGroupHeight","COMPACT_ROW_HEIGHT","ROW_HEIGHT","_getPageHeight","pageGroup","_updateIsSomeGroupExpanded","_isInnerZoneKeystroke","_getPageSpecification","_isSomeGroupExpanded","_computeIsSomeGroupExpanded","listVersion","_setGroupsCollapsedState","rootListProps","getPageHeight","getPageSpecification","allCollapsed","newIsSomeGroupExpanded","mergeSettings","oldSettings","newSettings","_isSettingsFunction","_settingsMergeWith","mergeScopedSettings","scopedSettingsFromProps","oldScopedSettings","newScopedSettings","_scopedSettingsMergeWith","_onCustomizationChange","contextTransform","newContext","mergeCustomizations","getFabricTheme","_removeClassNameFromBody","_getClassNames","contextDir","pageDir","componentDir","rootDir","needsTheme","renderedContent","_addClassNameToBody","applyTheme","applyThemeToBody","bodyThemed","inheritFont","Fabric","setVirtualParent","virtualChild","virtualParent","oldParent","_defaultHostSelector","_layersByHostId","_layerHostsById","_filteredEventProps","_rootRef","_createLayerElement","hostId","_getHost","_removeLayerElement","layerElement","insertFirst","onLayerDidMount","onLayerMounted","layerHosts","notifyLayersChanged","registerLayer","eventBubblingEnabled","_onFilterEvent","_getFilteredEvents","layers","unregisterLayer","onLayerWillUnmount","isNotHost","layerHost","getLayerHost","defaultHostSelector","LayerBase","BUBBLING_PHASE","rootNoHost","personaSize","personaPresenceSize","size8","size40","size48","size56","size72","size100","size120","size6","sizeBoolean","isSize8","isSize10","isSize16","isSize24","extraExtraSmall","isSize28","extraSmall","isSize32","isSize40","isSize48","isSize56","isSize72","isSize100","extraLarge","isSize120","sizeToPixels","presenceBoolean","presence","isAvailable","isAway","away","blocked","isBusy","busy","isDoNotDisturb","dnd","isOffline","offline","determineIcon","isOutOfOffice","coinSize","presenceTitle","presenceColors","presenceHeightWidth","presenceMaxSize","coinSizeWithPresenceIconStyle","presenceFontMaxSize","coinSizeWithPresenceStyle","presenceIcon","makeOpenCircleIconStyle","makeBeforeBorderStyle","borderSize","makeSizeStyle","presenceColorAvailable","available","presenceColorAway","presenceColorBusy","presenceColorDnd","presenceColorOffline","presenceColorOof","oof","presenceColorBackground","isOpenCirclePresence","backgroundClip","borderWidth","COLOR_SWATCHES_LOOKUP","lightBlue","darkBlue","darkGreen","lightPink","lightRed","darkRed","burgundy","warmGray","rust","coolGray","COLOR_SWATCHES_NUM_ENTRIES","getPersonaInitialsColor","initialsColor","personaInitialsColor","lightGreen","transparent","personaInitialsColorToHexCode","hashCode","iLen","getInitialsColorFromName","getInitialsStyles","initialsTextColor","showUnknownPersonaCoin","_onRenderCoin","imageUrl","imageAlt","imageShouldFadeIn","imageShouldStartVisible","_onPhotoLoadingStateChange","_onRenderInitials","imageInitials","_getText","isImageLoaded","isImageError","onPhotoLoadingStateChange","onRenderCoin","onRenderPersonaCoin","onRenderInitials","showInitialsUntilImageLoads","divCoinProps","coinSizeStyle","hideImage","personaPresenceProps","shouldRenderInitials","coin","imageArea","size10WithoutPresenceIcon","PersonaCoin","perspective","_onRenderPersonaCoin","_onRenderPrimaryText","showOverflowTooltip","_onRenderSecondaryText","_onRenderTertiaryText","tertiaryText","_onRenderOptionalText","optionalText","hidePersonaDetails","onRenderOptionalText","onRenderPrimaryText","onRenderSecondaryText","onRenderTertiaryText","showSecondaryText","personaCoinProps","personaDetails","_renderElement","renderFunction","defaultRenderFunction","tooltip","TooltipHost","overflowMode","Parent","doNotDisturb","sharedTextStyles","ResizeGroupDirection","_persistedKeytips","_keytipManager","_divContainer","_onRenderItems","_onRenderOverflowButtonWrapper","wrapperDivProps","overflowButton","overflowKeytipSequences","newOverflowItems","overflowItem","persistedKeytip","hasDynamicChildren","_getSubMenuForItem","onExecute","newOverflowItem","onRenderOverflowButton","doNotContainWithinFocusZone","uniqueComponentProps","overflowItems","overflowSide","showOverflow","focusSucceeded","_registerPersistedKeytips","_unregisterPersistedKeytips","itemSubMenuProvider","overflowItemStyle","OverflowSet","getNextResizeGroupStateProvider","measurementCache","measurementsCache","getCachedMeasurement","addMeasurementToCache","measurement","getMeasurementCache","_containerDimension","_measurementCache","_getMeasuredDimension","measuredData","getElementToMeasureDimension","cachedDimension","measuredDimension","_shrinkContentsUntilTheyFit","onReduceData","dataToMeasure","nextMeasuredData","renderedData","resizeDirection","getNextState","newContainerDimension","newDimension","fullDimensionData","onGrowData","measureContainer","_updateContainerDimension","_growDataUntilItDoesNotFit","shouldRenderDataForMeasurement","getInitialResizeGroupState","MeasuredContext","isMeasured","hiddenDivStyles","hiddenParentStyles","ResizeGroup","_nextResizeGroupStateProvider","_initialHiddenDiv","_updateHiddenDiv","_hasRenderedContent","onRenderData","dataNeedsMeasuring","isInitialMeasure","_afterComponentRendered","dataDidRender","remeasure","containerDimension","refToMeasure","scrollWidth","getCommandButtonStyles","rootStyles","labelStyles","restCustomStyles","_overflowSet","_resizeGroup","_onRenderData","primarySet","primaryItems","_onRenderItem","_onRenderOverflowButton","farItems","secondarySet","itemText","commandButtonProps","buttonStyles","iconOnly","_onButtonClick","_commandButton","ButtonAs","buttonAs","CommandBarButtonAs","commandBarButtonAs","Type","CommandBarButton","overflowButtonProps","combinedOverflowItems","overflowProps","OverflowButtonType","overflowButtonAs","_onReduceData","shiftOnReduce","onDataReduced","movedItem","renderedInOverflow","_computeCacheKey","_onGrowData","onDataGrown","minimumOverflowItems","commandBarData","overflowSet","CommandBar","FORMAT_ARGS_REGEX","FORMAT_REGEX","replaceFunc","picker","holder","pickerIsOpened","goTodaySpacing","dayPicker","monthAndYear","decade","currentYear","currentDecade","dayWrapper","daySelection","dayIsToday","dayIsDisabled","dayIsUnfocused","dayIsFocused","dayIsHighlighted","pickerIsFocused","dayDisabled","dayBackground","dayHover","dayPress","weekBackground","weekIsHighlighted","showWeekNumbersRTL","monthComponents","yearComponents","decadeComponents","prevMonth","nextMonth","prevYear","nextYear","prevDecade","nextDecade","prevMonthIsDisabled","nextMonthIsDisabled","prevYearIsDisabled","nextYearIsDisabled","prevDecadeIsDisabled","nextDecadeIsDisabled","headerToggleView","optionGrid","monthOption","yearOption","isHighlighted","monthOptionIsDisabled","yearOptionIsDisabled","goToday","goToTodayIsDisabled","goTodayInlineMonth","isPickingYears","monthPicker","yearPicker","monthPickerVisible","toggleMonthView","calendarsInline","monthPickerAsOverlay","holderWithButton","monthIsHighlighted","monthIsCurrentMonth","yearIsHighlighted","yearIsCurrentYear","topLeftCornerDate","topRightCornerDate","bottomLeftCornerDate","bottomRightCornerDate","weekSelection","monthSelection","topDate","rightDate","bottomDate","leftdate","_onDayKeyDown","originalDate","weekIndex","dayIndex","_onSelectDate","_navigateMonthEdge","_onDayMouseDown","dateRangeType","Month","_applyFunctionToDayRefs","isInBounds","dayWeekIndex","_onDayMouseUp","_onDayMouseOver","_onDayMouseLeave","_onTableMouseLeave","_onTableMouseUp","selectedDate","onSelectDate","navigatedDate","autoNavigateOnSelection","minDate","maxDate","workWeekDays","dateRange","Day","_getBoundedDateRange","_getIsRestrictedDate","compareResult","_onSelectPrevMonth","_onSelectNextMonth","onNavigateDate","_onClose","_onHeaderSelect","onHeaderSelect","_onHeaderKeyDown","_onPrevMonthKeyDown","_onNextMonthKeyDown","_onCloseButtonKeyDown","activeDescendantId","_getWeeks","navigationIcons","showWeekNumbers","firstWeekOfYear","dateTimeFormatter","showCloseButton","allFocusable","dayPickerId","monthAndYearId","leftNavigationIcon","leftNavigation","rightNavigationIcon","rightNavigation","closeNavigationIcon","closeIcon","weekNumbers","selectedDateWeekNumber","weekCorners","_getWeekCornerStyles","prevMonthInBounds","nextMonthInBounds","formatMonthYear","navContainer","prevMonthAriaLabel","nextMonthAriaLabel","closeButtonAriaLabel","weekNumberFormatString","isNavigatedDate","onSelected","_getHighlightedCornerStyle","Week","WorkWeek","isInMonth","_setDayCellRef","onMouseOver","isToday","formatMonthDayYear","navigatedDay","weekCornersStyled","above","below","roundedTopRight","roundedBottomLeft","roundedBottomRight","_findLastIndex","leftStyle","rightStyle","targetDate","DAYS_IN_WEEK","propsToUse","today","showSixWeeksByDefault","todaysDate","isAllDaysOfWeekOutOfMonth","selectedDateRangeType","selectedDates","shouldGetWeeks","dayInfo","restrictedDates","boundedDateRange","DefaultCalendarYearStrings","prevRangeAriaLabel","nextRangeAriaLabel","DefaultNavigationIcons","_buttonRef","_onRenderYear","onRenderYear","onSelectYear","_selectedCellRef","_currentCellRef","_renderCell","selectedYear","minYear","maxYear","fromYear","toYear","_onSelectPrev","onSelectPrev","iconStrings","prevRange","prevAriaLabel","_onSelectNext","onSelectNext","nextRange","nextAriaLabel","rangeAriaLabel","currentDateRange","headerAriaLabelFormatString","_onRenderNav","_gridRef","_onNavNext","_onNavPrev","_renderHeader","_renderGrid","_calculateInitialStateFromProps","navigatedYear","rangeYear","_navigatedMonthRef","_onCalendarYearRef","_calendarYearRef","_onSelectYear","_focusOnUpdate","newNavigationDate","isYearPickerVisible","_yearToString","yearFormattingDate","_yearRangeToString","yearRange","_yearRangeToNextDecadeLabel","nextYearRangeAriaLabel","_yearRangeToPrevDecadeLabel","prevYearRangeAriaLabel","_onSelectNextYear","_onSelectNextYearKeyDown","_onSelectPrevYear","_onSelectPrevYearKeyDown","_onSelectMonthKeyDown","_onSelectMonth","newMonth","yearPickerHidden","_onYearPickerHeaderSelect","_selectMonthCallbacks","_isCurrentMonth","highlightCurrentMonth","highlightSelectedMonth","currentSelectedDate","yearPickerHeaderAriaLabel","rowIndexes","isPrevYearInBounds","isNextYearInBounds","yearString","headerAriaLabel","monthPickerHeaderAriaLabel","prevYearAriaLabel","nextYearAriaLabel","rowNum","monthsForRow","monthIndex","indexedMonth","isCurrentMonth","isNavigatedMonth","isSelectedMonth","isSelectedYear","defaultWorkWeekDays","Monday","Tuesday","Wednesday","Thursday","Friday","dateTimeFormatterCallbacks","_dayPicker","_monthPicker","_hasFocus","_navigateDayPickerDay","navigatedDayDate","navigatedMonthDate","_navigateMonthPickerDay","_onNavigateDayDate","focusOnNavigatedDay","_onNavigateMonthDate","showMonthPickerAsOverlay","isDayPickerVisible","selectedDateRangeArray","isMonthPickerVisible","_onGotoToday","selectDateOnClick","_onGotoTodayClick","_onGotoTodayKeyDown","_onDatePickerPopupKeyDown","_handleEscKey","showGoToToday","monthPickerOnly","overlayedWithButton","goTodayEnabled","goToToday","Sunday","FirstDay","DEFAULT_STRINGS","_datePickerDiv","_textField","formatDate","calendarProps","formattedDate","_calendarDismissed","_onCalloutPositioned","_onTextFieldFocus","disableAutoFocus","allowTextInput","_preventFocusOpeningPicker","_showDatePickerPopup","_onTextFieldBlur","_validateTextInput","_onTextFieldChanged","textField","isDatePickerShown","_dismissDatePickerPopup","isRequiredErrorMessage","_onTextFieldKeyDown","_onTextFieldClick","_onIconClick","parseDateFromString","invalidInputErrorMessage","_isDateOutOfBounds","isOutOfBoundsErrorMessage","_renderReadOnlyInput","underlined","readOnlyTextField","readOnlyPlaceholder","_getDefaultState","_setErrorMessage","initialPickerDate","pickerAriaLabel","borderless","calendarAs","calloutId","textFieldProps","textFieldId","readOnly","TextField","_getErrorMessage","onRenderInput","onPositioned","FocusTrapZone","isClickableOutsideFocusTrap","disableFirstFocus","forceFocusInsideTrap","CalendarType","dateStr","withLabel","withoutLabel","DatePicker","DatePickerIcon","TEXTFIELD_HEIGHT","TooltipDelay","subText","tooltipGapSpace","devicePixelRatio","wordWrap","overflowWrap","_tooltipHost","_defaultTooltipId","show","_toggleTooltip","_hideTooltip","_getTargetElement","Self","_onTooltipMouseEnter","TooltipHostBase","_currentVisibleTooltip","overflowElement","hasHorizontalOverflow","hasVerticalOverflow","_clearDismissTimer","_clearOpenTimer","delayTime","_getDelayTime","_openTimerId","_onTooltipMouseLeave","closeDelay","_dismissTimerId","_onTooltipKeyDown","isTooltipVisible","onTooltipToggle","isAriaPlaceholderRendered","tooltipProps","tooltipId","isContentPresent","showTooltip","onBlurCapture","ariaPlaceholder","toFnRef","useMergedRefs","refA","refB","mergeRefs","TabContext","AbstractNav","useForceUpdate","needsRefocusRef","tabContext","listNode","getNextActiveChild","currentListNode","activeChild","handleSelect","mergedRef","nextActiveChild","dataset","rbEventKey","NavItem","uncontrolledProps","navbarBsPrefix","cardHeaderBsPrefix","justify","navbar","navbarScroll","isNavbar","cardContext","CardContext","_createPositionData","targetEdge","alignmentEdge","isAuto","DirectionalDictionary","_isRectangleWithinBounds","_getOutOfBoundsEdges","outOfBounds","_getEdgeValue","_setEdgeValue","_getCenterValue","_getFlankingEdges","positiveEdge","negativeEdge","_getRelativeEdgeValue","_getRelativeRectEdgeValue","_getRelativeEdgeDifference","hostRect","_moveEdge","_alignEdges","_isEdgeInBounds","_adjustFitWithinBounds","bounding","positionData","elementEstimate","elementRectangle","directions","currentEstimate","currentEdge","currentAlignment","_estimatePosition","_flipToFit","flippedElementEstimate","oppositeEdge","_flipAlignmentEdge","_alignOutOfBoundsEdges","outOfBoundsEdges","_centerEdgeToPoint","elementToPosition","estimatedElementPosition","elementEdge","adjustedGap","_alignOppositeEdges","_finalizeReturnEdge","returnEdge","_calculateActualBeakWidthInPixels","_getPositionData","previousPositions","positionInformation","getClosestEdge","targetCenter","boundingCenter","_positionElementWithinBounds","_finalizeBeakPosition","elementPosition","positionedBeak","actualElement","closestEdge","_positionBeak","targetRectangle","beakTargetPoint","elementBounds","beakPosition","_getRectangleFromElement","_getRectangleFromIRect","_getMaxHeightFromTargetRectangle","_positionElementRelative","targetRect","rectOrPoint","_getTargetRect","_getAlignmentData","positionedElement","_finalizePositionData","hostElement","doNotFinalizeReturnEdge","elementEdgeString","_finalizeElementPosition","_positionCallout","positionProps","finalizedBeakPosition","positionCard","_positionCard","ANIMATIONS","BEAK_ORIGIN_POSITION","OFF_SCREEN_STYLE","ARIA_ROLE_ATTRIBUTES","_hostElement","_calloutElement","_hasListeners","_dismissOnScroll","preventDismissOnEvent","preventDismissOnScroll","positions","_dismissOnClickOrScroll","_dismissOnResize","preventDismissOnResize","_dismissOnLostFocus","preventDismissOnLostFocus","_setInitialFocus","_didSetInitialFocus","_onComponentDidMount","_addListeners","_updateAsyncPosition","_setHeightOffsetEveryFrame","_dismissOnTargetWindowBlur","shouldDismissOnWindowFocus","_mouseDownOnPopup","_isMouseDownOnPopup","_mouseUpOnPopup","slideDirectionalClassName","calloutElementRect","heightOffset","_positionAttempts","_removeListeners","_getTarget","_blockResetHeight","_maxHeight","finalHeight","_didPositionPropsChange","_bounds","calloutWidth","calloutMaxWidth","calloutMinWidth","hideOverflow","calloutMaxHeight","popupProps","getContentMaxHeight","_getMaxHeight","contentMaxHeight","overflowYHidden","beakVisible","overflowStyle","visibilityStyle","beak","_getBeakPosition","beakCurtain","Popup","calloutMain","isEventTargetOutsideCallout","dismissOnTargetClick","_updatePosition","beakPostionStyle","calloutElement","expectsTarget","_getBounds","newPositions","positionCallout","_arePositionsEqual","currentBounds","targetWindow","getWindowSegments","_getBoundsFromTargetWindow","minPagePadding","mouseTarget","elementTarget","rectOrPointTarget","boundingRectangle","getMaxHeight","_comparePositions","oldPositions","oldPositionEdge","newPositionEdge","_setHeightOffsetTimer","calloutMainElem","scrollDiff","getBeakStyle","CalloutContent","borderStyle","layerProps","_onChange","_onRenderField","imageSrc","selectedImageSrc","imageSize","onRenderLabel","_onRenderLabel","htmlFor","innerField","imageWrapper","selectedImageWrapper","iconWrapper","labelWrapper","labelId","onRenderField","hasIcon","hasImage","imageIsLarge","choiceFieldWrapper","getChoiceGroupFocusStyle","focusBorderColor","hasIconOrImage","getImageWrapperStyle","isSelectedImageWrapper","transitionProperty","transitionDuration","transitionTimingFunction","ChoiceGroupOption","circleBorderColor","circleHoveredBorderColor","circleCheckedBorderColor","circleCheckedHoveredBorderColor","circleDisabledBorderColor","circleBackgroundColor","dotUncheckedHoveredColor","dotCheckedColor","dotCheckedHoveredColor","dotDisabledColor","labelHoverFocusColor","iconOrImageChoiceBorderUncheckedHoveredColor","iconOrImageChoiceBorderCheckedColor","iconOrImageChoiceBorderCheckedHoveredColor","iconOrImageChoiceBackgroundColor","fieldHoverOrFocusProperties","enabledFieldWithImageHoverOrFocusProperties","circleAreaProperties","dotAreaProperties","choiceFieldSize","radioButtonSpacing","labelWrapperLineHeight","_focusCallbacks","_changeCallbacks","keyFocused","defaultSelectedKey","validDefaultSelectedKey","_isControlled","keyChecked","_getKeyChecked","newKeyChecked","optionsContainIconOrImage","applicationRole","innerOptionProps","_getOptionId","_getOptionLabelId","optionToFocus","checkedOption","onChanged","originalOption","selectedKey","optionsChecked","ChoiceGroup","updateOptions","displayOnlyOptionsCache","_displayOnlyOptionsCache","_cachedOptions","positionInSet","_dropDown","_scrollIdleDelay","_sizePosCache","_requestAnimationFrame","activeTimeouts","multiSelect","changedOpt","_getPlaceholder","placeHolder","_getTitle","multiSelectDelimiter","_onRenderPlaceholder","_onRenderContainer","panelProps","dropdownWidth","isSmall","panelStyles","panel","Panel","isOpen","isLightDismiss","_onDismiss","hasCloseButton","_renderFocusableList","_onPositioned","_onRenderCaretDown","caretDown","_onRenderList","renderedList","emptyQueue","newGroup","placeRenderedOptionIntoQueue","_renderOption","onRenderOption","isItemSelected","dropdownItemHidden","dropdownItemSelectedAndDisabled","dropdownItemSelected","dropdownItemDisabled","dropdownItem","multiSelectItemStyles","multiSelectItem","Checkbox","_listId","_onRenderItemLabel","optionSetSize","_onRenderOption","dropdownOptionText","calloutRenderEdge","setSelectedIndex","_onDropdownBlur","_isDisabled","_onDropdownKeyDown","containsExpandCollapseModifier","_moveIndex","_onDropdownKeyUp","_onZoneKeyDown","_onZoneKeyUp","_onDropdownClick","_shouldOpenOnFocus","_isFocusedByClick","_onDropdownMouseDown","selectedKeys","defaultSelectedKeys","_optionId","_getSelectedIndexes","selectedKeyProp","didOptionsChange","onRenderContainer","onRenderCaretDown","onRenderPlaceholder","onRenderPlaceHolder","cachedOptions","errorMessageId","ariaActiveDescendant","propStyles","isRenderingPlaceholder","panelClassName","calloutClassName","hasErrorMessage","dropdown","caretDownWrapper","shouldOpenOnFocus","notifyOnReselect","newIndexes","_copyArray","newArray","stepValue","stepCounter","onRenderList","dropdownItemsWrapper","dropdownItems","dropdownDivider","dropdownItemHeader","_getAllSelectedIndices","_getSelectedIndex","openOnKeyboardFocus","DropdownBase","titleIsPlaceHolder","titleHasError","highContrastAdjustMixin","highContrastItemAndTitleStateMixin","highContrastBorderState","MinimumScreenSelector","Dropdown","globalClassnames","rootHoverFocusActiveSelectorNeutralDarkMixin","rootHoverFocusActiveSelectorNeutralPrimaryMixin","borderColorError","dropdownItemStyle","selectedItemBackgroundColor","itemSelectors","titleOpenBorderRadius","calloutOpenBorderRadius","DROPDOWN_HEIGHT","main","contentInner","TagItem","enableTagFocusInDisabledPicker","suggestionTextOverflow","TagItemSuggestion","BasePicker","TagPicker","globalClassNames","scrollableContent","layer","isDragging","touchAction","eventMapping","_currentEventType","_onDragStop","_onTouchEnd","handleSelector","_matchesSelector","preventDragSelector","_touchId","_getTouchId","_getControlPosition","dragData","_createDragDataFromPosition","onStart","lastPosition","_onDrag","updatedData","_createUpdatedDragData","updatedPosition","onDragChange","baseDragData","onStop","statePosition","touchObj","_getActiveTouch","eventToGetOffset","_findTouchInTouchList","identifier","matchesSelectorFn","webkitMatchesSelector","msMatchesSelector","touchList","DefaultLayerProps","_focusTrapZone","_focusTrapZoneMergedRef","_registerInitialModalPosition","dialogMain","modalRectangle","dragOptions","keepInBounds","_minClampedPosition","_maxClampedPosition","modalRectangleTop","_allowScrollOnModal","elt","_allowTouchBodyScroll","_scrollableContent","_onModalContextMenuClose","isModalMenuOpen","_onModalClose","_lastSetX","_lastSetY","isInKeyboardMoveMode","_hasRegisteredKeyUp","onDismissed","_getClampedPosition","handledEvent","_getMoveDelta","_getClampedPositionY","_getClampedPositionX","_onEnterKeyboardMoveMode","_onExitKeyboardMoveMode","focusTrapZoneProps","_registerForKeyUp","hasBeenOpened","allowTouchBodyScroll","_onModalCloseTimer","containerClassName","scrollableContentClassName","elementToFocusOnDismiss","firstFocusableSelector","ignoreExternalFocusing","isBlocking","isDarkOverlay","overlay","titleAriaId","subtitleAriaId","topOffsetFixed","isModeless","isAlert","enableAriaHiddenSiblings","layerClassName","isAlertRole","isDefaultDragHandle","dragHandleSelector","mergedLayerProps","modalContent","focusPreviouslyFocusedInnerElement","keyboardMoveIconContainer","keyboardMoveIconProps","keyboardMoveIcon","menu","moveMenuItemText","closeMenuItemText","Overlay","isDarkThemed","minPosition","maxPosition","ModalBase","Modal","__browserNeedsRevealButton","_textElement","validateOnFocusIn","validateOnFocusOut","_onRevealButtonClick","isRevealingPassword","_onInputChange","isSameValue","_lastChangeValue","_getValue","uncontrolledValue","_fallbackId","COMPONENT_NAME","_warnControlledUsage","_delayedValidate","deferredValidationTime","_lastValidation","_adjustInputHeight","validateOnLoad","snapshot","multiline","_shouldValidateAllChanges","resizable","autoAdjustHeight","canRevealPassword","onRenderPrefix","onRenderSuffix","_errorMessage","hasRevealButton","isEdge","_browserNeedsRevealButton","fieldGroup","_onRenderPrefix","_renderTextArea","_renderInput","revealButton","revealSpan","revealIcon","_onRenderSuffix","_isDescriptionAvailable","setSelectionStart","setSelectionEnd","_hasWarnedNullValue","textAreaProps","updatedInputProps","_latestValidateValue","onGetErrorMessage","_notifyAfterValidate","onNotifyValidationResult","unresizable","getLabelStyles","fieldPrefixSuffix","borderBottomColor","resize","sequencesToID","keySequence","useKeytipData","keytipManager","prevOptions","usePrevious","nativeKeytipProps","keytipId","describedByPrepend","describedby","getAriaDescribedBy","overflowKeySequences","overflowSequenceLen","overflowSequence","newKeySequences","mergeOverflows","getKeytipData","getScrollYPosition","scrollPos","setScrollYPosition","scrollTo","ScrollToMode","EMPTY_RECT","_measurePageRect","_measureSurfaceRect","_measureScrollRect","_surface","_pageRefs","hasMounted","_resetRequiredWindows","_requiredRect","_measureVersion","_invalidatePageCache","_updatePages","_onRenderRoot","surfaceElement","_onRenderSurface","surfaceRef","pageElements","_onRenderPage","pageProps","onRenderCellConditional","cellRole","ignoreScrollingState","isScrolling","pages","_estimatedPageHeight","_totalEstimates","_requiredWindowsAhead","_requiredWindowsBehind","_onAsyncScroll","_onAsyncIdle","_onScrollingDone","_cachedPageHeights","_focusedIndex","_pageCache","_getRenderCount","allowedRect","_allowedRect","itemsPerPage","pageSpecification","pageHeight","itemCount","_scrollElement","scrollPosition","scrollWindow","itemPositionWithinPage","itemIndexInPage","scrollBottom","isSpacer","_scrollTop","totalRowHeight","_updatePageMeasurements","_materializedRect","pagesVersion","onPagesUpdated","oldPages","newPages","oldPage","newPage","_updateRenderRects","getTotalListHeight","_surfaceRect","onRenderSurface","onRenderRoot","_renderPage","finalOnRenderSurface","_shouldVirtualize","cachedPage","pageElement","pageStyle","_getPageStyle","onRenderPage","newRef","getPageStyle","indexString","innerRect","outerRect","windowsAhead","requiredWindowsAhead","windowsBehind","requiredWindowsBehind","newListState","_buildPages","oldListPages","_notifyPageChanges","onPageAdded","onPageRemoved","renderedIndexes","_onPageAdded","_onPageRemoved","heightChanged","_measurePage","hasChangedHeight","cachedHeight","measureVersion","newClientRect","materializedRect","pageTop","currentSpacer","focusedIndex","shouldVirtualize","isFirstRender","pageData","newRect","pageBottom","isPageRendered","isPageInAllowedRange","isPageInRequiredRange","itemsInPage","_createPage","_visibleRect","SPACER_KEY_PREFIX","visibleRect","_getItemCountForPage","visibileRect","pageKey","surfaceRect","getScrollHeight","_scrollHeight","visibleTop","_expandRect","pagesBefore","pagesAfter","PivotLinkFormat","PivotLinkSize","_renderPivotLink","linkCollection","headerButtonProps","tabId","keyToTabIdMapping","onRenderItemLink","_renderLinkContent","contentString","itemIcon","linkIsSelected","_onLinkClick","_pivotId","links","_getPivotLinks","defaultSelectedIndex","_getSelectedKey","_renderPivotLinks","alwaysRender","_renderPivotItem","_isKeyValid","propsSelectedKey","stateSelectedKey","headersOnly","keyToIndexMapping","selectedTabId","itemContainer","_isPivotItem","pivotItem","pivotItemProps","_getTabId","getTabId","_updateSelectedItem","onLinkClick","rootIsLarge","linkSize","rootIsTabs","linkFormat","tabs","PivotItem","linkStyles","outlineOffset","Pivot","isValidatePoint","getSinglePolygonPath","segmentPoints","getParsedPoints","segPoints","polygonPath","Polygon","baseLinePoints","hasStroke","rangePath","outerPath","getRanglePath","singlePath","tickLineSize","axisLineType","angleAxisId","maxRadiusTick","extent","point0","point1","getTickValueCoord","getViewBox","radiusAxisId","PieChart","ariaLive","labelPosition","statusMessage","styleSize","spinAnimation","borderTopColor","_getThemedSpacing","_getValueUnitGap","numericalPart","numericalValue","numericalString","parsePadding","paddingValues","padding1","padding2","nameMap","StackStatics","stackChildren","defaultItemProps","RootType","horizontalAlign","childrenGap","rowGap","columnGap","splitGap","calculatedGap","horizontalMargin","verticalMargin","childStyles","commonSelectors","nowrap","variantObject","mozOsxFontSmoothing","webkitFontSmoothing","labelFontWeight","labelColor","labelDisabledColor","labelRequiredStarColor","IconType","_onImageLoadingStateChange","imageLoadError","imageErrorAs","ImageType","finalIconContentChildren","iconContentChildren","_renderContent","underline","isButton","isUnderlined","_getRootType","_adjustPropsForRootType","linkColor","linkInteractedColor","linkDisabledColor","PanelVisibilityState","_panel","_animationCallback","_hasCustomNavigation","onRenderNavigation","onRenderNavigationContent","_allowScrollOnPanel","_onRenderNavigation","navigation","_onRenderNavigationContent","iconButtonStyles","_onRenderHeader","_headerTextId","_onPanelClick","headerTextId","headerTextProps","_onRenderBody","_onRenderFooter","onRenderFooterContent","footer","footerInner","_animateTo","newVisibilityState","open","onOpen","_onTransitionComplete","_clearExistingAnimationTimer","_updateFooterPosition","onOpened","isFooterSticky","animatingClosed","animatingOpen","_shouldListenForOuterClick","_dismissOnOuterClick","shouldListenOnOuterClick","previousShouldListenOnOuterClick","isFooterAtBottom","isHiddenOnDismiss","overlayProps","customWidth","onLightDismissClick","onRenderBody","isLeft","smallFixedNear","customNear","isOnRightSide","customWidthStyles","isAnimating","focusTrapZoneClassName","hasCustomNavigation","hiddenPanel","commands","onOuterClick","smallFixedFar","smallFluid","largeFixed","panelWidth","panelMargin","smallPanelSelectors","mediumPanelSelectors","largePanelSelectors","largeFixedPanelSelectors","extraLargePanelSelectors","getPanelBreakpoints","sharedPaddingStyles","isCustomPanel","hyphens","isDark","rootDark","_checkBox","indeterminate","checkmarkIconProps","checkbox","checkmark","isIndeterminate","defaultIndeterminate","stateUpdate","boxSide","isUsingCustomLabelRender","checkmarkFontColor","checkmarkFontColorHovered","checkboxBorderColor","checkboxBorderIndeterminateColor","checkboxBorderColorChecked","checkboxBorderColorDisabled","checkboxBorderHoveredColor","checkboxBorderIndeterminateHoveredColor","checkboxBackgroundChecked","checkboxBackgroundCheckedHovered","checkboxBorderColorCheckedHovered","checkboxHoveredTextColor","checkboxBackgroundDisabledChecked","checkboxTextColor","checkboxTextColorDisabled","indeterminateDotStyles","ICON_MAP","severeWarning","success","_getRegionProps","hasActions","_getActionsDiv","_getDismissDiv","regionProps","expandSingleLine","showContent","_renderMultiLine","_renderSingleLine","dismissIconProps","dismissal","dismissButtonAriaLabel","_getDismissSingleLine","dismissSingleLine","_getExpandSingleLine","truncated","overflowButtonAriaLabel","_getIconSpan","messageBarIconProps","iconContainer","messageBarType","_renderInnerText","_getAnnouncementPriority","innerText","singleline","dismissalSingleLine","expandingSingleLine","actionsSingleline","highContrastBackgroundColor","MessageBar","SmallScreenSelector","dismissalAndExpandIconStyle","dismissalAndExpandStyle","Separator","alignStart","alignCenter","alignEnd","personaWrapper","PeoplePickerItemSuggestion","personaProps","textSelectorsStyles","currentValidationState","personaToConvert","NormalPeoplePicker","_onRenderProgress","ariaValueText","barHeight","percentComplete","progressBarStyles","ariaValueMin","ariaValueMax","ariaValueNow","itemProgress","progressTrack","progressBar","progressHidden","onRenderProgress","itemName","itemDescription","IndeterminateProgress","IndeterminateProgressRTL","ProgressIndicator","progressTrackColor","marginBetweenText","textHeight","SearchDirection","HoverStatus","getDisabledStyles","listOptionHighContrastStyles","inputHighContrastStyles","getOptionStyles","customStylesForAllOptions","customOptionStylesForCurrentOption","isHidden","textHoveredColor","textSelectedColor","textDisabledColor","backgroundHoveredColor","backgroundPressedColor","optionStyles","optionText","optionTextWrapper","getCaretDownButtonStyles","caret","buttonTextColor","buttonTextHoveredCheckedColor","buttonBackgroundHoveredColor","buttonBackgroundCheckedColor","buttonBackgroundCheckedHoveredColor","buttonHighContrastStyles","comboBoxOptionWidth","textColor","borderHoveredColor","borderPressedColor","borderFocusedColor","erroredColor","headerTextColor","dividerBorderColor","placeholderHighContrastStyles","placeholderStylesHovered","ComboBoxRootHighContrastFocused","focusBorderStyles","rootError","rootDisallowFreeForm","optionsContainerWrapper","optionsContainer","allowFreeForm","getComboBoxOptionClassNames","_autofill","_comboBoxWrapper","_comboBoxMenu","useFocusAsync","focusState","_onUpdateValueInAutofillWillReceiveProps","comboBox","visibleValue","_normalizeToString","_currentVisibleValue","_renderComboBoxWrapper","multiselectAccessibleText","buttonIconProps","isButtonAriaHidden","autofill","iconButtonProps","placeholderProp","_onInputKeyDown","_onInputKeyUp","_onAutofillClick","_getAriaAutoCompleteValue","_getAriaActiveDescendantValue","_onShouldSelectFullInputValueInAutofillComponentDidUpdate","_getCaretButtonStyles","_onComboBoxClick","_getVisibleValue","allowFreeform","currentPendingValueValidIndex","currentOptions","currentPendingValue","currentPendingIndexValid","_indexWithinBounds","_getPendingString","_getMultiselectDisplayString","_getFirstSelectedIndex","_handleInputWhenDisabled","_processInputChangeWithFreeform","_processInputChangeWithoutFreeform","_onResolveOptions","onResolveOptions","newOptions","_currentPromise","newOptionsFromPromise","_submitPendingValue","dropdownMaxWidth","onRenderUpperContent","onRenderLowerContent","useComboBoxAsMenuWidth","comboBoxMenuWidth","_onLayerMounted","_onCalloutMouseDown","_onRenderUpperContent","_onRenderLowerContent","_onCalloutLayerMounted","onRenderLabelProps","_isOptionSelected","_isOptionChecked","_getCurrentOptionStyles","optionClassNames","_getPreviewText","onRenderCheckboxLabel","_onRenderOptionContent","_onOptionMouseEnter","_onOptionMouseMove","_onOptionMouseLeave","onMenuDismiss","_setOpenStateAndFocusOnClose","_resetSelectedIndex","_onAfterClearPendingInfo","_processingClearPendingInfo","currentPendingValueValidIndexOnHover","_getPendingSelectedIndex","clearAll","_setPendingInfoFromIndexAndDirection","backward","forward","directionToSearch","_buildDefaultSelectedKeys","initialSelectedIndices","_getSelectedIndices","_buildSelectedKeys","indices","onMenuOpen","_scrollIntoView","_focusInputAfterClose","_notifyPendingValueChanged","comboBoxWrapper","displayValues","newCurrentPendingValueValidIndex","_setPendingInfo","originalUpdatedValue","newSuggestedDisplayValue","_lastReadOnlyAutoCompleteChangeTimeoutId","_setPendingInfoFromIndex","_getNextSelectableIndex","searchDirection","_setSelectedIndex","submitPendingValueEvent","onPendingValueChanged","initialIndices","_hasPendingValue","changedOptions","_clearPendingInfo","pendingOptionText","newOption","includeCurrentPendingValue","onScrollToItem","scrollSelectedToTop","alignToTop","scrollableParentRect","selectedElementRect","indexUpdate","newPendingIndex","newPendingValue","focusInputAfterClose","caretDownButtonStyles","customCaretDownButtonStyles","comboBoxOptionStyles","customStylesForCurrentOption","_isPendingOption","descendantText","useAriaLabelAsText","ComboBox","_toggleButton","checkedProp","onAriaLabel","offAriaLabel","offText","onText","inlineLabel","stateText","badAriaLabel","toggleNativeProps","onOffMissing","toggleId","stateTextId","labelledById","ariaRole","renderPill","pill","thumb","pillContent","pillUncheckedBackground","pillCheckedBackground","pillCheckedHoveredBackground","thumbUncheckedHoveredBackground","pillCheckedDisabledBackground","thumbBackground","thumbCheckedBackground","thumbDisabledBackground","thumbCheckedDisabledBackground","pillBorderColor","pillBorderHoveredColor","pillBorderDisabledColor","DEFAULT_PILL_HEIGHT","DEFAULT_THUMB_SIZE","_onClickFocus","_onFocusCapture","_onClearClick","clearButtonProps","_onClear","onEscape","onSearch","_latestValue","_callOnChange","labelText","disableAnimation","placeholderValue","hasInput","clearButton","onClear","SearchBox","inputIconAlt","inputIconAltHovered","inputBorderDisabled","inputBackgroundHovered","inputBackgroundDisabled","MillisecondsInOneDay","MillisecondsIn1Sec","MillisecondsIn1Min","MillisecondsIn30Mins","MillisecondsIn1Hour","MinutesInOneDay","MinutesInOneHour","DaysInOneWeek","MonthInOneYear","addDays","addWeeks","addMonths","addYears","getMonthStart","getMonthEnd","getYearStart","getYearEnd","compareDates","date1","date2","compareDatePart","getDatePartHashValue","getDateRangeArray","daysToSelectInDayView","startDate","datesArray","endDate","getDatePart","daysOffset","getStartDateOfWeek","nextDate","isInDateRangeArray","getWeekNumbersInMonth","weeksInMonth","selectedMonth","dayOfMonth","fistDayOfMonth","endOfFirstWeek","dateWeekDay","adjustWeekDay","endOfWeekRange","weeksArray","getWeekNumber","FirstFullWeek","getWeekOfYearFullDays","FirstFourDayWeek","getDayOfYear","num3","getFirstDayWeekOfYear","numberOfFullDays","December","num2","daysUntilDate","useCustomizationSettings","DefaultFields","baseStyles","getProps","Wrapped","additionalProps","customizedStyles","concatenatedStyles","pureComponent","CheckBase","modalize","affectedNodes","targetDocument","unmodalize","_firstBumper","_lastBumper","_onRootFocus","_onRootBlur","_getDocument","_onFirstBumperFocus","_onBumperFocus","_onLastBumperFocus","isFirstBumper","currentBumper","nextFocusable","_isBumper","_previouslyFocusedElementInTrapZone","_forceFocusInTrap","_focusStack","focusedElement","_forceClickInTrap","clickedElement","_bringFocusIntoZone","_updateEventHandlers","_unmodalize","_previouslyFocusedElementOutsideTrapZone","prevForceFocusInsideTrap","newForceFocusInsideTrap","newDisabled","_returnFocusToInitiator","_disposeClickHandler","_disposeFocusHandler","bumperProps","firstFocusableTarget","_focusAsync","focusSelector","_firstFocusableChild","focusInset","focusColor","baseSplitButtonStyles","commandButtonStyles","focusZoneStyles","raiseClickFromKeyboardEvent","MouseEvent","initMouseEvent","_allInstances","_outerZones","ALLOWED_INPUT_TYPES","_portalContainsElement","newActiveElement","doNotAllowFocusEventToPropagate","stopFocusPropagation","onFocusNotification","shouldFocusInnerElementWhenReceivedFocus","defaultTabbableElement","isImmediateDescendant","_isImmediateDescendantOfZone","maybeElementToFocus","_activeElement","initialElementFocused","_setFocusAlignment","_updateTabIndexes","_setParkedFocus","_setActiveElement","isInnerZoneKeystroke","pagingSupportDisabled","_isInnerZone","innerZone","_getFirstInnerZone","_tryInvokeClickForFocusable","_preventDefaultWhenHandled","_moveFocusLeft","_moveFocusRight","_moveFocusUp","_moveFocusDown","_moveFocusPaging","allowTabKey","_isElementInput","focusChanged","_processingTabKey","_shouldWrapFocus","shouldResetActiveElementWhenTabFromZone","_isContentEditableElement","_shouldInputLoseFocus","_getHorizontalDistanceFromCenter","isForward","activeRect","leftAlignment","_focusAlignment","targetRectTop","activeRectBottom","targetRectBottom","activeRectTop","getOuterZones","_windowElement","defaultActiveElement","_lastIndexPath","preventFocusRestoration","_defaultFocusElement","_evaluateFocusBeforeRender","ownerZoneElement","_getOwnerZone","ownerZone","focusLast","forceAlignment","onBeforeFocus","shouldReceiveFocus","setFocusAlignment","isParked","_isParked","_parkedTabIndex","previousActiveElement","preventDefaultWhenHandled","_moveFocus","getDistanceFromCenter","useDefaultWrap","candidateDistance","candidateElement","changedFocus","isBidirectional","elementDistance","targetTop","distance","shouldWrap","targetBottom","pagesize","isHorizontal","isVertical","isReadonly","shouldInputLoseFocusOnArrowKey"],"mappings":"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CA,UACA,eACA,WACA,aACA,UACA,YACA,0BACA,uBACA,gBACA,SACA,SACA,YACA,cACA,eACA,WACA,WACA,cACA,aACA,YACA,gBACA,c,+7CCvCA,MACA,aAEA,GADA,SACA,UACA,cACA,SACA,aAGA,GAFA,aACA,UACA,aACA,gBACA,eACA,eAEA,cACA,cACA,iBACA,mBAKA,wBAKA,cACA,MAEA,KACA,YAGA,yCACA,KACA,SAGA,YAKA,gBACA,oBAEA,cACA,kCAKA,cACA,sBAEA,cACA,YAEA,gBACA,4BAEA,cAEA,4BAEA,cAEA,4BAYA,cACA,QAWA,OAVA,UAMA,GADA,GAHA,0BACA,2BAEA,aACA,sBACA,gBAGA,EAQA,gBACA,KACA,eACA,eACA,iBAWA,gBACA,SAKA,OAJA,mBAEA,kBAUA,cACA,SACA,aACA,aACA,2BAEA,IADA,UACA,gBACA,cACA,SAEA,IAEA,KAEA,SAxBA,OAEA,EA+DA,gBACA,kBACA,cAOA,cACA,yCAMA,SACA,YACA,2CAKA,cACA,0CAOA,cAEA,0BAOA,cAEA,0BAOA,cAEA,2BAeA,cACA,SACA,2BAEA,kBACA,GAMA,0BAtQA,iBAuQA,iBAEA,iCAPA,KAUA,SAKA,cACA,KAEA,yBAMA,YACA,wBACA,kBACA,gBAIA,OAHA,aACA,SAEA,GAEA,0BACA,yBACA,sBACA,uBACA,yBACA,yBACA,+DACA,KAtBA,IAiCA,kBACA,aACA,IACA,oBACA,UACA,2BAFA,MAQA,WAYA,kBACA,MAEA,aACA,sBAEA,aACA,OACA,IACA,mDACA,oBACA,SAIA,WAIA,SAUA,kBACA,MACA,MAEA,SACA,kBAEA,aACA,OACA,eACA,IACA,oBACA,SACA,uBAIA,WAIA,SAUA,kBACA,MACA,MAEA,YACA,qBAEA,aACA,IAEA,qBACA,mBAEA,CACA,qBACA,IAEA,SAEA,UACA,SACA,iBAEA,IAGA,SAKA,cAKA,OAJA,IAEA,8DAEA,EAEA,wDACA,GACA,WACA,iBACA,UACA,iBACA,gBACA,uBACA,eAQA,cACA,eAKA,GAJA,4BACA,6CAGA,KACA,YAEA,SACA,eAC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CA,OACA,UACA,QACA,QACA,IACA,OACA,MACA,MACA,MACA,aACA,OACA,KACA,SACA,SACA,UACA,OACA,OACA,MACA,WACA,OACA,WACA,KACA,MACA,UACA,MACA,SACA,MACA,KACA,KACA,KACA,QACA,WACA,aACA,SACA,SACA,OACA,KACA,KACA,KACA,KACA,KACA,KACA,OACA,SACA,SACA,KACA,OACA,IACA,SACA,MACA,QACA,MACA,MACA,SACA,QACA,SACA,KACA,OACA,OACA,MACA,OACA,UACA,OACA,WACA,OACA,QACA,MACA,WACA,SACA,KACA,WACA,SACA,SACA,IACA,QACA,UACA,MACA,WACA,IACA,KACA,KACA,OACA,IACA,OACA,SACA,UACA,SACA,QACA,SACA,OACA,SACA,QACA,MACA,UACA,MACA,QACA,QACA,KACA,WACA,QACA,KACA,QACA,OACA,QACA,KACA,QACA,IACA,KACA,MACA,QACA,MAGA,SACA,WACA,OACA,UACA,gBACA,IACA,QACA,OACA,iBACA,SACA,OACA,OACA,UACA,UACA,WACA,iBACA,OACA,OACA,MACA,OACA,WACA,SCnIUmN,SAAQ,YAClBm4C,GAAOO,GAAcP,GAAOO,OELTC,sBAOPn6B,EAAgBuxB,QACrBvxB,MAAQA,OACRuxB,YAAcA,OACdG,SAAWN,EAAcpxB,GAI9B6vB,EAAWM,WAAW1vD,KAAK8wD,YAAc,uBAG3C6I,sBACEC,EACAvI,EACA5kB,EACA6kB,OAGMpF,EAAMoF,EADIE,GAAQxxD,KAAKu/B,MAAO8xB,EAAkB5kB,EAAY6kB,GACvClvC,KAAK,IAAK,IAC/B3Q,EAAKzR,KAAK8wD,YAAc8I,EAG9BntB,EAAW6e,YAAY75C,EAAIA,EAAIy6C,MAGjC2N,sBAAaD,EAAkBntB,GAC7BA,EAAWwjB,WAAWjwD,KAAK8wD,YAAc8I,MAG3CE,sBACEF,EACAvI,EACA5kB,EACA6kB,GAEIsI,EAAW,GAAGxK,EAAWM,WAAW1vD,KAAK8wD,YAAc8I,QAGtDC,aAAaD,EAAUntB,QACvBktB,aAAaC,EAAUvI,EAAkB5kB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lF,MAAM6zH,EAA+B,CACnCz8H,SAAU1B,EAAM0B,SAChBoE,SAAU,SAACxK,GAAA,2BAAWH,EAAA,iCAAAA,EAAA,yBAAS2K,EAASxK,KAAWH,KAE/C28G,EAAQomB,EAAYhqH,IAAIm5D,GAAcA,EAAW8wD,IAEvD,OADAr4H,EAAW05C,KAA4Bs4D,EAA5Bt4D,CAAmCx/C,EAAM8F,UAC7C,IACF9F,EACH8F,aCvDS,SAAR,EAA0BxK,GAC/B,OAAO+2D,EAAc/2D,IAAW,SAAUA,GAA8D,kBAA5CA,EAAmCmI,O,6BCHjG,kxBAAM26H,EAAc,W,IAAC,sDAGnB,IAFA,IAAM/zH,EAAiC,GAEpB,MAAA61C,EAAA,eAGjB,IAHG,IAAM92B,EAAI,KACPhiB,EAAOhM,MAAM8T,QAAQka,GAAQA,EAAO/sB,OAAO+K,KAAKgiB,GAEpC,MAAAhiB,EAAA,eAAM,CAAnB,IAAMrJ,EAAG,KACZsM,EAAOtM,GAAO,EAIlB,OAAOsM,GAQIg0H,EAAoBD,EAAY,CAC3C,SACA,QACA,UACA,mBACA,qBACA,sBACA,UACA,iBACA,SACA,gBACA,WACA,UACA,WACA,SACA,UACA,YACA,mBACA,aACA,UACA,UACA,YACA,mBACA,mBACA,YACA,cACA,UACA,eACA,mBACA,cACA,UACA,SACA,YACA,aACA,eACA,WACA,YACA,YACA,YACA,eACA,iBACA,YACA,UACA,iBACA,gBACA,gBACA,SACA,YACA,cACA,aACA,cACA,aACA,cACA,SACA,cACA,qBACA,eACA,eACA,cACA,aACA,cACA,YACA,mBACA,WACA,gBACA,aACA,cACA,eACA,WACA,UACA,kBACA,gBACA,iBACA,iBACA,gBACA,eACA,gBACA,cACA,sBACA,yBAQWE,EAAwBF,EAAY,CAC/C,YACA,WACA,YACA,kBACA,MACA,YACA,SACA,UACA,KACA,OACA,MACA,OACA,QACA,WACA,QACA,YACA,aACA,SAQWG,EAAwBH,EAAYE,EAAuBD,GAO3DG,EAAkBJ,EAAYG,EAAuB,CAChE,SAQWE,EAAkBL,EAAYG,EAAuB,CAChE,SACA,OACA,QACA,UACA,MA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,EACA,SAGA,UAGA,YAMA,SAASC,KACT,YACA,qBAEA,KAKA,cACA,KACA,MAEA,eACA,SAcA,eAIA,OAHA,iBACA,wBAEA,EAEA,iBACA,WACA,YACA,IACA,oBAEA,SACA,KACA,kFAGA,YAEA,mBACA,WACA,YACA,IAEA,OADA,gBACA,EAEA,SACA,KACA,mFAGA,SAEA,iBACA,WACA,YACA,IAEA,OADA,iBACA,EAEA,SACA,KACA,0FAGA,SAEA,eAIA,OAHA,kBACA,2BAEA,GAWA,iBACA,WACA,YACA,IACA,oBAEA,SACA,MACA,oFAGA,YAEA,mBACA,WACA,YACA,IAEA,OADA,gBACA,EAEA,SACA,MACA,qFAGA,SAEA,iBACA,WACA,YACA,IAEA,OADA,iBACA,EAEA,SACA,MACA,4FAGA,SCrJA,IC1BI,GCOJ,6DDJA,mBACA,eACA,UAEA,iBAGA,IAFA,QACA,SACA,UACA,IACA,2BAEA,IAEA,SAEA,iBACA,MAUA,OATA,IAEA,6BAEA,aACA,qBACA,qFAGA,KAEA,mBAEA,MASA,YAVA,gBAEA,IACA,WACA,kBACA,sBACA,8BACA,gGAGA,KAEA,iBACA,uBAEA,iBACA,MAOA,OANA,GACA,iBACA,uBACA,4FAGA,KAEA,iBACA,MACA,MAEA,WACA,iBACA,uBACA,gGAGA,YAEA,iBACA,MACA,SACA,6BACA,uBAEA,IACA,mBAEA,SACA,0DAGA,eACA,YACA,UAEA,IAEA,SAEA,iBACA,MACA,SACA,6BACA,YACA,UAEA,IAEA,SAEA,iBACA,qCAEA,qBACA,MAQA,OAPA,IACA,kBACA,WACA,mBACA,sFAGA,KAEA,eACA,aACA,6BAKA,IACA,oBACA,kBACA,yBACA,uBACA,oBACA,yBACA,6BAEA,+BACA,kBACA,qBACA,kBACA,sBACA,wBACA,yBACA,2BACA,iBACA,oBACA,gBACA,YEjIA,yBACA,MACA,WDFA,iBCGA,gBACA,gBACA,iBACA,yDAEA,SACA,SACA,gBACA,QAEA,cACA,OACA,6BACA,SACA,YACA,UACA,UACA,aACA,aAEA,GAOA,OALA,gBACA,6BACA,eAGA,G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,WACA,WACA,YACA,YACA,YACA,YACA,YAGA,sBACA,6EAQA,QACA,sBACA,aACA,gBACA,sBACA,mBACA,eACA,aACA,WACA,YACA,YACA,aACA,aACA,cACA,gBACA,eACA,eACA,WACA,cACA,YACA,cACA,YACA,uBACA,mBACA,YACA,OACA,kBACA,QArFA,WACA,WACA,wFAoFA,QA9EA,WACA,UACA,gBACA,QAEA,eA0EA,SACA,YHjEA,YACA,WACA,gBAjCgB,YAiChB,UAEA,GG8DA,YACA,cH1BA,YACA,EAIA,MAHA,MGyBA,eACA,kBAmBA,iBACA,cACA,oBAwBA,OAvBA,YACA,MACA,KAGA,4CACA,aACA,YACA,KACA,4BACA,kBAIA,uBACA,WAEA,gBACA,UAEA,iBACA,WAEA,EAMA,cACA,cCzJA,IAGIC,GAAmB,mCAGvB,SAASx6K,GAASpwM,EAAO0V,EAAKm1W,GAC9B,kCACA,uBAIA,SAASC,GAAa9qX,EAAO0V,EAAKq1W,GAClC,eACA,EAEA,EAEA,SAASC,GAAahrX,IACtB,wBACA,KAGA,IADA,qBACA,UACA,QAEA,SAUA,qBACA,MACA,aACA,aArCsB,MAqCtB,EAtCsB,KAuCtB,oBACA,iCACA,8BACA,EAkDA,eACA,mBASA,eACA,eApGsB,oBAyItB,eACA,MAGA,iBACA,UACA,QAEA,eApJsB,KA0JtB,MALA,qBAEA,EAvJsB,MA0JtB,mGAvJsB,oBAuJtB,2CAEA,SChKA,eACA,WACA,sBACA,mBAEA,CACA,UACA,mBACA,0BACA,mBAGA,SCZA,oBACA,2CACA,oCACA,8CACA,iCACA,oCACA,kCACA,mCACA,yCACA,sDCRI,GAAJ,QACIirX,GAAiB,EAGjBC,GAAqB,CAAC,KAAM,KAAM,KAAM,KAAM,MAClD,eACA,SACA,KACA,OAgBA,OAfA,iBAIA,OAEA,8BAJA,kBAMA,WAEA,GACA,WACA,KAEA,KACA,EAEA,eACA,MACA,QAIA,OAHA,IACA,UAEA,EAUA,iBACA,SACA,sBAEA,EAGA,iBACA,kBACA,MACA,6DACA,yDACA,uBAGA,SAEA,iBACA,WACA,MACA,8DACA,2DACA,WACA,gBACA,+BACA,YAEA,uBAGA,2BAFA,MAKA,MAIA,SCvEA,IAAIC,GAAqB,CACzB,gDACA,uDACA,qDAEA,eACA,2CAuBA,IAMA,IACA,IACA,IACA,IAKA,IAnCA,IAgDA,IACA,8BAQA,4CACA,sCACA,SAEA,yCACA,4DACA,iDACA,SAIA,+BAMA,IALA,mDAGA,kCAEA,uCACA,SAEA,IAEA,EAFA,gCACA,OAEA,2BACA,iGACA,mBAEA,GACA,SAGA,4CACA,oBACA,SAEA,wBAEA,GADA,8FACA,QACA,SAKA,sBAKA,kCACA,MACA,6CACA,iCACA,WAOA,yCACA,KAEA,IADA,mBACA,oBACA,sBACA,0BACA,eAmCA,cAEA,UACA,uBACA,uCAEA,OACA,SAGA,qBAEA,iBACA,WAIA,OAHA,+CACA,OAEA,EAeA,iBACA,YACA,OACA,mBACA,eAEA,oBACA,gBACA,UAEA,sBACA,kBAEA,uBACA,mBACA,QACA,cAGA,qBACA,mBAEA,sBACA,kBACA,QACA,eAGA,yBACA,qBAEA,0BACA,sBACA,iBC5OA,IAAI,GAAJ,WAIA,yCACA,kBACA,qBACA,KACA,MACA,OACA,aACA,WACA,UACA,OACA,SACA,OACA,aACA,eACA,OACA,QACA,QACA,MACA,MACA,SACA,iBACA,mBACA,cACA,sBAEA,KACA,MADA,KAEA,KAFA,KAGA,cAHA,KAIA,UAJA,KAKA,gBALA,KAMA,aACA,MD0GA,kBACA,cACA,kBACA,YAEA,GADA,UACA,EACA,qBACA,2CACA,oBACA,SAEA,aACA,yBAGA,eAKA,IACA,IAEA,OACA,SACA,OACA,QCpIA,UAPA,KAQA,qBARA,KASA,sBACA,IAVA,KAWA,iBAXA,KAWA,yBAXA,KAaA,kBAbA,KAcA,mBAdA,KAeA,qBAIA,OAFA,oEACA,kCACA,EAhDA,GCGIC,GAAsB,KACtB,GAAJ,WACA,kBACA,IAQA,EARA,OACA,MACA,sBACA,SACA,SACA,4BACA,kBAGA,sCAOA,OALA,oBACA,MAEA,QAEA,MAGA,mBACA,SAEA,iDACA,MAEA,cAEA,MAEA,qBACA,KAEA,0BAE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AEA,iBAEA,OADA,eAGA,IACA,iBAEA,SACA,YACA,IAEA,eACA,IACA,QACA,kBAGA,UAEC,QAGD,cA0DA,SAASiiX,GAAU5nX,EAAQ7D,EAAM0rX,EAAgBC,GACjD,WASA,OARA,IACA,iBACA,IAEA,IACA,8BAGA,EA0BA,SAASC,GAAsB9nS,EAAOo0B,EAAUzvF,EAAI+gR,GACpD,oBACA,OASA,MAjGA,SAA6BqiF,GAE7B,kBACA,MACA,OAEA,YACA,MACA,UACA,SACA,SACA,WACA,QACA,GACA,KACA,WAEA,gBAIA,OAHA,kBACA,aAEA,EAEA,iBACA,WACA,KACA,WAVA,iBAaA,cAEA,UACA,KACA,IACA,mBAEA,SAKA,MAHA,QACA,cAEA,EAKA,OADA,cACA,QAmDA,CAPA,GACA,IACA,IACA,IACA,OAIA,aACA,OAEA,OAEA,OACA,OACA,cAGA,cACA,sBACA,YAEA,OADA,cACA,OAQA,OAFA,MACA,YACA,EAUA,uBAEA,QADA,cACA,SACA,kBACA,MACA,WACA,kBACA,oBAIA,YAiCA,uBACA,YACA,qBACA,KACA,sBAGA,YCzOA,cACA,SAiBA,OACA,IAjBA,YACA,GACA,WAgBA,IAbA,cACA,2BACA,IACA,OAEA,SACA,uEAGA,OCbA,IAMI,GAAJ,WACA,aACA,IAEA,EACA,EACA,EACA,EACA,EANA,OA4HA,mBACA,gBACA,QACA,OACA,4BAIA,EAFA,eAEA,yBAGA,eAGA,SAEA,kBACA,GAEA,gCAEA,OAEA,mBAEA,QACA,iBAEA,iBAGA,SACA,cAEA,aACA,KACA,YACA,OACA,OACA,KACA,OA7JA,IACA,6BACA,yBACA,SACA,MAEA,qBACA,MAGA,SACA,0BAIA,MACA,KACA,+CACA,UACA,WAEA,QACA,GAwBA,OAPA,6BAKA,KAJA,IAMA,EAvBA,aACA,OACA,KACA,WACA,QACA,KAEA,2BACA,WAEA,OACA,UAEA,OAYA,qBAGA,aACA,0BAIA,MACA,KACA,+CACA,MACA,UAcA,OANA,qCAIA,KAHA,IAKA,EAZA,aACA,IACA,KACA,mCAWA,uBACA,IACA,eACA,cAGA,YAIA,8DAGA,mBACA,oBAEA,kBACA,UAEA,6BACA,KAMA,mBACA,KAEA,qBACA,EAEA,UAEA,wBAGA,gBAGA,e,qBA7HA,GCTIC,GAAe,KAenB,IAAI,GAAJ,WACA,oBACA,gCACA,IAGA,EAHA,OACA,KACA,KAKA,cACA,GACA,WA6BA,cACA,UA3BA,aACA,IACA,yBACA,OACA,iBACA,KACA,KACA,2BACA,IAKA,KAHA,aAMA,YACA,IAEA,GAEA,QAEA,MAKA,GApCA,IACA,YAqCA,8BACA,aACA,wCACA,UACA,wBAEA,YACA,wCACA,UACA,sBAKA,qCAOA,OANA,4BACA,WA3EA,WACA,YACA,IACA,+CAEA,SACA,MAGA,UAmEA,IAEA,6LAIA,IACA,EAWA,EAZA,KAGA,2CACA,MACA,kBACA,6BACA,WAMA,gBACA,0BACA,eAEA,cACA,WAEA,IACA,MAEA,cAGA,4BACA,MACA,MAIA,IACA,MAGA,cACA,SACA,IACA,qCACA,KACA,OACA,OACA,OAEA,sCACA,cAOA,IACA,wBACA,6BAEA,IACA,uCACA,QAVA,aACA,kCAaA,qBAhCA,MAmCA,KACA,IACA,WArCA,IAsCA,8BAIA,SACA,4FAEA,aAGA,yBACA,MACA,gBACA,OACA,iBAEA,KACA,2BACA,MACA,U,qBA5JA,GCdIC,GAAgB,CAAC,YAAa,gBAAiB,cAAe,wBAClE,SAASC,KACT,UACA,qBAMA,SAASC,KACT,UACA,eACA,UACA,uBACA,qBACA,mBACA,kBACA,kBACA,iBACA,gBACA,eAEA,SAASC,KACT,YACA,WAEA,KAEA,SAASC,KACT,OAxBA,WACA,UACA,wEAsBA,GACA,sCAEA,KAKA,SAASC,KAET,IADA,SACA,2BACA,kBAEA,cAEA,cACA,KACA,KACA,4BACA,yCAGA,KAEA,SAIA,uBACA,iBA3D2B,KA4D3B,SAIA,SAKA,IAAI,GAAJ,WACA,cACA,WACA,gCACA,+CACA,aAqBA,WACA,OACA,IACA,IACA,IACA,IACA,KACA,QACA,GACA,aAMA,4DACA,qCACA,oCACA,qCAGA,uCACA,qCACA,qCACA,oCACA,oCAEA,MACA,oGAEA,mCAGA,0DAGA,0FAGA,eAEA,4BACA,sBACA,mBACA,wBACA,qBACA,cAfA,gIAmBA,0BACA,kCACA,kCACA,8B,qBA/EA,GClEI,GAAJ,WAMA,gBAEA,gCACA,uCACA,IAEA,MAeA,cACA,WACA,IACA,EAkCA,WACA,WACA,IACA,SAEA,oBAEA,OAhEA,qBAiEA,UAEA,gBACA,qCAEA,KAtEA,uBA0EA,SACA,2CACA,OAEA,SAvDA,GAcA,cACA,IACA,SACA,WAxCA,sBAyCA,4FAEA,kBACA,mBACA,KA7CA,oBA6CA,IAGA,SAEA,oCA1BA,MAEA,SACA,qCACA,OAEA,SAzBA,MAEA,GACA,wCAGA,SACA,gFAqEA,gDACA,wE,qBAzFA,GAuGI,GACJ,cACA,sCACA,gBACA,gBC7GI,GACJ,cACA,WACA,KACA,oBACA,2BACA,mGAEA,gBAEA,yBACA,WACA,YACA,iFAEA,CACA,IACA,QADA,UAEA,2BAEA,KACA,cCdA,SAASC,GAAexoX,EAAQyoX,GAChC,uBACA,mBAeA,SAASC,GAAoB/sX,EAAO+qX,GAKpC,OAJA,QAFsB,MAItB,EAJsB,KAMtB,EAEA,SAASiC,GAAkBx9V,GAqB3B,OApBA,IACA,MAGA,+CACA,sDACA,yDACA,qDACA,yDACA,wFACA,mFACA,0BAEA,iDACA,iEACA,uDACA,8BACA,+BACA,6DACA,8EACA,EAEA,SAASy9V,GAAoBC,GAG7B,sCACA,uBACA,MjCEA,SACA,YiCIA,IAAI,GAAJ,YAEA,aACA,IAIA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EAjBA,qBACA,ahC/CA,+BgCgDA,eACA,uBAmBA,IAEA,EACA,EACA,EA2jBA,OA1jBA,+BACA,iBAshBA,sBACA,qCAEA,aACA,OACA,OACA,OACA,OACA,OACA,OACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KAKA,EAEA,YACA,gBACA,OACA,OAhjBA,IACA,0BACA,mBAEA,iCACA,oBAEA,2BACA,IACA,sDACA,gBAEA,SACA,6FAOA,8BACA,IACA,WAEA,SACA,kGASA,iCACA,IACA,qBAEA,SACA,iGASA,2BACA,IACA,sDACA,gBAEA,SACA,6FAcA,4BACA,IACA,sDACA,gBAEA,SACA,+FASA,8BACA,IACA,YACA,2FACA,iCACA,uCAGA,SACA,oGASA,uCACA,UACA,IACA,gDAEA,wDACA,gBAEA,GAOA,kDACA,wDACA,iBAOA,yCACA,YACA,IACA,sCACA,uCAEA,SACA,+GASA,6BACA,IACA,wBACA,UACA,iBAEA,WAEA,SACA,oGAWA,kCACA,IACA,wBACA,UACA,iBAEA,wBACA,UACA,gBAEA,gBACA,iCACA,8BAGA,SACA,oGASA,wCAGA,iCAEA,mBAGA,6B9B5RA,iB8B8RA,QACA,IACA,KADA,wFACA,6CACA,iBAWA,+BACA,2BACA,qBAEA,IACA,6BAEA,SACA,qGAQA,uBACA,iBACA,WACA,IACA,OACA,UACA,IACA,WAGA,8BAEA,gFACA,GACA,WACA,MACA,2BACA,+BACA,mBAEA,uDAyJA,cACA,sDACA,gBA1JA,iOAGA,aACA,cAEA,mDAGA,SACA,qCACA,qFACA,iDAGA,sCACA,UAEA,yCAGA,IACA,MAEA,WAEA,+BACA,uBAGA,gBACA,kCAEA,sBACA,iBACA,oBAEA,IACA,wDACA,IACA,2BACA,gCAEA,QAEA,MAmDA,YACA,wBACA,eAEA,QACA,+BACA,OACA,6BAEA,6BACA,WACA,QAIA,SAlEA,IACA,MACA,iBACA,gDACA,6CAyEA,gBACA,6BACA,eACA,qBACA,UACA,MACA,MACA,eACA,GAjFA,WAgEA,cACA,iEAkBA,WACA,UACA,iDAcA,2BAbA,YACA,gCACA,iBACA,KACA,2BACA,uCACA,SAKA,YAGA,MAlCA,GAjEA,OACA,oCACA,OACA,oBACA,IACA,MAEA,IACA,MAEA,wBACA,qDAGA,uCACA,2BAEA,iBACA,MAEA,wBACA,OACA,OACA,MACA,aACA,gBAEA,6BAEA,MA6EA,YACA,UACA,SACA,+BACA,iCAEA,kBACA,KACA,0BACA,gBACA,uDAGA,IACA,OA+FA,iBACA,oDACA,IAEA,+BACA,KACA,kBACA,gBACA,kCA9lBA,SAAoBhsX,GACpB,gBACA,eACA,+CACA,aAEA,KAGA,aAqlBA,iCAGA,IACA,KACA,sCA1GA,QA5FA,IA8FA,YACA,UACA,QAKA,GAJA,iCAIA,WACA,MrCnXA,IACA,QAEA,EArJiB,WqCsgBjB,2EAyBA,kBACA,uBAgCA,IACA,oBACA,KACA,eACA,IACA,wBACA,iCAGA,IACA,uBACA,KACA,eACA,IACA,2BACA,iCAGA,IACA,mBAlDA,WACA,GACA,+BAgDA,GACA,yBA9CA,WASA,GAPA,GACA,IACA,iBAGA,gBAEA,GACA,MArCA,WACA,WACA,6BACA,0BAEA,OAEA,uBhCvgBA,+BgCwgBA,MACA,uBACA,IACA,yBAIA,SAsBA,GACA,MACA,mBACA,kBACA,gBACA,2BAGA,6BAEA,uBAEA,qDACA,iCAuBA,GACA,MA9EA,WAvGA,KAGA,SAGA,MADA,qBACA,KAGA,4BACA,mBAEA,uBACA,KA8NA,yDACA,oEACA,8DACA,4DAEA,EAiJA,OAxuBA,iBAsuBA,mBACA,sBACA,EAzuBA,CA0uBE,IC/yBF,SAASisX,GAAYC,GACrB,kBACA,mBACA,YAGA,IAAIC,GAAiBF,GAAY,eAC7BG,GAAYH,GAAY,UACxBI,GAAcJ,GAAY,YAC1BK,GAAeL,GAAY,aAC3BM,GAAaN,GAAY,WACzBO,GAAUP,GAAY,QACtBQ,GAAWR,GAAY,SACvBS,GAAcT,GAAY,YAC1B,GAAJ,YAEA,aACA,0BAEA,OAJA,iBAIA,EALA,CAME,OAAF,IAAE,CAAF,CACA,6BACA,6BACA,+BACA,kCACA,6BACA,kBACA,kBACA,8BACA,0BACA,wBACA,sCACA,4BACA,oCACA,4BACA,kBACA,gCACA,sCACA,8BACA,8CACA,sBACA,oCACA,0BACA,4BACA,0CACA,oBACA,8BACA,gCACA,wBACA,qBACA,yBACA,iCACA,6BACA,+CACA,mDACA,mBACA,6BACA,yBACA,wDACA,8BACA,0BACA,gBACA,kCACA,gCACA,+DACA,mEACA,qBACA,qBACA,2BACA,qCACA,mCACA,6BACA,yCACA,gCACA,oCACA,wCACA,8BACA,+BChFA,IACA,eACA,mBACA,iBACA,aACA,aACA,WACA,iBACA,cAEA,UCLI,GAIJ,gBACA,WACA,KACA,MADA,KAEA,eAFA,KAGA,QAHA,KAIA,cjCDA,gBiCHA,KAKA,OALA,KAMA,2BANA,KAOA,gBACA,OACA,OACA,OACA,sBACA,+BAEA,OACA,SCzBIU,GAIJ,cAIA,qBACA,WACA,YAEA,gBACA,iBCLA,SAASC,GAAYzpX,EAAQulB,EAAO5pB,GACpC,8BAsFA,SAAS+tX,GAA6B50W,EAAMsqG,EAAYuqQ,GACxD,gBACA,6BACA,eACA,OAEA,eACA,OAEA,MACA,0BAKA,SAASC,GAA2CxqQ,EAAYyqQ,GAChE,gBACA,6BACA,aAKA,SAASC,GAAgBjI,EAAQkI,EAAcC,EAAel1W,GAC9D,oBACA,iCACA,4BACA,0CAEA,cACA,8BAMA,OALA,+BAhHA,SAAiC+sW,EAAQv2V,EAAMs+B,GAE/C,wBACA,kBACA,oBACA,SACA,IACA,iCACA,iCAEA,YACA,GACA,2BAEA,eACA,IACA,kCACA,kCACA,uBACA,6BACA,kCAEA,gBACA,MACA,sCACA,2CACA,iCACA,wBACA,4BACA,gCACA,wBACA,2BAtCc,OAsCd,MACA,8BACA,iCAxCc,OAwCd,MAEA,WACA,GACA,yBAGA,cACA,IACA,sCACA,oCACA,gCAmBA,IAFA,SAEA,uBACA,WACA,6BACA,UAEA,cAGA,6BACA,UAEA,uCACA,2BAEA,oEAEA,sBAmCA,QAEA,kBACA,eAEA,SAASqgU,GAAoBpI,EAAQmI,GACrC,yBACA,mDAGA,QACA,kBAoBA,mBACA,QACA,SACA,KACA,2BACA,6BAEA,0BACA,4BACA,+BAGA,YACA,mBAIA,eACA,gBACA,QAEA,sBACA,kBACA,wBACA,iCCvLA,SAASE,GAAelqX,EAAQ2lX,GAChC,kBCEA,ICLI,GDKA,GAAJ,WACA,gBACA,SACA,KACA,qBACA,UAEA,sBAEA,OADA,KAGA,gCACA,sBACA,gCAEA,IACA,kEACA,MAIA,WAEA,mBACA,iBAEA,kBAEA,IADA,eACA,mBACA,eAKA,OAHA,4BACA,MAEA,GAEA,mBACA,KACA,MAEA,sBACA,mBAEA,4BACA,qBACA,0BACA,aACA,oBAGA,S,qBAlDA,GAiFI,GAAJ,YAEA,gBACA,6BASA,OARA,+BACA,yBACA,WAEA,6BAIA,E,OAXA,iB,cADA,CAqBE,IAKE,GAAJ,YAEA,gBACA,6BACA,KACA,sEA6FA,OA5FA,+BACA,sBACA,uBACA,sBA4CA,gBACA,SAMA,OALA,2BACA,uCACA,aAGA,EAEA,cACA,QACA,IACA,sDACA,aACA,MACA,mBAKA,GAJA,iBAEA,gBAEA,kBACA,UAIA,SACA,kEAEA,SAEA,gBACA,QACA,IACA,sDACA,wBACA,SAEA,SAGA,0BACA,sFAnFA,6BACA,4BAEA,wBACA,kBACA,sBACA,6BAEA,IACA,uDACA,OAIA,aACA,2BAEA,mBACA,UACA,yBACA,wBACA,MAEA,yBACA,sCACA,2BACA,0CACA,eACA,2BAGA,+DACA,4BAEA,yBAGA,wBACA,2BACA,SACA,2BA+CA,EAkBA,OAnHA,iBA+GA,yBACA,kCAEA,sBACA,EApHA,CAqHE,IElOE,GAAJ,WACA,cACA,gCAcA,gBACA,IACA,KACA,MAEA,OADA,gFACA,EAEA,0BAEA,OADA,6EACA,EAEA,sBAEA,sBACA,uBAEA,oBACA,uBAEA,cACA,uBAEA,kBACA,aAEA,CACA,iGACA,IAEA,iBACA,IAEA,SAEA,sFAGA,SAoCA,OAlCA,0BACA,4CACA,+BACA,2BACA,MACA,gBACA,iCACA,aAIA,OACA,kBAgBA,KAZA,EAHA,EACA,EAEA,UAIA,UAKA,QAIA,cArBA,6HAyBA,uBACA,EAEA,gBACA,MACA,KACA,kBAGA,CACA,KACA,4BACA,IACA,IADA,KACA,aACA,gBAPA,+GAWA,SAEA,kBACA,MAyCA,OAxCA,IACA,KACA,6BACA,qBACA,MACA,iBAEA,SACA,YAEA,WAIA,kBAHA,sDAMA,gBACA,cACA,sBAEA,YACA,gBAEA,CACA,oBACA,SACA,WAGA,YAKA,gDACA,wBAIA,EAhJA,wBACA,kBACA,IACA,wBAEA,SAEA,0F,qBAbA,GCEI,GAAJ,WACA,cAyBA,OAvBA,yCAEA,YADA,sCAGA,oCACA,UACA,SAEA,cAZuB,GAavB,cAIA,IADA,WACA,mBACA,2BAGA,KAEA,oBAGA,2BACA,EA1BA,GCAI,GACJ,WACA,IACA,SACA,SAFA,KAGA,6BAkBA,OAhBA,yBACA,qCAEA,iCACA,kCAEA,8BACA,0CAEA,0DACA,iDAIA,oBCpBI,GAAJ,WACA,gBAEA,8BACA,kBACA,cACA,wLACA,OAEA,kBACA,mCAkBA,OAbA,oCACA,sBAEA,sCAGA,0BAIA,oDAGA,EA5BA,GJMA,SAAS,GAAT,GACA,IACA,sBAEA,UAGA,YAEA,SAASwE,KACT,MAIA,UACA,gFAEA,2CACA,2CACA,gDACA,wCACA,kDACA,sCACA,uCACA,2CACA,kCACA,4CACA,6CACA,kCACA,0BACA,4CACA,6BACA,gCACA,0CACA,qCACA,EAEA,IAAIC,KAAuB,GAA3B,IACA,gBACA,gBHwOA,gBACA,QACA,yBACA,2BACA,4BACA,8BACA,eACA,gBACA,QAEA,wBACA,wBACA,kCGnPA,gBHkKA,gBAGA,MAFA,QAGA,iBACA,gBACA,2BACA,mCAIA,qBACA,+BACA,yBACA,kBANA,+BACA,uBAOA,IAEA,EAFA,eAGA,gCACA,uBAEA,cACA,SACA,QACA,mBACA,qBAcA,GAZA,wBACA,mBAGA,0BACA,uBAGA,4BACA,uCAGA,2BACA,mBACA,6BACA,UAGA,eACA,gBACA,QAEA,4BACA,wBACA,kCGrNA,gBHuNA,gBACA,QACA,iBACA,SACA,eACA,mBACA,qBACA,eACA,gBACA,QAEA,iCACA,wBACA,kCGnOA,gBHqIA,gBACA,QAEA,kCACA,4BACA,eACA,gBACA,QAEA,iBACA,kCACA,wBACA,kCGhJA,gBHkJA,gBACA,QACA,iBACA,mBACA,qBACA,eACA,gBACA,QAEA,wEACA,wBACA,kCG5JA,gBHuFA,gBACA,QACA,kCACA,4BACA,eACA,gBACA,QAEA,iBACA,kBAEA,OADA,yCACA,KAEA,iCnChJA,emCgJA,anChJA,emCgJA,MACA,uGACA,wBACA,kCGtGA,IACI,GAAJ,YAEA,aACA,IAQA,EACA,EAEA,EACA,EACA,EACA,EACA,EAfA,qBACA,gBACA,axClCA,2BwCsCA,qBAUA,IACA,EACA,EACA,EACA,EACA,EALA,IAgzBA,OA1yBA,+BAmVA,wBACA,WAOA,GANA,WACA,SACA,UACA,mBAGA,uBAGA,iCACA,KAEA,YADA,iBAIA,yCACA,KACA,sCACA,+CAGA,qBAGA,qBAEA,uCAEA,IADA,IAEA,gKAMA,KACA,SACA,IACA,QAEA,sCACA,yBAGA,kBAIA,IACA,mBAIA,cAEA,kBAKA,wBACA,oCACA,mDACA,GACA,IAKA,gBACA,EAEA,QAIA,OAGA,cACA,UACA,YACA,gCACA,6BAGA,kDAEA,oBAMA,OALA,IACA,gBAEA,0BAEA,EASA,gBACA,gCAEA,MAGA,IADA,SACA,oBACA,WACA,QAEA,UAGA,aACA,WACA,gGAUA,gBACA,yBACA,gCACA,IACA,SAEA,UAIA,mBACA,sDAEA,OACA,gCAEA,wCACA,8BAEA,6EACA,mDAEA,iCACA,UACA,wBAEA,gBACA,mBAEA,IADA,eACA,mBACA,eAEA,KA7jBqC,KA8jBrC,QAEA,IAEA,MAIA,WACA,4FASA,gBACA,QAOA,gBACA,MACA,gCACA,6BACA,0CACA,cACA,WACA,KACA,KAEA,OACA,sBAEA,wCACA,oBAEA,WACA,cACA,UACA,SAEA,OAEA,GACA,IACA,eAGA,KACA,MAEA,uBACA,IAEA,SAEA,UAIA,wBACA,IACA,2BACA,IACA,KACA,KAEA,IACA,KAMA,KAIA,2BACA,+CAJA,+BAQA,mBACA,IACA,KACA,KAEA,IACA,KACA,4BAIA,SACA,GACA,mBAGA,QAEA,KACA,0BAOA,cACA,IACA,cACA,mBACA,yDACA,kDACA,UAIA,SACA,iEACA,aAGA,YAMA,gBAEA,QADA,aACA,iBAGA,gBACA,eACA,IACA,gCACA,WACA,cAUA,YACA,IACA,EACA,QACA,EAHA,OAKA,CACA,0BAEA,6BARA,IAQA,EACA,KACA,4BAVA,IAaA,0BAEA,IAvBA,IACA,KA2BA,aACA,WACA,sCACA,iDACA,yBACA,OACA,2BACA,IAGA,aACA,gBACA,OACA,OAMA,cAEA,sBAGA,SAGA,SACA,SACA,SACA,SACA,SACA,QAVA,8BAYA,gBACA,SACA,yDAEA,EAYA,gBACA,gBACA,MACA,qBACA,8CACA,mDAGA,6CACA,sDAIA,OAHA,6HAEA,UAGA,6DACA,iBAEA,yBACA,UACA,gBAEA,gBACA,SACA,qCAEA,EAmCA,aACA,eACA,eACA,cACA,eACA,KACA,OACA,IACA,OACA,KACA,KACA,OACA,OACA,IACA,IACA,OACA,OACA,OAtyBA,IACA,mBACA,IACA,MAEA,oBACA,IACA,KACA,OAEA,wDACA,0BAEA,MAGA,wBAEA,QADA,eACA,GAEA,IACA,IACA,2BAEA,SACA,yGAIA,2BACA,MACA,kGASA,eARA,IACA,sBAEA,SACA,6IAQA,0BACA,QAEA,+BACA,mBACA,oDAEA,sBACA,qBACA,eACA,mBACA,IACA,OACA,EACA,eACA,IACA,kBACA,oDACA,EFzIA,YACA,MACA,MACA,MACA,KACA,KACA,8BACA,IAIA,GAHA,SACA,MAEA,GAEA,gBACA,YACA,OACA,MAIA,GAEA,4BACA,YAIA,SAEA,KAEA,cACA,SAOA,OANA,IACA,uBAEA,oBAGA,EAEA,aACA,KAEA,aACA,KA0BA,aACA,SAzBA,WACA,SAOA,OANA,EACA,IAEA,4BACA,YAEA,GAkBA,mCACA,SAjBA,WACA,UACA,SAEA,GADA,QACA,GAEA,gBACA,yBACA,QAGA,OAOA,EE8DA,IAEA,WACA,6BACA,8BACA,2BAKA,OAJA,uBAEA,OAEA,MAGA,+BACA,iBACA,oBAEA,uDACA,yCACA,YACA,0BACA,0BACA,yDAwrBA,YAEA,IADA,0FAEA,SAIA,OADA,WADA,kEAEA,2BA9rBA,KACA,gEAEA,8GACA,yDACA,iCAGA,sBACA,QACA,oBACA,KAEA,sBACA,MAEA,SACA,KAGA,QACA,+BAEA,KAEA,eAGA,GAFA,gCAEA,EAEA,IAEA,GAEA,oBACA,GAEA,oBACA,EAGA,GAGA,iCAEA,IA4MA,EA5MA,GADA,mBACA,UACA,IAEA,sCAEA,OAGA,MAEA,YADA,uCAIA,2BAEA,YADA,gEAQA,GALA,aAEA,yBAGA,UAEA,YADA,uCAIA,GAiLA,EAjLA,GAkLA,yBA/KA,YADA,0FAIA,kCAEA,iDAGA,+CACA,+BACA,MAEA,YADA,qDAGA,SAkBA,GAhBA,+BACA,8CACA,IACA,eACA,KACA,gDAGA,SAGA,kIAGA,sBAEA,EACA,OAGA,qBAEA,YACA,SACA,iDACA,kBACA,2BAIA,aAEA,IAEA,SACA,0HAGA,oBAKA,uCACA,kBACA,sDAQA,8BAEA,QADA,eACA,EACA,IACA,gBAEA,sCAgBA,cAhBA,CACA,gBACA,oBA+gBA,cACA,MATA,WAEA,uBACA,6BAGA,mCAGA,GACA,0BACA,IACA,yBAEA,SACA,0FArhBA,SAEA,EACA,cAGA,gBAIA,SAKA,IAEA,SAEA,YACA,SACA,qHAKA,4BACA,kBACA,WACA,KAKA,2BACA,4DACA,mCAKA,kCAKA,IAJA,SACA,KAGA,MADA,mBACA,gBACA,WACA,yBACA,gBACA,UAIA,UAGA,YACA,gCAEA,YACA,yFAEA,aACA,KACA,kDACA,+BACA,wEAMA,2BACA,mCAKA,2BACA,YACA,4BAIA,CACA,WACA,sDACA,kCACA,yBAGA,wBAVA,IACA,sBAueA,EAgGA,OAl6BA,iBAo0BA,sCACA,MAQA,OAHA,EAJA,2BAIA,EAHA,yCAKA,oBACA,QAqFA,EAn6BA,CAo6BE,IKv9BF,eACA,MACA,SAEA,cANwB,KAOxB,+BACA,cAPiC,KAQjC,iBACA,yBACA,OACA,OAEA,WACA,IACA,4BAEA,qBAEA,mCACA,6EACA,uCACA,qDAIA,yC3CnBA,uC2CqBA,SAEA,I,WChCA,WACA,cAEA,8BAEA,MAOA,YARA,cAGA,EADA,kFACA,wBAGA,KAEA,oBAZA,GCKA,SAASC,GAAiBC,EAAc5zI,EAAO0wI,GAC/C,8BACA,wBACA,wBAEA,2BACA,OARA,KASA,YAR+B,kCAQ/B,WAGA,QACA,qBACA,wBCXA,IAAI,GAAJ,YAEA,aACA,IAIA,EACA,EALA,qBAqDA,aACA,IACA,KAEA,OAxDA,0CACA,eAIA,IACA,+BACA,sCACA,OACA,OACA,MAaA,OAXA,UACA,CACA,kBACA,6BACA,eAEA,OADA,aACA,QAOA,qBAGA,IAFA,SACA,SACA,aACA,WACA,KACA,IACA,6BACA,KACA,OAGA,SAGA,+HAIA,GACA,aAGA,mBACA,QAOA,E,OA3DA,iB,cADA,CA2EE,IC7DEmD,GAAoB,CAExB,uBAOA,SAASC,GAAmBpD,EAAMqD,GAClC,iBAsCA,SAASC,GAAiBC,EAAWt5T,GACrC,SAOA,OANA,2BACA,SAEA,OADA,MACA,KAGA,EAYA,IAAI,GAAJ,WACA,aAEA,MACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EAIA,IACA,KACA,gCA2IA,cACA,YACA,gCACA,CACA,2CACA,SACA,OAGA,0BACA,iBACA,IACA,MACA,GAGA,SA8GA,aACA,KAEA,wBACA,SACA,gBACA,WACA,SACA,KACA,OACA,OACA,OACA,OACA,OACA,OACA,KACA,OACA,OACA,OACA,KACA,OACA,sBACA,OACA,OAEA,aACA,kBAEA,OADA,UACA,EAGA,cAEA,MA9XA,SAA6BwwT,EAAQ+I,EAAiBC,GACtD,MAEA,KAGA,KAwBA,OAtBA,4BAEA,sCACA,YA5ByB,0CA8BzB,aACA,SACA,OACA,kBAKA,OAJA,kEAQA,SAEA,cAGA,GACA,QAEA,OACA,EA4VA,QF3ZA,IE2ZA,GACA,SACA,OAEA,YAGA,GADA,cFpOA,gBACA,SAKA,GAJA,GAEA,+CAEA,GAEA,SACA,2BACA,OAvMA,KAwMA,aAGA,UAEA,SEoNA,SACA,GAKA,wBACA,OACA,aAGA,KADA,qBAEA,YAEA,oBAGA,EFhaA,cACA,aACA,8BAEA,oBACA,mBACA,aAEA,MADA,IAEA,OACA,QAGA,KACA,2BAEA,sBACA,cACA,YACA,UAEA,UAGA,OAIA,IAgDA,SA6FA,MA5FA,CACA,qCACA,SAjGA,IAkGA,6BACA,KACA,2BACA,mBACA,0BAIA,yBACA,UAEA,+BACA,wBACA,aACA,WACA,cAGA,OApEA,cACA,UACA,UAOA,OALA,mBACA,aACA,WACA,cAEA,GA4DA,iBACA,qBACA,uBACA,wBAEA,OAEA,kBACA,qBACA,uBACA,0BAEA,OAEA,SAxEA,cACA,UACA,SACA,YAQA,OANA,mBACA,aACA,WACA,UACA,SAEA,GA8DA,WA5DA,YACA,WAmBA,OAlBA,aACA,2BAEA,uBACA,iCACA,cAGA,OAFA,KAEA,KAGA,GAEA,YAKA,GAyCA,wBAEA,QACA,KACA,OAEA,aACA,IACA,WACA,IACA,gBACA,QAEA,QACA,QAkCA,OA3CA,SAYA,qBACA,uBACA,WACA,IACA,SAEA,qBACA,KACA,MACA,IACA,IAIA,WACA,yBACA,OACA,MACA,GAGA,YAMA,WACA,KACA,QAEA,GAEA,sBACA,ME0PA,MAGA,UACA,UAEA,cAEA,cAEA,GADA,IACA,GAEA,uCACA,GA+JA,YACA,gBACA,UACA,wCACA,UAlKA,IAGA,cACA,MACA,OACA,OA4CA,OA3CA,iCACA,4BAEA,OADA,KACA,MAGA,OAEA,mBAEA,KACA,GACA,WAEA,iBACA,eAEA,uBACA,YACA,wBAEA,uBACA,WACA,cACA,UACA,OACA,WAEA,OACA,GACA,mBACA,GAEA,GACA,UACA,YAGA,YA3BA,EA8BA,GAEA,EAEA,aACA,OAEA,uBAEA,sBACA,UAEA,gBAEA,SAEA,kBACA,gBACA,IACA,KADA,UACA,GACA,mBACA,SAEA,KACA,6BACA,QAIA,KAHA,aAMA,IAEA,SACA,IACA,6BACA,SACA,2BACA,QAIA,KAHA,aAMA,aAEA,KAEA,QACA,OAEA,eAGA,MAGA,aACA,yBACA,4BACA,oBACA,2BACA,MACA,UACA,qCACA,2BACA,6BACA,sBACA,4BACA,GACA,eAIA,oBACA,SACA,oBAEA,UACA,GAoCA,cACA,aACA,GAEA,YACA,KAGA,eA1fA,IACA,4BAEA,yBACA,GACA,YA1G2B,6BA6G3B,UACA,6DAEA,QACA,SACA,qBACA,kDAEA,IAEA,yBA8bA,WACA,oCACA,WAEA,UACA,QAEA,gBACA,ErDhjBA,YACA,OACA,KACA,yBACA,kBAGA,SqDyiBA,IACA,WAtcA,GAycA,WACA,oCACA,OAEA,QAEA,GAEA,sBAhdA,GAodA,sBACA,sBAldA,IACA,UAEA,6BAEA,MACA,qDACA,wBACA,QACA,eACA,oCAEA,KACA,kBAEA,qCACA,SAMA,OALA,GACA,2BACA,mBAGA,gBAEA,oBAEA,sBAEA,qCAEA,oBACA,YAEA,YAIA,WAGA,SACA,kBAOA,OANA,IAEA,EA3GA,WACA,MACA,2BACA,mBACA,qBACA,qBACA,uBACA,uBACA,IAmGA,GAEA,0BAEA,GAQA,mBACA,GACA,WAOA,mBACA,GACA,WAGA,0BAIA,OAHA,IACA,gBAEA,GAEA,2BACA,KAEA,kBACA,WACA,8BACA,0BACA,iBACA,iBAIA,a3BbA,I2BeA,yBACA,KAEA,sBACA,eAEA,0BACA,gBACA,QACA,KACA,2BACA,iBAIA,+BAOA,OANA,UACA,KACA,IACA,iBACA,QAEA,OAoBA,kBACA,KACA,IACA,iBACA,IACA,MAIA,kEACA,yBACA,WACA,cACA,GAEA,YA9Q2B,0BAiR3B,GAEA,YApR2B,6BAsR3B,WACA,YAEA,OACA,mBACA,GACA,YAKA,cACA,kBACA,KAEA,WAEA,SAEA,UAZA,mBACA,IACA,UACA,GAWA,IACA,YACA,OAGA,SACA,8BACA,MAGA,OAFA,cACA,EAtTyB,0CAyTzB,gBACA,SAGA,OAFA,cACA,4CAGA,OACA,WAEA,cACA,UACA,YAEA,KACA,SAEA,MACA,iBAKA,IAJA,CACA,SACA,cAEA,YACA,GAKA,YACA,aACA,KALA,iBAUA,KAGA,0BACA,UAEA,SACA,0BAIA,OAHA,IACA,E1BvQA,YACA,SACA,OACA,mBACA,eAEA,oBACA,gBACA,UAEA,sBACA,eAEA,uBACA,mBACA,QACA,WAGA,qBACA,eAEA,sBACA,kBACA,QACA,WAGA,yBACA,eAEA,0BACA,sBACA,W0BsOA,IAEA,GAEA,0BACA,WAGA,6D,qBApSA,GCtFA,SAASC,GAAcnpX,EAAWxF,EAAM4uX,EAAS5pX,GACjD,2BACA,WACA,KACA,6CAGA,IACA,KAEA,cAUA,IAAI,GAAJ,WACA,cACA,kBACA,gCACA,gCACA,mBACA,qBAMA,mBAEA,IADA,4BACA,MACA,sBACA,yBAOA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7oG,GAC/D,SAWA,OAVA,6BACA,KACA,wBACA,MAGA,SACA,gGAGA,EAuBA,IACA,gBACA,0BACA,+BACA,0BACA,kCAEIs9W,GAA4B,CAChC,uHAEA,SAAS,KA2BT,MA1BA,CACA,wBACA,uBACA,wBACA,8CACA,6BACA,yBACA,oCACA,gCACA,wCACA,aACA,yBACA,+BACA,gCACA,6BACA,0BACA,4BACA,uBACA,eACA,gBACA,YACA,oBAEA,yBACA,oBAIA,SAASC,KACT,WAIA,OAHA,2BACA,eAEA,EAEA,IAAI,GAAJ,YAEA,aACA,IAGA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EA1BA,qBA6zBA,OA5zBA,0BACA,eAyBA,+BACA,iBAsIA,aACA,UACA,KACA,KACA,kCACA,qBACA,KACA,KACA,IACA,OACA,KACA,KACA,OACA,KACA,IACA,KACA,KACA,KACA,KACA,OACA,OACA,OACA,IACA,KACA,KACA,iBACA,gBAuCA,cACA,SASA,OARA,qBACA,yCACA,qCAEA,OADA,MACA,KAIA,EAsFA,kBACA,E5BtdA,gBACA,SACA,kBAEA,K4BkdA,SA6EA,kBACA,SACA,yDAYA,GAVA,2BACA,QACA,iBACA,iBAEA,IACA,gBAIA,EACA,SAEA,gBACA,YAkCA,QAjCA,sBACA,MAEA,QAEA,oBAGA,eAIA,iBAEA,qCACA,eALA,0BAQA,cACA,MAEA,EAEA,OACA,QAKA,OACA,MAGA,EAKA,kBACA,SACA,IAKA,OAJA,iBACA,2BAGA,GAEA,EAEA,aACA,WAQA,OAPA,6BACA,2BAGA,yBACA,wBAEA,EAsCA,cACA,IACA,qBACA,sBAEA,sBAGA,UAGA,YAqFA,cACA,IACA,gCACA,YAEA,QADA,0BACA,CACA,iCACA,oCAIA,SACA,YACA,+BACA,kBAIA,gBACA,uBACA,UACA,2BACA,KACA,iBACA,UACA,4BACA,kBACA,mBAKA,oBACA,iBACA,MACA,8BACA,wBACA,eACA,KACA,aACA,IACA,SACA,IAGA,IAFA,WACA,iBACA,uBACA,WACA,MACA,4BACA,sBACA,sCACA,UAGA,0CAEA,eACA,MAEA,+BAEA,SAKA,GACA,cACA,OACA,aACA,8BAEA,qBAEA,iBAEA,KAMA,gBAGA,SACA,MA/CA,GAuFA,cACA,SACA,IACA,iBACA,eACA,4BAGA,iCAIA,SACA,4EAEA,SAEA,0BAIA,kBACA,YACA,+BACA,IACA,kBAEA,kEATA,IAWA,4BACA,WACA,EArgCgB,QAqgChB,cACA,IACA,EADA,iCAEA,IACA,IACA,sCAGA,SACA,aAEA,WACA,QACA,0DAEA,wBACA,4BAGA,WACA,kCACA,iDAGA,YACA,iBAGA,cACA,gBACA,IACA,2BACA,mCAEA,SACA,YACA,6BACA,kBAKA,wBACA,SACA,SACA,IAQA,SAPA,CACA,OACA,aACA,gBACA,yBACA,0BAEA,gBAEA,GACA,qCA5xBA,IACA,+BACA,oBACA,sBACA,qDA6JA,YACA,wBAEA,OACA,WACA,6BACA,sCAEA,+BAUA,GATA,gCACA,8BACA,2BACA,wBACA,iCACA,uFACA,sBACA,eACA,eACA,GACA,oCAEA,EADA,WAzd0B,YA0d1B,4BA1d0B,YA6d1B,MAGA,0BACA,2BAxLA,KAhQA,SAAiCT,EAAqBJ,GACtD,MACA,KACA,QACA,0BACA,oBACA,sBACA,sBACA,qBAEA,UAIA,GAHA,SACA,MAEA,EAEA,IACA,yBACA,GACA,MACA,QACA,QACA,IAEA,cAEA,+BACA,2BAEA,SAEA,KACA,kFACA,iBAIA,SAggBA,cAEA,yBACA,KACA,sBACA,OACA,aACA,WACA,oBACA,mCAEA,EA8IA,kBACA,MACA,MACA,0BACA,oBACA,wCACA,cACA,0FAQA,OAPA,kCACA,WACA,eACA,iCACA,oBACA,UACA,oBACA,EA7JA,WA+JA,cACA,6EACA,IACA,6BA6BA,YACA,cAGA,gBACA,YACA,iCACA,IACA,kBAEA,kEARA,4BACA,kBASA,iCACA,IACA,6CACA,OACA,wBACA,eACA,wBACA,oBACA,kBACA,qBAEA,MACA,gCACA,MAGA,sCACA,KACA,2BACA,oBACA,YACA,eACA,OACA,WAGA,eAGA,YAEA,SACA,IACA,IACA,8BAGA,SACA,aAEA,WACA,QACA,0DAEA,wBACA,4BAGA,QACA,kCACA,8CAGA,QAGA,IACA,IACA,GADA,qBACA,MACA,OACA,WAGA,eAIA,YACA,aA5GA,IAGA,SACA,WAEA,wCACA,mDACA,+BACA,iBAIA,GA7KA,SAIA,+BAGA,yBACA,KACA,kBACA,OACA,aACA,UACA,yCACA,WACA,uBACA,+CACA,oCAIA,uBAGA,0BACA,KACA,gBACA,OACA,aACA,UACA,0CACA,YACA,qCAIA,gCAGA,qCACA,KACA,oBACA,OACA,aACA,UACA,YAviB2B,SAAUD,EAAK3vX,EAAMR,GAChD,MACA,2BACA,GACA,QACA,IACA,OAkiBA,QACA,SACA,IACA,0BAMA,2CAEA,MA9JA,WACA,MA1eA,WACA,oBACA,UACA,wBACA,6BACA,qBACA,KAEA,QAkeA,GACA,MACA,OAEA,oBACA,aACA,KAuDA,GAOA,OAzjBgB,QAyjBhB,CACA,KACA,oBAEA,iBAjEA,OA5fgB,QA4fhB,CACA,KAEA,oBACA,MACA,WACA,eAEA,QACA,cACA,EA4bA,cACA,MACA,MACA,0BACA,oBACA,+EACA,kCACA,uBACA,oBACA,qBACA,wBAGA,eAEA,YACA,YACA,WAEA,0BACA,YAEA,WACA,SACA,MACA,kEACA,uBACA,OACA,WAMA,OAFA,mBACA,EAn+BgB,QAm+BhB,GACA,EA9dA,MACA,yCACA,OACA,WAEA,WAGA,kBACA,OACA,mBACA,IAEA,gCAkBA,OAjBA,qCACA,OACA,8BACA,eACA,yBAEA,SACA,SACA,iCACA,OACA,WAGA,cAEA,YAEA,KACA,mBAEA,MADA,6CACA,QAMA,qDACA,EAzhBA,WACA,YACA,IACA,+CAEA,SACA,MAGA,UAghBA,KACA,MAiBA,IAGA,oBA5RA,GAwLA,WACA,uBrDjdA,+BqDkdA,IACA,oBA1LA,KAGA,yBACA,KAEA,oCACA,sBAEA,8CAEA,8BAEA,GAxHA,SAAqCgG,EAAWylX,EAAMgE,EAAUU,EAAKvuW,EAAOykJ,GAE5E,GADA,SACA,GACA,OACA,OACA,MACA,QACA,OACA,kBACA,gBACA,wBACA,sBACA,qBAEA,qBACA,oBACA,kBACA,0BACA,qBAqGA,mBACA,WACA,2DACA,IACA,MAKA,kEACA,MACA,iCACA,eACA,IACA,2BAUA,IAPA,2BAEA,qBACA,IACA,kCAGA,GACA,mBACA,iBACA,KAEA,mCACA,eACA,IACA,2BAGA,YAEA,SAEA,MACA,2DACA,KACA,eAQA,wFARA,CACA,6BACA,4BACA,IACA,2BAOA,MAYA,IAZA,2BAEA,YAOA,qFANA,kCACA,IACA,mCAOA,GACA,eAIA,GAHA,iBACA,KAEA,YAQA,wFARA,CACA,+BACA,4BACA,IACA,6BAQA,WAIA,8CACA,gBAIA,8BACA,8BACA,oDACA,WAEA,2BACA,sBAEA,wDACA,qBAEA,OACA,wMAEA,GAEA,oCACA,oBAEA,uCACA,uBA6pBA,EAkDA,OAj3BA,iBAo0BA,2CACA,uBA6BA,iDACA,aAGA,oCASA,sBACA,oBACA,EAl3BA,CAm3BA,IC9nCI6qN,GACJ,aCDIC,GAIJ,WAEA,kBAGA,4BCPI,GAIJ,YACA,gGCPIC,GACJ,aCIIC,GACJ,aAKI,GAAJ,WACA,gBACA,IACA,EACA,EACA,OACA,QACA,cALA,MAKA,YACA,IACA,MAEA,qCACA,4DAEA,kCACA,qDAEA,WAEA,qEACA,gCACA,oEAwEA,gBACA,SAEA,eACA,eACA,IACA,eACA,WACA,eACA,oEAEA,eACA,gEAEA,OAEA,UACA,oBACA,gBACA,MAGA,SACA,kHAGA,SAaA,gBACA,wBACA,gBACA,eACA,uBAGA,8BACA,aACA,IAEA,EADA,IACA,MAGA,MAEA,2CAIA,0DACA,IAnIA,mBA7BsB,aA6BtB,GACA,0BACA,oBAGA,oBACA,KACA,qBACA,OACA,GAqCA,cACA,SACA,aACA,2BACA,aAEA,CAKA,gBACA,IACA,UAGA,iBArDA,KAEA,qCACA,YACA,kCACA,sBACA,kBAGA,GADA,GADA,aACA,MACA,IAGA,EA8EA,YACA,mBACA,qCACA,oDACA,qCACA,wBAEA,MACA,yFApFA,MAIA,gCACA,QASA,oBACA,IA+FA,MA/FA,qBA+FA,EA9FA,KA8FA,EA9FA,kBA8FA,EA9FA,cAkGA,gCAkBA,OAHA,wBACA,mBACA,2BACA,EAjLA,GCTI,GACJ,kBACA,KACA,gBADA,KAEA,WACA,WACA,mBACA,cALA,KAOA,cCPA,SAASC,GAAmB18W,GAI5B,8BACA,GACA,uBAKA,IAAI,GAAJ,WACA,gBAIA,kBAIA,wBACA,IAEA,EAFA,OACA,QAEA,gCACA,WACA,+FACA,wCAEA,iBACA,MACA,eACA,iCACA,aACA,UAEA,0BAGA,aACA,YAGA,QAFA,mCACA,4BAGA,cACA,4BAIA,OAHA,2BACA,eACA,MAGA,cAKA,8BADA,SAGA,UACA,SAEA,EADA,QACA,yBAGA,4EACA,QAIA,6CAGA,kCACA,MAEA,OADA,gBACA,yBACA,OACA,wBAEA,mBACA,kBAGA,8CAIA,QAHA,eAEA,iBAEA,yKACA,OAFA,CAMA,oBACA,wBACA,IACA,cACA,2DAEA,GAGA,2CAOA,2CACA,uBACA,iBACA,6BAEA,qBAEA,6BAGA,EADA,EADA,QAEA,6BAiCA,OAHA,sBACA,2BACA,mCACA,EA9IA,GCAA,SAAS28W,GAAaltX,EAAQ7D,GAC9B,8CACA,KAGA,ICVIgxX,GDUA,GAAJ,WACA,kBACA,WACA,WACA,mCACA,0CACA,gCAGA,GAFA,qBACA,qBACA,KACA,6BACA,gBACA,kBACA,mBACA,IAEA,EAFA,SACA,SAEA,IACA,iBACA,gBACA,eAEA,iCACA,iBAEA,0BACA,gBACA,OAEA,wBACA,WAEA,CAEA,8CACA,iCAEA,UAEA,oCACA,wEAEA,2CACA,kCAEA,wCACA,oBACA,MAEA,oBAvDc,QAwDd,+CACA,iDAGA,mCACA,eACA,MAEA,gCAjEa,OAiEb,cACA,kCACA,6BACA,mCACA,iDAGA,qCACA,iBACA,MACA,oBA1Ec,QA2Ed,0DACA,+DACA,oDACA,mDACA,iDAIA,qCACA,iBACA,GACA,0BAtFc,OAsFd,6BAGA,sCACA,uBACA,MACA,gCA7Fa,OA6Fb,8CACA,2CACA,qCACA,+CAGA,gCACA,YACA,GACA,0BAtGa,OAsGb,cAGA,iCACA,aACA,MACA,oBA3Gc,OA2Gd,IAEA,gDAEA,gCAhHa,OAgHb,YACA,6BACA,gDAGA,wBACA,YACA,IACA,mBACA,iBACA,gBACA,eACA,gBACA,uB,qBAtHA,GEkIA,GA9IA,YAEA,aACA,IAGA,EACA,EACA,EALA,qBAqGA,OApGA,eACA,a/DaA,8B+DTA,+BAkDA,aACA,OACA,OACA,OApDA,IACA,+BACA,sBAoDA,YACA,mBACA,SACA,eACA,uBACA,QACA,6BACA,gDAEA,iBACA,oBAEA,oBACA,wBACA,iCACA,iBACA,2BACA,kB/D9DA,4B+D+DA,+BAGA,eAxEA,KAMA,iCACA,uBAGA,CACA,kBAEA,0BACA,wCAEA,oBACA,WAEA,0DACA,0BAGA,aAKA,GAJA,uBACA,oBAiDA,cAEA,yBACA,wBACA,gBACA,2BACA,+BACA,0BACA,6BACA,wBACA,kCACA,uBACA,4BACA,4BACA,eA7DA,MACA,gBACA,eACA,yClE6PA,gBACA,ekE7PA,kBAEA,qBAGA,4BACA,qBACA,mBACA,oBACA,GACA,kBAGA,QA+CA,EAoCA,OA3IA,iBAyGA,8BACA,MAqBA,OAlBA,GACA,kCAEA,4BAJA,MAKA,2CACA,4CACA,+CACA,iCARA,MASA,iCATA,MAUA,oDACA,0BAXA,MAYA,iCAZA,MAaA,0BACA,oCACA,iCACA,iCACA,6BAjBA,MAkBA,GAaA,EA5IA,CA6IE,IDxIEC,GAAiC,CvgDLrC,UugDMA,iFAuDI,IAdJ,KAcA,WACA,cACA,IAEA,EACA,EACA,EACA,EACA,EACA,EACA,EARA,OASA,gCAiPA,cACA,OACA,OACA,OACA,OACA,OAnPA,2BACA,oBACA,uBACA,mBACA,uBACA,6BACA,sBACA,kB5D9EA,Y4D8EA,cACA,gEAEA,qBACA,SACA,SACA,SACA,SACA,SACA,sFACA,uBACA,sFAEA,YACA,WAiNA,+BACA,oGAhNA,yBACA,cACA,mDACA,qDACA,2BACA,mBAGA,SAEA,iCACA,cACA,qDACA,2BACA,gBACA,kBAGA,kBAKA,kCA+C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","file":"static/js/2.b1a4045e.chunk.js","sourcesContent":["'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react.production.min.js');\n} else {\n module.exports = require('./cjs/react.development.js');\n}\n","import '@redux-saga/symbols';\nimport '@babel/runtime/helpers/esm/extends';\nimport { channel, stringableFunc, func, notUndef } from '@redux-saga/is';\nimport { q as makeIterator, L as take, M as fork, N as cancel, O as call, Q as delay, U as actionChannel, V as sliding, W as race, c as check } from './io-22ea0cf9.js';\nexport { U as actionChannel, $ as all, a0 as apply, O as call, N as cancel, a5 as cancelled, a1 as cps, Q as delay, X as effectTypes, a6 as flush, M as fork, a7 as getContext, a3 as join, Z as put, _ as putResolve, W as race, a4 as select, a8 as setContext, a2 as spawn, L as take, Y as takeMaybe } from './io-22ea0cf9.js';\nimport '@redux-saga/delay-p';\n\nvar done = function done(value) {\n return {\n done: true,\n value: value\n };\n};\n\nvar qEnd = {};\nfunction safeName(patternOrChannel) {\n if (channel(patternOrChannel)) {\n return 'channel';\n }\n\n if (stringableFunc(patternOrChannel)) {\n return String(patternOrChannel);\n }\n\n if (func(patternOrChannel)) {\n return patternOrChannel.name;\n }\n\n return String(patternOrChannel);\n}\nfunction fsmIterator(fsm, startState, name) {\n var stateUpdater,\n errorState,\n effect,\n nextState = startState;\n\n function next(arg, error) {\n if (nextState === qEnd) {\n return done(arg);\n }\n\n if (error && !errorState) {\n nextState = qEnd;\n throw error;\n } else {\n stateUpdater && stateUpdater(arg);\n var currentState = error ? fsm[errorState](error) : fsm[nextState]();\n nextState = currentState.nextState;\n effect = currentState.effect;\n stateUpdater = currentState.stateUpdater;\n errorState = currentState.errorState;\n return nextState === qEnd ? done(arg) : effect;\n }\n }\n\n return makeIterator(next, function (error) {\n return next(null, error);\n }, name);\n}\n\nfunction takeEvery(patternOrChannel, worker) {\n for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n args[_key - 2] = arguments[_key];\n }\n\n var yTake = {\n done: false,\n value: take(patternOrChannel)\n };\n\n var yFork = function yFork(ac) {\n return {\n done: false,\n value: fork.apply(void 0, [worker].concat(args, [ac]))\n };\n };\n\n var action,\n setAction = function setAction(ac) {\n return action = ac;\n };\n\n return fsmIterator({\n q1: function q1() {\n return {\n nextState: 'q2',\n effect: yTake,\n stateUpdater: setAction\n };\n },\n q2: function q2() {\n return {\n nextState: 'q1',\n effect: yFork(action)\n };\n }\n }, 'q1', \"takeEvery(\" + safeName(patternOrChannel) + \", \" + worker.name + \")\");\n}\n\nfunction takeLatest(patternOrChannel, worker) {\n for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n args[_key - 2] = arguments[_key];\n }\n\n var yTake = {\n done: false,\n value: take(patternOrChannel)\n };\n\n var yFork = function yFork(ac) {\n return {\n done: false,\n value: fork.apply(void 0, [worker].concat(args, [ac]))\n };\n };\n\n var yCancel = function yCancel(task) {\n return {\n done: false,\n value: cancel(task)\n };\n };\n\n var task, action;\n\n var setTask = function setTask(t) {\n return task = t;\n };\n\n var setAction = function setAction(ac) {\n return action = ac;\n };\n\n return fsmIterator({\n q1: function q1() {\n return {\n nextState: 'q2',\n effect: yTake,\n stateUpdater: setAction\n };\n },\n q2: function q2() {\n return task ? {\n nextState: 'q3',\n effect: yCancel(task)\n } : {\n nextState: 'q1',\n effect: yFork(action),\n stateUpdater: setTask\n };\n },\n q3: function q3() {\n return {\n nextState: 'q1',\n effect: yFork(action),\n stateUpdater: setTask\n };\n }\n }, 'q1', \"takeLatest(\" + safeName(patternOrChannel) + \", \" + worker.name + \")\");\n}\n\nfunction takeLeading(patternOrChannel, worker) {\n for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n args[_key - 2] = arguments[_key];\n }\n\n var yTake = {\n done: false,\n value: take(patternOrChannel)\n };\n\n var yCall = function yCall(ac) {\n return {\n done: false,\n value: call.apply(void 0, [worker].concat(args, [ac]))\n };\n };\n\n var action;\n\n var setAction = function setAction(ac) {\n return action = ac;\n };\n\n return fsmIterator({\n q1: function q1() {\n return {\n nextState: 'q2',\n effect: yTake,\n stateUpdater: setAction\n };\n },\n q2: function q2() {\n return {\n nextState: 'q1',\n effect: yCall(action)\n };\n }\n }, 'q1', \"takeLeading(\" + safeName(patternOrChannel) + \", \" + worker.name + \")\");\n}\n\nfunction throttle(delayLength, patternOrChannel, worker) {\n for (var _len = arguments.length, args = new Array(_len > 3 ? _len - 3 : 0), _key = 3; _key < _len; _key++) {\n args[_key - 3] = arguments[_key];\n }\n\n var action, channel$1;\n\n var yTake = function yTake() {\n return {\n done: false,\n value: take(channel$1)\n };\n };\n\n var yFork = function yFork(ac) {\n return {\n done: false,\n value: fork.apply(void 0, [worker].concat(args, [ac]))\n };\n };\n\n var yDelay = {\n done: false,\n value: delay(delayLength)\n };\n\n var setAction = function setAction(ac) {\n return action = ac;\n };\n\n var setChannel = function setChannel(ch) {\n return channel$1 = ch;\n };\n\n var needsChannel = !channel(patternOrChannel);\n\n if (!needsChannel) {\n setChannel(patternOrChannel);\n }\n\n return fsmIterator({\n q1: function q1() {\n var yActionChannel = {\n done: false,\n value: actionChannel(patternOrChannel, sliding(1))\n };\n return {\n nextState: 'q2',\n effect: yActionChannel,\n stateUpdater: setChannel\n };\n },\n q2: function q2() {\n return {\n nextState: 'q3',\n effect: yTake(),\n stateUpdater: setAction\n };\n },\n q3: function q3() {\n return {\n nextState: 'q4',\n effect: yFork(action)\n };\n },\n q4: function q4() {\n return {\n nextState: 'q2',\n effect: yDelay\n };\n }\n }, needsChannel ? 'q1' : 'q2', \"throttle(\" + safeName(patternOrChannel) + \", \" + worker.name + \")\");\n}\n\nfunction retry(maxTries, delayLength, fn) {\n var counter = maxTries;\n\n for (var _len = arguments.length, args = new Array(_len > 3 ? _len - 3 : 0), _key = 3; _key < _len; _key++) {\n args[_key - 3] = arguments[_key];\n }\n\n var yCall = {\n done: false,\n value: call.apply(void 0, [fn].concat(args))\n };\n var yDelay = {\n done: false,\n value: delay(delayLength)\n };\n return fsmIterator({\n q1: function q1() {\n return {\n nextState: 'q2',\n effect: yCall,\n errorState: 'q10'\n };\n },\n q2: function q2() {\n return {\n nextState: qEnd\n };\n },\n q10: function q10(error) {\n counter -= 1;\n\n if (counter <= 0) {\n throw error;\n }\n\n return {\n nextState: 'q1',\n effect: yDelay\n };\n }\n }, 'q1', \"retry(\" + fn.name + \")\");\n}\n\nfunction debounceHelper(delayLength, patternOrChannel, worker) {\n for (var _len = arguments.length, args = new Array(_len > 3 ? _len - 3 : 0), _key = 3; _key < _len; _key++) {\n args[_key - 3] = arguments[_key];\n }\n\n var action, raceOutput;\n var yTake = {\n done: false,\n value: take(patternOrChannel)\n };\n var yRace = {\n done: false,\n value: race({\n action: take(patternOrChannel),\n debounce: delay(delayLength)\n })\n };\n\n var yFork = function yFork(ac) {\n return {\n done: false,\n value: fork.apply(void 0, [worker].concat(args, [ac]))\n };\n };\n\n var yNoop = function yNoop(value) {\n return {\n done: false,\n value: value\n };\n };\n\n var setAction = function setAction(ac) {\n return action = ac;\n };\n\n var setRaceOutput = function setRaceOutput(ro) {\n return raceOutput = ro;\n };\n\n return fsmIterator({\n q1: function q1() {\n return {\n nextState: 'q2',\n effect: yTake,\n stateUpdater: setAction\n };\n },\n q2: function q2() {\n return {\n nextState: 'q3',\n effect: yRace,\n stateUpdater: setRaceOutput\n };\n },\n q3: function q3() {\n return raceOutput.debounce ? {\n nextState: 'q1',\n effect: yFork(action)\n } : {\n nextState: 'q2',\n effect: yNoop(raceOutput.action),\n stateUpdater: setAction\n };\n }\n }, 'q1', \"debounce(\" + safeName(patternOrChannel) + \", \" + worker.name + \")\");\n}\n\nvar validateTakeEffect = function validateTakeEffect(fn, patternOrChannel, worker) {\n check(patternOrChannel, notUndef, fn.name + \" requires a pattern or channel\");\n check(worker, notUndef, fn.name + \" requires a saga parameter\");\n};\n\nfunction takeEvery$1(patternOrChannel, worker) {\n if (process.env.NODE_ENV !== 'production') {\n validateTakeEffect(takeEvery$1, patternOrChannel, worker);\n }\n\n for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n args[_key - 2] = arguments[_key];\n }\n\n return fork.apply(void 0, [takeEvery, patternOrChannel, worker].concat(args));\n}\nfunction takeLatest$1(patternOrChannel, worker) {\n if (process.env.NODE_ENV !== 'production') {\n validateTakeEffect(takeLatest$1, patternOrChannel, worker);\n }\n\n for (var _len2 = arguments.length, args = new Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n args[_key2 - 2] = arguments[_key2];\n }\n\n return fork.apply(void 0, [takeLatest, patternOrChannel, worker].concat(args));\n}\nfunction takeLeading$1(patternOrChannel, worker) {\n if (process.env.NODE_ENV !== 'production') {\n validateTakeEffect(takeLeading$1, patternOrChannel, worker);\n }\n\n for (var _len3 = arguments.length, args = new Array(_len3 > 2 ? _len3 - 2 : 0), _key3 = 2; _key3 < _len3; _key3++) {\n args[_key3 - 2] = arguments[_key3];\n }\n\n return fork.apply(void 0, [takeLeading, patternOrChannel, worker].concat(args));\n}\nfunction throttle$1(ms, patternOrChannel, worker) {\n if (process.env.NODE_ENV !== 'production') {\n check(patternOrChannel, notUndef, \"throttle requires a pattern or channel\");\n check(worker, notUndef, 'throttle requires a saga parameter');\n }\n\n for (var _len4 = arguments.length, args = new Array(_len4 > 3 ? _len4 - 3 : 0), _key4 = 3; _key4 < _len4; _key4++) {\n args[_key4 - 3] = arguments[_key4];\n }\n\n return fork.apply(void 0, [throttle, ms, patternOrChannel, worker].concat(args));\n}\nfunction retry$1(maxTries, delayLength, worker) {\n for (var _len5 = arguments.length, args = new Array(_len5 > 3 ? _len5 - 3 : 0), _key5 = 3; _key5 < _len5; _key5++) {\n args[_key5 - 3] = arguments[_key5];\n }\n\n return call.apply(void 0, [retry, maxTries, delayLength, worker].concat(args));\n}\nfunction debounce(delayLength, pattern, worker) {\n for (var _len6 = arguments.length, args = new Array(_len6 > 3 ? _len6 - 3 : 0), _key6 = 3; _key6 < _len6; _key6++) {\n args[_key6 - 3] = arguments[_key6];\n }\n\n return fork.apply(void 0, [debounceHelper, delayLength, pattern, worker].concat(args));\n}\n\nexport { debounce, retry$1 as retry, takeEvery$1 as takeEvery, takeLatest$1 as takeLatest, takeLeading$1 as takeLeading, throttle$1 as throttle };\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n 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 function __createBinding(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, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = 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\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","import React from 'react';\nexport var ReactReduxContext = /*#__PURE__*/React.createContext(null);\n\nif (process.env.NODE_ENV !== 'production') {\n ReactReduxContext.displayName = 'ReactRedux';\n}\n\nexport default ReactReduxContext;","// Default to a dummy \"batch\" implementation that just runs the callback\nfunction defaultNoopBatch(callback) {\n callback();\n}\n\nvar batch = defaultNoopBatch; // Allow injecting another batching function later\n\nexport var setBatch = function setBatch(newBatch) {\n return batch = newBatch;\n}; // Supply a getter just to skip dealing with ESM bindings\n\nexport var getBatch = function getBatch() {\n return batch;\n};","import { getBatch } from './batch'; // 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\nfunction createListenerCollection() {\n var batch = getBatch();\n var first = null;\n var last = null;\n return {\n clear: function clear() {\n first = null;\n last = null;\n },\n notify: function notify() {\n batch(function () {\n var listener = first;\n\n while (listener) {\n listener.callback();\n listener = listener.next;\n }\n });\n },\n get: function get() {\n var listeners = [];\n var listener = first;\n\n while (listener) {\n listeners.push(listener);\n listener = listener.next;\n }\n\n return listeners;\n },\n subscribe: function subscribe(callback) {\n var isSubscribed = true;\n var listener = last = {\n callback: callback,\n next: null,\n prev: last\n };\n\n if (listener.prev) {\n listener.prev.next = listener;\n } else {\n first = listener;\n }\n\n return function unsubscribe() {\n if (!isSubscribed || first === null) return;\n isSubscribed = false;\n\n if (listener.next) {\n listener.next.prev = listener.prev;\n } else {\n last = listener.prev;\n }\n\n if (listener.prev) {\n listener.prev.next = listener.next;\n } else {\n first = listener.next;\n }\n };\n }\n };\n}\n\nvar nullListeners = {\n notify: function notify() {},\n get: function get() {\n return [];\n }\n};\nexport function createSubscription(store, parentSub) {\n var unsubscribe;\n var listeners = nullListeners;\n\n function addNestedSub(listener) {\n trySubscribe();\n return listeners.subscribe(listener);\n }\n\n function notifyNestedSubs() {\n listeners.notify();\n }\n\n function handleChangeWrapper() {\n if (subscription.onStateChange) {\n subscription.onStateChange();\n }\n }\n\n function isSubscribed() {\n return Boolean(unsubscribe);\n }\n\n function trySubscribe() {\n if (!unsubscribe) {\n unsubscribe = parentSub ? parentSub.addNestedSub(handleChangeWrapper) : store.subscribe(handleChangeWrapper);\n listeners = createListenerCollection();\n }\n }\n\n function tryUnsubscribe() {\n if (unsubscribe) {\n unsubscribe();\n unsubscribe = undefined;\n listeners.clear();\n listeners = nullListeners;\n }\n }\n\n var subscription = {\n addNestedSub: addNestedSub,\n notifyNestedSubs: notifyNestedSubs,\n handleChangeWrapper: handleChangeWrapper,\n isSubscribed: isSubscribed,\n trySubscribe: trySubscribe,\n tryUnsubscribe: tryUnsubscribe,\n getListeners: function getListeners() {\n return listeners;\n }\n };\n return subscription;\n}","import { useEffect, useLayoutEffect } from 'react'; // React currently throws a warning when using useLayoutEffect on the server.\n// To get around it, we can conditionally useEffect on the server (no-op) and\n// useLayoutEffect in the browser. We need useLayoutEffect to ensure the store\n// subscription callback always has the selector from the latest render commit\n// available, otherwise a store update may happen between render and the effect,\n// which may cause missed updates; we also must ensure the store subscription\n// is created synchronously, otherwise a store update may occur before the\n// subscription is created and an inconsistent state may be observed\n\nexport var useIsomorphicLayoutEffect = typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof window.document.createElement !== 'undefined' ? useLayoutEffect : useEffect;","import React, { useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport { ReactReduxContext } from './Context';\nimport { createSubscription } from '../utils/Subscription';\nimport { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect';\n\nfunction Provider(_ref) {\n var store = _ref.store,\n context = _ref.context,\n children = _ref.children;\n var contextValue = useMemo(function () {\n var subscription = createSubscription(store);\n return {\n store: store,\n subscription: subscription\n };\n }, [store]);\n var previousState = useMemo(function () {\n return store.getState();\n }, [store]);\n useIsomorphicLayoutEffect(function () {\n var subscription = contextValue.subscription;\n subscription.onStateChange = subscription.notifyNestedSubs;\n subscription.trySubscribe();\n\n if (previousState !== store.getState()) {\n subscription.notifyNestedSubs();\n }\n\n return function () {\n subscription.tryUnsubscribe();\n subscription.onStateChange = null;\n };\n }, [contextValue, previousState]);\n var Context = context || ReactReduxContext;\n return /*#__PURE__*/React.createElement(Context.Provider, {\n value: contextValue\n }, children);\n}\n\nif (process.env.NODE_ENV !== 'production') {\n Provider.propTypes = {\n store: PropTypes.shape({\n subscribe: PropTypes.func.isRequired,\n dispatch: PropTypes.func.isRequired,\n getState: PropTypes.func.isRequired\n }),\n context: PropTypes.object,\n children: PropTypes.any\n };\n}\n\nexport default Provider;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"getDisplayName\", \"methodName\", \"renderCountProp\", \"shouldHandleStateChanges\", \"storeKey\", \"withRef\", \"forwardRef\", \"context\"],\n _excluded2 = [\"reactReduxForwardedRef\"];\nimport hoistStatics from 'hoist-non-react-statics';\nimport React, { useContext, useMemo, useRef, useReducer } from 'react';\nimport { isValidElementType, isContextConsumer } from 'react-is';\nimport { createSubscription } from '../utils/Subscription';\nimport { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect';\nimport { ReactReduxContext } from './Context'; // Define some constant arrays just to avoid re-creating these\n\nvar EMPTY_ARRAY = [];\nvar NO_SUBSCRIPTION_ARRAY = [null, null];\n\nvar stringifyComponent = function stringifyComponent(Comp) {\n try {\n return JSON.stringify(Comp);\n } catch (err) {\n return String(Comp);\n }\n};\n\nfunction storeStateUpdatesReducer(state, action) {\n var updateCount = state[1];\n return [action.payload, updateCount + 1];\n}\n\nfunction useIsomorphicLayoutEffectWithArgs(effectFunc, effectArgs, dependencies) {\n useIsomorphicLayoutEffect(function () {\n return effectFunc.apply(void 0, effectArgs);\n }, dependencies);\n}\n\nfunction captureWrapperProps(lastWrapperProps, lastChildProps, renderIsScheduled, wrapperProps, actualChildProps, childPropsFromStoreUpdate, notifyNestedSubs) {\n // We want to capture the wrapper props and child props we used for later comparisons\n lastWrapperProps.current = wrapperProps;\n lastChildProps.current = actualChildProps;\n renderIsScheduled.current = false; // If the render was from a store update, clear out that reference and cascade the subscriber update\n\n if (childPropsFromStoreUpdate.current) {\n childPropsFromStoreUpdate.current = null;\n notifyNestedSubs();\n }\n}\n\nfunction subscribeUpdates(shouldHandleStateChanges, store, subscription, childPropsSelector, lastWrapperProps, lastChildProps, renderIsScheduled, childPropsFromStoreUpdate, notifyNestedSubs, forceComponentUpdateDispatch) {\n // If we're not subscribed to the store, nothing to do here\n if (!shouldHandleStateChanges) return; // Capture values for checking if and when this component unmounts\n\n var didUnsubscribe = false;\n var lastThrownError = null; // We'll run this callback every time a store subscription update propagates to this component\n\n var checkForUpdates = function checkForUpdates() {\n if (didUnsubscribe) {\n // Don't run stale listeners.\n // Redux doesn't guarantee unsubscriptions happen until next dispatch.\n return;\n }\n\n var latestStoreState = store.getState();\n var newChildProps, error;\n\n try {\n // Actually run the selector with the most recent store state and wrapper props\n // to determine what the child props should be\n newChildProps = childPropsSelector(latestStoreState, lastWrapperProps.current);\n } catch (e) {\n error = e;\n lastThrownError = e;\n }\n\n if (!error) {\n lastThrownError = null;\n } // If the child props haven't changed, nothing to do here - cascade the subscription update\n\n\n if (newChildProps === lastChildProps.current) {\n if (!renderIsScheduled.current) {\n notifyNestedSubs();\n }\n } else {\n // Save references to the new child props. Note that we track the \"child props from store update\"\n // as a ref instead of a useState/useReducer because we need a way to determine if that value has\n // been processed. If this went into useState/useReducer, we couldn't clear out the value without\n // forcing another re-render, which we don't want.\n lastChildProps.current = newChildProps;\n childPropsFromStoreUpdate.current = newChildProps;\n renderIsScheduled.current = true; // If the child props _did_ change (or we caught an error), this wrapper component needs to re-render\n\n forceComponentUpdateDispatch({\n type: 'STORE_UPDATED',\n payload: {\n error: error\n }\n });\n }\n }; // Actually subscribe to the nearest connected ancestor (or store)\n\n\n subscription.onStateChange = checkForUpdates;\n subscription.trySubscribe(); // Pull data from the store after first render in case the store has\n // changed since we began.\n\n checkForUpdates();\n\n var unsubscribeWrapper = function unsubscribeWrapper() {\n didUnsubscribe = true;\n subscription.tryUnsubscribe();\n subscription.onStateChange = null;\n\n if (lastThrownError) {\n // It's possible that we caught an error due to a bad mapState function, but the\n // parent re-rendered without this component and we're about to unmount.\n // This shouldn't happen as long as we do top-down subscriptions correctly, but\n // if we ever do those wrong, this throw will surface the error in our tests.\n // In that case, throw the error from here so it doesn't get lost.\n throw lastThrownError;\n }\n };\n\n return unsubscribeWrapper;\n}\n\nvar initStateUpdates = function initStateUpdates() {\n return [null, 0];\n};\n\nexport default function connectAdvanced(\n/*\r\n selectorFactory is a func that is responsible for returning the selector function used to\r\n compute new props from state, props, and dispatch. For example:\r\n export default connectAdvanced((dispatch, options) => (state, props) => ({\r\n thing: state.things[props.thingId],\r\n saveThing: fields => dispatch(actionCreators.saveThing(props.thingId, fields)),\r\n }))(YourComponent)\r\n Access to dispatch is provided to the factory so selectorFactories can bind actionCreators\r\n outside of their selector as an optimization. Options passed to connectAdvanced are passed to\r\n the selectorFactory, along with displayName and WrappedComponent, as the second argument.\r\n Note that selectorFactory is responsible for all caching/memoization of inbound and outbound\r\n props. Do not use connectAdvanced directly without memoizing results between calls to your\r\n selector, otherwise the Connect component will re-render on every state or props change.\r\n*/\nselectorFactory, // options object:\n_ref) {\n if (_ref === void 0) {\n _ref = {};\n }\n\n var _ref2 = _ref,\n _ref2$getDisplayName = _ref2.getDisplayName,\n getDisplayName = _ref2$getDisplayName === void 0 ? function (name) {\n return \"ConnectAdvanced(\" + name + \")\";\n } : _ref2$getDisplayName,\n _ref2$methodName = _ref2.methodName,\n methodName = _ref2$methodName === void 0 ? 'connectAdvanced' : _ref2$methodName,\n _ref2$renderCountProp = _ref2.renderCountProp,\n renderCountProp = _ref2$renderCountProp === void 0 ? undefined : _ref2$renderCountProp,\n _ref2$shouldHandleSta = _ref2.shouldHandleStateChanges,\n shouldHandleStateChanges = _ref2$shouldHandleSta === void 0 ? true : _ref2$shouldHandleSta,\n _ref2$storeKey = _ref2.storeKey,\n storeKey = _ref2$storeKey === void 0 ? 'store' : _ref2$storeKey,\n _ref2$withRef = _ref2.withRef,\n withRef = _ref2$withRef === void 0 ? false : _ref2$withRef,\n _ref2$forwardRef = _ref2.forwardRef,\n forwardRef = _ref2$forwardRef === void 0 ? false : _ref2$forwardRef,\n _ref2$context = _ref2.context,\n context = _ref2$context === void 0 ? ReactReduxContext : _ref2$context,\n connectOptions = _objectWithoutPropertiesLoose(_ref2, _excluded);\n\n if (process.env.NODE_ENV !== 'production') {\n if (renderCountProp !== undefined) {\n throw new Error(\"renderCountProp is removed. render counting is built into the latest React Dev Tools profiling extension\");\n }\n\n if (withRef) {\n throw new Error('withRef is removed. To access the wrapped instance, use a ref on the connected component');\n }\n\n var customStoreWarningMessage = 'To use a custom Redux store for specific components, create a custom React context with ' + \"React.createContext(), and pass the context object to React Redux's Provider and specific components\" + ' like: <Provider context={MyContext}><ConnectedComponent context={MyContext} /></Provider>. ' + 'You may also pass a {context : MyContext} option to connect';\n\n if (storeKey !== 'store') {\n throw new Error('storeKey has been removed and does not do anything. ' + customStoreWarningMessage);\n }\n }\n\n var Context = context;\n return function wrapWithConnect(WrappedComponent) {\n if (process.env.NODE_ENV !== 'production' && !isValidElementType(WrappedComponent)) {\n throw new Error(\"You must pass a component to the function returned by \" + (methodName + \". Instead received \" + stringifyComponent(WrappedComponent)));\n }\n\n var wrappedComponentName = WrappedComponent.displayName || WrappedComponent.name || 'Component';\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 displayName: displayName,\n wrappedComponentName: wrappedComponentName,\n WrappedComponent: WrappedComponent\n });\n\n var pure = connectOptions.pure;\n\n function createChildSelector(store) {\n return selectorFactory(store.dispatch, selectorFactoryOptions);\n } // If we aren't running in \"pure\" mode, we don't want to memoize values.\n // To avoid conditionally calling hooks, we fall back to a tiny wrapper\n // that just executes the given callback immediately.\n\n\n var usePureOnlyMemo = pure ? useMemo : function (callback) {\n return callback();\n };\n\n function ConnectFunction(props) {\n var _useMemo = useMemo(function () {\n // Distinguish between actual \"data\" props that were passed to the wrapper component,\n // and values needed to control behavior (forwarded refs, alternate context instances).\n // To maintain the wrapperProps object reference, memoize this destructuring.\n var reactReduxForwardedRef = props.reactReduxForwardedRef,\n wrapperProps = _objectWithoutPropertiesLoose(props, _excluded2);\n\n return [props.context, reactReduxForwardedRef, wrapperProps];\n }, [props]),\n propsContext = _useMemo[0],\n reactReduxForwardedRef = _useMemo[1],\n wrapperProps = _useMemo[2];\n\n var ContextToUse = useMemo(function () {\n // Users may optionally pass in a custom context instance to use instead of our ReactReduxContext.\n // Memoize the check that determines which context instance we should use.\n return propsContext && propsContext.Consumer && isContextConsumer( /*#__PURE__*/React.createElement(propsContext.Consumer, null)) ? propsContext : Context;\n }, [propsContext, Context]); // Retrieve the store and ancestor subscription via context, if available\n\n var contextValue = useContext(ContextToUse); // The store _must_ exist as either a prop or in context.\n // We'll check to see if it _looks_ like a Redux store first.\n // This allows us to pass through a `store` prop that is just a plain value.\n\n var didStoreComeFromProps = Boolean(props.store) && Boolean(props.store.getState) && Boolean(props.store.dispatch);\n var didStoreComeFromContext = Boolean(contextValue) && Boolean(contextValue.store);\n\n if (process.env.NODE_ENV !== 'production' && !didStoreComeFromProps && !didStoreComeFromContext) {\n throw new Error(\"Could not find \\\"store\\\" in the context of \" + (\"\\\"\" + displayName + \"\\\". Either wrap the root component in a <Provider>, \") + \"or pass a custom React context provider to <Provider> and the corresponding \" + (\"React context consumer to \" + displayName + \" in connect options.\"));\n } // Based on the previous check, one of these must be true\n\n\n var store = didStoreComeFromProps ? props.store : contextValue.store;\n var childPropsSelector = useMemo(function () {\n // The child props selector needs the store reference as an input.\n // Re-create this selector whenever the store changes.\n return createChildSelector(store);\n }, [store]);\n\n var _useMemo2 = useMemo(function () {\n if (!shouldHandleStateChanges) return NO_SUBSCRIPTION_ARRAY; // This Subscription'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\n // This Subscription'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 subscription = createSubscription(store, didStoreComeFromProps ? null : contextValue.subscription); // `notifyNestedSubs` is duplicated to handle the case where the component is unmounted in\n // the middle of the notification loop, where `subscription` will then be null. This can\n // probably be avoided if Subscription's listeners logic is changed to not call listeners\n // that have been unsubscribed in the middle of the notification loop.\n\n // `notifyNestedSubs` is duplicated to handle the case where the component is unmounted in\n // the middle of the notification loop, where `subscription` will then be null. This can\n // probably be avoided if Subscription's listeners logic is changed to not call listeners\n // that have been unsubscribed in the middle of the notification loop.\n var notifyNestedSubs = subscription.notifyNestedSubs.bind(subscription);\n return [subscription, notifyNestedSubs];\n }, [store, didStoreComeFromProps, contextValue]),\n subscription = _useMemo2[0],\n notifyNestedSubs = _useMemo2[1]; // Determine what {store, subscription} value should be put into nested context, if necessary,\n // and memoize that value to avoid unnecessary context updates.\n\n\n var overriddenContextValue = useMemo(function () {\n if (didStoreComeFromProps) {\n // This component is directly subscribed to a store from props.\n // We don't want descendants reading from this store - pass down whatever\n // the existing context value is from the nearest connected ancestor.\n return contextValue;\n } // Otherwise, put this component's subscription instance into context, so that\n // connected descendants won't update until after this component is done\n\n\n return _extends({}, contextValue, {\n subscription: subscription\n });\n }, [didStoreComeFromProps, contextValue, subscription]); // We need to force this wrapper component to re-render whenever a Redux store update\n // causes a change to the calculated child component props (or we caught an error in mapState)\n\n var _useReducer = useReducer(storeStateUpdatesReducer, EMPTY_ARRAY, initStateUpdates),\n _useReducer$ = _useReducer[0],\n previousStateUpdateResult = _useReducer$[0],\n forceComponentUpdateDispatch = _useReducer[1]; // Propagate any mapState/mapDispatch errors upwards\n\n\n if (previousStateUpdateResult && previousStateUpdateResult.error) {\n throw previousStateUpdateResult.error;\n } // Set up refs to coordinate values between the subscription effect and the render logic\n\n\n var lastChildProps = useRef();\n var lastWrapperProps = useRef(wrapperProps);\n var childPropsFromStoreUpdate = useRef();\n var renderIsScheduled = useRef(false);\n var actualChildProps = usePureOnlyMemo(function () {\n // Tricky logic here:\n // - This render may have been triggered by a Redux store update that produced new child props\n // - However, we may have gotten new wrapper props after that\n // If we have new child props, and the same wrapper props, we know we should use the new child props as-is.\n // But, if we have new wrapper props, those might change the child props, so we have to recalculate things.\n // So, we'll use the child props from store update only if the wrapper props are the same as last time.\n if (childPropsFromStoreUpdate.current && wrapperProps === lastWrapperProps.current) {\n return childPropsFromStoreUpdate.current;\n } // TODO We're reading the store directly in render() here. Bad idea?\n // This will likely cause Bad Things (TM) to happen in Concurrent Mode.\n // Note that we do this because on renders _not_ caused by store updates, we need the latest store state\n // to determine what the child props should be.\n\n\n return childPropsSelector(store.getState(), wrapperProps);\n }, [store, previousStateUpdateResult, wrapperProps]); // We need this to execute synchronously every time we re-render. However, React warns\n // about useLayoutEffect in SSR, so we try to detect environment and fall back to\n // just useEffect instead to avoid the warning, since neither will run anyway.\n\n useIsomorphicLayoutEffectWithArgs(captureWrapperProps, [lastWrapperProps, lastChildProps, renderIsScheduled, wrapperProps, actualChildProps, childPropsFromStoreUpdate, notifyNestedSubs]); // Our re-subscribe logic only runs when the store/subscription setup changes\n\n useIsomorphicLayoutEffectWithArgs(subscribeUpdates, [shouldHandleStateChanges, store, subscription, childPropsSelector, lastWrapperProps, lastChildProps, renderIsScheduled, childPropsFromStoreUpdate, notifyNestedSubs, forceComponentUpdateDispatch], [store, subscription, childPropsSelector]); // Now that all that's done, we can finally try to actually render the child component.\n // We memoize the elements for the rendered child component as an optimization.\n\n var renderedWrappedComponent = useMemo(function () {\n return /*#__PURE__*/React.createElement(WrappedComponent, _extends({}, actualChildProps, {\n ref: reactReduxForwardedRef\n }));\n }, [reactReduxForwardedRef, WrappedComponent, actualChildProps]); // If React sees the exact same element reference as last time, it bails out of re-rendering\n // that child, same as if it was wrapped in React.memo() or returned false from shouldComponentUpdate.\n\n var renderedChild = useMemo(function () {\n if (shouldHandleStateChanges) {\n // If this component is subscribed to store updates, we need to pass its own\n // subscription instance down to our descendants. That means rendering the same\n // Context instance, and putting a different value into the context.\n return /*#__PURE__*/React.createElement(ContextToUse.Provider, {\n value: overriddenContextValue\n }, renderedWrappedComponent);\n }\n\n return renderedWrappedComponent;\n }, [ContextToUse, renderedWrappedComponent, overriddenContextValue]);\n return renderedChild;\n } // If we're in \"pure\" mode, ensure our wrapper component only re-renders when incoming props have changed.\n\n\n var Connect = pure ? React.memo(ConnectFunction) : ConnectFunction;\n Connect.WrappedComponent = WrappedComponent;\n Connect.displayName = ConnectFunction.displayName = displayName;\n\n if (forwardRef) {\n var forwarded = React.forwardRef(function forwardConnectRef(props, ref) {\n return /*#__PURE__*/React.createElement(Connect, _extends({}, props, {\n reactReduxForwardedRef: ref\n }));\n });\n forwarded.displayName = displayName;\n forwarded.WrappedComponent = WrappedComponent;\n return hoistStatics(forwarded, WrappedComponent);\n }\n\n return hoistStatics(Connect, WrappedComponent);\n };\n}","function 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 if (keysA.length !== keysB.length) return false;\n\n for (var i = 0; i < keysA.length; i++) {\n if (!Object.prototype.hasOwnProperty.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {\n return false;\n }\n }\n\n return true;\n}","import verifyPlainObject from '../utils/verifyPlainObject';\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\n constantSelector.dependsOnOwnProps = false;\n return constantSelector;\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..\n\nexport function getDependsOnOwnProps(mapToProps) {\n return mapToProps.dependsOnOwnProps !== null && mapToProps.dependsOnOwnProps !== undefined ? Boolean(mapToProps.dependsOnOwnProps) : mapToProps.length !== 1;\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//\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 }; // allow detectFactoryAndVerify to get ownProps\n\n\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 return props;\n };\n\n return proxy;\n };\n}","import bindActionCreators from '../utils/bindActionCreators';\nimport { wrapMapToPropsConstant, wrapMapToPropsFunc } from './wrapMapToProps';\nexport function whenMapDispatchToPropsIsFunction(mapDispatchToProps) {\n return typeof mapDispatchToProps === 'function' ? wrapMapToPropsFunc(mapDispatchToProps, 'mapDispatchToProps') : undefined;\n}\nexport function whenMapDispatchToPropsIsMissing(mapDispatchToProps) {\n return !mapDispatchToProps ? wrapMapToPropsConstant(function (dispatch) {\n return {\n dispatch: dispatch\n };\n }) : undefined;\n}\nexport function whenMapDispatchToPropsIsObject(mapDispatchToProps) {\n return mapDispatchToProps && typeof mapDispatchToProps === 'object' ? wrapMapToPropsConstant(function (dispatch) {\n return bindActionCreators(mapDispatchToProps, dispatch);\n }) : undefined;\n}\nexport default [whenMapDispatchToPropsIsFunction, whenMapDispatchToPropsIsMissing, whenMapDispatchToPropsIsObject];","export default function bindActionCreators(actionCreators, dispatch) {\n var boundActionCreators = {};\n\n var _loop = function _loop(key) {\n var actionCreator = actionCreators[key];\n\n if (typeof actionCreator === 'function') {\n boundActionCreators[key] = function () {\n return dispatch(actionCreator.apply(void 0, arguments));\n };\n }\n };\n\n for (var key in actionCreators) {\n _loop(key);\n }\n\n return boundActionCreators;\n}","import { wrapMapToPropsConstant, wrapMapToPropsFunc } from './wrapMapToProps';\nexport function whenMapStateToPropsIsFunction(mapStateToProps) {\n return typeof mapStateToProps === 'function' ? wrapMapToPropsFunc(mapStateToProps, 'mapStateToProps') : undefined;\n}\nexport function whenMapStateToPropsIsMissing(mapStateToProps) {\n return !mapStateToProps ? wrapMapToPropsConstant(function () {\n return {};\n }) : undefined;\n}\nexport default [whenMapStateToPropsIsFunction, whenMapStateToPropsIsMissing];","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport verifyPlainObject from '../utils/verifyPlainObject';\nexport function defaultMergeProps(stateProps, dispatchProps, ownProps) {\n return _extends({}, ownProps, stateProps, dispatchProps);\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 var hasRunOnce = false;\n var mergedProps;\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 if (process.env.NODE_ENV !== 'production') verifyPlainObject(mergedProps, displayName, 'mergeProps');\n }\n\n return mergedProps;\n };\n };\n}\nexport function whenMergePropsIsFunction(mergeProps) {\n return typeof mergeProps === 'function' ? wrapMergePropsFunc(mergeProps) : undefined;\n}\nexport function whenMergePropsIsOmitted(mergeProps) {\n return !mergeProps ? function () {\n return defaultMergeProps;\n } : undefined;\n}\nexport default [whenMergePropsIsFunction, whenMergePropsIsOmitted];","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"initMapStateToProps\", \"initMapDispatchToProps\", \"initMergeProps\"];\nimport verifySubselectors from './verifySubselectors';\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}\nexport function pureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, _ref) {\n var areStatesEqual = _ref.areStatesEqual,\n areOwnPropsEqual = _ref.areOwnPropsEqual,\n areStatePropsEqual = _ref.areStatePropsEqual;\n var hasRunAtLeastOnce = false;\n var state;\n var ownProps;\n var stateProps;\n var dispatchProps;\n var mergedProps;\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 if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n\n function handleNewProps() {\n if (mapStateToProps.dependsOnOwnProps) stateProps = mapStateToProps(state, ownProps);\n if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps);\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 if (statePropsChanged) mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n\n function handleSubsequentCalls(nextState, nextOwnProps) {\n var propsChanged = !areOwnPropsEqual(nextOwnProps, ownProps);\n var stateChanged = !areStatesEqual(nextState, state, nextOwnProps, ownProps);\n state = nextState;\n ownProps = nextOwnProps;\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} // TODO: Add more comments\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 = _objectWithoutPropertiesLoose(_ref2, _excluded);\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 return selectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, options);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"pure\", \"areStatesEqual\", \"areOwnPropsEqual\", \"areStatePropsEqual\", \"areMergedPropsEqual\"];\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/*\r\n connect is a facade over connectAdvanced. It turns its args into a compatible\r\n selectorFactory, which has the signature:\r\n\r\n (dispatch, options) => (nextState, nextOwnProps) => nextFinalProps\r\n \r\n connect passes its args to connectAdvanced as options, which will in turn pass them to\r\n selectorFactory each time a Connect component instance is instantiated or hot reloaded.\r\n\r\n selectorFactory returns a final props selector from its mapStateToProps,\r\n mapStateToPropsFactories, mapDispatchToProps, mapDispatchToPropsFactories, mergeProps,\r\n mergePropsFactories, and pure args.\r\n\r\n The resulting final props selector is called by the Connect component instance whenever\r\n it receives new props or store state.\r\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} // createConnect with default args builds the 'official' connect behavior. Calling it with\n// different options opens up some testing and extensibility scenarios\n\n\nexport function createConnect(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n _ref$connectHOC = _ref.connectHOC,\n connectHOC = _ref$connectHOC === void 0 ? connectAdvanced : _ref$connectHOC,\n _ref$mapStateToPropsF = _ref.mapStateToPropsFactories,\n mapStateToPropsFactories = _ref$mapStateToPropsF === void 0 ? defaultMapStateToPropsFactories : _ref$mapStateToPropsF,\n _ref$mapDispatchToPro = _ref.mapDispatchToPropsFactories,\n mapDispatchToPropsFactories = _ref$mapDispatchToPro === void 0 ? defaultMapDispatchToPropsFactories : _ref$mapDispatchToPro,\n _ref$mergePropsFactor = _ref.mergePropsFactories,\n mergePropsFactories = _ref$mergePropsFactor === void 0 ? defaultMergePropsFactories : _ref$mergePropsFactor,\n _ref$selectorFactory = _ref.selectorFactory,\n selectorFactory = _ref$selectorFactory === void 0 ? defaultSelectorFactory : _ref$selectorFactory;\n\n return function connect(mapStateToProps, mapDispatchToProps, mergeProps, _ref2) {\n if (_ref2 === void 0) {\n _ref2 = {};\n }\n\n var _ref3 = _ref2,\n _ref3$pure = _ref3.pure,\n pure = _ref3$pure === void 0 ? true : _ref3$pure,\n _ref3$areStatesEqual = _ref3.areStatesEqual,\n areStatesEqual = _ref3$areStatesEqual === void 0 ? strictEqual : _ref3$areStatesEqual,\n _ref3$areOwnPropsEqua = _ref3.areOwnPropsEqual,\n areOwnPropsEqual = _ref3$areOwnPropsEqua === void 0 ? shallowEqual : _ref3$areOwnPropsEqua,\n _ref3$areStatePropsEq = _ref3.areStatePropsEqual,\n areStatePropsEqual = _ref3$areStatePropsEq === void 0 ? shallowEqual : _ref3$areStatePropsEq,\n _ref3$areMergedPropsE = _ref3.areMergedPropsEqual,\n areMergedPropsEqual = _ref3$areMergedPropsE === void 0 ? shallowEqual : _ref3$areMergedPropsE,\n extraOptions = _objectWithoutPropertiesLoose(_ref3, _excluded);\n\n var initMapStateToProps = match(mapStateToProps, mapStateToPropsFactories, 'mapStateToProps');\n var initMapDispatchToProps = match(mapDispatchToProps, mapDispatchToPropsFactories, 'mapDispatchToProps');\n var initMergeProps = match(mergeProps, mergePropsFactories, 'mergeProps');\n return connectHOC(selectorFactory, _extends({\n // used in error messages\n methodName: 'connect',\n // used to compute Connect's displayName from the wrapped component's displayName.\n getDisplayName: function getDisplayName(name) {\n return \"Connect(\" + name + \")\";\n },\n // if mapStateToProps is falsy, the Connect component doesn't subscribe to store state changes\n shouldHandleStateChanges: Boolean(mapStateToProps),\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 }, extraOptions));\n };\n}\nexport default /*#__PURE__*/createConnect();","import { useContext } from 'react';\nimport { ReactReduxContext } from '../components/Context';\n/**\r\n * A hook to access the value of the `ReactReduxContext`. This is a low-level\r\n * hook that you should usually not need to call directly.\r\n *\r\n * @returns {any} the value of the `ReactReduxContext`\r\n *\r\n * @example\r\n *\r\n * import React from 'react'\r\n * import { useReduxContext } from 'react-redux'\r\n *\r\n * export const CounterComponent = ({ value }) => {\r\n * const { store } = useReduxContext()\r\n * return <div>{store.getState()}</div>\r\n * }\r\n */\n\nexport function useReduxContext() {\n var contextValue = useContext(ReactReduxContext);\n\n if (process.env.NODE_ENV !== 'production' && !contextValue) {\n throw new Error('could not find react-redux context value; please ensure the component is wrapped in a <Provider>');\n }\n\n return contextValue;\n}","import { useContext } from 'react';\nimport { ReactReduxContext } from '../components/Context';\nimport { useReduxContext as useDefaultReduxContext } from './useReduxContext';\n/**\r\n * Hook factory, which creates a `useStore` hook bound to a given context.\r\n *\r\n * @param {React.Context} [context=ReactReduxContext] Context passed to your `<Provider>`.\r\n * @returns {Function} A `useStore` hook bound to the specified context.\r\n */\n\nexport function createStoreHook(context) {\n if (context === void 0) {\n context = ReactReduxContext;\n }\n\n var useReduxContext = context === ReactReduxContext ? useDefaultReduxContext : function () {\n return useContext(context);\n };\n return function useStore() {\n var _useReduxContext = useReduxContext(),\n store = _useReduxContext.store;\n\n return store;\n };\n}\n/**\r\n * A hook to access the redux store.\r\n *\r\n * @returns {any} the redux store\r\n *\r\n * @example\r\n *\r\n * import React from 'react'\r\n * import { useStore } from 'react-redux'\r\n *\r\n * export const ExampleComponent = () => {\r\n * const store = useStore()\r\n * return <div>{store.getState()}</div>\r\n * }\r\n */\n\nexport var useStore = /*#__PURE__*/createStoreHook();","import { ReactReduxContext } from '../components/Context';\nimport { useStore as useDefaultStore, createStoreHook } from './useStore';\n/**\r\n * Hook factory, which creates a `useDispatch` hook bound to a given context.\r\n *\r\n * @param {React.Context} [context=ReactReduxContext] Context passed to your `<Provider>`.\r\n * @returns {Function} A `useDispatch` hook bound to the specified context.\r\n */\n\nexport function createDispatchHook(context) {\n if (context === void 0) {\n context = ReactReduxContext;\n }\n\n var useStore = context === ReactReduxContext ? useDefaultStore : createStoreHook(context);\n return function useDispatch() {\n var store = useStore();\n return store.dispatch;\n };\n}\n/**\r\n * A hook to access the redux `dispatch` function.\r\n *\r\n * @returns {any|function} redux store's `dispatch` function\r\n *\r\n * @example\r\n *\r\n * import React, { useCallback } from 'react'\r\n * import { useDispatch } from 'react-redux'\r\n *\r\n * export const CounterComponent = ({ value }) => {\r\n * const dispatch = useDispatch()\r\n * const increaseCounter = useCallback(() => dispatch({ type: 'increase-counter' }), [])\r\n * return (\r\n * <div>\r\n * <span>{value}</span>\r\n * <button onClick={increaseCounter}>Increase counter</button>\r\n * </div>\r\n * )\r\n * }\r\n */\n\nexport var useDispatch = /*#__PURE__*/createDispatchHook();","import { useReducer, useRef, useMemo, useContext, useDebugValue } from 'react';\nimport { useReduxContext as useDefaultReduxContext } from './useReduxContext';\nimport { createSubscription } from '../utils/Subscription';\nimport { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect';\nimport { ReactReduxContext } from '../components/Context';\n\nvar refEquality = function refEquality(a, b) {\n return a === b;\n};\n\nfunction useSelectorWithStoreAndSubscription(selector, equalityFn, store, contextSub) {\n var _useReducer = useReducer(function (s) {\n return s + 1;\n }, 0),\n forceRender = _useReducer[1];\n\n var subscription = useMemo(function () {\n return createSubscription(store, contextSub);\n }, [store, contextSub]);\n var latestSubscriptionCallbackError = useRef();\n var latestSelector = useRef();\n var latestStoreState = useRef();\n var latestSelectedState = useRef();\n var storeState = store.getState();\n var selectedState;\n\n try {\n if (selector !== latestSelector.current || storeState !== latestStoreState.current || latestSubscriptionCallbackError.current) {\n var newSelectedState = selector(storeState); // ensure latest selected state is reused so that a custom equality function can result in identical references\n\n if (latestSelectedState.current === undefined || !equalityFn(newSelectedState, latestSelectedState.current)) {\n selectedState = newSelectedState;\n } else {\n selectedState = latestSelectedState.current;\n }\n } else {\n selectedState = latestSelectedState.current;\n }\n } catch (err) {\n if (latestSubscriptionCallbackError.current) {\n err.message += \"\\nThe error may be correlated with this previous error:\\n\" + latestSubscriptionCallbackError.current.stack + \"\\n\\n\";\n }\n\n throw err;\n }\n\n useIsomorphicLayoutEffect(function () {\n latestSelector.current = selector;\n latestStoreState.current = storeState;\n latestSelectedState.current = selectedState;\n latestSubscriptionCallbackError.current = undefined;\n });\n useIsomorphicLayoutEffect(function () {\n function checkForUpdates() {\n try {\n var newStoreState = store.getState(); // Avoid calling selector multiple times if the store's state has not changed\n\n if (newStoreState === latestStoreState.current) {\n return;\n }\n\n var _newSelectedState = latestSelector.current(newStoreState);\n\n if (equalityFn(_newSelectedState, latestSelectedState.current)) {\n return;\n }\n\n latestSelectedState.current = _newSelectedState;\n latestStoreState.current = newStoreState;\n } catch (err) {\n // we ignore all errors here, since when the component\n // is re-rendered, the selectors are called again, and\n // will throw again, if neither props nor store state\n // changed\n latestSubscriptionCallbackError.current = err;\n }\n\n forceRender();\n }\n\n subscription.onStateChange = checkForUpdates;\n subscription.trySubscribe();\n checkForUpdates();\n return function () {\n return subscription.tryUnsubscribe();\n };\n }, [store, subscription]);\n return selectedState;\n}\n/**\r\n * Hook factory, which creates a `useSelector` hook bound to a given context.\r\n *\r\n * @param {React.Context} [context=ReactReduxContext] Context passed to your `<Provider>`.\r\n * @returns {Function} A `useSelector` hook bound to the specified context.\r\n */\n\n\nexport function createSelectorHook(context) {\n if (context === void 0) {\n context = ReactReduxContext;\n }\n\n var useReduxContext = context === ReactReduxContext ? useDefaultReduxContext : function () {\n return useContext(context);\n };\n return function useSelector(selector, equalityFn) {\n if (equalityFn === void 0) {\n equalityFn = refEquality;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (!selector) {\n throw new Error(\"You must pass a selector to useSelector\");\n }\n\n if (typeof selector !== 'function') {\n throw new Error(\"You must pass a function as a selector to useSelector\");\n }\n\n if (typeof equalityFn !== 'function') {\n throw new Error(\"You must pass a function as an equality function to useSelector\");\n }\n }\n\n var _useReduxContext = useReduxContext(),\n store = _useReduxContext.store,\n contextSub = _useReduxContext.subscription;\n\n var selectedState = useSelectorWithStoreAndSubscription(selector, equalityFn, store, contextSub);\n useDebugValue(selectedState);\n return selectedState;\n };\n}\n/**\r\n * A hook to access the redux store's state. This hook takes a selector function\r\n * as an argument. The selector is called with the store state.\r\n *\r\n * This hook takes an optional equality comparison function as the second parameter\r\n * that allows you to customize the way the selected state is compared to determine\r\n * whether the component needs to be re-rendered.\r\n *\r\n * @param {Function} selector the selector function\r\n * @param {Function=} equalityFn the function that will be used to determine equality\r\n *\r\n * @returns {any} the selected state\r\n *\r\n * @example\r\n *\r\n * import React from 'react'\r\n * import { useSelector } from 'react-redux'\r\n *\r\n * export const CounterComponent = () => {\r\n * const counter = useSelector(state => state.counter)\r\n * return <div>{counter}</div>\r\n * }\r\n */\n\nexport var useSelector = /*#__PURE__*/createSelectorHook();","export * from './exports';\nimport { unstable_batchedUpdates as batch } from './utils/reactBatchedUpdates';\nimport { setBatch } from './utils/batch'; // Enable batched updates in our subscriptions for use\n// with standard React renderers (ReactDOM, React Native)\n\nsetBatch(batch);\nexport { batch };","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n// @skip-file-minify\r\n// ##############################################################\r\n// AUTO GENERATED FILE: This file is Auto Generated during build.\r\n// ##############################################################\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\n// Note: DON'T Export these const from the package as we are still targeting ES3 this will export a mutable variables that someone could change!!!\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\nexport var _DYN_UPDATE_SNIPPET_DEFIN0 = \"updateSnippetDefinitions\"; // Count: 4\r\nexport var _DYN_LOAD_APP_INSIGHTS = \"loadAppInsights\"; // Count: 4\r\nexport var _DYN_ENDPOINT_URL = \"endpointUrl\"; // Count: 4\r\nexport var _DYN_MAX_BATCH_SIZE_IN_BY1 = \"maxBatchSizeInBytes\"; // Count: 3\r\nexport var _DYN_MAX_BATCH_INTERVAL = \"maxBatchInterval\"; // Count: 3\r\nexport var _DYN_DISABLE_EXCEPTION_TR2 = \"disableExceptionTracking\"; // Count: 2\r\nexport var _DYN_DISABLE_TELEMETRY = \"disableTelemetry\"; // Count: 2\r\nexport var _DYN_EMIT_LINE_DELIMITED_3 = \"emitLineDelimitedJson\"; // Count: 2\r\nexport var _DYN_DIAGNOSTIC_LOG_INTER4 = \"diagnosticLogInterval\"; // Count: 6\r\nexport var _DYN_AUTO_TRACK_PAGE_VISI5 = \"autoTrackPageVisitTime\"; // Count: 2\r\nexport var _DYN_SAMPLING_PERCENTAGE = \"samplingPercentage\"; // Count: 4\r\nexport var _DYN_DISABLE_AJAX_TRACKIN6 = \"disableAjaxTracking\"; // Count: 2\r\nexport var _DYN_MAX_AJAX_CALLS_PER_V7 = \"maxAjaxCallsPerView\"; // Count: 3\r\nexport var _DYN_IS_BEACON_API_DISABL8 = \"isBeaconApiDisabled\"; // Count: 2\r\nexport var _DYN_DISABLE_CORRELATION_9 = \"disableCorrelationHeaders\"; // Count: 2\r\nexport var _DYN_CORRELATION_HEADER_E10 = \"correlationHeaderExcludedDomains\"; // Count: 2\r\nexport var _DYN_DISABLE_FLUSH_ON_BEF11 = \"disableFlushOnBeforeUnload\"; // Count: 4\r\nexport var _DYN_DISABLE_FLUSH_ON_UNL12 = \"disableFlushOnUnload\"; // Count: 3\r\nexport var _DYN_ENABLE_SESSION_STORA13 = \"enableSessionStorageBuffer\"; // Count: 2\r\nexport var _DYN_IS_COOKIE_USE_DISABL14 = \"isCookieUseDisabled\"; // Count: 2\r\nexport var _DYN_IS_STORAGE_USE_DISAB15 = \"isStorageUseDisabled\"; // Count: 2\r\nexport var _DYN_IS_BROWSER_LINK_TRAC16 = \"isBrowserLinkTrackingEnabled\"; // Count: 2\r\nexport var _DYN_ENABLE_CORS_CORRELAT17 = \"enableCorsCorrelation\"; // Count: 2\r\nexport var _DYN_CONFIG = \"config\"; // Count: 6\r\nexport var _DYN_CONTEXT = \"context\"; // Count: 8\r\nexport var _DYN_PUSH = \"push\"; // Count: 5\r\nexport var _DYN_VERSION = \"version\"; // Count: 6\r\nexport var _DYN_QUEUE = \"queue\"; // Count: 6\r\nexport var _DYN_CONNECTION_STRING = \"connectionString\"; // Count: 3\r\nexport var _DYN_INSTRUMENTATION_KEY = \"instrumentationKey\"; // Count: 2\r\nexport var _DYN_APP_INSIGHTS = \"appInsights\"; // Count: 3\r\nexport var _DYN_DISABLE_IKEY_DEPRECA18 = \"disableIkeyDeprecationMessage\"; // Count: 2\r\nexport var _DYN_GET_TRANSMISSION_CON19 = \"getTransmissionControls\"; // Count: 2\r\nexport var _DYN_ONUNLOAD_FLUSH = \"onunloadFlush\"; // Count: 6\r\nexport var _DYN_ADD_HOUSEKEEPING_BEF20 = \"addHousekeepingBeforeUnload\"; // Count: 2\r\nexport var _DYN_INDEX_OF = \"indexOf\"; // Count: 4\r\n//# sourceMappingURL=__DynamicConstants.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { arrForEach, isString } from \"@microsoft/applicationinsights-core-js\";\r\nimport { _DYN_LENGTH, _DYN_TO_LOWER_CASE } from \"./__DynamicConstants\";\r\nvar strEmpty = \"\";\r\nexport function stringToBoolOrDefault(str, defaultValue) {\r\n if (defaultValue === void 0) { defaultValue = false; }\r\n if (str === undefined || str === null) {\r\n return defaultValue;\r\n }\r\n return str.toString()[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]() === \"true\";\r\n}\r\n/**\r\n * Convert ms to c# time span format\r\n */\r\nexport function msToTimeSpan(totalms) {\r\n if (isNaN(totalms) || totalms < 0) {\r\n totalms = 0;\r\n }\r\n totalms = Math.round(totalms);\r\n var ms = strEmpty + totalms % 1000;\r\n var sec = strEmpty + Math.floor(totalms / 1000) % 60;\r\n var min = strEmpty + Math.floor(totalms / (1000 * 60)) % 60;\r\n var hour = strEmpty + Math.floor(totalms / (1000 * 60 * 60)) % 24;\r\n var days = Math.floor(totalms / (1000 * 60 * 60 * 24));\r\n ms = ms[_DYN_LENGTH /* @min:%2elength */] === 1 ? \"00\" + ms : ms[_DYN_LENGTH /* @min:%2elength */] === 2 ? \"0\" + ms : ms;\r\n sec = sec[_DYN_LENGTH /* @min:%2elength */] < 2 ? \"0\" + sec : sec;\r\n min = min[_DYN_LENGTH /* @min:%2elength */] < 2 ? \"0\" + min : min;\r\n hour = hour[_DYN_LENGTH /* @min:%2elength */] < 2 ? \"0\" + hour : hour;\r\n return (days > 0 ? days + \".\" : strEmpty) + hour + \":\" + min + \":\" + sec + \".\" + ms;\r\n}\r\nexport function getExtensionByName(extensions, identifier) {\r\n var extension = null;\r\n arrForEach(extensions, function (value) {\r\n if (value.identifier === identifier) {\r\n extension = value;\r\n return -1;\r\n }\r\n });\r\n return extension;\r\n}\r\nexport function isCrossOriginError(message, url, lineNumber, columnNumber, error) {\r\n return !error && isString(message) && (message === \"Script error.\" || message === \"Script error\");\r\n}\r\n//# sourceMappingURL=HelperFuncs.js.map","import isString from 'lodash/isString';\nimport isNan from 'lodash/isNaN';\nimport get from 'lodash/get';\nimport lodashIsNumber from 'lodash/isNumber';\nexport var mathSign = function mathSign(value) {\n if (value === 0) {\n return 0;\n }\n if (value > 0) {\n return 1;\n }\n return -1;\n};\nexport var isPercent = function isPercent(value) {\n return isString(value) && value.indexOf('%') === value.length - 1;\n};\nexport var isNumber = function isNumber(value) {\n return lodashIsNumber(value) && !isNan(value);\n};\nexport var isNumOrStr = function isNumOrStr(value) {\n return isNumber(value) || isString(value);\n};\nvar idCounter = 0;\nexport var uniqueId = function uniqueId(prefix) {\n var id = ++idCounter;\n return \"\".concat(prefix || '').concat(id);\n};\n\n/**\n * Get percent value of a total value\n * @param {number|string} percent A percent\n * @param {number} totalValue Total value\n * @param {number} defaultValue The value returned when percent is undefined or invalid\n * @param {boolean} validate If set to be true, the result will be validated\n * @return {number} value\n */\nexport var getPercentValue = function getPercentValue(percent, totalValue) {\n var defaultValue = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n var validate = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n if (!isNumber(percent) && !isString(percent)) {\n return defaultValue;\n }\n var value;\n if (isPercent(percent)) {\n var index = percent.indexOf('%');\n value = totalValue * parseFloat(percent.slice(0, index)) / 100;\n } else {\n value = +percent;\n }\n if (isNan(value)) {\n value = defaultValue;\n }\n if (validate && value > totalValue) {\n value = totalValue;\n }\n return value;\n};\nexport var getAnyElementOfObject = function getAnyElementOfObject(obj) {\n if (!obj) {\n return null;\n }\n var keys = Object.keys(obj);\n if (keys && keys.length) {\n return obj[keys[0]];\n }\n return null;\n};\nexport var hasDuplicate = function hasDuplicate(ary) {\n if (!Array.isArray(ary)) {\n return false;\n }\n var len = ary.length;\n var cache = {};\n for (var i = 0; i < len; i++) {\n if (!cache[ary[i]]) {\n cache[ary[i]] = true;\n } else {\n return true;\n }\n }\n return false;\n};\n\n/* @todo consider to rename this function into `getInterpolator` */\nexport var interpolateNumber = function interpolateNumber(numberA, numberB) {\n if (isNumber(numberA) && isNumber(numberB)) {\n return function (t) {\n return numberA + t * (numberB - numberA);\n };\n }\n return function () {\n return numberB;\n };\n};\nexport function findEntryInArray(ary, specifiedKey, specifiedValue) {\n if (!ary || !ary.length) {\n return null;\n }\n return ary.find(function (entry) {\n return entry && (typeof specifiedKey === 'function' ? specifiedKey(entry) : get(entry, specifiedKey)) === specifiedValue;\n });\n}\n\n/**\n * The least square linear regression\n * @param {Array} data The array of points\n * @returns {Object} The domain of x, and the parameter of linear function\n */\nexport var getLinearRegression = function getLinearRegression(data) {\n if (!data || !data.length) {\n return null;\n }\n var len = data.length;\n var xsum = 0;\n var ysum = 0;\n var xysum = 0;\n var xxsum = 0;\n var xmin = Infinity;\n var xmax = -Infinity;\n var xcurrent = 0;\n var ycurrent = 0;\n for (var i = 0; i < len; i++) {\n xcurrent = data[i].cx || 0;\n ycurrent = data[i].cy || 0;\n xsum += xcurrent;\n ysum += ycurrent;\n xysum += xcurrent * ycurrent;\n xxsum += xcurrent * xcurrent;\n xmin = Math.min(xmin, xcurrent);\n xmax = Math.max(xmax, xcurrent);\n }\n var a = len * xxsum !== xsum * xsum ? (len * xysum - xsum * ysum) / (len * xxsum - xsum * xsum) : 0;\n return {\n xmin: xmin,\n xmax: xmax,\n a: a,\n b: (ysum - a * xsum) / len\n };\n};","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\n// Note: DON'T Export these const from the package as we are still targeting ES3 this will export a mutable variables that someone could change!!!\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\n// Generally you should only put values that are used more than 2 times and then only if not already exposed as a constant (such as SdkCoreNames)\r\n// as when using \"short\" named values from here they will be will be minified smaller than the SdkCoreNames[eSdkCoreNames.xxxx] value.\r\nvar _AUTHENTICATED_USER_CONTEXT = \"AuthenticatedUserContext\";\r\nvar _TRACK = \"track\";\r\nexport var STR_EMPTY = \"\";\r\nexport var STR_SNIPPET = \"snippet\";\r\nexport var STR_GET_COOKIE_MGR = \"getCookieMgr\";\r\nexport var STR_START_TRACK_PAGE = \"startTrackPage\";\r\nexport var STR_STOP_TRACK_PAGE = \"stopTrackPage\";\r\nexport var STR_FLUSH = \"flush\";\r\nexport var STR_START_TRACK_EVENT = \"startTrackEvent\";\r\nexport var STR_STOP_TRACK_EVENT = \"stopTrackEvent\";\r\nexport var STR_ADD_TELEMETRY_INITIALIZER = \"addTelemetryInitializer\";\r\nexport var STR_ADD_TELEMETRY_INITIALIZERS = STR_ADD_TELEMETRY_INITIALIZER + \"s\";\r\nexport var STR_POLL_INTERNAL_LOGS = \"pollInternalLogs\";\r\nexport var STR_GET_PLUGIN = \"getPlugin\";\r\nexport var STR_EVT_NAMESPACE = \"evtNamespace\";\r\nexport var STR_TRACK_EVENT = _TRACK + \"Event\";\r\nexport var STR_TRACK_TRACE = _TRACK + \"Trace\";\r\nexport var STR_TRACK_METRIC = _TRACK + \"Metric\";\r\nexport var STR_TRACK_PAGE_VIEW = _TRACK + \"PageView\";\r\nexport var STR_TRACK_EXCEPTION = _TRACK + \"Exception\";\r\nexport var STR_TRACK_DEPENDENCY_DATA = _TRACK + \"DependencyData\";\r\nexport var STR_SET_AUTHENTICATED_USER_CONTEXT = \"set\" + _AUTHENTICATED_USER_CONTEXT;\r\nexport var STR_CLEAR_AUTHENTICATED_USER_CONTEXT = \"clear\" + _AUTHENTICATED_USER_CONTEXT;\r\n//# sourceMappingURL=InternalConstants.js.map","/** 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 `_.has` 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 baseHas(object, key) {\n return object != null && hasOwnProperty.call(object, key);\n}\n\nexport default baseHas;\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 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 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 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 isArray from './isArray.js';\nimport isSymbol from './isSymbol.js';\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\nexport default isKey;\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","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","/**\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 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","import getNative from './_getNative.js';\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nexport default nativeCreate;\n","import nativeCreate from './_nativeCreate.js';\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\nexport default 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\nexport default hashDelete;\n","import nativeCreate from './_nativeCreate.js';\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\nexport default hashGet;\n","import nativeCreate from './_nativeCreate.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 * 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\nexport default hashHas;\n","import nativeCreate from './_nativeCreate.js';\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\nexport default hashSet;\n","import hashClear from './_hashClear.js';\nimport hashDelete from './_hashDelete.js';\nimport hashGet from './_hashGet.js';\nimport hashHas from './_hashHas.js';\nimport hashSet from './_hashSet.js';\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\nexport default Hash;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nexport default 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\nexport default eq;\n","import eq from './eq.js';\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\nexport default assocIndexOf;\n","import assocIndexOf from './_assocIndexOf.js';\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\nexport default listCacheDelete;\n","import assocIndexOf from './_assocIndexOf.js';\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\nexport default listCacheGet;\n","import assocIndexOf from './_assocIndexOf.js';\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\nexport default listCacheHas;\n","import assocIndexOf from './_assocIndexOf.js';\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\nexport default listCacheSet;\n","import listCacheClear from './_listCacheClear.js';\nimport listCacheDelete from './_listCacheDelete.js';\nimport listCacheGet from './_listCacheGet.js';\nimport listCacheHas from './_listCacheHas.js';\nimport listCacheSet from './_listCacheSet.js';\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\nexport default ListCache;\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 Hash from './_Hash.js';\nimport ListCache from './_ListCache.js';\nimport Map from './_Map.js';\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\nexport default 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\nexport default isKeyable;\n","import isKeyable from './_isKeyable.js';\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\nexport default getMapData;\n","import getMapData from './_getMapData.js';\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\nexport default mapCacheDelete;\n","import getMapData from './_getMapData.js';\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\nexport default mapCacheGet;\n","import getMapData from './_getMapData.js';\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\nexport default mapCacheHas;\n","import getMapData from './_getMapData.js';\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\nexport default mapCacheSet;\n","import mapCacheClear from './_mapCacheClear.js';\nimport mapCacheDelete from './_mapCacheDelete.js';\nimport mapCacheGet from './_mapCacheGet.js';\nimport mapCacheHas from './_mapCacheHas.js';\nimport mapCacheSet from './_mapCacheSet.js';\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\nexport default MapCache;\n","import MapCache from './_MapCache.js';\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\nexport default memoize;\n","import memoize from './memoize.js';\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\nexport default memoizeCapped;\n","import memoizeCapped from './_memoizeCapped.js';\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\nexport default 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\nexport default arrayMap;\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 isArray from './isArray.js';\nimport isKey from './_isKey.js';\nimport stringToPath from './_stringToPath.js';\nimport toString from './toString.js';\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\nexport default castPath;\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","/** 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\nexport default 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\nexport default isLength;\n","import isSymbol from './isSymbol.js';\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\nexport default toKey;\n","import castPath from './_castPath.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isIndex from './_isIndex.js';\nimport isLength from './isLength.js';\nimport toKey from './_toKey.js';\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\nexport default hasPath;\n","import baseHas from './_baseHas.js';\nimport hasPath from './_hasPath.js';\n\n/**\n * Checks if `path` is a direct property of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\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 = { 'a': { 'b': 2 } };\n * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.has(object, 'a');\n * // => true\n *\n * _.has(object, 'a.b');\n * // => true\n *\n * _.has(object, ['a', 'b']);\n * // => true\n *\n * _.has(other, 'a');\n * // => false\n */\nfunction has(object, path) {\n return object != null && hasPath(object, path, baseHas);\n}\n\nexport default has;\n","import ListCache from './_ListCache.js';\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\nexport default 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\nexport default 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\nexport default 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\nexport default stackHas;\n","import ListCache from './_ListCache.js';\nimport Map from './_Map.js';\nimport MapCache from './_MapCache.js';\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\nexport default stackSet;\n","import ListCache from './_ListCache.js';\nimport stackClear from './_stackClear.js';\nimport stackDelete from './_stackDelete.js';\nimport stackGet from './_stackGet.js';\nimport stackHas from './_stackHas.js';\nimport stackSet from './_stackSet.js';\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\nexport default Stack;\n","/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\nexport default arrayEach;\n","import getNative from './_getNative.js';\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nexport default defineProperty;\n","import defineProperty from './_defineProperty.js';\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\nexport default baseAssignValue;\n","import baseAssignValue from './_baseAssignValue.js';\nimport eq from './eq.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 * 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\nexport default assignValue;\n","import assignValue from './_assignValue.js';\nimport baseAssignValue from './_baseAssignValue.js';\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\nexport default copyObject;\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","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","/**\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 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","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","/** 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","/**\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 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 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","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 copyObject from './_copyObject.js';\nimport keys from './keys.js';\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n}\n\nexport default baseAssign;\n","/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default nativeKeysIn;\n","import isObject from './isObject.js';\nimport isPrototype from './_isPrototype.js';\nimport nativeKeysIn from './_nativeKeysIn.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 `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default baseKeysIn;\n","import arrayLikeKeys from './_arrayLikeKeys.js';\nimport baseKeysIn from './_baseKeysIn.js';\nimport isArrayLike from './isArrayLike.js';\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nexport default keysIn;\n","import copyObject from './_copyObject.js';\nimport keysIn from './keysIn.js';\n\n/**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n}\n\nexport default baseAssignIn;\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\nexport default copyArray;\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\nexport default 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\nexport default stubArray;\n","import arrayFilter from './_arrayFilter.js';\nimport stubArray from './stubArray.js';\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\nexport default getSymbols;\n","import copyObject from './_copyObject.js';\nimport getSymbols from './_getSymbols.js';\n\n/**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n}\n\nexport default copySymbols;\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\nexport default arrayPush;\n","import overArg from './_overArg.js';\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nexport default getPrototype;\n","import arrayPush from './_arrayPush.js';\nimport getPrototype from './_getPrototype.js';\nimport getSymbols from './_getSymbols.js';\nimport stubArray from './stubArray.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n};\n\nexport default getSymbolsIn;\n","import copyObject from './_copyObject.js';\nimport getSymbolsIn from './_getSymbolsIn.js';\n\n/**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n}\n\nexport default copySymbolsIn;\n","import arrayPush from './_arrayPush.js';\nimport isArray from './isArray.js';\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\nexport default baseGetAllKeys;\n","import baseGetAllKeys from './_baseGetAllKeys.js';\nimport getSymbols from './_getSymbols.js';\nimport keys from './keys.js';\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\nexport default getAllKeys;\n","import baseGetAllKeys from './_baseGetAllKeys.js';\nimport getSymbolsIn from './_getSymbolsIn.js';\nimport keysIn from './keysIn.js';\n\n/**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n}\n\nexport default getAllKeysIn;\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 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","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n}\n\nexport default initCloneArray;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nexport default Uint8Array;\n","import Uint8Array from './_Uint8Array.js';\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\nexport default cloneArrayBuffer;\n","import cloneArrayBuffer from './_cloneArrayBuffer.js';\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\nexport default cloneDataView;\n","/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\n\nexport default cloneRegExp;\n","import Symbol from './_Symbol.js';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\nexport default cloneSymbol;\n","import cloneArrayBuffer from './_cloneArrayBuffer.js';\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nexport default cloneTypedArray;\n","import cloneArrayBuffer from './_cloneArrayBuffer.js';\nimport cloneDataView from './_cloneDataView.js';\nimport cloneRegExp from './_cloneRegExp.js';\nimport cloneSymbol from './_cloneSymbol.js';\nimport cloneTypedArray from './_cloneTypedArray.js';\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n}\n\nexport default initCloneByTag;\n","import isObject from './isObject.js';\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\nexport default baseCreate;\n","import baseCreate from './_baseCreate.js';\nimport getPrototype from './_getPrototype.js';\nimport isPrototype from './_isPrototype.js';\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\nexport default initCloneObject;\n","import getTag from './_getTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]';\n\n/**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\nfunction baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n}\n\nexport default baseIsMap;\n","import baseIsMap from './_baseIsMap.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsMap = nodeUtil && nodeUtil.isMap;\n\n/**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\nvar isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\nexport default isMap;\n","import getTag from './_getTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar setTag = '[object Set]';\n\n/**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\nfunction baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n}\n\nexport default baseIsSet;\n","import baseIsSet from './_baseIsSet.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsSet = nodeUtil && nodeUtil.isSet;\n\n/**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\nvar isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\nexport default isSet;\n","import Stack from './_Stack.js';\nimport arrayEach from './_arrayEach.js';\nimport assignValue from './_assignValue.js';\nimport baseAssign from './_baseAssign.js';\nimport baseAssignIn from './_baseAssignIn.js';\nimport cloneBuffer from './_cloneBuffer.js';\nimport copyArray from './_copyArray.js';\nimport copySymbols from './_copySymbols.js';\nimport copySymbolsIn from './_copySymbolsIn.js';\nimport getAllKeys from './_getAllKeys.js';\nimport getAllKeysIn from './_getAllKeysIn.js';\nimport getTag from './_getTag.js';\nimport initCloneArray from './_initCloneArray.js';\nimport initCloneByTag from './_initCloneByTag.js';\nimport initCloneObject from './_initCloneObject.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isMap from './isMap.js';\nimport isObject from './isObject.js';\nimport isSet from './isSet.js';\nimport keys from './keys.js';\nimport keysIn from './keysIn.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n}\n\nexport default baseClone;\n","import baseClone from './_baseClone.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * This method is like `_.cloneWith` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the deep cloned value.\n * @see _.cloneWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(true);\n * }\n * }\n *\n * var el = _.cloneDeepWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 20\n */\nfunction cloneDeepWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);\n}\n\nexport default cloneDeepWith;\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","/**\n * Converts `iterator` to an array.\n *\n * @private\n * @param {Object} iterator The iterator to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction iteratorToArray(iterator) {\n var data,\n result = [];\n\n while (!(data = iterator.next()).done) {\n result.push(data.value);\n }\n return result;\n}\n\nexport default iteratorToArray;\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\nexport default 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\nexport default setToArray;\n","/**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction asciiToArray(string) {\n return string.split('');\n}\n\nexport default asciiToArray;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsZWJ = '\\\\u200d';\n\n/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\nvar reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n/**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\nfunction hasUnicode(string) {\n return reHasUnicode.test(string);\n}\n\nexport default hasUnicode;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction unicodeToArray(string) {\n return string.match(reUnicode) || [];\n}\n\nexport default unicodeToArray;\n","import asciiToArray from './_asciiToArray.js';\nimport hasUnicode from './_hasUnicode.js';\nimport unicodeToArray from './_unicodeToArray.js';\n\n/**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n}\n\nexport default stringToArray;\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 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 Symbol from './_Symbol.js';\nimport copyArray from './_copyArray.js';\nimport getTag from './_getTag.js';\nimport isArrayLike from './isArrayLike.js';\nimport isString from './isString.js';\nimport iteratorToArray from './_iteratorToArray.js';\nimport mapToArray from './_mapToArray.js';\nimport setToArray from './_setToArray.js';\nimport stringToArray from './_stringToArray.js';\nimport values from './values.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n setTag = '[object Set]';\n\n/** Built-in value references. */\nvar symIterator = Symbol ? Symbol.iterator : undefined;\n\n/**\n * Converts `value` to an array.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Array} Returns the converted array.\n * @example\n *\n * _.toArray({ 'a': 1, 'b': 2 });\n * // => [1, 2]\n *\n * _.toArray('abc');\n * // => ['a', 'b', 'c']\n *\n * _.toArray(1);\n * // => []\n *\n * _.toArray(null);\n * // => []\n */\nfunction toArray(value) {\n if (!value) {\n return [];\n }\n if (isArrayLike(value)) {\n return isString(value) ? stringToArray(value) : copyArray(value);\n }\n if (symIterator && value[symIterator]) {\n return iteratorToArray(value[symIterator]());\n }\n var tag = getTag(value),\n func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values);\n\n return func(value);\n}\n\nexport default toArray;\n","var toString = Object.prototype.toString;\nvar errorToString = Error.prototype.toString;\nvar regExpToString = RegExp.prototype.toString;\nvar symbolToString = typeof Symbol !== 'undefined' ? Symbol.prototype.toString : function () {\n return '';\n};\nvar SYMBOL_REGEXP = /^Symbol\\((.*)\\)(.*)$/;\n\nfunction printNumber(val) {\n if (val != +val) return 'NaN';\n var isNegativeZero = val === 0 && 1 / val < 0;\n return isNegativeZero ? '-0' : '' + val;\n}\n\nfunction printSimpleValue(val, quoteStrings) {\n if (quoteStrings === void 0) {\n quoteStrings = false;\n }\n\n if (val == null || val === true || val === false) return '' + val;\n var typeOf = typeof val;\n if (typeOf === 'number') return printNumber(val);\n if (typeOf === 'string') return quoteStrings ? \"\\\"\" + val + \"\\\"\" : val;\n if (typeOf === 'function') return '[Function ' + (val.name || 'anonymous') + ']';\n if (typeOf === 'symbol') return symbolToString.call(val).replace(SYMBOL_REGEXP, 'Symbol($1)');\n var tag = toString.call(val).slice(8, -1);\n if (tag === 'Date') return isNaN(val.getTime()) ? '' + val : val.toISOString(val);\n if (tag === 'Error' || val instanceof Error) return '[' + errorToString.call(val) + ']';\n if (tag === 'RegExp') return regExpToString.call(val);\n return null;\n}\n\nexport default function printValue(value, quoteStrings) {\n var result = printSimpleValue(value, quoteStrings);\n if (result !== null) return result;\n return JSON.stringify(value, function (key, value) {\n var result = printSimpleValue(this[key], quoteStrings);\n if (result !== null) return result;\n return value;\n }, 2);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport printValue from './util/printValue';\nexport var mixed = {\n default: '${path} is invalid',\n required: '${path} is a required field',\n oneOf: '${path} must be one of the following values: ${values}',\n notOneOf: '${path} must not be one of the following values: ${values}',\n notType: function notType(_ref) {\n var path = _ref.path,\n type = _ref.type,\n value = _ref.value,\n originalValue = _ref.originalValue;\n var isCast = originalValue != null && originalValue !== value;\n var msg = path + \" must be a `\" + type + \"` type, \" + (\"but the final value was: `\" + printValue(value, true) + \"`\") + (isCast ? \" (cast from the value `\" + printValue(originalValue, true) + \"`).\" : '.');\n\n if (value === null) {\n msg += \"\\n If \\\"null\\\" is intended as an empty value be sure to mark the schema as `.nullable()`\";\n }\n\n return msg;\n },\n defined: '${path} must be defined'\n};\nexport var string = {\n length: '${path} must be exactly ${length} characters',\n min: '${path} must be at least ${min} characters',\n max: '${path} must be at most ${max} characters',\n matches: '${path} must match the following: \"${regex}\"',\n email: '${path} must be a valid email',\n url: '${path} must be a valid URL',\n uuid: '${path} must be a valid UUID',\n trim: '${path} must be a trimmed string',\n lowercase: '${path} must be a lowercase string',\n uppercase: '${path} must be a upper case string'\n};\nexport var number = {\n min: '${path} must be greater than or equal to ${min}',\n max: '${path} must be less than or equal to ${max}',\n lessThan: '${path} must be less than ${less}',\n moreThan: '${path} must be greater than ${more}',\n notEqual: '${path} must be not equal to ${notEqual}',\n positive: '${path} must be a positive number',\n negative: '${path} must be a negative number',\n integer: '${path} must be an integer'\n};\nexport var date = {\n min: '${path} field must be later than ${min}',\n max: '${path} field must be at earlier than ${max}'\n};\nexport var boolean = {\n isValue: '${path} field must be ${value}'\n};\nexport var object = {\n noUnknown: '${path} field has unspecified keys: ${unknown}'\n};\nexport var array = {\n min: '${path} field must have at least ${min} items',\n max: '${path} field must have less than or equal to ${max} items'\n};\nexport default _extends(Object.create(null), {\n mixed: mixed,\n string: string,\n number: number,\n date: date,\n object: object,\n array: array,\n boolean: boolean\n});","export default (function (obj) {\n return obj && obj.__isYupSchema__;\n});","import has from \"lodash-es/has\";\nimport isSchema from './util/isSchema';\n\nvar Condition = /*#__PURE__*/function () {\n function Condition(refs, options) {\n this.refs = refs;\n\n if (typeof options === 'function') {\n this.fn = options;\n return;\n }\n\n if (!has(options, 'is')) throw new TypeError('`is:` is required for `when()` conditions');\n if (!options.then && !options.otherwise) throw new TypeError('either `then:` or `otherwise:` is required for `when()` conditions');\n var is = options.is,\n then = options.then,\n otherwise = options.otherwise;\n var check = typeof is === 'function' ? is : function () {\n for (var _len = arguments.length, values = new Array(_len), _key = 0; _key < _len; _key++) {\n values[_key] = arguments[_key];\n }\n\n return values.every(function (value) {\n return value === is;\n });\n };\n\n this.fn = function () {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n var options = args.pop();\n var schema = args.pop();\n var branch = check.apply(void 0, args) ? then : otherwise;\n if (!branch) return undefined;\n if (typeof branch === 'function') return branch(schema);\n return schema.concat(branch.resolve(options));\n };\n }\n\n var _proto = Condition.prototype;\n\n _proto.resolve = function resolve(base, options) {\n var values = this.refs.map(function (ref) {\n return ref.getValue(options == null ? void 0 : options.value, options == null ? void 0 : options.parent, options == null ? void 0 : options.context);\n });\n var schema = this.fn.apply(base, values.concat(base, options));\n if (schema === undefined || schema === base) return base;\n if (!isSchema(schema)) throw new TypeError('conditions must return a schema object');\n return schema.resolve(options);\n };\n\n return Condition;\n}();\n\nexport default Condition;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport printValue from './util/printValue';\nvar strReg = /\\$\\{\\s*(\\w+)\\s*\\}/g;\nexport default function ValidationError(errors, value, field, type) {\n var _this = this;\n\n this.name = 'ValidationError';\n this.value = value;\n this.path = field;\n this.type = type;\n this.errors = [];\n this.inner = [];\n if (errors) [].concat(errors).forEach(function (err) {\n _this.errors = _this.errors.concat(err.errors || err);\n if (err.inner) _this.inner = _this.inner.concat(err.inner.length ? err.inner : err);\n });\n this.message = this.errors.length > 1 ? this.errors.length + \" errors occurred\" : this.errors[0];\n if (Error.captureStackTrace) Error.captureStackTrace(this, ValidationError);\n}\nValidationError.prototype = Object.create(Error.prototype);\nValidationError.prototype.constructor = ValidationError;\n\nValidationError.isError = function (err) {\n return err && err.name === 'ValidationError';\n};\n\nValidationError.formatError = function (message, params) {\n var path = params.label || params.path || 'this';\n if (path !== params.path) params = _extends({}, params, {\n path: path\n });\n if (typeof message === 'string') return message.replace(strReg, function (_, key) {\n return printValue(params[key]);\n });\n if (typeof message === 'function') return message(params);\n return message;\n};","export function asCallback(promise, callback) {\n promise.then(function (result) {\n return callback(null, result);\n }, callback);\n}\nexport var once = function once(cb) {\n var fired = false;\n return function () {\n if (fired) return;\n fired = true;\n cb.apply(void 0, arguments);\n };\n};\nexport function parallel(fns, cb) {\n var callback = once(cb);\n var count = fns.length;\n\n if (count === 0) {\n return void callback(null, []);\n }\n\n var results = new Array(count);\n\n var _loop = function _loop(i) {\n var idx = i;\n var fn = fns[i];\n fn(function (err, value) {\n if (err) return callback(err);\n results[idx] = value;\n if (--count <= 0) callback(null, results);\n });\n };\n\n for (var i = 0; i < fns.length; i++) {\n _loop(i);\n }\n}\nexport function settled(fns, cb) {\n var callback = once(cb);\n var count = fns.length;\n\n if (count === 0) {\n return void callback(null, []);\n }\n\n var results = new Array(fns.length);\n\n var _loop2 = function _loop2(i) {\n var idx = i;\n var fn = fns[i];\n fn(function (err, value) {\n results[idx] = err ? {\n fulfilled: false,\n value: err\n } : {\n fulfilled: true,\n value: value\n };\n if (--count <= 0) callback(null, results);\n });\n };\n\n for (var i = 0; i < fns.length; i++) {\n _loop2(i);\n }\n}","import ValidationError from '../ValidationError';\nimport { once } from './async';\nexport default function runTests(options, cb) {\n var endEarly = options.endEarly,\n tests = options.tests,\n args = options.args,\n value = options.value,\n errors = options.errors,\n sort = options.sort,\n path = options.path;\n var callback = once(cb);\n var count = tests.length;\n var nestedErrors = [];\n errors = errors ? errors : [];\n if (!count) return errors.length ? callback(new ValidationError(errors, value, path)) : callback(null, value);\n\n for (var i = 0; i < tests.length; i++) {\n var test = tests[i];\n test(args, function finishTestRun(err) {\n if (err) {\n // always return early for non validation errors\n if (!ValidationError.isError(err)) {\n return callback(err);\n }\n\n if (endEarly) {\n err.value = value;\n return callback(err);\n }\n\n nestedErrors.push(err);\n }\n\n if (--count <= 0) {\n if (nestedErrors.length) {\n if (sort) nestedErrors.sort(sort); //show parent errors after the nested ones: name.first, name\n\n if (errors.length) nestedErrors.push.apply(nestedErrors, errors);\n errors = nestedErrors;\n }\n\n if (errors.length) {\n callback(new ValidationError(errors, value, path));\n return;\n }\n\n callback(null, value);\n }\n });\n }\n}","import has from \"lodash-es/has\";\nimport isSchema from './isSchema';\n\nvar isObject = function isObject(obj) {\n return Object.prototype.toString.call(obj) === '[object Object]';\n};\n\nexport default function prependDeep(target, source) {\n for (var key in source) {\n if (has(source, key)) {\n var sourceVal = source[key],\n targetVal = target[key];\n\n if (targetVal === undefined) {\n target[key] = sourceVal;\n } else if (targetVal === sourceVal) {\n continue;\n } else if (isSchema(targetVal)) {\n if (isSchema(sourceVal)) target[key] = sourceVal.concat(targetVal);\n } else if (isObject(targetVal)) {\n if (isObject(sourceVal)) target[key] = prependDeep(targetVal, sourceVal);\n } else if (Array.isArray(targetVal)) {\n if (Array.isArray(sourceVal)) target[key] = sourceVal.concat(targetVal);\n }\n }\n }\n\n return target;\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\nexport default createBaseFor;\n","import createBaseFor from './_createBaseFor.js';\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\nexport default baseFor;\n","import baseFor from './_baseFor.js';\nimport keys from './keys.js';\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\nexport default baseForOwn;\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\nexport default 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\nexport default setCacheHas;\n","import MapCache from './_MapCache.js';\nimport setCacheAdd from './_setCacheAdd.js';\nimport setCacheHas from './_setCacheHas.js';\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\nexport default 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\nexport default 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\nexport default cacheHas;\n","import SetCache from './_SetCache.js';\nimport arraySome from './_arraySome.js';\nimport cacheHas from './_cacheHas.js';\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 // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\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\nexport default equalArrays;\n","import Symbol from './_Symbol.js';\nimport Uint8Array from './_Uint8Array.js';\nimport eq from './eq.js';\nimport equalArrays from './_equalArrays.js';\nimport mapToArray from './_mapToArray.js';\nimport setToArray from './_setToArray.js';\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\nexport default equalByTag;\n","import getAllKeys from './_getAllKeys.js';\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 // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\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\nexport default equalObjects;\n","import Stack from './_Stack.js';\nimport equalArrays from './_equalArrays.js';\nimport equalByTag from './_equalByTag.js';\nimport equalObjects from './_equalObjects.js';\nimport getTag from './_getTag.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isTypedArray from './isTypedArray.js';\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\nexport default baseIsEqualDeep;\n","import baseIsEqualDeep from './_baseIsEqualDeep.js';\nimport isObjectLike from './isObjectLike.js';\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\nexport default baseIsEqual;\n","import Stack from './_Stack.js';\nimport baseIsEqual from './_baseIsEqual.js';\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\nexport default baseIsMatch;\n","import isObject from './isObject.js';\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\nexport default isStrictComparable;\n","import isStrictComparable from './_isStrictComparable.js';\nimport keys from './keys.js';\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\nexport default 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\nexport default matchesStrictComparable;\n","import baseIsMatch from './_baseIsMatch.js';\nimport getMatchData from './_getMatchData.js';\nimport matchesStrictComparable from './_matchesStrictComparable.js';\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\nexport default baseMatches;\n","import castPath from './_castPath.js';\nimport toKey from './_toKey.js';\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\nexport default baseGet;\n","import baseGet from './_baseGet.js';\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\nexport default 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\nexport default baseHasIn;\n","import baseHasIn from './_baseHasIn.js';\nimport hasPath from './_hasPath.js';\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\nexport default hasIn;\n","import baseIsEqual from './_baseIsEqual.js';\nimport get from './get.js';\nimport hasIn from './hasIn.js';\nimport isKey from './_isKey.js';\nimport isStrictComparable from './_isStrictComparable.js';\nimport matchesStrictComparable from './_matchesStrictComparable.js';\nimport toKey from './_toKey.js';\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\nexport default 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\nexport default 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\nexport default baseProperty;\n","import baseGet from './_baseGet.js';\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\nexport default basePropertyDeep;\n","import baseProperty from './_baseProperty.js';\nimport basePropertyDeep from './_basePropertyDeep.js';\nimport isKey from './_isKey.js';\nimport toKey from './_toKey.js';\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\nexport default property;\n","import baseMatches from './_baseMatches.js';\nimport baseMatchesProperty from './_baseMatchesProperty.js';\nimport identity from './identity.js';\nimport isArray from './isArray.js';\nimport property from './property.js';\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\nexport default baseIteratee;\n","import baseAssignValue from './_baseAssignValue.js';\nimport baseForOwn from './_baseForOwn.js';\nimport baseIteratee from './_baseIteratee.js';\n\n/**\n * Creates an object with the same keys as `object` and values generated\n * by running each own enumerable string keyed property of `object` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapKeys\n * @example\n *\n * var users = {\n * 'fred': { 'user': 'fred', 'age': 40 },\n * 'pebbles': { 'user': 'pebbles', 'age': 1 }\n * };\n *\n * _.mapValues(users, function(o) { return o.age; });\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n *\n * // The `_.property` iteratee shorthand.\n * _.mapValues(users, 'age');\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n */\nfunction mapValues(object, iteratee) {\n var result = {};\n iteratee = baseIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, key, iteratee(value, key, object));\n });\n return result;\n}\n\nexport default mapValues;\n","import { getter } from 'property-expr';\nvar prefixes = {\n context: '$',\n value: '.'\n};\n\nvar Reference = /*#__PURE__*/function () {\n function Reference(key, options) {\n if (options === void 0) {\n options = {};\n }\n\n if (typeof key !== 'string') throw new TypeError('ref must be a string, got: ' + key);\n this.key = key.trim();\n if (key === '') throw new TypeError('ref must be a non-empty string');\n this.isContext = this.key[0] === prefixes.context;\n this.isValue = this.key[0] === prefixes.value;\n this.isSibling = !this.isContext && !this.isValue;\n var prefix = this.isContext ? prefixes.context : this.isValue ? prefixes.value : '';\n this.path = this.key.slice(prefix.length);\n this.getter = this.path && getter(this.path, true);\n this.map = options.map;\n }\n\n var _proto = Reference.prototype;\n\n _proto.getValue = function getValue(value, parent, context) {\n var result = this.isContext ? context : this.isValue ? value : parent;\n if (this.getter) result = this.getter(result || {});\n if (this.map) result = this.map(result);\n return result;\n }\n /**\n *\n * @param {*} value\n * @param {Object} options\n * @param {Object=} options.context\n * @param {Object=} options.parent\n */\n ;\n\n _proto.cast = function cast(value, options) {\n return this.getValue(value, options == null ? void 0 : options.parent, options == null ? void 0 : options.context);\n };\n\n _proto.resolve = function resolve() {\n return this;\n };\n\n _proto.describe = function describe() {\n return {\n type: 'ref',\n key: this.key\n };\n };\n\n _proto.toString = function toString() {\n return \"Ref(\" + this.key + \")\";\n };\n\n Reference.isRef = function isRef(value) {\n return value && value.__isYupRef;\n };\n\n return Reference;\n}();\n\nexport { Reference as default };\nReference.prototype.__isYupRef = true;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport mapValues from \"lodash-es/mapValues\";\nimport ValidationError from '../ValidationError';\nimport Ref from '../Reference';\nexport default function createValidation(config) {\n function validate(_ref, cb) {\n var value = _ref.value,\n path = _ref.path,\n label = _ref.label,\n options = _ref.options,\n originalValue = _ref.originalValue,\n sync = _ref.sync,\n rest = _objectWithoutPropertiesLoose(_ref, [\"value\", \"path\", \"label\", \"options\", \"originalValue\", \"sync\"]);\n\n var name = config.name,\n test = config.test,\n params = config.params,\n message = config.message;\n var parent = options.parent,\n context = options.context;\n\n function resolve(item) {\n return Ref.isRef(item) ? item.getValue(value, parent, context) : item;\n }\n\n function createError(overrides) {\n if (overrides === void 0) {\n overrides = {};\n }\n\n var nextParams = mapValues(_extends({\n value: value,\n originalValue: originalValue,\n label: label,\n path: overrides.path || path\n }, params, overrides.params), resolve);\n var error = new ValidationError(ValidationError.formatError(overrides.message || message, nextParams), value, nextParams.path, overrides.type || name);\n error.params = nextParams;\n return error;\n }\n\n var ctx = _extends({\n path: path,\n parent: parent,\n type: name,\n createError: createError,\n resolve: resolve,\n options: options,\n originalValue: originalValue\n }, rest);\n\n if (!sync) {\n try {\n Promise.resolve(test.call(ctx, value, ctx)).then(function (validOrError) {\n if (ValidationError.isError(validOrError)) cb(validOrError);else if (!validOrError) cb(createError());else cb(null, validOrError);\n });\n } catch (err) {\n cb(err);\n }\n\n return;\n }\n\n var result;\n\n try {\n var _result;\n\n result = test.call(ctx, value, ctx);\n\n if (typeof ((_result = result) == null ? void 0 : _result.then) === 'function') {\n throw new Error(\"Validation test of type: \\\"\" + ctx.type + \"\\\" returned a Promise during a synchronous validate. \" + \"This test will finish after the validate call has returned\");\n }\n } catch (err) {\n cb(err);\n return;\n }\n\n if (ValidationError.isError(result)) cb(result);else if (!result) cb(createError());else cb(null, result);\n }\n\n validate.OPTIONS = config;\n return validate;\n}","import { forEach } from 'property-expr';\n\nvar trim = function trim(part) {\n return part.substr(0, part.length - 1).substr(1);\n};\n\nexport function getIn(schema, path, value, context) {\n if (context === void 0) {\n context = value;\n }\n\n var parent, lastPart, lastPartDebug; // root path: ''\n\n if (!path) return {\n parent: parent,\n parentPath: path,\n schema: schema\n };\n forEach(path, function (_part, isBracket, isArray) {\n var part = isBracket ? trim(_part) : _part;\n schema = schema.resolve({\n context: context,\n parent: parent,\n value: value\n });\n\n if (schema.innerType) {\n var idx = isArray ? parseInt(part, 10) : 0;\n\n if (value && idx >= value.length) {\n throw new Error(\"Yup.reach cannot resolve an array item at index: \" + _part + \", in the path: \" + path + \". \" + \"because there is no value at that index. \");\n }\n\n parent = value;\n value = value && value[idx];\n schema = schema.innerType;\n } // sometimes the array index part of a path doesn't exist: \"nested.arr.child\"\n // in these cases the current part is the next schema and should be processed\n // in this iteration. For cases where the index signature is included this\n // check will fail and we'll handle the `child` part on the next iteration like normal\n\n\n if (!isArray) {\n if (!schema.fields || !schema.fields[part]) throw new Error(\"The schema does not contain the path: \" + path + \". \" + (\"(failed at: \" + lastPartDebug + \" which is a type: \\\"\" + schema._type + \"\\\")\"));\n parent = value;\n value = value && value[part];\n schema = schema.fields[part];\n }\n\n lastPart = part;\n lastPartDebug = isBracket ? '[' + _part + ']' : '.' + _part;\n });\n return {\n schema: schema,\n parent: parent,\n parentPath: lastPart\n };\n}\n\nvar reach = function reach(obj, path, value, context) {\n return getIn(obj, path, value, context).schema;\n};\n\nexport default reach;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\n\nfunction _createForOfIteratorHelperLoose(o, allowArrayLike) { var it; if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } it = o[Symbol.iterator](); return it.next.bind(it); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nimport has from \"lodash-es/has\";\nimport cloneDeepWith from \"lodash-es/cloneDeepWith\";\nimport _toArray from \"lodash-es/toArray\";\nimport { mixed as locale } from './locale';\nimport Condition from './Condition';\nimport runTests from './util/runTests';\nimport prependDeep from './util/prependDeep';\nimport isSchema from './util/isSchema';\nimport createValidation from './util/createValidation';\nimport printValue from './util/printValue';\nimport Ref from './Reference';\nimport { getIn } from './util/reach';\n\nvar RefSet = /*#__PURE__*/function () {\n function RefSet() {\n this.list = new Set();\n this.refs = new Map();\n }\n\n var _proto = RefSet.prototype;\n\n _proto.describe = function describe() {\n var description = [];\n\n for (var _iterator = _createForOfIteratorHelperLoose(this.list), _step; !(_step = _iterator()).done;) {\n var item = _step.value;\n description.push(item);\n }\n\n for (var _iterator2 = _createForOfIteratorHelperLoose(this.refs), _step2; !(_step2 = _iterator2()).done;) {\n var _step2$value = _step2.value,\n ref = _step2$value[1];\n description.push(ref.describe());\n }\n\n return description;\n };\n\n _proto.toArray = function toArray() {\n return _toArray(this.list).concat(_toArray(this.refs.values()));\n };\n\n _proto.add = function add(value) {\n Ref.isRef(value) ? this.refs.set(value.key, value) : this.list.add(value);\n };\n\n _proto.delete = function _delete(value) {\n Ref.isRef(value) ? this.refs.delete(value.key) : this.list.delete(value);\n };\n\n _proto.has = function has(value, resolve) {\n if (this.list.has(value)) return true;\n var item,\n values = this.refs.values();\n\n while (item = values.next(), !item.done) {\n if (resolve(item.value) === value) return true;\n }\n\n return false;\n };\n\n _proto.clone = function clone() {\n var next = new RefSet();\n next.list = new Set(this.list);\n next.refs = new Map(this.refs);\n return next;\n };\n\n _proto.merge = function merge(newItems, removeItems) {\n var next = this.clone();\n newItems.list.forEach(function (value) {\n return next.add(value);\n });\n newItems.refs.forEach(function (value) {\n return next.add(value);\n });\n removeItems.list.forEach(function (value) {\n return next.delete(value);\n });\n removeItems.refs.forEach(function (value) {\n return next.delete(value);\n });\n return next;\n };\n\n _createClass(RefSet, [{\n key: \"size\",\n get: function get() {\n return this.list.size + this.refs.size;\n }\n }]);\n\n return RefSet;\n}();\n\nexport default function SchemaType(options) {\n var _this = this;\n\n if (options === void 0) {\n options = {};\n }\n\n if (!(this instanceof SchemaType)) return new SchemaType();\n this._deps = [];\n this._conditions = [];\n this._options = {\n abortEarly: true,\n recursive: true\n };\n this._exclusive = Object.create(null);\n this._whitelist = new RefSet();\n this._blacklist = new RefSet();\n this.tests = [];\n this.transforms = [];\n this.withMutation(function () {\n _this.typeError(locale.notType);\n });\n if (has(options, 'default')) this._defaultDefault = options.default;\n this.type = options.type || 'mixed'; // TODO: remove\n\n this._type = options.type || 'mixed';\n}\nvar proto = SchemaType.prototype = {\n __isYupSchema__: true,\n constructor: SchemaType,\n clone: function clone() {\n var _this2 = this;\n\n if (this._mutate) return this; // if the nested value is a schema we can skip cloning, since\n // they are already immutable\n\n return cloneDeepWith(this, function (value, key) {\n if (isSchema(value) && value !== _this2) return value; // fix for ie11 when cloning Set and Map\n\n if (key === '_whitelist' || key === '_blacklist') {\n return value.clone();\n }\n });\n },\n label: function label(_label) {\n var next = this.clone();\n next._label = _label;\n return next;\n },\n meta: function meta(obj) {\n if (arguments.length === 0) return this._meta;\n var next = this.clone();\n next._meta = _extends(next._meta || {}, obj);\n return next;\n },\n withMutation: function withMutation(fn) {\n var before = this._mutate;\n this._mutate = true;\n var result = fn(this);\n this._mutate = before;\n return result;\n },\n concat: function concat(schema) {\n if (!schema || schema === this) return this;\n if (schema._type !== this._type && this._type !== 'mixed') throw new TypeError(\"You cannot `concat()` schema's of different types: \" + this._type + \" and \" + schema._type);\n var next = prependDeep(schema.clone(), this); // new undefined default is overridden by old non-undefined one, revert\n\n if (has(schema, '_default')) next._default = schema._default;\n next.tests = this.tests;\n next._exclusive = this._exclusive; // manually merge the blacklist/whitelist (the other `schema` takes\n // precedence in case of conflicts)\n\n next._whitelist = this._whitelist.merge(schema._whitelist, schema._blacklist);\n next._blacklist = this._blacklist.merge(schema._blacklist, schema._whitelist); // manually add the new tests to ensure\n // the deduping logic is consistent\n\n next.withMutation(function (next) {\n schema.tests.forEach(function (fn) {\n next.test(fn.OPTIONS);\n });\n });\n return next;\n },\n isType: function isType(v) {\n if (this._nullable && v === null) return true;\n return !this._typeCheck || this._typeCheck(v);\n },\n resolve: function resolve(options) {\n var schema = this;\n\n if (schema._conditions.length) {\n var conditions = schema._conditions;\n schema = schema.clone();\n schema._conditions = [];\n schema = conditions.reduce(function (schema, condition) {\n return condition.resolve(schema, options);\n }, schema);\n schema = schema.resolve(options);\n }\n\n return schema;\n },\n\n /**\n *\n * @param {*} value\n * @param {Object} options\n * @param {*=} options.parent\n * @param {*=} options.context\n */\n cast: function cast(value, options) {\n if (options === void 0) {\n options = {};\n }\n\n var resolvedSchema = this.resolve(_extends({\n value: value\n }, options));\n\n var result = resolvedSchema._cast(value, options);\n\n if (value !== undefined && options.assert !== false && resolvedSchema.isType(result) !== true) {\n var formattedValue = printValue(value);\n var formattedResult = printValue(result);\n throw new TypeError(\"The value of \" + (options.path || 'field') + \" could not be cast to a value \" + (\"that satisfies the schema type: \\\"\" + resolvedSchema._type + \"\\\". \\n\\n\") + (\"attempted value: \" + formattedValue + \" \\n\") + (formattedResult !== formattedValue ? \"result of cast: \" + formattedResult : ''));\n }\n\n return result;\n },\n _cast: function _cast(rawValue) {\n var _this3 = this;\n\n var value = rawValue === undefined ? rawValue : this.transforms.reduce(function (value, fn) {\n return fn.call(_this3, value, rawValue);\n }, rawValue);\n\n if (value === undefined && has(this, '_default')) {\n value = this.getDefault();\n }\n\n return value;\n },\n _validate: function _validate(_value, options, cb) {\n var _this4 = this;\n\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n sync = _options.sync,\n path = _options.path,\n _options$from = _options.from,\n from = _options$from === void 0 ? [] : _options$from,\n _options$originalValu = _options.originalValue,\n originalValue = _options$originalValu === void 0 ? _value : _options$originalValu,\n _options$strict = _options.strict,\n strict = _options$strict === void 0 ? this._options.strict : _options$strict,\n _options$abortEarly = _options.abortEarly,\n abortEarly = _options$abortEarly === void 0 ? this._options.abortEarly : _options$abortEarly;\n var value = _value;\n\n if (!strict) {\n this._validating = true;\n value = this._cast(value, _extends({\n assert: false\n }, options));\n this._validating = false;\n } // value is cast, we can check if it meets type requirements\n\n\n var args = {\n value: value,\n path: path,\n options: options,\n originalValue: originalValue,\n schema: this,\n label: this._label,\n sync: sync,\n from: from\n };\n var initialTests = [];\n if (this._typeError) initialTests.push(this._typeError);\n if (this._whitelistError) initialTests.push(this._whitelistError);\n if (this._blacklistError) initialTests.push(this._blacklistError);\n return runTests({\n args: args,\n value: value,\n path: path,\n sync: sync,\n tests: initialTests,\n endEarly: abortEarly\n }, function (err) {\n if (err) return void cb(err);\n runTests({\n tests: _this4.tests,\n args: args,\n path: path,\n sync: sync,\n value: value,\n endEarly: abortEarly\n }, cb);\n });\n },\n validate: function validate(value, options, maybeCb) {\n if (options === void 0) {\n options = {};\n }\n\n var schema = this.resolve(_extends({}, options, {\n value: value\n })); // callback case is for nested validations\n\n return typeof maybeCb === 'function' ? schema._validate(value, options, maybeCb) : new Promise(function (resolve, reject) {\n return schema._validate(value, options, function (err, value) {\n if (err) reject(err);else resolve(value);\n });\n });\n },\n validateSync: function validateSync(value, options) {\n if (options === void 0) {\n options = {};\n }\n\n var schema = this.resolve(_extends({}, options, {\n value: value\n }));\n var result;\n\n schema._validate(value, _extends({}, options, {\n sync: true\n }), function (err, value) {\n if (err) throw err;\n result = value;\n });\n\n return result;\n },\n isValid: function isValid(value, options) {\n return this.validate(value, options).then(function () {\n return true;\n }).catch(function (err) {\n if (err.name === 'ValidationError') return false;\n throw err;\n });\n },\n isValidSync: function isValidSync(value, options) {\n try {\n this.validateSync(value, options);\n return true;\n } catch (err) {\n if (err.name === 'ValidationError') return false;\n throw err;\n }\n },\n _getDefault: function _getDefault() {\n var defaultValue = has(this, '_default') ? this._default : this._defaultDefault;\n return typeof defaultValue === 'function' ? defaultValue.call(this) : cloneDeepWith(defaultValue);\n },\n getDefault: function getDefault(options) {\n if (options === void 0) {\n options = {};\n }\n\n var schema = this.resolve(options);\n return schema._getDefault();\n },\n default: function _default(def) {\n if (arguments.length === 0) {\n console.warn('Calling `schema.default()` as a getter to retrieve a default is deprecated and will be removed in the next version. \\n' + 'Use `schema.getDefault()` instead.');\n return this._getDefault();\n }\n\n var next = this.clone();\n next._default = def;\n return next;\n },\n strict: function strict(isStrict) {\n if (isStrict === void 0) {\n isStrict = true;\n }\n\n var next = this.clone();\n next._options.strict = isStrict;\n return next;\n },\n _isPresent: function _isPresent(value) {\n return value != null;\n },\n required: function required(message) {\n if (message === void 0) {\n message = locale.required;\n }\n\n return this.test({\n message: message,\n name: 'required',\n exclusive: true,\n test: function test(value) {\n return this.schema._isPresent(value);\n }\n });\n },\n notRequired: function notRequired() {\n var next = this.clone();\n next.tests = next.tests.filter(function (test) {\n return test.OPTIONS.name !== 'required';\n });\n return next;\n },\n nullable: function nullable(isNullable) {\n if (isNullable === void 0) {\n isNullable = true;\n }\n\n var next = this.clone();\n next._nullable = isNullable;\n return next;\n },\n transform: function transform(fn) {\n var next = this.clone();\n next.transforms.push(fn);\n return next;\n },\n\n /**\n * Adds a test function to the schema's queue of tests.\n * tests can be exclusive or non-exclusive.\n *\n * - exclusive tests, will replace any existing tests of the same name.\n * - non-exclusive: can be stacked\n *\n * If a non-exclusive test is added to a schema with an exclusive test of the same name\n * the exclusive test is removed and further tests of the same name will be stacked.\n *\n * If an exclusive test is added to a schema with non-exclusive tests of the same name\n * the previous tests are removed and further tests of the same name will replace each other.\n */\n test: function test() {\n var opts;\n\n if (arguments.length === 1) {\n if (typeof (arguments.length <= 0 ? undefined : arguments[0]) === 'function') {\n opts = {\n test: arguments.length <= 0 ? undefined : arguments[0]\n };\n } else {\n opts = arguments.length <= 0 ? undefined : arguments[0];\n }\n } else if (arguments.length === 2) {\n opts = {\n name: arguments.length <= 0 ? undefined : arguments[0],\n test: arguments.length <= 1 ? undefined : arguments[1]\n };\n } else {\n opts = {\n name: arguments.length <= 0 ? undefined : arguments[0],\n message: arguments.length <= 1 ? undefined : arguments[1],\n test: arguments.length <= 2 ? undefined : arguments[2]\n };\n }\n\n if (opts.message === undefined) opts.message = locale.default;\n if (typeof opts.test !== 'function') throw new TypeError('`test` is a required parameters');\n var next = this.clone();\n var validate = createValidation(opts);\n var isExclusive = opts.exclusive || opts.name && next._exclusive[opts.name] === true;\n\n if (opts.exclusive && !opts.name) {\n throw new TypeError('Exclusive tests must provide a unique `name` identifying the test');\n }\n\n next._exclusive[opts.name] = !!opts.exclusive;\n next.tests = next.tests.filter(function (fn) {\n if (fn.OPTIONS.name === opts.name) {\n if (isExclusive) return false;\n if (fn.OPTIONS.test === validate.OPTIONS.test) return false;\n }\n\n return true;\n });\n next.tests.push(validate);\n return next;\n },\n when: function when(keys, options) {\n if (arguments.length === 1) {\n options = keys;\n keys = '.';\n }\n\n var next = this.clone(),\n deps = [].concat(keys).map(function (key) {\n return new Ref(key);\n });\n deps.forEach(function (dep) {\n if (dep.isSibling) next._deps.push(dep.key);\n });\n\n next._conditions.push(new Condition(deps, options));\n\n return next;\n },\n typeError: function typeError(message) {\n var next = this.clone();\n next._typeError = createValidation({\n message: message,\n name: 'typeError',\n test: function test(value) {\n if (value !== undefined && !this.schema.isType(value)) return this.createError({\n params: {\n type: this.schema._type\n }\n });\n return true;\n }\n });\n return next;\n },\n oneOf: function oneOf(enums, message) {\n if (message === void 0) {\n message = locale.oneOf;\n }\n\n var next = this.clone();\n enums.forEach(function (val) {\n next._whitelist.add(val);\n\n next._blacklist.delete(val);\n });\n next._whitelistError = createValidation({\n message: message,\n name: 'oneOf',\n test: function test(value) {\n if (value === undefined) return true;\n var valids = this.schema._whitelist;\n return valids.has(value, this.resolve) ? true : this.createError({\n params: {\n values: valids.toArray().join(', ')\n }\n });\n }\n });\n return next;\n },\n notOneOf: function notOneOf(enums, message) {\n if (message === void 0) {\n message = locale.notOneOf;\n }\n\n var next = this.clone();\n enums.forEach(function (val) {\n next._blacklist.add(val);\n\n next._whitelist.delete(val);\n });\n next._blacklistError = createValidation({\n message: message,\n name: 'notOneOf',\n test: function test(value) {\n var invalids = this.schema._blacklist;\n if (invalids.has(value, this.resolve)) return this.createError({\n params: {\n values: invalids.toArray().join(', ')\n }\n });\n return true;\n }\n });\n return next;\n },\n strip: function strip(_strip) {\n if (_strip === void 0) {\n _strip = true;\n }\n\n var next = this.clone();\n next._strip = _strip;\n return next;\n },\n _option: function _option(key, overrides) {\n return has(overrides, key) ? overrides[key] : this._options[key];\n },\n describe: function describe() {\n var next = this.clone();\n var description = {\n type: next._type,\n meta: next._meta,\n label: next._label,\n tests: next.tests.map(function (fn) {\n return {\n name: fn.OPTIONS.name,\n params: fn.OPTIONS.params\n };\n }).filter(function (n, idx, list) {\n return list.findIndex(function (c) {\n return c.name === n.name;\n }) === idx;\n })\n };\n if (next._whitelist.size) description.oneOf = next._whitelist.describe();\n if (next._blacklist.size) description.notOneOf = next._blacklist.describe();\n return description;\n },\n defined: function defined(message) {\n if (message === void 0) {\n message = locale.defined;\n }\n\n return this.test({\n message: message,\n name: 'defined',\n exclusive: true,\n test: function test(value) {\n return value !== undefined;\n }\n });\n }\n};\n\nvar _loop = function _loop() {\n var method = _arr[_i];\n\n proto[method + \"At\"] = function (path, value, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _getIn = getIn(this, path, value, options.context),\n parent = _getIn.parent,\n parentPath = _getIn.parentPath,\n schema = _getIn.schema;\n\n return schema[method](parent && parent[parentPath], _extends({}, options, {\n parent: parent,\n path: path\n }));\n };\n};\n\nfor (var _i = 0, _arr = ['validate', 'validateSync']; _i < _arr.length; _i++) {\n _loop();\n}\n\nfor (var _i2 = 0, _arr2 = ['equals', 'is']; _i2 < _arr2.length; _i2++) {\n var alias = _arr2[_i2];\n proto[alias] = proto.oneOf;\n}\n\nfor (var _i3 = 0, _arr3 = ['not', 'nope']; _i3 < _arr3.length; _i3++) {\n var _alias = _arr3[_i3];\n proto[_alias] = proto.notOneOf;\n}\n\nproto.optional = proto.notRequired;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nexport default function inherits(ctor, superCtor, spec) {\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n\n _extends(ctor.prototype, spec);\n}","export default (function (value) {\n return value == null;\n});","import inherits from './util/inherits';\nimport MixedSchema from './mixed';\nimport { boolean as locale } from './locale';\nimport isAbsent from './util/isAbsent';\nexport default BooleanSchema;\n\nfunction BooleanSchema() {\n var _this = this;\n\n if (!(this instanceof BooleanSchema)) return new BooleanSchema();\n MixedSchema.call(this, {\n type: 'boolean'\n });\n this.withMutation(function () {\n _this.transform(function (value) {\n if (!this.isType(value)) {\n if (/^(true|1)$/i.test(value)) return true;\n if (/^(false|0)$/i.test(value)) return false;\n }\n\n return value;\n });\n });\n}\n\ninherits(BooleanSchema, MixedSchema, {\n _typeCheck: function _typeCheck(v) {\n if (v instanceof Boolean) v = v.valueOf();\n return typeof v === 'boolean';\n },\n isTrue: function isTrue(message) {\n if (message === void 0) {\n message = locale.isValue;\n }\n\n return this.test({\n message: message,\n name: 'is-value',\n exclusive: true,\n params: {\n value: 'true'\n },\n test: function test(value) {\n return isAbsent(value) || value === true;\n }\n });\n },\n isFalse: function isFalse(message) {\n if (message === void 0) {\n message = locale.isValue;\n }\n\n return this.test({\n message: message,\n name: 'is-value',\n exclusive: true,\n params: {\n value: 'false'\n },\n test: function test(value) {\n return isAbsent(value) || value === false;\n }\n });\n }\n});","import inherits from './util/inherits';\nimport MixedSchema from './mixed';\nimport { string as locale } from './locale';\nimport isAbsent from './util/isAbsent'; // eslint-disable-next-line\n\nvar rEmail = /^((([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))$/i; // eslint-disable-next-line\n\nvar rUrl = /^((https?|ftp):)?\\/\\/(((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:)*@)?(((\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5]))|((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.?)(:\\d*)?)(\\/((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)+(\\/(([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)*)*)?)?(\\?((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)|[\\uE000-\\uF8FF]|\\/|\\?)*)?(\\#((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)|\\/|\\?)*)?$/i; // eslint-disable-next-line\n\nvar rUUID = /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;\n\nvar isTrimmed = function isTrimmed(value) {\n return isAbsent(value) || value === value.trim();\n};\n\nvar objStringTag = {}.toString();\nexport default function StringSchema() {\n var _this = this;\n\n if (!(this instanceof StringSchema)) return new StringSchema();\n MixedSchema.call(this, {\n type: 'string'\n });\n this.withMutation(function () {\n _this.transform(function (value) {\n if (this.isType(value)) return value;\n if (Array.isArray(value)) return value;\n var strValue = value != null && value.toString ? value.toString() : value;\n if (strValue === objStringTag) return value;\n return strValue;\n });\n });\n}\ninherits(StringSchema, MixedSchema, {\n _typeCheck: function _typeCheck(value) {\n if (value instanceof String) value = value.valueOf();\n return typeof value === 'string';\n },\n _isPresent: function _isPresent(value) {\n return MixedSchema.prototype._isPresent.call(this, value) && !!value.length;\n },\n length: function length(_length, message) {\n if (message === void 0) {\n message = locale.length;\n }\n\n return this.test({\n message: message,\n name: 'length',\n exclusive: true,\n params: {\n length: _length\n },\n test: function test(value) {\n return isAbsent(value) || value.length === this.resolve(_length);\n }\n });\n },\n min: function min(_min, message) {\n if (message === void 0) {\n message = locale.min;\n }\n\n return this.test({\n message: message,\n name: 'min',\n exclusive: true,\n params: {\n min: _min\n },\n test: function test(value) {\n return isAbsent(value) || value.length >= this.resolve(_min);\n }\n });\n },\n max: function max(_max, message) {\n if (message === void 0) {\n message = locale.max;\n }\n\n return this.test({\n name: 'max',\n exclusive: true,\n message: message,\n params: {\n max: _max\n },\n test: function test(value) {\n return isAbsent(value) || value.length <= this.resolve(_max);\n }\n });\n },\n matches: function matches(regex, options) {\n var excludeEmptyString = false;\n var message;\n var name;\n\n if (options) {\n if (typeof options === 'object') {\n excludeEmptyString = options.excludeEmptyString;\n message = options.message;\n name = options.name;\n } else {\n message = options;\n }\n }\n\n return this.test({\n name: name || 'matches',\n message: message || locale.matches,\n params: {\n regex: regex\n },\n test: function test(value) {\n return isAbsent(value) || value === '' && excludeEmptyString || value.search(regex) !== -1;\n }\n });\n },\n email: function email(message) {\n if (message === void 0) {\n message = locale.email;\n }\n\n return this.matches(rEmail, {\n name: 'email',\n message: message,\n excludeEmptyString: true\n });\n },\n url: function url(message) {\n if (message === void 0) {\n message = locale.url;\n }\n\n return this.matches(rUrl, {\n name: 'url',\n message: message,\n excludeEmptyString: true\n });\n },\n uuid: function uuid(message) {\n if (message === void 0) {\n message = locale.uuid;\n }\n\n return this.matches(rUUID, {\n name: 'uuid',\n message: message,\n excludeEmptyString: false\n });\n },\n //-- transforms --\n ensure: function ensure() {\n return this.default('').transform(function (val) {\n return val === null ? '' : val;\n });\n },\n trim: function trim(message) {\n if (message === void 0) {\n message = locale.trim;\n }\n\n return this.transform(function (val) {\n return val != null ? val.trim() : val;\n }).test({\n message: message,\n name: 'trim',\n test: isTrimmed\n });\n },\n lowercase: function lowercase(message) {\n if (message === void 0) {\n message = locale.lowercase;\n }\n\n return this.transform(function (value) {\n return !isAbsent(value) ? value.toLowerCase() : value;\n }).test({\n message: message,\n name: 'string_case',\n exclusive: true,\n test: function test(value) {\n return isAbsent(value) || value === value.toLowerCase();\n }\n });\n },\n uppercase: function uppercase(message) {\n if (message === void 0) {\n message = locale.uppercase;\n }\n\n return this.transform(function (value) {\n return !isAbsent(value) ? value.toUpperCase() : value;\n }).test({\n message: message,\n name: 'string_case',\n exclusive: true,\n test: function test(value) {\n return isAbsent(value) || value === value.toUpperCase();\n }\n });\n }\n});","import inherits from './util/inherits';\nimport MixedSchema from './mixed';\nimport { number as locale } from './locale';\nimport isAbsent from './util/isAbsent';\n\nvar isNaN = function isNaN(value) {\n return value != +value;\n};\n\nexport default function NumberSchema() {\n var _this = this;\n\n if (!(this instanceof NumberSchema)) return new NumberSchema();\n MixedSchema.call(this, {\n type: 'number'\n });\n this.withMutation(function () {\n _this.transform(function (value) {\n var parsed = value;\n\n if (typeof parsed === 'string') {\n parsed = parsed.replace(/\\s/g, '');\n if (parsed === '') return NaN; // don't use parseFloat to avoid positives on alpha-numeric strings\n\n parsed = +parsed;\n }\n\n if (this.isType(parsed)) return parsed;\n return parseFloat(parsed);\n });\n });\n}\ninherits(NumberSchema, MixedSchema, {\n _typeCheck: function _typeCheck(value) {\n if (value instanceof Number) value = value.valueOf();\n return typeof value === 'number' && !isNaN(value);\n },\n min: function min(_min, message) {\n if (message === void 0) {\n message = locale.min;\n }\n\n return this.test({\n message: message,\n name: 'min',\n exclusive: true,\n params: {\n min: _min\n },\n test: function test(value) {\n return isAbsent(value) || value >= this.resolve(_min);\n }\n });\n },\n max: function max(_max, message) {\n if (message === void 0) {\n message = locale.max;\n }\n\n return this.test({\n message: message,\n name: 'max',\n exclusive: true,\n params: {\n max: _max\n },\n test: function test(value) {\n return isAbsent(value) || value <= this.resolve(_max);\n }\n });\n },\n lessThan: function lessThan(less, message) {\n if (message === void 0) {\n message = locale.lessThan;\n }\n\n return this.test({\n message: message,\n name: 'max',\n exclusive: true,\n params: {\n less: less\n },\n test: function test(value) {\n return isAbsent(value) || value < this.resolve(less);\n }\n });\n },\n moreThan: function moreThan(more, message) {\n if (message === void 0) {\n message = locale.moreThan;\n }\n\n return this.test({\n message: message,\n name: 'min',\n exclusive: true,\n params: {\n more: more\n },\n test: function test(value) {\n return isAbsent(value) || value > this.resolve(more);\n }\n });\n },\n positive: function positive(msg) {\n if (msg === void 0) {\n msg = locale.positive;\n }\n\n return this.moreThan(0, msg);\n },\n negative: function negative(msg) {\n if (msg === void 0) {\n msg = locale.negative;\n }\n\n return this.lessThan(0, msg);\n },\n integer: function integer(message) {\n if (message === void 0) {\n message = locale.integer;\n }\n\n return this.test({\n name: 'integer',\n message: message,\n test: function test(val) {\n return isAbsent(val) || Number.isInteger(val);\n }\n });\n },\n truncate: function truncate() {\n return this.transform(function (value) {\n return !isAbsent(value) ? value | 0 : value;\n });\n },\n round: function round(method) {\n var avail = ['ceil', 'floor', 'round', 'trunc'];\n method = method && method.toLowerCase() || 'round'; // this exists for symemtry with the new Math.trunc\n\n if (method === 'trunc') return this.truncate();\n if (avail.indexOf(method.toLowerCase()) === -1) throw new TypeError('Only valid options for round() are: ' + avail.join(', '));\n return this.transform(function (value) {\n return !isAbsent(value) ? Math[method](value) : value;\n });\n }\n});","/* eslint-disable */\n\n/**\n *\n * Date.parse with progressive enhancement for ISO 8601 <https://github.com/csnover/js-iso8601>\n * NON-CONFORMANT EDITION.\n * © 2011 Colin Snover <http://zetafleet.com>\n * Released under MIT license.\n */\n// 1 YYYY 2 MM 3 DD 4 HH 5 mm 6 ss 7 msec 8 Z 9 ± 10 tzHH 11 tzmm\nvar isoReg = /^(\\d{4}|[+\\-]\\d{6})(?:-?(\\d{2})(?:-?(\\d{2}))?)?(?:[ T]?(\\d{2}):?(\\d{2})(?::?(\\d{2})(?:[,\\.](\\d{1,}))?)?(?:(Z)|([+\\-])(\\d{2})(?::?(\\d{2}))?)?)?$/;\nexport default function parseIsoDate(date) {\n var numericKeys = [1, 4, 5, 6, 7, 10, 11],\n minutesOffset = 0,\n timestamp,\n struct;\n\n if (struct = isoReg.exec(date)) {\n // avoid NaN timestamps caused by “undefined†values being passed to Date.UTC\n for (var i = 0, k; k = numericKeys[i]; ++i) {\n struct[k] = +struct[k] || 0;\n } // allow undefined days and months\n\n\n struct[2] = (+struct[2] || 1) - 1;\n struct[3] = +struct[3] || 1; // allow arbitrary sub-second precision beyond milliseconds\n\n struct[7] = struct[7] ? String(struct[7]).substr(0, 3) : 0; // timestamps without timezone identifiers should be considered local time\n\n if ((struct[8] === undefined || struct[8] === '') && (struct[9] === undefined || struct[9] === '')) timestamp = +new Date(struct[1], struct[2], struct[3], struct[4], struct[5], struct[6], struct[7]);else {\n if (struct[8] !== 'Z' && struct[9] !== undefined) {\n minutesOffset = struct[10] * 60 + struct[11];\n if (struct[9] === '+') minutesOffset = 0 - minutesOffset;\n }\n\n timestamp = Date.UTC(struct[1], struct[2], struct[3], struct[4], struct[5] + minutesOffset, struct[6], struct[7]);\n }\n } else timestamp = Date.parse ? Date.parse(date) : NaN;\n\n return timestamp;\n}","import MixedSchema from './mixed';\nimport inherits from './util/inherits';\nimport isoParse from './util/isodate';\nimport { date as locale } from './locale';\nimport isAbsent from './util/isAbsent';\nimport Ref from './Reference';\nvar invalidDate = new Date('');\n\nvar isDate = function isDate(obj) {\n return Object.prototype.toString.call(obj) === '[object Date]';\n};\n\nexport default DateSchema;\n\nfunction DateSchema() {\n var _this = this;\n\n if (!(this instanceof DateSchema)) return new DateSchema();\n MixedSchema.call(this, {\n type: 'date'\n });\n this.withMutation(function () {\n _this.transform(function (value) {\n if (this.isType(value)) return value;\n value = isoParse(value); // 0 is a valid timestamp equivalent to 1970-01-01T00:00:00Z(unix epoch) or before.\n\n return !isNaN(value) ? new Date(value) : invalidDate;\n });\n });\n}\n\ninherits(DateSchema, MixedSchema, {\n _typeCheck: function _typeCheck(v) {\n return isDate(v) && !isNaN(v.getTime());\n },\n min: function min(_min, message) {\n if (message === void 0) {\n message = locale.min;\n }\n\n var limit = _min;\n\n if (!Ref.isRef(limit)) {\n limit = this.cast(_min);\n if (!this._typeCheck(limit)) throw new TypeError('`min` must be a Date or a value that can be `cast()` to a Date');\n }\n\n return this.test({\n message: message,\n name: 'min',\n exclusive: true,\n params: {\n min: _min\n },\n test: function test(value) {\n return isAbsent(value) || value >= this.resolve(limit);\n }\n });\n },\n max: function max(_max, message) {\n if (message === void 0) {\n message = locale.max;\n }\n\n var limit = _max;\n\n if (!Ref.isRef(limit)) {\n limit = this.cast(_max);\n if (!this._typeCheck(limit)) throw new TypeError('`max` must be a Date or a value that can be `cast()` to a Date');\n }\n\n return this.test({\n message: message,\n name: 'max',\n exclusive: true,\n params: {\n max: _max\n },\n test: function test(value) {\n return isAbsent(value) || value <= this.resolve(limit);\n }\n });\n }\n});","/**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n}\n\nexport default arrayReduce;\n","/**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n}\n\nexport default basePropertyOf;\n","import basePropertyOf from './_basePropertyOf.js';\n\n/** Used to map Latin Unicode letters to basic Latin letters. */\nvar deburredLetters = {\n // Latin-1 Supplement block.\n '\\xc0': 'A', '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n '\\xe0': 'a', '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n '\\xc7': 'C', '\\xe7': 'c',\n '\\xd0': 'D', '\\xf0': 'd',\n '\\xc8': 'E', '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n '\\xe8': 'e', '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n '\\xcc': 'I', '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n '\\xec': 'i', '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n '\\xd1': 'N', '\\xf1': 'n',\n '\\xd2': 'O', '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n '\\xf2': 'o', '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n '\\xd9': 'U', '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n '\\xf9': 'u', '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n '\\xdd': 'Y', '\\xfd': 'y', '\\xff': 'y',\n '\\xc6': 'Ae', '\\xe6': 'ae',\n '\\xde': 'Th', '\\xfe': 'th',\n '\\xdf': 'ss',\n // Latin Extended-A block.\n '\\u0100': 'A', '\\u0102': 'A', '\\u0104': 'A',\n '\\u0101': 'a', '\\u0103': 'a', '\\u0105': 'a',\n '\\u0106': 'C', '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n '\\u0107': 'c', '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n '\\u010e': 'D', '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n '\\u0112': 'E', '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n '\\u0113': 'e', '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n '\\u011c': 'G', '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n '\\u011d': 'g', '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n '\\u0124': 'H', '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n '\\u0128': 'I', '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n '\\u0129': 'i', '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n '\\u0134': 'J', '\\u0135': 'j',\n '\\u0136': 'K', '\\u0137': 'k', '\\u0138': 'k',\n '\\u0139': 'L', '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n '\\u013a': 'l', '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n '\\u0143': 'N', '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n '\\u0144': 'n', '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n '\\u014c': 'O', '\\u014e': 'O', '\\u0150': 'O',\n '\\u014d': 'o', '\\u014f': 'o', '\\u0151': 'o',\n '\\u0154': 'R', '\\u0156': 'R', '\\u0158': 'R',\n '\\u0155': 'r', '\\u0157': 'r', '\\u0159': 'r',\n '\\u015a': 'S', '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n '\\u015b': 's', '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n '\\u0162': 'T', '\\u0164': 'T', '\\u0166': 'T',\n '\\u0163': 't', '\\u0165': 't', '\\u0167': 't',\n '\\u0168': 'U', '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n '\\u0169': 'u', '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n '\\u0174': 'W', '\\u0175': 'w',\n '\\u0176': 'Y', '\\u0177': 'y', '\\u0178': 'Y',\n '\\u0179': 'Z', '\\u017b': 'Z', '\\u017d': 'Z',\n '\\u017a': 'z', '\\u017c': 'z', '\\u017e': 'z',\n '\\u0132': 'IJ', '\\u0133': 'ij',\n '\\u0152': 'Oe', '\\u0153': 'oe',\n '\\u0149': \"'n\", '\\u017f': 's'\n};\n\n/**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\nvar deburrLetter = basePropertyOf(deburredLetters);\n\nexport default deburrLetter;\n","import deburrLetter from './_deburrLetter.js';\nimport toString from './toString.js';\n\n/** Used to match Latin Unicode letters (excluding mathematical operators). */\nvar reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n/** Used to compose unicode character classes. */\nvar rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange;\n\n/** Used to compose unicode capture groups. */\nvar rsCombo = '[' + rsComboRange + ']';\n\n/**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\nvar reComboMark = RegExp(rsCombo, 'g');\n\n/**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\nfunction deburr(string) {\n string = toString(string);\n return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n}\n\nexport default deburr;\n","/** Used to match words composed of alphanumeric characters. */\nvar reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n/**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction asciiWords(string) {\n return string.match(reAsciiWord) || [];\n}\n\nexport default asciiWords;\n","/** Used to detect strings that need a more robust regexp to match words. */\nvar reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n/**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\nfunction hasUnicodeWord(string) {\n return reHasUnicodeWord.test(string);\n}\n\nexport default hasUnicodeWord;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsDingbatRange = '\\\\u2700-\\\\u27bf',\n rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n rsPunctuationRange = '\\\\u2000-\\\\u206f',\n rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n rsVarRange = '\\\\ufe0e\\\\ufe0f',\n rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n/** Used to compose unicode capture groups. */\nvar rsApos = \"['\\u2019]\",\n rsBreak = '[' + rsBreakRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsDigits = '\\\\d+',\n rsDingbat = '[' + rsDingbatRange + ']',\n rsLower = '[' + rsLowerRange + ']',\n rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsUpper = '[' + rsUpperRange + ']',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq;\n\n/** Used to match complex or compound words. */\nvar reUnicodeWord = RegExp([\n rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n rsUpper + '+' + rsOptContrUpper,\n rsOrdUpper,\n rsOrdLower,\n rsDigits,\n rsEmoji\n].join('|'), 'g');\n\n/**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction unicodeWords(string) {\n return string.match(reUnicodeWord) || [];\n}\n\nexport default unicodeWords;\n","import asciiWords from './_asciiWords.js';\nimport hasUnicodeWord from './_hasUnicodeWord.js';\nimport toString from './toString.js';\nimport unicodeWords from './_unicodeWords.js';\n\n/**\n * Splits `string` into an array of its words.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {RegExp|string} [pattern] The pattern to match words.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the words of `string`.\n * @example\n *\n * _.words('fred, barney, & pebbles');\n * // => ['fred', 'barney', 'pebbles']\n *\n * _.words('fred, barney, & pebbles', /[^, ]+/g);\n * // => ['fred', 'barney', '&', 'pebbles']\n */\nfunction words(string, pattern, guard) {\n string = toString(string);\n pattern = guard ? undefined : pattern;\n\n if (pattern === undefined) {\n return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);\n }\n return string.match(pattern) || [];\n}\n\nexport default words;\n","import arrayReduce from './_arrayReduce.js';\nimport deburr from './deburr.js';\nimport words from './words.js';\n\n/** Used to compose unicode capture groups. */\nvar rsApos = \"['\\u2019]\";\n\n/** Used to match apostrophes. */\nvar reApos = RegExp(rsApos, 'g');\n\n/**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\nfunction createCompounder(callback) {\n return function(string) {\n return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n };\n}\n\nexport default createCompounder;\n","import createCompounder from './_createCompounder.js';\n\n/**\n * Converts `string` to\n * [snake case](https://en.wikipedia.org/wiki/Snake_case).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the snake cased string.\n * @example\n *\n * _.snakeCase('Foo Bar');\n * // => 'foo_bar'\n *\n * _.snakeCase('fooBar');\n * // => 'foo_bar'\n *\n * _.snakeCase('--FOO-BAR--');\n * // => 'foo_bar'\n */\nvar snakeCase = createCompounder(function(result, word, index) {\n return result + (index ? '_' : '') + word.toLowerCase();\n});\n\nexport default snakeCase;\n","/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n}\n\nexport default baseSlice;\n","import baseSlice from './_baseSlice.js';\n\n/**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\nfunction castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n}\n\nexport default castSlice;\n","import castSlice from './_castSlice.js';\nimport hasUnicode from './_hasUnicode.js';\nimport stringToArray from './_stringToArray.js';\nimport toString from './toString.js';\n\n/**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\nfunction createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n}\n\nexport default createCaseFirst;\n","import createCaseFirst from './_createCaseFirst.js';\n\n/**\n * Converts the first character of `string` to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.upperFirst('fred');\n * // => 'Fred'\n *\n * _.upperFirst('FRED');\n * // => 'FRED'\n */\nvar upperFirst = createCaseFirst('toUpperCase');\n\nexport default upperFirst;\n","import toString from './toString.js';\nimport upperFirst from './upperFirst.js';\n\n/**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\nfunction capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n}\n\nexport default capitalize;\n","import capitalize from './capitalize.js';\nimport createCompounder from './_createCompounder.js';\n\n/**\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the camel cased string.\n * @example\n *\n * _.camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * _.camelCase('--foo-bar--');\n * // => 'fooBar'\n *\n * _.camelCase('__FOO_BAR__');\n * // => 'fooBar'\n */\nvar camelCase = createCompounder(function(result, word, index) {\n word = word.toLowerCase();\n return result + (index ? capitalize(word) : word);\n});\n\nexport default camelCase;\n","import baseAssignValue from './_baseAssignValue.js';\nimport baseForOwn from './_baseForOwn.js';\nimport baseIteratee from './_baseIteratee.js';\n\n/**\n * The opposite of `_.mapValues`; this method creates an object with the\n * same values as `object` and keys generated by running each own enumerable\n * string keyed property of `object` thru `iteratee`. The iteratee is invoked\n * with three arguments: (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapValues\n * @example\n *\n * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) {\n * return key + value;\n * });\n * // => { 'a1': 1, 'b2': 2 }\n */\nfunction mapKeys(object, iteratee) {\n var result = {};\n iteratee = baseIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, iteratee(value, key, object), value);\n });\n return result;\n}\n\nexport default mapKeys;\n","import has from \"lodash-es/has\";\nimport toposort from 'toposort';\nimport { split } from 'property-expr';\nimport Ref from '../Reference';\nimport isSchema from './isSchema';\nexport default function sortFields(fields, excludes) {\n if (excludes === void 0) {\n excludes = [];\n }\n\n var edges = [];\n var nodes = [];\n\n function addNode(depPath, key) {\n var node = split(depPath)[0];\n if (!~nodes.indexOf(node)) nodes.push(node);\n if (!~excludes.indexOf(key + \"-\" + node)) edges.push([key, node]);\n }\n\n var _loop = function _loop(key) {\n if (has(fields, key)) {\n var value = fields[key];\n if (!~nodes.indexOf(key)) nodes.push(key);\n if (Ref.isRef(value) && value.isSibling) addNode(value.path, key);else if (isSchema(value) && value._deps) value._deps.forEach(function (path) {\n return addNode(path, key);\n });\n }\n };\n\n for (var key in fields) {\n _loop(key);\n }\n\n return toposort.array(nodes, edges).reverse();\n}","function findIndex(arr, err) {\n var idx = Infinity;\n arr.some(function (key, ii) {\n if (err.path.indexOf(key) !== -1) {\n idx = ii;\n return true;\n }\n });\n return idx;\n}\n\nexport default function sortByKeyOrder(keys) {\n return function (a, b) {\n return findIndex(keys, a) - findIndex(keys, b);\n };\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\n\nfunction _createForOfIteratorHelperLoose(o, allowArrayLike) { var it; if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } it = o[Symbol.iterator](); return it.next.bind(it); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nimport has from \"lodash-es/has\";\nimport _snakeCase from \"lodash-es/snakeCase\";\nimport _camelCase from \"lodash-es/camelCase\";\nimport mapKeys from \"lodash-es/mapKeys\";\nimport mapValues from \"lodash-es/mapValues\";\nimport { getter } from 'property-expr';\nimport MixedSchema from './mixed';\nimport { object as locale } from './locale.js';\nimport sortFields from './util/sortFields';\nimport sortByKeyOrder from './util/sortByKeyOrder';\nimport inherits from './util/inherits';\nimport runTests from './util/runTests';\n\nvar isObject = function isObject(obj) {\n return Object.prototype.toString.call(obj) === '[object Object]';\n};\n\nfunction unknown(ctx, value) {\n var known = Object.keys(ctx.fields);\n return Object.keys(value).filter(function (key) {\n return known.indexOf(key) === -1;\n });\n}\n\nexport default function ObjectSchema(spec) {\n var _this2 = this;\n\n if (!(this instanceof ObjectSchema)) return new ObjectSchema(spec);\n MixedSchema.call(this, {\n type: 'object',\n default: function _default() {\n var _this = this;\n\n if (!this._nodes.length) return undefined;\n var dft = {};\n\n this._nodes.forEach(function (key) {\n dft[key] = _this.fields[key].default ? _this.fields[key].getDefault() : undefined;\n });\n\n return dft;\n }\n });\n this.fields = Object.create(null);\n this._sortErrors = sortByKeyOrder([]);\n this._nodes = [];\n this._excludedEdges = [];\n this.withMutation(function () {\n _this2.transform(function coerce(value) {\n if (typeof value === 'string') {\n try {\n value = JSON.parse(value);\n } catch (err) {\n value = null;\n }\n }\n\n if (this.isType(value)) return value;\n return null;\n });\n\n if (spec) {\n _this2.shape(spec);\n }\n });\n}\ninherits(ObjectSchema, MixedSchema, {\n _typeCheck: function _typeCheck(value) {\n return isObject(value) || typeof value === 'function';\n },\n _cast: function _cast(_value, options) {\n var _this3 = this;\n\n if (options === void 0) {\n options = {};\n }\n\n var value = MixedSchema.prototype._cast.call(this, _value); //should ignore nulls here\n\n\n if (value === undefined) return this.getDefault();\n if (!this._typeCheck(value)) return value;\n var fields = this.fields;\n var strip = this._option('stripUnknown', options) === true;\n\n var props = this._nodes.concat(Object.keys(value).filter(function (v) {\n return _this3._nodes.indexOf(v) === -1;\n }));\n\n var intermediateValue = {}; // is filled during the transform below\n\n var innerOptions = _extends({}, options, {\n parent: intermediateValue,\n __validating: options.__validating || false\n });\n\n var isChanged = false;\n\n for (var _iterator = _createForOfIteratorHelperLoose(props), _step; !(_step = _iterator()).done;) {\n var prop = _step.value;\n var field = fields[prop];\n var exists = has(value, prop);\n\n if (field) {\n var fieldValue = void 0;\n var strict = field._options && field._options.strict; // safe to mutate since this is fired in sequence\n\n innerOptions.path = (options.path ? options.path + \".\" : '') + prop;\n innerOptions.value = value[prop];\n field = field.resolve(innerOptions);\n\n if (field._strip === true) {\n isChanged = isChanged || prop in value;\n continue;\n }\n\n fieldValue = !options.__validating || !strict ? field.cast(value[prop], innerOptions) : value[prop];\n\n if (fieldValue !== undefined) {\n intermediateValue[prop] = fieldValue;\n }\n } else if (exists && !strip) {\n intermediateValue[prop] = value[prop];\n }\n\n if (intermediateValue[prop] !== value[prop]) {\n isChanged = true;\n }\n }\n\n return isChanged ? intermediateValue : value;\n },\n\n /**\n * @typedef {Object} Ancestor\n * @property {Object} schema - a string property of SpecialType\n * @property {*} value - a number property of SpecialType\n */\n\n /**\n *\n * @param {*} _value\n * @param {Object} opts\n * @param {string=} opts.path\n * @param {*=} opts.parent\n * @param {Object=} opts.context\n * @param {boolean=} opts.sync\n * @param {boolean=} opts.stripUnknown\n * @param {boolean=} opts.strict\n * @param {boolean=} opts.recursive\n * @param {boolean=} opts.abortEarly\n * @param {boolean=} opts.__validating\n * @param {Object=} opts.originalValue\n * @param {Ancestor[]=} opts.from\n * @param {Object} [opts.from]\n * @param {Function} callback\n */\n _validate: function _validate(_value, opts, callback) {\n var _this4 = this;\n\n if (opts === void 0) {\n opts = {};\n }\n\n var errors = [];\n var _opts = opts,\n sync = _opts.sync,\n _opts$from = _opts.from,\n from = _opts$from === void 0 ? [] : _opts$from,\n _opts$originalValue = _opts.originalValue,\n originalValue = _opts$originalValue === void 0 ? _value : _opts$originalValue,\n _opts$abortEarly = _opts.abortEarly,\n abortEarly = _opts$abortEarly === void 0 ? this._options.abortEarly : _opts$abortEarly,\n _opts$recursive = _opts.recursive,\n recursive = _opts$recursive === void 0 ? this._options.recursive : _opts$recursive;\n from = [{\n schema: this,\n value: originalValue\n }].concat(from); // this flag is needed for handling `strict` correctly in the context of\n // validation vs just casting. e.g strict() on a field is only used when validating\n\n opts.__validating = true;\n opts.originalValue = originalValue;\n opts.from = from;\n\n MixedSchema.prototype._validate.call(this, _value, opts, function (err, value) {\n if (err) {\n if (abortEarly) return void callback(err);\n errors.push(err);\n value = err.value;\n }\n\n if (!recursive || !isObject(value)) {\n callback(errors[0] || null, value);\n return;\n }\n\n originalValue = originalValue || value;\n\n var tests = _this4._nodes.map(function (key) {\n return function (_, cb) {\n var path = key.indexOf('.') === -1 ? (opts.path ? opts.path + \".\" : '') + key : (opts.path || '') + \"[\\\"\" + key + \"\\\"]\";\n var field = _this4.fields[key];\n\n if (field && field.validate) {\n field.validate(value[key], _extends({}, opts, {\n path: path,\n from: from,\n // inner fields are always strict:\n // 1. this isn't strict so the casting will also have cast inner values\n // 2. this is strict in which case the nested values weren't cast either\n strict: true,\n parent: value,\n originalValue: originalValue[key]\n }), cb);\n return;\n }\n\n cb(null);\n };\n });\n\n runTests({\n sync: sync,\n tests: tests,\n value: value,\n errors: errors,\n endEarly: abortEarly,\n sort: _this4._sortErrors,\n path: opts.path\n }, callback);\n });\n },\n concat: function concat(schema) {\n var next = MixedSchema.prototype.concat.call(this, schema);\n next._nodes = sortFields(next.fields, next._excludedEdges);\n return next;\n },\n shape: function shape(schema, excludes) {\n if (excludes === void 0) {\n excludes = [];\n }\n\n var next = this.clone();\n\n var fields = _extends(next.fields, schema);\n\n next.fields = fields;\n next._sortErrors = sortByKeyOrder(Object.keys(fields));\n\n if (excludes.length) {\n if (!Array.isArray(excludes[0])) excludes = [excludes];\n var keys = excludes.map(function (_ref) {\n var first = _ref[0],\n second = _ref[1];\n return first + \"-\" + second;\n });\n next._excludedEdges = next._excludedEdges.concat(keys);\n }\n\n next._nodes = sortFields(fields, next._excludedEdges);\n return next;\n },\n pick: function pick(keys) {\n var picked = {};\n\n for (var _iterator2 = _createForOfIteratorHelperLoose(keys), _step2; !(_step2 = _iterator2()).done;) {\n var key = _step2.value;\n if (this.fields[key]) picked[key] = this.fields[key];\n }\n\n return this.clone().withMutation(function (next) {\n next.fields = {};\n return next.shape(picked);\n });\n },\n omit: function omit(keys) {\n var next = this.clone();\n var fields = next.fields;\n next.fields = {};\n\n for (var _iterator3 = _createForOfIteratorHelperLoose(keys), _step3; !(_step3 = _iterator3()).done;) {\n var key = _step3.value;\n delete fields[key];\n }\n\n return next.withMutation(function (next) {\n return next.shape(fields);\n });\n },\n from: function from(_from, to, alias) {\n var fromGetter = getter(_from, true);\n return this.transform(function (obj) {\n if (obj == null) return obj;\n var newObj = obj;\n\n if (has(obj, _from)) {\n newObj = _extends({}, obj);\n if (!alias) delete newObj[_from];\n newObj[to] = fromGetter(obj);\n }\n\n return newObj;\n });\n },\n noUnknown: function noUnknown(noAllow, message) {\n if (noAllow === void 0) {\n noAllow = true;\n }\n\n if (message === void 0) {\n message = locale.noUnknown;\n }\n\n if (typeof noAllow === 'string') {\n message = noAllow;\n noAllow = true;\n }\n\n var next = this.test({\n name: 'noUnknown',\n exclusive: true,\n message: message,\n test: function test(value) {\n if (value == null) return true;\n var unknownKeys = unknown(this.schema, value);\n return !noAllow || unknownKeys.length === 0 || this.createError({\n params: {\n unknown: unknownKeys.join(', ')\n }\n });\n }\n });\n next._options.stripUnknown = noAllow;\n return next;\n },\n unknown: function unknown(allow, message) {\n if (allow === void 0) {\n allow = true;\n }\n\n if (message === void 0) {\n message = locale.noUnknown;\n }\n\n return this.noUnknown(!allow, message);\n },\n transformKeys: function transformKeys(fn) {\n return this.transform(function (obj) {\n return obj && mapKeys(obj, function (_, key) {\n return fn(key);\n });\n });\n },\n camelCase: function camelCase() {\n return this.transformKeys(_camelCase);\n },\n snakeCase: function snakeCase() {\n return this.transformKeys(_snakeCase);\n },\n constantCase: function constantCase() {\n return this.transformKeys(function (key) {\n return _snakeCase(key).toUpperCase();\n });\n },\n describe: function describe() {\n var base = MixedSchema.prototype.describe.call(this);\n base.fields = mapValues(this.fields, function (value) {\n return value.describe();\n });\n return base;\n }\n});","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport inherits from './util/inherits';\nimport isAbsent from './util/isAbsent';\nimport isSchema from './util/isSchema';\nimport printValue from './util/printValue';\nimport MixedSchema from './mixed';\nimport { array as locale } from './locale';\nimport runTests from './util/runTests';\nexport default ArraySchema;\n\nfunction ArraySchema(type) {\n var _this = this;\n\n if (!(this instanceof ArraySchema)) return new ArraySchema(type);\n MixedSchema.call(this, {\n type: 'array'\n }); // `undefined` specifically means uninitialized, as opposed to\n // \"no subtype\"\n\n this._subType = undefined;\n this.innerType = undefined;\n this.withMutation(function () {\n _this.transform(function (values) {\n if (typeof values === 'string') try {\n values = JSON.parse(values);\n } catch (err) {\n values = null;\n }\n return this.isType(values) ? values : null;\n });\n\n if (type) _this.of(type);\n });\n}\n\ninherits(ArraySchema, MixedSchema, {\n _typeCheck: function _typeCheck(v) {\n return Array.isArray(v);\n },\n _cast: function _cast(_value, _opts) {\n var _this2 = this;\n\n var value = MixedSchema.prototype._cast.call(this, _value, _opts); //should ignore nulls here\n\n\n if (!this._typeCheck(value) || !this.innerType) return value;\n var isChanged = false;\n var castArray = value.map(function (v, idx) {\n var castElement = _this2.innerType.cast(v, _extends({}, _opts, {\n path: (_opts.path || '') + \"[\" + idx + \"]\"\n }));\n\n if (castElement !== v) {\n isChanged = true;\n }\n\n return castElement;\n });\n return isChanged ? castArray : value;\n },\n _validate: function _validate(_value, options, callback) {\n var _this3 = this;\n\n if (options === void 0) {\n options = {};\n }\n\n var errors = [];\n var sync = options.sync;\n var path = options.path;\n var innerType = this.innerType;\n\n var endEarly = this._option('abortEarly', options);\n\n var recursive = this._option('recursive', options);\n\n var originalValue = options.originalValue != null ? options.originalValue : _value;\n\n MixedSchema.prototype._validate.call(this, _value, options, function (err, value) {\n if (err) {\n if (endEarly) return void callback(err);\n errors.push(err);\n value = err.value;\n }\n\n if (!recursive || !innerType || !_this3._typeCheck(value)) {\n callback(errors[0] || null, value);\n return;\n }\n\n originalValue = originalValue || value; // #950 Ensure that sparse array empty slots are validated\n\n var tests = new Array(value.length);\n\n var _loop = function _loop(idx) {\n var item = value[idx];\n var path = (options.path || '') + \"[\" + idx + \"]\"; // object._validate note for isStrict explanation\n\n var innerOptions = _extends({}, options, {\n path: path,\n strict: true,\n parent: value,\n index: idx,\n originalValue: originalValue[idx]\n });\n\n tests[idx] = function (_, cb) {\n return innerType.validate ? innerType.validate(item, innerOptions, cb) : cb(null);\n };\n };\n\n for (var idx = 0; idx < value.length; idx++) {\n _loop(idx);\n }\n\n runTests({\n sync: sync,\n path: path,\n value: value,\n errors: errors,\n endEarly: endEarly,\n tests: tests\n }, callback);\n });\n },\n of: function of(schema) {\n var next = this.clone();\n if (schema !== false && !isSchema(schema)) throw new TypeError('`array.of()` sub-schema must be a valid yup schema, or `false` to negate a current sub-schema. ' + 'not: ' + printValue(schema));\n next._subType = schema;\n next.innerType = schema;\n return next;\n },\n min: function min(_min, message) {\n message = message || locale.min;\n return this.test({\n message: message,\n name: 'min',\n exclusive: true,\n params: {\n min: _min\n },\n test: function test(value) {\n return isAbsent(value) || value.length >= this.resolve(_min);\n }\n });\n },\n max: function max(_max, message) {\n message = message || locale.max;\n return this.test({\n message: message,\n name: 'max',\n exclusive: true,\n params: {\n max: _max\n },\n test: function test(value) {\n return isAbsent(value) || value.length <= this.resolve(_max);\n }\n });\n },\n length: function length(_length, message) {\n message = message || locale.length;\n return this.test({\n message: message,\n name: 'length',\n exclusive: true,\n params: {\n length: _length\n },\n test: function test(value) {\n return isAbsent(value) || value.length === this.resolve(_length);\n }\n });\n },\n ensure: function ensure() {\n var _this4 = this;\n\n return this.default(function () {\n return [];\n }).transform(function (val, original) {\n // We don't want to return `null` for nullable schema\n if (_this4._typeCheck(val)) return val;\n return original == null ? [] : [].concat(original);\n });\n },\n compact: function compact(rejector) {\n var reject = !rejector ? function (v) {\n return !!v;\n } : function (v, i, a) {\n return !rejector(v, i, a);\n };\n return this.transform(function (values) {\n return values != null ? values.filter(reject) : values;\n });\n },\n describe: function describe() {\n var base = MixedSchema.prototype.describe.call(this);\n if (this.innerType) base.innerType = this.innerType.describe();\n return base;\n }\n});","import isSchema from './util/isSchema';\n\nvar Lazy = /*#__PURE__*/function () {\n function Lazy(mapFn) {\n this._resolve = function (value, options) {\n var schema = mapFn(value, options);\n if (!isSchema(schema)) throw new TypeError('lazy() functions must return a valid schema');\n return schema.resolve(options);\n };\n }\n\n var _proto = Lazy.prototype;\n\n _proto.resolve = function resolve(options) {\n return this._resolve(options.value, options);\n };\n\n _proto.cast = function cast(value, options) {\n return this._resolve(value, options).cast(value, options);\n };\n\n _proto.validate = function validate(value, options, maybeCb) {\n return this._resolve(value, options).validate(value, options, maybeCb);\n };\n\n _proto.validateSync = function validateSync(value, options) {\n return this._resolve(value, options).validateSync(value, options);\n };\n\n _proto.validateAt = function validateAt(path, value, options) {\n return this._resolve(value, options).validateAt(path, value, options);\n };\n\n _proto.validateSyncAt = function validateSyncAt(path, value, options) {\n return this._resolve(value, options).validateSyncAt(path, value, options);\n };\n\n return Lazy;\n}();\n\nLazy.prototype.__isYupSchema__ = true;\nexport default Lazy;","import { IKeyframes } from './IKeyframes';\nimport { getStyleOptions } from './StyleOptionsState';\nimport { Stylesheet } from './Stylesheet';\nimport { serializeRuleEntries } from './styleToClassName';\n\n/**\n * Registers keyframe definitions.\n *\n * @public\n */\nexport function keyframes(timeline: IKeyframes): string {\n const stylesheet = Stylesheet.getInstance();\n const name = stylesheet.getClassName();\n\n const rulesArray: string[] = [];\n\n for (const prop in timeline) {\n if (timeline.hasOwnProperty(prop)) {\n rulesArray.push(prop, '{', serializeRuleEntries(getStyleOptions(), timeline[prop]), '}');\n }\n }\n const rules = rulesArray.join('');\n\n stylesheet.insertRule(`@keyframes ${name}{${rules}}`, true);\n\n stylesheet.cacheClassName(name, rules, [], ['keyframes', rules]);\n\n return name;\n}\n","import { IAnimationStyles, IAnimationVariables } from '../types/IAnimationStyles';\nimport { IRawStyle, keyframes } from '@uifabric/merge-styles';\n\n/* Register the keyframes */\n\nconst EASING_FUNCTION_1 = 'cubic-bezier(.1,.9,.2,1)';\nconst EASING_FUNCTION_2 = 'cubic-bezier(.1,.25,.75,.9)';\nconst DURATION_1 = '0.167s';\nconst DURATION_2 = '0.267s';\nconst DURATION_3 = '0.367s';\nconst DURATION_4 = '0.467s';\n\nconst FADE_IN: string = keyframes({\n from: { opacity: 0 },\n to: { opacity: 1 },\n});\n\nconst FADE_OUT: string = keyframes({\n from: { opacity: 1 },\n to: { opacity: 0, visibility: 'hidden' },\n});\n\nconst SLIDE_RIGHT_IN10: string = _createSlideInX(-10);\nconst SLIDE_RIGHT_IN20: string = _createSlideInX(-20);\nconst SLIDE_RIGHT_IN40: string = _createSlideInX(-40);\nconst SLIDE_RIGHT_IN400: string = _createSlideInX(-400);\nconst SLIDE_LEFT_IN10: string = _createSlideInX(10);\nconst SLIDE_LEFT_IN20: string = _createSlideInX(20);\nconst SLIDE_LEFT_IN40: string = _createSlideInX(40);\nconst SLIDE_LEFT_IN400: string = _createSlideInX(400);\nconst SLIDE_UP_IN10: string = _createSlideInY(10);\nconst SLIDE_UP_IN20: string = _createSlideInY(20);\nconst SLIDE_DOWN_IN10: string = _createSlideInY(-10);\nconst SLIDE_DOWN_IN20: string = _createSlideInY(-20);\n\nconst SLIDE_RIGHT_OUT10: string = _createSlideOutX(10);\nconst SLIDE_RIGHT_OUT20: string = _createSlideOutX(20);\nconst SLIDE_RIGHT_OUT40: string = _createSlideOutX(40);\nconst SLIDE_RIGHT_OUT400: string = _createSlideOutX(400);\nconst SLIDE_LEFT_OUT10: string = _createSlideOutX(-10);\nconst SLIDE_LEFT_OUT20: string = _createSlideOutX(-20);\nconst SLIDE_LEFT_OUT40: string = _createSlideOutX(-40);\nconst SLIDE_LEFT_OUT400: string = _createSlideOutX(-400);\nconst SLIDE_UP_OUT10: string = _createSlideOutY(-10);\nconst SLIDE_UP_OUT20: string = _createSlideOutY(-20);\nconst SLIDE_DOWN_OUT10: string = _createSlideOutY(10);\nconst SLIDE_DOWN_OUT20: string = _createSlideOutY(20);\n\nconst SCALE_UP100: string = keyframes({\n from: { transform: 'scale3d(.98,.98,1)' },\n to: { transform: 'scale3d(1,1,1)' },\n});\n\nconst SCALE_DOWN98: string = keyframes({\n from: { transform: 'scale3d(1,1,1)' },\n to: { transform: 'scale3d(.98,.98,1)' },\n});\n\nconst SCALE_DOWN100: string = keyframes({\n from: { transform: 'scale3d(1.03,1.03,1)' },\n to: { transform: 'scale3d(1,1,1)' },\n});\n\nconst SCALE_UP103: string = keyframes({\n from: { transform: 'scale3d(1,1,1)' },\n to: { transform: 'scale3d(1.03,1.03,1)' },\n});\n\nconst ROTATE90: string = keyframes({\n from: { transform: 'rotateZ(0deg)' },\n to: { transform: 'rotateZ(90deg)' },\n});\n\nconst ROTATE_N90: string = keyframes({\n from: { transform: 'rotateZ(0deg)' },\n to: { transform: 'rotateZ(-90deg)' },\n});\n\n/**\n * Exporting raw duraction values and easing functions to be used in custom animations\n */\nexport const AnimationVariables: IAnimationVariables = {\n easeFunction1: EASING_FUNCTION_1,\n easeFunction2: EASING_FUNCTION_2,\n durationValue1: DURATION_1,\n durationValue2: DURATION_2,\n durationValue3: DURATION_3,\n durationValue4: DURATION_4,\n};\n\n/**\n * All Fabric standard animations, exposed as json objects referencing predefined\n * keyframes. These objects can be mixed in with other class definitions.\n */\nexport const AnimationStyles: IAnimationStyles = {\n slideRightIn10: _createAnimation(`${FADE_IN},${SLIDE_RIGHT_IN10}`, DURATION_3, EASING_FUNCTION_1),\n slideRightIn20: _createAnimation(`${FADE_IN},${SLIDE_RIGHT_IN20}`, DURATION_3, EASING_FUNCTION_1),\n slideRightIn40: _createAnimation(`${FADE_IN},${SLIDE_RIGHT_IN40}`, DURATION_3, EASING_FUNCTION_1),\n slideRightIn400: _createAnimation(`${FADE_IN},${SLIDE_RIGHT_IN400}`, DURATION_3, EASING_FUNCTION_1),\n slideLeftIn10: _createAnimation(`${FADE_IN},${SLIDE_LEFT_IN10}`, DURATION_3, EASING_FUNCTION_1),\n slideLeftIn20: _createAnimation(`${FADE_IN},${SLIDE_LEFT_IN20}`, DURATION_3, EASING_FUNCTION_1),\n slideLeftIn40: _createAnimation(`${FADE_IN},${SLIDE_LEFT_IN40}`, DURATION_3, EASING_FUNCTION_1),\n slideLeftIn400: _createAnimation(`${FADE_IN},${SLIDE_LEFT_IN400}`, DURATION_3, EASING_FUNCTION_1),\n slideUpIn10: _createAnimation(`${FADE_IN},${SLIDE_UP_IN10}`, DURATION_3, EASING_FUNCTION_1),\n slideUpIn20: _createAnimation(`${FADE_IN},${SLIDE_UP_IN20}`, DURATION_3, EASING_FUNCTION_1),\n slideDownIn10: _createAnimation(`${FADE_IN},${SLIDE_DOWN_IN10}`, DURATION_3, EASING_FUNCTION_1),\n slideDownIn20: _createAnimation(`${FADE_IN},${SLIDE_DOWN_IN20}`, DURATION_3, EASING_FUNCTION_1),\n\n slideRightOut10: _createAnimation(`${FADE_OUT},${SLIDE_RIGHT_OUT10}`, DURATION_3, EASING_FUNCTION_1),\n slideRightOut20: _createAnimation(`${FADE_OUT},${SLIDE_RIGHT_OUT20}`, DURATION_3, EASING_FUNCTION_1),\n slideRightOut40: _createAnimation(`${FADE_OUT},${SLIDE_RIGHT_OUT40}`, DURATION_3, EASING_FUNCTION_1),\n slideRightOut400: _createAnimation(`${FADE_OUT},${SLIDE_RIGHT_OUT400}`, DURATION_3, EASING_FUNCTION_1),\n slideLeftOut10: _createAnimation(`${FADE_OUT},${SLIDE_LEFT_OUT10}`, DURATION_3, EASING_FUNCTION_1),\n slideLeftOut20: _createAnimation(`${FADE_OUT},${SLIDE_LEFT_OUT20}`, DURATION_3, EASING_FUNCTION_1),\n slideLeftOut40: _createAnimation(`${FADE_OUT},${SLIDE_LEFT_OUT40}`, DURATION_3, EASING_FUNCTION_1),\n slideLeftOut400: _createAnimation(`${FADE_OUT},${SLIDE_LEFT_OUT400}`, DURATION_3, EASING_FUNCTION_1),\n slideUpOut10: _createAnimation(`${FADE_OUT},${SLIDE_UP_OUT10}`, DURATION_3, EASING_FUNCTION_1),\n slideUpOut20: _createAnimation(`${FADE_OUT},${SLIDE_UP_OUT20}`, DURATION_3, EASING_FUNCTION_1),\n slideDownOut10: _createAnimation(`${FADE_OUT},${SLIDE_DOWN_OUT10}`, DURATION_3, EASING_FUNCTION_1),\n slideDownOut20: _createAnimation(`${FADE_OUT},${SLIDE_DOWN_OUT20}`, DURATION_3, EASING_FUNCTION_1),\n\n scaleUpIn100: _createAnimation(`${FADE_IN},${SCALE_UP100}`, DURATION_3, EASING_FUNCTION_1),\n scaleDownIn100: _createAnimation(`${FADE_IN},${SCALE_DOWN100}`, DURATION_3, EASING_FUNCTION_1),\n scaleUpOut103: _createAnimation(`${FADE_OUT},${SCALE_UP103}`, DURATION_1, EASING_FUNCTION_2),\n scaleDownOut98: _createAnimation(`${FADE_OUT},${SCALE_DOWN98}`, DURATION_1, EASING_FUNCTION_2),\n\n fadeIn100: _createAnimation(FADE_IN, DURATION_1, EASING_FUNCTION_2),\n fadeIn200: _createAnimation(FADE_IN, DURATION_2, EASING_FUNCTION_2),\n fadeIn400: _createAnimation(FADE_IN, DURATION_3, EASING_FUNCTION_2),\n fadeIn500: _createAnimation(FADE_IN, DURATION_4, EASING_FUNCTION_2),\n\n fadeOut100: _createAnimation(FADE_OUT, DURATION_1, EASING_FUNCTION_2),\n fadeOut200: _createAnimation(FADE_OUT, DURATION_2, EASING_FUNCTION_2),\n fadeOut400: _createAnimation(FADE_OUT, DURATION_3, EASING_FUNCTION_2),\n fadeOut500: _createAnimation(FADE_OUT, DURATION_4, EASING_FUNCTION_2),\n\n rotate90deg: _createAnimation(ROTATE90, '0.1s', EASING_FUNCTION_2),\n rotateN90deg: _createAnimation(ROTATE_N90, '0.1s', EASING_FUNCTION_2),\n\n // expandCollapse 100/200/400, delay 100/200\n};\n\nfunction _createAnimation(\n animationName: string,\n animationDuration: string,\n animationTimingFunction: string,\n): IRawStyle {\n return {\n animationName,\n animationDuration,\n animationTimingFunction,\n animationFillMode: 'both',\n };\n}\n\nfunction _createSlideInX(fromX: number): string {\n return keyframes({\n from: { transform: `translate3d(${fromX}px,0,0)`, pointerEvents: 'none' },\n to: { transform: `translate3d(0,0,0)`, pointerEvents: 'auto' },\n });\n}\n\nfunction _createSlideInY(fromY: number): string {\n return keyframes({\n from: { transform: `translate3d(0,${fromY}px,0)`, pointerEvents: 'none' },\n to: { transform: `translate3d(0,0,0)`, pointerEvents: 'auto' },\n });\n}\n\nfunction _createSlideOutX(toX: number): string {\n return keyframes({\n from: { transform: `translate3d(0,0,0)` },\n to: { transform: `translate3d(${toX}px,0,0)` },\n });\n}\n\nfunction _createSlideOutY(toY: number): string {\n return keyframes({\n from: { transform: `translate3d(0,0,0)` },\n to: { transform: `translate3d(0,${toY}px,0)` },\n });\n}\n","import { buildClassMap } from '../utilities/index';\nimport { AnimationStyles } from '../styles/index';\nimport { IAnimationStyles } from '../interfaces/index';\n\n/**\n * {@docCategory AnimationClassNames}\n */\nexport const AnimationClassNames: { [key in keyof IAnimationStyles]?: string } = buildClassMap(AnimationStyles);\n","import { IFontWeight } from '@uifabric/merge-styles';\n\n// Font face names to be registered.\nexport namespace LocalizedFontNames {\n export const Arabic = 'Segoe UI Web (Arabic)';\n export const Cyrillic = 'Segoe UI Web (Cyrillic)';\n export const EastEuropean = 'Segoe UI Web (East European)';\n export const Greek = 'Segoe UI Web (Greek)';\n export const Hebrew = 'Segoe UI Web (Hebrew)';\n export const Thai = 'Leelawadee UI Web';\n export const Vietnamese = 'Segoe UI Web (Vietnamese)';\n export const WestEuropean = 'Segoe UI Web (West European)';\n export const Selawik = 'Selawik Web';\n export const Armenian = 'Segoe UI Web (Armenian)';\n export const Georgian = 'Segoe UI Web (Georgian)';\n}\n\n// Font families with fallbacks, for the general regions.\nexport namespace LocalizedFontFamilies {\n export const Arabic = `'${LocalizedFontNames.Arabic}'`;\n export const ChineseSimplified = `'Microsoft Yahei UI', Verdana, Simsun`;\n export const ChineseTraditional = `'Microsoft Jhenghei UI', Pmingliu`;\n export const Cyrillic = `'${LocalizedFontNames.Cyrillic}'`;\n export const EastEuropean = `'${LocalizedFontNames.EastEuropean}'`;\n export const Greek = `'${LocalizedFontNames.Greek}'`;\n export const Hebrew = `'${LocalizedFontNames.Hebrew}'`;\n export const Hindi = `'Nirmala UI'`;\n export const Japanese = `'Yu Gothic UI', 'Meiryo UI', Meiryo, 'MS Pgothic', Osaka`;\n export const Korean = `'Malgun Gothic', Gulim`;\n export const Selawik = `'${LocalizedFontNames.Selawik}'`;\n export const Thai = `'Leelawadee UI Web', 'Kmer UI'`;\n export const Vietnamese = `'${LocalizedFontNames.Vietnamese}'`;\n export const WestEuropean = `'${LocalizedFontNames.WestEuropean}'`;\n export const Armenian = `'${LocalizedFontNames.Armenian}'`;\n export const Georgian = `'${LocalizedFontNames.Georgian}'`;\n}\n\n// Standard font sizes.\nexport namespace FontSizes {\n export const size10 = '10px';\n export const size12 = '12px';\n export const size14 = '14px';\n export const size16 = '16px';\n export const size18 = '18px';\n export const size20 = '20px';\n export const size24 = '24px';\n export const size28 = '28px';\n export const size32 = '32px';\n export const size42 = '42px';\n export const size68 = '68px';\n\n export const mini: string = '10px';\n export const xSmall: string = '10px';\n export const small: string = '12px';\n export const smallPlus: string = '12px';\n export const medium: string = '14px';\n export const mediumPlus: string = '16px';\n export const icon: string = '16px';\n export const large: string = '18px';\n export const xLarge: string = '20px';\n export const xLargePlus: string = '24px';\n export const xxLarge: string = '28px';\n export const xxLargePlus: string = '32px';\n export const superLarge: string = '42px';\n export const mega: string = '68px';\n}\n\n// Standard font weights.\nexport namespace FontWeights {\n export const light: IFontWeight = 100;\n export const semilight: IFontWeight = 300;\n export const regular: IFontWeight = 400;\n export const semibold: IFontWeight = 600;\n export const bold: IFontWeight = 700;\n}\n\n// Standard Icon Sizes.\nexport namespace IconFontSizes {\n export const xSmall: string = '10px';\n export const small: string = '12px';\n export const medium: string = '16px';\n export const large: string = '20px';\n}\n","import { mergeStyles } from '../MergeStyles';\n\n/**\n * Builds a class names object from a given map.\n *\n * @param styles - Map of unprocessed styles.\n * @returns Map of property name to class name.\n */\nexport function buildClassMap<T extends Object>(styles: T): { [key in keyof T]?: string } {\n let classes: { [key in keyof T]?: string } = {};\n\n for (let styleName in styles) {\n if (styles.hasOwnProperty(styleName)) {\n let className: string;\n\n Object.defineProperty(classes, styleName, {\n get: (): string => {\n if (className === undefined) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n className = mergeStyles(styles[styleName] as any).toString();\n }\n return className;\n },\n enumerable: true,\n configurable: true,\n });\n }\n }\n\n return classes;\n}\n","import { IRawStyle } from '../MergeStyles';\n\nexport const HighContrastSelector = '@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)';\nexport const HighContrastSelectorWhite =\n // eslint-disable-next-line @fluentui/max-len\n '@media screen and (-ms-high-contrast: black-on-white), screen and (forced-colors: active) and (prefers-color-scheme: light)';\nexport const HighContrastSelectorBlack =\n // eslint-disable-next-line @fluentui/max-len\n '@media screen and (-ms-high-contrast: white-on-black), screen and (forced-colors: active) and (prefers-color-scheme: dark)';\n/**\n * @deprecated Use `HighContrastSelector`\n */\nexport const EdgeChromiumHighContrastSelector =\n '@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)';\n\nexport const ScreenWidthMinSmall = 320;\nexport const ScreenWidthMinMedium = 480;\nexport const ScreenWidthMinLarge = 640;\nexport const ScreenWidthMinXLarge = 1024;\nexport const ScreenWidthMinXXLarge = 1366;\nexport const ScreenWidthMinXXXLarge = 1920;\nexport const ScreenWidthMaxSmall = ScreenWidthMinMedium - 1;\nexport const ScreenWidthMaxMedium = ScreenWidthMinLarge - 1;\nexport const ScreenWidthMaxLarge = ScreenWidthMinXLarge - 1;\nexport const ScreenWidthMaxXLarge = ScreenWidthMinXXLarge - 1;\nexport const ScreenWidthMaxXXLarge = ScreenWidthMinXXXLarge - 1;\n\nexport const ScreenWidthMinUhfMobile = 768;\n\nexport function getScreenSelector(min: number | undefined, max: number | undefined): string {\n const minSelector = typeof min === 'number' ? ` and (min-width: ${min}px)` : '';\n const maxSelector = typeof max === 'number' ? ` and (max-width: ${max}px)` : '';\n return `@media only screen${minSelector}${maxSelector}`;\n}\n\n/**\n * The style which turns off high contrast adjustment in browsers.\n */\nexport function getHighContrastNoAdjustStyle(): IRawStyle {\n return {\n forcedColorAdjust: 'none',\n MsHighContrastAdjust: 'none',\n };\n}\n\n/**\n * The style which turns off high contrast adjustment in (only) Edge Chromium browser.\n * @deprecated Use `getHighContrastNoAdjustStyle`\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function getEdgeChromiumNoHighContrastAdjustSelector(): { [EdgeChromiumHighContrastSelector]: IRawStyle } {\n return {\n // eslint-disable-next-line deprecation/deprecation\n [EdgeChromiumHighContrastSelector]: {\n forcedColorAdjust: 'none',\n MsHighContrastAdjust: 'none',\n },\n };\n}\n","export namespace ZIndexes {\n export const Nav: number = 1;\n /**\n * @deprecated ScrollablePane\n */\n export const ScrollablePane: number = 1;\n export const FocusStyle: number = 1;\n export const Coachmark: number = 1000;\n export const Layer: number = 1000000;\n export const KeytipLayer: number = 1000001;\n}\n","import { IRawStyle } from '@uifabric/merge-styles';\nimport { IGetFocusStylesOptions, ITheme } from '../interfaces/index';\nimport { HighContrastSelector } from './CommonStyles';\nimport { IsFocusVisibleClassName } from '@uifabric/utilities';\nimport { ZIndexes } from './zIndexes';\n\n/**\n * Generates a focus style which can be used to define an :after focus border.\n *\n * @param theme - The theme object to use.\n * @param options - Options to customize the focus border.\n * @returns The style object.\n */\nexport function getFocusStyle(theme: ITheme, options?: IGetFocusStylesOptions): IRawStyle;\n/**\n * Generates a focus style which can be used to define an :after focus border.\n *\n * @param theme - The theme object to use.\n * @param inset - The number of pixels to inset the border.\n * @param position - The positioning applied to the container. Must\n * be 'relative' or 'absolute' so that the focus border can live around it.\n * @param highContrastStyle - Style for high contrast mode.\n * @param borderColor - Color of the border.\n * @param outlineColor - Color of the outline.\n * @param isFocusedOnly - If the styles should apply on focus or not.\n * @returns The style object.\n * @deprecated Use the object parameter version instead.\n */\nexport function getFocusStyle(\n theme: ITheme,\n inset?: number,\n position?: 'relative' | 'absolute',\n highContrastStyle?: IRawStyle | undefined,\n borderColor?: string,\n outlineColor?: string,\n isFocusedOnly?: boolean,\n): IRawStyle;\nexport function getFocusStyle(\n theme: ITheme,\n insetOrOptions?: number | IGetFocusStylesOptions,\n position?: 'relative' | 'absolute',\n highContrastStyle?: IRawStyle,\n borderColor?: string,\n outlineColor?: string,\n isFocusedOnly?: boolean,\n): IRawStyle {\n if (typeof insetOrOptions === 'number' || !insetOrOptions) {\n return _getFocusStyleInternal(theme, {\n inset: insetOrOptions,\n position,\n highContrastStyle,\n borderColor,\n outlineColor,\n isFocusedOnly,\n });\n } else {\n return _getFocusStyleInternal(theme, insetOrOptions);\n }\n}\n\nfunction _getFocusStyleInternal(theme: ITheme, options: IGetFocusStylesOptions = {}): IRawStyle {\n const {\n inset = 0,\n width = 1,\n position = 'relative',\n highContrastStyle,\n borderColor = theme.palette.white,\n outlineColor = theme.palette.neutralSecondary,\n isFocusedOnly = true,\n } = options;\n\n return {\n // Clear browser-specific focus styles and use 'transparent' as placeholder for focus style.\n outline: 'transparent',\n // Requirement because pseudo-element is absolutely positioned.\n position,\n\n selectors: {\n // Clear the focus border in Firefox.\n // Reference: http://stackoverflow.com/a/199319/1436671\n '::-moz-focus-inner': {\n border: '0',\n },\n\n // When the element that uses this mixin is in a :focus state, add a pseudo-element to\n // create a border.\n [`.${IsFocusVisibleClassName} &${isFocusedOnly ? ':focus' : ''}:after`]: {\n content: '\"\"',\n position: 'absolute',\n left: inset + 1,\n top: inset + 1,\n bottom: inset + 1,\n right: inset + 1,\n border: `${width}px solid ${borderColor}`,\n outline: `${width}px solid ${outlineColor}`,\n zIndex: ZIndexes.FocusStyle,\n selectors: {\n [HighContrastSelector]: highContrastStyle,\n },\n },\n },\n };\n}\n\n/**\n * Generates style to clear browser specific focus styles.\n */\nexport function focusClear(): IRawStyle {\n return {\n selectors: {\n '&::-moz-focus-inner': {\n // Clear the focus border in Firefox. Reference: http://stackoverflow.com/a/199319/1436671\n border: 0,\n },\n '&': {\n // Clear browser specific focus styles and use transparent as placeholder for focus style\n outline: 'transparent',\n },\n },\n };\n}\n\n/**\n * Generates a style which can be used to set a border on focus.\n *\n * @param theme - The theme object to use.\n * @param inset - The number of pixels to inset the border (default 0)\n * @param width - The border width in pixels (default 1)\n * @param color - Color of the outline (default `theme.palette.neutralSecondary`)\n * @returns The style object.\n */\nexport function getFocusOutlineStyle(theme: ITheme, inset: number = 0, width: number = 1, color?: string): IRawStyle {\n return {\n selectors: {\n [`:global(${IsFocusVisibleClassName}) &:focus`]: {\n outline: `${width} solid ${color || theme.palette.neutralSecondary}`,\n outlineOffset: `${-inset}px`,\n },\n },\n };\n}\n\n/**\n * Generates text input border styles on focus.\n *\n * @param borderColor - Color of the border.\n * @param borderRadius - Radius of the border.\n * @param borderType - Type of the border.\n * @param borderPosition - Position of the border relative to the input element (default to -1\n * as it's the most common border width of the input element)\n * @returns The style object.\n */\nexport const getInputFocusStyle = (\n borderColor: string,\n borderRadius: string | number,\n borderType: 'border' | 'borderBottom' = 'border',\n borderPosition: number = -1,\n): IRawStyle => {\n const isBorderBottom = borderType === 'borderBottom';\n\n return {\n borderColor,\n selectors: {\n ':after': {\n pointerEvents: 'none',\n content: \"''\",\n position: 'absolute',\n left: isBorderBottom ? 0 : borderPosition,\n top: borderPosition,\n bottom: borderPosition,\n right: isBorderBottom ? 0 : borderPosition,\n [borderType]: `2px solid ${borderColor}`,\n borderRadius,\n width: borderType === 'borderBottom' ? '100%' : undefined,\n selectors: {\n [HighContrastSelector]: {\n [borderType === 'border' ? 'borderColor' : 'borderBottomColor']: 'Highlight',\n },\n },\n },\n },\n };\n};\n","import { IRawStyle } from '@uifabric/merge-styles';\n\nexport const hiddenContentStyle: IRawStyle = {\n position: 'absolute',\n width: 1,\n height: 1,\n margin: -1,\n padding: 0,\n border: 0,\n overflow: 'hidden',\n};\n","import { ITheme } from '../interfaces/index';\nimport { Stylesheet } from '@uifabric/merge-styles';\nimport { memoizeFunction } from '@uifabric/utilities';\n\nexport type GlobalClassNames<IStyles> = Record<keyof IStyles, string>;\n\n/**\n * Internal memoized function which simply takes in the class map and the\n * disable boolean. These immutable values can be memoized.\n */\nconst _getGlobalClassNames = memoizeFunction(\n <T>(classNames: GlobalClassNames<T>, disableGlobalClassNames?: boolean): GlobalClassNames<T> => {\n const styleSheet = Stylesheet.getInstance();\n\n if (disableGlobalClassNames) {\n // disable global classnames\n return (Object.keys(classNames) as (keyof T)[]).reduce((acc, className) => {\n acc[className] = styleSheet.getClassName(classNames[className]);\n return acc;\n }, {} as GlobalClassNames<T>);\n }\n\n // use global classnames\n return classNames;\n },\n);\n\n/**\n * Checks for the `disableGlobalClassNames` property on the `theme` to determine if it should return `classNames`\n * Note that calls to this function are memoized.\n *\n * @param classNames - The collection of global class names that apply when the flag is false. Make sure to pass in\n * the same instance on each call to benefit from memoization.\n * @param theme - The theme to check the flag on\n * @param disableGlobalClassNames - Optional. Explicitly opt in/out of disabling global classnames. Defaults to false.\n */\nexport function getGlobalClassNames<T>(\n classNames: GlobalClassNames<T>,\n theme: ITheme,\n disableGlobalClassNames?: boolean,\n): GlobalClassNames<T> {\n return _getGlobalClassNames(\n classNames,\n disableGlobalClassNames !== undefined ? disableGlobalClassNames : theme.disableGlobalClassNames,\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n 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 function __createBinding(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, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = 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\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","export namespace Depths {\n export const depth0 = '0 0 0 0 transparent';\n export const depth4 = '0 1.6px 3.6px 0 rgba(0, 0, 0, 0.132), 0 0.3px 0.9px 0 rgba(0, 0, 0, 0.108)';\n export const depth8 = '0 3.2px 7.2px 0 rgba(0, 0, 0, 0.132), 0 0.6px 1.8px 0 rgba(0, 0, 0, 0.108)';\n export const depth16 = '0 6.4px 14.4px 0 rgba(0, 0, 0, 0.132), 0 1.2px 3.6px 0 rgba(0, 0, 0, 0.108)';\n export const depth64 = '0 25.6px 57.6px 0 rgba(0, 0, 0, 0.22), 0 4.8px 14.4px 0 rgba(0, 0, 0, 0.18)';\n}\n","import { IPalette } from '../types/index';\n\n// When adding or removing a color, make sure you keep this consistent with IColorClassNames\n// by adding the color variants.\nexport const DefaultPalette: IPalette = {\n themeDarker: '#004578',\n themeDark: '#005a9e',\n themeDarkAlt: '#106ebe',\n themePrimary: '#0078d4',\n themeSecondary: '#2b88d8',\n themeTertiary: '#71afe5',\n themeLight: '#c7e0f4',\n themeLighter: '#deecf9',\n themeLighterAlt: '#eff6fc',\n black: '#000000',\n blackTranslucent40: 'rgba(0,0,0,.4)',\n neutralDark: '#201f1e',\n neutralPrimary: '#323130',\n neutralPrimaryAlt: '#3b3a39',\n neutralSecondary: '#605e5c',\n neutralSecondaryAlt: '#8a8886',\n neutralTertiary: '#a19f9d',\n neutralTertiaryAlt: '#c8c6c4',\n neutralQuaternary: '#d2d0ce',\n neutralQuaternaryAlt: '#e1dfdd',\n neutralLight: '#edebe9',\n neutralLighter: '#f3f2f1',\n neutralLighterAlt: '#faf9f8',\n accent: '#0078d4',\n white: '#ffffff',\n whiteTranslucent40: 'rgba(255,255,255,.4)',\n yellowDark: '#d29200',\n yellow: '#ffb900',\n yellowLight: '#fff100',\n orange: '#d83b01',\n orangeLight: '#ea4300',\n orangeLighter: '#ff8c00',\n redDark: '#a4262c',\n red: '#e81123',\n magentaDark: '#5c005c',\n magenta: '#b4009e',\n magentaLight: '#e3008c',\n purpleDark: '#32145a',\n purple: '#5c2d91',\n purpleLight: '#b4a0ff',\n blueDark: '#002050',\n blueMid: '#00188f',\n blue: '#0078d4',\n blueLight: '#00bcf2',\n tealDark: '#004b50',\n teal: '#008272',\n tealLight: '#00b294',\n greenDark: '#004b1c',\n green: '#107c10',\n greenLight: '#bad80a',\n};\n","import { IEffects } from '../types/index';\nimport { Depths } from './FluentDepths';\n\nexport const DefaultEffects: IEffects = {\n elevation4: Depths.depth4,\n elevation8: Depths.depth8,\n elevation16: Depths.depth16,\n elevation64: Depths.depth64,\n\n roundedCorner2: '2px',\n roundedCorner4: '4px',\n roundedCorner6: '6px',\n};\n","import { IFontFace } from './IRawStyleBase';\nimport { getStyleOptions } from './StyleOptionsState';\nimport { Stylesheet } from './Stylesheet';\nimport { serializeRuleEntries } from './styleToClassName';\n\n/**\n * Registers a font face.\n * @public\n */\nexport function fontFace(font: IFontFace): void {\n Stylesheet.getInstance().insertRule(`@font-face{${serializeRuleEntries(getStyleOptions(), font as {})}}`, true);\n}\n","import { IFontWeight, IRawStyle } from '@uifabric/merge-styles';\nimport { IFontStyles } from '../types/IFontStyles';\nimport { FontSizes, FontWeights, LocalizedFontFamilies, LocalizedFontNames } from './FluentFonts';\n\n// Fallback fonts, if specified system or web fonts are unavailable.\nconst FontFamilyFallbacks = `'Segoe UI', -apple-system, BlinkMacSystemFont, 'Roboto', 'Helvetica Neue', sans-serif`;\n\n// By default, we favor system fonts for the default.\n// All localized fonts use a web font and never use the system font.\nconst defaultFontFamily = `'Segoe UI', '${LocalizedFontNames.WestEuropean}'`;\n\n// Mapping of language prefix to to font family.\nconst LanguageToFontMap = {\n ar: LocalizedFontFamilies.Arabic,\n bg: LocalizedFontFamilies.Cyrillic,\n cs: LocalizedFontFamilies.EastEuropean,\n el: LocalizedFontFamilies.Greek,\n et: LocalizedFontFamilies.EastEuropean,\n he: LocalizedFontFamilies.Hebrew,\n hi: LocalizedFontFamilies.Hindi,\n hr: LocalizedFontFamilies.EastEuropean,\n hu: LocalizedFontFamilies.EastEuropean,\n ja: LocalizedFontFamilies.Japanese,\n kk: LocalizedFontFamilies.EastEuropean,\n ko: LocalizedFontFamilies.Korean,\n lt: LocalizedFontFamilies.EastEuropean,\n lv: LocalizedFontFamilies.EastEuropean,\n pl: LocalizedFontFamilies.EastEuropean,\n ru: LocalizedFontFamilies.Cyrillic,\n sk: LocalizedFontFamilies.EastEuropean,\n 'sr-latn': LocalizedFontFamilies.EastEuropean,\n th: LocalizedFontFamilies.Thai,\n tr: LocalizedFontFamilies.EastEuropean,\n uk: LocalizedFontFamilies.Cyrillic,\n vi: LocalizedFontFamilies.Vietnamese,\n 'zh-hans': LocalizedFontFamilies.ChineseSimplified,\n 'zh-hant': LocalizedFontFamilies.ChineseTraditional,\n hy: LocalizedFontFamilies.Armenian,\n ka: LocalizedFontFamilies.Georgian,\n};\n\nfunction _fontFamilyWithFallbacks(fontFamily: string): string {\n return `${fontFamily}, ${FontFamilyFallbacks}`;\n}\n\n/**\n * If there is a localized font for this language, return that.\n * Returns undefined if there is no localized font for that language.\n */\nfunction _getLocalizedFontFamily(language: string | null): string {\n for (const lang in LanguageToFontMap) {\n if (LanguageToFontMap.hasOwnProperty(lang) && language && lang.indexOf(language) === 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return (LanguageToFontMap as any)[lang];\n }\n }\n\n return defaultFontFamily;\n}\n\nfunction _createFont(size: string, weight: IFontWeight, fontFamily: string): IRawStyle {\n return {\n fontFamily: fontFamily,\n MozOsxFontSmoothing: 'grayscale',\n WebkitFontSmoothing: 'antialiased',\n fontSize: size,\n fontWeight: weight,\n };\n}\n\nexport function createFontStyles(localeCode: string | null): IFontStyles {\n const localizedFont = _getLocalizedFontFamily(localeCode);\n const fontFamilyWithFallback = _fontFamilyWithFallbacks(localizedFont);\n\n const fontStyles = {\n tiny: _createFont(FontSizes.mini, FontWeights.regular, fontFamilyWithFallback),\n xSmall: _createFont(FontSizes.xSmall, FontWeights.regular, fontFamilyWithFallback),\n small: _createFont(FontSizes.small, FontWeights.regular, fontFamilyWithFallback),\n smallPlus: _createFont(FontSizes.smallPlus, FontWeights.regular, fontFamilyWithFallback),\n medium: _createFont(FontSizes.medium, FontWeights.regular, fontFamilyWithFallback),\n mediumPlus: _createFont(FontSizes.mediumPlus, FontWeights.regular, fontFamilyWithFallback),\n large: _createFont(FontSizes.large, FontWeights.regular, fontFamilyWithFallback),\n xLarge: _createFont(FontSizes.xLarge, FontWeights.semibold, fontFamilyWithFallback),\n xLargePlus: _createFont(FontSizes.xLargePlus, FontWeights.semibold, fontFamilyWithFallback),\n xxLarge: _createFont(FontSizes.xxLarge, FontWeights.semibold, fontFamilyWithFallback),\n xxLargePlus: _createFont(FontSizes.xxLargePlus, FontWeights.semibold, fontFamilyWithFallback),\n superLarge: _createFont(FontSizes.superLarge, FontWeights.semibold, fontFamilyWithFallback),\n mega: _createFont(FontSizes.mega, FontWeights.semibold, fontFamilyWithFallback),\n };\n\n return fontStyles;\n}\n","import { getDocument } from './dom/getDocument';\nimport * as localStorage from './localStorage';\nimport * as sessionStorage from './sessionStorage';\n\n// Default to undefined so that we initialize on first read.\nlet _language: string | null;\n\nconst STORAGE_KEY = 'language';\n\n/**\n * Gets the language set for the page.\n * @param persistenceType - Where to persist the value. Default is `localStorage` if available.\n * (In version 8, the default will be `sessionStorage`.)\n */\nexport function getLanguage(\n persistenceType: 'localStorage' | 'sessionStorage' | 'none' = 'localStorage',\n): string | null {\n if (_language === undefined) {\n let doc = getDocument();\n const savedLanguage =\n persistenceType === 'localStorage'\n ? localStorage.getItem(STORAGE_KEY)\n : persistenceType === 'sessionStorage'\n ? sessionStorage.getItem(STORAGE_KEY)\n : undefined;\n\n if (savedLanguage) {\n _language = savedLanguage;\n }\n\n if (_language === undefined && doc) {\n _language = doc.documentElement.getAttribute('lang');\n }\n\n if (_language === undefined) {\n _language = 'en';\n }\n }\n\n return _language;\n}\n\n/**\n * Sets the language for the page (by adjusting the lang attribute of the html element).\n * @param language - Language to set.\n * @param persistenceType - Where to persist the value. Default is `localStorage` if available.\n * (In version 8, the default will be `sessionStorage`.)\n */\nexport function setLanguage(language: string, persistenceType?: 'localStorage' | 'sessionStorage' | 'none'): void;\n/**\n * Sets the language for the page (by adjusting the lang attribute of the html element).\n * @deprecated Use string parameter version.\n * @param language - Language to set.\n * @param avoidPersisting - If true, don't store the value.\n */\nexport function setLanguage(language: string, avoidPersisting?: boolean): void;\nexport function setLanguage(\n language: string,\n persistenceParam?: 'localStorage' | 'sessionStorage' | 'none' | boolean,\n): void {\n let doc = getDocument();\n\n if (doc) {\n doc.documentElement.setAttribute('lang', language);\n }\n\n const persistenceType = persistenceParam === true ? 'none' : !persistenceParam ? 'localStorage' : persistenceParam;\n if (persistenceType === 'localStorage') {\n localStorage.setItem(STORAGE_KEY, language);\n } else if (persistenceType === 'sessionStorage') {\n sessionStorage.setItem(STORAGE_KEY, language);\n }\n\n _language = language;\n}\n","import { fontFace, IFontWeight } from '@uifabric/merge-styles';\nimport { FontWeights, LocalizedFontFamilies, LocalizedFontNames } from './FluentFonts';\nimport { createFontStyles } from './createFontStyles';\nimport { getLanguage, getWindow } from '@uifabric/utilities';\nimport { IFontStyles } from '../types/IFontStyles';\nimport { IFabricConfig } from '../types/IFabricConfig';\n\n// Default urls.\nconst DefaultBaseUrl = 'https://static2.sharepointonline.com/files/fabric/assets';\n\n// Standard font styling.\nexport const DefaultFontStyles: IFontStyles = createFontStyles(getLanguage('sessionStorage'));\n\nfunction _registerFontFace(fontFamily: string, url: string, fontWeight?: IFontWeight, localFontName?: string): void {\n fontFamily = `'${fontFamily}'`;\n\n const localFontSrc = localFontName !== undefined ? `local('${localFontName}'),` : '';\n\n fontFace({\n fontFamily,\n src: localFontSrc + `url('${url}.woff2') format('woff2'),` + `url('${url}.woff') format('woff')`,\n fontWeight,\n fontStyle: 'normal',\n fontDisplay: 'swap',\n });\n}\n\nfunction _registerFontFaceSet(\n baseUrl: string,\n fontFamily: string,\n cdnFolder: string,\n cdnFontName: string = 'segoeui',\n localFontName?: string,\n): void {\n const urlBase = `${baseUrl}/${cdnFolder}/${cdnFontName}`;\n\n _registerFontFace(fontFamily, urlBase + '-light', FontWeights.light, localFontName && localFontName + ' Light');\n _registerFontFace(\n fontFamily,\n urlBase + '-semilight',\n FontWeights.semilight,\n localFontName && localFontName + ' SemiLight',\n );\n _registerFontFace(fontFamily, urlBase + '-regular', FontWeights.regular, localFontName);\n _registerFontFace(\n fontFamily,\n urlBase + '-semibold',\n FontWeights.semibold,\n localFontName && localFontName + ' SemiBold',\n );\n _registerFontFace(fontFamily, urlBase + '-bold', FontWeights.bold, localFontName && localFontName + ' Bold');\n}\n\nexport function registerDefaultFontFaces(baseUrl: string): void {\n if (baseUrl) {\n const fontUrl = `${baseUrl}/fonts`;\n\n // Produce @font-face definitions for all supported web fonts.\n _registerFontFaceSet(fontUrl, LocalizedFontNames.Thai, 'leelawadeeui-thai', 'leelawadeeui');\n _registerFontFaceSet(fontUrl, LocalizedFontNames.Arabic, 'segoeui-arabic');\n _registerFontFaceSet(fontUrl, LocalizedFontNames.Cyrillic, 'segoeui-cyrillic');\n _registerFontFaceSet(fontUrl, LocalizedFontNames.EastEuropean, 'segoeui-easteuropean');\n _registerFontFaceSet(fontUrl, LocalizedFontNames.Greek, 'segoeui-greek');\n _registerFontFaceSet(fontUrl, LocalizedFontNames.Hebrew, 'segoeui-hebrew');\n _registerFontFaceSet(fontUrl, LocalizedFontNames.Vietnamese, 'segoeui-vietnamese');\n _registerFontFaceSet(fontUrl, LocalizedFontNames.WestEuropean, 'segoeui-westeuropean', 'segoeui', 'Segoe UI');\n _registerFontFaceSet(fontUrl, LocalizedFontFamilies.Selawik, 'selawik', 'selawik');\n _registerFontFaceSet(fontUrl, LocalizedFontNames.Armenian, 'segoeui-armenian');\n _registerFontFaceSet(fontUrl, LocalizedFontNames.Georgian, 'segoeui-georgian');\n\n // Leelawadee UI (Thai) does not have a 'light' weight, so we override\n // the font-face generated above to use the 'semilight' weight instead.\n _registerFontFace('Leelawadee UI Web', `${fontUrl}/leelawadeeui-thai/leelawadeeui-semilight`, FontWeights.light);\n\n // Leelawadee UI (Thai) does not have a 'semibold' weight, so we override\n // the font-face generated above to use the 'bold' weight instead.\n _registerFontFace('Leelawadee UI Web', `${fontUrl}/leelawadeeui-thai/leelawadeeui-bold`, FontWeights.semibold);\n }\n}\n\n/**\n * Reads the fontBaseUrl from window.FabricConfig.fontBaseUrl or falls back to a default.\n */\nfunction _getFontBaseUrl(): string {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const fabricConfig: IFabricConfig | undefined = (getWindow() as any)?.FabricConfig;\n\n return fabricConfig?.fontBaseUrl ?? DefaultBaseUrl;\n}\n\n/**\n * Register the font faces.\n */\nregisterDefaultFontFaces(_getFontBaseUrl());\n","import { getWindow } from './dom/getWindow';\n\n/**\n * Fetches an item from local storage without throwing an exception\n * @param key The key of the item to fetch from local storage\n */\nexport function getItem(key: string): string | null {\n let result = null;\n try {\n const win = getWindow();\n result = win ? win.localStorage.getItem(key) : null;\n } catch (e) {\n /* Eat the exception */\n }\n return result;\n}\n\n/**\n * Inserts an item into local storage without throwing an exception\n * @param key The key of the item to add to local storage\n * @param data The data to put into local storage\n */\nexport function setItem(key: string, data: string): void {\n try {\n const win = getWindow();\n\n win && win.localStorage.setItem(key, data);\n } catch (e) {\n /* Eat the exception */\n }\n}\n","/**\n * Simple deep merge function. Takes all arguments and returns a deep copy of the objects merged\n * together in the order provided. If an object creates a circular reference, it will assign the\n * original reference.\n */\nexport function merge<T = {}>(target: Partial<T>, ...args: (Partial<T> | null | undefined | false)[]): T {\n for (const arg of args) {\n _merge(target || {}, arg as Partial<T>);\n }\n\n return target as T;\n}\n\n/**\n * The _merge helper iterates through all props on source and assigns them to target.\n * When the value is an object, we will create a deep clone of the object. However if\n * there is a circular reference, the value will not be deep cloned and will persist\n * the reference.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _merge<T extends Object>(target: T, source: T, circularReferences: any[] = []): T {\n circularReferences.push(source);\n\n for (let name in source) {\n if (source.hasOwnProperty(name)) {\n if (name !== '__proto__' && name !== 'constructor' && name !== 'prototype') {\n const value: T[Extract<keyof T, string>] = source[name];\n if (typeof value === 'object' && value !== null && !Array.isArray(value)) {\n const isCircularReference = circularReferences.indexOf(value) > -1;\n target[name] = (isCircularReference\n ? value\n : _merge(target[name] || {}, value, circularReferences)) as T[Extract<keyof T, string>];\n } else {\n target[name] = value;\n }\n }\n }\n }\n\n circularReferences.pop();\n\n return target;\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n 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 function __createBinding(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, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = 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\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","import { IEffects, IPalette, ISemanticColors } from '../types/index';\n\n/** Generates all the semantic slot colors based on the theme so far\n * We'll use these as fallbacks for semantic slots that the passed in theme did not define.\n * The caller must still mix in the customized semantic slots at the end.\n */\nexport function makeSemanticColors(\n p: IPalette,\n e: IEffects,\n s: Partial<ISemanticColors> | undefined,\n isInverted: boolean,\n depComments: boolean = false,\n): ISemanticColors {\n const semanticColors: Partial<ISemanticColors> = {\n primaryButtonBorder: 'transparent',\n\n errorText: !isInverted ? '#a4262c' : '#F1707B',\n\n messageText: !isInverted ? '#323130' : '#F3F2F1',\n messageLink: !isInverted ? '#005A9E' : '#6CB8F6',\n messageLinkHovered: !isInverted ? '#004578' : '#82C7FF',\n\n infoIcon: !isInverted ? '#605e5c' : '#C8C6C4',\n errorIcon: !isInverted ? '#A80000' : '#F1707B',\n blockingIcon: !isInverted ? '#FDE7E9' : '#442726',\n warningIcon: !isInverted ? '#797775' : '#C8C6C4',\n severeWarningIcon: !isInverted ? '#D83B01' : '#FCE100',\n successIcon: !isInverted ? '#107C10' : '#92C353',\n\n infoBackground: !isInverted ? '#f3f2f1' : '#323130',\n errorBackground: !isInverted ? '#FDE7E9' : '#442726',\n blockingBackground: !isInverted ? '#FDE7E9' : '#442726',\n warningBackground: !isInverted ? '#FFF4CE' : '#433519',\n severeWarningBackground: !isInverted ? '#FED9CC' : '#4F2A0F',\n successBackground: !isInverted ? '#DFF6DD' : '#393D1B',\n\n // deprecated\n warningHighlight: !isInverted ? '#ffb900' : '#fff100',\n successText: !isInverted ? '#107C10' : '#92c353',\n\n ...s,\n };\n\n const fullSemanticColors = getSemanticColors<ISemanticColors>(p, e, semanticColors, isInverted);\n return _fixDeprecatedSlots(fullSemanticColors, depComments);\n}\n\n/**\n * Map partial platte and effects to partial semantic colors.\n */\nexport function getSemanticColors<TResult = Partial<ISemanticColors>>(\n p: Partial<IPalette> | undefined,\n e: Partial<IEffects> | undefined,\n s: Partial<ISemanticColors> | undefined,\n isInverted: boolean,\n depComments: boolean = false,\n): TResult {\n let result: Partial<ISemanticColors> = {};\n\n // map palette\n const {\n white,\n black,\n themePrimary,\n themeDark,\n themeDarker,\n themeDarkAlt,\n themeLighter,\n neutralLight,\n neutralLighter,\n neutralDark,\n neutralQuaternary,\n neutralQuaternaryAlt,\n neutralPrimary,\n neutralSecondary,\n neutralSecondaryAlt,\n neutralTertiary,\n neutralTertiaryAlt,\n neutralLighterAlt,\n accent,\n } = p || {};\n\n if (white) {\n result.bodyBackground = white;\n result.bodyFrameBackground = white;\n result.accentButtonText = white;\n result.buttonBackground = white;\n result.primaryButtonText = white;\n result.primaryButtonTextHovered = white;\n result.primaryButtonTextPressed = white;\n result.inputBackground = white;\n result.inputForegroundChecked = white;\n result.listBackground = white;\n result.menuBackground = white;\n result.cardStandoutBackground = white;\n }\n if (black) {\n result.bodyTextChecked = black;\n result.buttonTextCheckedHovered = black;\n }\n if (themePrimary) {\n result.link = themePrimary;\n result.primaryButtonBackground = themePrimary;\n result.inputBackgroundChecked = themePrimary;\n result.inputIcon = themePrimary;\n result.inputFocusBorderAlt = themePrimary;\n result.menuIcon = themePrimary;\n result.menuHeader = themePrimary;\n result.accentButtonBackground = themePrimary;\n }\n if (themeDark) {\n result.primaryButtonBackgroundPressed = themeDark;\n result.inputBackgroundCheckedHovered = themeDark;\n result.inputIconHovered = themeDark;\n }\n if (themeDarker) {\n result.linkHovered = themeDarker;\n }\n if (themeDarkAlt) {\n result.primaryButtonBackgroundHovered = themeDarkAlt;\n }\n if (themeLighter) {\n result.inputPlaceholderBackgroundChecked = themeLighter;\n }\n if (neutralLight) {\n result.bodyBackgroundChecked = neutralLight;\n result.bodyFrameDivider = neutralLight;\n result.bodyDivider = neutralLight;\n result.variantBorder = neutralLight;\n result.buttonBackgroundCheckedHovered = neutralLight;\n result.buttonBackgroundPressed = neutralLight;\n result.listItemBackgroundChecked = neutralLight;\n result.listHeaderBackgroundPressed = neutralLight;\n result.menuItemBackgroundPressed = neutralLight;\n // eslint-disable-next-line deprecation/deprecation\n result.menuItemBackgroundChecked = neutralLight;\n }\n if (neutralLighter) {\n result.bodyBackgroundHovered = neutralLighter;\n result.buttonBackgroundHovered = neutralLighter;\n result.buttonBackgroundDisabled = neutralLighter;\n result.buttonBorderDisabled = neutralLighter;\n result.primaryButtonBackgroundDisabled = neutralLighter;\n result.disabledBackground = neutralLighter;\n result.listItemBackgroundHovered = neutralLighter;\n result.listHeaderBackgroundHovered = neutralLighter;\n result.menuItemBackgroundHovered = neutralLighter;\n }\n if (neutralQuaternary) {\n result.primaryButtonTextDisabled = neutralQuaternary;\n result.disabledSubtext = neutralQuaternary;\n }\n if (neutralQuaternaryAlt) {\n result.listItemBackgroundCheckedHovered = neutralQuaternaryAlt;\n }\n if (neutralTertiary) {\n result.disabledBodyText = neutralTertiary;\n result.variantBorderHovered = s?.variantBorderHovered || neutralTertiary;\n result.buttonTextDisabled = neutralTertiary;\n result.inputIconDisabled = neutralTertiary;\n result.disabledText = neutralTertiary;\n }\n if (neutralPrimary) {\n result.bodyText = neutralPrimary;\n result.actionLink = neutralPrimary;\n result.buttonText = neutralPrimary;\n result.inputBorderHovered = neutralPrimary;\n result.inputText = neutralPrimary;\n result.listText = neutralPrimary;\n result.menuItemText = neutralPrimary;\n }\n if (neutralLighterAlt) {\n result.bodyStandoutBackground = neutralLighterAlt;\n result.defaultStateBackground = neutralLighterAlt;\n }\n if (neutralDark) {\n result.actionLinkHovered = neutralDark;\n result.buttonTextHovered = neutralDark;\n result.buttonTextChecked = neutralDark;\n result.buttonTextPressed = neutralDark;\n result.inputTextHovered = neutralDark;\n result.menuItemTextHovered = neutralDark;\n }\n if (neutralSecondary) {\n result.bodySubtext = neutralSecondary;\n result.focusBorder = neutralSecondary;\n result.inputBorder = neutralSecondary;\n result.smallInputBorder = neutralSecondary;\n result.inputPlaceholderText = neutralSecondary;\n }\n if (neutralSecondaryAlt) {\n result.buttonBorder = neutralSecondaryAlt;\n }\n if (neutralTertiaryAlt) {\n result.disabledBodySubtext = neutralTertiaryAlt;\n result.disabledBorder = neutralTertiaryAlt;\n result.buttonBackgroundChecked = neutralTertiaryAlt;\n result.menuDivider = neutralTertiaryAlt;\n }\n if (accent) {\n result.accentButtonBackground = accent;\n }\n\n // map effects\n if (e?.elevation4) {\n result.cardShadow = e.elevation4;\n }\n if (!isInverted && e?.elevation8) {\n result.cardShadowHovered = e.elevation8;\n } else if (result.variantBorderHovered) {\n result.cardShadowHovered = '0 0 1px ' + result.variantBorderHovered;\n }\n\n result = {\n ...result,\n // mix in customized semantic slots\n ...s,\n };\n\n return result as TResult;\n}\n\nfunction _fixDeprecatedSlots(s: ISemanticColors, depComments: boolean): ISemanticColors {\n // Add @deprecated tag as comment if enabled\n let dep = '';\n if (depComments === true) {\n dep = ' /* @deprecated */';\n }\n\n /* eslint-disable deprecation/deprecation */\n s.listTextColor = s.listText + dep;\n s.menuItemBackgroundChecked += dep;\n s.warningHighlight += dep;\n s.warningText = s.messageText + dep;\n s.successText += dep;\n /* eslint-enable deprecation/deprecation */\n return s;\n}\n","import { ISpacing } from '../types/index';\n\nexport const DefaultSpacing: ISpacing = {\n s2: '4px',\n s1: '8px',\n m: '16px',\n l1: '20px',\n l2: '32px',\n};\n","import { DefaultPalette } from './colors/index';\nimport { DefaultEffects } from './effects/index';\nimport { DefaultFontStyles } from './fonts/index';\nimport { mergeThemes } from './mergeThemes';\nimport { DefaultSpacing } from './spacing/index';\nimport { PartialTheme, Theme } from './types/index';\nimport { makeSemanticColors } from './utilities/makeSemanticColors';\n\n/**\n * Creates a custom theme definition.\n * @param theme - Partial theme object.\n * @param depComments - Whether to include deprecated tags as comments for deprecated slots.\n */\nexport function createTheme(theme: PartialTheme = {}, depComments: boolean = false): Theme {\n const isInverted = !!theme.isInverted;\n const baseTheme: Theme = {\n palette: DefaultPalette,\n effects: DefaultEffects,\n fonts: DefaultFontStyles,\n spacing: DefaultSpacing,\n isInverted,\n disableGlobalClassNames: false,\n semanticColors: makeSemanticColors(DefaultPalette, DefaultEffects, undefined, isInverted, depComments),\n rtl: undefined,\n };\n\n return mergeThemes(baseTheme, theme);\n}\n","import { merge } from '@uifabric/utilities';\nimport { IFontStyles, PartialTheme, Theme } from './types/index';\nimport { getSemanticColors } from './utilities/makeSemanticColors';\n\n/**\n * Merge a partial/full theme into a full theme and returns a merged full theme.\n */\nexport function mergeThemes(theme: Theme, partialTheme: PartialTheme = {}): Theme {\n const mergedTheme = merge<Theme | PartialTheme>({}, theme, partialTheme, {\n semanticColors: getSemanticColors(\n partialTheme.palette,\n partialTheme.effects,\n partialTheme.semanticColors,\n partialTheme.isInverted === undefined ? theme.isInverted : partialTheme.isInverted,\n ),\n }) as Theme;\n\n if (partialTheme.palette?.themePrimary && !partialTheme.palette?.accent) {\n mergedTheme.palette.accent = partialTheme.palette.themePrimary;\n }\n\n if (partialTheme.defaultFontStyle) {\n for (const fontStyle of Object.keys(mergedTheme.fonts) as (keyof IFontStyles)[]) {\n mergedTheme.fonts[fontStyle] = merge(\n mergedTheme.fonts[fontStyle],\n partialTheme.defaultFontStyle,\n partialTheme?.fonts?.[fontStyle],\n );\n }\n }\n\n if (partialTheme.stylesheets) {\n mergedTheme.stylesheets = (theme.stylesheets || []).concat(partialTheme.stylesheets);\n }\n\n return mergedTheme;\n}\n","import { Customizations, getWindow } from '@uifabric/utilities';\nimport { ITheme, IPartialTheme, IFontStyles } from '../interfaces/index';\nimport { loadTheme as legacyLoadTheme } from '@microsoft/load-themed-styles';\nimport { IRawStyle } from '@uifabric/merge-styles';\nimport { createTheme } from '@fluentui/theme/lib/createTheme';\n\nexport { createTheme } from '@fluentui/theme/lib/createTheme';\n\nlet _theme: ITheme = createTheme({});\nlet _onThemeChangeCallbacks: Array<(theme: ITheme) => void> = [];\n\nexport const ThemeSettingName = 'theme';\n\nexport function initializeThemeInCustomizations(): void {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const win: any = getWindow();\n\n if (win?.FabricConfig?.legacyTheme) {\n // does everything the `else` clause does and more, such as invoke legacy theming\n loadTheme(win.FabricConfig.legacyTheme);\n } else if (!Customizations.getSettings([ThemeSettingName]).theme) {\n if (win?.FabricConfig?.theme) {\n _theme = createTheme(win.FabricConfig.theme);\n }\n\n // Set the default theme.\n Customizations.applySettings({ [ThemeSettingName]: _theme });\n }\n}\n\n// Ensure theme is initialized when this package is referenced.\ninitializeThemeInCustomizations();\n\n/**\n * Gets the theme object\n * @param depComments - Whether to include deprecated tags as comments for deprecated slots.\n */\nexport function getTheme(depComments: boolean = false): ITheme {\n if (depComments === true) {\n _theme = createTheme({}, depComments);\n }\n return _theme;\n}\n\n/**\n * Registers a callback that gets called whenever the theme changes.\n * This should only be used when the component cannot automatically get theme changes through its state.\n * This will not register duplicate callbacks.\n */\nexport function registerOnThemeChangeCallback(callback: (theme: ITheme) => void): void {\n if (_onThemeChangeCallbacks.indexOf(callback) === -1) {\n _onThemeChangeCallbacks.push(callback);\n }\n}\n\n/**\n * See registerOnThemeChangeCallback().\n * Removes previously registered callbacks.\n */\nexport function removeOnThemeChangeCallback(callback: (theme: ITheme) => void): void {\n const i = _onThemeChangeCallbacks.indexOf(callback);\n if (i === -1) {\n return;\n }\n\n _onThemeChangeCallbacks.splice(i, 1);\n}\n\n/**\n * Applies the theme, while filling in missing slots.\n * @param theme - Partial theme object.\n * @param depComments - Whether to include deprecated tags as comments for deprecated slots.\n */\nexport function loadTheme(theme: IPartialTheme, depComments: boolean = false): ITheme {\n _theme = createTheme(theme, depComments);\n\n // Invoke the legacy method of theming the page as well.\n legacyLoadTheme({ ..._theme.palette, ..._theme.semanticColors, ..._theme.effects, ..._loadFonts(_theme) });\n\n Customizations.applySettings({ [ThemeSettingName]: _theme });\n\n _onThemeChangeCallbacks.forEach((callback: (theme: ITheme) => void) => {\n try {\n callback(_theme);\n } catch (e) {\n // don't let a bad callback break everything else\n }\n });\n\n return _theme;\n}\n\n/**\n * Loads font variables into a JSON object.\n * @param theme - The theme object\n */\nfunction _loadFonts(theme: ITheme): { [name: string]: string } {\n const lines: { [key: string]: string } = {};\n\n for (const fontName of Object.keys(theme.fonts)) {\n const font: IRawStyle = theme.fonts[fontName as keyof IFontStyles];\n\n for (const propName of Object.keys(font)) {\n const name: string = fontName + propName.charAt(0).toUpperCase() + propName.slice(1);\n let value = font[propName as keyof IRawStyle] as string;\n\n if (propName === 'fontSize' && typeof value === 'number') {\n // if it's a number, convert it to px by default like our theming system does\n value = value + 'px';\n }\n lines[name] = value;\n }\n }\n return lines;\n}\n","// This file mimics styles and mixins from _General.Mixins.scss\n\nimport { IRawStyle } from '@uifabric/merge-styles';\n\nexport const normalize: IRawStyle = {\n boxShadow: 'none',\n margin: 0,\n padding: 0,\n boxSizing: 'border-box',\n};\n\nexport const noWrap: IRawStyle = {\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n};\n","import { IStyle } from '@uifabric/merge-styles';\n\n/**\n * Generates placeholder style for each of the browsers supported by office-ui-fabric-react.\n * @param styles - The style to use.\n * @returns The placeholder style object for each browser depending on the placeholder directive it uses.\n */\nexport function getPlaceholderStyles(styles: IStyle): IStyle {\n return {\n selectors: {\n '::placeholder': styles, // Chrome, Safari, Opera, Firefox\n ':-ms-input-placeholder': styles, // IE 10+\n '::-ms-input-placeholder': styles, // Edge\n },\n };\n}\n","import { GlobalSettings, warn } from '@uifabric/utilities';\nimport { IRawStyle, IFontFace, fontFace, mergeStyles, Stylesheet } from '@uifabric/merge-styles';\n\nexport interface IIconSubset {\n fontFace?: IFontFace;\n icons: {\n [key: string]: string | JSX.Element;\n };\n\n style?: IRawStyle;\n /**\n * Indicates to the icon renderer that it is safe to merge any props on the original `Icon` element\n * onto the child content element registered for the icon which are valid for HTML images.\n */\n mergeImageProps?: boolean;\n}\n\nexport interface IIconSubsetRecord extends IIconSubset {\n isRegistered?: boolean;\n className?: string;\n}\n\nexport interface IIconRecord {\n code: string | undefined;\n subset: IIconSubsetRecord;\n}\n\nexport interface IIconOptions {\n /**\n * By default, registering the same set of icons will generate a console warning per duplicate icon\n * registered, because this scenario can create unexpected consequences.\n *\n * Some scenarios include:\n *\n * Icon set was previously registered using a different base url.\n * Icon set was previously registered but a different version was provided.\n * Icons in a previous registered set overlap with a new set.\n *\n * To simply ignore previously registered icons, you can specify to disable warnings. This means\n * that if an icon which was previous registered is registered again, it will be silently ignored.\n * However, consider whether the problems listed above will cause issues.\n **/\n disableWarnings: boolean;\n\n /**\n * @deprecated\n * Use 'disableWarnings' instead.\n */\n warnOnMissingIcons?: boolean;\n}\n\nexport interface IIconRecords {\n __options: IIconOptions;\n __remapped: { [key: string]: string };\n [key: string]: IIconRecord | {};\n}\n\nconst ICON_SETTING_NAME = 'icons';\n\nconst _iconSettings = GlobalSettings.getValue<IIconRecords>(ICON_SETTING_NAME, {\n __options: {\n disableWarnings: false,\n warnOnMissingIcons: true,\n },\n __remapped: {},\n});\n\n// Reset icon registration on stylesheet resets.\nconst stylesheet = Stylesheet.getInstance();\n\nif (stylesheet && stylesheet.onReset) {\n stylesheet.onReset(() => {\n for (const name in _iconSettings) {\n if (_iconSettings.hasOwnProperty(name) && !!(_iconSettings[name] as IIconRecord).subset) {\n (_iconSettings[name] as IIconRecord).subset.className = undefined;\n }\n }\n });\n}\n\n/**\n * Normalizes an icon name for consistent mapping.\n * Current implementation is to convert the icon name to lower case.\n *\n * @param name - Icon name to normalize.\n * @returns {string} Normalized icon name to use for indexing and mapping.\n */\nconst normalizeIconName = (name: string): string => name.toLowerCase();\n\n/**\n * Registers a given subset of icons.\n *\n * @param iconSubset - the icon subset definition.\n */\nexport function registerIcons(iconSubset: IIconSubset, options?: Partial<IIconOptions>): void {\n let subset = {\n ...iconSubset,\n isRegistered: false,\n className: undefined,\n };\n let { icons } = iconSubset;\n\n // Grab options, optionally mix user provided ones on top.\n options = options ? { ..._iconSettings.__options, ...options } : _iconSettings.__options;\n\n for (const iconName in icons) {\n if (icons.hasOwnProperty(iconName)) {\n const code = icons[iconName];\n const normalizedIconName = normalizeIconName(iconName);\n\n if (_iconSettings[normalizedIconName]) {\n _warnDuplicateIcon(iconName);\n } else {\n _iconSettings[normalizedIconName] = {\n code,\n subset,\n } as IIconRecord;\n }\n }\n }\n}\n\n/**\n * Unregisters icons by name.\n *\n * @param iconNames - List of icons to unregister.\n */\nexport function unregisterIcons(iconNames: string[]): void {\n const options = _iconSettings.__options;\n\n for (const iconName of iconNames) {\n const normalizedIconName = normalizeIconName(iconName);\n if (_iconSettings[normalizedIconName]) {\n delete _iconSettings[normalizedIconName];\n } else {\n // Warn that we are trying to delete an icon that doesn't exist\n if (!options.disableWarnings) {\n warn(`The icon \"${iconName}\" tried to unregister but was not registered.`);\n }\n }\n\n // Delete any aliases for this iconName\n if (_iconSettings.__remapped[normalizedIconName]) {\n delete _iconSettings.__remapped[normalizedIconName];\n }\n\n // Delete any items that were an alias for this iconName\n Object.keys(_iconSettings.__remapped).forEach((key: string) => {\n if (_iconSettings.__remapped[key] === normalizedIconName) {\n delete _iconSettings.__remapped[key];\n }\n });\n }\n}\n\n/**\n * Remaps one icon name to another.\n */\nexport function registerIconAlias(iconName: string, mappedToName: string): void {\n _iconSettings.__remapped[normalizeIconName(iconName)] = normalizeIconName(mappedToName);\n}\n\n/**\n * Gets an icon definition. If an icon is requested but the subset has yet to be registered,\n * it will get registered immediately.\n *\n * @public\n * @param name - Name of icon.\n */\nexport function getIcon(name?: string): IIconRecord | undefined {\n let icon: IIconRecord | undefined = undefined;\n const options = _iconSettings.__options;\n\n name = name ? normalizeIconName(name) : '';\n name = _iconSettings.__remapped[name] || name;\n\n if (name) {\n icon = _iconSettings[name!] as IIconRecord;\n\n if (icon) {\n let { subset } = icon;\n if (subset && subset.fontFace) {\n if (!subset.isRegistered) {\n fontFace(subset.fontFace);\n subset.isRegistered = true;\n }\n\n if (!subset.className) {\n subset.className = mergeStyles(subset.style, {\n fontFamily: subset.fontFace.fontFamily,\n fontWeight: subset.fontFace.fontWeight || 'normal',\n fontStyle: subset.fontFace.fontStyle || 'normal',\n });\n }\n }\n } else {\n // eslint-disable-next-line deprecation/deprecation\n if (!options.disableWarnings && options.warnOnMissingIcons) {\n warn(\n `The icon \"${name}\" was used but not registered. See https://github.com/microsoft/fluentui/wiki/Using-icons for more information.`,\n );\n }\n }\n }\n\n return icon;\n}\n\n/**\n * Sets the icon options.\n *\n * @public\n */\nexport function setIconOptions(options: Partial<IIconOptions>): void {\n _iconSettings.__options = {\n ..._iconSettings.__options,\n ...options,\n };\n}\n\nlet _missingIcons: string[] = [];\nlet _missingIconsTimer: number | undefined = undefined;\n\nfunction _warnDuplicateIcon(iconName: string): void {\n const options = _iconSettings.__options;\n const warningDelay = 2000;\n const maxIconsInMessage = 10;\n\n if (!options.disableWarnings) {\n _missingIcons.push(iconName);\n if (_missingIconsTimer === undefined) {\n _missingIconsTimer = setTimeout(() => {\n warn(\n `Some icons were re-registered. Applications should only call registerIcons for any given ` +\n `icon once. Redefining what an icon is may have unintended consequences. Duplicates ` +\n `include: \\n` +\n _missingIcons.slice(0, maxIconsInMessage).join(', ') +\n (_missingIcons.length > maxIconsInMessage ? ` (+ ${_missingIcons.length - maxIconsInMessage} more)` : ''),\n );\n _missingIconsTimer = undefined;\n _missingIcons = [];\n }, warningDelay);\n }\n }\n}\n","// Do not modify this file; it is generated as part of publish.\n// The checked in version is a placeholder only and will not be updated.\nimport { setVersion } from '@uifabric/set-version';\nsetVersion('@uifabric/icons', '7.9.4');","import { initializeIcons as i } from './fabric-icons';\nimport { initializeIcons as i0 } from './fabric-icons-0';\nimport { initializeIcons as i1 } from './fabric-icons-1';\nimport { initializeIcons as i2 } from './fabric-icons-2';\nimport { initializeIcons as i3 } from './fabric-icons-3';\nimport { initializeIcons as i4 } from './fabric-icons-4';\nimport { initializeIcons as i5 } from './fabric-icons-5';\nimport { initializeIcons as i6 } from './fabric-icons-6';\nimport { initializeIcons as i7 } from './fabric-icons-7';\nimport { initializeIcons as i8 } from './fabric-icons-8';\nimport { initializeIcons as i9 } from './fabric-icons-9';\nimport { initializeIcons as i10 } from './fabric-icons-10';\nimport { initializeIcons as i11 } from './fabric-icons-11';\nimport { initializeIcons as i12 } from './fabric-icons-12';\nimport { initializeIcons as i13 } from './fabric-icons-13';\nimport { initializeIcons as i14 } from './fabric-icons-14';\nimport { initializeIcons as i15 } from './fabric-icons-15';\nimport { initializeIcons as i16 } from './fabric-icons-16';\nimport { initializeIcons as i17 } from './fabric-icons-17';\n\nimport { IIconOptions } from '@uifabric/styling';\nimport { registerIconAliases } from './iconAliases';\nimport { getWindow } from '@uifabric/utilities';\nconst DEFAULT_BASE_URL = 'https://spoppe-b.azureedge.net/files/fabric-cdn-prod_20210407.001/assets/icons/';\n\n/*\n * The Window variable has the iconBaseUrl prop in order to allow for users to redirect icon font downloads to a new\n * URL. The config can be burned on the page to ensure there are no race conditions which might load resources on\n * script load.\n */\ndeclare global {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n interface Window {\n /**\n * The FabricConfig options can be burned on the page prior to script load to provide\n * alternative defaults at script load time. This helps avoid race conditions by calling\n * `initializeIcons` too late, or in cases where you can't control the `initializeIcons` call,\n * such as using the pre-created Fluent bundle.\n */\n FabricConfig?: {\n /**\n * Controls the base url of the font files. This is useful for scenarios where the fonts\n * are stored on a private CDN other than the default SharePoint CDN.\n */\n fontBaseUrl?: string;\n /**\n * Controls the base url of the icon font files. This is useful for scenarios where the icons\n * are stored on a private CDN other than the default SharePoint CDN. Note that in prior\n * iterations, `fontBaseUrl` was used to control both font and icon base urls. While you can\n * still use `fontBaseUrl` to provide a single base url for both, the `iconBaseUrl` will be\n * used first if available.\n */\n iconBaseUrl?: string;\n };\n }\n}\n\nconst win = getWindow();\nexport function initializeIcons(\n baseUrl: string = win?.FabricConfig?.iconBaseUrl || win?.FabricConfig?.fontBaseUrl || DEFAULT_BASE_URL,\n options?: IIconOptions,\n): void {\n [\n i,\n i0,\n i1,\n i2,\n i3,\n i4,\n i5,\n i6,\n i7,\n i8,\n i9,\n i10,\n i11,\n i12,\n i13,\n i14,\n i15,\n i16,\n i17,\n ].forEach((initialize: (url: string, options?: IIconOptions) => void) => initialize(baseUrl, options));\n\n registerIconAliases();\n}\n\n// eslint-disable-next-line deprecation/deprecation\nexport { IconNames, IconNamesInput } from './IconNames';\n\nimport './version';\n","import { TASK_CANCEL, TERMINATE, SAGA_LOCATION, SAGA_ACTION, IO, SELF_CANCELLATION } from '@redux-saga/symbols';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport { array, notUndef, pattern, multicast, channel, undef, effect, task, func, buffer, string, object } from '@redux-saga/is';\nimport delayP from '@redux-saga/delay-p';\n\nvar konst = function konst(v) {\n return function () {\n return v;\n };\n};\nvar kTrue =\n/*#__PURE__*/\nkonst(true);\n\nvar noop = function noop() {};\n\nif (process.env.NODE_ENV !== 'production' && typeof Proxy !== 'undefined') {\n noop =\n /*#__PURE__*/\n new Proxy(noop, {\n set: function set() {\n throw internalErr('There was an attempt to assign a property to internal `noop` function.');\n }\n });\n}\nvar identity = function identity(v) {\n return v;\n};\nvar hasSymbol = typeof Symbol === 'function';\nvar asyncIteratorSymbol = hasSymbol && Symbol.asyncIterator ? Symbol.asyncIterator : '@@asyncIterator';\nfunction check(value, predicate, error) {\n if (!predicate(value)) {\n throw new Error(error);\n }\n}\nvar assignWithSymbols = function assignWithSymbols(target, source) {\n _extends(target, source);\n\n if (Object.getOwnPropertySymbols) {\n Object.getOwnPropertySymbols(source).forEach(function (s) {\n target[s] = source[s];\n });\n }\n};\nvar flatMap = function flatMap(mapper, arr) {\n var _ref;\n\n return (_ref = []).concat.apply(_ref, arr.map(mapper));\n};\nfunction remove(array, item) {\n var index = array.indexOf(item);\n\n if (index >= 0) {\n array.splice(index, 1);\n }\n}\nfunction once(fn) {\n var called = false;\n return function () {\n if (called) {\n return;\n }\n\n called = true;\n fn();\n };\n}\n\nvar kThrow = function kThrow(err) {\n throw err;\n};\n\nvar kReturn = function kReturn(value) {\n return {\n value: value,\n done: true\n };\n};\n\nfunction makeIterator(next, thro, name) {\n if (thro === void 0) {\n thro = kThrow;\n }\n\n if (name === void 0) {\n name = 'iterator';\n }\n\n var iterator = {\n meta: {\n name: name\n },\n next: next,\n throw: thro,\n return: kReturn,\n isSagaIterator: true\n };\n\n if (typeof Symbol !== 'undefined') {\n iterator[Symbol.iterator] = function () {\n return iterator;\n };\n }\n\n return iterator;\n}\nfunction logError(error, _ref2) {\n var sagaStack = _ref2.sagaStack;\n\n /*eslint-disable no-console*/\n console.error(error);\n console.error(sagaStack);\n}\nvar internalErr = function internalErr(err) {\n return new Error(\"\\n redux-saga: Error checking hooks detected an inconsistent state. This is likely a bug\\n in redux-saga code and not yours. Thanks for reporting this in the project's github repo.\\n Error: \" + err + \"\\n\");\n};\nvar createSetContextWarning = function createSetContextWarning(ctx, props) {\n return (ctx ? ctx + '.' : '') + \"setContext(props): argument \" + props + \" is not a plain object\";\n};\nvar FROZEN_ACTION_ERROR = \"You can't put (a.k.a. dispatch from saga) frozen actions.\\nWe have to define a special non-enumerable property on those actions for scheduling purposes.\\nOtherwise you wouldn't be able to communicate properly between sagas & other subscribers (action ordering would become far less predictable).\\nIf you are using redux and you care about this behaviour (frozen actions),\\nthen you might want to switch to freezing actions in a middleware rather than in action creator.\\nExample implementation:\\n\\nconst freezeActions = store => next => action => next(Object.freeze(action))\\n\"; // creates empty, but not-holey array\n\nvar createEmptyArray = function createEmptyArray(n) {\n return Array.apply(null, new Array(n));\n};\nvar wrapSagaDispatch = function wrapSagaDispatch(dispatch) {\n return function (action) {\n if (process.env.NODE_ENV !== 'production') {\n check(action, function (ac) {\n return !Object.isFrozen(ac);\n }, FROZEN_ACTION_ERROR);\n }\n\n return dispatch(Object.defineProperty(action, SAGA_ACTION, {\n value: true\n }));\n };\n};\nvar shouldTerminate = function shouldTerminate(res) {\n return res === TERMINATE;\n};\nvar shouldCancel = function shouldCancel(res) {\n return res === TASK_CANCEL;\n};\nvar shouldComplete = function shouldComplete(res) {\n return shouldTerminate(res) || shouldCancel(res);\n};\nfunction createAllStyleChildCallbacks(shape, parentCallback) {\n var keys = Object.keys(shape);\n var totalCount = keys.length;\n\n if (process.env.NODE_ENV !== 'production') {\n check(totalCount, function (c) {\n return c > 0;\n }, 'createAllStyleChildCallbacks: get an empty array or object');\n }\n\n var completedCount = 0;\n var completed;\n var results = array(shape) ? createEmptyArray(totalCount) : {};\n var childCallbacks = {};\n\n function checkEnd() {\n if (completedCount === totalCount) {\n completed = true;\n parentCallback(results);\n }\n }\n\n keys.forEach(function (key) {\n var chCbAtKey = function chCbAtKey(res, isErr) {\n if (completed) {\n return;\n }\n\n if (isErr || shouldComplete(res)) {\n parentCallback.cancel();\n parentCallback(res, isErr);\n } else {\n results[key] = res;\n completedCount++;\n checkEnd();\n }\n };\n\n chCbAtKey.cancel = noop;\n childCallbacks[key] = chCbAtKey;\n });\n\n parentCallback.cancel = function () {\n if (!completed) {\n completed = true;\n keys.forEach(function (key) {\n return childCallbacks[key].cancel();\n });\n }\n };\n\n return childCallbacks;\n}\nfunction getMetaInfo(fn) {\n return {\n name: fn.name || 'anonymous',\n location: getLocation(fn)\n };\n}\nfunction getLocation(instrumented) {\n return instrumented[SAGA_LOCATION];\n}\nfunction compose() {\n for (var _len = arguments.length, funcs = new 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(void 0, arguments));\n };\n });\n}\n\nvar BUFFER_OVERFLOW = \"Channel's Buffer overflow!\";\nvar ON_OVERFLOW_THROW = 1;\nvar ON_OVERFLOW_DROP = 2;\nvar ON_OVERFLOW_SLIDE = 3;\nvar ON_OVERFLOW_EXPAND = 4;\nvar zeroBuffer = {\n isEmpty: kTrue,\n put: noop,\n take: noop\n};\n\nfunction ringBuffer(limit, overflowAction) {\n if (limit === void 0) {\n limit = 10;\n }\n\n var arr = new Array(limit);\n var length = 0;\n var pushIndex = 0;\n var popIndex = 0;\n\n var push = function push(it) {\n arr[pushIndex] = it;\n pushIndex = (pushIndex + 1) % limit;\n length++;\n };\n\n var take = function take() {\n if (length != 0) {\n var it = arr[popIndex];\n arr[popIndex] = null;\n length--;\n popIndex = (popIndex + 1) % limit;\n return it;\n }\n };\n\n var flush = function flush() {\n var items = [];\n\n while (length) {\n items.push(take());\n }\n\n return items;\n };\n\n return {\n isEmpty: function isEmpty() {\n return length == 0;\n },\n put: function put(it) {\n if (length < limit) {\n push(it);\n } else {\n var doubledLimit;\n\n switch (overflowAction) {\n case ON_OVERFLOW_THROW:\n throw new Error(BUFFER_OVERFLOW);\n\n case ON_OVERFLOW_SLIDE:\n arr[pushIndex] = it;\n pushIndex = (pushIndex + 1) % limit;\n popIndex = pushIndex;\n break;\n\n case ON_OVERFLOW_EXPAND:\n doubledLimit = 2 * limit;\n arr = flush();\n length = arr.length;\n pushIndex = arr.length;\n popIndex = 0;\n arr.length = doubledLimit;\n limit = doubledLimit;\n push(it);\n break;\n\n default: // DROP\n\n }\n }\n },\n take: take,\n flush: flush\n };\n}\n\nvar none = function none() {\n return zeroBuffer;\n};\nvar fixed = function fixed(limit) {\n return ringBuffer(limit, ON_OVERFLOW_THROW);\n};\nvar dropping = function dropping(limit) {\n return ringBuffer(limit, ON_OVERFLOW_DROP);\n};\nvar sliding = function sliding(limit) {\n return ringBuffer(limit, ON_OVERFLOW_SLIDE);\n};\nvar expanding = function expanding(initialSize) {\n return ringBuffer(initialSize, ON_OVERFLOW_EXPAND);\n};\n\nvar buffers = /*#__PURE__*/Object.freeze({\n __proto__: null,\n none: none,\n fixed: fixed,\n dropping: dropping,\n sliding: sliding,\n expanding: expanding\n});\n\nvar TAKE = 'TAKE';\nvar PUT = 'PUT';\nvar ALL = 'ALL';\nvar RACE = 'RACE';\nvar CALL = 'CALL';\nvar CPS = 'CPS';\nvar FORK = 'FORK';\nvar JOIN = 'JOIN';\nvar CANCEL = 'CANCEL';\nvar SELECT = 'SELECT';\nvar ACTION_CHANNEL = 'ACTION_CHANNEL';\nvar CANCELLED = 'CANCELLED';\nvar FLUSH = 'FLUSH';\nvar GET_CONTEXT = 'GET_CONTEXT';\nvar SET_CONTEXT = 'SET_CONTEXT';\n\nvar effectTypes = /*#__PURE__*/Object.freeze({\n __proto__: null,\n TAKE: TAKE,\n PUT: PUT,\n ALL: ALL,\n RACE: RACE,\n CALL: CALL,\n CPS: CPS,\n FORK: FORK,\n JOIN: JOIN,\n CANCEL: CANCEL,\n SELECT: SELECT,\n ACTION_CHANNEL: ACTION_CHANNEL,\n CANCELLED: CANCELLED,\n FLUSH: FLUSH,\n GET_CONTEXT: GET_CONTEXT,\n SET_CONTEXT: SET_CONTEXT\n});\n\nvar TEST_HINT = '\\n(HINT: if you are getting these errors in tests, consider using createMockTask from @redux-saga/testing-utils)';\n\nvar makeEffect = function makeEffect(type, payload) {\n var _ref;\n\n return _ref = {}, _ref[IO] = true, _ref.combinator = false, _ref.type = type, _ref.payload = payload, _ref;\n};\n\nvar isForkEffect = function isForkEffect(eff) {\n return effect(eff) && eff.type === FORK;\n};\n\nvar detach = function detach(eff) {\n if (process.env.NODE_ENV !== 'production') {\n check(eff, isForkEffect, 'detach(eff): argument must be a fork effect');\n }\n\n return makeEffect(FORK, _extends({}, eff.payload, {\n detached: true\n }));\n};\nfunction take(patternOrChannel, multicastPattern) {\n if (patternOrChannel === void 0) {\n patternOrChannel = '*';\n }\n\n if (process.env.NODE_ENV !== 'production' && arguments.length) {\n check(arguments[0], notUndef, 'take(patternOrChannel): patternOrChannel is undefined');\n }\n\n if (pattern(patternOrChannel)) {\n if (notUndef(multicastPattern)) {\n /* eslint-disable no-console */\n console.warn(\"take(pattern) takes one argument but two were provided. Consider passing an array for listening to several action types\");\n }\n\n return makeEffect(TAKE, {\n pattern: patternOrChannel\n });\n }\n\n if (multicast(patternOrChannel) && notUndef(multicastPattern) && pattern(multicastPattern)) {\n return makeEffect(TAKE, {\n channel: patternOrChannel,\n pattern: multicastPattern\n });\n }\n\n if (channel(patternOrChannel)) {\n if (notUndef(multicastPattern)) {\n /* eslint-disable no-console */\n console.warn(\"take(channel) takes one argument but two were provided. Second argument is ignored.\");\n }\n\n return makeEffect(TAKE, {\n channel: patternOrChannel\n });\n }\n\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(\"take(patternOrChannel): argument \" + patternOrChannel + \" is not valid channel or a valid pattern\");\n }\n}\nvar takeMaybe = function takeMaybe() {\n var eff = take.apply(void 0, arguments);\n eff.payload.maybe = true;\n return eff;\n};\nfunction put(channel$1, action) {\n if (process.env.NODE_ENV !== 'production') {\n if (arguments.length > 1) {\n check(channel$1, notUndef, 'put(channel, action): argument channel is undefined');\n check(channel$1, channel, \"put(channel, action): argument \" + channel$1 + \" is not a valid channel\");\n check(action, notUndef, 'put(channel, action): argument action is undefined');\n } else {\n check(channel$1, notUndef, 'put(action): argument action is undefined');\n }\n }\n\n if (undef(action)) {\n action = channel$1; // `undefined` instead of `null` to make default parameter work\n\n channel$1 = undefined;\n }\n\n return makeEffect(PUT, {\n channel: channel$1,\n action: action\n });\n}\nvar putResolve = function putResolve() {\n var eff = put.apply(void 0, arguments);\n eff.payload.resolve = true;\n return eff;\n};\nfunction all(effects) {\n var eff = makeEffect(ALL, effects);\n eff.combinator = true;\n return eff;\n}\nfunction race(effects) {\n var eff = makeEffect(RACE, effects);\n eff.combinator = true;\n return eff;\n} // this match getFnCallDescriptor logic\n\nvar validateFnDescriptor = function validateFnDescriptor(effectName, fnDescriptor) {\n check(fnDescriptor, notUndef, effectName + \": argument fn is undefined or null\");\n\n if (func(fnDescriptor)) {\n return;\n }\n\n var context = null;\n var fn;\n\n if (array(fnDescriptor)) {\n context = fnDescriptor[0];\n fn = fnDescriptor[1];\n check(fn, notUndef, effectName + \": argument of type [context, fn] has undefined or null `fn`\");\n } else if (object(fnDescriptor)) {\n context = fnDescriptor.context;\n fn = fnDescriptor.fn;\n check(fn, notUndef, effectName + \": argument of type {context, fn} has undefined or null `fn`\");\n } else {\n check(fnDescriptor, func, effectName + \": argument fn is not function\");\n return;\n }\n\n if (context && string(fn)) {\n check(context[fn], func, effectName + \": context arguments has no such method - \\\"\" + fn + \"\\\"\");\n return;\n }\n\n check(fn, func, effectName + \": unpacked fn argument (from [context, fn] or {context, fn}) is not a function\");\n};\n\nfunction getFnCallDescriptor(fnDescriptor, args) {\n var context = null;\n var fn;\n\n if (func(fnDescriptor)) {\n fn = fnDescriptor;\n } else {\n if (array(fnDescriptor)) {\n context = fnDescriptor[0];\n fn = fnDescriptor[1];\n } else {\n context = fnDescriptor.context;\n fn = fnDescriptor.fn;\n }\n\n if (context && string(fn) && func(context[fn])) {\n fn = context[fn];\n }\n }\n\n return {\n context: context,\n fn: fn,\n args: args\n };\n}\n\nvar isNotDelayEffect = function isNotDelayEffect(fn) {\n return fn !== delay;\n};\n\nfunction call(fnDescriptor) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n if (process.env.NODE_ENV !== 'production') {\n var arg0 = typeof args[0] === 'number' ? args[0] : 'ms';\n check(fnDescriptor, isNotDelayEffect, \"instead of writing `yield call(delay, \" + arg0 + \")` where delay is an effect from `redux-saga/effects` you should write `yield delay(\" + arg0 + \")`\");\n validateFnDescriptor('call', fnDescriptor);\n }\n\n return makeEffect(CALL, getFnCallDescriptor(fnDescriptor, args));\n}\nfunction apply(context, fn, args) {\n if (args === void 0) {\n args = [];\n }\n\n var fnDescriptor = [context, fn];\n\n if (process.env.NODE_ENV !== 'production') {\n validateFnDescriptor('apply', fnDescriptor);\n }\n\n return makeEffect(CALL, getFnCallDescriptor([context, fn], args));\n}\nfunction cps(fnDescriptor) {\n if (process.env.NODE_ENV !== 'production') {\n validateFnDescriptor('cps', fnDescriptor);\n }\n\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n return makeEffect(CPS, getFnCallDescriptor(fnDescriptor, args));\n}\nfunction fork(fnDescriptor) {\n if (process.env.NODE_ENV !== 'production') {\n validateFnDescriptor('fork', fnDescriptor);\n check(fnDescriptor, function (arg) {\n return !effect(arg);\n }, 'fork: argument must not be an effect');\n }\n\n for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n args[_key3 - 1] = arguments[_key3];\n }\n\n return makeEffect(FORK, getFnCallDescriptor(fnDescriptor, args));\n}\nfunction spawn(fnDescriptor) {\n if (process.env.NODE_ENV !== 'production') {\n validateFnDescriptor('spawn', fnDescriptor);\n }\n\n for (var _len4 = arguments.length, args = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n args[_key4 - 1] = arguments[_key4];\n }\n\n return detach(fork.apply(void 0, [fnDescriptor].concat(args)));\n}\nfunction join(taskOrTasks) {\n if (process.env.NODE_ENV !== 'production') {\n if (arguments.length > 1) {\n throw new Error('join(...tasks) is not supported any more. Please use join([...tasks]) to join multiple tasks.');\n }\n\n if (array(taskOrTasks)) {\n taskOrTasks.forEach(function (t) {\n check(t, task, \"join([...tasks]): argument \" + t + \" is not a valid Task object \" + TEST_HINT);\n });\n } else {\n check(taskOrTasks, task, \"join(task): argument \" + taskOrTasks + \" is not a valid Task object \" + TEST_HINT);\n }\n }\n\n return makeEffect(JOIN, taskOrTasks);\n}\nfunction cancel(taskOrTasks) {\n if (taskOrTasks === void 0) {\n taskOrTasks = SELF_CANCELLATION;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (arguments.length > 1) {\n throw new Error('cancel(...tasks) is not supported any more. Please use cancel([...tasks]) to cancel multiple tasks.');\n }\n\n if (array(taskOrTasks)) {\n taskOrTasks.forEach(function (t) {\n check(t, task, \"cancel([...tasks]): argument \" + t + \" is not a valid Task object \" + TEST_HINT);\n });\n } else if (taskOrTasks !== SELF_CANCELLATION && notUndef(taskOrTasks)) {\n check(taskOrTasks, task, \"cancel(task): argument \" + taskOrTasks + \" is not a valid Task object \" + TEST_HINT);\n }\n }\n\n return makeEffect(CANCEL, taskOrTasks);\n}\nfunction select(selector) {\n if (selector === void 0) {\n selector = identity;\n }\n\n for (var _len5 = arguments.length, args = new Array(_len5 > 1 ? _len5 - 1 : 0), _key5 = 1; _key5 < _len5; _key5++) {\n args[_key5 - 1] = arguments[_key5];\n }\n\n if (process.env.NODE_ENV !== 'production' && arguments.length) {\n check(arguments[0], notUndef, 'select(selector, [...]): argument selector is undefined');\n check(selector, func, \"select(selector, [...]): argument \" + selector + \" is not a function\");\n }\n\n return makeEffect(SELECT, {\n selector: selector,\n args: args\n });\n}\n/**\n channel(pattern, [buffer]) => creates a proxy channel for store actions\n**/\n\nfunction actionChannel(pattern$1, buffer$1) {\n if (process.env.NODE_ENV !== 'production') {\n check(pattern$1, pattern, 'actionChannel(pattern,...): argument pattern is not valid');\n\n if (arguments.length > 1) {\n check(buffer$1, notUndef, 'actionChannel(pattern, buffer): argument buffer is undefined');\n check(buffer$1, buffer, \"actionChannel(pattern, buffer): argument \" + buffer$1 + \" is not a valid buffer\");\n }\n }\n\n return makeEffect(ACTION_CHANNEL, {\n pattern: pattern$1,\n buffer: buffer$1\n });\n}\nfunction cancelled() {\n return makeEffect(CANCELLED, {});\n}\nfunction flush(channel$1) {\n if (process.env.NODE_ENV !== 'production') {\n check(channel$1, channel, \"flush(channel): argument \" + channel$1 + \" is not valid channel\");\n }\n\n return makeEffect(FLUSH, channel$1);\n}\nfunction getContext(prop) {\n if (process.env.NODE_ENV !== 'production') {\n check(prop, string, \"getContext(prop): argument \" + prop + \" is not a string\");\n }\n\n return makeEffect(GET_CONTEXT, prop);\n}\nfunction setContext(props) {\n if (process.env.NODE_ENV !== 'production') {\n check(props, object, createSetContextWarning(null, props));\n }\n\n return makeEffect(SET_CONTEXT, props);\n}\nvar delay =\n/*#__PURE__*/\ncall.bind(null, delayP);\n\nexport { all as $, ALL as A, compose as B, CALL as C, logError as D, wrapSagaDispatch as E, FORK as F, GET_CONTEXT as G, identity as H, buffers as I, JOIN as J, detach as K, take as L, fork as M, cancel as N, call as O, PUT as P, delay as Q, RACE as R, SELECT as S, TAKE as T, actionChannel as U, sliding as V, race as W, effectTypes as X, takeMaybe as Y, put as Z, putResolve as _, CPS as a, apply as a0, cps as a1, spawn as a2, join as a3, select as a4, cancelled as a5, flush as a6, getContext as a7, setContext as a8, CANCEL as b, check as c, ACTION_CHANNEL as d, expanding as e, CANCELLED as f, FLUSH as g, SET_CONTEXT as h, internalErr as i, getMetaInfo as j, kTrue as k, createAllStyleChildCallbacks as l, createEmptyArray as m, none as n, once as o, assignWithSymbols as p, makeIterator as q, remove as r, shouldComplete as s, noop as t, flatMap as u, getLocation as v, createSetContextWarning as w, asyncIteratorSymbol as x, shouldCancel as y, shouldTerminate as z };\n","var _excluded = [\"children\"],\n _excluded2 = [\"children\"];\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nimport get from 'lodash/get';\nimport isNil from 'lodash/isNil';\nimport isString from 'lodash/isString';\nimport isFunction from 'lodash/isFunction';\nimport isObject from 'lodash/isObject';\nimport { Children, isValidElement } from 'react';\nimport { isFragment } from 'react-is';\nimport { isNumber } from './DataUtils';\nimport { shallowEqual } from './ShallowEqual';\nimport { FilteredElementKeyMap, SVGElementPropKeys, EventKeys } from './types';\nvar REACT_BROWSER_EVENT_MAP = {\n click: 'onClick',\n mousedown: 'onMouseDown',\n mouseup: 'onMouseUp',\n mouseover: 'onMouseOver',\n mousemove: 'onMouseMove',\n mouseout: 'onMouseOut',\n mouseenter: 'onMouseEnter',\n mouseleave: 'onMouseLeave',\n touchcancel: 'onTouchCancel',\n touchend: 'onTouchEnd',\n touchmove: 'onTouchMove',\n touchstart: 'onTouchStart'\n};\nexport var SCALE_TYPES = ['auto', 'linear', 'pow', 'sqrt', 'log', 'identity', 'time', 'band', 'point', 'ordinal', 'quantile', 'quantize', 'utc', 'sequential', 'threshold'];\nexport var LEGEND_TYPES = ['plainline', 'line', 'square', 'rect', 'circle', 'cross', 'diamond', 'star', 'triangle', 'wye', 'none'];\nexport var TOOLTIP_TYPES = ['none'];\n\n/**\n * Get the display name of a component\n * @param {Object} Comp Specified Component\n * @return {String} Display name of Component\n */\nexport var getDisplayName = function getDisplayName(Comp) {\n if (typeof Comp === 'string') {\n return Comp;\n }\n if (!Comp) {\n return '';\n }\n return Comp.displayName || Comp.name || 'Component';\n};\n\n// `toArray` gets called multiple times during the render\n// so we can memoize last invocation (since reference to `children` is the same)\nvar lastChildren = null;\nvar lastResult = null;\nexport var toArray = function toArray(children) {\n if (children === lastChildren && Array.isArray(lastResult)) {\n return lastResult;\n }\n var result = [];\n Children.forEach(children, function (child) {\n if (isNil(child)) return;\n if (isFragment(child)) {\n result = result.concat(toArray(child.props.children));\n } else {\n result.push(child);\n }\n });\n lastResult = result;\n lastChildren = children;\n return result;\n};\n\n/*\n * Find and return all matched children by type.\n * `type` must be a React.ComponentType\n */\nexport function findAllByType(children, type) {\n var result = [];\n var types = [];\n if (Array.isArray(type)) {\n types = type.map(function (t) {\n return getDisplayName(t);\n });\n } else {\n types = [getDisplayName(type)];\n }\n toArray(children).forEach(function (child) {\n var childType = get(child, 'type.displayName') || get(child, 'type.name');\n if (types.indexOf(childType) !== -1) {\n result.push(child);\n }\n });\n return result;\n}\n\n/*\n * Return the first matched child by type, return null otherwise.\n * `type` must be a React.ComponentType\n */\nexport function findChildByType(children, type) {\n var result = findAllByType(children, type);\n return result && result[0];\n}\n\n/*\n * Create a new array of children excluding the ones matched the type\n */\nexport var withoutType = function withoutType(children, type) {\n var newChildren = [];\n var types;\n if (Array.isArray(type)) {\n types = type.map(function (t) {\n return getDisplayName(t);\n });\n } else {\n types = [getDisplayName(type)];\n }\n toArray(children).forEach(function (child) {\n var displayName = get(child, 'type.displayName');\n if (displayName && types.indexOf(displayName) !== -1) {\n return;\n }\n newChildren.push(child);\n });\n return newChildren;\n};\n\n/**\n * validate the width and height props of a chart element\n * @param {Object} el A chart element\n * @return {Boolean} true If the props width and height are number, and greater than 0\n */\nexport var validateWidthHeight = function validateWidthHeight(el) {\n if (!el || !el.props) {\n return false;\n }\n var _el$props = el.props,\n width = _el$props.width,\n height = _el$props.height;\n if (!isNumber(width) || width <= 0 || !isNumber(height) || height <= 0) {\n return false;\n }\n return true;\n};\nvar SVG_TAGS = ['a', 'altGlyph', 'altGlyphDef', 'altGlyphItem', 'animate', 'animateColor', 'animateMotion', 'animateTransform', 'circle', 'clipPath', 'color-profile', 'cursor', 'defs', 'desc', 'ellipse', 'feBlend', 'feColormatrix', 'feComponentTransfer', 'feComposite', 'feConvolveMatrix', 'feDiffuseLighting', 'feDisplacementMap', 'feDistantLight', 'feFlood', 'feFuncA', 'feFuncB', 'feFuncG', 'feFuncR', 'feGaussianBlur', 'feImage', 'feMerge', 'feMergeNode', 'feMorphology', 'feOffset', 'fePointLight', 'feSpecularLighting', 'feSpotLight', 'feTile', 'feTurbulence', 'filter', 'font', 'font-face', 'font-face-format', 'font-face-name', 'font-face-url', 'foreignObject', 'g', 'glyph', 'glyphRef', 'hkern', 'image', 'line', 'lineGradient', 'marker', 'mask', 'metadata', 'missing-glyph', 'mpath', 'path', 'pattern', 'polygon', 'polyline', 'radialGradient', 'rect', 'script', 'set', 'stop', 'style', 'svg', 'switch', 'symbol', 'text', 'textPath', 'title', 'tref', 'tspan', 'use', 'view', 'vkern'];\nvar isSvgElement = function isSvgElement(child) {\n return child && child.type && isString(child.type) && SVG_TAGS.indexOf(child.type) >= 0;\n};\nexport var isDotProps = function isDotProps(dot) {\n return dot && _typeof(dot) === 'object' && 'cx' in dot && 'cy' in dot && 'r' in dot;\n};\n\n/**\n * Checks if the property is valid to spread onto an SVG element or onto a specific component\n * @param {unknown} property property value currently being compared\n * @param {string} key property key currently being compared\n * @param {boolean} includeEvents if events are included in spreadable props\n * @param {boolean} svgElementType checks against map of SVG element types to attributes\n * @returns {boolean} is prop valid\n */\nexport var isValidSpreadableProp = function isValidSpreadableProp(property, key, includeEvents, svgElementType) {\n var _FilteredElementKeyMa;\n /**\n * If the svg element type is explicitly included, check against the filtered element key map\n * to determine if there are attributes that should only exist on that element type.\n * @todo Add an internal cjs version of https://github.com/wooorm/svg-element-attributes for full coverage.\n */\n var matchingElementTypeKeys = (_FilteredElementKeyMa = FilteredElementKeyMap === null || FilteredElementKeyMap === void 0 ? void 0 : FilteredElementKeyMap[svgElementType]) !== null && _FilteredElementKeyMa !== void 0 ? _FilteredElementKeyMa : [];\n return !isFunction(property) && (svgElementType && matchingElementTypeKeys.includes(key) || SVGElementPropKeys.includes(key)) || includeEvents && EventKeys.includes(key);\n};\n\n/**\n * Filter all the svg elements of children\n * @param {Array} children The children of a react element\n * @return {Array} All the svg elements\n */\nexport var filterSvgElements = function filterSvgElements(children) {\n var svgElements = [];\n toArray(children).forEach(function (entry) {\n if (isSvgElement(entry)) {\n svgElements.push(entry);\n }\n });\n return svgElements;\n};\nexport var filterProps = function filterProps(props, includeEvents, svgElementType) {\n if (!props || typeof props === 'function' || typeof props === 'boolean') {\n return null;\n }\n var inputProps = props;\n if ( /*#__PURE__*/isValidElement(props)) {\n inputProps = props.props;\n }\n if (!isObject(inputProps)) {\n return null;\n }\n var out = {};\n\n /**\n * Props are blindly spread onto SVG elements. This loop filters out properties that we don't want to spread.\n * Items filtered out are as follows:\n * - functions in properties that are SVG attributes (functions are included when includeEvents is true)\n * - props that are SVG attributes but don't matched the passed svgElementType\n * - any prop that is not in SVGElementPropKeys (or in EventKeys if includeEvents is true)\n */\n Object.keys(inputProps).forEach(function (key) {\n var _inputProps;\n if (isValidSpreadableProp((_inputProps = inputProps) === null || _inputProps === void 0 ? void 0 : _inputProps[key], key, includeEvents, svgElementType)) {\n out[key] = inputProps[key];\n }\n });\n return out;\n};\n\n/**\n * Wether props of children changed\n * @param {Object} nextChildren The latest children\n * @param {Object} prevChildren The prev children\n * @return {Boolean} equal or not\n */\nexport var isChildrenEqual = function isChildrenEqual(nextChildren, prevChildren) {\n if (nextChildren === prevChildren) {\n return true;\n }\n var count = Children.count(nextChildren);\n if (count !== Children.count(prevChildren)) {\n return false;\n }\n if (count === 0) {\n return true;\n }\n if (count === 1) {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n return isSingleChildEqual(Array.isArray(nextChildren) ? nextChildren[0] : nextChildren, Array.isArray(prevChildren) ? prevChildren[0] : prevChildren);\n }\n for (var i = 0; i < count; i++) {\n var nextChild = nextChildren[i];\n var prevChild = prevChildren[i];\n if (Array.isArray(nextChild) || Array.isArray(prevChild)) {\n if (!isChildrenEqual(nextChild, prevChild)) {\n return false;\n }\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n } else if (!isSingleChildEqual(nextChild, prevChild)) {\n return false;\n }\n }\n return true;\n};\nexport var isSingleChildEqual = function isSingleChildEqual(nextChild, prevChild) {\n if (isNil(nextChild) && isNil(prevChild)) {\n return true;\n }\n if (!isNil(nextChild) && !isNil(prevChild)) {\n var _ref = nextChild.props || {},\n nextChildren = _ref.children,\n nextProps = _objectWithoutProperties(_ref, _excluded);\n var _ref2 = prevChild.props || {},\n prevChildren = _ref2.children,\n prevProps = _objectWithoutProperties(_ref2, _excluded2);\n if (nextChildren && prevChildren) {\n return shallowEqual(nextProps, prevProps) && isChildrenEqual(nextChildren, prevChildren);\n }\n if (!nextChildren && !prevChildren) {\n return shallowEqual(nextProps, prevProps);\n }\n return false;\n }\n return false;\n};\nexport var renderByOrder = function renderByOrder(children, renderMap) {\n var elements = [];\n var record = {};\n toArray(children).forEach(function (child, index) {\n if (isSvgElement(child)) {\n elements.push(child);\n } else if (child) {\n var displayName = getDisplayName(child.type);\n var _ref3 = renderMap[displayName] || {},\n handler = _ref3.handler,\n once = _ref3.once;\n if (handler && (!once || !record[displayName])) {\n var results = handler(child, displayName, index);\n elements.push(results);\n record[displayName] = true;\n }\n }\n });\n return elements;\n};\nexport var getReactEventByType = function getReactEventByType(e) {\n var type = e && e.type;\n if (type && REACT_BROWSER_EVENT_MAP[type]) {\n return REACT_BROWSER_EVENT_MAP[type];\n }\n return null;\n};\nexport var parseChildIndex = function parseChildIndex(child, children) {\n return toArray(children).indexOf(child);\n};","export default function _taggedTemplateLiteral(strings, raw) {\n if (!raw) {\n raw = strings.slice(0);\n }\n\n return Object.freeze(Object.defineProperties(strings, {\n raw: {\n value: Object.freeze(raw)\n }\n }));\n}","// @flow\nimport type { Interpolation } from '../types';\n\nexport default (\n strings: Array<string>,\n interpolations: Array<Interpolation>\n): Array<Interpolation> => {\n const result = [strings[0]];\n\n for (let i = 0, len = interpolations.length; i < len; i += 1) {\n result.push(interpolations[i], strings[i + 1]);\n }\n\n return result;\n};\n","// @flow\nimport { typeOf } from 'react-is';\n\nexport default (x: any): boolean =>\n x !== null &&\n typeof x === 'object' &&\n (x.toString ? x.toString() : Object.prototype.toString.call(x)) === '[object Object]' &&\n !typeOf(x);\n","// @flow\nexport const EMPTY_ARRAY = Object.freeze([]);\nexport const EMPTY_OBJECT = Object.freeze({});\n","// @flow\nexport default function isFunction(test: any): boolean %checks {\n return typeof test === 'function';\n}\n","// @flow\nimport type { IStyledComponent } from '../types';\n\nexport default function getComponentName(\n target: $PropertyType<IStyledComponent, 'target'>\n): string {\n return (\n (process.env.NODE_ENV !== 'production' ? typeof target === 'string' && target : false) ||\n // $FlowFixMe\n target.displayName ||\n // $FlowFixMe\n target.name ||\n 'Component'\n );\n}\n","// @flow\nexport default function isStyledComponent(target: any): boolean %checks {\n return target && typeof target.styledComponentId === 'string';\n}\n","// @flow\n\ndeclare var SC_DISABLE_SPEEDY: ?boolean;\ndeclare var __VERSION__: string;\n\nexport const SC_ATTR: string =\n (typeof process !== 'undefined' &&\n typeof process.env !== 'undefined' &&\n (process.env.REACT_APP_SC_ATTR || process.env.SC_ATTR)) ||\n 'data-styled';\n\nexport const SC_ATTR_ACTIVE = 'active';\nexport const SC_ATTR_VERSION = 'data-styled-version';\nexport const SC_VERSION = __VERSION__;\nexport const SPLITTER = '/*!sc*/\\n';\n\nexport const IS_BROWSER = typeof window !== 'undefined' && 'HTMLElement' in window;\n\nexport const DISABLE_SPEEDY = Boolean(\n typeof SC_DISABLE_SPEEDY === 'boolean'\n ? SC_DISABLE_SPEEDY\n : typeof process !== 'undefined' && typeof process.env !== 'undefined'\n ? typeof process.env.REACT_APP_SC_DISABLE_SPEEDY !== 'undefined' &&\n process.env.REACT_APP_SC_DISABLE_SPEEDY !== ''\n ? process.env.REACT_APP_SC_DISABLE_SPEEDY === 'false'\n ? false\n : process.env.REACT_APP_SC_DISABLE_SPEEDY\n : typeof process.env.SC_DISABLE_SPEEDY !== 'undefined' && process.env.SC_DISABLE_SPEEDY !== ''\n ? process.env.SC_DISABLE_SPEEDY === 'false'\n ? false\n : process.env.SC_DISABLE_SPEEDY\n : process.env.NODE_ENV !== 'production'\n : false\n);\n\n// Shared empty execution context when generating static styles\nexport const STATIC_EXECUTION_CONTEXT = {};\n","// @flow\nimport errorMap from './errors';\n\nconst ERRORS = process.env.NODE_ENV !== 'production' ? errorMap : {};\n\n/**\n * super basic version of sprintf\n */\nfunction format(...args) {\n let a = args[0];\n const b = [];\n\n for (let c = 1, len = args.length; c < len; c += 1) {\n b.push(args[c]);\n }\n\n b.forEach(d => {\n a = a.replace(/%[a-z]/, d);\n });\n\n return a;\n}\n\n/**\n * Create an error file out of errors.md for development and a simple web link to the full errors\n * in production mode.\n */\nexport default function throwStyledComponentsError(\n code: string | number,\n ...interpolations: Array<any>\n) {\n if (process.env.NODE_ENV === 'production') {\n throw new Error(\n `An error occurred. See https://git.io/JUIaE#${code} for more information.${\n interpolations.length > 0 ? ` Args: ${interpolations.join(', ')}` : ''\n }`\n );\n } else {\n throw new Error(format(ERRORS[code], ...interpolations).trim());\n }\n}\n","// @flow\n/* eslint-disable no-use-before-define */\n\nimport type { GroupedTag, Tag } from './types';\nimport { SPLITTER } from '../constants';\nimport throwStyledError from '../utils/error';\n\n/** Create a GroupedTag with an underlying Tag implementation */\nexport const makeGroupedTag = (tag: Tag): GroupedTag => {\n return new DefaultGroupedTag(tag);\n};\n\nconst BASE_SIZE = 1 << 9;\n\nclass DefaultGroupedTag implements GroupedTag {\n groupSizes: Uint32Array;\n\n length: number;\n\n tag: Tag;\n\n constructor(tag: Tag) {\n this.groupSizes = new Uint32Array(BASE_SIZE);\n this.length = BASE_SIZE;\n this.tag = tag;\n }\n\n indexOfGroup(group: number): number {\n let index = 0;\n for (let i = 0; i < group; i++) {\n index += this.groupSizes[i];\n }\n\n return index;\n }\n\n insertRules(group: number, rules: string[]): void {\n if (group >= this.groupSizes.length) {\n const oldBuffer = this.groupSizes;\n const oldSize = oldBuffer.length;\n\n let newSize = oldSize;\n while (group >= newSize) {\n newSize <<= 1;\n if (newSize < 0) {\n throwStyledError(16, `${group}`);\n }\n }\n\n this.groupSizes = new Uint32Array(newSize);\n this.groupSizes.set(oldBuffer);\n this.length = newSize;\n\n for (let i = oldSize; i < newSize; i++) {\n this.groupSizes[i] = 0;\n }\n }\n\n let ruleIndex = this.indexOfGroup(group + 1);\n for (let i = 0, l = rules.length; i < l; i++) {\n if (this.tag.insertRule(ruleIndex, rules[i])) {\n this.groupSizes[group]++;\n ruleIndex++;\n }\n }\n }\n\n clearGroup(group: number): void {\n if (group < this.length) {\n const length = this.groupSizes[group];\n const startIndex = this.indexOfGroup(group);\n const endIndex = startIndex + length;\n\n this.groupSizes[group] = 0;\n\n for (let i = startIndex; i < endIndex; i++) {\n this.tag.deleteRule(startIndex);\n }\n }\n }\n\n getGroup(group: number): string {\n let css = '';\n if (group >= this.length || this.groupSizes[group] === 0) {\n return css;\n }\n\n const length = this.groupSizes[group];\n const startIndex = this.indexOfGroup(group);\n const endIndex = startIndex + length;\n\n for (let i = startIndex; i < endIndex; i++) {\n css += `${this.tag.getRule(i)}${SPLITTER}`;\n }\n\n return css;\n }\n}\n","// @flow\n\nimport throwStyledError from '../utils/error';\n\nconst MAX_SMI = 1 << 31 - 1;\n\nlet groupIDRegister: Map<string, number> = new Map();\nlet reverseRegister: Map<number, string> = new Map();\nlet nextFreeGroup = 1;\n\nexport const resetGroupIds = () => {\n groupIDRegister = new Map();\n reverseRegister = new Map();\n nextFreeGroup = 1;\n};\n\nexport const getGroupForId = (id: string): number => {\n if (groupIDRegister.has(id)) {\n return (groupIDRegister.get(id): any);\n }\n\n while (reverseRegister.has(nextFreeGroup)) {\n nextFreeGroup++;\n }\n\n const group = nextFreeGroup++;\n\n if (\n process.env.NODE_ENV !== 'production' &&\n ((group | 0) < 0 || group > MAX_SMI)\n ) {\n throwStyledError(16, `${group}`);\n }\n\n groupIDRegister.set(id, group);\n reverseRegister.set(group, id);\n return group;\n};\n\nexport const getIdForGroup = (group: number): void | string => {\n return reverseRegister.get(group);\n};\n\nexport const setGroupForId = (id: string, group: number) => {\n if (group >= nextFreeGroup) {\n nextFreeGroup = group + 1;\n }\n\n groupIDRegister.set(id, group);\n reverseRegister.set(group, id);\n};\n","// @flow\n\nimport { SPLITTER, SC_ATTR, SC_ATTR_ACTIVE, SC_ATTR_VERSION, SC_VERSION } from '../constants';\nimport { getIdForGroup, setGroupForId } from './GroupIDAllocator';\nimport type { Sheet } from './types';\n\nconst SELECTOR = `style[${SC_ATTR}][${SC_ATTR_VERSION}=\"${SC_VERSION}\"]`;\nconst MARKER_RE = new RegExp(`^${SC_ATTR}\\\\.g(\\\\d+)\\\\[id=\"([\\\\w\\\\d-]+)\"\\\\].*?\"([^\"]*)`);\n\nexport const outputSheet = (sheet: Sheet) => {\n const tag = sheet.getTag();\n const { length } = tag;\n\n let css = '';\n for (let group = 0; group < length; group++) {\n const id = getIdForGroup(group);\n if (id === undefined) continue;\n\n const names = sheet.names.get(id);\n const rules = tag.getGroup(group);\n if (!names || !rules || !names.size) continue;\n\n const selector = `${SC_ATTR}.g${group}[id=\"${id}\"]`;\n\n let content = '';\n if (names !== undefined) {\n names.forEach(name => {\n if (name.length > 0) {\n content += `${name},`;\n }\n });\n }\n\n // NOTE: It's easier to collect rules and have the marker\n // after the actual rules to simplify the rehydration\n css += `${rules}${selector}{content:\"${content}\"}${SPLITTER}`;\n }\n\n return css;\n};\n\nconst rehydrateNamesFromContent = (sheet: Sheet, id: string, content: string) => {\n const names = content.split(',');\n let name;\n\n for (let i = 0, l = names.length; i < l; i++) {\n // eslint-disable-next-line\n if ((name = names[i])) {\n sheet.registerName(id, name);\n }\n }\n};\n\nconst rehydrateSheetFromTag = (sheet: Sheet, style: HTMLStyleElement) => {\n const parts = (style.textContent || '').split(SPLITTER);\n const rules: string[] = [];\n\n for (let i = 0, l = parts.length; i < l; i++) {\n const part = parts[i].trim();\n if (!part) continue;\n\n const marker = part.match(MARKER_RE);\n\n if (marker) {\n const group = parseInt(marker[1], 10) | 0;\n const id = marker[2];\n\n if (group !== 0) {\n // Rehydrate componentId to group index mapping\n setGroupForId(id, group);\n // Rehydrate names and rules\n // looks like: data-styled.g11[id=\"idA\"]{content:\"nameA,\"}\n rehydrateNamesFromContent(sheet, id, marker[3]);\n sheet.getTag().insertRules(group, rules);\n }\n\n rules.length = 0;\n } else {\n rules.push(part);\n }\n }\n};\n\nexport const rehydrateSheet = (sheet: Sheet) => {\n const nodes = document.querySelectorAll(SELECTOR);\n\n for (let i = 0, l = nodes.length; i < l; i++) {\n const node = ((nodes[i]: any): HTMLStyleElement);\n if (node && node.getAttribute(SC_ATTR) !== SC_ATTR_ACTIVE) {\n rehydrateSheetFromTag(sheet, node);\n\n if (node.parentNode) {\n node.parentNode.removeChild(node);\n }\n }\n }\n};\n","// @flow\n/* eslint-disable camelcase, no-undef */\n\ndeclare var __webpack_nonce__: string;\n\nconst getNonce = () => {\n return typeof __webpack_nonce__ !== 'undefined' ? __webpack_nonce__ : null;\n};\n\nexport default getNonce;\n","// @flow\n\nimport { SC_ATTR, SC_ATTR_ACTIVE, SC_ATTR_VERSION, SC_VERSION } from '../constants';\nimport getNonce from '../utils/nonce';\nimport throwStyledError from '../utils/error';\n\nconst ELEMENT_TYPE = 1; /* Node.ELEMENT_TYPE */\n\n/** Find last style element if any inside target */\nconst findLastStyleTag = (target: HTMLElement): void | HTMLStyleElement => {\n const { childNodes } = target;\n\n for (let i = childNodes.length; i >= 0; i--) {\n const child = ((childNodes[i]: any): ?HTMLElement);\n if (child && child.nodeType === ELEMENT_TYPE && child.hasAttribute(SC_ATTR)) {\n return ((child: any): HTMLStyleElement);\n }\n }\n\n return undefined;\n};\n\n/** Create a style element inside `target` or <head> after the last */\nexport const makeStyleTag = (target?: HTMLElement): HTMLStyleElement => {\n const head = ((document.head: any): HTMLElement);\n const parent = target || head;\n const style = document.createElement('style');\n const prevStyle = findLastStyleTag(parent);\n const nextSibling = prevStyle !== undefined ? prevStyle.nextSibling : null;\n\n style.setAttribute(SC_ATTR, SC_ATTR_ACTIVE);\n style.setAttribute(SC_ATTR_VERSION, SC_VERSION);\n\n const nonce = getNonce();\n\n if (nonce) style.setAttribute('nonce', nonce);\n\n parent.insertBefore(style, nextSibling);\n\n return style;\n};\n\n/** Get the CSSStyleSheet instance for a given style element */\nexport const getSheet = (tag: HTMLStyleElement): CSSStyleSheet => {\n if (tag.sheet) {\n return ((tag.sheet: any): CSSStyleSheet);\n }\n\n // Avoid Firefox quirk where the style element might not have a sheet property\n const { styleSheets } = document;\n for (let i = 0, l = styleSheets.length; i < l; i++) {\n const sheet = styleSheets[i];\n if (sheet.ownerNode === tag) {\n return ((sheet: any): CSSStyleSheet);\n }\n }\n\n throwStyledError(17);\n return (undefined: any);\n};\n","// @flow\n/* eslint-disable no-use-before-define */\n\nimport { makeStyleTag, getSheet } from './dom';\nimport type { SheetOptions, Tag } from './types';\n\n/** Create a CSSStyleSheet-like tag depending on the environment */\nexport const makeTag = ({ isServer, useCSSOMInjection, target }: SheetOptions): Tag => {\n if (isServer) {\n return new VirtualTag(target);\n } else if (useCSSOMInjection) {\n return new CSSOMTag(target);\n } else {\n return new TextTag(target);\n }\n};\n\nexport class CSSOMTag implements Tag {\n element: HTMLStyleElement;\n\n sheet: CSSStyleSheet;\n\n length: number;\n\n constructor(target?: HTMLElement) {\n const element = (this.element = makeStyleTag(target));\n\n // Avoid Edge bug where empty style elements don't create sheets\n element.appendChild(document.createTextNode(''));\n\n this.sheet = getSheet(element);\n this.length = 0;\n }\n\n insertRule(index: number, rule: string): boolean {\n try {\n this.sheet.insertRule(rule, index);\n this.length++;\n return true;\n } catch (_error) {\n return false;\n }\n }\n\n deleteRule(index: number): void {\n this.sheet.deleteRule(index);\n this.length--;\n }\n\n getRule(index: number): string {\n const rule = this.sheet.cssRules[index];\n // Avoid IE11 quirk where cssText is inaccessible on some invalid rules\n if (rule !== undefined && typeof rule.cssText === 'string') {\n return rule.cssText;\n } else {\n return '';\n }\n }\n}\n\n/** A Tag that emulates the CSSStyleSheet API but uses text nodes */\nexport class TextTag implements Tag {\n element: HTMLStyleElement;\n\n nodes: NodeList<Node>;\n\n length: number;\n\n constructor(target?: HTMLElement) {\n const element = (this.element = makeStyleTag(target));\n this.nodes = element.childNodes;\n this.length = 0;\n }\n\n insertRule(index: number, rule: string): boolean {\n if (index <= this.length && index >= 0) {\n const node = document.createTextNode(rule);\n const refNode = this.nodes[index];\n this.element.insertBefore(node, refNode || null);\n this.length++;\n return true;\n } else {\n return false;\n }\n }\n\n deleteRule(index: number): void {\n this.element.removeChild(this.nodes[index]);\n this.length--;\n }\n\n getRule(index: number): string {\n if (index < this.length) {\n return this.nodes[index].textContent;\n } else {\n return '';\n }\n }\n}\n\n/** A completely virtual (server-side) Tag that doesn't manipulate the DOM */\nexport class VirtualTag implements Tag {\n rules: string[];\n\n length: number;\n\n constructor(_target?: HTMLElement) {\n this.rules = [];\n this.length = 0;\n }\n\n insertRule(index: number, rule: string): boolean {\n if (index <= this.length) {\n this.rules.splice(index, 0, rule);\n this.length++;\n return true;\n } else {\n return false;\n }\n }\n\n deleteRule(index: number): void {\n this.rules.splice(index, 1);\n this.length--;\n }\n\n getRule(index: number): string {\n if (index < this.length) {\n return this.rules[index];\n } else {\n return '';\n }\n }\n}\n","// @flow\nimport { DISABLE_SPEEDY, IS_BROWSER } from '../constants';\nimport { EMPTY_OBJECT } from '../utils/empties';\nimport { makeGroupedTag } from './GroupedTag';\nimport { getGroupForId } from './GroupIDAllocator';\nimport { outputSheet, rehydrateSheet } from './Rehydration';\nimport { makeTag } from './Tag';\nimport type { GroupedTag, Sheet, SheetOptions } from './types';\n\nlet SHOULD_REHYDRATE = IS_BROWSER;\n\ntype SheetConstructorArgs = {\n isServer?: boolean,\n useCSSOMInjection?: boolean,\n target?: HTMLElement,\n};\n\ntype GlobalStylesAllocationMap = { [key: string]: number };\ntype NamesAllocationMap = Map<string, Set<string>>;\n\nconst defaultOptions: SheetOptions = {\n isServer: !IS_BROWSER,\n useCSSOMInjection: !DISABLE_SPEEDY,\n};\n\n/** Contains the main stylesheet logic for stringification and caching */\nexport default class StyleSheet implements Sheet {\n gs: GlobalStylesAllocationMap;\n\n names: NamesAllocationMap;\n\n options: SheetOptions;\n\n server: boolean;\n\n tag: void | GroupedTag;\n\n /** Register a group ID to give it an index */\n static registerId(id: string): number {\n return getGroupForId(id);\n }\n\n constructor(\n options: SheetConstructorArgs = EMPTY_OBJECT,\n globalStyles?: GlobalStylesAllocationMap = {},\n names?: NamesAllocationMap\n ) {\n this.options = {\n ...defaultOptions,\n ...options,\n };\n\n this.gs = globalStyles;\n this.names = new Map(names);\n this.server = !!options.isServer;\n\n // We rehydrate only once and use the sheet that is created first\n if (!this.server && IS_BROWSER && SHOULD_REHYDRATE) {\n SHOULD_REHYDRATE = false;\n rehydrateSheet(this);\n }\n }\n\n reconstructWithOptions(options: SheetConstructorArgs, withNames?: boolean = true) {\n return new StyleSheet(\n { ...this.options, ...options },\n this.gs,\n (withNames && this.names) || undefined\n );\n }\n\n allocateGSInstance(id: string) {\n return (this.gs[id] = (this.gs[id] || 0) + 1);\n }\n\n /** Lazily initialises a GroupedTag for when it's actually needed */\n getTag(): GroupedTag {\n return this.tag || (this.tag = makeGroupedTag(makeTag(this.options)));\n }\n\n /** Check whether a name is known for caching */\n hasNameForId(id: string, name: string): boolean {\n return this.names.has(id) && (this.names.get(id): any).has(name);\n }\n\n /** Mark a group's name as known for caching */\n registerName(id: string, name: string) {\n getGroupForId(id);\n\n if (!this.names.has(id)) {\n const groupNames = new Set();\n groupNames.add(name);\n this.names.set(id, groupNames);\n } else {\n (this.names.get(id): any).add(name);\n }\n }\n\n /** Insert new rules which also marks the name as known */\n insertRules(id: string, name: string, rules: string[]) {\n this.registerName(id, name);\n this.getTag().insertRules(getGroupForId(id), rules);\n }\n\n /** Clears all cached names for a given group ID */\n clearNames(id: string) {\n if (this.names.has(id)) {\n (this.names.get(id): any).clear();\n }\n }\n\n /** Clears all rules for a given group ID */\n clearRules(id: string) {\n this.getTag().clearGroup(getGroupForId(id));\n this.clearNames(id);\n }\n\n /** Clears the entire tag which deletes all rules but not its names */\n clearTag() {\n // NOTE: This does not clear the names, since it's only used during SSR\n // so that we can continuously output only new rules\n this.tag = undefined;\n }\n\n /** Outputs the current sheet as a CSS string with markers for SSR */\n toString(): string {\n return outputSheet(this);\n }\n}\n","// @flow\n/* eslint-disable no-bitwise */\n\nconst AD_REPLACER_R = /(a)(d)/gi;\n\n/* This is the \"capacity\" of our alphabet i.e. 2x26 for all letters plus their capitalised\n * counterparts */\nconst charsLength = 52;\n\n/* start at 75 for 'a' until 'z' (25) and then start at 65 for capitalised letters */\nconst getAlphabeticChar = (code: number): string =>\n String.fromCharCode(code + (code > 25 ? 39 : 97));\n\n/* input a number, usually a hash and convert it to base-52 */\nexport default function generateAlphabeticName(code: number): string {\n let name = '';\n let x;\n\n /* get a char and divide by alphabet-length */\n for (x = Math.abs(code); x > charsLength; x = (x / charsLength) | 0) {\n name = getAlphabeticChar(x % charsLength) + name;\n }\n\n return (getAlphabeticChar(x % charsLength) + name).replace(AD_REPLACER_R, '$1-$2');\n}\n","// @flow\n/* eslint-disable */\n\nexport const SEED = 5381;\n\n// When we have separate strings it's useful to run a progressive\n// version of djb2 where we pretend that we're still looping over\n// the same string\nexport const phash = (h: number, x: string): number => {\n let i = x.length;\n\n while (i) {\n h = (h * 33) ^ x.charCodeAt(--i);\n }\n\n return h;\n};\n\n// This is a djb2 hashing function\nexport const hash = (x: string): number => {\n return phash(SEED, x);\n};\n","// @flow\nimport isFunction from './isFunction';\nimport isStyledComponent from './isStyledComponent';\nimport type { RuleSet } from '../types';\n\nexport default function isStaticRules(rules: RuleSet): boolean {\n for (let i = 0; i < rules.length; i += 1) {\n const rule = rules[i];\n\n if (isFunction(rule) && !isStyledComponent(rule)) {\n // functions are allowed to be static if they're just being\n // used to get the classname of a nested styled component\n return false;\n }\n }\n\n return true;\n}\n","// @flow\nimport { SC_VERSION } from '../constants';\nimport StyleSheet from '../sheet';\nimport type { RuleSet, Stringifier } from '../types';\nimport flatten from '../utils/flatten';\nimport generateName from '../utils/generateAlphabeticName';\nimport { hash, phash } from '../utils/hash';\nimport isStaticRules from '../utils/isStaticRules';\n\nconst SEED = hash(SC_VERSION);\n\n/**\n * ComponentStyle is all the CSS-specific stuff, not the React-specific stuff.\n */\nexport default class ComponentStyle {\n baseHash: number;\n\n baseStyle: ?ComponentStyle;\n\n componentId: string;\n\n isStatic: boolean;\n\n rules: RuleSet;\n\n staticRulesId: string;\n\n constructor(rules: RuleSet, componentId: string, baseStyle?: ComponentStyle) {\n this.rules = rules;\n this.staticRulesId = '';\n this.isStatic = process.env.NODE_ENV === 'production' &&\n (baseStyle === undefined || baseStyle.isStatic) &&\n isStaticRules(rules);\n this.componentId = componentId;\n\n // SC_VERSION gives us isolation between multiple runtimes on the page at once\n // this is improved further with use of the babel plugin \"namespace\" feature\n this.baseHash = phash(SEED, componentId);\n\n this.baseStyle = baseStyle;\n\n // NOTE: This registers the componentId, which ensures a consistent order\n // for this component's styles compared to others\n StyleSheet.registerId(componentId);\n }\n\n /*\n * Flattens a rule set into valid CSS\n * Hashes it, wraps the whole chunk in a .hash1234 {}\n * Returns the hash to be injected on render()\n * */\n generateAndInjectStyles(executionContext: Object, styleSheet: StyleSheet, stylis: Stringifier) {\n const { componentId } = this;\n\n const names = [];\n\n if (this.baseStyle) {\n names.push(this.baseStyle.generateAndInjectStyles(executionContext, styleSheet, stylis));\n }\n\n // force dynamic classnames if user-supplied stylis plugins are in use\n if (this.isStatic && !stylis.hash) {\n if (this.staticRulesId && styleSheet.hasNameForId(componentId, this.staticRulesId)) {\n names.push(this.staticRulesId);\n } else {\n const cssStatic = flatten(this.rules, executionContext, styleSheet, stylis).join('');\n const name = generateName(phash(this.baseHash, cssStatic) >>> 0);\n\n if (!styleSheet.hasNameForId(componentId, name)) {\n const cssStaticFormatted = stylis(cssStatic, `.${name}`, undefined, componentId);\n\n styleSheet.insertRules(componentId, name, cssStaticFormatted);\n }\n\n names.push(name);\n this.staticRulesId = name;\n }\n } else {\n const { length } = this.rules;\n let dynamicHash = phash(this.baseHash, stylis.hash);\n let css = '';\n\n for (let i = 0; i < length; i++) {\n const partRule = this.rules[i];\n\n if (typeof partRule === 'string') {\n css += partRule;\n\n if (process.env.NODE_ENV !== 'production') dynamicHash = phash(dynamicHash, partRule + i);\n } else if (partRule) {\n const partChunk = flatten(partRule, executionContext, styleSheet, stylis);\n const partString = Array.isArray(partChunk) ? partChunk.join('') : partChunk;\n dynamicHash = phash(dynamicHash, partString + i);\n css += partString;\n }\n }\n\n if (css) {\n const name = generateName(dynamicHash >>> 0);\n\n if (!styleSheet.hasNameForId(componentId, name)) {\n const cssFormatted = stylis(css, `.${name}`, undefined, componentId);\n styleSheet.insertRules(componentId, name, cssFormatted);\n }\n\n names.push(name);\n }\n }\n\n return names.join(' ');\n }\n}\n","import Stylis from '@emotion/stylis';\nimport { type Stringifier } from '../types';\nimport { EMPTY_ARRAY, EMPTY_OBJECT } from './empties';\nimport throwStyledError from './error';\nimport { phash, SEED } from './hash';\nimport insertRulePlugin from './stylisPluginInsertRule';\n\nconst COMMENT_REGEX = /^\\s*\\/\\/.*$/gm;\nconst COMPLEX_SELECTOR_PREFIX = [':', '[', '.', '#'];\n\ntype StylisInstanceConstructorArgs = {\n options?: Object,\n plugins?: Array<Function>,\n};\n\nexport default function createStylisInstance({\n options = EMPTY_OBJECT,\n plugins = EMPTY_ARRAY,\n}: StylisInstanceConstructorArgs = EMPTY_OBJECT) {\n const stylis = new Stylis(options);\n\n // Wrap `insertRulePlugin to build a list of rules,\n // and then make our own plugin to return the rules. This\n // makes it easier to hook into the existing SSR architecture\n\n let parsingRules = [];\n\n // eslint-disable-next-line consistent-return\n const returnRulesPlugin = context => {\n if (context === -2) {\n const parsedRules = parsingRules;\n parsingRules = [];\n return parsedRules;\n }\n };\n\n const parseRulesPlugin = insertRulePlugin(rule => {\n parsingRules.push(rule);\n });\n\n let _componentId: string;\n let _selector: string;\n let _selectorRegexp: RegExp;\n let _consecutiveSelfRefRegExp: RegExp;\n\n const selfReferenceReplacer = (match, offset, string) => {\n if (\n // do not replace the first occurrence if it is complex (has a modifier)\n (offset === 0 ? COMPLEX_SELECTOR_PREFIX.indexOf(string[_selector.length]) === -1 : true) &&\n // no consecutive self refs (.b.b); that is a precedence boost and treated differently\n !string.match(_consecutiveSelfRefRegExp)\n ) {\n return `.${_componentId}`;\n }\n\n return match;\n };\n\n /**\n * When writing a style like\n *\n * & + & {\n * color: red;\n * }\n *\n * The second ampersand should be a reference to the static component class. stylis\n * has no knowledge of static class so we have to intelligently replace the base selector.\n *\n * https://github.com/thysultan/stylis.js/tree/v3.5.4#plugins <- more info about the context phase values\n * \"2\" means this plugin is taking effect at the very end after all other processing is complete\n */\n const selfReferenceReplacementPlugin = (context, _, selectors) => {\n if (context === 2 && selectors.length && selectors[0].lastIndexOf(_selector) > 0) {\n // eslint-disable-next-line no-param-reassign\n selectors[0] = selectors[0].replace(_selectorRegexp, selfReferenceReplacer);\n }\n };\n\n stylis.use([...plugins, selfReferenceReplacementPlugin, parseRulesPlugin, returnRulesPlugin]);\n\n function stringifyRules(css, selector, prefix, componentId = '&'): Stringifier {\n const flatCSS = css.replace(COMMENT_REGEX, '');\n const cssStr = selector && prefix ? `${prefix} ${selector} { ${flatCSS} }` : flatCSS;\n\n // stylis has no concept of state to be passed to plugins\n // but since JS is single-threaded, we can rely on that to ensure\n // these properties stay in sync with the current stylis run\n _componentId = componentId;\n _selector = selector;\n _selectorRegexp = new RegExp(`\\\\${_selector}\\\\b`, 'g');\n _consecutiveSelfRefRegExp = new RegExp(`(\\\\${_selector}\\\\b){2,}`);\n\n return stylis(prefix || !selector ? '' : selector, cssStr);\n }\n\n stringifyRules.hash = plugins.length\n ? plugins\n .reduce((acc, plugin) => {\n if (!plugin.name) {\n throwStyledError(15);\n }\n\n return phash(acc, plugin.name);\n }, SEED)\n .toString()\n : '';\n\n return stringifyRules;\n}\n","/**\n * MIT License\n *\n * Copyright (c) 2016 Sultan Tarimo\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy of\n * this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software and to permit persons to whom the Software is 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\n * OR 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 LIABILITY,\n * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR\n * IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\n/* eslint-disable */\n\nexport default function(insertRule) {\n const delimiter = '/*|*/';\n const needle = `${delimiter}}`;\n\n function toSheet(block) {\n if (block) {\n try {\n insertRule(`${block}}`);\n } catch (e) {}\n }\n }\n\n return function ruleSheet(\n context,\n content,\n selectors,\n parents,\n line,\n column,\n length,\n ns,\n depth,\n at\n ) {\n switch (context) {\n // property\n case 1:\n // @import\n if (depth === 0 && content.charCodeAt(0) === 64) return insertRule(`${content};`), '';\n break;\n // selector\n case 2:\n if (ns === 0) return content + delimiter;\n break;\n // at-rule\n case 3:\n switch (ns) {\n // @font-face, @page\n case 102:\n case 112:\n return insertRule(selectors[0] + content), '';\n default:\n return content + (at === 0 ? delimiter : '');\n }\n case -2:\n content.split(needle).forEach(toSheet);\n }\n };\n}\n","// @flow\nimport React, { type Context, type Node, useContext, useEffect, useMemo, useState } from 'react';\nimport shallowequal from 'shallowequal';\nimport StyleSheet from '../sheet';\nimport type { Stringifier } from '../types';\nimport createStylisInstance from '../utils/stylis';\n\ntype Props = {\n children?: Node,\n disableCSSOMInjection?: boolean,\n disableVendorPrefixes?: boolean,\n sheet?: StyleSheet,\n stylisPlugins?: Array<Function>,\n target?: HTMLElement,\n};\n\nexport const StyleSheetContext: Context<StyleSheet | void> = React.createContext();\nexport const StyleSheetConsumer = StyleSheetContext.Consumer;\nexport const StylisContext: Context<Stringifier | void> = React.createContext();\nexport const StylisConsumer = StylisContext.Consumer;\n\nexport const masterSheet: StyleSheet = new StyleSheet();\nexport const masterStylis: Stringifier = createStylisInstance();\n\nexport function useStyleSheet(): StyleSheet {\n return useContext(StyleSheetContext) || masterSheet;\n}\n\nexport function useStylis(): Stringifier {\n return useContext(StylisContext) || masterStylis;\n}\n\nexport default function StyleSheetManager(props: Props) {\n const [plugins, setPlugins] = useState(props.stylisPlugins);\n const contextStyleSheet = useStyleSheet();\n\n const styleSheet = useMemo(() => {\n let sheet = contextStyleSheet;\n\n if (props.sheet) {\n // eslint-disable-next-line prefer-destructuring\n sheet = props.sheet;\n } else if (props.target) {\n sheet = sheet.reconstructWithOptions({ target: props.target }, false);\n }\n\n if (props.disableCSSOMInjection) {\n sheet = sheet.reconstructWithOptions({ useCSSOMInjection: false });\n }\n\n return sheet;\n }, [props.disableCSSOMInjection, props.sheet, props.target]);\n\n const stylis = useMemo(\n () =>\n createStylisInstance({\n options: { prefix: !props.disableVendorPrefixes },\n plugins,\n }),\n [props.disableVendorPrefixes, plugins]\n );\n\n useEffect(() => {\n if (!shallowequal(plugins, props.stylisPlugins)) setPlugins(props.stylisPlugins);\n }, [props.stylisPlugins]);\n\n return (\n <StyleSheetContext.Provider value={styleSheet}>\n <StylisContext.Provider value={stylis}>\n {process.env.NODE_ENV !== 'production'\n ? React.Children.only(props.children)\n : props.children}\n </StylisContext.Provider>\n </StyleSheetContext.Provider>\n );\n}\n","// @flow\nimport StyleSheet from '../sheet';\nimport { type Stringifier } from '../types';\nimport throwStyledError from '../utils/error';\nimport { masterStylis } from './StyleSheetManager';\n\nexport default class Keyframes {\n id: string;\n\n name: string;\n\n rules: string;\n\n constructor(name: string, rules: string) {\n this.name = name;\n this.id = `sc-keyframes-${name}`;\n this.rules = rules;\n }\n\n inject = (styleSheet: StyleSheet, stylisInstance: Stringifier = masterStylis) => {\n const resolvedName = this.name + stylisInstance.hash;\n\n if (!styleSheet.hasNameForId(this.id, resolvedName)) {\n styleSheet.insertRules(\n this.id,\n resolvedName,\n stylisInstance(this.rules, resolvedName, '@keyframes')\n );\n }\n };\n\n toString = () => {\n return throwStyledError(12, String(this.name));\n };\n\n getName(stylisInstance: Stringifier = masterStylis) {\n return this.name + stylisInstance.hash;\n }\n}\n","// @flow\n\n/**\n * inlined version of\n * https://github.com/facebook/fbjs/blob/master/packages/fbjs/src/core/hyphenateStyleName.js\n */\n\nconst uppercaseCheck = /([A-Z])/;\nconst uppercasePattern = /([A-Z])/g;\nconst msPattern = /^ms-/;\nconst prefixAndLowerCase = (char: string): string => `-${char.toLowerCase()}`;\n\n/**\n * Hyphenates a camelcased CSS property name, for example:\n *\n * > hyphenateStyleName('backgroundColor')\n * < \"background-color\"\n * > hyphenateStyleName('MozTransition')\n * < \"-moz-transition\"\n * > hyphenateStyleName('msTransition')\n * < \"-ms-transition\"\n *\n * As Modernizr suggests (http://modernizr.com/docs/#prefixed), an `ms` prefix\n * is converted to `-ms-`.\n *\n * @param {string} string\n * @return {string}\n */\nexport default function hyphenateStyleName(string: string): string {\n return uppercaseCheck.test(string)\n ? string\n .replace(uppercasePattern, prefixAndLowerCase)\n .replace(msPattern, '-ms-')\n : string;\n}\n","// @flow\nimport { isElement } from 'react-is';\nimport getComponentName from './getComponentName';\nimport isFunction from './isFunction';\nimport isStatelessFunction from './isStatelessFunction';\nimport isPlainObject from './isPlainObject';\nimport isStyledComponent from './isStyledComponent';\nimport Keyframes from '../models/Keyframes';\nimport hyphenate from './hyphenateStyleName';\nimport addUnitIfNeeded from './addUnitIfNeeded';\nimport { type Stringifier } from '../types';\n\n/**\n * It's falsish not falsy because 0 is allowed.\n */\nconst isFalsish = chunk => chunk === undefined || chunk === null || chunk === false || chunk === '';\n\nexport const objToCssArray = (obj: Object, prevKey?: string): Array<string | Function> => {\n const rules = [];\n\n for (const key in obj) {\n if (!obj.hasOwnProperty(key) || isFalsish(obj[key])) continue;\n\n if ((Array.isArray(obj[key]) && obj[key].isCss) || isFunction(obj[key])) {\n rules.push(`${hyphenate(key)}:`, obj[key], ';');\n } else if (isPlainObject(obj[key])) {\n rules.push(...objToCssArray(obj[key], key));\n } else {\n rules.push(`${hyphenate(key)}: ${addUnitIfNeeded(key, obj[key])};`);\n }\n }\n\n return prevKey ? [`${prevKey} {`, ...rules, '}'] : rules;\n};\n\nexport default function flatten(\n chunk: any,\n executionContext: ?Object,\n styleSheet: ?Object,\n stylisInstance: ?Stringifier\n): any {\n if (Array.isArray(chunk)) {\n const ruleSet = [];\n\n for (let i = 0, len = chunk.length, result; i < len; i += 1) {\n result = flatten(chunk[i], executionContext, styleSheet, stylisInstance);\n\n if (result === '') continue;\n else if (Array.isArray(result)) ruleSet.push(...result);\n else ruleSet.push(result);\n }\n\n return ruleSet;\n }\n\n if (isFalsish(chunk)) {\n return '';\n }\n\n /* Handle other components */\n if (isStyledComponent(chunk)) {\n return `.${chunk.styledComponentId}`;\n }\n\n /* Either execute or defer the function */\n if (isFunction(chunk)) {\n if (isStatelessFunction(chunk) && executionContext) {\n const result = chunk(executionContext);\n\n if (process.env.NODE_ENV !== 'production' && isElement(result)) {\n // eslint-disable-next-line no-console\n console.warn(\n `${getComponentName(\n chunk\n )} is not a styled component and cannot be referred to via component selector. See https://www.styled-components.com/docs/advanced#referring-to-other-components for more details.`\n );\n }\n\n return flatten(result, executionContext, styleSheet, stylisInstance);\n } else return chunk;\n }\n\n if (chunk instanceof Keyframes) {\n if (styleSheet) {\n chunk.inject(styleSheet, stylisInstance);\n return chunk.getName(stylisInstance);\n } else return chunk;\n }\n\n /* Handle objects */\n return isPlainObject(chunk) ? objToCssArray(chunk) : chunk.toString();\n}\n","// @flow\nexport default function isStatelessFunction(test: any): boolean {\n return (\n typeof test === 'function'\n && !(\n test.prototype\n && test.prototype.isReactComponent\n )\n );\n}\n","// @flow\nimport unitless from '@emotion/unitless';\n\n// Taken from https://github.com/facebook/react/blob/b87aabdfe1b7461e7331abb3601d9e6bb27544bc/packages/react-dom/src/shared/dangerousStyleValue.js\nexport default function addUnitIfNeeded(name: string, value: any): any {\n // https://github.com/amilajack/eslint-plugin-flowtype-errors/issues/133\n // $FlowFixMe\n if (value == null || typeof value === 'boolean' || value === '') {\n return '';\n }\n\n if (typeof value === 'number' && value !== 0 && !(name in unitless) && !name.startsWith('--')) {\n return `${value}px`; // Presumes implicit 'px' suffix for unitless numbers except for CSS variables\n }\n\n return String(value).trim();\n}\n","// @flow\nimport interleave from '../utils/interleave';\nimport isPlainObject from '../utils/isPlainObject';\nimport { EMPTY_ARRAY } from '../utils/empties';\nimport isFunction from '../utils/isFunction';\nimport flatten from '../utils/flatten';\nimport type { Interpolation, RuleSet, Styles } from '../types';\n\n/**\n * Used when flattening object styles to determine if we should\n * expand an array of styles.\n */\nconst addTag = arg => {\n if (Array.isArray(arg)) {\n // eslint-disable-next-line no-param-reassign\n arg.isCss = true;\n }\n return arg;\n};\n\nexport default function css(styles: Styles, ...interpolations: Array<Interpolation>): RuleSet {\n if (isFunction(styles) || isPlainObject(styles)) {\n // $FlowFixMe\n return addTag(flatten(interleave(EMPTY_ARRAY, [styles, ...interpolations])));\n }\n\n if (interpolations.length === 0 && styles.length === 1 && typeof styles[0] === 'string') {\n // $FlowFixMe\n return styles;\n }\n\n // $FlowFixMe\n return addTag(flatten(interleave(styles, interpolations)));\n}\n","// @flow\n\nimport { useRef } from 'react';\n\nconst invalidHookCallRe = /invalid hook call/i;\nconst seen = new Set();\n\nexport const checkDynamicCreation = (displayName: string, componentId?: string) => {\n if (process.env.NODE_ENV !== 'production') {\n const parsedIdString = componentId ? ` with the id of \"${componentId}\"` : '';\n const message =\n `The component ${displayName}${parsedIdString} has been created dynamically.\\n` +\n \"You may see this warning because you've called styled inside another component.\\n\" +\n 'To resolve this only create new StyledComponents outside of any render method and function component.';\n\n // If a hook is called outside of a component:\n // React 17 and earlier throw an error\n // React 18 and above use console.error\n\n const originalConsoleError = console.error // eslint-disable-line no-console\n try {\n let didNotCallInvalidHook = true\n /* $FlowIgnore[cannot-write] */\n console.error = (consoleErrorMessage, ...consoleErrorArgs) => { // eslint-disable-line no-console\n // The error here is expected, since we're expecting anything that uses `checkDynamicCreation` to\n // be called outside of a React component.\n if (invalidHookCallRe.test(consoleErrorMessage)) {\n didNotCallInvalidHook = false\n // This shouldn't happen, but resets `warningSeen` if we had this error happen intermittently\n seen.delete(message);\n } else {\n originalConsoleError(consoleErrorMessage, ...consoleErrorArgs);\n }\n }\n // We purposefully call `useRef` outside of a component and expect it to throw\n // If it doesn't, then we're inside another component.\n // eslint-disable-next-line react-hooks/rules-of-hooks\n useRef();\n\n if (didNotCallInvalidHook && !seen.has(message)) {\n // eslint-disable-next-line no-console\n console.warn(message);\n seen.add(message);\n }\n } catch (error) {\n // The error here is expected, since we're expecting anything that uses `checkDynamicCreation` to\n // be called outside of a React component.\n if (invalidHookCallRe.test(error.message)) {\n // This shouldn't happen, but resets `warningSeen` if we had this error happen intermittently\n seen.delete(message);\n }\n } finally {\n /* $FlowIgnore[cannot-write] */\n console.error = originalConsoleError; // eslint-disable-line no-console\n }\n }\n};\n","// @flow\nimport { EMPTY_OBJECT } from './empties';\n\ntype Props = {\n theme?: any,\n};\n\nexport default (props: Props, providedTheme: any, defaultProps: any = EMPTY_OBJECT) => {\n return (props.theme !== defaultProps.theme && props.theme) || providedTheme || defaultProps.theme;\n};\n","// @flow\n\n// Source: https://www.w3.org/TR/cssom-1/#serialize-an-identifier\n// Control characters and non-letter first symbols are not supported\nconst escapeRegex = /[!\"#$%&'()*+,./:;<=>?@[\\\\\\]^`{|}~-]+/g;\n\nconst dashesAtEnds = /(^-|-$)/g;\n\n/**\n * TODO: Explore using CSS.escape when it becomes more available\n * in evergreen browsers.\n */\nexport default function escape(str: string): string {\n return (\n str\n // Replace all possible CSS selectors\n .replace(escapeRegex, '-')\n\n // Remove extraneous hyphens at the start and end\n .replace(dashesAtEnds, '')\n );\n}\n","// @flow\n/* eslint-disable */\nimport generateAlphabeticName from './generateAlphabeticName';\nimport { hash } from './hash';\n\nexport default (str: string): string => {\n return generateAlphabeticName(hash(str) >>> 0);\n};\n","// @flow\nimport type { IStyledComponent } from '../types';\n\nexport default function isTag(target: $PropertyType<IStyledComponent, 'target'>): boolean %checks {\n return (\n typeof target === 'string' &&\n (process.env.NODE_ENV !== 'production'\n ? target.charAt(0) === target.charAt(0).toLowerCase()\n : true)\n );\n}\n","/* eslint-disable */\n/**\n mixin-deep; https://github.com/jonschlinkert/mixin-deep\n Inlined such that it will be consistently transpiled to an IE-compatible syntax.\n\n The MIT License (MIT)\n\n Copyright (c) 2014-present, Jon Schlinkert.\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\n all 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\n THE SOFTWARE.\n*/\n\nconst isObject = val => {\n return (\n typeof val === 'function' || (typeof val === 'object' && val !== null && !Array.isArray(val))\n );\n};\n\nconst isValidKey = key => {\n return key !== '__proto__' && key !== 'constructor' && key !== 'prototype';\n};\n\nfunction mixin(target, val, key) {\n const obj = target[key];\n if (isObject(val) && isObject(obj)) {\n mixinDeep(obj, val);\n } else {\n target[key] = val;\n }\n}\n\nexport default function mixinDeep(target, ...rest) {\n for (const obj of rest) {\n if (isObject(obj)) {\n for (const key in obj) {\n if (isValidKey(key)) {\n mixin(target, obj[key], key);\n }\n }\n }\n }\n\n return target;\n}\n","// @flow\nimport React, { useContext, useMemo, type Element, type Context } from 'react';\nimport throwStyledError from '../utils/error';\nimport isFunction from '../utils/isFunction';\n\nexport type Theme = { [key: string]: mixed };\n\ntype ThemeArgument = Theme | ((outerTheme?: Theme) => Theme);\n\ntype Props = {\n children?: Element<any>,\n theme: ThemeArgument,\n};\n\nexport const ThemeContext: Context<Theme | void> = React.createContext();\n\nexport const ThemeConsumer = ThemeContext.Consumer;\n\nfunction mergeTheme(theme: ThemeArgument, outerTheme?: Theme): Theme {\n if (!theme) {\n return throwStyledError(14);\n }\n\n if (isFunction(theme)) {\n const mergedTheme = theme(outerTheme);\n\n if (\n process.env.NODE_ENV !== 'production' &&\n (mergedTheme === null || Array.isArray(mergedTheme) || typeof mergedTheme !== 'object')\n ) {\n return throwStyledError(7);\n }\n\n return mergedTheme;\n }\n\n if (Array.isArray(theme) || typeof theme !== 'object') {\n return throwStyledError(8);\n }\n\n return outerTheme ? { ...outerTheme, ...theme } : theme;\n}\n\n/**\n * Provide a theme to an entire react component tree via context\n */\nexport default function ThemeProvider(props: Props) {\n const outerTheme = useContext(ThemeContext);\n const themeContext = useMemo(() => mergeTheme(props.theme, outerTheme), [\n props.theme,\n outerTheme,\n ]);\n\n if (!props.children) {\n return null;\n }\n\n return <ThemeContext.Provider value={themeContext}>{props.children}</ThemeContext.Provider>;\n}\n","// @flow\nimport validAttr from '@emotion/is-prop-valid';\nimport hoist from 'hoist-non-react-statics';\nimport React, { createElement, type Ref, useContext } from 'react';\nimport { SC_VERSION } from '../constants';\nimport type {\n Attrs,\n IStyledComponent,\n IStyledStatics,\n RuleSet,\n ShouldForwardProp,\n Target,\n} from '../types';\nimport { checkDynamicCreation } from '../utils/checkDynamicCreation';\nimport createWarnTooManyClasses from '../utils/createWarnTooManyClasses';\nimport determineTheme from '../utils/determineTheme';\nimport { EMPTY_ARRAY, EMPTY_OBJECT } from '../utils/empties';\nimport escape from '../utils/escape';\nimport generateComponentId from '../utils/generateComponentId';\nimport generateDisplayName from '../utils/generateDisplayName';\nimport getComponentName from '../utils/getComponentName';\nimport isFunction from '../utils/isFunction';\nimport isStyledComponent from '../utils/isStyledComponent';\nimport isTag from '../utils/isTag';\nimport joinStrings from '../utils/joinStrings';\nimport merge from '../utils/mixinDeep';\nimport ComponentStyle from './ComponentStyle';\nimport { useStyleSheet, useStylis } from './StyleSheetManager';\nimport { ThemeContext } from './ThemeProvider';\n\nconst identifiers = {};\n\n/* We depend on components having unique IDs */\nfunction generateId(displayName?: string, parentComponentId?: string) {\n const name = typeof displayName !== 'string' ? 'sc' : escape(displayName);\n // Ensure that no displayName can lead to duplicate componentIds\n identifiers[name] = (identifiers[name] || 0) + 1;\n\n const componentId = `${name}-${generateComponentId(\n // SC_VERSION gives us isolation between multiple runtimes on the page at once\n // this is improved further with use of the babel plugin \"namespace\" feature\n SC_VERSION + name + identifiers[name]\n )}`;\n\n return parentComponentId ? `${parentComponentId}-${componentId}` : componentId;\n}\n\nfunction useResolvedAttrs<Config>(theme: any = EMPTY_OBJECT, props: Config, attrs: Attrs) {\n // NOTE: can't memoize this\n // returns [context, resolvedAttrs]\n // where resolvedAttrs is only the things injected by the attrs themselves\n const context = { ...props, theme };\n const resolvedAttrs = {};\n\n attrs.forEach(attrDef => {\n let resolvedAttrDef = attrDef;\n let key;\n\n if (isFunction(resolvedAttrDef)) {\n resolvedAttrDef = resolvedAttrDef(context);\n }\n\n /* eslint-disable guard-for-in */\n for (key in resolvedAttrDef) {\n context[key] = resolvedAttrs[key] =\n key === 'className'\n ? joinStrings(resolvedAttrs[key], resolvedAttrDef[key])\n : resolvedAttrDef[key];\n }\n /* eslint-enable guard-for-in */\n });\n\n return [context, resolvedAttrs];\n}\n\nfunction useInjectedStyle<T>(\n componentStyle: ComponentStyle,\n isStatic: boolean,\n resolvedAttrs: T,\n warnTooManyClasses?: $Call<typeof createWarnTooManyClasses, string, string>\n) {\n const styleSheet = useStyleSheet();\n const stylis = useStylis();\n\n const className = isStatic\n ? componentStyle.generateAndInjectStyles(EMPTY_OBJECT, styleSheet, stylis)\n : componentStyle.generateAndInjectStyles(resolvedAttrs, styleSheet, stylis);\n\n if (process.env.NODE_ENV !== 'production' && !isStatic && warnTooManyClasses) {\n warnTooManyClasses(className);\n }\n\n return className;\n}\n\nfunction useStyledComponentImpl(\n forwardedComponent: IStyledComponent,\n props: Object,\n forwardedRef: Ref<any>,\n isStatic: boolean\n) {\n const {\n attrs: componentAttrs,\n componentStyle,\n defaultProps,\n foldedComponentIds,\n shouldForwardProp,\n styledComponentId,\n target,\n } = forwardedComponent;\n\n // NOTE: the non-hooks version only subscribes to this when !componentStyle.isStatic,\n // but that'd be against the rules-of-hooks. We could be naughty and do it anyway as it\n // should be an immutable value, but behave for now.\n const theme = determineTheme(props, useContext(ThemeContext), defaultProps);\n\n const [context, attrs] = useResolvedAttrs(theme || EMPTY_OBJECT, props, componentAttrs);\n\n const generatedClassName = useInjectedStyle(\n componentStyle,\n isStatic,\n context,\n process.env.NODE_ENV !== 'production' ? forwardedComponent.warnTooManyClasses : undefined\n );\n\n const refToForward = forwardedRef;\n\n const elementToBeCreated: Target = attrs.$as || props.$as || attrs.as || props.as || target;\n\n const isTargetTag = isTag(elementToBeCreated);\n const computedProps = attrs !== props ? { ...props, ...attrs } : props;\n const propsForElement = {};\n\n // eslint-disable-next-line guard-for-in\n for (const key in computedProps) {\n if (key[0] === '$' || key === 'as') continue;\n else if (key === 'forwardedAs') {\n propsForElement.as = computedProps[key];\n } else if (\n shouldForwardProp\n ? shouldForwardProp(key, validAttr, elementToBeCreated)\n : isTargetTag\n ? validAttr(key)\n : true\n ) {\n // Don't pass through non HTML tags through to HTML elements\n propsForElement[key] = computedProps[key];\n }\n }\n\n if (props.style && attrs.style !== props.style) {\n propsForElement.style = { ...props.style, ...attrs.style };\n }\n\n propsForElement.className = Array.prototype\n .concat(\n foldedComponentIds,\n styledComponentId,\n generatedClassName !== styledComponentId ? generatedClassName : null,\n props.className,\n attrs.className\n )\n .filter(Boolean)\n .join(' ');\n\n propsForElement.ref = refToForward;\n\n return createElement(elementToBeCreated, propsForElement);\n}\n\nexport default function createStyledComponent(\n target: $PropertyType<IStyledComponent, 'target'>,\n options: {\n attrs?: Attrs,\n componentId: string,\n displayName?: string,\n parentComponentId?: string,\n shouldForwardProp?: ShouldForwardProp,\n },\n rules: RuleSet\n) {\n const isTargetStyledComp = isStyledComponent(target);\n const isCompositeComponent = !isTag(target);\n\n const {\n attrs = EMPTY_ARRAY,\n componentId = generateId(options.displayName, options.parentComponentId),\n displayName = generateDisplayName(target),\n } = options;\n\n const styledComponentId =\n options.displayName && options.componentId\n ? `${escape(options.displayName)}-${options.componentId}`\n : options.componentId || componentId;\n\n // fold the underlying StyledComponent attrs up (implicit extend)\n const finalAttrs =\n isTargetStyledComp && ((target: any): IStyledComponent).attrs\n ? Array.prototype.concat(((target: any): IStyledComponent).attrs, attrs).filter(Boolean)\n : attrs;\n\n // eslint-disable-next-line prefer-destructuring\n let shouldForwardProp = options.shouldForwardProp;\n\n if (isTargetStyledComp && target.shouldForwardProp) {\n if (options.shouldForwardProp) {\n // compose nested shouldForwardProp calls\n shouldForwardProp = (prop, filterFn, elementToBeCreated) =>\n ((((target: any): IStyledComponent).shouldForwardProp: any): ShouldForwardProp)(\n prop,\n filterFn,\n elementToBeCreated\n ) &&\n ((options.shouldForwardProp: any): ShouldForwardProp)(prop, filterFn, elementToBeCreated);\n } else {\n // eslint-disable-next-line prefer-destructuring\n shouldForwardProp = ((target: any): IStyledComponent).shouldForwardProp;\n }\n }\n\n const componentStyle = new ComponentStyle(\n rules,\n styledComponentId,\n isTargetStyledComp ? ((target: Object).componentStyle: ComponentStyle) : undefined\n );\n\n // statically styled-components don't need to build an execution context object,\n // and shouldn't be increasing the number of class names\n const isStatic = componentStyle.isStatic && attrs.length === 0;\n\n /**\n * forwardRef creates a new interim component, which we'll take advantage of\n * instead of extending ParentComponent to create _another_ interim class\n */\n let WrappedStyledComponent: IStyledComponent;\n\n const forwardRef = (props, ref) =>\n // eslint-disable-next-line\n useStyledComponentImpl(WrappedStyledComponent, props, ref, isStatic);\n\n forwardRef.displayName = displayName;\n\n WrappedStyledComponent = ((React.forwardRef(forwardRef): any): IStyledComponent);\n WrappedStyledComponent.attrs = finalAttrs;\n WrappedStyledComponent.componentStyle = componentStyle;\n WrappedStyledComponent.displayName = displayName;\n WrappedStyledComponent.shouldForwardProp = shouldForwardProp;\n\n // this static is used to preserve the cascade of static classes for component selector\n // purposes; this is especially important with usage of the css prop\n WrappedStyledComponent.foldedComponentIds = isTargetStyledComp\n ? Array.prototype.concat(\n ((target: any): IStyledComponent).foldedComponentIds,\n ((target: any): IStyledComponent).styledComponentId\n )\n : EMPTY_ARRAY;\n\n WrappedStyledComponent.styledComponentId = styledComponentId;\n\n // fold the underlying StyledComponent target up since we folded the styles\n WrappedStyledComponent.target = isTargetStyledComp\n ? ((target: any): IStyledComponent).target\n : target;\n\n WrappedStyledComponent.withComponent = function withComponent(tag: Target) {\n const { componentId: previousComponentId, ...optionsToCopy } = options;\n\n const newComponentId =\n previousComponentId &&\n `${previousComponentId}-${isTag(tag) ? tag : escape(getComponentName(tag))}`;\n\n const newOptions = {\n ...optionsToCopy,\n attrs: finalAttrs,\n componentId: newComponentId,\n };\n\n return createStyledComponent(tag, newOptions, rules);\n };\n\n Object.defineProperty(WrappedStyledComponent, 'defaultProps', {\n get() {\n return this._foldedDefaultProps;\n },\n\n set(obj) {\n this._foldedDefaultProps = isTargetStyledComp\n ? merge({}, ((target: any): IStyledComponent).defaultProps, obj)\n : obj;\n },\n });\n\n if (process.env.NODE_ENV !== 'production') {\n checkDynamicCreation(displayName, styledComponentId);\n\n WrappedStyledComponent.warnTooManyClasses = createWarnTooManyClasses(\n displayName,\n styledComponentId\n );\n }\n\n // If the Object prototype is frozen, the \"toString\" property is non-writable. This means that any objects which inherit this property\n // cannot have the property changed using an assignment. If using strict mode, attempting that will cause an error. If not using strict\n // mode, attempting that will be silently ignored.\n // However, we can still explicitly shadow the prototype's \"toString\" property by defining a new \"toString\" property on this object.\n Object.defineProperty(WrappedStyledComponent, 'toString', { value: () => `.${WrappedStyledComponent.styledComponentId}` });\n\n if (isCompositeComponent) {\n hoist<\n IStyledStatics,\n $PropertyType<IStyledComponent, 'target'>,\n { [key: $Keys<IStyledStatics>]: true }\n >(WrappedStyledComponent, ((target: any): $PropertyType<IStyledComponent, 'target'>), {\n // all SC-specific things should not be hoisted\n attrs: true,\n componentStyle: true,\n displayName: true,\n foldedComponentIds: true,\n shouldForwardProp: true,\n styledComponentId: true,\n target: true,\n withComponent: true,\n });\n }\n\n return WrappedStyledComponent;\n}\n","// @flow\nimport type { IStyledComponent } from '../types';\nimport getComponentName from './getComponentName';\nimport isTag from './isTag';\n\nexport default function generateDisplayName(\n target: $PropertyType<IStyledComponent, 'target'>\n): string {\n return isTag(target) ? `styled.${target}` : `Styled(${getComponentName(target)})`;\n}\n","/**\n * Convenience function for joining strings to form className chains\n */\nexport default function joinStrings(a: ?String, b: ?String): ?String {\n return a && b ? `${a} ${b}` : a || b;\n}\n","// @flow\n// Thanks to ReactDOMFactories for this handy list!\n\nexport default [\n 'a',\n 'abbr',\n 'address',\n 'area',\n 'article',\n 'aside',\n 'audio',\n 'b',\n 'base',\n 'bdi',\n 'bdo',\n 'big',\n 'blockquote',\n 'body',\n 'br',\n 'button',\n 'canvas',\n 'caption',\n 'cite',\n 'code',\n 'col',\n 'colgroup',\n 'data',\n 'datalist',\n 'dd',\n 'del',\n 'details',\n 'dfn',\n 'dialog',\n 'div',\n 'dl',\n 'dt',\n 'em',\n 'embed',\n 'fieldset',\n 'figcaption',\n 'figure',\n 'footer',\n 'form',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'head',\n 'header',\n 'hgroup',\n 'hr',\n 'html',\n 'i',\n 'iframe',\n 'img',\n 'input',\n 'ins',\n 'kbd',\n 'keygen',\n 'label',\n 'legend',\n 'li',\n 'link',\n 'main',\n 'map',\n 'mark',\n 'marquee',\n 'menu',\n 'menuitem',\n 'meta',\n 'meter',\n 'nav',\n 'noscript',\n 'object',\n 'ol',\n 'optgroup',\n 'option',\n 'output',\n 'p',\n 'param',\n 'picture',\n 'pre',\n 'progress',\n 'q',\n 'rp',\n 'rt',\n 'ruby',\n 's',\n 'samp',\n 'script',\n 'section',\n 'select',\n 'small',\n 'source',\n 'span',\n 'strong',\n 'style',\n 'sub',\n 'summary',\n 'sup',\n 'table',\n 'tbody',\n 'td',\n 'textarea',\n 'tfoot',\n 'th',\n 'thead',\n 'time',\n 'title',\n 'tr',\n 'track',\n 'u',\n 'ul',\n 'var',\n 'video',\n 'wbr',\n\n // SVG\n 'circle',\n 'clipPath',\n 'defs',\n 'ellipse',\n 'foreignObject',\n 'g',\n 'image',\n 'line',\n 'linearGradient',\n 'marker',\n 'mask',\n 'path',\n 'pattern',\n 'polygon',\n 'polyline',\n 'radialGradient',\n 'rect',\n 'stop',\n 'svg',\n 'text',\n 'textPath',\n 'tspan',\n];\n","// @flow\nimport constructWithOptions from './constructWithOptions';\nimport StyledComponent from '../models/StyledComponent';\nimport domElements from '../utils/domElements';\n\nimport type { Target } from '../types';\n\nconst styled = (tag: Target) => constructWithOptions(StyledComponent, tag);\n\n// Shorthands for all valid HTML Elements\ndomElements.forEach(domElement => {\n styled[domElement] = styled(domElement);\n});\n\nexport default styled;\n","// @flow\nimport { isValidElementType } from 'react-is';\nimport css from './css';\nimport throwStyledError from '../utils/error';\nimport { EMPTY_OBJECT } from '../utils/empties';\n\nimport type { Target } from '../types';\n\nexport default function constructWithOptions(\n componentConstructor: Function,\n tag: Target,\n options: Object = EMPTY_OBJECT\n) {\n if (!isValidElementType(tag)) {\n return throwStyledError(1, String(tag));\n }\n\n /* This is callable directly as a template function */\n // $FlowFixMe: Not typed to avoid destructuring arguments\n const templateFunction = (...args) => componentConstructor(tag, options, css(...args));\n\n /* If config methods are called, wrap up a new template function and merge options */\n templateFunction.withConfig = config =>\n constructWithOptions(componentConstructor, tag, { ...options, ...config });\n\n /* Modify/inject new props at runtime */\n templateFunction.attrs = attrs =>\n constructWithOptions(componentConstructor, tag, {\n ...options,\n attrs: Array.prototype.concat(options.attrs, attrs).filter(Boolean),\n });\n\n return templateFunction;\n}\n","// @flow\nimport StyleSheet from '../sheet';\nimport type { RuleSet, Stringifier } from '../types';\nimport flatten from '../utils/flatten';\nimport isStaticRules from '../utils/isStaticRules';\n\nexport default class GlobalStyle {\n componentId: string;\n\n isStatic: boolean;\n\n rules: RuleSet;\n\n constructor(rules: RuleSet, componentId: string) {\n this.rules = rules;\n this.componentId = componentId;\n this.isStatic = isStaticRules(rules);\n\n // pre-register the first instance to ensure global styles\n // load before component ones\n StyleSheet.registerId(this.componentId + 1);\n }\n\n createStyles(\n instance: number,\n executionContext: Object,\n styleSheet: StyleSheet,\n stylis: Stringifier\n ) {\n const flatCSS = flatten(this.rules, executionContext, styleSheet, stylis);\n const css = stylis(flatCSS.join(''), '');\n const id = this.componentId + instance;\n\n // NOTE: We use the id as a name as well, since these rules never change\n styleSheet.insertRules(id, id, css);\n }\n\n removeStyles(instance: number, styleSheet: StyleSheet) {\n styleSheet.clearRules(this.componentId + instance);\n }\n\n renderStyles(\n instance: number,\n executionContext: Object,\n styleSheet: StyleSheet,\n stylis: Stringifier\n ) {\n if (instance > 2) StyleSheet.registerId(this.componentId + instance);\n\n // NOTE: Remove old styles, then inject the new ones\n this.removeStyles(instance, styleSheet);\n this.createStyles(instance, executionContext, styleSheet, stylis);\n }\n}\n","// @flow\n/* eslint-disable no-underscore-dangle */\nimport React from 'react';\nimport { IS_BROWSER, SC_ATTR, SC_ATTR_VERSION, SC_VERSION } from '../constants';\nimport throwStyledError from '../utils/error';\nimport getNonce from '../utils/nonce';\nimport StyleSheet from '../sheet';\nimport StyleSheetManager from './StyleSheetManager';\n\ndeclare var __SERVER__: boolean;\n\nconst CLOSING_TAG_R = /^\\s*<\\/[a-z]/i;\n\nexport default class ServerStyleSheet {\n isStreaming: boolean;\n\n instance: StyleSheet;\n\n sealed: boolean;\n\n constructor() {\n this.instance = new StyleSheet({ isServer: true });\n this.sealed = false;\n }\n\n _emitSheetCSS = (): string => {\n const css = this.instance.toString();\n if (!css) return '';\n\n const nonce = getNonce();\n const attrs = [nonce && `nonce=\"${nonce}\"`, `${SC_ATTR}=\"true\"`, `${SC_ATTR_VERSION}=\"${SC_VERSION}\"`];\n const htmlAttr = attrs.filter(Boolean).join(' ');\n\n return `<style ${htmlAttr}>${css}</style>`;\n };\n\n collectStyles(children: any) {\n if (this.sealed) {\n return throwStyledError(2);\n }\n\n return <StyleSheetManager sheet={this.instance}>{children}</StyleSheetManager>;\n }\n\n getStyleTags = (): string => {\n if (this.sealed) {\n return throwStyledError(2);\n }\n\n return this._emitSheetCSS();\n };\n\n getStyleElement = () => {\n if (this.sealed) {\n return throwStyledError(2);\n }\n\n const props = {\n [SC_ATTR]: '',\n [SC_ATTR_VERSION]: SC_VERSION,\n dangerouslySetInnerHTML: {\n __html: this.instance.toString(),\n },\n };\n\n const nonce = getNonce();\n if (nonce) {\n (props: any).nonce = nonce;\n }\n\n // v4 returned an array for this fn, so we'll do the same for v5 for backward compat\n return [<style {...props} key=\"sc-0-0\" />];\n };\n\n // eslint-disable-next-line consistent-return\n interleaveWithNodeStream(input: any) {\n if (!__SERVER__ || IS_BROWSER) {\n return throwStyledError(3);\n } else if (this.sealed) {\n return throwStyledError(2);\n }\n\n if (__SERVER__) {\n this.seal();\n\n // eslint-disable-next-line global-require\n const { Readable, Transform } = require('stream');\n\n const readableStream: Readable = input;\n const { instance: sheet, _emitSheetCSS } = this;\n\n const transformer = new Transform({\n transform: function appendStyleChunks(chunk, /* encoding */ _, callback) {\n // Get the chunk and retrieve the sheet's CSS as an HTML chunk,\n // then reset its rules so we get only new ones for the next chunk\n const renderedHtml = chunk.toString();\n const html = _emitSheetCSS();\n\n sheet.clearTag();\n\n // prepend style html to chunk, unless the start of the chunk is a\n // closing tag in which case append right after that\n if (CLOSING_TAG_R.test(renderedHtml)) {\n const endOfClosingTag = renderedHtml.indexOf('>') + 1;\n const before = renderedHtml.slice(0, endOfClosingTag);\n const after = renderedHtml.slice(endOfClosingTag);\n\n this.push(before + html + after);\n } else {\n this.push(html + renderedHtml);\n }\n\n callback();\n },\n });\n\n readableStream.on('error', err => {\n // forward the error to the transform stream\n transformer.emit('error', err);\n });\n\n return readableStream.pipe(transformer);\n }\n }\n\n seal = () => {\n this.sealed = true;\n };\n}\n","// @flow\n/* Import singletons */\nimport isStyledComponent from './utils/isStyledComponent';\nimport css from './constructors/css';\nimport createGlobalStyle from './constructors/createGlobalStyle';\nimport keyframes from './constructors/keyframes';\nimport ServerStyleSheet from './models/ServerStyleSheet';\nimport { SC_VERSION } from './constants';\n\nimport StyleSheetManager, {\n StyleSheetContext,\n StyleSheetConsumer,\n} from './models/StyleSheetManager';\n\n/* Import components */\nimport ThemeProvider, { ThemeContext, ThemeConsumer } from './models/ThemeProvider';\n\n/* Import Higher Order Components */\nimport withTheme from './hoc/withTheme';\n\n/* Import hooks */\nimport useTheme from './hooks/useTheme';\n\ndeclare var __SERVER__: boolean;\n\n/* Warning if you've imported this file on React Native */\nif (\n process.env.NODE_ENV !== 'production' &&\n typeof navigator !== 'undefined' &&\n navigator.product === 'ReactNative'\n) {\n // eslint-disable-next-line no-console\n console.warn(\n \"It looks like you've imported 'styled-components' on React Native.\\n\" +\n \"Perhaps you're looking to import 'styled-components/native'?\\n\" +\n 'Read more about this at https://www.styled-components.com/docs/basics#react-native'\n );\n}\n\n/* Warning if there are several instances of styled-components */\nif (process.env.NODE_ENV !== 'production' && process.env.NODE_ENV !== 'test' && typeof window !== 'undefined') {\n window['__styled-components-init__'] = window['__styled-components-init__'] || 0;\n\n if (window['__styled-components-init__'] === 1) {\n // eslint-disable-next-line no-console\n console.warn(\n \"It looks like there are several instances of 'styled-components' initialized in this application. \" +\n 'This may cause dynamic styles to not render properly, errors during the rehydration process, ' +\n 'a missing theme prop, and makes your application bigger without good reason.\\n\\n' +\n 'See https://s-c.sh/2BAXzed for more info.'\n );\n }\n\n window['__styled-components-init__'] += 1;\n}\n\n/* Export everything */\nexport * from './secretInternals';\nexport {\n createGlobalStyle,\n css,\n isStyledComponent,\n keyframes,\n ServerStyleSheet,\n StyleSheetConsumer,\n StyleSheetContext,\n StyleSheetManager,\n ThemeConsumer,\n ThemeContext,\n ThemeProvider,\n useTheme,\n SC_VERSION as version,\n withTheme,\n};\n","function _extends() {\n return _extends = Object.assign ? Object.assign.bind() : function (n) {\n for (var e = 1; e < arguments.length; e++) {\n var t = arguments[e];\n for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);\n }\n return n;\n }, _extends.apply(null, arguments);\n}\nexport { _extends as default };","import * as React from 'react';\nimport { IRefObject, IRenderFunction } from '../../Utilities';\nimport { PersonaBase } from './Persona.base';\nimport { ImageLoadState } from '../../Image';\nimport { IStyle, ITheme } from '../../Styling';\nimport { IStyleFunctionOrObject } from '../../Utilities';\nimport { PersonaCoinBase } from './PersonaCoin/PersonaCoin.base';\n\n/**\n * {@docCategory Persona}\n */\nexport interface IPersona {}\n\n/**\n * {@docCategory Persona}\n */\nexport interface IPersonaSharedProps extends React.HTMLAttributes<PersonaBase | PersonaCoinBase | HTMLDivElement> {\n /**\n * Primary text to display, usually the name of the person.\n */\n text?: string;\n\n /**\n * Decides the size of the control.\n * @default PersonaSize.size48\n */\n size?: PersonaSize;\n\n /**\n * Optional custom renderer for the coin\n * @deprecated Use `onRenderPersonaCoin` for custom rendering instead\n */\n onRenderCoin?: IRenderFunction<IPersonaSharedProps>;\n\n /**\n * Optional custom renderer for the coin\n */\n onRenderPersonaCoin?: IRenderFunction<IPersonaSharedProps>;\n\n /**\n * If true, adds the css class 'is-fadeIn' to the image.\n */\n imageShouldFadeIn?: boolean;\n\n /**\n * If true, the image starts as visible and is hidden on error. Otherwise, the image is hidden until\n * it is successfully loaded. This disables imageShouldFadeIn.\n * @default false\n */\n imageShouldStartVisible?: boolean;\n\n /**\n * Url to the image to use, should be a square aspect ratio and big enough to fit in the image area.\n */\n imageUrl?: string;\n\n /**\n * Alt text for the image to use. Defaults to an empty string.\n */\n imageAlt?: string;\n\n /**\n * The user's initials to display in the image area when there is no image.\n * @default [Derived from text]\n */\n imageInitials?: string;\n\n /**\n * Whether initials are calculated for phone numbers and number sequences.\n * Example: Set property to true to get initials for project names consisting of numbers only.\n * @default false\n */\n allowPhoneInitials?: boolean;\n\n /**\n * Optional custom renderer for the initials\n */\n onRenderInitials?: IRenderFunction<IPersonaSharedProps>;\n\n /**\n * Optional callback for when loading state of the photo changes\n */\n onPhotoLoadingStateChange?: (newImageLoadState: ImageLoadState) => void;\n\n /**\n * The background color when the user's initials are displayed.\n * @default [Derived from text]\n */\n initialsColor?: PersonaInitialsColor | string;\n\n /**\n * The text color when the user's initials are displayed\n */\n initialsTextColor?: string;\n\n /** The colors to be used for the presence-icon and it's background */\n presenceColors?: {\n available: string;\n away: string;\n busy: string;\n dnd: string;\n offline: string;\n oof: string;\n background: string;\n };\n\n /**\n * Presence of the person to display - will not display presence if undefined.\n * @default PersonaPresence.none\n */\n presence?: PersonaPresence;\n\n /**\n * Presence title to be shown as a tooltip on hover over the presence icon.\n */\n presenceTitle?: string;\n\n /**\n * This flag can be used to signal the persona is out of office.\n * This will change the way the presence icon looks for statuses that support dual-presence.\n */\n isOutOfOffice?: boolean;\n\n /**\n * Secondary text to display, usually the role of the user.\n */\n secondaryText?: string;\n\n /**\n * Tertiary text to display, usually the status of the user.\n * The tertiary text will only be shown when using size72 or size100.\n */\n tertiaryText?: string;\n\n /**\n * Optional text to display, usually a custom message set. The optional text will only be shown when using size100.\n */\n optionalText?: string;\n\n /**\n * Whether to not render persona details, and just render the persona image/initials.\n */\n hidePersonaDetails?: boolean;\n\n /*\n * If true, show the secondary text line regardless of the size of the persona\n */\n showSecondaryText?: boolean;\n\n /**\n * If true, show the special coin for unknown persona.\n * It has '?' in place of initials, with static font and background colors\n */\n showUnknownPersonaCoin?: boolean;\n\n /**\n * If true renders the initials while the image is loading.\n * This only applies when an imageUrl is provided.\n * @default false\n */\n showInitialsUntilImageLoads?: boolean;\n\n /**\n * Optional custom persona coin size in pixel.\n */\n coinSize?: number;\n\n /**\n * Optional HTML element props for Persona coin.\n */\n coinProps?: IPersonaCoinProps;\n\n /**\n * Theme provided by High-Order Component.\n */\n theme?: ITheme;\n\n /**\n * Primary text to display, usually the name of the person.\n * @deprecated Use `text` instead.\n */\n primaryText?: string;\n\n /**\n * Controls whether clipped overflow text should render in a tooltip.\n * @default true\n */\n showOverflowTooltip?: boolean;\n}\n\n/**\n * {@docCategory Persona}\n */\nexport interface IPersonaProps extends IPersonaSharedProps {\n /**\n * Optional callback to access the IPersona interface. Use this instead of ref for accessing\n * the public methods and properties of the component.\n */\n componentRef?: IRefObject<IPersona>;\n\n /**\n * Additional CSS class(es) to apply to the Persona\n */\n className?: string;\n\n /**\n * Call to provide customized styling that will layer on top of variant rules\n */\n styles?: IStyleFunctionOrObject<IPersonaStyleProps, IPersonaStyles>;\n\n /**\n * Optional custom renderer for the primary text.\n */\n onRenderPrimaryText?: IRenderFunction<IPersonaProps>;\n\n /**\n * Optional custom renderer for the secondary text.\n */\n onRenderSecondaryText?: IRenderFunction<IPersonaProps>;\n\n /**\n * Optional custom renderer for the tertiary text.\n */\n onRenderTertiaryText?: IRenderFunction<IPersonaProps>;\n\n /**\n * Optional custom renderer for the optional text.\n */\n onRenderOptionalText?: IRenderFunction<IPersonaProps>;\n}\n\n/**\n * {@docCategory Persona}\n */\nexport interface IPersonaStyleProps {\n /**\n * Theme provided by High-Order Component.\n */\n theme: ITheme;\n\n /**\n * Custom class name.\n */\n className?: string;\n\n /**\n * Optional custom persona coin size in pixel.\n */\n coinSize?: number;\n\n /**\n * Decides the size of the control.\n * @default PersonaSize.size48\n */\n size?: PersonaSize;\n\n /**\n * Presence of the person to display - will not display presence if undefined.\n * @default PersonaPresence.none\n */\n presence?: PersonaPresence;\n\n /*\n * If true, show the secondary text line regardless of the size of the persona\n */\n showSecondaryText?: boolean;\n}\n\n/**\n * {@docCategory Persona}\n */\nexport interface IPersonaStyles {\n root: IStyle;\n details: IStyle;\n primaryText: IStyle;\n secondaryText: IStyle;\n tertiaryText: IStyle;\n optionalText: IStyle;\n textContent: IStyle;\n}\n\n/**\n * {@docCategory Persona}\n */\nexport interface IPersonaCoinProps extends IPersonaSharedProps {\n /**\n * Gets the component ref.\n */\n componentRef?: IRefObject<{}>;\n\n /**\n * Call to provide customized styling that will layer on top of the variant rules\n */\n styles?: IStyleFunctionOrObject<IPersonaCoinStyleProps, IPersonaCoinStyles>;\n\n /**\n * Additional css class to apply to the PersonaCoin\n * @default undefined\n */\n className?: string;\n}\n\n/**\n * {@docCategory Persona}\n */\nexport interface IPersonaCoinStyleProps {\n /**\n * Theme provided by High-Order Component.\n */\n theme: ITheme;\n\n /**\n * Custom class name.\n */\n className?: string;\n\n /**\n * Decides the size of the control.\n * @default PersonaSize.size48\n */\n size?: PersonaSize;\n\n /**\n * Optional custom persona coin size in pixel.\n */\n coinSize?: number;\n\n /**\n * Decides whether to display coin for unknown persona\n */\n showUnknownPersonaCoin?: boolean;\n}\n\n/**\n * {@docCategory Persona}\n */\nexport interface IPersonaCoinStyles {\n coin: IStyle;\n imageArea: IStyle;\n image: IStyle;\n initials: IStyle;\n size10WithoutPresenceIcon: IStyle;\n}\n\n/**\n * {@docCategory Persona}\n */\nexport interface IPersonaPresenceProps extends IPersonaSharedProps {\n /**\n * Gets the component ref.\n */\n componentRef?: IRefObject<{}>;\n\n /**\n * Call to provide customized styling that will layer on top of the variant rules\n */\n styles?: IStyleFunctionOrObject<IPersonaPresenceStyleProps, IPersonaPresenceStyles>;\n}\n\n/**\n * {@docCategory Persona}\n */\nexport type IPersonaPresenceStyleProps = Required<Pick<IPersonaSharedProps, 'theme'>> &\n Pick<IPersonaSharedProps, 'presence' | 'isOutOfOffice' | 'size' | 'presenceColors'> &\n Pick<IPersonaProps, 'className'>;\n\n/**\n * {@docCategory Persona}\n */\nexport interface IPersonaPresenceStyles {\n presence: IStyle;\n presenceIcon: IStyle;\n}\n\n/**\n * {@docCategory Persona}\n */\nexport enum PersonaSize {\n /**\n * `tiny` size has been deprecated in favor of standardized numeric sizing. Use `size8` instead.\n * @deprecated Use `size8` instead.\n */\n tiny = 0,\n\n /**\n *\n * `extraExtraSmall` size has been deprecated in favor of standardized numeric sizing. Use `size24` instead.\n * @deprecated Use `size24` instead.\n */\n extraExtraSmall = 1,\n\n /**\n * `extraSmall` size has been deprecated in favor of standardized numeric sizing. Use `size32` instead.\n * @deprecated Use `size32` instead.\n */\n extraSmall = 2,\n\n /**\n * `small` size has been deprecated in favor of standardized numeric sizing. Use `size40` instead.\n * @deprecated Use `size40` instead.\n */\n small = 3,\n\n /**\n * `regular` size has been deprecated in favor of standardized numeric sizing. Use `size48` instead.\n * @deprecated Use `size48` instead.\n */\n regular = 4,\n\n /**\n * `large` size has been deprecated in favor of standardized numeric sizing. Use `size72` instead.\n * @deprecated Use `size72` instead.\n */\n large = 5,\n\n /**\n * `extraLarge` size has been deprecated in favor of standardized numeric sizing. Use `size100` instead.\n * @deprecated Use `size100` instead.\n */\n extraLarge = 6,\n\n /**\n * No `PersonaCoin` is rendered.\n */\n size8 = 17,\n\n /**\n * No `PersonaCoin` is rendered. Deprecated in favor of `size8` to align with design specifications.\n * @deprecated Use `size8` instead. Will be removed in a future major release.\n */\n size10 = 9,\n\n /**\n * Renders a 16px `PersonaCoin`. Deprecated due to not being in the design specification.\n * @deprecated Will be removed in a future major release.\n */\n size16 = 8,\n\n /**\n * Renders a 24px `PersonaCoin`.\n */\n size24 = 10,\n\n /**\n * Renders a 28px `PersonaCoin`. Deprecated due to not being in the design specification.\n * @deprecated Will be removed in a future major release.\n */\n size28 = 7,\n\n /**\n * Renders a 32px `PersonaCoin`.\n */\n size32 = 11,\n\n /**\n * Renders a 40px `PersonaCoin`.\n */\n size40 = 12,\n\n /**\n * Renders a 48px `PersonaCoin`.\n */\n size48 = 13,\n\n /**\n * Renders a 56px `PersonaCoin`.\n */\n size56 = 16,\n\n /**\n * Renders a 72px `PersonaCoin`.\n */\n size72 = 14,\n\n /**\n * Renders a 100px `PersonaCoin`.\n */\n size100 = 15,\n\n /**\n * Renders a 120px `PersonaCoin`.\n */\n size120 = 18,\n}\n\n/**\n * {@docCategory Persona}\n */\nexport enum PersonaPresence {\n none = 0,\n offline = 1,\n online = 2,\n away = 3,\n dnd = 4,\n blocked = 5,\n busy = 6,\n}\n\n/**\n * {@docCategory Persona}\n */\nexport enum PersonaInitialsColor {\n lightBlue = 0,\n blue = 1,\n darkBlue = 2,\n teal = 3,\n lightGreen = 4,\n green = 5,\n darkGreen = 6,\n lightPink = 7,\n pink = 8,\n magenta = 9,\n purple = 10,\n /**\n * Black can result in offensive persona coins with some initials combinations, so it can only be set with overrides.\n * @deprecated will be removed in a future major release.\n */\n black = 11,\n orange = 12,\n /**\n * Red often has a special meaning, so it is considered a reserved color and can only be set with overrides.\n * @deprecated will be removed in a future major release.\n */\n red = 13,\n darkRed = 14,\n /**\n * Transparent is not intended to be used with typical initials due to accessibility issues.\n * Its primary use is for overflow buttons, so it is considered a reserved color and can only be set with overrides.\n */\n transparent = 15,\n violet = 16,\n lightRed = 17,\n gold = 18,\n burgundy = 19,\n warmGray = 20,\n coolGray = 21,\n /**\n * Gray can result in offensive persona coins with some initials combinations, so it can only be set with overrides.\n */\n gray = 22,\n cyan = 23,\n rust = 24,\n}\n","import _objectSpread from '@babel/runtime/helpers/esm/objectSpread2';\n\n/**\n * Adapted from React: https://github.com/facebook/react/blob/master/packages/shared/formatProdErrorMessage.js\n *\n * Do not require this module directly! Use normal throw error calls. These messages will be replaced with error codes\n * during build.\n * @param {number} code\n */\nfunction formatProdErrorMessage(code) {\n return \"Minified Redux error #\" + code + \"; visit https://redux.js.org/Errors?code=\" + code + \" for the full message or \" + 'use the non-minified dev environment for full errors. ';\n}\n\n// Inlined version of the `symbol-observable` polyfill\nvar $$observable = (function () {\n return typeof Symbol === 'function' && Symbol.observable || '@@observable';\n})();\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 */\nvar randomString = function randomString() {\n return Math.random().toString(36).substring(7).split('').join('.');\n};\n\nvar ActionTypes = {\n INIT: \"@@redux/INIT\" + randomString(),\n REPLACE: \"@@redux/REPLACE\" + randomString(),\n PROBE_UNKNOWN_ACTION: function PROBE_UNKNOWN_ACTION() {\n return \"@@redux/PROBE_UNKNOWN_ACTION\" + randomString();\n }\n};\n\n/**\n * @param {any} obj The object to inspect.\n * @returns {boolean} True if the argument appears to be a plain object.\n */\nfunction isPlainObject(obj) {\n if (typeof obj !== 'object' || obj === null) return false;\n var proto = obj;\n\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n\n return Object.getPrototypeOf(obj) === proto;\n}\n\n// Inlined / shortened version of `kindOf` from https://github.com/jonschlinkert/kind-of\nfunction miniKindOf(val) {\n if (val === void 0) return 'undefined';\n if (val === null) return 'null';\n var type = typeof val;\n\n switch (type) {\n case 'boolean':\n case 'string':\n case 'number':\n case 'symbol':\n case 'function':\n {\n return type;\n }\n }\n\n if (Array.isArray(val)) return 'array';\n if (isDate(val)) return 'date';\n if (isError(val)) return 'error';\n var constructorName = ctorName(val);\n\n switch (constructorName) {\n case 'Symbol':\n case 'Promise':\n case 'WeakMap':\n case 'WeakSet':\n case 'Map':\n case 'Set':\n return constructorName;\n } // other\n\n\n return type.slice(8, -1).toLowerCase().replace(/\\s/g, '');\n}\n\nfunction ctorName(val) {\n return typeof val.constructor === 'function' ? val.constructor.name : null;\n}\n\nfunction isError(val) {\n return val instanceof Error || typeof val.message === 'string' && val.constructor && typeof val.constructor.stackTraceLimit === 'number';\n}\n\nfunction isDate(val) {\n if (val instanceof Date) return true;\n return typeof val.toDateString === 'function' && typeof val.getDate === 'function' && typeof val.setDate === 'function';\n}\n\nfunction kindOf(val) {\n var typeOfVal = typeof val;\n\n if (process.env.NODE_ENV !== 'production') {\n typeOfVal = miniKindOf(val);\n }\n\n return typeOfVal;\n}\n\n/**\n * @deprecated\n *\n * **We recommend using the `configureStore` method\n * of the `@reduxjs/toolkit` package**, which replaces `createStore`.\n *\n * Redux Toolkit is our recommended approach for writing Redux logic today,\n * including store setup, reducers, data fetching, and more.\n *\n * **For more details, please read this Redux docs page:**\n * **https://redux.js.org/introduction/why-rtk-is-redux-today**\n *\n * `configureStore` from Redux Toolkit is an improved version of `createStore` that\n * simplifies setup and helps avoid common bugs.\n *\n * You should not be using the `redux` core package by itself today, except for learning purposes.\n * The `createStore` method from the core `redux` package will not be removed, but we encourage\n * all users to migrate to using Redux Toolkit for all Redux code.\n *\n * If you want to use `createStore` without this visual deprecation warning, use\n * the `legacy_createStore` import instead:\n *\n * `import { legacy_createStore as createStore} from 'redux'`\n *\n */\n\nfunction createStore(reducer, preloadedState, enhancer) {\n var _ref2;\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'function' || typeof enhancer === 'function' && typeof arguments[3] === 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(0) : 'It looks like you are passing several store enhancers to ' + 'createStore(). This is not supported. Instead, compose them ' + 'together to a single function. See https://redux.js.org/tutorials/fundamentals/part-4-store#creating-a-store-with-enhancers for an example.');\n }\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(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(1) : \"Expected the enhancer to be a function. Instead, received: '\" + kindOf(enhancer) + \"'\");\n }\n\n return enhancer(createStore)(reducer, preloadedState);\n }\n\n if (typeof reducer !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(2) : \"Expected the root reducer to be a function. Instead, received: '\" + kindOf(reducer) + \"'\");\n }\n\n var currentReducer = reducer;\n var currentState = preloadedState;\n var currentListeners = [];\n var nextListeners = currentListeners;\n var isDispatching = false;\n /**\n * This makes a shallow copy of currentListeners so we can use\n * nextListeners as a temporary list while dispatching.\n *\n * This prevents any bugs around consumers calling\n * subscribe/unsubscribe in the middle of a dispatch.\n */\n\n function ensureCanMutateNextListeners() {\n if (nextListeners === currentListeners) {\n nextListeners = currentListeners.slice();\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\n\n function getState() {\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(3) : 'You may not call store.getState() while the reducer is executing. ' + 'The reducer has already received the state as an argument. ' + 'Pass it down from the top reducer instead of reading it from the store.');\n }\n\n return currentState;\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\n\n function subscribe(listener) {\n if (typeof listener !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(4) : \"Expected the listener to be a function. Instead, received: '\" + kindOf(listener) + \"'\");\n }\n\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(5) : 'You may not call store.subscribe() while the reducer is executing. ' + 'If you would like to be notified after the store has been updated, subscribe from a ' + 'component and invoke store.getState() in the callback to access the latest state. ' + 'See https://redux.js.org/api/store#subscribelistener for more details.');\n }\n\n var isSubscribed = true;\n ensureCanMutateNextListeners();\n nextListeners.push(listener);\n return function unsubscribe() {\n if (!isSubscribed) {\n return;\n }\n\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(6) : 'You may not unsubscribe from a store listener while the reducer is executing. ' + 'See https://redux.js.org/api/store#subscribelistener for more details.');\n }\n\n isSubscribed = false;\n ensureCanMutateNextListeners();\n var index = nextListeners.indexOf(listener);\n nextListeners.splice(index, 1);\n currentListeners = null;\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\n\n function dispatch(action) {\n if (!isPlainObject(action)) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(7) : \"Actions must be plain objects. Instead, the actual type was: '\" + kindOf(action) + \"'. You may need to add middleware to your store setup to handle dispatching other values, such as 'redux-thunk' to handle dispatching functions. See https://redux.js.org/tutorials/fundamentals/part-4-store#middleware and https://redux.js.org/tutorials/fundamentals/part-6-async-logic#using-the-redux-thunk-middleware for examples.\");\n }\n\n if (typeof action.type === 'undefined') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(8) : 'Actions may not have an undefined \"type\" property. You may have misspelled an action type string constant.');\n }\n\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(9) : '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\n for (var i = 0; i < listeners.length; i++) {\n var listener = listeners[i];\n listener();\n }\n\n return action;\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\n\n function replaceReducer(nextReducer) {\n if (typeof nextReducer !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(10) : \"Expected the nextReducer to be a function. Instead, received: '\" + kindOf(nextReducer));\n }\n\n currentReducer = nextReducer; // This action has a similiar effect to ActionTypes.INIT.\n // Any reducers that existed in both the new and old rootReducer\n // will receive the previous state. This effectively populates\n // the new state tree with any relevant data from the old one.\n\n dispatch({\n type: ActionTypes.REPLACE\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\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' || observer === null) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(11) : \"Expected the observer to be an object. Instead, received: '\" + kindOf(observer) + \"'\");\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 {\n unsubscribe: unsubscribe\n };\n }\n }, _ref[$$observable] = function () {\n return this;\n }, _ref;\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\n\n dispatch({\n 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}\n/**\n * Creates a Redux store that holds the state tree.\n *\n * **We recommend using `configureStore` from the\n * `@reduxjs/toolkit` package**, which replaces `createStore`:\n * **https://redux.js.org/introduction/why-rtk-is-redux-today**\n *\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\nvar legacy_createStore = createStore;\n\n/**\n * Prints a warning in the console if it exists.\n *\n * @param {String} message The warning message.\n * @returns {void}\n */\nfunction warning(message) {\n /* eslint-disable no-console */\n if (typeof console !== 'undefined' && typeof console.error === 'function') {\n console.error(message);\n }\n /* eslint-enable no-console */\n\n\n try {\n // This error was thrown as a convenience so that if you enable\n // \"break on all exceptions\" in your console,\n // it would pause the execution at this line.\n throw new Error(message);\n } catch (e) {} // eslint-disable-line no-empty\n\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 \\\"\" + kindOf(inputState) + \"\\\". 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 unexpectedKeys.forEach(function (key) {\n unexpectedKeyCache[key] = true;\n });\n if (action && action.type === ActionTypes.REPLACE) return;\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, {\n type: ActionTypes.INIT\n });\n\n if (typeof initialState === 'undefined') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(12) : \"The slice reducer for key \\\"\" + 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 if (typeof reducer(undefined, {\n type: ActionTypes.PROBE_UNKNOWN_ACTION()\n }) === 'undefined') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(13) : \"The slice reducer for key \\\"\" + 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 * 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 */\n\n\nfunction combineReducers(reducers) {\n var reducerKeys = Object.keys(reducers);\n var finalReducers = {};\n\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\n var finalReducerKeys = Object.keys(finalReducers); // This is used to make sure we don't warn about the same\n // keys multiple times.\n\n var unexpectedKeyCache;\n\n if (process.env.NODE_ENV !== 'production') {\n unexpectedKeyCache = {};\n }\n\n var shapeAssertionError;\n\n try {\n assertReducerShape(finalReducers);\n } catch (e) {\n shapeAssertionError = e;\n }\n\n return function combination(state, action) {\n if (state === void 0) {\n state = {};\n }\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\n if (warningMessage) {\n warning(warningMessage);\n }\n }\n\n var hasChanged = false;\n var nextState = {};\n\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\n if (typeof nextStateForKey === 'undefined') {\n var actionType = action && action.type;\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(14) : \"When called with an action of type \" + (actionType ? \"\\\"\" + String(actionType) + \"\\\"\" : '(unknown type)') + \", the slice reducer for key \\\"\" + _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\n nextState[_key] = nextStateForKey;\n hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n }\n\n hasChanged = hasChanged || finalReducerKeys.length !== Object.keys(state).length;\n return hasChanged ? nextState : state;\n };\n}\n\nfunction bindActionCreator(actionCreator, dispatch) {\n return function () {\n return dispatch(actionCreator.apply(this, arguments));\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 an action creator as the first argument,\n * and get a dispatch wrapped 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 */\n\n\nfunction 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(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(16) : \"bindActionCreators expected an object or a function, but instead received: '\" + kindOf(actionCreators) + \"'. \" + \"Did you write \\\"import ActionCreators from\\\" instead of \\\"import * as ActionCreators from\\\"?\");\n }\n\n var boundActionCreators = {};\n\n for (var key in actionCreators) {\n var actionCreator = actionCreators[key];\n\n if (typeof actionCreator === 'function') {\n boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);\n }\n }\n\n return boundActionCreators;\n}\n\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 */\nfunction compose() {\n for (var _len = arguments.length, funcs = new 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(void 0, arguments));\n };\n });\n}\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 */\n\nfunction applyMiddleware() {\n for (var _len = arguments.length, middlewares = new Array(_len), _key = 0; _key < _len; _key++) {\n middlewares[_key] = arguments[_key];\n }\n\n return function (createStore) {\n return function () {\n var store = createStore.apply(void 0, arguments);\n\n var _dispatch = function dispatch() {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(15) : 'Dispatching while constructing your middleware is not allowed. ' + 'Other middleware would not be applied to this dispatch.');\n };\n\n var middlewareAPI = {\n getState: store.getState,\n dispatch: function dispatch() {\n return _dispatch.apply(void 0, arguments);\n }\n };\n var chain = middlewares.map(function (middleware) {\n return middleware(middlewareAPI);\n });\n _dispatch = compose.apply(void 0, chain)(store.dispatch);\n return _objectSpread(_objectSpread({}, store), {}, {\n dispatch: _dispatch\n });\n };\n };\n}\n\nexport { ActionTypes as __DO_NOT_USE__ActionTypes, applyMiddleware, bindActionCreators, combineReducers, compose, createStore, legacy_createStore };\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = assertString;\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction assertString(input) {\n var isString = typeof input === 'string' || input instanceof String;\n if (!isString) {\n var invalidType = _typeof(input);\n if (input === null) invalidType = 'null';else if (invalidType === 'object') invalidType = input.constructor.name;\n throw new TypeError(\"Expected a string but received a \".concat(invalidType));\n }\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nvar identity = function identity(i) {\n return i;\n};\n\nexport var PLACE_HOLDER = {\n '@@functional/placeholder': true\n};\n\nvar isPlaceHolder = function isPlaceHolder(val) {\n return val === PLACE_HOLDER;\n};\n\nvar curry0 = function curry0(fn) {\n return function _curried() {\n if (arguments.length === 0 || arguments.length === 1 && isPlaceHolder(arguments.length <= 0 ? undefined : arguments[0])) {\n return _curried;\n }\n\n return fn.apply(void 0, arguments);\n };\n};\n\nvar curryN = function curryN(n, fn) {\n if (n === 1) {\n return fn;\n }\n\n return curry0(function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var argsLength = args.filter(function (arg) {\n return arg !== PLACE_HOLDER;\n }).length;\n\n if (argsLength >= n) {\n return fn.apply(void 0, args);\n }\n\n return curryN(n - argsLength, curry0(function () {\n for (var _len2 = arguments.length, restArgs = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n restArgs[_key2] = arguments[_key2];\n }\n\n var newArgs = args.map(function (arg) {\n return isPlaceHolder(arg) ? restArgs.shift() : arg;\n });\n return fn.apply(void 0, _toConsumableArray(newArgs).concat(restArgs));\n }));\n });\n};\n\nexport var curry = function curry(fn) {\n return curryN(fn.length, fn);\n};\nexport var range = function range(begin, end) {\n var arr = [];\n\n for (var i = begin; i < end; ++i) {\n arr[i - begin] = i;\n }\n\n return arr;\n};\nexport var map = curry(function (fn, arr) {\n if (Array.isArray(arr)) {\n return arr.map(fn);\n }\n\n return Object.keys(arr).map(function (key) {\n return arr[key];\n }).map(fn);\n});\nexport var compose = function compose() {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n\n if (!args.length) {\n return identity;\n }\n\n var fns = args.reverse(); // first function can receive multiply arguments\n\n var firstFn = fns[0];\n var tailsFn = fns.slice(1);\n return function () {\n return tailsFn.reduce(function (res, fn) {\n return fn(res);\n }, firstFn.apply(void 0, arguments));\n };\n};\nexport var reverse = function reverse(arr) {\n if (Array.isArray(arr)) {\n return arr.reverse();\n } // can be string\n\n\n return arr.split('').reverse.join('');\n};\nexport var memoize = function memoize(fn) {\n var lastArgs = null;\n var lastResult = null;\n return function () {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n\n if (lastArgs && args.every(function (val, i) {\n return val === lastArgs[i];\n })) {\n return lastResult;\n }\n\n lastArgs = args;\n lastResult = fn.apply(void 0, args);\n return lastResult;\n };\n};","/**\n * @fileOverview 一些公用的è¿ç®—方法\n * @author xile611\n * @date 2015-09-17\n */\nimport Decimal from 'decimal.js-light';\nimport { curry } from './utils';\n/**\n * èŽ·å–æ•°å€¼çš„使•°\n * å…¶ä¸ç»å¯¹å€¼å±žäºŽåŒºé—´[0.1, 1), 得到的值为0\n * ç»å¯¹å€¼å±žäºŽåŒºé—´[0.01, 0.1)ï¼Œå¾—åˆ°çš„ä½æ•°ä¸º -1\n * ç»å¯¹å€¼å±žäºŽåŒºé—´[0.001, 0.01)ï¼Œå¾—åˆ°çš„ä½æ•°ä¸º -2\n *\n * @param {Number} value 数值\n * @return {Integer} 使•°\n */\n\nfunction getDigitCount(value) {\n var result;\n\n if (value === 0) {\n result = 1;\n } else {\n result = Math.floor(new Decimal(value).abs().log(10).toNumber()) + 1;\n }\n\n return result;\n}\n/**\n * 按照固定的æ¥é•¿èŽ·å–[start, end)这个区间的数æ®\n * 并且需è¦å¤„ç†js计算精度的问题\n *\n * @param {Decimal} start 起点\n * @param {Decimal} end 终点,ä¸åŒ…å«è¯¥å€¼\n * @param {Decimal} step æ¥é•¿\n * @return {Array} 若干数值\n */\n\n\nfunction rangeStep(start, end, step) {\n var num = new Decimal(start);\n var i = 0;\n var result = []; // magic number to prevent infinite loop\n\n while (num.lt(end) && i < 100000) {\n result.push(num.toNumber());\n num = num.add(step);\n i++;\n }\n\n return result;\n}\n/**\n * 对数值进行线性æ’值\n *\n * @param {Number} a 定义域的æžç‚¹\n * @param {Number} b 定义域的æžç‚¹\n * @param {Number} t [0, 1]内的æŸä¸ªå€¼\n * @return {Number} 定义域内的æŸä¸ªå€¼\n */\n\n\nvar interpolateNumber = curry(function (a, b, t) {\n var newA = +a;\n var newB = +b;\n return newA + t * (newB - newA);\n});\n/**\n * 线性æ’值的逆è¿ç®—\n *\n * @param {Number} a 定义域的æžç‚¹\n * @param {Number} b 定义域的æžç‚¹\n * @param {Number} x å¯ä»¥è®¤ä¸ºæ˜¯æ’值åŽçš„一个输出值\n * @return {Number} 当x在 a ~ b这个范围内时,返回值属于[0, 1]\n */\n\nvar uninterpolateNumber = curry(function (a, b, x) {\n var diff = b - +a;\n diff = diff || Infinity;\n return (x - a) / diff;\n});\n/**\n * 线性æ’值的逆è¿ç®—,并且有截æ–çš„æ“作\n *\n * @param {Number} a 定义域的æžç‚¹\n * @param {Number} b 定义域的æžç‚¹\n * @param {Number} x å¯ä»¥è®¤ä¸ºæ˜¯æ’值åŽçš„一个输出值\n * @return {Number} 当x在 a ~ b这个区间内时,返回值属于[0, 1],\n * 当xä¸åœ¨ a ~ b这个区间时,会截æ–到 a ~ b 这个区间\n */\n\nvar uninterpolateTruncation = curry(function (a, b, x) {\n var diff = b - +a;\n diff = diff || Infinity;\n return Math.max(0, Math.min(1, (x - a) / diff));\n});\nexport default {\n rangeStep: rangeStep,\n getDigitCount: getDigitCount,\n interpolateNumber: interpolateNumber,\n uninterpolateNumber: uninterpolateNumber,\n uninterpolateTruncation: uninterpolateTruncation\n};","function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; 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\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n/**\n * @fileOverview calculate tick values of scale\n * @author xile611, arcthur\n * @date 2015-09-17\n */\nimport Decimal from 'decimal.js-light';\nimport { compose, range, memoize, map, reverse } from './util/utils';\nimport Arithmetic from './util/arithmetic';\n/**\n * Calculate a interval of a minimum value and a maximum value\n *\n * @param {Number} min The minimum value\n * @param {Number} max The maximum value\n * @return {Array} An interval\n */\n\nfunction getValidInterval(_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n min = _ref2[0],\n max = _ref2[1];\n\n var validMin = min,\n validMax = max; // exchange\n\n if (min > max) {\n validMin = max;\n validMax = min;\n }\n\n return [validMin, validMax];\n}\n/**\n * Calculate the step which is easy to understand between ticks, like 10, 20, 25\n *\n * @param {Decimal} roughStep The rough step calculated by deviding the\n * difference by the tickCount\n * @param {Boolean} allowDecimals Allow the ticks to be decimals or not\n * @param {Integer} correctionFactor A correction factor\n * @return {Decimal} The step which is easy to understand between two ticks\n */\n\n\nfunction getFormatStep(roughStep, allowDecimals, correctionFactor) {\n if (roughStep.lte(0)) {\n return new Decimal(0);\n }\n\n var digitCount = Arithmetic.getDigitCount(roughStep.toNumber()); // The ratio between the rough step and the smallest number which has a bigger\n // order of magnitudes than the rough step\n\n var digitCountValue = new Decimal(10).pow(digitCount);\n var stepRatio = roughStep.div(digitCountValue); // When an integer and a float multiplied, the accuracy of result may be wrong\n\n var stepRatioScale = digitCount !== 1 ? 0.05 : 0.1;\n var amendStepRatio = new Decimal(Math.ceil(stepRatio.div(stepRatioScale).toNumber())).add(correctionFactor).mul(stepRatioScale);\n var formatStep = amendStepRatio.mul(digitCountValue);\n return allowDecimals ? formatStep : new Decimal(Math.ceil(formatStep));\n}\n/**\n * calculate the ticks when the minimum value equals to the maximum value\n *\n * @param {Number} value The minimum valuue which is also the maximum value\n * @param {Integer} tickCount The count of ticks\n * @param {Boolean} allowDecimals Allow the ticks to be decimals or not\n * @return {Array} ticks\n */\n\n\nfunction getTickOfSingleValue(value, tickCount, allowDecimals) {\n var step = 1; // calculate the middle value of ticks\n\n var middle = new Decimal(value);\n\n if (!middle.isint() && allowDecimals) {\n var absVal = Math.abs(value);\n\n if (absVal < 1) {\n // The step should be a float number when the difference is smaller than 1\n step = new Decimal(10).pow(Arithmetic.getDigitCount(value) - 1);\n middle = new Decimal(Math.floor(middle.div(step).toNumber())).mul(step);\n } else if (absVal > 1) {\n // Return the maximum integer which is smaller than 'value' when 'value' is greater than 1\n middle = new Decimal(Math.floor(value));\n }\n } else if (value === 0) {\n middle = new Decimal(Math.floor((tickCount - 1) / 2));\n } else if (!allowDecimals) {\n middle = new Decimal(Math.floor(value));\n }\n\n var middleIndex = Math.floor((tickCount - 1) / 2);\n var fn = compose(map(function (n) {\n return middle.add(new Decimal(n - middleIndex).mul(step)).toNumber();\n }), range);\n return fn(0, tickCount);\n}\n/**\n * Calculate the step\n *\n * @param {Number} min The minimum value of an interval\n * @param {Number} max The maximum value of an interval\n * @param {Integer} tickCount The count of ticks\n * @param {Boolean} allowDecimals Allow the ticks to be decimals or not\n * @param {Number} correctionFactor A correction factor\n * @return {Object} The step, minimum value of ticks, maximum value of ticks\n */\n\n\nfunction calculateStep(min, max, tickCount, allowDecimals) {\n var correctionFactor = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0;\n\n // dirty hack (for recharts' test)\n if (!Number.isFinite((max - min) / (tickCount - 1))) {\n return {\n step: new Decimal(0),\n tickMin: new Decimal(0),\n tickMax: new Decimal(0)\n };\n } // The step which is easy to understand between two ticks\n\n\n var step = getFormatStep(new Decimal(max).sub(min).div(tickCount - 1), allowDecimals, correctionFactor); // A medial value of ticks\n\n var middle; // When 0 is inside the interval, 0 should be a tick\n\n if (min <= 0 && max >= 0) {\n middle = new Decimal(0);\n } else {\n // calculate the middle value\n middle = new Decimal(min).add(max).div(2); // minus modulo value\n\n middle = middle.sub(new Decimal(middle).mod(step));\n }\n\n var belowCount = Math.ceil(middle.sub(min).div(step).toNumber());\n var upCount = Math.ceil(new Decimal(max).sub(middle).div(step).toNumber());\n var scaleCount = belowCount + upCount + 1;\n\n if (scaleCount > tickCount) {\n // When more ticks need to cover the interval, step should be bigger.\n return calculateStep(min, max, tickCount, allowDecimals, correctionFactor + 1);\n }\n\n if (scaleCount < tickCount) {\n // When less ticks can cover the interval, we should add some additional ticks\n upCount = max > 0 ? upCount + (tickCount - scaleCount) : upCount;\n belowCount = max > 0 ? belowCount : belowCount + (tickCount - scaleCount);\n }\n\n return {\n step: step,\n tickMin: middle.sub(new Decimal(belowCount).mul(step)),\n tickMax: middle.add(new Decimal(upCount).mul(step))\n };\n}\n/**\n * Calculate the ticks of an interval, the count of ticks will be guraranteed\n *\n * @param {Number} min, max min: The minimum value, max: The maximum value\n * @param {Integer} tickCount The count of ticks\n * @param {Boolean} allowDecimals Allow the ticks to be decimals or not\n * @return {Array} ticks\n */\n\n\nfunction getNiceTickValuesFn(_ref3) {\n var _ref4 = _slicedToArray(_ref3, 2),\n min = _ref4[0],\n max = _ref4[1];\n\n var tickCount = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 6;\n var allowDecimals = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n // More than two ticks should be return\n var count = Math.max(tickCount, 2);\n\n var _getValidInterval = getValidInterval([min, max]),\n _getValidInterval2 = _slicedToArray(_getValidInterval, 2),\n cormin = _getValidInterval2[0],\n cormax = _getValidInterval2[1];\n\n if (cormin === -Infinity || cormax === Infinity) {\n var _values = cormax === Infinity ? [cormin].concat(_toConsumableArray(range(0, tickCount - 1).map(function () {\n return Infinity;\n }))) : [].concat(_toConsumableArray(range(0, tickCount - 1).map(function () {\n return -Infinity;\n })), [cormax]);\n\n return min > max ? reverse(_values) : _values;\n }\n\n if (cormin === cormax) {\n return getTickOfSingleValue(cormin, tickCount, allowDecimals);\n } // Get the step between two ticks\n\n\n var _calculateStep = calculateStep(cormin, cormax, count, allowDecimals),\n step = _calculateStep.step,\n tickMin = _calculateStep.tickMin,\n tickMax = _calculateStep.tickMax;\n\n var values = Arithmetic.rangeStep(tickMin, tickMax.add(new Decimal(0.1).mul(step)), step);\n return min > max ? reverse(values) : values;\n}\n/**\n * Calculate the ticks of an interval, the count of ticks won't be guraranteed\n *\n * @param {Number} min, max min: The minimum value, max: The maximum value\n * @param {Integer} tickCount The count of ticks\n * @param {Boolean} allowDecimals Allow the ticks to be decimals or not\n * @return {Array} ticks\n */\n\n\nfunction getTickValuesFn(_ref5) {\n var _ref6 = _slicedToArray(_ref5, 2),\n min = _ref6[0],\n max = _ref6[1];\n\n var tickCount = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 6;\n var allowDecimals = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n // More than two ticks should be return\n var count = Math.max(tickCount, 2);\n\n var _getValidInterval3 = getValidInterval([min, max]),\n _getValidInterval4 = _slicedToArray(_getValidInterval3, 2),\n cormin = _getValidInterval4[0],\n cormax = _getValidInterval4[1];\n\n if (cormin === -Infinity || cormax === Infinity) {\n return [min, max];\n }\n\n if (cormin === cormax) {\n return getTickOfSingleValue(cormin, tickCount, allowDecimals);\n }\n\n var step = getFormatStep(new Decimal(cormax).sub(cormin).div(count - 1), allowDecimals, 0);\n var fn = compose(map(function (n) {\n return new Decimal(cormin).add(new Decimal(n).mul(step)).toNumber();\n }), range);\n var values = fn(0, count).filter(function (entry) {\n return entry >= cormin && entry <= cormax;\n });\n return min > max ? reverse(values) : values;\n}\n/**\n * Calculate the ticks of an interval, the count of ticks won't be guraranteed,\n * but the domain will be guaranteed\n *\n * @param {Number} min, max min: The minimum value, max: The maximum value\n * @param {Integer} tickCount The count of ticks\n * @param {Boolean} allowDecimals Allow the ticks to be decimals or not\n * @return {Array} ticks\n */\n\n\nfunction getTickValuesFixedDomainFn(_ref7, tickCount) {\n var _ref8 = _slicedToArray(_ref7, 2),\n min = _ref8[0],\n max = _ref8[1];\n\n var allowDecimals = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n\n // More than two ticks should be return\n var _getValidInterval5 = getValidInterval([min, max]),\n _getValidInterval6 = _slicedToArray(_getValidInterval5, 2),\n cormin = _getValidInterval6[0],\n cormax = _getValidInterval6[1];\n\n if (cormin === -Infinity || cormax === Infinity) {\n return [min, max];\n }\n\n if (cormin === cormax) {\n return [cormin];\n }\n\n var count = Math.max(tickCount, 2);\n var step = getFormatStep(new Decimal(cormax).sub(cormin).div(count - 1), allowDecimals, 0);\n var values = [].concat(_toConsumableArray(Arithmetic.rangeStep(new Decimal(cormin), new Decimal(cormax).sub(new Decimal(0.99).mul(step)), step)), [cormax]);\n return min > max ? reverse(values) : values;\n}\n\nexport var getNiceTickValues = memoize(getNiceTickValuesFn);\nexport var getTickValues = memoize(getTickValuesFn);\nexport var getTickValuesFixedDomain = memoize(getTickValuesFixedDomainFn);","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : String(i); }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport * as d3Scales from 'victory-vendor/d3-scale';\nimport { stack as shapeStack, stackOffsetExpand, stackOffsetNone, stackOffsetSilhouette, stackOffsetWiggle, stackOrderNone } from 'victory-vendor/d3-shape';\nimport max from 'lodash/max';\nimport min from 'lodash/min';\nimport isNil from 'lodash/isNil';\nimport isFunction from 'lodash/isFunction';\nimport isString from 'lodash/isString';\nimport get from 'lodash/get';\nimport flatMap from 'lodash/flatMap';\nimport isNan from 'lodash/isNaN';\nimport upperFirst from 'lodash/upperFirst';\nimport isEqual from 'lodash/isEqual';\nimport sortBy from 'lodash/sortBy';\nimport { getNiceTickValues, getTickValuesFixedDomain } from 'recharts-scale';\nimport { ErrorBar } from '../cartesian/ErrorBar';\nimport { findEntryInArray, getPercentValue, isNumber, isNumOrStr, mathSign, uniqueId } from './DataUtils';\nimport { filterProps, findAllByType, getDisplayName } from './ReactUtils';\n// TODO: Cause of circular dependency. Needs refactor.\n// import { RadiusAxisProps, AngleAxisProps } from '../polar/types';\n\nimport { getLegendProps } from './getLegendProps';\n\n// Exported for backwards compatibility\nexport { getLegendProps };\nexport function getValueByDataKey(obj, dataKey, defaultValue) {\n if (isNil(obj) || isNil(dataKey)) {\n return defaultValue;\n }\n if (isNumOrStr(dataKey)) {\n return get(obj, dataKey, defaultValue);\n }\n if (isFunction(dataKey)) {\n return dataKey(obj);\n }\n return defaultValue;\n}\n/**\n * Get domain of data by key.\n * @param {Array} data The data displayed in the chart\n * @param {String} key The unique key of a group of data\n * @param {String} type The type of axis\n * @param {Boolean} filterNil Whether or not filter nil values\n * @return {Array} Domain of data\n */\nexport function getDomainOfDataByKey(data, key, type, filterNil) {\n var flattenData = flatMap(data, function (entry) {\n return getValueByDataKey(entry, key);\n });\n if (type === 'number') {\n // @ts-expect-error parseFloat type only accepts strings\n var domain = flattenData.filter(function (entry) {\n return isNumber(entry) || parseFloat(entry);\n });\n return domain.length ? [min(domain), max(domain)] : [Infinity, -Infinity];\n }\n var validateData = filterNil ? flattenData.filter(function (entry) {\n return !isNil(entry);\n }) : flattenData;\n\n // Supports x-axis of Date type\n return validateData.map(function (entry) {\n return isNumOrStr(entry) || entry instanceof Date ? entry : '';\n });\n}\nexport var calculateActiveTickIndex = function calculateActiveTickIndex(coordinate) {\n var _ticks$length;\n var ticks = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n var unsortedTicks = arguments.length > 2 ? arguments[2] : undefined;\n var axis = arguments.length > 3 ? arguments[3] : undefined;\n var index = -1;\n var len = (_ticks$length = ticks === null || ticks === void 0 ? void 0 : ticks.length) !== null && _ticks$length !== void 0 ? _ticks$length : 0;\n\n // if there are 1 or less ticks ticks then the active tick is at index 0\n if (len <= 1) {\n return 0;\n }\n if (axis && axis.axisType === 'angleAxis' && Math.abs(Math.abs(axis.range[1] - axis.range[0]) - 360) <= 1e-6) {\n var range = axis.range;\n // ticks are distributed in a circle\n for (var i = 0; i < len; i++) {\n var before = i > 0 ? unsortedTicks[i - 1].coordinate : unsortedTicks[len - 1].coordinate;\n var cur = unsortedTicks[i].coordinate;\n var after = i >= len - 1 ? unsortedTicks[0].coordinate : unsortedTicks[i + 1].coordinate;\n var sameDirectionCoord = void 0;\n if (mathSign(cur - before) !== mathSign(after - cur)) {\n var diffInterval = [];\n if (mathSign(after - cur) === mathSign(range[1] - range[0])) {\n sameDirectionCoord = after;\n var curInRange = cur + range[1] - range[0];\n diffInterval[0] = Math.min(curInRange, (curInRange + before) / 2);\n diffInterval[1] = Math.max(curInRange, (curInRange + before) / 2);\n } else {\n sameDirectionCoord = before;\n var afterInRange = after + range[1] - range[0];\n diffInterval[0] = Math.min(cur, (afterInRange + cur) / 2);\n diffInterval[1] = Math.max(cur, (afterInRange + cur) / 2);\n }\n var sameInterval = [Math.min(cur, (sameDirectionCoord + cur) / 2), Math.max(cur, (sameDirectionCoord + cur) / 2)];\n if (coordinate > sameInterval[0] && coordinate <= sameInterval[1] || coordinate >= diffInterval[0] && coordinate <= diffInterval[1]) {\n index = unsortedTicks[i].index;\n break;\n }\n } else {\n var minValue = Math.min(before, after);\n var maxValue = Math.max(before, after);\n if (coordinate > (minValue + cur) / 2 && coordinate <= (maxValue + cur) / 2) {\n index = unsortedTicks[i].index;\n break;\n }\n }\n }\n } else {\n // ticks are distributed in a single direction\n for (var _i = 0; _i < len; _i++) {\n if (_i === 0 && coordinate <= (ticks[_i].coordinate + ticks[_i + 1].coordinate) / 2 || _i > 0 && _i < len - 1 && coordinate > (ticks[_i].coordinate + ticks[_i - 1].coordinate) / 2 && coordinate <= (ticks[_i].coordinate + ticks[_i + 1].coordinate) / 2 || _i === len - 1 && coordinate > (ticks[_i].coordinate + ticks[_i - 1].coordinate) / 2) {\n index = ticks[_i].index;\n break;\n }\n }\n }\n return index;\n};\n\n/**\n * Get the main color of each graphic item\n * @param {ReactElement} item A graphic item\n * @return {String} Color\n */\nexport var getMainColorOfGraphicItem = function getMainColorOfGraphicItem(item) {\n var _ref = item,\n displayName = _ref.type.displayName; // TODO: check if displayName is valid.\n var _item$props = item.props,\n stroke = _item$props.stroke,\n fill = _item$props.fill;\n var result;\n switch (displayName) {\n case 'Line':\n result = stroke;\n break;\n case 'Area':\n case 'Radar':\n result = stroke && stroke !== 'none' ? stroke : fill;\n break;\n default:\n result = fill;\n break;\n }\n return result;\n};\n/**\n * Calculate the size of all groups for stacked bar graph\n * @param {Object} stackGroups The items grouped by axisId and stackId\n * @return {Object} The size of all groups\n */\nexport var getBarSizeList = function getBarSizeList(_ref2) {\n var globalSize = _ref2.barSize,\n totalSize = _ref2.totalSize,\n _ref2$stackGroups = _ref2.stackGroups,\n stackGroups = _ref2$stackGroups === void 0 ? {} : _ref2$stackGroups;\n if (!stackGroups) {\n return {};\n }\n var result = {};\n var numericAxisIds = Object.keys(stackGroups);\n for (var i = 0, len = numericAxisIds.length; i < len; i++) {\n var sgs = stackGroups[numericAxisIds[i]].stackGroups;\n var stackIds = Object.keys(sgs);\n for (var j = 0, sLen = stackIds.length; j < sLen; j++) {\n var _sgs$stackIds$j = sgs[stackIds[j]],\n items = _sgs$stackIds$j.items,\n cateAxisId = _sgs$stackIds$j.cateAxisId;\n var barItems = items.filter(function (item) {\n return getDisplayName(item.type).indexOf('Bar') >= 0;\n });\n if (barItems && barItems.length) {\n var selfSize = barItems[0].props.barSize;\n var cateId = barItems[0].props[cateAxisId];\n if (!result[cateId]) {\n result[cateId] = [];\n }\n var barSize = isNil(selfSize) ? globalSize : selfSize;\n result[cateId].push({\n item: barItems[0],\n stackList: barItems.slice(1),\n barSize: isNil(barSize) ? undefined : getPercentValue(barSize, totalSize, 0)\n });\n }\n }\n }\n return result;\n};\n/**\n * Calculate the size of each bar and offset between start of band and the bar\n *\n * @param {number} bandSize is the size of area where bars can render\n * @param {number | string} barGap is the gap size, as a percentage of `bandSize`.\n * Can be defined as number or percent string\n * @param {number | string} barCategoryGap is the gap size, as a percentage of `bandSize`.\n * Can be defined as number or percent string\n * @param {Array<object>} sizeList Sizes of all groups\n * @param {number} maxBarSize The maximum size of each bar\n * @return {Array<object>} The size and offset of each bar\n */\nexport var getBarPosition = function getBarPosition(_ref3) {\n var barGap = _ref3.barGap,\n barCategoryGap = _ref3.barCategoryGap,\n bandSize = _ref3.bandSize,\n _ref3$sizeList = _ref3.sizeList,\n sizeList = _ref3$sizeList === void 0 ? [] : _ref3$sizeList,\n maxBarSize = _ref3.maxBarSize;\n var len = sizeList.length;\n if (len < 1) return null;\n var realBarGap = getPercentValue(barGap, bandSize, 0, true);\n var result;\n var initialValue = [];\n\n // whether or not is barSize setted by user\n if (sizeList[0].barSize === +sizeList[0].barSize) {\n var useFull = false;\n var fullBarSize = bandSize / len;\n // @ts-expect-error the type check above does not check for type number explicitly\n var sum = sizeList.reduce(function (res, entry) {\n return res + entry.barSize || 0;\n }, 0);\n sum += (len - 1) * realBarGap;\n if (sum >= bandSize) {\n sum -= (len - 1) * realBarGap;\n realBarGap = 0;\n }\n if (sum >= bandSize && fullBarSize > 0) {\n useFull = true;\n fullBarSize *= 0.9;\n sum = len * fullBarSize;\n }\n var offset = (bandSize - sum) / 2 >> 0;\n var prev = {\n offset: offset - realBarGap,\n size: 0\n };\n result = sizeList.reduce(function (res, entry) {\n var newPosition = {\n item: entry.item,\n position: {\n offset: prev.offset + prev.size + realBarGap,\n // @ts-expect-error the type check above does not check for type number explicitly\n size: useFull ? fullBarSize : entry.barSize\n }\n };\n var newRes = [].concat(_toConsumableArray(res), [newPosition]);\n prev = newRes[newRes.length - 1].position;\n if (entry.stackList && entry.stackList.length) {\n entry.stackList.forEach(function (item) {\n newRes.push({\n item: item,\n position: prev\n });\n });\n }\n return newRes;\n }, initialValue);\n } else {\n var _offset = getPercentValue(barCategoryGap, bandSize, 0, true);\n if (bandSize - 2 * _offset - (len - 1) * realBarGap <= 0) {\n realBarGap = 0;\n }\n var originalSize = (bandSize - 2 * _offset - (len - 1) * realBarGap) / len;\n if (originalSize > 1) {\n originalSize >>= 0;\n }\n var size = maxBarSize === +maxBarSize ? Math.min(originalSize, maxBarSize) : originalSize;\n result = sizeList.reduce(function (res, entry, i) {\n var newRes = [].concat(_toConsumableArray(res), [{\n item: entry.item,\n position: {\n offset: _offset + (originalSize + realBarGap) * i + (originalSize - size) / 2,\n size: size\n }\n }]);\n if (entry.stackList && entry.stackList.length) {\n entry.stackList.forEach(function (item) {\n newRes.push({\n item: item,\n position: newRes[newRes.length - 1].position\n });\n });\n }\n return newRes;\n }, initialValue);\n }\n return result;\n};\nexport var appendOffsetOfLegend = function appendOffsetOfLegend(offset, _unused, props, legendBox) {\n var children = props.children,\n width = props.width,\n margin = props.margin;\n var legendWidth = width - (margin.left || 0) - (margin.right || 0);\n var legendProps = getLegendProps({\n children: children,\n legendWidth: legendWidth\n });\n if (legendProps) {\n var _ref4 = legendBox || {},\n boxWidth = _ref4.width,\n boxHeight = _ref4.height;\n var align = legendProps.align,\n verticalAlign = legendProps.verticalAlign,\n layout = legendProps.layout;\n if ((layout === 'vertical' || layout === 'horizontal' && verticalAlign === 'middle') && align !== 'center' && isNumber(offset[align])) {\n return _objectSpread(_objectSpread({}, offset), {}, _defineProperty({}, align, offset[align] + (boxWidth || 0)));\n }\n if ((layout === 'horizontal' || layout === 'vertical' && align === 'center') && verticalAlign !== 'middle' && isNumber(offset[verticalAlign])) {\n return _objectSpread(_objectSpread({}, offset), {}, _defineProperty({}, verticalAlign, offset[verticalAlign] + (boxHeight || 0)));\n }\n }\n return offset;\n};\nvar isErrorBarRelevantForAxis = function isErrorBarRelevantForAxis(layout, axisType, direction) {\n if (isNil(axisType)) {\n return true;\n }\n if (layout === 'horizontal') {\n return axisType === 'yAxis';\n }\n if (layout === 'vertical') {\n return axisType === 'xAxis';\n }\n if (direction === 'x') {\n return axisType === 'xAxis';\n }\n if (direction === 'y') {\n return axisType === 'yAxis';\n }\n return true;\n};\nexport var getDomainOfErrorBars = function getDomainOfErrorBars(data, item, dataKey, layout, axisType) {\n var children = item.props.children;\n var errorBars = findAllByType(children, ErrorBar).filter(function (errorBarChild) {\n return isErrorBarRelevantForAxis(layout, axisType, errorBarChild.props.direction);\n });\n if (errorBars && errorBars.length) {\n var keys = errorBars.map(function (errorBarChild) {\n return errorBarChild.props.dataKey;\n });\n return data.reduce(function (result, entry) {\n var entryValue = getValueByDataKey(entry, dataKey);\n if (isNil(entryValue)) return result;\n var mainValue = Array.isArray(entryValue) ? [min(entryValue), max(entryValue)] : [entryValue, entryValue];\n var errorDomain = keys.reduce(function (prevErrorArr, k) {\n var errorValue = getValueByDataKey(entry, k, 0);\n var lowerValue = mainValue[0] - Math.abs(Array.isArray(errorValue) ? errorValue[0] : errorValue);\n var upperValue = mainValue[1] + Math.abs(Array.isArray(errorValue) ? errorValue[1] : errorValue);\n return [Math.min(lowerValue, prevErrorArr[0]), Math.max(upperValue, prevErrorArr[1])];\n }, [Infinity, -Infinity]);\n return [Math.min(errorDomain[0], result[0]), Math.max(errorDomain[1], result[1])];\n }, [Infinity, -Infinity]);\n }\n return null;\n};\nexport var parseErrorBarsOfAxis = function parseErrorBarsOfAxis(data, items, dataKey, axisType, layout) {\n var domains = items.map(function (item) {\n return getDomainOfErrorBars(data, item, dataKey, layout, axisType);\n }).filter(function (entry) {\n return !isNil(entry);\n });\n if (domains && domains.length) {\n return domains.reduce(function (result, entry) {\n return [Math.min(result[0], entry[0]), Math.max(result[1], entry[1])];\n }, [Infinity, -Infinity]);\n }\n return null;\n};\n\n/**\n * Get domain of data by the configuration of item element\n * @param {Array} data The data displayed in the chart\n * @param {Array} items The instances of item\n * @param {String} type The type of axis, number - Number Axis, category - Category Axis\n * @param {LayoutType} layout The type of layout\n * @param {Boolean} filterNil Whether or not filter nil values\n * @return {Array} Domain\n */\nexport var getDomainOfItemsWithSameAxis = function getDomainOfItemsWithSameAxis(data, items, type, layout, filterNil) {\n var domains = items.map(function (item) {\n var dataKey = item.props.dataKey;\n if (type === 'number' && dataKey) {\n return getDomainOfErrorBars(data, item, dataKey, layout) || getDomainOfDataByKey(data, dataKey, type, filterNil);\n }\n return getDomainOfDataByKey(data, dataKey, type, filterNil);\n });\n if (type === 'number') {\n // Calculate the domain of number axis\n return domains.reduce(\n // @ts-expect-error if (type === number) means that the domain is numerical type\n // - but this link is missing in the type definition\n function (result, entry) {\n return [Math.min(result[0], entry[0]), Math.max(result[1], entry[1])];\n }, [Infinity, -Infinity]);\n }\n var tag = {};\n // Get the union set of category axis\n return domains.reduce(function (result, entry) {\n for (var i = 0, len = entry.length; i < len; i++) {\n // @ts-expect-error Date cannot index an object\n if (!tag[entry[i]]) {\n // @ts-expect-error Date cannot index an object\n tag[entry[i]] = true;\n\n // @ts-expect-error Date cannot index an object\n result.push(entry[i]);\n }\n }\n return result;\n }, []);\n};\nexport var isCategoricalAxis = function isCategoricalAxis(layout, axisType) {\n return layout === 'horizontal' && axisType === 'xAxis' || layout === 'vertical' && axisType === 'yAxis' || layout === 'centric' && axisType === 'angleAxis' || layout === 'radial' && axisType === 'radiusAxis';\n};\n\n/**\n * Calculate the Coordinates of grid\n * @param {Array} ticks The ticks in axis\n * @param {Number} minValue The minimun value of axis\n * @param {Number} maxValue The maximun value of axis\n * @param {boolean} syncWithTicks Synchronize grid lines with ticks or not\n * @return {Array} Coordinates\n */\nexport var getCoordinatesOfGrid = function getCoordinatesOfGrid(ticks, minValue, maxValue, syncWithTicks) {\n if (syncWithTicks) {\n return ticks.map(function (entry) {\n return entry.coordinate;\n });\n }\n var hasMin, hasMax;\n var values = ticks.map(function (entry) {\n if (entry.coordinate === minValue) {\n hasMin = true;\n }\n if (entry.coordinate === maxValue) {\n hasMax = true;\n }\n return entry.coordinate;\n });\n if (!hasMin) {\n values.push(minValue);\n }\n if (!hasMax) {\n values.push(maxValue);\n }\n return values;\n};\n\n/**\n * Get the ticks of an axis\n * @param {Object} axis The configuration of an axis\n * @param {Boolean} isGrid Whether or not are the ticks in grid\n * @param {Boolean} isAll Return the ticks of all the points or not\n * @return {Array} Ticks\n */\nexport var getTicksOfAxis = function getTicksOfAxis(axis, isGrid, isAll) {\n if (!axis) return null;\n var scale = axis.scale;\n var duplicateDomain = axis.duplicateDomain,\n type = axis.type,\n range = axis.range;\n var offsetForBand = axis.realScaleType === 'scaleBand' ? scale.bandwidth() / 2 : 2;\n var offset = (isGrid || isAll) && type === 'category' && scale.bandwidth ? scale.bandwidth() / offsetForBand : 0;\n offset = axis.axisType === 'angleAxis' && (range === null || range === void 0 ? void 0 : range.length) >= 2 ? mathSign(range[0] - range[1]) * 2 * offset : offset;\n\n // The ticks set by user should only affect the ticks adjacent to axis line\n if (isGrid && (axis.ticks || axis.niceTicks)) {\n var result = (axis.ticks || axis.niceTicks).map(function (entry) {\n var scaleContent = duplicateDomain ? duplicateDomain.indexOf(entry) : entry;\n return {\n // If the scaleContent is not a number, the coordinate will be NaN.\n // That could be the case for example with a PointScale and a string as domain.\n coordinate: scale(scaleContent) + offset,\n value: entry,\n offset: offset\n };\n });\n return result.filter(function (row) {\n return !isNan(row.coordinate);\n });\n }\n\n // When axis is a categorial axis, but the type of axis is number or the scale of axis is not \"auto\"\n if (axis.isCategorical && axis.categoricalDomain) {\n return axis.categoricalDomain.map(function (entry, index) {\n return {\n coordinate: scale(entry) + offset,\n value: entry,\n index: index,\n offset: offset\n };\n });\n }\n if (scale.ticks && !isAll) {\n return scale.ticks(axis.tickCount).map(function (entry) {\n return {\n coordinate: scale(entry) + offset,\n value: entry,\n offset: offset\n };\n });\n }\n\n // When axis has duplicated text, serial numbers are used to generate scale\n return scale.domain().map(function (entry, index) {\n return {\n coordinate: scale(entry) + offset,\n value: duplicateDomain ? duplicateDomain[entry] : entry,\n index: index,\n offset: offset\n };\n });\n};\n\n/**\n * combine the handlers\n * @param {Function} defaultHandler Internal private handler\n * @param {Function} childHandler Handler function specified in child component\n * @return {Function} The combined handler\n */\n\nvar handlerWeakMap = new WeakMap();\nexport var combineEventHandlers = function combineEventHandlers(defaultHandler, childHandler) {\n if (typeof childHandler !== 'function') {\n return defaultHandler;\n }\n if (!handlerWeakMap.has(defaultHandler)) {\n handlerWeakMap.set(defaultHandler, new WeakMap());\n }\n var childWeakMap = handlerWeakMap.get(defaultHandler);\n if (childWeakMap.has(childHandler)) {\n return childWeakMap.get(childHandler);\n }\n var combineHandler = function combineHandler() {\n defaultHandler.apply(void 0, arguments);\n childHandler.apply(void 0, arguments);\n };\n childWeakMap.set(childHandler, combineHandler);\n return combineHandler;\n};\n\n/**\n * Parse the scale function of axis\n * @param {Object} axis The option of axis\n * @param {String} chartType The displayName of chart\n * @param {Boolean} hasBar if it has a bar\n * @return {object} The scale function and resolved name\n */\nexport var parseScale = function parseScale(axis, chartType, hasBar) {\n var scale = axis.scale,\n type = axis.type,\n layout = axis.layout,\n axisType = axis.axisType;\n if (scale === 'auto') {\n if (layout === 'radial' && axisType === 'radiusAxis') {\n return {\n scale: d3Scales.scaleBand(),\n realScaleType: 'band'\n };\n }\n if (layout === 'radial' && axisType === 'angleAxis') {\n return {\n scale: d3Scales.scaleLinear(),\n realScaleType: 'linear'\n };\n }\n if (type === 'category' && chartType && (chartType.indexOf('LineChart') >= 0 || chartType.indexOf('AreaChart') >= 0 || chartType.indexOf('ComposedChart') >= 0 && !hasBar)) {\n return {\n scale: d3Scales.scalePoint(),\n realScaleType: 'point'\n };\n }\n if (type === 'category') {\n return {\n scale: d3Scales.scaleBand(),\n realScaleType: 'band'\n };\n }\n return {\n scale: d3Scales.scaleLinear(),\n realScaleType: 'linear'\n };\n }\n if (isString(scale)) {\n var name = \"scale\".concat(upperFirst(scale));\n return {\n scale: (d3Scales[name] || d3Scales.scalePoint)(),\n realScaleType: d3Scales[name] ? name : 'point'\n };\n }\n return isFunction(scale) ? {\n scale: scale\n } : {\n scale: d3Scales.scalePoint(),\n realScaleType: 'point'\n };\n};\nvar EPS = 1e-4;\nexport var checkDomainOfScale = function checkDomainOfScale(scale) {\n var domain = scale.domain();\n if (!domain || domain.length <= 2) {\n return;\n }\n var len = domain.length;\n var range = scale.range();\n var minValue = Math.min(range[0], range[1]) - EPS;\n var maxValue = Math.max(range[0], range[1]) + EPS;\n var first = scale(domain[0]);\n var last = scale(domain[len - 1]);\n if (first < minValue || first > maxValue || last < minValue || last > maxValue) {\n scale.domain([domain[0], domain[len - 1]]);\n }\n};\nexport var findPositionOfBar = function findPositionOfBar(barPosition, child) {\n if (!barPosition) {\n return null;\n }\n for (var i = 0, len = barPosition.length; i < len; i++) {\n if (barPosition[i].item === child) {\n return barPosition[i].position;\n }\n }\n return null;\n};\n\n/**\n * Both value and domain are tuples of two numbers\n * - but the type stays as array of numbers until we have better support in rest of the app\n * @param {Array} value input that will be truncated\n * @param {Array} domain boundaries\n * @returns {Array} tuple of two numbers\n */\nexport var truncateByDomain = function truncateByDomain(value, domain) {\n if (!domain || domain.length !== 2 || !isNumber(domain[0]) || !isNumber(domain[1])) {\n return value;\n }\n var minValue = Math.min(domain[0], domain[1]);\n var maxValue = Math.max(domain[0], domain[1]);\n var result = [value[0], value[1]];\n if (!isNumber(value[0]) || value[0] < minValue) {\n result[0] = minValue;\n }\n if (!isNumber(value[1]) || value[1] > maxValue) {\n result[1] = maxValue;\n }\n if (result[0] > maxValue) {\n result[0] = maxValue;\n }\n if (result[1] < minValue) {\n result[1] = minValue;\n }\n return result;\n};\n\n/**\n * Stacks all positive numbers above zero and all negative numbers below zero.\n *\n * If all values in the series are positive then this behaves the same as 'none' stacker.\n *\n * @param {Array} series from d3-shape Stack\n * @return {Array} series with applied offset\n */\nexport var offsetSign = function offsetSign(series) {\n var n = series.length;\n if (n <= 0) {\n return;\n }\n for (var j = 0, m = series[0].length; j < m; ++j) {\n var positive = 0;\n var negative = 0;\n for (var i = 0; i < n; ++i) {\n var value = isNan(series[i][j][1]) ? series[i][j][0] : series[i][j][1];\n\n /* eslint-disable prefer-destructuring, no-param-reassign */\n if (value >= 0) {\n series[i][j][0] = positive;\n series[i][j][1] = positive + value;\n positive = series[i][j][1];\n } else {\n series[i][j][0] = negative;\n series[i][j][1] = negative + value;\n negative = series[i][j][1];\n }\n /* eslint-enable prefer-destructuring, no-param-reassign */\n }\n }\n};\n\n/**\n * Replaces all negative values with zero when stacking data.\n *\n * If all values in the series are positive then this behaves the same as 'none' stacker.\n *\n * @param {Array} series from d3-shape Stack\n * @return {Array} series with applied offset\n */\nexport var offsetPositive = function offsetPositive(series) {\n var n = series.length;\n if (n <= 0) {\n return;\n }\n for (var j = 0, m = series[0].length; j < m; ++j) {\n var positive = 0;\n for (var i = 0; i < n; ++i) {\n var value = isNan(series[i][j][1]) ? series[i][j][0] : series[i][j][1];\n\n /* eslint-disable prefer-destructuring, no-param-reassign */\n if (value >= 0) {\n series[i][j][0] = positive;\n series[i][j][1] = positive + value;\n positive = series[i][j][1];\n } else {\n series[i][j][0] = 0;\n series[i][j][1] = 0;\n }\n /* eslint-enable prefer-destructuring, no-param-reassign */\n }\n }\n};\n\n/**\n * Function type to compute offset for stacked data.\n *\n * d3-shape has something fishy going on with its types.\n * In @definitelytyped/d3-shape, this function (the offset accessor) is typed as Series<> => void.\n * However! When I actually open the storybook I can see that the offset accessor actually receives Array<Series<>>.\n * The same I can see in the source code itself:\n * https://github.com/DefinitelyTyped/DefinitelyTyped/discussions/66042\n * That one unfortunately has no types but we can tell it passes three-dimensional array.\n *\n * Which leads me to believe that definitelytyped is wrong on this one.\n * There's open discussion on this topic without much attention:\n * https://github.com/DefinitelyTyped/DefinitelyTyped/discussions/66042\n */\n\nvar STACK_OFFSET_MAP = {\n sign: offsetSign,\n // @ts-expect-error definitelytyped types are incorrect\n expand: stackOffsetExpand,\n // @ts-expect-error definitelytyped types are incorrect\n none: stackOffsetNone,\n // @ts-expect-error definitelytyped types are incorrect\n silhouette: stackOffsetSilhouette,\n // @ts-expect-error definitelytyped types are incorrect\n wiggle: stackOffsetWiggle,\n positive: offsetPositive\n};\nexport var getStackedData = function getStackedData(data, stackItems, offsetType) {\n var dataKeys = stackItems.map(function (item) {\n return item.props.dataKey;\n });\n var offsetAccessor = STACK_OFFSET_MAP[offsetType];\n var stack = shapeStack()\n // @ts-expect-error stack.keys type wants an array of strings, but we provide array of DataKeys\n .keys(dataKeys).value(function (d, key) {\n return +getValueByDataKey(d, key, 0);\n }).order(stackOrderNone)\n // @ts-expect-error definitelytyped types are incorrect\n .offset(offsetAccessor);\n return stack(data);\n};\nexport var getStackGroupsByAxisId = function getStackGroupsByAxisId(data, _items, numericAxisId, cateAxisId, offsetType, reverseStackOrder) {\n if (!data) {\n return null;\n }\n\n // reversing items to affect render order (for layering)\n var items = reverseStackOrder ? _items.reverse() : _items;\n var parentStackGroupsInitialValue = {};\n var stackGroups = items.reduce(function (result, item) {\n var _item$props2 = item.props,\n stackId = _item$props2.stackId,\n hide = _item$props2.hide;\n if (hide) {\n return result;\n }\n var axisId = item.props[numericAxisId];\n var parentGroup = result[axisId] || {\n hasStack: false,\n stackGroups: {}\n };\n if (isNumOrStr(stackId)) {\n var childGroup = parentGroup.stackGroups[stackId] || {\n numericAxisId: numericAxisId,\n cateAxisId: cateAxisId,\n items: []\n };\n childGroup.items.push(item);\n parentGroup.hasStack = true;\n parentGroup.stackGroups[stackId] = childGroup;\n } else {\n parentGroup.stackGroups[uniqueId('_stackId_')] = {\n numericAxisId: numericAxisId,\n cateAxisId: cateAxisId,\n items: [item]\n };\n }\n return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, axisId, parentGroup));\n }, parentStackGroupsInitialValue);\n var axisStackGroupsInitialValue = {};\n return Object.keys(stackGroups).reduce(function (result, axisId) {\n var group = stackGroups[axisId];\n if (group.hasStack) {\n var stackGroupsInitialValue = {};\n group.stackGroups = Object.keys(group.stackGroups).reduce(function (res, stackId) {\n var g = group.stackGroups[stackId];\n return _objectSpread(_objectSpread({}, res), {}, _defineProperty({}, stackId, {\n numericAxisId: numericAxisId,\n cateAxisId: cateAxisId,\n items: g.items,\n stackedData: getStackedData(data, g.items, offsetType)\n }));\n }, stackGroupsInitialValue);\n }\n return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, axisId, group));\n }, axisStackGroupsInitialValue);\n};\n\n/**\n * Configure the scale function of axis\n * @param {Object} scale The scale function\n * @param {Object} opts The configuration of axis\n * @return {Object} null\n */\nexport var getTicksOfScale = function getTicksOfScale(scale, opts) {\n var realScaleType = opts.realScaleType,\n type = opts.type,\n tickCount = opts.tickCount,\n originalDomain = opts.originalDomain,\n allowDecimals = opts.allowDecimals;\n var scaleType = realScaleType || opts.scale;\n if (scaleType !== 'auto' && scaleType !== 'linear') {\n return null;\n }\n if (tickCount && type === 'number' && originalDomain && (originalDomain[0] === 'auto' || originalDomain[1] === 'auto')) {\n // Calculate the ticks by the number of grid when the axis is a number axis\n var domain = scale.domain();\n if (!domain.length) {\n return null;\n }\n var tickValues = getNiceTickValues(domain, tickCount, allowDecimals);\n scale.domain([min(tickValues), max(tickValues)]);\n return {\n niceTicks: tickValues\n };\n }\n if (tickCount && type === 'number') {\n var _domain = scale.domain();\n var _tickValues = getTickValuesFixedDomain(_domain, tickCount, allowDecimals);\n return {\n niceTicks: _tickValues\n };\n }\n return null;\n};\nexport function getCateCoordinateOfLine(_ref5) {\n var axis = _ref5.axis,\n ticks = _ref5.ticks,\n bandSize = _ref5.bandSize,\n entry = _ref5.entry,\n index = _ref5.index,\n dataKey = _ref5.dataKey;\n if (axis.type === 'category') {\n // find coordinate of category axis by the value of category\n // @ts-expect-error why does this use direct object access instead of getValueByDataKey?\n if (!axis.allowDuplicatedCategory && axis.dataKey && !isNil(entry[axis.dataKey])) {\n // @ts-expect-error why does this use direct object access instead of getValueByDataKey?\n var matchedTick = findEntryInArray(ticks, 'value', entry[axis.dataKey]);\n if (matchedTick) {\n return matchedTick.coordinate + bandSize / 2;\n }\n }\n return ticks[index] ? ticks[index].coordinate + bandSize / 2 : null;\n }\n var value = getValueByDataKey(entry, !isNil(dataKey) ? dataKey : axis.dataKey);\n return !isNil(value) ? axis.scale(value) : null;\n}\nexport var getCateCoordinateOfBar = function getCateCoordinateOfBar(_ref6) {\n var axis = _ref6.axis,\n ticks = _ref6.ticks,\n offset = _ref6.offset,\n bandSize = _ref6.bandSize,\n entry = _ref6.entry,\n index = _ref6.index;\n if (axis.type === 'category') {\n return ticks[index] ? ticks[index].coordinate + offset : null;\n }\n var value = getValueByDataKey(entry, axis.dataKey, axis.domain[index]);\n return !isNil(value) ? axis.scale(value) - bandSize / 2 + offset : null;\n};\nexport var getBaseValueOfBar = function getBaseValueOfBar(_ref7) {\n var numericAxis = _ref7.numericAxis;\n var domain = numericAxis.scale.domain();\n if (numericAxis.type === 'number') {\n var minValue = Math.min(domain[0], domain[1]);\n var maxValue = Math.max(domain[0], domain[1]);\n if (minValue <= 0 && maxValue >= 0) {\n return 0;\n }\n if (maxValue < 0) {\n return maxValue;\n }\n return minValue;\n }\n return domain[0];\n};\nexport var getStackedDataOfItem = function getStackedDataOfItem(item, stackGroups) {\n var stackId = item.props.stackId;\n if (isNumOrStr(stackId)) {\n var group = stackGroups[stackId];\n if (group) {\n var itemIndex = group.items.indexOf(item);\n return itemIndex >= 0 ? group.stackedData[itemIndex] : null;\n }\n }\n return null;\n};\nvar getDomainOfSingle = function getDomainOfSingle(data) {\n return data.reduce(function (result, entry) {\n return [min(entry.concat([result[0]]).filter(isNumber)), max(entry.concat([result[1]]).filter(isNumber))];\n }, [Infinity, -Infinity]);\n};\nexport var getDomainOfStackGroups = function getDomainOfStackGroups(stackGroups, startIndex, endIndex) {\n return Object.keys(stackGroups).reduce(function (result, stackId) {\n var group = stackGroups[stackId];\n var stackedData = group.stackedData;\n var domain = stackedData.reduce(function (res, entry) {\n var s = getDomainOfSingle(entry.slice(startIndex, endIndex + 1));\n return [Math.min(res[0], s[0]), Math.max(res[1], s[1])];\n }, [Infinity, -Infinity]);\n return [Math.min(domain[0], result[0]), Math.max(domain[1], result[1])];\n }, [Infinity, -Infinity]).map(function (result) {\n return result === Infinity || result === -Infinity ? 0 : result;\n });\n};\nexport var MIN_VALUE_REG = /^dataMin[\\s]*-[\\s]*([0-9]+([.]{1}[0-9]+){0,1})$/;\nexport var MAX_VALUE_REG = /^dataMax[\\s]*\\+[\\s]*([0-9]+([.]{1}[0-9]+){0,1})$/;\nexport var parseSpecifiedDomain = function parseSpecifiedDomain(specifiedDomain, dataDomain, allowDataOverflow) {\n if (isFunction(specifiedDomain)) {\n return specifiedDomain(dataDomain, allowDataOverflow);\n }\n if (!Array.isArray(specifiedDomain)) {\n return dataDomain;\n }\n var domain = [];\n\n /* eslint-disable prefer-destructuring */\n if (isNumber(specifiedDomain[0])) {\n domain[0] = allowDataOverflow ? specifiedDomain[0] : Math.min(specifiedDomain[0], dataDomain[0]);\n } else if (MIN_VALUE_REG.test(specifiedDomain[0])) {\n var value = +MIN_VALUE_REG.exec(specifiedDomain[0])[1];\n domain[0] = dataDomain[0] - value;\n } else if (isFunction(specifiedDomain[0])) {\n domain[0] = specifiedDomain[0](dataDomain[0]);\n } else {\n domain[0] = dataDomain[0];\n }\n if (isNumber(specifiedDomain[1])) {\n domain[1] = allowDataOverflow ? specifiedDomain[1] : Math.max(specifiedDomain[1], dataDomain[1]);\n } else if (MAX_VALUE_REG.test(specifiedDomain[1])) {\n var _value = +MAX_VALUE_REG.exec(specifiedDomain[1])[1];\n domain[1] = dataDomain[1] + _value;\n } else if (isFunction(specifiedDomain[1])) {\n domain[1] = specifiedDomain[1](dataDomain[1]);\n } else {\n domain[1] = dataDomain[1];\n }\n /* eslint-enable prefer-destructuring */\n\n return domain;\n};\n\n/**\n * Calculate the size between two category\n * @param {Object} axis The options of axis\n * @param {Array} ticks The ticks of axis\n * @param {Boolean} isBar if items in axis are bars\n * @return {Number} Size\n */\nexport var getBandSizeOfAxis = function getBandSizeOfAxis(axis, ticks, isBar) {\n // @ts-expect-error we need to rethink scale type\n if (axis && axis.scale && axis.scale.bandwidth) {\n // @ts-expect-error we need to rethink scale type\n var bandWidth = axis.scale.bandwidth();\n if (!isBar || bandWidth > 0) {\n return bandWidth;\n }\n }\n if (axis && ticks && ticks.length >= 2) {\n var orderedTicks = sortBy(ticks, function (o) {\n return o.coordinate;\n });\n var bandSize = Infinity;\n for (var i = 1, len = orderedTicks.length; i < len; i++) {\n var cur = orderedTicks[i];\n var prev = orderedTicks[i - 1];\n bandSize = Math.min((cur.coordinate || 0) - (prev.coordinate || 0), bandSize);\n }\n return bandSize === Infinity ? 0 : bandSize;\n }\n return isBar ? undefined : 0;\n};\n/**\n * parse the domain of a category axis when a domain is specified\n * @param {Array} specifiedDomain The domain specified by users\n * @param {Array} calculatedDomain The domain calculated by dateKey\n * @param {ReactElement} axisChild The axis ReactElement\n * @returns {Array} domains\n */\nexport var parseDomainOfCategoryAxis = function parseDomainOfCategoryAxis(specifiedDomain, calculatedDomain, axisChild) {\n if (!specifiedDomain || !specifiedDomain.length) {\n return calculatedDomain;\n }\n if (isEqual(specifiedDomain, get(axisChild, 'type.defaultProps.domain'))) {\n return calculatedDomain;\n }\n return specifiedDomain;\n};\nexport var getTooltipItem = function getTooltipItem(graphicalItem, payload) {\n var _graphicalItem$props = graphicalItem.props,\n dataKey = _graphicalItem$props.dataKey,\n name = _graphicalItem$props.name,\n unit = _graphicalItem$props.unit,\n formatter = _graphicalItem$props.formatter,\n tooltipType = _graphicalItem$props.tooltipType,\n chartType = _graphicalItem$props.chartType,\n hide = _graphicalItem$props.hide;\n return _objectSpread(_objectSpread({}, filterProps(graphicalItem, false)), {}, {\n dataKey: dataKey,\n unit: unit,\n formatter: formatter,\n name: name || dataKey,\n color: getMainColorOfGraphicItem(graphicalItem),\n value: getValueByDataKey(payload, dataKey),\n type: tooltipType,\n payload: payload,\n chartType: chartType,\n hide: hide\n });\n};","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\r\nexport const strShimFunction = \"function\";\r\nexport const strShimObject = \"object\";\r\nexport const strShimUndefined = \"undefined\";\r\nexport const strShimPrototype = \"prototype\";\r\nexport const strShimHasOwnProperty = \"hasOwnProperty\";\r\nexport const strDefault = \"default\";\r\n\r\nexport const ObjClass = Object;\r\nexport const ObjProto = ObjClass[strShimPrototype];\r\nexport const ObjAssign = ObjClass[\"assign\"];\r\nexport const ObjCreate = ObjClass[\"create\"];\r\nexport const ObjDefineProperty = ObjClass[\"defineProperty\"];\r\nexport const ObjHasOwnProperty = ObjProto[strShimHasOwnProperty];\r\n","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","import type { Action, ActionCreator, StoreEnhancer } from 'redux';\nimport { compose } from 'redux';\n\n/**\n * @public\n */\nexport interface DevToolsEnhancerOptions {\n /**\n * the instance name to be showed on the monitor page. Default value is `document.title`.\n * If not specified and there's no document title, it will consist of `tabId` and `instanceId`.\n */\n name?: string;\n /**\n * action creators functions to be available in the Dispatcher.\n */\n actionCreators?: ActionCreator<any>[] | {\n [key: string]: ActionCreator<any>;\n };\n /**\n * if more than one action is dispatched in the indicated interval, all new actions will be collected and sent at once.\n * It is the joint between performance and speed. When set to `0`, all actions will be sent instantly.\n * Set it to a higher value when experiencing perf issues (also `maxAge` to a lower value).\n *\n * @default 500 ms.\n */\n latency?: number;\n /**\n * (> 1) - maximum allowed actions to be stored in the history tree. The oldest actions are removed once maxAge is reached. It's critical for performance.\n *\n * @default 50\n */\n maxAge?: number;\n /**\n * Customizes how actions and state are serialized and deserialized. Can be a boolean or object. If given a boolean, the behavior is the same as if you\n * were to pass an object and specify `options` as a boolean. Giving an object allows fine-grained customization using the `replacer` and `reviver`\n * functions.\n */\n serialize?: boolean | {\n /**\n * - `undefined` - will use regular `JSON.stringify` to send data (it's the fast mode).\n * - `false` - will handle also circular references.\n * - `true` - will handle also date, regex, undefined, error objects, symbols, maps, sets and functions.\n * - object, which contains `date`, `regex`, `undefined`, `error`, `symbol`, `map`, `set` and `function` keys.\n * For each of them you can indicate if to include (by setting as `true`).\n * For `function` key you can also specify a custom function which handles serialization.\n * See [`jsan`](https://github.com/kolodny/jsan) for more details.\n */\n options?: undefined | boolean | {\n date?: true;\n regex?: true;\n undefined?: true;\n error?: true;\n symbol?: true;\n map?: true;\n set?: true;\n function?: true | ((fn: (...args: any[]) => any) => string);\n };\n /**\n * [JSON replacer function](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify#The_replacer_parameter) used for both actions and states stringify.\n * In addition, you can specify a data type by adding a [`__serializedType__`](https://github.com/zalmoxisus/remotedev-serialize/blob/master/helpers/index.js#L4)\n * key. So you can deserialize it back while importing or persisting data.\n * Moreover, it will also [show a nice preview showing the provided custom type](https://cloud.githubusercontent.com/assets/7957859/21814330/a17d556a-d761-11e6-85ef-159dd12f36c5.png):\n */\n replacer?: (key: string, value: unknown) => any;\n /**\n * [JSON `reviver` function](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse#Using_the_reviver_parameter)\n * used for parsing the imported actions and states. See [`remotedev-serialize`](https://github.com/zalmoxisus/remotedev-serialize/blob/master/immutable/serialize.js#L8-L41)\n * as an example on how to serialize special data types and get them back.\n */\n reviver?: (key: string, value: unknown) => any;\n /**\n * Automatically serialize/deserialize immutablejs via [remotedev-serialize](https://github.com/zalmoxisus/remotedev-serialize).\n * Just pass the Immutable library. It will support all ImmutableJS structures. You can even export them into a file and get them back.\n * The only exception is `Record` class, for which you should pass this in addition the references to your classes in `refs`.\n */\n immutable?: any;\n /**\n * ImmutableJS `Record` classes used to make possible restore its instances back when importing, persisting...\n */\n refs?: any;\n };\n /**\n * function which takes `action` object and id number as arguments, and should return `action` object back.\n */\n actionSanitizer?: <A extends Action>(action: A, id: number) => A;\n /**\n * function which takes `state` object and index as arguments, and should return `state` object back.\n */\n stateSanitizer?: <S>(state: S, index: number) => S;\n /**\n * *string or array of strings as regex* - actions types to be hidden / shown in the monitors (while passed to the reducers).\n * If `actionsAllowlist` specified, `actionsDenylist` is ignored.\n */\n actionsDenylist?: string | string[];\n /**\n * *string or array of strings as regex* - actions types to be hidden / shown in the monitors (while passed to the reducers).\n * If `actionsAllowlist` specified, `actionsDenylist` is ignored.\n */\n actionsAllowlist?: string | string[];\n /**\n * called for every action before sending, takes `state` and `action` object, and returns `true` in case it allows sending the current data to the monitor.\n * Use it as a more advanced version of `actionsDenylist`/`actionsAllowlist` parameters.\n */\n predicate?: <S, A extends Action>(state: S, action: A) => boolean;\n /**\n * if specified as `false`, it will not record the changes till clicking on `Start recording` button.\n * Available only for Redux enhancer, for others use `autoPause`.\n *\n * @default true\n */\n shouldRecordChanges?: boolean;\n /**\n * if specified, whenever clicking on `Pause recording` button and there are actions in the history log, will add this action type.\n * If not specified, will commit when paused. Available only for Redux enhancer.\n *\n * @default \"@@PAUSED\"\"\n */\n pauseActionType?: string;\n /**\n * auto pauses when the extension’s window is not opened, and so has zero impact on your app when not in use.\n * Not available for Redux enhancer (as it already does it but storing the data to be sent).\n *\n * @default false\n */\n autoPause?: boolean;\n /**\n * if specified as `true`, it will not allow any non-monitor actions to be dispatched till clicking on `Unlock changes` button.\n * Available only for Redux enhancer.\n *\n * @default false\n */\n shouldStartLocked?: boolean;\n /**\n * if set to `false`, will not recompute the states on hot reloading (or on replacing the reducers). Available only for Redux enhancer.\n *\n * @default true\n */\n shouldHotReload?: boolean;\n /**\n * if specified as `true`, whenever there's an exception in reducers, the monitors will show the error message, and next actions will not be dispatched.\n *\n * @default false\n */\n shouldCatchErrors?: boolean;\n /**\n * If you want to restrict the extension, specify the features you allow.\n * If not specified, all of the features are enabled. When set as an object, only those included as `true` will be allowed.\n * Note that except `true`/`false`, `import` and `export` can be set as `custom` (which is by default for Redux enhancer), meaning that the importing/exporting occurs on the client side.\n * Otherwise, you'll get/set the data right from the monitor part.\n */\n features?: {\n /**\n * start/pause recording of dispatched actions\n */\n pause?: boolean;\n /**\n * lock/unlock dispatching actions and side effects\n */\n lock?: boolean;\n /**\n * persist states on page reloading\n */\n persist?: boolean;\n /**\n * export history of actions in a file\n */\n export?: boolean | 'custom';\n /**\n * import history of actions from a file\n */\n import?: boolean | 'custom';\n /**\n * jump back and forth (time travelling)\n */\n jump?: boolean;\n /**\n * skip (cancel) actions\n */\n skip?: boolean;\n /**\n * drag and drop actions in the history list\n */\n reorder?: boolean;\n /**\n * dispatch custom actions or action creators\n */\n dispatch?: boolean;\n /**\n * generate tests for the selected actions\n */\n test?: boolean;\n };\n /**\n * Set to true or a stacktrace-returning function to record call stack traces for dispatched actions.\n * Defaults to false.\n */\n trace?: boolean | (<A extends Action>(action: A) => string);\n /**\n * The maximum number of stack trace entries to record per action. Defaults to 10.\n */\n traceLimit?: number;\n}\ntype Compose = typeof compose;\ninterface ComposeWithDevTools {\n (options: DevToolsEnhancerOptions): Compose;\n <StoreExt extends {}>(...funcs: StoreEnhancer<StoreExt>[]): StoreEnhancer<StoreExt>;\n}\n\n/**\n * @public\n */\nexport const composeWithDevTools: ComposeWithDevTools = typeof window !== 'undefined' && (window as any).__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ ? (window as any).__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ : function () {\n if (arguments.length === 0) return undefined;\n if (typeof arguments[0] === 'object') return compose;\n return compose.apply(null, ((arguments as any) as Function[]));\n};\n\n/**\n * @public\n */\nexport const devToolsEnhancer: {\n (options: DevToolsEnhancerOptions): StoreEnhancer<any>;\n} = typeof window !== 'undefined' && (window as any).__REDUX_DEVTOOLS_EXTENSION__ ? (window as any).__REDUX_DEVTOOLS_EXTENSION__ : function () {\n return function (noop) {\n return noop;\n };\n};","import { current, isDraft } from 'immer';\nimport { createSelectorCreator, weakMapMemoize } from 'reselect';\nexport const createDraftSafeSelectorCreator: typeof createSelectorCreator = (...args: unknown[]) => {\n const createSelector = (createSelectorCreator as any)(...args);\n const createDraftSafeSelector = Object.assign((...args: unknown[]) => {\n const selector = createSelector(...args);\n const wrappedSelector = (value: unknown, ...rest: unknown[]) => selector(isDraft(value) ? current(value) : value, ...rest);\n Object.assign(wrappedSelector, selector);\n return (wrappedSelector as any);\n }, {\n withTypes: () => createDraftSafeSelector\n });\n return createDraftSafeSelector;\n};\n\n/**\n * \"Draft-Safe\" version of `reselect`'s `createSelector`:\n * If an `immer`-drafted object is passed into the resulting selector's first argument,\n * the selector will act on the current draft value, instead of returning a cached value\n * that might be possibly outdated if the draft has been modified since.\n * @public\n */\nexport const createDraftSafeSelector = /* @__PURE__ */\ncreateDraftSafeSelectorCreator(weakMapMemoize);","import type { Middleware, StoreEnhancer } from 'redux';\nimport type { Tuple } from './utils';\nexport function safeAssign<T extends object>(target: T, ...args: Array<Partial<NoInfer<T>>>) {\n Object.assign(target, ...args);\n}\n\n/**\n * return True if T is `any`, otherwise return False\n * taken from https://github.com/joonhocho/tsdef\n *\n * @internal\n */\nexport type IsAny<T, True, False = never> =\n// test if we are going the left AND right path in the condition\ntrue | false extends (T extends never ? true : false) ? True : False;\nexport type CastAny<T, CastTo> = IsAny<T, CastTo, T>;\n\n/**\n * return True if T is `unknown`, otherwise return False\n * taken from https://github.com/joonhocho/tsdef\n *\n * @internal\n */\nexport type IsUnknown<T, True, False = never> = unknown extends T ? IsAny<T, False, True> : False;\nexport type FallbackIfUnknown<T, Fallback> = IsUnknown<T, Fallback, T>;\n\n/**\n * @internal\n */\nexport type IfMaybeUndefined<P, True, False> = [undefined] extends [P] ? True : False;\n\n/**\n * @internal\n */\nexport type IfVoid<P, True, False> = [void] extends [P] ? True : False;\n\n/**\n * @internal\n */\nexport type IsEmptyObj<T, True, False = never> = T extends any ? keyof T extends never ? IsUnknown<T, False, IfMaybeUndefined<T, False, IfVoid<T, False, True>>> : False : never;\n\n/**\n * returns True if TS version is above 3.5, False if below.\n * uses feature detection to detect TS version >= 3.5\n * * versions below 3.5 will return `{}` for unresolvable interference\n * * versions above will return `unknown`\n *\n * @internal\n */\nexport type AtLeastTS35<True, False> = [True, False][IsUnknown<ReturnType<<T>() => T>, 0, 1>];\n\n/**\n * @internal\n */\nexport type IsUnknownOrNonInferrable<T, True, False> = AtLeastTS35<IsUnknown<T, True, False>, IsEmptyObj<T, True, IsUnknown<T, True, False>>>;\n\n/**\n * Convert a Union type `(A|B)` to an intersection type `(A&B)`\n */\nexport type UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends (k: infer I) => void ? I : never;\n\n// Appears to have a convenient side effect of ignoring `never` even if that's not what you specified\nexport type ExcludeFromTuple<T, E, Acc extends unknown[] = []> = T extends [infer Head, ...infer Tail] ? ExcludeFromTuple<Tail, E, [...Acc, ...([Head] extends [E] ? [] : [Head])]> : Acc;\ntype ExtractDispatchFromMiddlewareTuple<MiddlewareTuple extends readonly any[], Acc extends {}> = MiddlewareTuple extends [infer Head, ...infer Tail] ? ExtractDispatchFromMiddlewareTuple<Tail, Acc & (Head extends Middleware<infer D> ? IsAny<D, {}, D> : {})> : Acc;\nexport type ExtractDispatchExtensions<M> = M extends Tuple<infer MiddlewareTuple> ? ExtractDispatchFromMiddlewareTuple<MiddlewareTuple, {}> : M extends ReadonlyArray<Middleware> ? ExtractDispatchFromMiddlewareTuple<[...M], {}> : never;\ntype ExtractStoreExtensionsFromEnhancerTuple<EnhancerTuple extends readonly any[], Acc extends {}> = EnhancerTuple extends [infer Head, ...infer Tail] ? ExtractStoreExtensionsFromEnhancerTuple<Tail, Acc & (Head extends StoreEnhancer<infer Ext> ? IsAny<Ext, {}, Ext> : {})> : Acc;\nexport type ExtractStoreExtensions<E> = E extends Tuple<infer EnhancerTuple> ? ExtractStoreExtensionsFromEnhancerTuple<EnhancerTuple, {}> : E extends ReadonlyArray<StoreEnhancer> ? UnionToIntersection<E[number] extends StoreEnhancer<infer Ext> ? Ext extends {} ? IsAny<Ext, {}, Ext> : {} : {}> : never;\ntype ExtractStateExtensionsFromEnhancerTuple<EnhancerTuple extends readonly any[], Acc extends {}> = EnhancerTuple extends [infer Head, ...infer Tail] ? ExtractStateExtensionsFromEnhancerTuple<Tail, Acc & (Head extends StoreEnhancer<any, infer StateExt> ? IsAny<StateExt, {}, StateExt> : {})> : Acc;\nexport type ExtractStateExtensions<E> = E extends Tuple<infer EnhancerTuple> ? ExtractStateExtensionsFromEnhancerTuple<EnhancerTuple, {}> : E extends ReadonlyArray<StoreEnhancer> ? UnionToIntersection<E[number] extends StoreEnhancer<any, infer StateExt> ? StateExt extends {} ? IsAny<StateExt, {}, StateExt> : {} : {}> : never;\n\n/**\n * Helper type. Passes T out again, but boxes it in a way that it cannot\n * \"widen\" the type by accident if it is a generic that should be inferred\n * from elsewhere.\n *\n * @internal\n */\nexport type NoInfer<T> = [T][T extends any ? 0 : never];\nexport type NonUndefined<T> = T extends undefined ? never : T;\nexport type WithRequiredProp<T, K extends keyof T> = Omit<T, K> & Required<Pick<T, K>>;\nexport type WithOptionalProp<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>;\nexport interface TypeGuard<T> {\n (value: any): value is T;\n}\nexport interface HasMatchFunction<T> {\n match: TypeGuard<T>;\n}\nexport const hasMatchFunction = <T,>(v: Matcher<T>): v is HasMatchFunction<T> => {\n return v && typeof (v as HasMatchFunction<T>).match === 'function';\n};\n\n/** @public */\nexport type Matcher<T> = HasMatchFunction<T> | TypeGuard<T>;\n\n/** @public */\nexport type ActionFromMatcher<M extends Matcher<any>> = M extends Matcher<infer T> ? T : never;\nexport type Id<T> = { [K in keyof T]: T[K] } & {};\nexport type Tail<T extends any[]> = T extends [any, ...infer Tail] ? Tail : never;\nexport type UnknownIfNonSpecific<T> = {} extends T ? unknown : T;\n\n/**\n * A Promise that will never reject.\n * @see https://github.com/reduxjs/redux-toolkit/issues/4101\n */\nexport type SafePromise<T> = Promise<T> & {\n __linterBrands: 'SafePromise';\n};\n\n/**\n * Properly wraps a Promise as a {@link SafePromise} with .catch(fallback).\n */\nexport function asSafePromise<Resolved, Rejected>(promise: Promise<Resolved>, fallback: (error: unknown) => Rejected) {\n return (promise.catch(fallback) as SafePromise<Resolved | Rejected>);\n}","import { formatProdErrorMessage as _formatProdErrorMessage } from \"@reduxjs/toolkit\";\nimport { isAction } from 'redux';\nimport type { IsUnknownOrNonInferrable, IfMaybeUndefined, IfVoid, IsAny } from './tsHelpers';\nimport { hasMatchFunction } from './tsHelpers';\n\n/**\n * An action with a string type and an associated payload. This is the\n * type of action returned by `createAction()` action creators.\n *\n * @template P The type of the action's payload.\n * @template T the type used for the action type.\n * @template M The type of the action's meta (optional)\n * @template E The type of the action's error (optional)\n *\n * @public\n */\nexport type PayloadAction<P = void, T extends string = string, M = never, E = never> = {\n payload: P;\n type: T;\n} & ([M] extends [never] ? {} : {\n meta: M;\n}) & ([E] extends [never] ? {} : {\n error: E;\n});\n\n/**\n * A \"prepare\" method to be used as the second parameter of `createAction`.\n * Takes any number of arguments and returns a Flux Standard Action without\n * type (will be added later) that *must* contain a payload (might be undefined).\n *\n * @public\n */\nexport type PrepareAction<P> = ((...args: any[]) => {\n payload: P;\n}) | ((...args: any[]) => {\n payload: P;\n meta: any;\n}) | ((...args: any[]) => {\n payload: P;\n error: any;\n}) | ((...args: any[]) => {\n payload: P;\n meta: any;\n error: any;\n});\n\n/**\n * Internal version of `ActionCreatorWithPreparedPayload`. Not to be used externally.\n *\n * @internal\n */\nexport type _ActionCreatorWithPreparedPayload<PA extends PrepareAction<any> | void, T extends string = string> = PA extends PrepareAction<infer P> ? ActionCreatorWithPreparedPayload<Parameters<PA>, P, T, ReturnType<PA> extends {\n error: infer E;\n} ? E : never, ReturnType<PA> extends {\n meta: infer M;\n} ? M : never> : void;\n\n/**\n * Basic type for all action creators.\n *\n * @inheritdoc {redux#ActionCreator}\n */\nexport type BaseActionCreator<P, T extends string, M = never, E = never> = {\n type: T;\n match: (action: unknown) => action is PayloadAction<P, T, M, E>;\n};\n\n/**\n * An action creator that takes multiple arguments that are passed\n * to a `PrepareAction` method to create the final Action.\n * @typeParam Args arguments for the action creator function\n * @typeParam P `payload` type\n * @typeParam T `type` name\n * @typeParam E optional `error` type\n * @typeParam M optional `meta` type\n *\n * @inheritdoc {redux#ActionCreator}\n *\n * @public\n */\nexport interface ActionCreatorWithPreparedPayload<Args extends unknown[], P, T extends string = string, E = never, M = never> extends BaseActionCreator<P, T, M, E> {\n /**\n * Calling this {@link redux#ActionCreator} with `Args` will return\n * an Action with a payload of type `P` and (depending on the `PrepareAction`\n * method used) a `meta`- and `error` property of types `M` and `E` respectively.\n */\n (...args: Args): PayloadAction<P, T, M, E>;\n}\n\n/**\n * An action creator of type `T` that takes an optional payload of type `P`.\n *\n * @inheritdoc {redux#ActionCreator}\n *\n * @public\n */\nexport interface ActionCreatorWithOptionalPayload<P, T extends string = string> extends BaseActionCreator<P, T> {\n /**\n * Calling this {@link redux#ActionCreator} with an argument will\n * return a {@link PayloadAction} of type `T` with a payload of `P`.\n * Calling it without an argument will return a PayloadAction with a payload of `undefined`.\n */\n (payload?: P): PayloadAction<P, T>;\n}\n\n/**\n * An action creator of type `T` that takes no payload.\n *\n * @inheritdoc {redux#ActionCreator}\n *\n * @public\n */\nexport interface ActionCreatorWithoutPayload<T extends string = string> extends BaseActionCreator<undefined, T> {\n /**\n * Calling this {@link redux#ActionCreator} will\n * return a {@link PayloadAction} of type `T` with a payload of `undefined`\n */\n (noArgument: void): PayloadAction<undefined, T>;\n}\n\n/**\n * An action creator of type `T` that requires a payload of type P.\n *\n * @inheritdoc {redux#ActionCreator}\n *\n * @public\n */\nexport interface ActionCreatorWithPayload<P, T extends string = string> extends BaseActionCreator<P, T> {\n /**\n * Calling this {@link redux#ActionCreator} with an argument will\n * return a {@link PayloadAction} of type `T` with a payload of `P`\n */\n (payload: P): PayloadAction<P, T>;\n}\n\n/**\n * An action creator of type `T` whose `payload` type could not be inferred. Accepts everything as `payload`.\n *\n * @inheritdoc {redux#ActionCreator}\n *\n * @public\n */\nexport interface ActionCreatorWithNonInferrablePayload<T extends string = string> extends BaseActionCreator<unknown, T> {\n /**\n * Calling this {@link redux#ActionCreator} with an argument will\n * return a {@link PayloadAction} of type `T` with a payload\n * of exactly the type of the argument.\n */\n <PT extends unknown>(payload: PT): PayloadAction<PT, T>;\n}\n\n/**\n * An action creator that produces actions with a `payload` attribute.\n *\n * @typeParam P the `payload` type\n * @typeParam T the `type` of the resulting action\n * @typeParam PA if the resulting action is preprocessed by a `prepare` method, the signature of said method.\n *\n * @public\n */\nexport type PayloadActionCreator<P = void, T extends string = string, PA extends PrepareAction<P> | void = void> = IfPrepareActionMethodProvided<PA, _ActionCreatorWithPreparedPayload<PA, T>,\n// else\nIsAny<P, ActionCreatorWithPayload<any, T>, IsUnknownOrNonInferrable<P, ActionCreatorWithNonInferrablePayload<T>,\n// else\nIfVoid<P, ActionCreatorWithoutPayload<T>,\n// else\nIfMaybeUndefined<P, ActionCreatorWithOptionalPayload<P, T>,\n// else\nActionCreatorWithPayload<P, T>>>>>>;\n\n/**\n * A utility function to create an action creator for the given action type\n * string. The action creator accepts a single argument, which will be included\n * in the action object as a field called payload. The action creator function\n * will also have its toString() overridden so that it returns the action type.\n *\n * @param type The action type to use for created actions.\n * @param prepare (optional) a method that takes any number of arguments and returns { payload } or { payload, meta }.\n * If this is given, the resulting action creator will pass its arguments to this method to calculate payload & meta.\n *\n * @public\n */\nexport function createAction<P = void, T extends string = string>(type: T): PayloadActionCreator<P, T>;\n\n/**\n * A utility function to create an action creator for the given action type\n * string. The action creator accepts a single argument, which will be included\n * in the action object as a field called payload. The action creator function\n * will also have its toString() overridden so that it returns the action type.\n *\n * @param type The action type to use for created actions.\n * @param prepare (optional) a method that takes any number of arguments and returns { payload } or { payload, meta }.\n * If this is given, the resulting action creator will pass its arguments to this method to calculate payload & meta.\n *\n * @public\n */\nexport function createAction<PA extends PrepareAction<any>, T extends string = string>(type: T, prepareAction: PA): PayloadActionCreator<ReturnType<PA>['payload'], T, PA>;\nexport function createAction(type: string, prepareAction?: Function): any {\n function actionCreator(...args: any[]) {\n if (prepareAction) {\n let prepared = prepareAction(...args);\n if (!prepared) {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage(0) : 'prepareAction did not return an object');\n }\n return {\n type,\n payload: prepared.payload,\n ...('meta' in prepared && {\n meta: prepared.meta\n }),\n ...('error' in prepared && {\n error: prepared.error\n })\n };\n }\n return {\n type,\n payload: args[0]\n };\n }\n actionCreator.toString = () => `${type}`;\n actionCreator.type = type;\n actionCreator.match = (action: unknown): action is PayloadAction => isAction(action) && action.type === type;\n return actionCreator;\n}\n\n/**\n * Returns true if value is an RTK-like action creator, with a static type property and match method.\n */\nexport function isActionCreator(action: unknown): action is BaseActionCreator<unknown, string> & Function {\n return typeof action === 'function' && 'type' in action &&\n // hasMatchFunction only wants Matchers but I don't see the point in rewriting it\n hasMatchFunction((action as any));\n}\n\n/**\n * Returns true if value is an action with a string type and valid Flux Standard Action keys.\n */\nexport function isFSA(action: unknown): action is {\n type: string;\n payload?: unknown;\n error?: unknown;\n meta?: unknown;\n} {\n return isAction(action) && Object.keys(action).every(isValidKey);\n}\nfunction isValidKey(key: string) {\n return ['type', 'payload', 'error', 'meta'].indexOf(key) > -1;\n}\n\n// helper types for more readable typings\n\ntype IfPrepareActionMethodProvided<PA extends PrepareAction<any> | void, True, False> = PA extends (...args: any[]) => any ? True : False;","import { runIdentityFunctionCheck } from './devModeChecks/identityFunctionCheck'\r\nimport { runInputStabilityCheck } from './devModeChecks/inputStabilityCheck'\r\nimport { globalDevModeChecks } from './devModeChecks/setGlobalDevModeChecks'\r\n// eslint-disable-next-line @typescript-eslint/consistent-type-imports\r\nimport type {\r\n DevModeChecks,\r\n Selector,\r\n SelectorArray,\r\n DevModeChecksExecutionInfo\r\n} from './types'\r\n\r\nexport const NOT_FOUND = /* @__PURE__ */ Symbol('NOT_FOUND')\r\nexport type NOT_FOUND_TYPE = typeof NOT_FOUND\r\n\r\n/**\r\n * Assert that the provided value is a function. If the assertion fails,\r\n * a `TypeError` is thrown with an optional custom error message.\r\n *\r\n * @param func - The value to be checked.\r\n * @param errorMessage - An optional custom error message to use if the assertion fails.\r\n * @throws A `TypeError` if the assertion fails.\r\n */\r\nexport function assertIsFunction<FunctionType extends Function>(\r\n func: unknown,\r\n errorMessage = `expected a function, instead received ${typeof func}`\r\n): asserts func is FunctionType {\r\n if (typeof func !== 'function') {\r\n throw new TypeError(errorMessage)\r\n }\r\n}\r\n\r\n/**\r\n * Assert that the provided value is an object. If the assertion fails,\r\n * a `TypeError` is thrown with an optional custom error message.\r\n *\r\n * @param object - The value to be checked.\r\n * @param errorMessage - An optional custom error message to use if the assertion fails.\r\n * @throws A `TypeError` if the assertion fails.\r\n */\r\nexport function assertIsObject<ObjectType extends Record<string, unknown>>(\r\n object: unknown,\r\n errorMessage = `expected an object, instead received ${typeof object}`\r\n): asserts object is ObjectType {\r\n if (typeof object !== 'object') {\r\n throw new TypeError(errorMessage)\r\n }\r\n}\r\n\r\n/**\r\n * Assert that the provided array is an array of functions. If the assertion fails,\r\n * a `TypeError` is thrown with an optional custom error message.\r\n *\r\n * @param array - The array to be checked.\r\n * @param errorMessage - An optional custom error message to use if the assertion fails.\r\n * @throws A `TypeError` if the assertion fails.\r\n */\r\nexport function assertIsArrayOfFunctions<FunctionType extends Function>(\r\n array: unknown[],\r\n errorMessage = `expected all items to be functions, instead received the following types: `\r\n): asserts array is FunctionType[] {\r\n if (\r\n !array.every((item): item is FunctionType => typeof item === 'function')\r\n ) {\r\n const itemTypes = array\r\n .map(item =>\r\n typeof item === 'function'\r\n ? `function ${item.name || 'unnamed'}()`\r\n : typeof item\r\n )\r\n .join(', ')\r\n throw new TypeError(`${errorMessage}[${itemTypes}]`)\r\n }\r\n}\r\n\r\n/**\r\n * Ensure that the input is an array. If it's already an array, it's returned as is.\r\n * If it's not an array, it will be wrapped in a new array.\r\n *\r\n * @param item - The item to be checked.\r\n * @returns An array containing the input item. If the input is already an array, it's returned without modification.\r\n */\r\nexport const ensureIsArray = (item: unknown) => {\r\n return Array.isArray(item) ? item : [item]\r\n}\r\n\r\n/**\r\n * Extracts the \"dependencies\" / \"input selectors\" from the arguments of `createSelector`.\r\n *\r\n * @param createSelectorArgs - Arguments passed to `createSelector` as an array.\r\n * @returns An array of \"input selectors\" / \"dependencies\".\r\n * @throws A `TypeError` if any of the input selectors is not function.\r\n */\r\nexport function getDependencies(createSelectorArgs: unknown[]) {\r\n const dependencies = Array.isArray(createSelectorArgs[0])\r\n ? createSelectorArgs[0]\r\n : createSelectorArgs\r\n\r\n assertIsArrayOfFunctions<Selector>(\r\n dependencies,\r\n `createSelector expects all input-selectors to be functions, but received the following types: `\r\n )\r\n\r\n return dependencies as SelectorArray\r\n}\r\n\r\n/**\r\n * Runs each input selector and returns their collective results as an array.\r\n *\r\n * @param dependencies - An array of \"dependencies\" or \"input selectors\".\r\n * @param inputSelectorArgs - An array of arguments being passed to the input selectors.\r\n * @returns An array of input selector results.\r\n */\r\nexport function collectInputSelectorResults(\r\n dependencies: SelectorArray,\r\n inputSelectorArgs: unknown[] | IArguments\r\n) {\r\n const inputSelectorResults = []\r\n const { length } = dependencies\r\n for (let i = 0; i < length; i++) {\r\n // @ts-ignore\r\n // apply arguments instead of spreading and mutate a local list of params for performance.\r\n inputSelectorResults.push(dependencies[i].apply(null, inputSelectorArgs))\r\n }\r\n return inputSelectorResults\r\n}\r\n\r\n/**\r\n * Retrieves execution information for development mode checks.\r\n *\r\n * @param devModeChecks - Custom Settings for development mode checks. These settings will override the global defaults.\r\n * @param firstRun - Indicates whether it is the first time the selector has run.\r\n * @returns An object containing the execution information for each development mode check.\r\n */\r\nexport const getDevModeChecksExecutionInfo = (\r\n firstRun: boolean,\r\n devModeChecks: Partial<DevModeChecks>\r\n) => {\r\n const { identityFunctionCheck, inputStabilityCheck } = {\r\n ...globalDevModeChecks,\r\n ...devModeChecks\r\n }\r\n return {\r\n identityFunctionCheck: {\r\n shouldRun:\r\n identityFunctionCheck === 'always' ||\r\n (identityFunctionCheck === 'once' && firstRun),\r\n run: runIdentityFunctionCheck\r\n },\r\n inputStabilityCheck: {\r\n shouldRun:\r\n inputStabilityCheck === 'always' ||\r\n (inputStabilityCheck === 'once' && firstRun),\r\n run: runInputStabilityCheck\r\n }\r\n } satisfies DevModeChecksExecutionInfo\r\n}\r\n","import type { Middleware, UnknownAction } from 'redux';\nimport type { ThunkMiddleware } from 'redux-thunk';\nimport { thunk as thunkMiddleware, withExtraArgument } from 'redux-thunk';\nimport type { ActionCreatorInvariantMiddlewareOptions } from './actionCreatorInvariantMiddleware';\nimport { createActionCreatorInvariantMiddleware } from './actionCreatorInvariantMiddleware';\nimport type { ImmutableStateInvariantMiddlewareOptions } from './immutableStateInvariantMiddleware';\n/* PROD_START_REMOVE_UMD */\nimport { createImmutableStateInvariantMiddleware } from './immutableStateInvariantMiddleware';\n/* PROD_STOP_REMOVE_UMD */\n\nimport type { SerializableStateInvariantMiddlewareOptions } from './serializableStateInvariantMiddleware';\nimport { createSerializableStateInvariantMiddleware } from './serializableStateInvariantMiddleware';\nimport type { ExcludeFromTuple } from './tsHelpers';\nimport { Tuple } from './utils';\nfunction isBoolean(x: any): x is boolean {\n return typeof x === 'boolean';\n}\ninterface ThunkOptions<E = any> {\n extraArgument: E;\n}\ninterface GetDefaultMiddlewareOptions {\n thunk?: boolean | ThunkOptions;\n immutableCheck?: boolean | ImmutableStateInvariantMiddlewareOptions;\n serializableCheck?: boolean | SerializableStateInvariantMiddlewareOptions;\n actionCreatorCheck?: boolean | ActionCreatorInvariantMiddlewareOptions;\n}\nexport type ThunkMiddlewareFor<S, O extends GetDefaultMiddlewareOptions = {}> = O extends {\n thunk: false;\n} ? never : O extends {\n thunk: {\n extraArgument: infer E;\n };\n} ? ThunkMiddleware<S, UnknownAction, E> : ThunkMiddleware<S, UnknownAction>;\nexport type GetDefaultMiddleware<S = any> = <O extends GetDefaultMiddlewareOptions = {\n thunk: true;\n immutableCheck: true;\n serializableCheck: true;\n actionCreatorCheck: true;\n}>(options?: O) => Tuple<ExcludeFromTuple<[ThunkMiddlewareFor<S, O>], never>>;\nexport const buildGetDefaultMiddleware = <S = any,>(): GetDefaultMiddleware<S> => function getDefaultMiddleware(options) {\n const {\n thunk = true,\n immutableCheck = true,\n serializableCheck = true,\n actionCreatorCheck = true\n } = options ?? {};\n let middlewareArray = new Tuple<Middleware[]>();\n if (thunk) {\n if (isBoolean(thunk)) {\n middlewareArray.push(thunkMiddleware);\n } else {\n middlewareArray.push(withExtraArgument(thunk.extraArgument));\n }\n }\n if (process.env.NODE_ENV !== 'production') {\n if (immutableCheck) {\n /* PROD_START_REMOVE_UMD */\n let immutableOptions: ImmutableStateInvariantMiddlewareOptions = {};\n if (!isBoolean(immutableCheck)) {\n immutableOptions = immutableCheck;\n }\n middlewareArray.unshift(createImmutableStateInvariantMiddleware(immutableOptions));\n /* PROD_STOP_REMOVE_UMD */\n }\n if (serializableCheck) {\n let serializableOptions: SerializableStateInvariantMiddlewareOptions = {};\n if (!isBoolean(serializableCheck)) {\n serializableOptions = serializableCheck;\n }\n middlewareArray.push(createSerializableStateInvariantMiddleware(serializableOptions));\n }\n if (actionCreatorCheck) {\n let actionCreatorOptions: ActionCreatorInvariantMiddlewareOptions = {};\n if (!isBoolean(actionCreatorCheck)) {\n actionCreatorOptions = actionCreatorCheck;\n }\n middlewareArray.unshift(createActionCreatorInvariantMiddleware(actionCreatorOptions));\n }\n }\n return (middlewareArray as any);\n};","import type { StoreEnhancer } from 'redux';\nexport const SHOULD_AUTOBATCH = 'RTK_autoBatch';\nexport const prepareAutoBatched = <T,>() => (payload: T): {\n payload: T;\n meta: unknown;\n} => ({\n payload,\n meta: {\n [SHOULD_AUTOBATCH]: true\n }\n});\nconst createQueueWithTimer = (timeout: number) => {\n return (notify: () => void) => {\n setTimeout(notify, timeout);\n };\n};\n\n// requestAnimationFrame won't exist in SSR environments.\n// Fall back to a vague approximation just to keep from erroring.\nconst rAF = typeof window !== 'undefined' && window.requestAnimationFrame ? window.requestAnimationFrame : createQueueWithTimer(10);\nexport type AutoBatchOptions = {\n type: 'tick';\n} | {\n type: 'timer';\n timeout: number;\n} | {\n type: 'raf';\n} | {\n type: 'callback';\n queueNotification: (notify: () => void) => void;\n};\n\n/**\n * A Redux store enhancer that watches for \"low-priority\" actions, and delays\n * notifying subscribers until either the queued callback executes or the\n * next \"standard-priority\" action is dispatched.\n *\n * This allows dispatching multiple \"low-priority\" actions in a row with only\n * a single subscriber notification to the UI after the sequence of actions\n * is finished, thus improving UI re-render performance.\n *\n * Watches for actions with the `action.meta[SHOULD_AUTOBATCH]` attribute.\n * This can be added to `action.meta` manually, or by using the\n * `prepareAutoBatched` helper.\n *\n * By default, it will queue a notification for the end of the event loop tick.\n * However, you can pass several other options to configure the behavior:\n * - `{type: 'tick'}`: queues using `queueMicrotask`\n * - `{type: 'timer', timeout: number}`: queues using `setTimeout`\n * - `{type: 'raf'}`: queues using `requestAnimationFrame` (default)\n * - `{type: 'callback', queueNotification: (notify: () => void) => void}`: lets you provide your own callback\n *\n *\n */\nexport const autoBatchEnhancer = (options: AutoBatchOptions = {\n type: 'raf'\n}): StoreEnhancer => next => (...args) => {\n const store = next(...args);\n let notifying = true;\n let shouldNotifyAtEndOfTick = false;\n let notificationQueued = false;\n const listeners = new Set<() => void>();\n const queueCallback = options.type === 'tick' ? queueMicrotask : options.type === 'raf' ? rAF : options.type === 'callback' ? options.queueNotification : createQueueWithTimer(options.timeout);\n const notifyListeners = () => {\n // We're running at the end of the event loop tick.\n // Run the real listener callbacks to actually update the UI.\n notificationQueued = false;\n if (shouldNotifyAtEndOfTick) {\n shouldNotifyAtEndOfTick = false;\n listeners.forEach(l => l());\n }\n };\n return Object.assign({}, store, {\n // Override the base `store.subscribe` method to keep original listeners\n // from running if we're delaying notifications\n subscribe(listener: () => void) {\n // Each wrapped listener will only call the real listener if\n // the `notifying` flag is currently active when it's called.\n // This lets the base store work as normal, while the actual UI\n // update becomes controlled by this enhancer.\n const wrappedListener: typeof listener = () => notifying && listener();\n const unsubscribe = store.subscribe(wrappedListener);\n listeners.add(listener);\n return () => {\n unsubscribe();\n listeners.delete(listener);\n };\n },\n // Override the base `store.dispatch` method so that we can check actions\n // for the `shouldAutoBatch` flag and determine if batching is active\n dispatch(action: any) {\n try {\n // If the action does _not_ have the `shouldAutoBatch` flag,\n // we resume/continue normal notify-after-each-dispatch behavior\n notifying = !action?.meta?.[SHOULD_AUTOBATCH];\n // If a `notifyListeners` microtask was queued, you can't cancel it.\n // Instead, we set a flag so that it's a no-op when it does run\n shouldNotifyAtEndOfTick = !notifying;\n if (shouldNotifyAtEndOfTick) {\n // We've seen at least 1 action with `SHOULD_AUTOBATCH`. Try to queue\n // a microtask to notify listeners at the end of the event loop tick.\n // Make sure we only enqueue this _once_ per tick.\n if (!notificationQueued) {\n notificationQueued = true;\n queueCallback(notifyListeners);\n }\n }\n // Go ahead and process the action as usual, including reducers.\n // If normal notification behavior is enabled, the store will notify\n // all of its own listeners, and the wrapper callbacks above will\n // see `notifying` is true and pass on to the real listener callbacks.\n // If we're \"batching\" behavior, then the wrapped callbacks will\n // bail out, causing the base store notification behavior to be no-ops.\n return store.dispatch(action);\n } finally {\n // Assume we're back to normal behavior after each action\n notifying = true;\n }\n }\n });\n};","import type { StoreEnhancer } from 'redux';\nimport type { AutoBatchOptions } from './autoBatchEnhancer';\nimport { autoBatchEnhancer } from './autoBatchEnhancer';\nimport { Tuple } from './utils';\nimport type { Middlewares } from './configureStore';\nimport type { ExtractDispatchExtensions } from './tsHelpers';\ntype GetDefaultEnhancersOptions = {\n autoBatch?: boolean | AutoBatchOptions;\n};\nexport type GetDefaultEnhancers<M extends Middlewares<any>> = (options?: GetDefaultEnhancersOptions) => Tuple<[StoreEnhancer<{\n dispatch: ExtractDispatchExtensions<M>;\n}>]>;\nexport const buildGetDefaultEnhancers = <M extends Middlewares<any>,>(middlewareEnhancer: StoreEnhancer<{\n dispatch: ExtractDispatchExtensions<M>;\n}>): GetDefaultEnhancers<M> => function getDefaultEnhancers(options) {\n const {\n autoBatch = true\n } = options ?? {};\n let enhancerArray = new Tuple<StoreEnhancer[]>(middlewareEnhancer);\n if (autoBatch) {\n enhancerArray.push(autoBatchEnhancer(typeof autoBatch === 'object' ? autoBatch : undefined));\n }\n return (enhancerArray as any);\n};","import { formatProdErrorMessage as _formatProdErrorMessage, formatProdErrorMessage as _formatProdErrorMessage2, formatProdErrorMessage as _formatProdErrorMessage3, formatProdErrorMessage as _formatProdErrorMessage4, formatProdErrorMessage as _formatProdErrorMessage5, formatProdErrorMessage as _formatProdErrorMessage6, formatProdErrorMessage as _formatProdErrorMessage7 } from \"@reduxjs/toolkit\";\nimport type { Reducer, ReducersMapObject, Middleware, Action, StoreEnhancer, Store, UnknownAction } from 'redux';\nimport { applyMiddleware, createStore, compose, combineReducers, isPlainObject } from 'redux';\nimport type { DevToolsEnhancerOptions as DevToolsOptions } from './devtoolsExtension';\nimport { composeWithDevTools } from './devtoolsExtension';\nimport type { ThunkMiddlewareFor, GetDefaultMiddleware } from './getDefaultMiddleware';\nimport { buildGetDefaultMiddleware } from './getDefaultMiddleware';\nimport type { ExtractDispatchExtensions, ExtractStoreExtensions, ExtractStateExtensions, UnknownIfNonSpecific } from './tsHelpers';\nimport type { Tuple } from './utils';\nimport type { GetDefaultEnhancers } from './getDefaultEnhancers';\nimport { buildGetDefaultEnhancers } from './getDefaultEnhancers';\n\n/**\n * Options for `configureStore()`.\n *\n * @public\n */\nexport interface ConfigureStoreOptions<S = any, A extends Action = UnknownAction, M extends Tuple<Middlewares<S>> = Tuple<Middlewares<S>>, E extends Tuple<Enhancers> = Tuple<Enhancers>, P = S> {\n /**\n * A single reducer function that will be used as the root reducer, or an\n * object of slice reducers that will be passed to `combineReducers()`.\n */\n reducer: Reducer<S, A, P> | ReducersMapObject<S, A, P>;\n\n /**\n * An array of Redux middleware to install, or a callback receiving `getDefaultMiddleware` and returning a Tuple of middleware.\n * If not supplied, defaults to the set of middleware returned by `getDefaultMiddleware()`.\n *\n * @example `middleware: (gDM) => gDM().concat(logger, apiMiddleware, yourCustomMiddleware)`\n * @see https://redux-toolkit.js.org/api/getDefaultMiddleware#intended-usage\n */\n middleware?: (getDefaultMiddleware: GetDefaultMiddleware<S>) => M;\n\n /**\n * Whether to enable Redux DevTools integration. Defaults to `true`.\n *\n * Additional configuration can be done by passing Redux DevTools options\n */\n devTools?: boolean | DevToolsOptions;\n\n /**\n * The initial state, same as Redux's createStore.\n * You may optionally specify it to hydrate the state\n * from the server in universal apps, or to restore a previously serialized\n * user session. If you use `combineReducers()` to produce the root reducer\n * function (either directly or indirectly by passing an object as `reducer`),\n * this must be an object with the same shape as the reducer map keys.\n */\n // we infer here, and instead complain if the reducer doesn't match\n preloadedState?: P;\n\n /**\n * The store enhancers to apply. See Redux's `createStore()`.\n * All enhancers will be included before the DevTools Extension enhancer.\n * If you need to customize the order of enhancers, supply a callback\n * function that will receive a `getDefaultEnhancers` function that returns a Tuple,\n * and should return a Tuple of enhancers (such as `getDefaultEnhancers().concat(offline)`).\n * If you only need to add middleware, you can use the `middleware` parameter instead.\n */\n enhancers?: (getDefaultEnhancers: GetDefaultEnhancers<M>) => E;\n}\nexport type Middlewares<S> = ReadonlyArray<Middleware<{}, S>>;\ntype Enhancers = ReadonlyArray<StoreEnhancer>;\n\n/**\n * A Redux store returned by `configureStore()`. Supports dispatching\n * side-effectful _thunks_ in addition to plain actions.\n *\n * @public\n */\nexport type EnhancedStore<S = any, A extends Action = UnknownAction, E extends Enhancers = Enhancers> = ExtractStoreExtensions<E> & Store<S, A, UnknownIfNonSpecific<ExtractStateExtensions<E>>>;\n\n/**\n * A friendly abstraction over the standard Redux `createStore()` function.\n *\n * @param options The store configuration.\n * @returns A configured Redux store.\n *\n * @public\n */\nexport function configureStore<S = any, A extends Action = UnknownAction, M extends Tuple<Middlewares<S>> = Tuple<[ThunkMiddlewareFor<S>]>, E extends Tuple<Enhancers> = Tuple<[StoreEnhancer<{\n dispatch: ExtractDispatchExtensions<M>;\n}>, StoreEnhancer]>, P = S>(options: ConfigureStoreOptions<S, A, M, E, P>): EnhancedStore<S, A, E> {\n const getDefaultMiddleware = buildGetDefaultMiddleware<S>();\n const {\n reducer = undefined,\n middleware,\n devTools = true,\n preloadedState = undefined,\n enhancers = undefined\n } = options || {};\n let rootReducer: Reducer<S, A, P>;\n if (typeof reducer === 'function') {\n rootReducer = reducer;\n } else if (isPlainObject(reducer)) {\n rootReducer = ((combineReducers(reducer) as unknown) as Reducer<S, A, P>);\n } else {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage(1) : '`reducer` is a required argument, and must be a function or an object of functions that can be passed to combineReducers');\n }\n if (process.env.NODE_ENV !== 'production' && middleware && typeof middleware !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage2(2) : '`middleware` field must be a callback');\n }\n let finalMiddleware: Tuple<Middlewares<S>>;\n if (typeof middleware === 'function') {\n finalMiddleware = middleware(getDefaultMiddleware);\n if (process.env.NODE_ENV !== 'production' && !Array.isArray(finalMiddleware)) {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage3(3) : 'when using a middleware builder function, an array of middleware must be returned');\n }\n } else {\n finalMiddleware = getDefaultMiddleware();\n }\n if (process.env.NODE_ENV !== 'production' && finalMiddleware.some((item: any) => typeof item !== 'function')) {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage4(4) : 'each middleware provided to configureStore must be a function');\n }\n let finalCompose = compose;\n if (devTools) {\n finalCompose = composeWithDevTools({\n // Enable capture of stack traces for dispatched Redux actions\n trace: process.env.NODE_ENV !== 'production',\n ...(typeof devTools === 'object' && devTools)\n });\n }\n const middlewareEnhancer = applyMiddleware(...finalMiddleware);\n const getDefaultEnhancers = buildGetDefaultEnhancers<M>(middlewareEnhancer);\n if (process.env.NODE_ENV !== 'production' && enhancers && typeof enhancers !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage5(5) : '`enhancers` field must be a callback');\n }\n let storeEnhancers = typeof enhancers === 'function' ? enhancers(getDefaultEnhancers) : getDefaultEnhancers();\n if (process.env.NODE_ENV !== 'production' && !Array.isArray(storeEnhancers)) {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage6(6) : '`enhancers` callback must return an array');\n }\n if (process.env.NODE_ENV !== 'production' && storeEnhancers.some((item: any) => typeof item !== 'function')) {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage7(7) : 'each enhancer provided to configureStore must be a function');\n }\n if (process.env.NODE_ENV !== 'production' && finalMiddleware.length && !storeEnhancers.includes(middlewareEnhancer)) {\n console.error('middlewares were provided, but middleware enhancer was not included in final enhancers - make sure to call `getDefaultEnhancers`');\n }\n const composedEnhancer: StoreEnhancer<any> = finalCompose(...storeEnhancers);\n return createStore(rootReducer, (preloadedState as P), composedEnhancer);\n}","import { formatProdErrorMessage as _formatProdErrorMessage, formatProdErrorMessage as _formatProdErrorMessage2, formatProdErrorMessage as _formatProdErrorMessage3, formatProdErrorMessage as _formatProdErrorMessage4, formatProdErrorMessage as _formatProdErrorMessage5, formatProdErrorMessage as _formatProdErrorMessage6 } from \"@reduxjs/toolkit\";\nimport type { Action } from 'redux';\nimport type { CaseReducer, CaseReducers, ActionMatcherDescriptionCollection } from './createReducer';\nimport type { TypeGuard } from './tsHelpers';\nexport type TypedActionCreator<Type extends string> = {\n (...args: any[]): Action<Type>;\n type: Type;\n};\n\n/**\n * A builder for an action <-> reducer map.\n *\n * @public\n */\nexport interface ActionReducerMapBuilder<State> {\n /**\n * Adds a case reducer to handle a single exact action type.\n * @remarks\n * All calls to `builder.addCase` must come before any calls to `builder.addMatcher` or `builder.addDefaultCase`.\n * @param actionCreator - Either a plain action type string, or an action creator generated by [`createAction`](./createAction) that can be used to determine the action type.\n * @param reducer - The actual case reducer function.\n */\n addCase<ActionCreator extends TypedActionCreator<string>>(actionCreator: ActionCreator, reducer: CaseReducer<State, ReturnType<ActionCreator>>): ActionReducerMapBuilder<State>;\n /**\n * Adds a case reducer to handle a single exact action type.\n * @remarks\n * All calls to `builder.addCase` must come before any calls to `builder.addMatcher` or `builder.addDefaultCase`.\n * @param actionCreator - Either a plain action type string, or an action creator generated by [`createAction`](./createAction) that can be used to determine the action type.\n * @param reducer - The actual case reducer function.\n */\n addCase<Type extends string, A extends Action<Type>>(type: Type, reducer: CaseReducer<State, A>): ActionReducerMapBuilder<State>;\n\n /**\n * Allows you to match your incoming actions against your own filter function instead of only the `action.type` property.\n * @remarks\n * If multiple matcher reducers match, all of them will be executed in the order\n * they were defined in - even if a case reducer already matched.\n * All calls to `builder.addMatcher` must come after any calls to `builder.addCase` and before any calls to `builder.addDefaultCase`.\n * @param matcher - A matcher function. In TypeScript, this should be a [type predicate](https://www.typescriptlang.org/docs/handbook/2/narrowing.html#using-type-predicates)\n * function\n * @param reducer - The actual case reducer function.\n *\n * @example\n ```ts\n import {\n createAction,\n createReducer,\n AsyncThunk,\n UnknownAction,\n } from \"@reduxjs/toolkit\";\n type GenericAsyncThunk = AsyncThunk<unknown, unknown, any>;\n type PendingAction = ReturnType<GenericAsyncThunk[\"pending\"]>;\n type RejectedAction = ReturnType<GenericAsyncThunk[\"rejected\"]>;\n type FulfilledAction = ReturnType<GenericAsyncThunk[\"fulfilled\"]>;\n const initialState: Record<string, string> = {};\n const resetAction = createAction(\"reset-tracked-loading-state\");\n function isPendingAction(action: UnknownAction): action is PendingAction {\n return typeof action.type === \"string\" && action.type.endsWith(\"/pending\");\n }\n const reducer = createReducer(initialState, (builder) => {\n builder\n .addCase(resetAction, () => initialState)\n // matcher can be defined outside as a type predicate function\n .addMatcher(isPendingAction, (state, action) => {\n state[action.meta.requestId] = \"pending\";\n })\n .addMatcher(\n // matcher can be defined inline as a type predicate function\n (action): action is RejectedAction => action.type.endsWith(\"/rejected\"),\n (state, action) => {\n state[action.meta.requestId] = \"rejected\";\n }\n )\n // matcher can just return boolean and the matcher can receive a generic argument\n .addMatcher<FulfilledAction>(\n (action) => action.type.endsWith(\"/fulfilled\"),\n (state, action) => {\n state[action.meta.requestId] = \"fulfilled\";\n }\n );\n });\n ```\n */\n addMatcher<A>(matcher: TypeGuard<A> | ((action: any) => boolean), reducer: CaseReducer<State, A extends Action ? A : A & Action>): Omit<ActionReducerMapBuilder<State>, 'addCase'>;\n\n /**\n * Adds a \"default case\" reducer that is executed if no case reducer and no matcher\n * reducer was executed for this action.\n * @param reducer - The fallback \"default case\" reducer function.\n *\n * @example\n ```ts\n import { createReducer } from '@reduxjs/toolkit'\n const initialState = { otherActions: 0 }\n const reducer = createReducer(initialState, builder => {\n builder\n // .addCase(...)\n // .addMatcher(...)\n .addDefaultCase((state, action) => {\n state.otherActions++\n })\n })\n ```\n */\n addDefaultCase(reducer: CaseReducer<State, Action>): {};\n}\nexport function executeReducerBuilderCallback<S>(builderCallback: (builder: ActionReducerMapBuilder<S>) => void): [CaseReducers<S, any>, ActionMatcherDescriptionCollection<S>, CaseReducer<S, Action> | undefined] {\n const actionsMap: CaseReducers<S, any> = {};\n const actionMatchers: ActionMatcherDescriptionCollection<S> = [];\n let defaultCaseReducer: CaseReducer<S, Action> | undefined;\n const builder = {\n addCase(typeOrActionCreator: string | TypedActionCreator<any>, reducer: CaseReducer<S>) {\n if (process.env.NODE_ENV !== 'production') {\n /*\n to keep the definition by the user in line with actual behavior,\n we enforce `addCase` to always be called before calling `addMatcher`\n as matching cases take precedence over matchers\n */\n if (actionMatchers.length > 0) {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage(26) : '`builder.addCase` should only be called before calling `builder.addMatcher`');\n }\n if (defaultCaseReducer) {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage2(27) : '`builder.addCase` should only be called before calling `builder.addDefaultCase`');\n }\n }\n const type = typeof typeOrActionCreator === 'string' ? typeOrActionCreator : typeOrActionCreator.type;\n if (!type) {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage3(28) : '`builder.addCase` cannot be called with an empty action type');\n }\n if (type in actionsMap) {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage4(29) : '`builder.addCase` cannot be called with two reducers for the same action type ' + `'${type}'`);\n }\n actionsMap[type] = reducer;\n return builder;\n },\n addMatcher<A>(matcher: TypeGuard<A>, reducer: CaseReducer<S, A extends Action ? A : A & Action>) {\n if (process.env.NODE_ENV !== 'production') {\n if (defaultCaseReducer) {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage5(30) : '`builder.addMatcher` should only be called before calling `builder.addDefaultCase`');\n }\n }\n actionMatchers.push({\n matcher,\n reducer\n });\n return builder;\n },\n addDefaultCase(reducer: CaseReducer<S, Action>) {\n if (process.env.NODE_ENV !== 'production') {\n if (defaultCaseReducer) {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage6(31) : '`builder.addDefaultCase` can only be called once');\n }\n }\n defaultCaseReducer = reducer;\n return builder;\n }\n };\n builderCallback(builder);\n return [actionsMap, actionMatchers, defaultCaseReducer];\n}","import { formatProdErrorMessage as _formatProdErrorMessage } from \"@reduxjs/toolkit\";\nimport type { Draft } from 'immer';\nimport { produce as createNextState, isDraft, isDraftable } from 'immer';\nimport type { Action, Reducer, UnknownAction } from 'redux';\nimport type { ActionReducerMapBuilder } from './mapBuilders';\nimport { executeReducerBuilderCallback } from './mapBuilders';\nimport type { NoInfer, TypeGuard } from './tsHelpers';\nimport { freezeDraftable } from './utils';\n\n/**\n * Defines a mapping from action types to corresponding action object shapes.\n *\n * @deprecated This should not be used manually - it is only used for internal\n * inference purposes and should not have any further value.\n * It might be removed in the future.\n * @public\n */\nexport type Actions<T extends keyof any = string> = Record<T, Action>;\nexport type ActionMatcherDescription<S, A extends Action> = {\n matcher: TypeGuard<A>;\n reducer: CaseReducer<S, NoInfer<A>>;\n};\nexport type ReadonlyActionMatcherDescriptionCollection<S> = ReadonlyArray<ActionMatcherDescription<S, any>>;\nexport type ActionMatcherDescriptionCollection<S> = Array<ActionMatcherDescription<S, any>>;\n\n/**\n * A *case reducer* is a reducer function for a specific action type. Case\n * reducers can be composed to full reducers using `createReducer()`.\n *\n * Unlike a normal Redux reducer, a case reducer is never called with an\n * `undefined` state to determine the initial state. Instead, the initial\n * state is explicitly specified as an argument to `createReducer()`.\n *\n * In addition, a case reducer can choose to mutate the passed-in `state`\n * value directly instead of returning a new state. This does not actually\n * cause the store state to be mutated directly; instead, thanks to\n * [immer](https://github.com/mweststrate/immer), the mutations are\n * translated to copy operations that result in a new state.\n *\n * @public\n */\nexport type CaseReducer<S = any, A extends Action = UnknownAction> = (state: Draft<S>, action: A) => NoInfer<S> | void | Draft<NoInfer<S>>;\n\n/**\n * A mapping from action types to case reducers for `createReducer()`.\n *\n * @deprecated This should not be used manually - it is only used\n * for internal inference purposes and using it manually\n * would lead to type erasure.\n * It might be removed in the future.\n * @public\n */\nexport type CaseReducers<S, AS extends Actions> = { [T in keyof AS]: AS[T] extends Action ? CaseReducer<S, AS[T]> : void };\nexport type NotFunction<T> = T extends Function ? never : T;\nfunction isStateFunction<S>(x: unknown): x is () => S {\n return typeof x === 'function';\n}\nexport type ReducerWithInitialState<S extends NotFunction<any>> = Reducer<S> & {\n getInitialState: () => S;\n};\n\n/**\n * A utility function that allows defining a reducer as a mapping from action\n * type to *case reducer* functions that handle these action types. The\n * reducer's initial state is passed as the first argument.\n *\n * @remarks\n * The body of every case reducer is implicitly wrapped with a call to\n * `produce()` from the [immer](https://github.com/mweststrate/immer) library.\n * This means that rather than returning a new state object, you can also\n * mutate the passed-in state object directly; these mutations will then be\n * automatically and efficiently translated into copies, giving you both\n * convenience and immutability.\n *\n * @overloadSummary\n * This function accepts a callback that receives a `builder` object as its argument.\n * That builder provides `addCase`, `addMatcher` and `addDefaultCase` functions that may be\n * called to define what actions this reducer will handle.\n *\n * @param initialState - `State | (() => State)`: The initial state that should be used when the reducer is called the first time. This may also be a \"lazy initializer\" function, which should return an initial state value when called. This will be used whenever the reducer is called with `undefined` as its state value, and is primarily useful for cases like reading initial state from `localStorage`.\n * @param builderCallback - `(builder: Builder) => void` A callback that receives a *builder* object to define\n * case reducers via calls to `builder.addCase(actionCreatorOrType, reducer)`.\n * @example\n```ts\nimport {\n createAction,\n createReducer,\n UnknownAction,\n PayloadAction,\n} from \"@reduxjs/toolkit\";\n\nconst increment = createAction<number>(\"increment\");\nconst decrement = createAction<number>(\"decrement\");\n\nfunction isActionWithNumberPayload(\n action: UnknownAction\n): action is PayloadAction<number> {\n return typeof action.payload === \"number\";\n}\n\nconst reducer = createReducer(\n {\n counter: 0,\n sumOfNumberPayloads: 0,\n unhandledActions: 0,\n },\n (builder) => {\n builder\n .addCase(increment, (state, action) => {\n // action is inferred correctly here\n state.counter += action.payload;\n })\n // You can chain calls, or have separate `builder.addCase()` lines each time\n .addCase(decrement, (state, action) => {\n state.counter -= action.payload;\n })\n // You can apply a \"matcher function\" to incoming actions\n .addMatcher(isActionWithNumberPayload, (state, action) => {})\n // and provide a default case if no other handlers matched\n .addDefaultCase((state, action) => {});\n }\n);\n```\n * @public\n */\nexport function createReducer<S extends NotFunction<any>>(initialState: S | (() => S), mapOrBuilderCallback: (builder: ActionReducerMapBuilder<S>) => void): ReducerWithInitialState<S> {\n if (process.env.NODE_ENV !== 'production') {\n if (typeof mapOrBuilderCallback === 'object') {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage(8) : \"The object notation for `createReducer` has been removed. Please use the 'builder callback' notation instead: https://redux-toolkit.js.org/api/createReducer\");\n }\n }\n let [actionsMap, finalActionMatchers, finalDefaultCaseReducer] = executeReducerBuilderCallback(mapOrBuilderCallback);\n\n // Ensure the initial state gets frozen either way (if draftable)\n let getInitialState: () => S;\n if (isStateFunction(initialState)) {\n getInitialState = () => freezeDraftable(initialState());\n } else {\n const frozenInitialState = freezeDraftable(initialState);\n getInitialState = () => frozenInitialState;\n }\n function reducer(state = getInitialState(), action: any): S {\n let caseReducers = [actionsMap[action.type], ...finalActionMatchers.filter(({\n matcher\n }) => matcher(action)).map(({\n reducer\n }) => reducer)];\n if (caseReducers.filter(cr => !!cr).length === 0) {\n caseReducers = [finalDefaultCaseReducer];\n }\n return caseReducers.reduce((previousState, caseReducer): S => {\n if (caseReducer) {\n if (isDraft(previousState)) {\n // If it's already a draft, we must already be inside a `createNextState` call,\n // likely because this is being wrapped in `createReducer`, `createSlice`, or nested\n // inside an existing draft. It's safe to just pass the draft to the mutator.\n const draft = (previousState as Draft<S>); // We can assume this is already a draft\n const result = caseReducer(draft, action);\n if (result === undefined) {\n return previousState;\n }\n return (result as S);\n } else if (!isDraftable(previousState)) {\n // If state is not draftable (ex: a primitive, such as 0), we want to directly\n // return the caseReducer func and not wrap it with produce.\n const result = caseReducer((previousState as any), action);\n if (result === undefined) {\n if (previousState === null) {\n return previousState;\n }\n throw Error('A case reducer on a non-draftable value must not return undefined');\n }\n return (result as S);\n } else {\n // @ts-ignore createNextState() produces an Immutable<Draft<S>> rather\n // than an Immutable<S>, and TypeScript cannot find out how to reconcile\n // these two types.\n return createNextState(previousState, (draft: Draft<S>) => {\n return caseReducer(draft, action);\n });\n }\n }\n return previousState;\n }, state);\n }\n reducer.getInitialState = getInitialState;\n return (reducer as ReducerWithInitialState<S>);\n}","import type { ActionFromMatcher, Matcher, UnionToIntersection } from './tsHelpers';\nimport { hasMatchFunction } from './tsHelpers';\nimport type { AsyncThunk, AsyncThunkFulfilledActionCreator, AsyncThunkPendingActionCreator, AsyncThunkRejectedActionCreator } from './createAsyncThunk';\n\n/** @public */\nexport type ActionMatchingAnyOf<Matchers extends Matcher<any>[]> = ActionFromMatcher<Matchers[number]>;\n\n/** @public */\nexport type ActionMatchingAllOf<Matchers extends Matcher<any>[]> = UnionToIntersection<ActionMatchingAnyOf<Matchers>>;\nconst matches = (matcher: Matcher<any>, action: any) => {\n if (hasMatchFunction(matcher)) {\n return matcher.match(action);\n } else {\n return matcher(action);\n }\n};\n\n/**\n * A higher-order function that returns a function that may be used to check\n * whether an action matches any one of the supplied type guards or action\n * creators.\n *\n * @param matchers The type guards or action creators to match against.\n *\n * @public\n */\nexport function isAnyOf<Matchers extends Matcher<any>[]>(...matchers: Matchers) {\n return (action: any): action is ActionMatchingAnyOf<Matchers> => {\n return matchers.some(matcher => matches(matcher, action));\n };\n}\n\n/**\n * A higher-order function that returns a function that may be used to check\n * whether an action matches all of the supplied type guards or action\n * creators.\n *\n * @param matchers The type guards or action creators to match against.\n *\n * @public\n */\nexport function isAllOf<Matchers extends Matcher<any>[]>(...matchers: Matchers) {\n return (action: any): action is ActionMatchingAllOf<Matchers> => {\n return matchers.every(matcher => matches(matcher, action));\n };\n}\n\n/**\n * @param action A redux action\n * @param validStatus An array of valid meta.requestStatus values\n *\n * @internal\n */\nexport function hasExpectedRequestMetadata(action: any, validStatus: readonly string[]) {\n if (!action || !action.meta) return false;\n const hasValidRequestId = typeof action.meta.requestId === 'string';\n const hasValidRequestStatus = validStatus.indexOf(action.meta.requestStatus) > -1;\n return hasValidRequestId && hasValidRequestStatus;\n}\nfunction isAsyncThunkArray(a: [any] | AnyAsyncThunk[]): a is AnyAsyncThunk[] {\n return typeof a[0] === 'function' && 'pending' in a[0] && 'fulfilled' in a[0] && 'rejected' in a[0];\n}\nexport type UnknownAsyncThunkPendingAction = ReturnType<AsyncThunkPendingActionCreator<unknown>>;\nexport type PendingActionFromAsyncThunk<T extends AnyAsyncThunk> = ActionFromMatcher<T['pending']>;\n\n/**\n * A higher-order function that returns a function that may be used to check\n * whether an action was created by an async thunk action creator, and that\n * the action is pending.\n *\n * @public\n */\nexport function isPending(): (action: any) => action is UnknownAsyncThunkPendingAction;\n/**\n * A higher-order function that returns a function that may be used to check\n * whether an action belongs to one of the provided async thunk action creators,\n * and that the action is pending.\n *\n * @param asyncThunks (optional) The async thunk action creators to match against.\n *\n * @public\n */\nexport function isPending<AsyncThunks extends [AnyAsyncThunk, ...AnyAsyncThunk[]]>(...asyncThunks: AsyncThunks): (action: any) => action is PendingActionFromAsyncThunk<AsyncThunks[number]>;\n/**\n * Tests if `action` is a pending thunk action\n * @public\n */\nexport function isPending(action: any): action is UnknownAsyncThunkPendingAction;\nexport function isPending<AsyncThunks extends [AnyAsyncThunk, ...AnyAsyncThunk[]]>(...asyncThunks: AsyncThunks | [any]) {\n if (asyncThunks.length === 0) {\n return (action: any) => hasExpectedRequestMetadata(action, ['pending']);\n }\n if (!isAsyncThunkArray(asyncThunks)) {\n return isPending()(asyncThunks[0]);\n }\n return isAnyOf(...asyncThunks.map(asyncThunk => asyncThunk.pending));\n}\nexport type UnknownAsyncThunkRejectedAction = ReturnType<AsyncThunkRejectedActionCreator<unknown, unknown>>;\nexport type RejectedActionFromAsyncThunk<T extends AnyAsyncThunk> = ActionFromMatcher<T['rejected']>;\n\n/**\n * A higher-order function that returns a function that may be used to check\n * whether an action was created by an async thunk action creator, and that\n * the action is rejected.\n *\n * @public\n */\nexport function isRejected(): (action: any) => action is UnknownAsyncThunkRejectedAction;\n/**\n * A higher-order function that returns a function that may be used to check\n * whether an action belongs to one of the provided async thunk action creators,\n * and that the action is rejected.\n *\n * @param asyncThunks (optional) The async thunk action creators to match against.\n *\n * @public\n */\nexport function isRejected<AsyncThunks extends [AnyAsyncThunk, ...AnyAsyncThunk[]]>(...asyncThunks: AsyncThunks): (action: any) => action is RejectedActionFromAsyncThunk<AsyncThunks[number]>;\n/**\n * Tests if `action` is a rejected thunk action\n * @public\n */\nexport function isRejected(action: any): action is UnknownAsyncThunkRejectedAction;\nexport function isRejected<AsyncThunks extends [AnyAsyncThunk, ...AnyAsyncThunk[]]>(...asyncThunks: AsyncThunks | [any]) {\n if (asyncThunks.length === 0) {\n return (action: any) => hasExpectedRequestMetadata(action, ['rejected']);\n }\n if (!isAsyncThunkArray(asyncThunks)) {\n return isRejected()(asyncThunks[0]);\n }\n return isAnyOf(...asyncThunks.map(asyncThunk => asyncThunk.rejected));\n}\nexport type UnknownAsyncThunkRejectedWithValueAction = ReturnType<AsyncThunkRejectedActionCreator<unknown, unknown>>;\nexport type RejectedWithValueActionFromAsyncThunk<T extends AnyAsyncThunk> = ActionFromMatcher<T['rejected']> & (T extends AsyncThunk<any, any, {\n rejectValue: infer RejectedValue;\n}> ? {\n payload: RejectedValue;\n} : unknown);\n\n/**\n * A higher-order function that returns a function that may be used to check\n * whether an action was created by an async thunk action creator, and that\n * the action is rejected with value.\n *\n * @public\n */\nexport function isRejectedWithValue(): (action: any) => action is UnknownAsyncThunkRejectedAction;\n/**\n * A higher-order function that returns a function that may be used to check\n * whether an action belongs to one of the provided async thunk action creators,\n * and that the action is rejected with value.\n *\n * @param asyncThunks (optional) The async thunk action creators to match against.\n *\n * @public\n */\nexport function isRejectedWithValue<AsyncThunks extends [AnyAsyncThunk, ...AnyAsyncThunk[]]>(...asyncThunks: AsyncThunks): (action: any) => action is RejectedWithValueActionFromAsyncThunk<AsyncThunks[number]>;\n/**\n * Tests if `action` is a rejected thunk action with value\n * @public\n */\nexport function isRejectedWithValue(action: any): action is UnknownAsyncThunkRejectedAction;\nexport function isRejectedWithValue<AsyncThunks extends [AnyAsyncThunk, ...AnyAsyncThunk[]]>(...asyncThunks: AsyncThunks | [any]) {\n const hasFlag = (action: any): action is any => {\n return action && action.meta && action.meta.rejectedWithValue;\n };\n if (asyncThunks.length === 0) {\n return isAllOf(isRejected(...asyncThunks), hasFlag);\n }\n if (!isAsyncThunkArray(asyncThunks)) {\n return isRejectedWithValue()(asyncThunks[0]);\n }\n return isAllOf(isRejected(...asyncThunks), hasFlag);\n}\nexport type UnknownAsyncThunkFulfilledAction = ReturnType<AsyncThunkFulfilledActionCreator<unknown, unknown>>;\nexport type FulfilledActionFromAsyncThunk<T extends AnyAsyncThunk> = ActionFromMatcher<T['fulfilled']>;\n\n/**\n * A higher-order function that returns a function that may be used to check\n * whether an action was created by an async thunk action creator, and that\n * the action is fulfilled.\n *\n * @public\n */\nexport function isFulfilled(): (action: any) => action is UnknownAsyncThunkFulfilledAction;\n/**\n * A higher-order function that returns a function that may be used to check\n * whether an action belongs to one of the provided async thunk action creators,\n * and that the action is fulfilled.\n *\n * @param asyncThunks (optional) The async thunk action creators to match against.\n *\n * @public\n */\nexport function isFulfilled<AsyncThunks extends [AnyAsyncThunk, ...AnyAsyncThunk[]]>(...asyncThunks: AsyncThunks): (action: any) => action is FulfilledActionFromAsyncThunk<AsyncThunks[number]>;\n/**\n * Tests if `action` is a fulfilled thunk action\n * @public\n */\nexport function isFulfilled(action: any): action is UnknownAsyncThunkFulfilledAction;\nexport function isFulfilled<AsyncThunks extends [AnyAsyncThunk, ...AnyAsyncThunk[]]>(...asyncThunks: AsyncThunks | [any]) {\n if (asyncThunks.length === 0) {\n return (action: any) => hasExpectedRequestMetadata(action, ['fulfilled']);\n }\n if (!isAsyncThunkArray(asyncThunks)) {\n return isFulfilled()(asyncThunks[0]);\n }\n return isAnyOf(...asyncThunks.map(asyncThunk => asyncThunk.fulfilled));\n}\nexport type UnknownAsyncThunkAction = UnknownAsyncThunkPendingAction | UnknownAsyncThunkRejectedAction | UnknownAsyncThunkFulfilledAction;\nexport type AnyAsyncThunk = {\n pending: {\n match: (action: any) => action is any;\n };\n fulfilled: {\n match: (action: any) => action is any;\n };\n rejected: {\n match: (action: any) => action is any;\n };\n};\nexport type ActionsFromAsyncThunk<T extends AnyAsyncThunk> = ActionFromMatcher<T['pending']> | ActionFromMatcher<T['fulfilled']> | ActionFromMatcher<T['rejected']>;\n\n/**\n * A higher-order function that returns a function that may be used to check\n * whether an action was created by an async thunk action creator.\n *\n * @public\n */\nexport function isAsyncThunkAction(): (action: any) => action is UnknownAsyncThunkAction;\n/**\n * A higher-order function that returns a function that may be used to check\n * whether an action belongs to one of the provided async thunk action creators.\n *\n * @param asyncThunks (optional) The async thunk action creators to match against.\n *\n * @public\n */\nexport function isAsyncThunkAction<AsyncThunks extends [AnyAsyncThunk, ...AnyAsyncThunk[]]>(...asyncThunks: AsyncThunks): (action: any) => action is ActionsFromAsyncThunk<AsyncThunks[number]>;\n/**\n * Tests if `action` is a thunk action\n * @public\n */\nexport function isAsyncThunkAction(action: any): action is UnknownAsyncThunkAction;\nexport function isAsyncThunkAction<AsyncThunks extends [AnyAsyncThunk, ...AnyAsyncThunk[]]>(...asyncThunks: AsyncThunks | [any]) {\n if (asyncThunks.length === 0) {\n return (action: any) => hasExpectedRequestMetadata(action, ['pending', 'fulfilled', 'rejected']);\n }\n if (!isAsyncThunkArray(asyncThunks)) {\n return isAsyncThunkAction()(asyncThunks[0]);\n }\n return isAnyOf(...asyncThunks.flatMap(asyncThunk => [asyncThunk.pending, asyncThunk.rejected, asyncThunk.fulfilled]));\n}","// Borrowed from https://github.com/ai/nanoid/blob/3.0.2/non-secure/index.js\n// This alphabet uses `A-Za-z0-9_-` symbols. A genetic algorithm helped\n// optimize the gzip compression for this alphabet.\nlet urlAlphabet = 'ModuleSymbhasOwnPr-0123456789ABCDEFGHNRVfgctiUvz_KqYTJkLxpZXIjQW';\n\n/**\r\n *\r\n * @public\r\n */\nexport let nanoid = (size = 21) => {\n let id = '';\n // A compact alternative for `for (var i = 0; i < step; i++)`.\n let i = size;\n while (i--) {\n // `| 0` is more compact and faster than `Math.floor()`.\n id += urlAlphabet[Math.random() * 64 | 0];\n }\n return id;\n};","import type { Dispatch, UnknownAction } from 'redux';\nimport type { ThunkDispatch } from 'redux-thunk';\nimport type { ActionCreatorWithPreparedPayload } from './createAction';\nimport { createAction } from './createAction';\nimport { isAnyOf } from './matchers';\nimport { nanoid } from './nanoid';\nimport type { FallbackIfUnknown, Id, IsAny, IsUnknown, SafePromise } from './tsHelpers';\nexport type BaseThunkAPI<S, E, D extends Dispatch = Dispatch, RejectedValue = unknown, RejectedMeta = unknown, FulfilledMeta = unknown> = {\n dispatch: D;\n getState: () => S;\n extra: E;\n requestId: string;\n signal: AbortSignal;\n abort: (reason?: string) => void;\n rejectWithValue: IsUnknown<RejectedMeta, (value: RejectedValue) => RejectWithValue<RejectedValue, RejectedMeta>, (value: RejectedValue, meta: RejectedMeta) => RejectWithValue<RejectedValue, RejectedMeta>>;\n fulfillWithValue: IsUnknown<FulfilledMeta, <FulfilledValue>(value: FulfilledValue) => FulfilledValue, <FulfilledValue>(value: FulfilledValue, meta: FulfilledMeta) => FulfillWithMeta<FulfilledValue, FulfilledMeta>>;\n};\n\n/**\n * @public\n */\nexport interface SerializedError {\n name?: string;\n message?: string;\n stack?: string;\n code?: string;\n}\nconst commonProperties: Array<keyof SerializedError> = ['name', 'message', 'stack', 'code'];\nclass RejectWithValue<Payload, RejectedMeta> {\n /*\n type-only property to distinguish between RejectWithValue and FulfillWithMeta\n does not exist at runtime\n */\n private readonly _type!: 'RejectWithValue';\n constructor(public readonly payload: Payload, public readonly meta: RejectedMeta) {}\n}\nclass FulfillWithMeta<Payload, FulfilledMeta> {\n /*\n type-only property to distinguish between RejectWithValue and FulfillWithMeta\n does not exist at runtime\n */\n private readonly _type!: 'FulfillWithMeta';\n constructor(public readonly payload: Payload, public readonly meta: FulfilledMeta) {}\n}\n\n/**\n * Serializes an error into a plain object.\n * Reworked from https://github.com/sindresorhus/serialize-error\n *\n * @public\n */\nexport const miniSerializeError = (value: any): SerializedError => {\n if (typeof value === 'object' && value !== null) {\n const simpleError: SerializedError = {};\n for (const property of commonProperties) {\n if (typeof value[property] === 'string') {\n simpleError[property] = value[property];\n }\n }\n return simpleError;\n }\n return {\n message: String(value)\n };\n};\nexport type AsyncThunkConfig = {\n state?: unknown;\n dispatch?: ThunkDispatch<unknown, unknown, UnknownAction>;\n extra?: unknown;\n rejectValue?: unknown;\n serializedErrorType?: unknown;\n pendingMeta?: unknown;\n fulfilledMeta?: unknown;\n rejectedMeta?: unknown;\n};\nexport type GetState<ThunkApiConfig> = ThunkApiConfig extends {\n state: infer State;\n} ? State : unknown;\ntype GetExtra<ThunkApiConfig> = ThunkApiConfig extends {\n extra: infer Extra;\n} ? Extra : unknown;\ntype GetDispatch<ThunkApiConfig> = ThunkApiConfig extends {\n dispatch: infer Dispatch;\n} ? FallbackIfUnknown<Dispatch, ThunkDispatch<GetState<ThunkApiConfig>, GetExtra<ThunkApiConfig>, UnknownAction>> : ThunkDispatch<GetState<ThunkApiConfig>, GetExtra<ThunkApiConfig>, UnknownAction>;\nexport type GetThunkAPI<ThunkApiConfig> = BaseThunkAPI<GetState<ThunkApiConfig>, GetExtra<ThunkApiConfig>, GetDispatch<ThunkApiConfig>, GetRejectValue<ThunkApiConfig>, GetRejectedMeta<ThunkApiConfig>, GetFulfilledMeta<ThunkApiConfig>>;\ntype GetRejectValue<ThunkApiConfig> = ThunkApiConfig extends {\n rejectValue: infer RejectValue;\n} ? RejectValue : unknown;\ntype GetPendingMeta<ThunkApiConfig> = ThunkApiConfig extends {\n pendingMeta: infer PendingMeta;\n} ? PendingMeta : unknown;\ntype GetFulfilledMeta<ThunkApiConfig> = ThunkApiConfig extends {\n fulfilledMeta: infer FulfilledMeta;\n} ? FulfilledMeta : unknown;\ntype GetRejectedMeta<ThunkApiConfig> = ThunkApiConfig extends {\n rejectedMeta: infer RejectedMeta;\n} ? RejectedMeta : unknown;\ntype GetSerializedErrorType<ThunkApiConfig> = ThunkApiConfig extends {\n serializedErrorType: infer GetSerializedErrorType;\n} ? GetSerializedErrorType : SerializedError;\ntype MaybePromise<T> = T | Promise<T> | (T extends any ? Promise<T> : never);\n\n/**\n * A type describing the return value of the `payloadCreator` argument to `createAsyncThunk`.\n * Might be useful for wrapping `createAsyncThunk` in custom abstractions.\n *\n * @public\n */\nexport type AsyncThunkPayloadCreatorReturnValue<Returned, ThunkApiConfig extends AsyncThunkConfig> = MaybePromise<IsUnknown<GetFulfilledMeta<ThunkApiConfig>, Returned, FulfillWithMeta<Returned, GetFulfilledMeta<ThunkApiConfig>>> | RejectWithValue<GetRejectValue<ThunkApiConfig>, GetRejectedMeta<ThunkApiConfig>>>;\n/**\n * A type describing the `payloadCreator` argument to `createAsyncThunk`.\n * Might be useful for wrapping `createAsyncThunk` in custom abstractions.\n *\n * @public\n */\nexport type AsyncThunkPayloadCreator<Returned, ThunkArg = void, ThunkApiConfig extends AsyncThunkConfig = {}> = (arg: ThunkArg, thunkAPI: GetThunkAPI<ThunkApiConfig>) => AsyncThunkPayloadCreatorReturnValue<Returned, ThunkApiConfig>;\n\n/**\n * A ThunkAction created by `createAsyncThunk`.\n * Dispatching it returns a Promise for either a\n * fulfilled or rejected action.\n * Also, the returned value contains an `abort()` method\n * that allows the asyncAction to be cancelled from the outside.\n *\n * @public\n */\nexport type AsyncThunkAction<Returned, ThunkArg, ThunkApiConfig extends AsyncThunkConfig> = (dispatch: NonNullable<GetDispatch<ThunkApiConfig>>, getState: () => GetState<ThunkApiConfig>, extra: GetExtra<ThunkApiConfig>) => SafePromise<ReturnType<AsyncThunkFulfilledActionCreator<Returned, ThunkArg>> | ReturnType<AsyncThunkRejectedActionCreator<ThunkArg, ThunkApiConfig>>> & {\n abort: (reason?: string) => void;\n requestId: string;\n arg: ThunkArg;\n unwrap: () => Promise<Returned>;\n};\ntype AsyncThunkActionCreator<Returned, ThunkArg, ThunkApiConfig extends AsyncThunkConfig> = IsAny<ThunkArg,\n// any handling\n(arg: ThunkArg) => AsyncThunkAction<Returned, ThunkArg, ThunkApiConfig>,\n// unknown handling\nunknown extends ThunkArg ? (arg: ThunkArg) => AsyncThunkAction<Returned, ThunkArg, ThunkApiConfig> /* argument not specified or specified as void or undefined*/ : [ThunkArg] extends [void] | [undefined] ? () => AsyncThunkAction<Returned, ThunkArg, ThunkApiConfig> /* argument contains void*/ : [void] extends [ThunkArg] // make optional\n? (arg?: ThunkArg) => AsyncThunkAction<Returned, ThunkArg, ThunkApiConfig> /* argument contains undefined*/ : [undefined] extends [ThunkArg] ? WithStrictNullChecks<\n// with strict nullChecks: make optional\n(arg?: ThunkArg) => AsyncThunkAction<Returned, ThunkArg, ThunkApiConfig>,\n// without strict null checks this will match everything, so don't make it optional\n(arg: ThunkArg) => AsyncThunkAction<Returned, ThunkArg, ThunkApiConfig>> /* default case: normal argument*/ : (arg: ThunkArg) => AsyncThunkAction<Returned, ThunkArg, ThunkApiConfig>>;\n\n/**\n * Options object for `createAsyncThunk`.\n *\n * @public\n */\nexport type AsyncThunkOptions<ThunkArg = void, ThunkApiConfig extends AsyncThunkConfig = {}> = {\n /**\n * A method to control whether the asyncThunk should be executed. Has access to the\n * `arg`, `api.getState()` and `api.extra` arguments.\n *\n * @returns `false` if it should be skipped\n */\n condition?(arg: ThunkArg, api: Pick<GetThunkAPI<ThunkApiConfig>, 'getState' | 'extra'>): MaybePromise<boolean | undefined>;\n /**\n * If `condition` returns `false`, the asyncThunk will be skipped.\n * This option allows you to control whether a `rejected` action with `meta.condition == false`\n * will be dispatched or not.\n *\n * @default `false`\n */\n dispatchConditionRejection?: boolean;\n serializeError?: (x: unknown) => GetSerializedErrorType<ThunkApiConfig>;\n\n /**\n * A function to use when generating the `requestId` for the request sequence.\n *\n * @default `nanoid`\n */\n idGenerator?: (arg: ThunkArg) => string;\n} & IsUnknown<GetPendingMeta<ThunkApiConfig>, {\n /**\n * A method to generate additional properties to be added to `meta` of the pending action.\n *\n * Using this optional overload will not modify the types correctly, this overload is only in place to support JavaScript users.\n * Please use the `ThunkApiConfig` parameter `pendingMeta` to get access to a correctly typed overload\n */\n getPendingMeta?(base: {\n arg: ThunkArg;\n requestId: string;\n }, api: Pick<GetThunkAPI<ThunkApiConfig>, 'getState' | 'extra'>): GetPendingMeta<ThunkApiConfig>;\n}, {\n /**\n * A method to generate additional properties to be added to `meta` of the pending action.\n */\n getPendingMeta(base: {\n arg: ThunkArg;\n requestId: string;\n }, api: Pick<GetThunkAPI<ThunkApiConfig>, 'getState' | 'extra'>): GetPendingMeta<ThunkApiConfig>;\n}>;\nexport type AsyncThunkPendingActionCreator<ThunkArg, ThunkApiConfig = {}> = ActionCreatorWithPreparedPayload<[string, ThunkArg, GetPendingMeta<ThunkApiConfig>?], undefined, string, never, {\n arg: ThunkArg;\n requestId: string;\n requestStatus: 'pending';\n} & GetPendingMeta<ThunkApiConfig>>;\nexport type AsyncThunkRejectedActionCreator<ThunkArg, ThunkApiConfig = {}> = ActionCreatorWithPreparedPayload<[Error | null, string, ThunkArg, GetRejectValue<ThunkApiConfig>?, GetRejectedMeta<ThunkApiConfig>?], GetRejectValue<ThunkApiConfig> | undefined, string, GetSerializedErrorType<ThunkApiConfig>, {\n arg: ThunkArg;\n requestId: string;\n requestStatus: 'rejected';\n aborted: boolean;\n condition: boolean;\n} & (({\n rejectedWithValue: false;\n} & { [K in keyof GetRejectedMeta<ThunkApiConfig>]?: undefined }) | ({\n rejectedWithValue: true;\n} & GetRejectedMeta<ThunkApiConfig>))>;\nexport type AsyncThunkFulfilledActionCreator<Returned, ThunkArg, ThunkApiConfig = {}> = ActionCreatorWithPreparedPayload<[Returned, string, ThunkArg, GetFulfilledMeta<ThunkApiConfig>?], Returned, string, never, {\n arg: ThunkArg;\n requestId: string;\n requestStatus: 'fulfilled';\n} & GetFulfilledMeta<ThunkApiConfig>>;\n\n/**\n * A type describing the return value of `createAsyncThunk`.\n * Might be useful for wrapping `createAsyncThunk` in custom abstractions.\n *\n * @public\n */\nexport type AsyncThunk<Returned, ThunkArg, ThunkApiConfig extends AsyncThunkConfig> = AsyncThunkActionCreator<Returned, ThunkArg, ThunkApiConfig> & {\n pending: AsyncThunkPendingActionCreator<ThunkArg, ThunkApiConfig>;\n rejected: AsyncThunkRejectedActionCreator<ThunkArg, ThunkApiConfig>;\n fulfilled: AsyncThunkFulfilledActionCreator<Returned, ThunkArg, ThunkApiConfig>;\n // matchSettled?\n settled: (action: any) => action is ReturnType<AsyncThunkRejectedActionCreator<ThunkArg, ThunkApiConfig> | AsyncThunkFulfilledActionCreator<Returned, ThunkArg, ThunkApiConfig>>;\n typePrefix: string;\n};\nexport type OverrideThunkApiConfigs<OldConfig, NewConfig> = Id<NewConfig & Omit<OldConfig, keyof NewConfig>>;\ntype CreateAsyncThunk<CurriedThunkApiConfig extends AsyncThunkConfig> = {\n /**\n *\n * @param typePrefix\n * @param payloadCreator\n * @param options\n *\n * @public\n */\n // separate signature without `AsyncThunkConfig` for better inference\n <Returned, ThunkArg = void>(typePrefix: string, payloadCreator: AsyncThunkPayloadCreator<Returned, ThunkArg, CurriedThunkApiConfig>, options?: AsyncThunkOptions<ThunkArg, CurriedThunkApiConfig>): AsyncThunk<Returned, ThunkArg, CurriedThunkApiConfig>;\n\n /**\n *\n * @param typePrefix\n * @param payloadCreator\n * @param options\n *\n * @public\n */\n <Returned, ThunkArg, ThunkApiConfig extends AsyncThunkConfig>(typePrefix: string, payloadCreator: AsyncThunkPayloadCreator<Returned, ThunkArg, OverrideThunkApiConfigs<CurriedThunkApiConfig, ThunkApiConfig>>, options?: AsyncThunkOptions<ThunkArg, OverrideThunkApiConfigs<CurriedThunkApiConfig, ThunkApiConfig>>): AsyncThunk<Returned, ThunkArg, OverrideThunkApiConfigs<CurriedThunkApiConfig, ThunkApiConfig>>;\n withTypes<ThunkApiConfig extends AsyncThunkConfig>(): CreateAsyncThunk<OverrideThunkApiConfigs<CurriedThunkApiConfig, ThunkApiConfig>>;\n};\nexport const createAsyncThunk = /* @__PURE__ */(() => {\n function createAsyncThunk<Returned, ThunkArg, ThunkApiConfig extends AsyncThunkConfig>(typePrefix: string, payloadCreator: AsyncThunkPayloadCreator<Returned, ThunkArg, ThunkApiConfig>, options?: AsyncThunkOptions<ThunkArg, ThunkApiConfig>): AsyncThunk<Returned, ThunkArg, ThunkApiConfig> {\n type RejectedValue = GetRejectValue<ThunkApiConfig>;\n type PendingMeta = GetPendingMeta<ThunkApiConfig>;\n type FulfilledMeta = GetFulfilledMeta<ThunkApiConfig>;\n type RejectedMeta = GetRejectedMeta<ThunkApiConfig>;\n const fulfilled: AsyncThunkFulfilledActionCreator<Returned, ThunkArg, ThunkApiConfig> = createAction(typePrefix + '/fulfilled', (payload: Returned, requestId: string, arg: ThunkArg, meta?: FulfilledMeta) => ({\n payload,\n meta: {\n ...((meta as any) || {}),\n arg,\n requestId,\n requestStatus: ('fulfilled' as const)\n }\n }));\n const pending: AsyncThunkPendingActionCreator<ThunkArg, ThunkApiConfig> = createAction(typePrefix + '/pending', (requestId: string, arg: ThunkArg, meta?: PendingMeta) => ({\n payload: undefined,\n meta: {\n ...((meta as any) || {}),\n arg,\n requestId,\n requestStatus: ('pending' as const)\n }\n }));\n const rejected: AsyncThunkRejectedActionCreator<ThunkArg, ThunkApiConfig> = createAction(typePrefix + '/rejected', (error: Error | null, requestId: string, arg: ThunkArg, payload?: RejectedValue, meta?: RejectedMeta) => ({\n payload,\n error: ((options && options.serializeError || miniSerializeError)(error || 'Rejected') as GetSerializedErrorType<ThunkApiConfig>),\n meta: {\n ...((meta as any) || {}),\n arg,\n requestId,\n rejectedWithValue: !!payload,\n requestStatus: ('rejected' as const),\n aborted: error?.name === 'AbortError',\n condition: error?.name === 'ConditionError'\n }\n }));\n function actionCreator(arg: ThunkArg): AsyncThunkAction<Returned, ThunkArg, Required<ThunkApiConfig>> {\n return (dispatch, getState, extra) => {\n const requestId = options?.idGenerator ? options.idGenerator(arg) : nanoid();\n const abortController = new AbortController();\n let abortHandler: (() => void) | undefined;\n let abortReason: string | undefined;\n function abort(reason?: string) {\n abortReason = reason;\n abortController.abort();\n }\n const promise = async function () {\n let finalAction: ReturnType<typeof fulfilled | typeof rejected>;\n try {\n let conditionResult = options?.condition?.(arg, {\n getState,\n extra\n });\n if (isThenable(conditionResult)) {\n conditionResult = await conditionResult;\n }\n if (conditionResult === false || abortController.signal.aborted) {\n // eslint-disable-next-line no-throw-literal\n throw {\n name: 'ConditionError',\n message: 'Aborted due to condition callback returning false.'\n };\n }\n const abortedPromise = new Promise<never>((_, reject) => {\n abortHandler = () => {\n reject({\n name: 'AbortError',\n message: abortReason || 'Aborted'\n });\n };\n abortController.signal.addEventListener('abort', abortHandler);\n });\n dispatch((pending(requestId, arg, options?.getPendingMeta?.({\n requestId,\n arg\n }, {\n getState,\n extra\n })) as any));\n finalAction = await Promise.race([abortedPromise, Promise.resolve(payloadCreator(arg, {\n dispatch,\n getState,\n extra,\n requestId,\n signal: abortController.signal,\n abort,\n rejectWithValue: (((value: RejectedValue, meta?: RejectedMeta) => {\n return new RejectWithValue(value, meta);\n }) as any),\n fulfillWithValue: (((value: unknown, meta?: FulfilledMeta) => {\n return new FulfillWithMeta(value, meta);\n }) as any)\n })).then(result => {\n if (result instanceof RejectWithValue) {\n throw result;\n }\n if (result instanceof FulfillWithMeta) {\n return fulfilled(result.payload, requestId, arg, result.meta);\n }\n return fulfilled((result as any), requestId, arg);\n })]);\n } catch (err) {\n finalAction = err instanceof RejectWithValue ? rejected(null, requestId, arg, err.payload, err.meta) : rejected((err as any), requestId, arg);\n } finally {\n if (abortHandler) {\n abortController.signal.removeEventListener('abort', abortHandler);\n }\n }\n // We dispatch the result action _after_ the catch, to avoid having any errors\n // here get swallowed by the try/catch block,\n // per https://twitter.com/dan_abramov/status/770914221638942720\n // and https://github.com/reduxjs/redux-toolkit/blob/e85eb17b39a2118d859f7b7746e0f3fee523e089/docs/tutorials/advanced-tutorial.md#async-error-handling-logic-in-thunks\n\n const skipDispatch = options && !options.dispatchConditionRejection && rejected.match(finalAction) && (finalAction as any).meta.condition;\n if (!skipDispatch) {\n dispatch((finalAction as any));\n }\n return finalAction;\n }();\n return Object.assign((promise as SafePromise<any>), {\n abort,\n requestId,\n arg,\n unwrap() {\n return promise.then<any>(unwrapResult);\n }\n });\n };\n }\n return Object.assign((actionCreator as AsyncThunkActionCreator<Returned, ThunkArg, ThunkApiConfig>), {\n pending,\n rejected,\n fulfilled,\n settled: isAnyOf(rejected, fulfilled),\n typePrefix\n });\n }\n createAsyncThunk.withTypes = () => createAsyncThunk;\n return (createAsyncThunk as CreateAsyncThunk<AsyncThunkConfig>);\n})();\ninterface UnwrappableAction {\n payload: any;\n meta?: any;\n error?: any;\n}\ntype UnwrappedActionPayload<T extends UnwrappableAction> = Exclude<T, {\n error: any;\n}>['payload'];\n\n/**\n * @public\n */\nexport function unwrapResult<R extends UnwrappableAction>(action: R): UnwrappedActionPayload<R> {\n if (action.meta && action.meta.rejectedWithValue) {\n throw action.payload;\n }\n if (action.error) {\n throw action.error;\n }\n return action.payload;\n}\ntype WithStrictNullChecks<True, False> = undefined extends boolean ? False : True;\nfunction isThenable(value: any): value is PromiseLike<any> {\n return value !== null && typeof value === 'object' && typeof value.then === 'function';\n}","import { formatProdErrorMessage as _formatProdErrorMessage, formatProdErrorMessage as _formatProdErrorMessage2, formatProdErrorMessage as _formatProdErrorMessage3, formatProdErrorMessage as _formatProdErrorMessage4, formatProdErrorMessage as _formatProdErrorMessage5, formatProdErrorMessage as _formatProdErrorMessage6, formatProdErrorMessage as _formatProdErrorMessage7, formatProdErrorMessage as _formatProdErrorMessage8 } from \"@reduxjs/toolkit\";\nimport type { Action, Reducer, UnknownAction } from 'redux';\nimport type { Selector } from 'reselect';\nimport type { InjectConfig } from './combineSlices';\nimport type { ActionCreatorWithoutPayload, PayloadAction, PayloadActionCreator, PrepareAction, _ActionCreatorWithPreparedPayload } from './createAction';\nimport { createAction } from './createAction';\nimport type { AsyncThunk, AsyncThunkConfig, AsyncThunkOptions, AsyncThunkPayloadCreator, OverrideThunkApiConfigs } from './createAsyncThunk';\nimport { createAsyncThunk as _createAsyncThunk } from './createAsyncThunk';\nimport type { ActionMatcherDescriptionCollection, CaseReducer, ReducerWithInitialState } from './createReducer';\nimport { createReducer } from './createReducer';\nimport type { ActionReducerMapBuilder, TypedActionCreator } from './mapBuilders';\nimport { executeReducerBuilderCallback } from './mapBuilders';\nimport type { Id, TypeGuard } from './tsHelpers';\nimport { emplace } from './utils';\nconst asyncThunkSymbol = /* @__PURE__ */Symbol.for('rtk-slice-createasyncthunk');\n// type is annotated because it's too long to infer\nexport const asyncThunkCreator: {\n [asyncThunkSymbol]: typeof _createAsyncThunk;\n} = {\n [asyncThunkSymbol]: _createAsyncThunk\n};\ntype InjectIntoConfig<NewReducerPath extends string> = InjectConfig & {\n reducerPath?: NewReducerPath;\n};\n\n/**\n * The return value of `createSlice`\n *\n * @public\n */\nexport interface Slice<State = any, CaseReducers extends SliceCaseReducers<State> = SliceCaseReducers<State>, Name extends string = string, ReducerPath extends string = Name, Selectors extends SliceSelectors<State> = SliceSelectors<State>> {\n /**\n * The slice name.\n */\n name: Name;\n\n /**\n * The slice reducer path.\n */\n reducerPath: ReducerPath;\n\n /**\n * The slice's reducer.\n */\n reducer: Reducer<State>;\n\n /**\n * Action creators for the types of actions that are handled by the slice\n * reducer.\n */\n actions: CaseReducerActions<CaseReducers, Name>;\n\n /**\n * The individual case reducer functions that were passed in the `reducers` parameter.\n * This enables reuse and testing if they were defined inline when calling `createSlice`.\n */\n caseReducers: SliceDefinedCaseReducers<CaseReducers>;\n\n /**\n * Provides access to the initial state value given to the slice.\n * If a lazy state initializer was provided, it will be called and a fresh value returned.\n */\n getInitialState: () => State;\n\n /**\n * Get localised slice selectors (expects to be called with *just* the slice's state as the first parameter)\n */\n getSelectors(): Id<SliceDefinedSelectors<State, Selectors, State>>;\n\n /**\n * Get globalised slice selectors (`selectState` callback is expected to receive first parameter and return slice state)\n */\n getSelectors<RootState>(selectState: (rootState: RootState) => State): Id<SliceDefinedSelectors<State, Selectors, RootState>>;\n\n /**\n * Selectors that assume the slice's state is `rootState[slice.reducerPath]` (which is usually the case)\n *\n * Equivalent to `slice.getSelectors((state: RootState) => state[slice.reducerPath])`.\n */\n get selectors(): Id<SliceDefinedSelectors<State, Selectors, { [K in ReducerPath]: State }>>;\n\n /**\n * Inject slice into provided reducer (return value from `combineSlices`), and return injected slice.\n */\n injectInto<NewReducerPath extends string = ReducerPath>(this: this, injectable: {\n inject: (slice: {\n reducerPath: string;\n reducer: Reducer;\n }, config?: InjectConfig) => void;\n }, config?: InjectIntoConfig<NewReducerPath>): InjectedSlice<State, CaseReducers, Name, NewReducerPath, Selectors>;\n\n /**\n * Select the slice state, using the slice's current reducerPath.\n *\n * Will throw an error if slice is not found.\n */\n selectSlice(state: { [K in ReducerPath]: State }): State;\n}\n\n/**\n * A slice after being called with `injectInto(reducer)`.\n *\n * Selectors can now be called with an `undefined` value, in which case they use the slice's initial state.\n */\ntype InjectedSlice<State = any, CaseReducers extends SliceCaseReducers<State> = SliceCaseReducers<State>, Name extends string = string, ReducerPath extends string = Name, Selectors extends SliceSelectors<State> = SliceSelectors<State>> = Omit<Slice<State, CaseReducers, Name, ReducerPath, Selectors>, 'getSelectors' | 'selectors'> & {\n /**\n * Get localised slice selectors (expects to be called with *just* the slice's state as the first parameter)\n */\n getSelectors(): Id<SliceDefinedSelectors<State, Selectors, State | undefined>>;\n\n /**\n * Get globalised slice selectors (`selectState` callback is expected to receive first parameter and return slice state)\n */\n getSelectors<RootState>(selectState: (rootState: RootState) => State | undefined): Id<SliceDefinedSelectors<State, Selectors, RootState>>;\n\n /**\n * Selectors that assume the slice's state is `rootState[slice.name]` (which is usually the case)\n *\n * Equivalent to `slice.getSelectors((state: RootState) => state[slice.name])`.\n */\n get selectors(): Id<SliceDefinedSelectors<State, Selectors, { [K in ReducerPath]?: State | undefined }>>;\n\n /**\n * Select the slice state, using the slice's current reducerPath.\n *\n * Returns initial state if slice is not found.\n */\n selectSlice(state: { [K in ReducerPath]?: State | undefined }): State;\n};\n\n/**\n * Options for `createSlice()`.\n *\n * @public\n */\nexport interface CreateSliceOptions<State = any, CR extends SliceCaseReducers<State> = SliceCaseReducers<State>, Name extends string = string, ReducerPath extends string = Name, Selectors extends SliceSelectors<State> = SliceSelectors<State>> {\n /**\n * The slice's name. Used to namespace the generated action types.\n */\n name: Name;\n\n /**\n * The slice's reducer path. Used when injecting into a combined slice reducer.\n */\n reducerPath?: ReducerPath;\n\n /**\n * The initial state that should be used when the reducer is called the first time. This may also be a \"lazy initializer\" function, which should return an initial state value when called. This will be used whenever the reducer is called with `undefined` as its state value, and is primarily useful for cases like reading initial state from `localStorage`.\n */\n initialState: State | (() => State);\n\n /**\n * A mapping from action types to action-type-specific *case reducer*\n * functions. For every action type, a matching action creator will be\n * generated using `createAction()`.\n */\n reducers: ValidateSliceCaseReducers<State, CR> | ((creators: ReducerCreators<State>) => CR);\n\n /**\n * A callback that receives a *builder* object to define\n * case reducers via calls to `builder.addCase(actionCreatorOrType, reducer)`.\n *\n *\n * @example\n ```ts\n import { createAction, createSlice, Action } from '@reduxjs/toolkit'\n const incrementBy = createAction<number>('incrementBy')\n const decrement = createAction('decrement')\n interface RejectedAction extends Action {\n error: Error\n }\n function isRejectedAction(action: Action): action is RejectedAction {\n return action.type.endsWith('rejected')\n }\n createSlice({\n name: 'counter',\n initialState: 0,\n reducers: {},\n extraReducers: builder => {\n builder\n .addCase(incrementBy, (state, action) => {\n // action is inferred correctly here if using TS\n })\n // You can chain calls, or have separate `builder.addCase()` lines each time\n .addCase(decrement, (state, action) => {})\n // You can match a range of action types\n .addMatcher(\n isRejectedAction,\n // `action` will be inferred as a RejectedAction due to isRejectedAction being defined as a type guard\n (state, action) => {}\n )\n // and provide a default case if no other handlers matched\n .addDefaultCase((state, action) => {})\n }\n })\n ```\n */\n extraReducers?: (builder: ActionReducerMapBuilder<State>) => void;\n\n /**\n * A map of selectors that receive the slice's state and any additional arguments, and return a result.\n */\n selectors?: Selectors;\n}\nexport enum ReducerType {\n reducer = 'reducer',\n reducerWithPrepare = 'reducerWithPrepare',\n asyncThunk = 'asyncThunk',\n}\ntype ReducerDefinition<T extends ReducerType = ReducerType> = {\n _reducerDefinitionType: T;\n};\nexport type CaseReducerDefinition<S = any, A extends Action = UnknownAction> = CaseReducer<S, A> & ReducerDefinition<ReducerType.reducer>;\n\n/**\n * A CaseReducer with a `prepare` method.\n *\n * @public\n */\nexport type CaseReducerWithPrepare<State, Action extends PayloadAction> = {\n reducer: CaseReducer<State, Action>;\n prepare: PrepareAction<Action['payload']>;\n};\nexport interface CaseReducerWithPrepareDefinition<State, Action extends PayloadAction> extends CaseReducerWithPrepare<State, Action>, ReducerDefinition<ReducerType.reducerWithPrepare> {}\ntype AsyncThunkSliceReducerConfig<State, ThunkArg extends any, Returned = unknown, ThunkApiConfig extends AsyncThunkConfig = {}> = {\n pending?: CaseReducer<State, ReturnType<AsyncThunk<Returned, ThunkArg, ThunkApiConfig>['pending']>>;\n rejected?: CaseReducer<State, ReturnType<AsyncThunk<Returned, ThunkArg, ThunkApiConfig>['rejected']>>;\n fulfilled?: CaseReducer<State, ReturnType<AsyncThunk<Returned, ThunkArg, ThunkApiConfig>['fulfilled']>>;\n settled?: CaseReducer<State, ReturnType<AsyncThunk<Returned, ThunkArg, ThunkApiConfig>['rejected' | 'fulfilled']>>;\n options?: AsyncThunkOptions<ThunkArg, ThunkApiConfig>;\n};\ntype AsyncThunkSliceReducerDefinition<State, ThunkArg extends any, Returned = unknown, ThunkApiConfig extends AsyncThunkConfig = {}> = AsyncThunkSliceReducerConfig<State, ThunkArg, Returned, ThunkApiConfig> & ReducerDefinition<ReducerType.asyncThunk> & {\n payloadCreator: AsyncThunkPayloadCreator<Returned, ThunkArg, ThunkApiConfig>;\n};\n\n/**\n * Providing these as part of the config would cause circular types, so we disallow passing them\n */\ntype PreventCircular<ThunkApiConfig> = { [K in keyof ThunkApiConfig]: K extends 'state' | 'dispatch' ? never : ThunkApiConfig[K] };\ninterface AsyncThunkCreator<State, CurriedThunkApiConfig extends PreventCircular<AsyncThunkConfig> = PreventCircular<AsyncThunkConfig>> {\n <Returned, ThunkArg = void>(payloadCreator: AsyncThunkPayloadCreator<Returned, ThunkArg, CurriedThunkApiConfig>, config?: AsyncThunkSliceReducerConfig<State, ThunkArg, Returned, CurriedThunkApiConfig>): AsyncThunkSliceReducerDefinition<State, ThunkArg, Returned, CurriedThunkApiConfig>;\n <Returned, ThunkArg, ThunkApiConfig extends PreventCircular<AsyncThunkConfig> = {}>(payloadCreator: AsyncThunkPayloadCreator<Returned, ThunkArg, ThunkApiConfig>, config?: AsyncThunkSliceReducerConfig<State, ThunkArg, Returned, ThunkApiConfig>): AsyncThunkSliceReducerDefinition<State, ThunkArg, Returned, ThunkApiConfig>;\n withTypes<ThunkApiConfig extends PreventCircular<AsyncThunkConfig>>(): AsyncThunkCreator<State, OverrideThunkApiConfigs<CurriedThunkApiConfig, ThunkApiConfig>>;\n}\nexport interface ReducerCreators<State> {\n reducer(caseReducer: CaseReducer<State, PayloadAction>): CaseReducerDefinition<State, PayloadAction>;\n reducer<Payload>(caseReducer: CaseReducer<State, PayloadAction<Payload>>): CaseReducerDefinition<State, PayloadAction<Payload>>;\n asyncThunk: AsyncThunkCreator<State>;\n preparedReducer<Prepare extends PrepareAction<any>>(prepare: Prepare, reducer: CaseReducer<State, ReturnType<_ActionCreatorWithPreparedPayload<Prepare>>>): {\n _reducerDefinitionType: ReducerType.reducerWithPrepare;\n prepare: Prepare;\n reducer: CaseReducer<State, ReturnType<_ActionCreatorWithPreparedPayload<Prepare>>>;\n };\n}\n\n/**\n * The type describing a slice's `reducers` option.\n *\n * @public\n */\nexport type SliceCaseReducers<State> = Record<string, ReducerDefinition> | Record<string, CaseReducer<State, PayloadAction<any>> | CaseReducerWithPrepare<State, PayloadAction<any, string, any, any>>>;\n\n/**\n * The type describing a slice's `selectors` option.\n */\nexport type SliceSelectors<State> = {\n [K: string]: (sliceState: State, ...args: any[]) => any;\n};\ntype SliceActionType<SliceName extends string, ActionName extends keyof any> = ActionName extends string | number ? `${SliceName}/${ActionName}` : string;\n\n/**\n * Derives the slice's `actions` property from the `reducers` options\n *\n * @public\n */\nexport type CaseReducerActions<CaseReducers extends SliceCaseReducers<any>, SliceName extends string> = { [Type in keyof CaseReducers]: CaseReducers[Type] extends infer Definition ? Definition extends {\n prepare: any;\n} ? ActionCreatorForCaseReducerWithPrepare<Definition, SliceActionType<SliceName, Type>> : Definition extends AsyncThunkSliceReducerDefinition<any, infer ThunkArg, infer Returned, infer ThunkApiConfig> ? AsyncThunk<Returned, ThunkArg, ThunkApiConfig> : Definition extends {\n reducer: any;\n} ? ActionCreatorForCaseReducer<Definition['reducer'], SliceActionType<SliceName, Type>> : ActionCreatorForCaseReducer<Definition, SliceActionType<SliceName, Type>> : never };\n\n/**\n * Get a `PayloadActionCreator` type for a passed `CaseReducerWithPrepare`\n *\n * @internal\n */\ntype ActionCreatorForCaseReducerWithPrepare<CR extends {\n prepare: any;\n}, Type extends string> = _ActionCreatorWithPreparedPayload<CR['prepare'], Type>;\n\n/**\n * Get a `PayloadActionCreator` type for a passed `CaseReducer`\n *\n * @internal\n */\ntype ActionCreatorForCaseReducer<CR, Type extends string> = CR extends (state: any, action: infer Action) => any ? Action extends {\n payload: infer P;\n} ? PayloadActionCreator<P, Type> : ActionCreatorWithoutPayload<Type> : ActionCreatorWithoutPayload<Type>;\n\n/**\n * Extracts the CaseReducers out of a `reducers` object, even if they are\n * tested into a `CaseReducerWithPrepare`.\n *\n * @internal\n */\ntype SliceDefinedCaseReducers<CaseReducers extends SliceCaseReducers<any>> = { [Type in keyof CaseReducers]: CaseReducers[Type] extends infer Definition ? Definition extends AsyncThunkSliceReducerDefinition<any, any, any> ? Id<Pick<Required<Definition>, 'fulfilled' | 'rejected' | 'pending' | 'settled'>> : Definition extends {\n reducer: infer Reducer;\n} ? Reducer : Definition : never };\ntype RemappedSelector<S extends Selector, NewState> = S extends Selector<any, infer R, infer P> ? Selector<NewState, R, P> & {\n unwrapped: S;\n} : never;\n\n/**\n * Extracts the final selector type from the `selectors` object.\n *\n * Removes the `string` index signature from the default value.\n */\ntype SliceDefinedSelectors<State, Selectors extends SliceSelectors<State>, RootState> = { [K in keyof Selectors as string extends K ? never : K]: RemappedSelector<Selectors[K], RootState> };\n\n/**\n * Used on a SliceCaseReducers object.\n * Ensures that if a CaseReducer is a `CaseReducerWithPrepare`, that\n * the `reducer` and the `prepare` function use the same type of `payload`.\n *\n * Might do additional such checks in the future.\n *\n * This type is only ever useful if you want to write your own wrapper around\n * `createSlice`. Please don't use it otherwise!\n *\n * @public\n */\nexport type ValidateSliceCaseReducers<S, ACR extends SliceCaseReducers<S>> = ACR & { [T in keyof ACR]: ACR[T] extends {\n reducer(s: S, action?: infer A): any;\n} ? {\n prepare(...a: never[]): Omit<A, 'type'>;\n} : {} };\nfunction getType(slice: string, actionKey: string): string {\n return `${slice}/${actionKey}`;\n}\ninterface BuildCreateSliceConfig {\n creators?: {\n asyncThunk?: typeof asyncThunkCreator;\n };\n}\nexport function buildCreateSlice({\n creators\n}: BuildCreateSliceConfig = {}) {\n const cAT = creators?.asyncThunk?.[asyncThunkSymbol];\n return function createSlice<State, CaseReducers extends SliceCaseReducers<State>, Name extends string, Selectors extends SliceSelectors<State>, ReducerPath extends string = Name>(options: CreateSliceOptions<State, CaseReducers, Name, ReducerPath, Selectors>): Slice<State, CaseReducers, Name, ReducerPath, Selectors> {\n const {\n name,\n reducerPath = ((name as unknown) as ReducerPath)\n } = options;\n if (!name) {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage(11) : '`name` is a required option for createSlice');\n }\n if (typeof process !== 'undefined' && process.env.NODE_ENV === 'development') {\n if (options.initialState === undefined) {\n console.error('You must provide an `initialState` value that is not `undefined`. You may have misspelled `initialState`');\n }\n }\n const reducers = (typeof options.reducers === 'function' ? options.reducers(buildReducerCreators<State>()) : options.reducers) || {};\n const reducerNames = Object.keys(reducers);\n const context: ReducerHandlingContext<State> = {\n sliceCaseReducersByName: {},\n sliceCaseReducersByType: {},\n actionCreators: {},\n sliceMatchers: []\n };\n const contextMethods: ReducerHandlingContextMethods<State> = {\n addCase(typeOrActionCreator: string | TypedActionCreator<any>, reducer: CaseReducer<State>) {\n const type = typeof typeOrActionCreator === 'string' ? typeOrActionCreator : typeOrActionCreator.type;\n if (!type) {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage2(12) : '`context.addCase` cannot be called with an empty action type');\n }\n if (type in context.sliceCaseReducersByType) {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage3(13) : '`context.addCase` cannot be called with two reducers for the same action type: ' + type);\n }\n context.sliceCaseReducersByType[type] = reducer;\n return contextMethods;\n },\n addMatcher(matcher, reducer) {\n context.sliceMatchers.push({\n matcher,\n reducer\n });\n return contextMethods;\n },\n exposeAction(name, actionCreator) {\n context.actionCreators[name] = actionCreator;\n return contextMethods;\n },\n exposeCaseReducer(name, reducer) {\n context.sliceCaseReducersByName[name] = reducer;\n return contextMethods;\n }\n };\n reducerNames.forEach(reducerName => {\n const reducerDefinition = reducers[reducerName];\n const reducerDetails: ReducerDetails = {\n reducerName,\n type: getType(name, reducerName),\n createNotation: typeof options.reducers === 'function'\n };\n if (isAsyncThunkSliceReducerDefinition<State>(reducerDefinition)) {\n handleThunkCaseReducerDefinition(reducerDetails, reducerDefinition, contextMethods, cAT);\n } else {\n handleNormalReducerDefinition<State>(reducerDetails, (reducerDefinition as any), contextMethods);\n }\n });\n function buildReducer() {\n if (process.env.NODE_ENV !== 'production') {\n if (typeof options.extraReducers === 'object') {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage4(14) : \"The object notation for `createSlice.extraReducers` has been removed. Please use the 'builder callback' notation instead: https://redux-toolkit.js.org/api/createSlice\");\n }\n }\n const [extraReducers = {}, actionMatchers = [], defaultCaseReducer = undefined] = typeof options.extraReducers === 'function' ? executeReducerBuilderCallback(options.extraReducers) : [options.extraReducers];\n const finalCaseReducers = {\n ...extraReducers,\n ...context.sliceCaseReducersByType\n };\n return createReducer(options.initialState, builder => {\n for (let key in finalCaseReducers) {\n builder.addCase(key, (finalCaseReducers[key] as CaseReducer<any>));\n }\n for (let sM of context.sliceMatchers) {\n builder.addMatcher(sM.matcher, sM.reducer);\n }\n for (let m of actionMatchers) {\n builder.addMatcher(m.matcher, m.reducer);\n }\n if (defaultCaseReducer) {\n builder.addDefaultCase(defaultCaseReducer);\n }\n });\n }\n const selectSelf = (state: State) => state;\n const injectedSelectorCache = new Map<boolean, WeakMap<(rootState: any) => State | undefined, Record<string, (rootState: any) => any>>>();\n let _reducer: ReducerWithInitialState<State>;\n function reducer(state: State | undefined, action: UnknownAction) {\n if (!_reducer) _reducer = buildReducer();\n return _reducer(state, action);\n }\n function getInitialState() {\n if (!_reducer) _reducer = buildReducer();\n return _reducer.getInitialState();\n }\n function makeSelectorProps<CurrentReducerPath extends string = ReducerPath>(reducerPath: CurrentReducerPath, injected = false): Pick<Slice<State, CaseReducers, Name, CurrentReducerPath, Selectors>, 'getSelectors' | 'selectors' | 'selectSlice' | 'reducerPath'> {\n function selectSlice(state: { [K in CurrentReducerPath]: State }) {\n let sliceState = state[reducerPath];\n if (typeof sliceState === 'undefined') {\n if (injected) {\n sliceState = getInitialState();\n } else if (process.env.NODE_ENV !== 'production') {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage5(15) : 'selectSlice returned undefined for an uninjected slice reducer');\n }\n }\n return sliceState;\n }\n function getSelectors(selectState: (rootState: any) => State = selectSelf) {\n const selectorCache = emplace(injectedSelectorCache, injected, {\n insert: () => new WeakMap()\n });\n return (emplace(selectorCache, selectState, {\n insert: () => {\n const map: Record<string, Selector<any, any>> = {};\n for (const [name, selector] of Object.entries(options.selectors ?? {})) {\n map[name] = wrapSelector(selector, selectState, getInitialState, injected);\n }\n return map;\n }\n }) as any);\n }\n return {\n reducerPath,\n getSelectors,\n get selectors() {\n return getSelectors(selectSlice);\n },\n selectSlice\n };\n }\n const slice: Slice<State, CaseReducers, Name, ReducerPath, Selectors> = {\n name,\n reducer,\n actions: (context.actionCreators as any),\n caseReducers: (context.sliceCaseReducersByName as any),\n getInitialState,\n ...makeSelectorProps(reducerPath),\n injectInto(injectable, {\n reducerPath: pathOpt,\n ...config\n } = {}) {\n const newReducerPath = pathOpt ?? reducerPath;\n injectable.inject({\n reducerPath: newReducerPath,\n reducer\n }, config);\n return ({\n ...slice,\n ...makeSelectorProps(newReducerPath, true)\n } as any);\n }\n };\n return slice;\n };\n}\nfunction wrapSelector<State, NewState, S extends Selector<State>>(selector: S, selectState: Selector<NewState, State>, getInitialState: () => State, injected?: boolean) {\n function wrapper(rootState: NewState, ...args: any[]) {\n let sliceState = selectState(rootState);\n if (typeof sliceState === 'undefined') {\n if (injected) {\n sliceState = getInitialState();\n } else if (process.env.NODE_ENV !== 'production') {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage6(16) : 'selectState returned undefined for an uninjected slice reducer');\n }\n }\n return selector(sliceState, ...args);\n }\n wrapper.unwrapped = selector;\n return (wrapper as RemappedSelector<S, NewState>);\n}\n\n/**\n * A function that accepts an initial state, an object full of reducer\n * functions, and a \"slice name\", and automatically generates\n * action creators and action types that correspond to the\n * reducers and state.\n *\n * @public\n */\nexport const createSlice = /* @__PURE__ */buildCreateSlice();\ninterface ReducerHandlingContext<State> {\n sliceCaseReducersByName: Record<string, CaseReducer<State, any> | Pick<AsyncThunkSliceReducerDefinition<State, any, any, any>, 'fulfilled' | 'rejected' | 'pending' | 'settled'>>;\n sliceCaseReducersByType: Record<string, CaseReducer<State, any>>;\n sliceMatchers: ActionMatcherDescriptionCollection<State>;\n actionCreators: Record<string, Function>;\n}\ninterface ReducerHandlingContextMethods<State> {\n /**\n * Adds a case reducer to handle a single action type.\n * @param actionCreator - Either a plain action type string, or an action creator generated by [`createAction`](./createAction) that can be used to determine the action type.\n * @param reducer - The actual case reducer function.\n */\n addCase<ActionCreator extends TypedActionCreator<string>>(actionCreator: ActionCreator, reducer: CaseReducer<State, ReturnType<ActionCreator>>): ReducerHandlingContextMethods<State>;\n /**\n * Adds a case reducer to handle a single action type.\n * @param actionCreator - Either a plain action type string, or an action creator generated by [`createAction`](./createAction) that can be used to determine the action type.\n * @param reducer - The actual case reducer function.\n */\n addCase<Type extends string, A extends Action<Type>>(type: Type, reducer: CaseReducer<State, A>): ReducerHandlingContextMethods<State>;\n\n /**\n * Allows you to match incoming actions against your own filter function instead of only the `action.type` property.\n * @remarks\n * If multiple matcher reducers match, all of them will be executed in the order\n * they were defined in - even if a case reducer already matched.\n * All calls to `builder.addMatcher` must come after any calls to `builder.addCase` and before any calls to `builder.addDefaultCase`.\n * @param matcher - A matcher function. In TypeScript, this should be a [type predicate](https://www.typescriptlang.org/docs/handbook/2/narrowing.html#using-type-predicates)\n * function\n * @param reducer - The actual case reducer function.\n *\n */\n addMatcher<A>(matcher: TypeGuard<A>, reducer: CaseReducer<State, A extends Action ? A : A & Action>): ReducerHandlingContextMethods<State>;\n /**\n * Add an action to be exposed under the final `slice.actions` key.\n * @param name The key to be exposed as.\n * @param actionCreator The action to expose.\n * @example\n * context.exposeAction(\"addPost\", createAction<Post>(\"addPost\"));\n *\n * export const { addPost } = slice.actions\n *\n * dispatch(addPost(post))\n */\n exposeAction(name: string, actionCreator: Function): ReducerHandlingContextMethods<State>;\n /**\n * Add a case reducer to be exposed under the final `slice.caseReducers` key.\n * @param name The key to be exposed as.\n * @param reducer The reducer to expose.\n * @example\n * context.exposeCaseReducer(\"addPost\", (state, action: PayloadAction<Post>) => {\n * state.push(action.payload)\n * })\n *\n * slice.caseReducers.addPost([], addPost(post))\n */\n exposeCaseReducer(name: string, reducer: CaseReducer<State, any> | Pick<AsyncThunkSliceReducerDefinition<State, any, any, any>, 'fulfilled' | 'rejected' | 'pending' | 'settled'>): ReducerHandlingContextMethods<State>;\n}\ninterface ReducerDetails {\n /** The key the reducer was defined under */\n reducerName: string;\n /** The predefined action type, i.e. `${slice.name}/${reducerName}` */\n type: string;\n /** Whether create. notation was used when defining reducers */\n createNotation: boolean;\n}\nfunction buildReducerCreators<State>(): ReducerCreators<State> {\n function asyncThunk(payloadCreator: AsyncThunkPayloadCreator<any, any>, config: AsyncThunkSliceReducerConfig<State, any>): AsyncThunkSliceReducerDefinition<State, any> {\n return {\n _reducerDefinitionType: ReducerType.asyncThunk,\n payloadCreator,\n ...config\n };\n }\n asyncThunk.withTypes = () => asyncThunk;\n return {\n reducer(caseReducer: CaseReducer<State, any>) {\n return Object.assign({\n // hack so the wrapping function has the same name as the original\n // we need to create a wrapper so the `reducerDefinitionType` is not assigned to the original\n [caseReducer.name](...args: Parameters<typeof caseReducer>) {\n return caseReducer(...args);\n }\n }[caseReducer.name], ({\n _reducerDefinitionType: ReducerType.reducer\n } as const));\n },\n preparedReducer(prepare, reducer) {\n return {\n _reducerDefinitionType: ReducerType.reducerWithPrepare,\n prepare,\n reducer\n };\n },\n asyncThunk: (asyncThunk as any)\n };\n}\nfunction handleNormalReducerDefinition<State>({\n type,\n reducerName,\n createNotation\n}: ReducerDetails, maybeReducerWithPrepare: CaseReducer<State, {\n payload: any;\n type: string;\n}> | CaseReducerWithPrepare<State, PayloadAction<any, string, any, any>>, context: ReducerHandlingContextMethods<State>) {\n let caseReducer: CaseReducer<State, any>;\n let prepareCallback: PrepareAction<any> | undefined;\n if ('reducer' in maybeReducerWithPrepare) {\n if (createNotation && !isCaseReducerWithPrepareDefinition(maybeReducerWithPrepare)) {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage7(17) : 'Please use the `create.preparedReducer` notation for prepared action creators with the `create` notation.');\n }\n caseReducer = maybeReducerWithPrepare.reducer;\n prepareCallback = maybeReducerWithPrepare.prepare;\n } else {\n caseReducer = maybeReducerWithPrepare;\n }\n context.addCase(type, caseReducer).exposeCaseReducer(reducerName, caseReducer).exposeAction(reducerName, prepareCallback ? createAction(type, prepareCallback) : createAction(type));\n}\nfunction isAsyncThunkSliceReducerDefinition<State>(reducerDefinition: any): reducerDefinition is AsyncThunkSliceReducerDefinition<State, any, any, any> {\n return reducerDefinition._reducerDefinitionType === ReducerType.asyncThunk;\n}\nfunction isCaseReducerWithPrepareDefinition<State>(reducerDefinition: any): reducerDefinition is CaseReducerWithPrepareDefinition<State, any> {\n return reducerDefinition._reducerDefinitionType === ReducerType.reducerWithPrepare;\n}\nfunction handleThunkCaseReducerDefinition<State>({\n type,\n reducerName\n}: ReducerDetails, reducerDefinition: AsyncThunkSliceReducerDefinition<State, any, any, any>, context: ReducerHandlingContextMethods<State>, cAT: typeof _createAsyncThunk | undefined) {\n if (!cAT) {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage8(18) : 'Cannot use `create.asyncThunk` in the built-in `createSlice`. ' + 'Use `buildCreateSlice({ creators: { asyncThunk: asyncThunkCreator } })` to create a customised version of `createSlice`.');\n }\n const {\n payloadCreator,\n fulfilled,\n pending,\n rejected,\n settled,\n options\n } = reducerDefinition;\n const thunk = cAT(type, payloadCreator, (options as any));\n context.exposeAction(reducerName, thunk);\n if (fulfilled) {\n context.addCase(thunk.fulfilled, fulfilled);\n }\n if (pending) {\n context.addCase(thunk.pending, pending);\n }\n if (rejected) {\n context.addCase(thunk.rejected, rejected);\n }\n if (settled) {\n context.addMatcher(thunk.settled, settled);\n }\n context.exposeCaseReducer(reducerName, {\n fulfilled: fulfilled || noop,\n pending: pending || noop,\n rejected: rejected || noop,\n settled: settled || noop\n });\n}\nfunction noop() {}","import { produce as createNextState, isDraft } from 'immer';\nimport type { Draft } from 'immer';\nimport type { EntityId, DraftableEntityState, PreventAny } from './models';\nimport type { PayloadAction } from '../createAction';\nimport { isFSA } from '../createAction';\nexport const isDraftTyped = (isDraft as <T>(value: T | Draft<T>) => value is Draft<T>);\nexport function createSingleArgumentStateOperator<T, Id extends EntityId>(mutator: (state: DraftableEntityState<T, Id>) => void) {\n const operator = createStateOperator((_: undefined, state: DraftableEntityState<T, Id>) => mutator(state));\n return function operation<S extends DraftableEntityState<T, Id>>(state: PreventAny<S, T, Id>): S {\n return operator((state as S), undefined);\n };\n}\nexport function createStateOperator<T, Id extends EntityId, R>(mutator: (arg: R, state: DraftableEntityState<T, Id>) => void) {\n return function operation<S extends DraftableEntityState<T, Id>>(state: S, arg: R | PayloadAction<R>): S {\n function isPayloadActionArgument(arg: R | PayloadAction<R>): arg is PayloadAction<R> {\n return isFSA(arg);\n }\n const runMutator = (draft: DraftableEntityState<T, Id>) => {\n if (isPayloadActionArgument(arg)) {\n mutator(arg.payload, draft);\n } else {\n mutator(arg, draft);\n }\n };\n if (isDraftTyped<DraftableEntityState<T, Id>>(state)) {\n // we must already be inside a `createNextState` call, likely because\n // this is being wrapped in `createReducer` or `createSlice`.\n // It's safe to just pass the draft to the mutator.\n runMutator(state);\n\n // since it's a draft, we'll just return it\n return state;\n }\n return createNextState(state, runMutator);\n };\n}","import type { SerializedError } from '@reduxjs/toolkit';\nconst task = 'task';\nconst listener = 'listener';\nconst completed = 'completed';\nconst cancelled = 'cancelled';\n\n/* TaskAbortError error codes */\nexport const taskCancelled = (`task-${cancelled}` as const);\nexport const taskCompleted = (`task-${completed}` as const);\nexport const listenerCancelled = (`${listener}-${cancelled}` as const);\nexport const listenerCompleted = (`${listener}-${completed}` as const);\nexport class TaskAbortError implements SerializedError {\n name = 'TaskAbortError';\n message: string;\n constructor(public code: string | undefined) {\n this.message = `${task} ${cancelled} (reason: ${code})`;\n }\n}","import { TaskAbortError } from './exceptions';\nimport type { AbortSignalWithReason, TaskResult } from './types';\nimport { addAbortSignalListener, catchRejection, noop } from './utils';\n\n/**\n * Synchronously raises {@link TaskAbortError} if the task tied to the input `signal` has been cancelled.\n * @param signal\n * @param reason\n * @see {TaskAbortError}\n */\nexport const validateActive = (signal: AbortSignal): void => {\n if (signal.aborted) {\n const {\n reason\n } = (signal as AbortSignalWithReason<string>);\n throw new TaskAbortError(reason);\n }\n};\n\n/**\n * Generates a race between the promise(s) and the AbortSignal\n * This avoids `Promise.race()`-related memory leaks:\n * https://github.com/nodejs/node/issues/17469#issuecomment-349794909\n */\nexport function raceWithSignal<T>(signal: AbortSignalWithReason<string>, promise: Promise<T>): Promise<T> {\n let cleanup = noop;\n return new Promise<T>((resolve, reject) => {\n const notifyRejection = () => reject(new TaskAbortError(signal.reason));\n if (signal.aborted) {\n notifyRejection();\n return;\n }\n cleanup = addAbortSignalListener(signal, notifyRejection);\n promise.finally(() => cleanup()).then(resolve, reject);\n }).finally(() => {\n // after this point, replace `cleanup` with a noop, so there is no reference to `signal` any more\n cleanup = noop;\n });\n}\n\n/**\n * Runs a task and returns promise that resolves to {@link TaskResult}.\n * Second argument is an optional `cleanUp` function that always runs after task.\n *\n * **Note:** `runTask` runs the executor in the next microtask.\n * @returns\n */\nexport const runTask = async <T,>(task: () => Promise<T>, cleanUp?: () => void): Promise<TaskResult<T>> => {\n try {\n await Promise.resolve();\n const value = await task();\n return {\n status: 'ok',\n value\n };\n } catch (error: any) {\n return {\n status: error instanceof TaskAbortError ? 'cancelled' : 'rejected',\n error\n };\n } finally {\n cleanUp?.();\n }\n};\n\n/**\n * Given an input `AbortSignal` and a promise returns another promise that resolves\n * as soon the input promise is provided or rejects as soon as\n * `AbortSignal.abort` is `true`.\n * @param signal\n * @returns\n */\nexport const createPause = <T,>(signal: AbortSignal) => {\n return (promise: Promise<T>): Promise<T> => {\n return catchRejection(raceWithSignal(signal, promise).then(output => {\n validateActive(signal);\n return output;\n }));\n };\n};\n\n/**\n * Given an input `AbortSignal` and `timeoutMs` returns a promise that resolves\n * after `timeoutMs` or rejects as soon as `AbortSignal.abort` is `true`.\n * @param signal\n * @returns\n */\nexport const createDelay = (signal: AbortSignal) => {\n const pause = createPause<void>(signal);\n return (timeoutMs: number): Promise<void> => {\n return pause(new Promise<void>(resolve => setTimeout(resolve, timeoutMs)));\n };\n};","import { formatProdErrorMessage as _formatProdErrorMessage, formatProdErrorMessage as _formatProdErrorMessage2, formatProdErrorMessage as _formatProdErrorMessage3 } from \"@reduxjs/toolkit\";\nimport type { Action, Dispatch, MiddlewareAPI, UnknownAction } from 'redux';\nimport { isAction } from 'redux';\nimport type { ThunkDispatch } from 'redux-thunk';\nimport { createAction } from '../createAction';\nimport { nanoid } from '../nanoid';\nimport { find } from '../utils';\nimport { TaskAbortError, listenerCancelled, listenerCompleted, taskCancelled, taskCompleted } from './exceptions';\nimport { createDelay, createPause, raceWithSignal, runTask, validateActive } from './task';\nimport type { AbortSignalWithReason, AddListenerOverloads, AnyListenerPredicate, CreateListenerMiddlewareOptions, FallbackAddListenerOptions, ForkOptions, ForkedTask, ForkedTaskExecutor, ListenerEntry, ListenerErrorHandler, ListenerErrorInfo, ListenerMiddleware, ListenerMiddlewareInstance, TakePattern, TaskResult, TypedAddListener, TypedCreateListenerEntry, TypedRemoveListener, UnsubscribeListener, UnsubscribeListenerOptions } from './types';\nimport { abortControllerWithReason, addAbortSignalListener, assertFunction, catchRejection, noop } from './utils';\nexport { TaskAbortError } from './exceptions';\nexport type { AsyncTaskExecutor, CreateListenerMiddlewareOptions, ForkedTask, ForkedTaskAPI, ForkedTaskExecutor, ListenerEffect, ListenerEffectAPI, ListenerErrorHandler, ListenerMiddleware, ListenerMiddlewareInstance, SyncTaskExecutor, TaskCancelled, TaskRejected, TaskResolved, TaskResult, TypedAddListener, TypedRemoveListener, TypedStartListening, TypedStopListening, UnsubscribeListener, UnsubscribeListenerOptions } from './types';\n\n//Overly-aggressive byte-shaving\nconst {\n assign\n} = Object;\n/**\n * @internal\n */\nconst INTERNAL_NIL_TOKEN = ({} as const);\nconst alm = ('listenerMiddleware' as const);\nconst createFork = (parentAbortSignal: AbortSignalWithReason<unknown>, parentBlockingPromises: Promise<any>[]) => {\n const linkControllers = (controller: AbortController) => addAbortSignalListener(parentAbortSignal, () => abortControllerWithReason(controller, parentAbortSignal.reason));\n return <T,>(taskExecutor: ForkedTaskExecutor<T>, opts?: ForkOptions): ForkedTask<T> => {\n assertFunction(taskExecutor, 'taskExecutor');\n const childAbortController = new AbortController();\n linkControllers(childAbortController);\n const result = runTask<T>(async (): Promise<T> => {\n validateActive(parentAbortSignal);\n validateActive(childAbortController.signal);\n const result = ((await taskExecutor({\n pause: createPause(childAbortController.signal),\n delay: createDelay(childAbortController.signal),\n signal: childAbortController.signal\n })) as T);\n validateActive(childAbortController.signal);\n return result;\n }, () => abortControllerWithReason(childAbortController, taskCompleted));\n if (opts?.autoJoin) {\n parentBlockingPromises.push(result.catch(noop));\n }\n return {\n result: createPause<TaskResult<T>>(parentAbortSignal)(result),\n cancel() {\n abortControllerWithReason(childAbortController, taskCancelled);\n }\n };\n };\n};\nconst createTakePattern = <S,>(startListening: AddListenerOverloads<UnsubscribeListener, S, Dispatch>, signal: AbortSignal): TakePattern<S> => {\n /**\n * A function that takes a ListenerPredicate and an optional timeout,\n * and resolves when either the predicate returns `true` based on an action\n * state combination or when the timeout expires.\n * If the parent listener is canceled while waiting, this will throw a\n * TaskAbortError.\n */\n const take = async <P extends AnyListenerPredicate<S>,>(predicate: P, timeout: number | undefined) => {\n validateActive(signal);\n\n // Placeholder unsubscribe function until the listener is added\n let unsubscribe: UnsubscribeListener = () => {};\n const tuplePromise = new Promise<[Action, S, S]>((resolve, reject) => {\n // Inside the Promise, we synchronously add the listener.\n let stopListening = startListening({\n predicate: (predicate as any),\n effect: (action, listenerApi): void => {\n // One-shot listener that cleans up as soon as the predicate passes\n listenerApi.unsubscribe();\n // Resolve the promise with the same arguments the predicate saw\n resolve([action, listenerApi.getState(), listenerApi.getOriginalState()]);\n }\n });\n unsubscribe = () => {\n stopListening();\n reject();\n };\n });\n const promises: (Promise<null> | Promise<[Action, S, S]>)[] = [tuplePromise];\n if (timeout != null) {\n promises.push(new Promise<null>(resolve => setTimeout(resolve, timeout, null)));\n }\n try {\n const output = await raceWithSignal(signal, Promise.race(promises));\n validateActive(signal);\n return output;\n } finally {\n // Always clean up the listener\n unsubscribe();\n }\n };\n return (((predicate: AnyListenerPredicate<S>, timeout: number | undefined) => catchRejection(take(predicate, timeout))) as TakePattern<S>);\n};\nconst getListenerEntryPropsFrom = (options: FallbackAddListenerOptions) => {\n let {\n type,\n actionCreator,\n matcher,\n predicate,\n effect\n } = options;\n if (type) {\n predicate = createAction(type).match;\n } else if (actionCreator) {\n type = actionCreator!.type;\n predicate = actionCreator.match;\n } else if (matcher) {\n predicate = matcher;\n } else if (predicate) {\n // pass\n } else {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage(21) : 'Creating or removing a listener requires one of the known fields for matching an action');\n }\n assertFunction(effect, 'options.listener');\n return {\n predicate,\n type,\n effect\n };\n};\n\n/** Accepts the possible options for creating a listener, and returns a formatted listener entry */\nexport const createListenerEntry: TypedCreateListenerEntry<unknown> = ( /* @__PURE__ */(assign((options: FallbackAddListenerOptions) => {\n const {\n type,\n predicate,\n effect\n } = getListenerEntryPropsFrom(options);\n const id = nanoid();\n const entry: ListenerEntry<unknown> = {\n id,\n effect,\n type,\n predicate,\n pending: new Set<AbortController>(),\n unsubscribe: () => {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage2(22) : 'Unsubscribe not initialized');\n }\n };\n return entry;\n}, {\n withTypes: () => createListenerEntry\n}) as unknown) as TypedCreateListenerEntry<unknown>);\nconst cancelActiveListeners = (entry: ListenerEntry<unknown, Dispatch<UnknownAction>>) => {\n entry.pending.forEach(controller => {\n abortControllerWithReason(controller, listenerCancelled);\n });\n};\nconst createClearListenerMiddleware = (listenerMap: Map<string, ListenerEntry>) => {\n return () => {\n listenerMap.forEach(cancelActiveListeners);\n listenerMap.clear();\n };\n};\n\n/**\n * Safely reports errors to the `errorHandler` provided.\n * Errors that occur inside `errorHandler` are notified in a new task.\n * Inspired by [rxjs reportUnhandledError](https://github.com/ReactiveX/rxjs/blob/6fafcf53dc9e557439b25debaeadfd224b245a66/src/internal/util/reportUnhandledError.ts)\n * @param errorHandler\n * @param errorToNotify\n */\nconst safelyNotifyError = (errorHandler: ListenerErrorHandler, errorToNotify: unknown, errorInfo: ListenerErrorInfo): void => {\n try {\n errorHandler(errorToNotify, errorInfo);\n } catch (errorHandlerError) {\n // We cannot let an error raised here block the listener queue.\n // The error raised here will be picked up by `window.onerror`, `process.on('error')` etc...\n setTimeout(() => {\n throw errorHandlerError;\n }, 0);\n }\n};\n\n/**\n * @public\n */\nexport const addListener = ( /* @__PURE__ */(assign( /* @__PURE__ */createAction(`${alm}/add`), {\n withTypes: () => addListener\n}) as unknown) as TypedAddListener<unknown>);\n\n/**\n * @public\n */\nexport const clearAllListeners = /* @__PURE__ */createAction(`${alm}/removeAll`);\n\n/**\n * @public\n */\nexport const removeListener = ( /* @__PURE__ */(assign( /* @__PURE__ */createAction(`${alm}/remove`), {\n withTypes: () => removeListener\n}) as unknown) as TypedRemoveListener<unknown>);\nconst defaultErrorHandler: ListenerErrorHandler = (...args: unknown[]) => {\n console.error(`${alm}/error`, ...args);\n};\n\n/**\n * @public\n */\nexport const createListenerMiddleware = <StateType = unknown, DispatchType extends Dispatch<Action> = ThunkDispatch<StateType, unknown, UnknownAction>, ExtraArgument = unknown>(middlewareOptions: CreateListenerMiddlewareOptions<ExtraArgument> = {}) => {\n const listenerMap = new Map<string, ListenerEntry>();\n const {\n extra,\n onError = defaultErrorHandler\n } = middlewareOptions;\n assertFunction(onError, 'onError');\n const insertEntry = (entry: ListenerEntry) => {\n entry.unsubscribe = () => listenerMap.delete(entry!.id);\n listenerMap.set(entry.id, entry);\n return (cancelOptions?: UnsubscribeListenerOptions) => {\n entry.unsubscribe();\n if (cancelOptions?.cancelActive) {\n cancelActiveListeners(entry);\n }\n };\n };\n const startListening = (((options: FallbackAddListenerOptions) => {\n let entry = find(Array.from(listenerMap.values()), existingEntry => existingEntry.effect === options.effect);\n if (!entry) {\n entry = createListenerEntry((options as any));\n }\n return insertEntry(entry);\n }) as AddListenerOverloads<any>);\n assign(startListening, {\n withTypes: () => startListening\n });\n const stopListening = (options: FallbackAddListenerOptions & UnsubscribeListenerOptions): boolean => {\n const {\n type,\n effect,\n predicate\n } = getListenerEntryPropsFrom(options);\n const entry = find(Array.from(listenerMap.values()), entry => {\n const matchPredicateOrType = typeof type === 'string' ? entry.type === type : entry.predicate === predicate;\n return matchPredicateOrType && entry.effect === effect;\n });\n if (entry) {\n entry.unsubscribe();\n if (options.cancelActive) {\n cancelActiveListeners(entry);\n }\n }\n return !!entry;\n };\n assign(stopListening, {\n withTypes: () => stopListening\n });\n const notifyListener = async (entry: ListenerEntry<unknown, Dispatch<UnknownAction>>, action: unknown, api: MiddlewareAPI, getOriginalState: () => StateType) => {\n const internalTaskController = new AbortController();\n const take = createTakePattern((startListening as AddListenerOverloads<any>), internalTaskController.signal);\n const autoJoinPromises: Promise<any>[] = [];\n try {\n entry.pending.add(internalTaskController);\n await Promise.resolve(entry.effect(action,\n // Use assign() rather than ... to avoid extra helper functions added to bundle\n assign({}, api, {\n getOriginalState,\n condition: (predicate: AnyListenerPredicate<any>, timeout?: number) => take(predicate, timeout).then(Boolean),\n take,\n delay: createDelay(internalTaskController.signal),\n pause: createPause<any>(internalTaskController.signal),\n extra,\n signal: internalTaskController.signal,\n fork: createFork(internalTaskController.signal, autoJoinPromises),\n unsubscribe: entry.unsubscribe,\n subscribe: () => {\n listenerMap.set(entry.id, entry);\n },\n cancelActiveListeners: () => {\n entry.pending.forEach((controller, _, set) => {\n if (controller !== internalTaskController) {\n abortControllerWithReason(controller, listenerCancelled);\n set.delete(controller);\n }\n });\n },\n cancel: () => {\n abortControllerWithReason(internalTaskController, listenerCancelled);\n entry.pending.delete(internalTaskController);\n },\n throwIfCancelled: () => {\n validateActive(internalTaskController.signal);\n }\n })));\n } catch (listenerError) {\n if (!(listenerError instanceof TaskAbortError)) {\n safelyNotifyError(onError, listenerError, {\n raisedBy: 'effect'\n });\n }\n } finally {\n await Promise.all(autoJoinPromises);\n abortControllerWithReason(internalTaskController, listenerCompleted); // Notify that the task has completed\n entry.pending.delete(internalTaskController);\n }\n };\n const clearListenerMiddleware = createClearListenerMiddleware(listenerMap);\n const middleware: ListenerMiddleware<StateType, DispatchType, ExtraArgument> = api => next => action => {\n if (!isAction(action)) {\n // we only want to notify listeners for action objects\n return next(action);\n }\n if (addListener.match(action)) {\n return startListening((action.payload as any));\n }\n if (clearAllListeners.match(action)) {\n clearListenerMiddleware();\n return;\n }\n if (removeListener.match(action)) {\n return stopListening(action.payload);\n }\n\n // Need to get this state _before_ the reducer processes the action\n let originalState: StateType | typeof INTERNAL_NIL_TOKEN = api.getState();\n\n // `getOriginalState` can only be called synchronously.\n // @see https://github.com/reduxjs/redux-toolkit/discussions/1648#discussioncomment-1932820\n const getOriginalState = (): StateType => {\n if (originalState === INTERNAL_NIL_TOKEN) {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage3(23) : `${alm}: getOriginalState can only be called synchronously`);\n }\n return (originalState as StateType);\n };\n let result: unknown;\n try {\n // Actually forward the action to the reducer before we handle listeners\n result = next(action);\n if (listenerMap.size > 0) {\n const currentState = api.getState();\n // Work around ESBuild+TS transpilation issue\n const listenerEntries = Array.from(listenerMap.values());\n for (const entry of listenerEntries) {\n let runListener = false;\n try {\n runListener = entry.predicate(action, currentState, originalState);\n } catch (predicateError) {\n runListener = false;\n safelyNotifyError(onError, predicateError, {\n raisedBy: 'predicate'\n });\n }\n if (!runListener) {\n continue;\n }\n notifyListener(entry, action, api, getOriginalState);\n }\n }\n } finally {\n // Remove `originalState` store from this scope.\n originalState = INTERNAL_NIL_TOKEN;\n }\n return result;\n };\n return ({\n middleware,\n startListening,\n stopListening,\n clearListeners: clearListenerMiddleware\n } as ListenerMiddlewareInstance<StateType, DispatchType, ExtraArgument>);\n};","import { formatProdErrorMessage as _formatProdErrorMessage, formatProdErrorMessage as _formatProdErrorMessage2 } from \"@reduxjs/toolkit\";\nimport type { Reducer, StateFromReducersMapObject, UnknownAction } from 'redux';\nimport { combineReducers } from 'redux';\nimport { nanoid } from './nanoid';\nimport type { Id, NonUndefined, Tail, UnionToIntersection, WithOptionalProp } from './tsHelpers';\nimport { emplace } from './utils';\ntype SliceLike<ReducerPath extends string, State> = {\n reducerPath: ReducerPath;\n reducer: Reducer<State>;\n};\ntype AnySliceLike = SliceLike<string, any>;\ntype SliceLikeReducerPath<A extends AnySliceLike> = A extends SliceLike<infer ReducerPath, any> ? ReducerPath : never;\ntype SliceLikeState<A extends AnySliceLike> = A extends SliceLike<any, infer State> ? State : never;\nexport type WithSlice<A extends AnySliceLike> = { [Path in SliceLikeReducerPath<A>]: SliceLikeState<A> };\ntype ReducerMap = Record<string, Reducer>;\ntype ExistingSliceLike<DeclaredState> = { [ReducerPath in keyof DeclaredState]: SliceLike<ReducerPath & string, NonUndefined<DeclaredState[ReducerPath]>> }[keyof DeclaredState];\nexport type InjectConfig = {\n /**\n * Allow replacing reducer with a different reference. Normally, an error will be thrown if a different reducer instance to the one already injected is used.\n */\n overrideExisting?: boolean;\n};\n\n/**\n * A reducer that allows for slices/reducers to be injected after initialisation.\n */\nexport interface CombinedSliceReducer<InitialState, DeclaredState = InitialState> extends Reducer<DeclaredState, UnknownAction, Partial<DeclaredState>> {\n /**\n * Provide a type for slices that will be injected lazily.\n *\n * One way to do this would be with interface merging:\n * ```ts\n *\n * export interface LazyLoadedSlices {}\n *\n * export const rootReducer = combineSlices(stringSlice).withLazyLoadedSlices<LazyLoadedSlices>();\n *\n * // elsewhere\n *\n * declare module './reducer' {\n * export interface LazyLoadedSlices extends WithSlice<typeof booleanSlice> {}\n * }\n *\n * const withBoolean = rootReducer.inject(booleanSlice);\n *\n * // elsewhere again\n *\n * declare module './reducer' {\n * export interface LazyLoadedSlices {\n * customName: CustomState\n * }\n * }\n *\n * const withCustom = rootReducer.inject({ reducerPath: \"customName\", reducer: customSlice.reducer })\n * ```\n */\n withLazyLoadedSlices<Lazy = {}>(): CombinedSliceReducer<InitialState, Id<DeclaredState & Partial<Lazy>>>;\n\n /**\n * Inject a slice.\n *\n * Accepts an individual slice, RTKQ API instance, or a \"slice-like\" { reducerPath, reducer } object.\n *\n * ```ts\n * rootReducer.inject(booleanSlice)\n * rootReducer.inject(baseApi)\n * rootReducer.inject({ reducerPath: 'boolean' as const, reducer: newReducer }, { overrideExisting: true })\n * ```\n *\n */\n inject<Sl extends Id<ExistingSliceLike<DeclaredState>>>(slice: Sl, config?: InjectConfig): CombinedSliceReducer<InitialState, Id<DeclaredState & WithSlice<Sl>>>;\n\n /**\n * Inject a slice.\n *\n * Accepts an individual slice, RTKQ API instance, or a \"slice-like\" { reducerPath, reducer } object.\n *\n * ```ts\n * rootReducer.inject(booleanSlice)\n * rootReducer.inject(baseApi)\n * rootReducer.inject({ reducerPath: 'boolean' as const, reducer: newReducer }, { overrideExisting: true })\n * ```\n *\n */\n inject<ReducerPath extends string, State>(slice: SliceLike<ReducerPath, State & (ReducerPath extends keyof DeclaredState ? never : State)>, config?: InjectConfig): CombinedSliceReducer<InitialState, Id<DeclaredState & WithSlice<SliceLike<ReducerPath, State>>>>;\n\n /**\n * Create a selector that guarantees that the slices injected will have a defined value when selector is run.\n *\n * ```ts\n * const selectBooleanWithoutInjection = (state: RootState) => state.boolean;\n * // ^? boolean | undefined\n *\n * const selectBoolean = rootReducer.inject(booleanSlice).selector((state) => {\n * // if action hasn't been dispatched since slice was injected, this would usually be undefined\n * // however selector() uses a Proxy around the first parameter to ensure that it evaluates to the initial state instead, if undefined\n * return state.boolean;\n * // ^? boolean\n * })\n * ```\n *\n * If the reducer is nested inside the root state, a selectState callback can be passed to retrieve the reducer's state.\n *\n * ```ts\n *\n * export interface LazyLoadedSlices {};\n *\n * export const innerReducer = combineSlices(stringSlice).withLazyLoadedSlices<LazyLoadedSlices>();\n *\n * export const rootReducer = combineSlices({ inner: innerReducer });\n *\n * export type RootState = ReturnType<typeof rootReducer>;\n *\n * // elsewhere\n *\n * declare module \"./reducer.ts\" {\n * export interface LazyLoadedSlices extends WithSlice<typeof booleanSlice> {}\n * }\n *\n * const withBool = innerReducer.inject(booleanSlice);\n *\n * const selectBoolean = withBool.selector(\n * (state) => state.boolean,\n * (rootState: RootState) => state.inner\n * );\n * // now expects to be passed RootState instead of innerReducer state\n *\n * ```\n *\n * Value passed to selectorFn will be a Proxy - use selector.original(proxy) to get original state value (useful for debugging)\n *\n * ```ts\n * const injectedReducer = rootReducer.inject(booleanSlice);\n * const selectBoolean = injectedReducer.selector((state) => {\n * console.log(injectedReducer.selector.original(state).boolean) // possibly undefined\n * return state.boolean\n * })\n * ```\n */\n selector: {\n /**\n * Create a selector that guarantees that the slices injected will have a defined value when selector is run.\n *\n * ```ts\n * const selectBooleanWithoutInjection = (state: RootState) => state.boolean;\n * // ^? boolean | undefined\n *\n * const selectBoolean = rootReducer.inject(booleanSlice).selector((state) => {\n * // if action hasn't been dispatched since slice was injected, this would usually be undefined\n * // however selector() uses a Proxy around the first parameter to ensure that it evaluates to the initial state instead, if undefined\n * return state.boolean;\n * // ^? boolean\n * })\n * ```\n *\n * Value passed to selectorFn will be a Proxy - use selector.original(proxy) to get original state value (useful for debugging)\n *\n * ```ts\n * const injectedReducer = rootReducer.inject(booleanSlice);\n * const selectBoolean = injectedReducer.selector((state) => {\n * console.log(injectedReducer.selector.original(state).boolean) // undefined\n * return state.boolean\n * })\n * ```\n */\n <Selector extends (state: DeclaredState, ...args: any[]) => unknown>(selectorFn: Selector): (state: WithOptionalProp<Parameters<Selector>[0], Exclude<keyof DeclaredState, keyof InitialState>>, ...args: Tail<Parameters<Selector>>) => ReturnType<Selector>;\n\n /**\n * Create a selector that guarantees that the slices injected will have a defined value when selector is run.\n *\n * ```ts\n * const selectBooleanWithoutInjection = (state: RootState) => state.boolean;\n * // ^? boolean | undefined\n *\n * const selectBoolean = rootReducer.inject(booleanSlice).selector((state) => {\n * // if action hasn't been dispatched since slice was injected, this would usually be undefined\n * // however selector() uses a Proxy around the first parameter to ensure that it evaluates to the initial state instead, if undefined\n * return state.boolean;\n * // ^? boolean\n * })\n * ```\n *\n * If the reducer is nested inside the root state, a selectState callback can be passed to retrieve the reducer's state.\n *\n * ```ts\n *\n * interface LazyLoadedSlices {};\n *\n * const innerReducer = combineSlices(stringSlice).withLazyLoadedSlices<LazyLoadedSlices>();\n *\n * const rootReducer = combineSlices({ inner: innerReducer });\n *\n * type RootState = ReturnType<typeof rootReducer>;\n *\n * // elsewhere\n *\n * declare module \"./reducer.ts\" {\n * interface LazyLoadedSlices extends WithSlice<typeof booleanSlice> {}\n * }\n *\n * const withBool = innerReducer.inject(booleanSlice);\n *\n * const selectBoolean = withBool.selector(\n * (state) => state.boolean,\n * (rootState: RootState) => state.inner\n * );\n * // now expects to be passed RootState instead of innerReducer state\n *\n * ```\n *\n * Value passed to selectorFn will be a Proxy - use selector.original(proxy) to get original state value (useful for debugging)\n *\n * ```ts\n * const injectedReducer = rootReducer.inject(booleanSlice);\n * const selectBoolean = injectedReducer.selector((state) => {\n * console.log(injectedReducer.selector.original(state).boolean) // possibly undefined\n * return state.boolean\n * })\n * ```\n */\n <Selector extends (state: DeclaredState, ...args: any[]) => unknown, RootState>(selectorFn: Selector, selectState: (rootState: RootState, ...args: Tail<Parameters<Selector>>) => WithOptionalProp<Parameters<Selector>[0], Exclude<keyof DeclaredState, keyof InitialState>>): (state: RootState, ...args: Tail<Parameters<Selector>>) => ReturnType<Selector>;\n /**\n * Returns the unproxied state. Useful for debugging.\n * @param state state Proxy, that ensures injected reducers have value\n * @returns original, unproxied state\n * @throws if value passed is not a state Proxy\n */\n original: (state: DeclaredState) => InitialState & Partial<DeclaredState>;\n };\n}\ntype InitialState<Slices extends Array<AnySliceLike | ReducerMap>> = UnionToIntersection<Slices[number] extends infer Slice ? Slice extends AnySliceLike ? WithSlice<Slice> : StateFromReducersMapObject<Slice> : never>;\nconst isSliceLike = (maybeSliceLike: AnySliceLike | ReducerMap): maybeSliceLike is AnySliceLike => 'reducerPath' in maybeSliceLike && typeof maybeSliceLike.reducerPath === 'string';\nconst getReducers = (slices: Array<AnySliceLike | ReducerMap>) => slices.flatMap(sliceOrMap => isSliceLike(sliceOrMap) ? [([sliceOrMap.reducerPath, sliceOrMap.reducer] as const)] : Object.entries(sliceOrMap));\nconst ORIGINAL_STATE = Symbol.for('rtk-state-proxy-original');\nconst isStateProxy = (value: any) => !!value && !!value[ORIGINAL_STATE];\nconst stateProxyMap = new WeakMap<object, object>();\nconst createStateProxy = <State extends object,>(state: State, reducerMap: Partial<Record<string, Reducer>>) => (emplace(stateProxyMap, state, {\n insert: () => new Proxy(state, {\n get: (target, prop, receiver) => {\n if (prop === ORIGINAL_STATE) return target;\n const result = Reflect.get(target, prop, receiver);\n if (typeof result === 'undefined') {\n const reducer = reducerMap[prop.toString()];\n if (reducer) {\n // ensure action type is random, to prevent reducer treating it differently\n const reducerResult = reducer(undefined, {\n type: nanoid()\n });\n if (typeof reducerResult === 'undefined') {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage(24) : `The slice reducer for key \"${prop.toString()}\" returned undefined when called for selector(). ` + `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 return reducerResult;\n }\n }\n return result;\n }\n })\n}) as State);\nconst original = (state: any) => {\n if (!isStateProxy(state)) {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage2(25) : 'original must be used on state Proxy');\n }\n return state[ORIGINAL_STATE];\n};\nconst noopReducer: Reducer<Record<string, any>> = (state = {}) => state;\nexport function combineSlices<Slices extends Array<AnySliceLike | ReducerMap>>(...slices: Slices): CombinedSliceReducer<Id<InitialState<Slices>>> {\n const reducerMap = Object.fromEntries<Reducer>(getReducers(slices));\n const getReducer = () => Object.keys(reducerMap).length ? combineReducers(reducerMap) : noopReducer;\n let reducer = getReducer();\n function combinedReducer(state: Record<string, unknown>, action: UnknownAction) {\n return reducer(state, action);\n }\n combinedReducer.withLazyLoadedSlices = () => combinedReducer;\n const inject = (slice: AnySliceLike, config: InjectConfig = {}): typeof combinedReducer => {\n const {\n reducerPath,\n reducer: reducerToInject\n } = slice;\n const currentReducer = reducerMap[reducerPath];\n if (!config.overrideExisting && currentReducer && currentReducer !== reducerToInject) {\n if (typeof process !== 'undefined' && process.env.NODE_ENV === 'development') {\n console.error(`called \\`inject\\` to override already-existing reducer ${reducerPath} without specifying \\`overrideExisting: true\\``);\n }\n return combinedReducer;\n }\n reducerMap[reducerPath] = reducerToInject;\n reducer = getReducer();\n return combinedReducer;\n };\n const selector = Object.assign(function makeSelector<State extends object, RootState, Args extends any[]>(selectorFn: (state: State, ...args: Args) => any, selectState?: (rootState: RootState, ...args: Args) => State) {\n return function selector(state: State, ...args: Args) {\n return selectorFn(createStateProxy(selectState ? selectState((state as any), ...args) : state, reducerMap), ...args);\n };\n }, {\n original\n });\n return (Object.assign(combinedReducer, {\n inject,\n selector\n }) as any);\n}","/**\n * Adapted from React: https://github.com/facebook/react/blob/master/packages/shared/formatProdErrorMessage.js\n *\n * Do not require this module directly! Use normal throw error calls. These messages will be replaced with error codes\n * during build.\n * @param {number} code\n */\nexport function formatProdErrorMessage(code: number) {\n return `Minified Redux Toolkit error #${code}; visit https://redux-toolkit.js.org/Errors?code=${code} for the full message or ` + 'use the non-minified dev environment for full errors. ';\n}","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","import { FieldElement } from '../types';\n\nexport default (element: FieldElement): element is HTMLInputElement =>\n element.type === 'checkbox';\n","export default (value: unknown): value is Date => value instanceof Date;\n","export default (value: unknown): value is null | undefined => value == null;\n","import isDateObject from './isDateObject';\nimport isNullOrUndefined from './isNullOrUndefined';\n\nexport const isObjectType = (value: unknown): value is object =>\n typeof value === 'object';\n\nexport default <T extends object>(value: unknown): value is T =>\n !isNullOrUndefined(value) &&\n !Array.isArray(value) &&\n isObjectType(value) &&\n !isDateObject(value);\n","import isCheckBoxInput from '../utils/isCheckBoxInput';\nimport isObject from '../utils/isObject';\n\ntype Event = { target: any };\n\nexport default (event: unknown) =>\n isObject(event) && (event as Event).target\n ? isCheckBoxInput((event as Event).target)\n ? (event as Event).target.checked\n : (event as Event).target.value\n : event;\n","import { InternalFieldName } from '../types';\n\nimport getNodeParentName from './getNodeParentName';\n\nexport default (names: Set<InternalFieldName>, name: InternalFieldName) =>\n names.has(getNodeParentName(name));\n","export default (name: string) =>\n name.substring(0, name.search(/\\.\\d+(\\.|$)/)) || name;\n","export default typeof window !== 'undefined' &&\n typeof window.HTMLElement !== 'undefined' &&\n typeof document !== 'undefined';\n","import isObject from './isObject';\nimport isPlainObject from './isPlainObject';\nimport isWeb from './isWeb';\n\nexport default function cloneObject<T>(data: T): T {\n let copy: any;\n const isArray = Array.isArray(data);\n\n if (data instanceof Date) {\n copy = new Date(data);\n } else if (data instanceof Set) {\n copy = new Set(data);\n } else if (\n !(isWeb && (data instanceof Blob || data instanceof FileList)) &&\n (isArray || isObject(data))\n ) {\n copy = isArray ? [] : {};\n\n if (!isArray && !isPlainObject(data)) {\n copy = data;\n } else {\n for (const key in data) {\n if (data.hasOwnProperty(key)) {\n copy[key] = cloneObject(data[key]);\n }\n }\n }\n } else {\n return data;\n }\n\n return copy;\n}\n","/**\n * @param obj The object to inspect.\n * @returns True if the argument appears to be a plain object.\n */\nexport default function isPlainObject(obj: any): obj is object {\n if (typeof obj !== 'object' || obj === null) return false;\n let proto = obj;\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n return Object.getPrototypeOf(obj) === proto || Object.getPrototypeOf(obj) === null;\n}","export default <TValue>(value: TValue[]) =>\n Array.isArray(value) ? value.filter(Boolean) : [];\n","export default (val: unknown): val is undefined => val === undefined;\n","import compact from './compact';\nimport isNullOrUndefined from './isNullOrUndefined';\nimport isObject from './isObject';\nimport isUndefined from './isUndefined';\n\nexport default <T>(object: T, path?: string, defaultValue?: unknown): any => {\n if (!path || !isObject(object)) {\n return defaultValue;\n }\n\n const result = compact(path.split(/[,[\\].]+?/)).reduce(\n (result, key) =>\n isNullOrUndefined(result) ? result : result[key as keyof {}],\n object,\n );\n\n return isUndefined(result) || result === object\n ? isUndefined(object[path as keyof T])\n ? defaultValue\n : object[path as keyof T]\n : result;\n};\n","export default (value: unknown): value is boolean => typeof value === 'boolean';\n","export default (value: string) => /^\\w*$/.test(value);\n","import compact from './compact';\n\nexport default (input: string): string[] =>\n compact(input.replace(/[\"|']|\\]/g, '').split(/\\.|\\[/));\n","import { FieldValues } from '../types';\n\nimport isKey from './isKey';\nimport isObject from './isObject';\nimport stringToPath from './stringToPath';\n\nexport default (object: FieldValues, path: string, value?: unknown) => {\n let index = -1;\n const tempPath = isKey(path) ? [path] : stringToPath(path);\n const length = tempPath.length;\n const lastIndex = length - 1;\n\n while (++index < length) {\n const key = tempPath[index];\n let newValue = value;\n\n if (index !== lastIndex) {\n const objValue = object[key];\n newValue =\n isObject(objValue) || Array.isArray(objValue)\n ? objValue\n : !isNaN(+tempPath[index + 1])\n ? []\n : {};\n }\n\n if (key === '__proto__') {\n return;\n }\n\n object[key] = newValue;\n object = object[key];\n }\n return object;\n};\n","export const EVENTS = {\n BLUR: 'blur',\n FOCUS_OUT: 'focusout',\n CHANGE: 'change',\n} as const;\n\nexport const VALIDATION_MODE = {\n onBlur: 'onBlur',\n onChange: 'onChange',\n onSubmit: 'onSubmit',\n onTouched: 'onTouched',\n all: 'all',\n} as const;\n\nexport const INPUT_VALIDATION_RULES = {\n max: 'max',\n min: 'min',\n maxLength: 'maxLength',\n minLength: 'minLength',\n pattern: 'pattern',\n required: 'required',\n validate: 'validate',\n} as const;\n","import React from 'react';\n\nimport { FieldValues, FormProviderProps, UseFormReturn } from './types';\n\nconst HookFormContext = React.createContext<UseFormReturn | null>(null);\n\n/**\n * This custom hook allows you to access the form context. useFormContext is intended to be used in deeply nested structures, where it would become inconvenient to pass the context as a prop. To be used with {@link FormProvider}.\n *\n * @remarks\n * [API](https://react-hook-form.com/docs/useformcontext) • [Demo](https://codesandbox.io/s/react-hook-form-v7-form-context-ytudi)\n *\n * @returns return all useForm methods\n *\n * @example\n * ```tsx\n * function App() {\n * const methods = useForm();\n * const onSubmit = data => console.log(data);\n *\n * return (\n * <FormProvider {...methods} >\n * <form onSubmit={methods.handleSubmit(onSubmit)}>\n * <NestedInput />\n * <input type=\"submit\" />\n * </form>\n * </FormProvider>\n * );\n * }\n *\n * function NestedInput() {\n * const { register } = useFormContext(); // retrieve all hook methods\n * return <input {...register(\"test\")} />;\n * }\n * ```\n */\nexport const useFormContext = <\n TFieldValues extends FieldValues,\n TContext = any,\n TransformedValues extends FieldValues | undefined = undefined,\n>(): UseFormReturn<TFieldValues, TContext, TransformedValues> =>\n React.useContext(HookFormContext) as UseFormReturn<\n TFieldValues,\n TContext,\n TransformedValues\n >;\n\n/**\n * A provider component that propagates the `useForm` methods to all children components via [React Context](https://reactjs.org/docs/context.html) API. To be used with {@link useFormContext}.\n *\n * @remarks\n * [API](https://react-hook-form.com/docs/useformcontext) • [Demo](https://codesandbox.io/s/react-hook-form-v7-form-context-ytudi)\n *\n * @param props - all useForm methods\n *\n * @example\n * ```tsx\n * function App() {\n * const methods = useForm();\n * const onSubmit = data => console.log(data);\n *\n * return (\n * <FormProvider {...methods} >\n * <form onSubmit={methods.handleSubmit(onSubmit)}>\n * <NestedInput />\n * <input type=\"submit\" />\n * </form>\n * </FormProvider>\n * );\n * }\n *\n * function NestedInput() {\n * const { register } = useFormContext(); // retrieve all hook methods\n * return <input {...register(\"test\")} />;\n * }\n * ```\n */\nexport const FormProvider = <\n TFieldValues extends FieldValues,\n TContext = any,\n TTransformedValues extends FieldValues | undefined = undefined,\n>(\n props: FormProviderProps<TFieldValues, TContext, TTransformedValues>,\n) => {\n const { children, ...data } = props;\n return (\n <HookFormContext.Provider value={data as unknown as UseFormReturn}>\n {children}\n </HookFormContext.Provider>\n );\n};\n","import { VALIDATION_MODE } from '../constants';\nimport { Control, FieldValues, FormState, ReadFormState } from '../types';\n\nexport default <TFieldValues extends FieldValues, TContext = any>(\n formState: FormState<TFieldValues>,\n control: Control<TFieldValues, TContext>,\n localProxyFormState?: ReadFormState,\n isRoot = true,\n) => {\n const result = {\n defaultValues: control._defaultValues,\n } as typeof formState;\n\n for (const key in formState) {\n Object.defineProperty(result, key, {\n get: () => {\n const _key = key as keyof FormState<TFieldValues> & keyof ReadFormState;\n\n if (control._proxyFormState[_key] !== VALIDATION_MODE.all) {\n control._proxyFormState[_key] = !isRoot || VALIDATION_MODE.all;\n }\n\n localProxyFormState && (localProxyFormState[_key] = true);\n return formState[_key];\n },\n });\n }\n\n return result;\n};\n","import { EmptyObject } from '../types';\n\nimport isObject from './isObject';\n\nexport default (value: unknown): value is EmptyObject =>\n isObject(value) && !Object.keys(value).length;\n","import { VALIDATION_MODE } from '../constants';\nimport {\n Control,\n FieldValues,\n FormState,\n InternalFieldName,\n ReadFormState,\n} from '../types';\nimport isEmptyObject from '../utils/isEmptyObject';\n\nexport default <T extends FieldValues, K extends ReadFormState>(\n formStateData: Partial<FormState<T>> & { name?: InternalFieldName },\n _proxyFormState: K,\n updateFormState: Control<T>['_updateFormState'],\n isRoot?: boolean,\n) => {\n updateFormState(formStateData);\n const { name, ...formState } = formStateData;\n\n return (\n isEmptyObject(formState) ||\n Object.keys(formState).length >= Object.keys(_proxyFormState).length ||\n Object.keys(formState).find(\n (key) =>\n _proxyFormState[key as keyof ReadFormState] ===\n (!isRoot || VALIDATION_MODE.all),\n )\n );\n};\n","export default <T>(value: T) => (Array.isArray(value) ? value : [value]);\n","import convertToArrayPayload from '../utils/convertToArrayPayload';\n\nexport default <T extends string | string[] | undefined>(\n name?: T,\n signalName?: string,\n exact?: boolean,\n) =>\n !name ||\n !signalName ||\n name === signalName ||\n convertToArrayPayload(name).some(\n (currentName) =>\n currentName &&\n (exact\n ? currentName === signalName\n : currentName.startsWith(signalName) ||\n signalName.startsWith(currentName)),\n );\n","import React from 'react';\n\nimport { Subject } from './utils/createSubject';\n\ntype Props<T> = {\n disabled?: boolean;\n subject: Subject<T>;\n next: (value: T) => void;\n};\n\nexport function useSubscribe<T>(props: Props<T>) {\n const _props = React.useRef(props);\n _props.current = props;\n\n React.useEffect(() => {\n const subscription =\n !props.disabled &&\n _props.current.subject &&\n _props.current.subject.subscribe({\n next: _props.current.next,\n });\n\n return () => {\n subscription && subscription.unsubscribe();\n };\n }, [props.disabled]);\n}\n","export default (value: unknown): value is string => typeof value === 'string';\n","import { DeepPartial, FieldValues, Names } from '../types';\nimport get from '../utils/get';\nimport isString from '../utils/isString';\n\nexport default <T>(\n names: string | string[] | undefined,\n _names: Names,\n formValues?: FieldValues,\n isGlobal?: boolean,\n defaultValue?: DeepPartial<T> | unknown,\n) => {\n if (isString(names)) {\n isGlobal && _names.watch.add(names);\n return get(formValues, names, defaultValue);\n }\n\n if (Array.isArray(names)) {\n return names.map(\n (fieldName) => (\n isGlobal && _names.watch.add(fieldName), get(formValues, fieldName)\n ),\n );\n }\n\n isGlobal && (_names.watchAll = true);\n\n return formValues;\n};\n","import React from 'react';\n\nimport generateWatchOutput from './logic/generateWatchOutput';\nimport shouldSubscribeByName from './logic/shouldSubscribeByName';\nimport cloneObject from './utils/cloneObject';\nimport {\n Control,\n DeepPartialSkipArrayKey,\n FieldPath,\n FieldPathValue,\n FieldPathValues,\n FieldValues,\n InternalFieldName,\n UseWatchProps,\n} from './types';\nimport { useFormContext } from './useFormContext';\nimport { useSubscribe } from './useSubscribe';\n\n/**\n * Subscribe to the entire form values change and re-render at the hook level.\n *\n * @remarks\n *\n * [API](https://react-hook-form.com/docs/usewatch) • [Demo](https://codesandbox.io/s/react-hook-form-v7-ts-usewatch-h9i5e)\n *\n * @param props - defaultValue, disable subscription and match exact name.\n *\n * @example\n * ```tsx\n * const { control } = useForm();\n * const values = useWatch({\n * control,\n * defaultValue: {\n * name: \"data\"\n * },\n * exact: false,\n * })\n * ```\n */\nexport function useWatch<\n TFieldValues extends FieldValues = FieldValues,\n>(props: {\n defaultValue?: DeepPartialSkipArrayKey<TFieldValues>;\n control?: Control<TFieldValues>;\n disabled?: boolean;\n exact?: boolean;\n}): DeepPartialSkipArrayKey<TFieldValues>;\n/**\n * Custom hook to subscribe to field change and isolate re-rendering at the component level.\n *\n * @remarks\n *\n * [API](https://react-hook-form.com/docs/usewatch) • [Demo](https://codesandbox.io/s/react-hook-form-v7-ts-usewatch-h9i5e)\n *\n * @param props - defaultValue, disable subscription and match exact name.\n *\n * @example\n * ```tsx\n * const { control } = useForm();\n * const values = useWatch({\n * control,\n * name: \"fieldA\",\n * defaultValue: \"default value\",\n * exact: false,\n * })\n * ```\n */\nexport function useWatch<\n TFieldValues extends FieldValues = FieldValues,\n TFieldName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n>(props: {\n name: TFieldName;\n defaultValue?: FieldPathValue<TFieldValues, TFieldName>;\n control?: Control<TFieldValues>;\n disabled?: boolean;\n exact?: boolean;\n}): FieldPathValue<TFieldValues, TFieldName>;\n/**\n * Custom hook to subscribe to field change and isolate re-rendering at the component level.\n *\n * @remarks\n *\n * [API](https://react-hook-form.com/docs/usewatch) • [Demo](https://codesandbox.io/s/react-hook-form-v7-ts-usewatch-h9i5e)\n *\n * @param props - defaultValue, disable subscription and match exact name.\n *\n * @example\n * ```tsx\n * const { control } = useForm();\n * const values = useWatch({\n * control,\n * name: [\"fieldA\", \"fieldB\"],\n * defaultValue: {\n * fieldA: \"data\",\n * fieldB: \"data\"\n * },\n * exact: false,\n * })\n * ```\n */\nexport function useWatch<\n TFieldValues extends FieldValues = FieldValues,\n TFieldNames extends readonly FieldPath<TFieldValues>[] = readonly FieldPath<TFieldValues>[],\n>(props: {\n name: readonly [...TFieldNames];\n defaultValue?: DeepPartialSkipArrayKey<TFieldValues>;\n control?: Control<TFieldValues>;\n disabled?: boolean;\n exact?: boolean;\n}): FieldPathValues<TFieldValues, TFieldNames>;\n/**\n * Custom hook to subscribe to field change and isolate re-rendering at the component level.\n *\n * @remarks\n *\n * [API](https://react-hook-form.com/docs/usewatch) • [Demo](https://codesandbox.io/s/react-hook-form-v7-ts-usewatch-h9i5e)\n *\n * @example\n * ```tsx\n * // can skip passing down the control into useWatch if the form is wrapped with the FormProvider\n * const values = useWatch()\n * ```\n */\nexport function useWatch<\n TFieldValues extends FieldValues = FieldValues,\n>(): DeepPartialSkipArrayKey<TFieldValues>;\n/**\n * Custom hook to subscribe to field change and isolate re-rendering at the component level.\n *\n * @remarks\n *\n * [API](https://react-hook-form.com/docs/usewatch) • [Demo](https://codesandbox.io/s/react-hook-form-v7-ts-usewatch-h9i5e)\n *\n * @example\n * ```tsx\n * const { control } = useForm();\n * const values = useWatch({\n * name: \"fieldName\"\n * control,\n * })\n * ```\n */\nexport function useWatch<TFieldValues extends FieldValues>(\n props?: UseWatchProps<TFieldValues>,\n) {\n const methods = useFormContext();\n const {\n control = methods.control,\n name,\n defaultValue,\n disabled,\n exact,\n } = props || {};\n const _name = React.useRef(name);\n\n _name.current = name;\n\n useSubscribe({\n disabled,\n subject: control._subjects.values,\n next: (formState: { name?: InternalFieldName; values?: FieldValues }) => {\n if (\n shouldSubscribeByName(\n _name.current as InternalFieldName,\n formState.name,\n exact,\n )\n ) {\n updateValue(\n cloneObject(\n generateWatchOutput(\n _name.current as InternalFieldName | InternalFieldName[],\n control._names,\n formState.values || control._formValues,\n false,\n defaultValue,\n ),\n ),\n );\n }\n },\n });\n\n const [value, updateValue] = React.useState(\n control._getWatch(\n name as InternalFieldName,\n defaultValue as DeepPartialSkipArrayKey<TFieldValues>,\n ),\n );\n\n React.useEffect(() => control._removeUnmounted());\n\n return value;\n}\n","import React from 'react';\n\nimport getEventValue from './logic/getEventValue';\nimport isNameInFieldArray from './logic/isNameInFieldArray';\nimport cloneObject from './utils/cloneObject';\nimport get from './utils/get';\nimport isBoolean from './utils/isBoolean';\nimport isUndefined from './utils/isUndefined';\nimport set from './utils/set';\nimport { EVENTS } from './constants';\nimport {\n ControllerFieldState,\n Field,\n FieldPath,\n FieldPathValue,\n FieldValues,\n InternalFieldName,\n UseControllerProps,\n UseControllerReturn,\n} from './types';\nimport { useFormContext } from './useFormContext';\nimport { useFormState } from './useFormState';\nimport { useWatch } from './useWatch';\n\n/**\n * Custom hook to work with controlled component, this function provide you with both form and field level state. Re-render is isolated at the hook level.\n *\n * @remarks\n * [API](https://react-hook-form.com/docs/usecontroller) • [Demo](https://codesandbox.io/s/usecontroller-0o8px)\n *\n * @param props - the path name to the form field value, and validation rules.\n *\n * @returns field properties, field and form state. {@link UseControllerReturn}\n *\n * @example\n * ```tsx\n * function Input(props) {\n * const { field, fieldState, formState } = useController(props);\n * return (\n * <div>\n * <input {...field} placeholder={props.name} />\n * <p>{fieldState.isTouched && \"Touched\"}</p>\n * <p>{formState.isSubmitted ? \"submitted\" : \"\"}</p>\n * </div>\n * );\n * }\n * ```\n */\nexport function useController<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n>(\n props: UseControllerProps<TFieldValues, TName>,\n): UseControllerReturn<TFieldValues, TName> {\n const methods = useFormContext<TFieldValues>();\n const { name, disabled, control = methods.control, shouldUnregister } = props;\n const isArrayField = isNameInFieldArray(control._names.array, name);\n const value = useWatch({\n control,\n name,\n defaultValue: get(\n control._formValues,\n name,\n get(control._defaultValues, name, props.defaultValue),\n ),\n exact: true,\n }) as FieldPathValue<TFieldValues, TName>;\n const formState = useFormState({\n control,\n name,\n });\n\n const _registerProps = React.useRef(\n control.register(name, {\n ...props.rules,\n value,\n ...(isBoolean(props.disabled) ? { disabled: props.disabled } : {}),\n }),\n );\n\n React.useEffect(() => {\n const _shouldUnregisterField =\n control._options.shouldUnregister || shouldUnregister;\n\n const updateMounted = (name: InternalFieldName, value: boolean) => {\n const field: Field = get(control._fields, name);\n\n if (field && field._f) {\n field._f.mount = value;\n }\n };\n\n updateMounted(name, true);\n\n if (_shouldUnregisterField) {\n const value = cloneObject(get(control._options.defaultValues, name));\n set(control._defaultValues, name, value);\n if (isUndefined(get(control._formValues, name))) {\n set(control._formValues, name, value);\n }\n }\n\n return () => {\n (\n isArrayField\n ? _shouldUnregisterField && !control._state.action\n : _shouldUnregisterField\n )\n ? control.unregister(name)\n : updateMounted(name, false);\n };\n }, [name, control, isArrayField, shouldUnregister]);\n\n React.useEffect(() => {\n if (get(control._fields, name)) {\n control._updateDisabledField({\n disabled,\n fields: control._fields,\n name,\n value: get(control._fields, name)._f.value,\n });\n }\n }, [disabled, name, control]);\n\n return {\n field: {\n name,\n value,\n ...(isBoolean(disabled) || formState.disabled\n ? { disabled: formState.disabled || disabled }\n : {}),\n onChange: React.useCallback(\n (event) =>\n _registerProps.current.onChange({\n target: {\n value: getEventValue(event),\n name: name as InternalFieldName,\n },\n type: EVENTS.CHANGE,\n }),\n [name],\n ),\n onBlur: React.useCallback(\n () =>\n _registerProps.current.onBlur({\n target: {\n value: get(control._formValues, name),\n name: name as InternalFieldName,\n },\n type: EVENTS.BLUR,\n }),\n [name, control],\n ),\n ref: (elm) => {\n const field = get(control._fields, name);\n\n if (field && elm) {\n field._f.ref = {\n focus: () => elm.focus(),\n select: () => elm.select(),\n setCustomValidity: (message: string) =>\n elm.setCustomValidity(message),\n reportValidity: () => elm.reportValidity(),\n };\n }\n },\n },\n formState,\n fieldState: Object.defineProperties(\n {},\n {\n invalid: {\n enumerable: true,\n get: () => !!get(formState.errors, name),\n },\n isDirty: {\n enumerable: true,\n get: () => !!get(formState.dirtyFields, name),\n },\n isTouched: {\n enumerable: true,\n get: () => !!get(formState.touchedFields, name),\n },\n isValidating: {\n enumerable: true,\n get: () => !!get(formState.validatingFields, name),\n },\n error: {\n enumerable: true,\n get: () => get(formState.errors, name),\n },\n },\n ) as ControllerFieldState,\n };\n}\n","import React from 'react';\n\nimport getProxyFormState from './logic/getProxyFormState';\nimport shouldRenderFormState from './logic/shouldRenderFormState';\nimport shouldSubscribeByName from './logic/shouldSubscribeByName';\nimport {\n FieldValues,\n FormState,\n InternalFieldName,\n UseFormStateProps,\n UseFormStateReturn,\n} from './types';\nimport { useFormContext } from './useFormContext';\nimport { useSubscribe } from './useSubscribe';\n\n/**\n * This custom hook allows you to subscribe to each form state, and isolate the re-render at the custom hook level. It has its scope in terms of form state subscription, so it would not affect other useFormState and useForm. Using this hook can reduce the re-render impact on large and complex form application.\n *\n * @remarks\n * [API](https://react-hook-form.com/docs/useformstate) • [Demo](https://codesandbox.io/s/useformstate-75xly)\n *\n * @param props - include options on specify fields to subscribe. {@link UseFormStateReturn}\n *\n * @example\n * ```tsx\n * function App() {\n * const { register, handleSubmit, control } = useForm({\n * defaultValues: {\n * firstName: \"firstName\"\n * }});\n * const { dirtyFields } = useFormState({\n * control\n * });\n * const onSubmit = (data) => console.log(data);\n *\n * return (\n * <form onSubmit={handleSubmit(onSubmit)}>\n * <input {...register(\"firstName\")} placeholder=\"First Name\" />\n * {dirtyFields.firstName && <p>Field is dirty.</p>}\n * <input type=\"submit\" />\n * </form>\n * );\n * }\n * ```\n */\nfunction useFormState<TFieldValues extends FieldValues = FieldValues>(\n props?: UseFormStateProps<TFieldValues>,\n): UseFormStateReturn<TFieldValues> {\n const methods = useFormContext<TFieldValues>();\n const { control = methods.control, disabled, name, exact } = props || {};\n const [formState, updateFormState] = React.useState(control._formState);\n const _mounted = React.useRef(true);\n const _localProxyFormState = React.useRef({\n isDirty: false,\n isLoading: false,\n dirtyFields: false,\n touchedFields: false,\n validatingFields: false,\n isValidating: false,\n isValid: false,\n errors: false,\n });\n const _name = React.useRef(name);\n\n _name.current = name;\n\n useSubscribe({\n disabled,\n next: (\n value: Partial<FormState<TFieldValues>> & { name?: InternalFieldName },\n ) =>\n _mounted.current &&\n shouldSubscribeByName(\n _name.current as InternalFieldName,\n value.name,\n exact,\n ) &&\n shouldRenderFormState(\n value,\n _localProxyFormState.current,\n control._updateFormState,\n ) &&\n updateFormState({\n ...control._formState,\n ...value,\n }),\n subject: control._subjects.state,\n });\n\n React.useEffect(() => {\n _mounted.current = true;\n _localProxyFormState.current.isValid && control._updateValid(true);\n\n return () => {\n _mounted.current = false;\n };\n }, [control]);\n\n return getProxyFormState(\n formState,\n control,\n _localProxyFormState.current,\n false,\n );\n}\n\nexport { useFormState };\n","import { ControllerProps, FieldPath, FieldValues } from './types';\nimport { useController } from './useController';\n\n/**\n * Component based on `useController` hook to work with controlled component.\n *\n * @remarks\n * [API](https://react-hook-form.com/docs/usecontroller/controller) • [Demo](https://codesandbox.io/s/react-hook-form-v6-controller-ts-jwyzw) • [Video](https://www.youtube.com/watch?v=N2UNk_UCVyA)\n *\n * @param props - the path name to the form field value, and validation rules.\n *\n * @returns provide field handler functions, field and form state.\n *\n * @example\n * ```tsx\n * function App() {\n * const { control } = useForm<FormValues>({\n * defaultValues: {\n * test: \"\"\n * }\n * });\n *\n * return (\n * <form>\n * <Controller\n * control={control}\n * name=\"test\"\n * render={({ field: { onChange, onBlur, value, ref }, formState, fieldState }) => (\n * <>\n * <input\n * onChange={onChange} // send value to hook form\n * onBlur={onBlur} // notify when input is touched\n * value={value} // return updated value\n * ref={ref} // set ref for focus management\n * />\n * <p>{formState.isSubmitted ? \"submitted\" : \"\"}</p>\n * <p>{fieldState.isTouched ? \"touched\" : \"\"}</p>\n * </>\n * )}\n * />\n * </form>\n * );\n * }\n * ```\n */\nconst Controller = <\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n>(\n props: ControllerProps<TFieldValues, TName>,\n) => props.render(useController<TFieldValues, TName>(props));\n\nexport { Controller };\n","import {\n InternalFieldErrors,\n InternalFieldName,\n ValidateResult,\n} from '../types';\n\nexport default (\n name: InternalFieldName,\n validateAllFieldCriteria: boolean,\n errors: InternalFieldErrors,\n type: string,\n message: ValidateResult,\n) =>\n validateAllFieldCriteria\n ? {\n ...errors[name],\n types: {\n ...(errors[name] && errors[name]!.types ? errors[name]!.types : {}),\n [type]: message || true,\n },\n }\n : {};\n","export default () => {\n const d =\n typeof performance === 'undefined' ? Date.now() : performance.now() * 1000;\n\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\n const r = (Math.random() * 16 + d) % 16 | 0;\n\n return (c == 'x' ? r : (r & 0x3) | 0x8).toString(16);\n });\n};\n","import { FieldArrayMethodProps, InternalFieldName } from '../types';\nimport isUndefined from '../utils/isUndefined';\n\nexport default (\n name: InternalFieldName,\n index: number,\n options: FieldArrayMethodProps = {},\n): string =>\n options.shouldFocus || isUndefined(options.shouldFocus)\n ? options.focusName ||\n `${name}.${isUndefined(options.focusIndex) ? index : options.focusIndex}.`\n : '';\n","import { VALIDATION_MODE } from '../constants';\nimport { Mode, ValidationModeFlags } from '../types';\n\nexport default (mode?: Mode): ValidationModeFlags => ({\n isOnSubmit: !mode || mode === VALIDATION_MODE.onSubmit,\n isOnBlur: mode === VALIDATION_MODE.onBlur,\n isOnChange: mode === VALIDATION_MODE.onChange,\n isOnAll: mode === VALIDATION_MODE.all,\n isOnTouch: mode === VALIDATION_MODE.onTouched,\n});\n","import { InternalFieldName, Names } from '../types';\n\nexport default (\n name: InternalFieldName,\n _names: Names,\n isBlurEvent?: boolean,\n) =>\n !isBlurEvent &&\n (_names.watchAll ||\n _names.watch.has(name) ||\n [..._names.watch].some(\n (watchName) =>\n name.startsWith(watchName) &&\n /^\\.\\w+/.test(name.slice(watchName.length)),\n ));\n","import { FieldRefs, InternalFieldName, Ref } from '../types';\nimport { get } from '../utils';\nimport isObject from '../utils/isObject';\n\nconst iterateFieldsByAction = (\n fields: FieldRefs,\n action: (ref: Ref, name: string) => 1 | undefined | void,\n fieldsNames?: Set<InternalFieldName> | InternalFieldName[] | 0,\n abortEarly?: boolean,\n) => {\n for (const key of fieldsNames || Object.keys(fields)) {\n const field = get(fields, key);\n\n if (field) {\n const { _f, ...currentField } = field;\n\n if (_f) {\n if (_f.refs && _f.refs[0] && action(_f.refs[0], key) && !abortEarly) {\n break;\n } else if (_f.ref && action(_f.ref, _f.name) && !abortEarly) {\n break;\n } else {\n iterateFieldsByAction(currentField, action);\n }\n } else if (isObject(currentField)) {\n iterateFieldsByAction(currentField, action);\n }\n }\n }\n};\n\nexport default iterateFieldsByAction;\n","import {\n FieldError,\n FieldErrors,\n FieldValues,\n InternalFieldName,\n} from '../types';\nimport compact from '../utils/compact';\nimport get from '../utils/get';\nimport set from '../utils/set';\n\nexport default <T extends FieldValues = FieldValues>(\n errors: FieldErrors<T>,\n error: Partial<Record<string, FieldError>>,\n name: InternalFieldName,\n): FieldErrors<T> => {\n const fieldArrayErrors = compact(get(errors, name));\n set(fieldArrayErrors, 'root', error[name]);\n set(errors, name, fieldArrayErrors);\n return errors;\n};\n","import { FieldElement } from '../types';\n\nexport default (element: FieldElement): element is HTMLInputElement =>\n element.type === 'file';\n","export default (value: unknown): value is Function =>\n typeof value === 'function';\n","import isWeb from './isWeb';\n\nexport default (value: unknown): value is HTMLElement => {\n if (!isWeb) {\n return false;\n }\n\n const owner = value ? ((value as HTMLElement).ownerDocument as Document) : 0;\n return (\n value instanceof\n (owner && owner.defaultView ? owner.defaultView.HTMLElement : HTMLElement)\n );\n};\n","import { Message } from '../types';\nimport isString from '../utils/isString';\n\nexport default (value: unknown): value is Message => isString(value);\n","import { FieldElement } from '../types';\n\nexport default (element: FieldElement): element is HTMLInputElement =>\n element.type === 'radio';\n","export default (value: unknown): value is RegExp => value instanceof RegExp;\n","import isUndefined from '../utils/isUndefined';\n\ntype CheckboxFieldResult = {\n isValid: boolean;\n value: string | string[] | boolean | undefined;\n};\n\nconst defaultResult: CheckboxFieldResult = {\n value: false,\n isValid: false,\n};\n\nconst validResult = { value: true, isValid: true };\n\nexport default (options?: HTMLInputElement[]): CheckboxFieldResult => {\n if (Array.isArray(options)) {\n if (options.length > 1) {\n const values = options\n .filter((option) => option && option.checked && !option.disabled)\n .map((option) => option.value);\n return { value: values, isValid: !!values.length };\n }\n\n return options[0].checked && !options[0].disabled\n ? // @ts-expect-error expected to work in the browser\n options[0].attributes && !isUndefined(options[0].attributes.value)\n ? isUndefined(options[0].value) || options[0].value === ''\n ? validResult\n : { value: options[0].value, isValid: true }\n : validResult\n : defaultResult;\n }\n\n return defaultResult;\n};\n","type RadioFieldResult = {\n isValid: boolean;\n value: number | string | null;\n};\n\nconst defaultReturn: RadioFieldResult = {\n isValid: false,\n value: null,\n};\n\nexport default (options?: HTMLInputElement[]): RadioFieldResult =>\n Array.isArray(options)\n ? options.reduce(\n (previous, option): RadioFieldResult =>\n option && option.checked && !option.disabled\n ? {\n isValid: true,\n value: option.value,\n }\n : previous,\n defaultReturn,\n )\n : defaultReturn;\n","import { FieldError, Ref, ValidateResult } from '../types';\nimport isBoolean from '../utils/isBoolean';\nimport isMessage from '../utils/isMessage';\n\nexport default function getValidateError(\n result: ValidateResult,\n ref: Ref,\n type = 'validate',\n): FieldError | void {\n if (\n isMessage(result) ||\n (Array.isArray(result) && result.every(isMessage)) ||\n (isBoolean(result) && !result)\n ) {\n return {\n type,\n message: isMessage(result) ? result : '',\n ref,\n };\n }\n}\n","import { ValidationRule } from '../types';\nimport isObject from '../utils/isObject';\nimport isRegex from '../utils/isRegex';\n\nexport default (validationData?: ValidationRule) =>\n isObject(validationData) && !isRegex(validationData)\n ? validationData\n : {\n value: validationData,\n message: '',\n };\n","import { INPUT_VALIDATION_RULES } from '../constants';\nimport {\n Field,\n FieldError,\n FieldValues,\n InternalFieldErrors,\n MaxType,\n Message,\n MinType,\n NativeFieldValue,\n} from '../types';\nimport get from '../utils/get';\nimport isBoolean from '../utils/isBoolean';\nimport isCheckBoxInput from '../utils/isCheckBoxInput';\nimport isEmptyObject from '../utils/isEmptyObject';\nimport isFileInput from '../utils/isFileInput';\nimport isFunction from '../utils/isFunction';\nimport isHTMLElement from '../utils/isHTMLElement';\nimport isMessage from '../utils/isMessage';\nimport isNullOrUndefined from '../utils/isNullOrUndefined';\nimport isObject from '../utils/isObject';\nimport isRadioInput from '../utils/isRadioInput';\nimport isRegex from '../utils/isRegex';\nimport isString from '../utils/isString';\nimport isUndefined from '../utils/isUndefined';\n\nimport appendErrors from './appendErrors';\nimport getCheckboxValue from './getCheckboxValue';\nimport getRadioValue from './getRadioValue';\nimport getValidateError from './getValidateError';\nimport getValueAndMessage from './getValueAndMessage';\n\nexport default async <T extends FieldValues>(\n field: Field,\n formValues: T,\n validateAllFieldCriteria: boolean,\n shouldUseNativeValidation?: boolean,\n isFieldArray?: boolean,\n): Promise<InternalFieldErrors> => {\n const {\n ref,\n refs,\n required,\n maxLength,\n minLength,\n min,\n max,\n pattern,\n validate,\n name,\n valueAsNumber,\n mount,\n disabled,\n } = field._f;\n const inputValue: NativeFieldValue = get(formValues, name);\n if (!mount || disabled) {\n return {};\n }\n const inputRef: HTMLInputElement = refs ? refs[0] : (ref as HTMLInputElement);\n const setCustomValidity = (message?: string | boolean) => {\n if (shouldUseNativeValidation && inputRef.reportValidity) {\n inputRef.setCustomValidity(isBoolean(message) ? '' : message || '');\n inputRef.reportValidity();\n }\n };\n const error: InternalFieldErrors = {};\n const isRadio = isRadioInput(ref);\n const isCheckBox = isCheckBoxInput(ref);\n const isRadioOrCheckbox = isRadio || isCheckBox;\n const isEmpty =\n ((valueAsNumber || isFileInput(ref)) &&\n isUndefined(ref.value) &&\n isUndefined(inputValue)) ||\n (isHTMLElement(ref) && ref.value === '') ||\n inputValue === '' ||\n (Array.isArray(inputValue) && !inputValue.length);\n const appendErrorsCurry = appendErrors.bind(\n null,\n name,\n validateAllFieldCriteria,\n error,\n );\n const getMinMaxMessage = (\n exceedMax: boolean,\n maxLengthMessage: Message,\n minLengthMessage: Message,\n maxType: MaxType = INPUT_VALIDATION_RULES.maxLength,\n minType: MinType = INPUT_VALIDATION_RULES.minLength,\n ) => {\n const message = exceedMax ? maxLengthMessage : minLengthMessage;\n error[name] = {\n type: exceedMax ? maxType : minType,\n message,\n ref,\n ...appendErrorsCurry(exceedMax ? maxType : minType, message),\n };\n };\n\n if (\n isFieldArray\n ? !Array.isArray(inputValue) || !inputValue.length\n : required &&\n ((!isRadioOrCheckbox && (isEmpty || isNullOrUndefined(inputValue))) ||\n (isBoolean(inputValue) && !inputValue) ||\n (isCheckBox && !getCheckboxValue(refs).isValid) ||\n (isRadio && !getRadioValue(refs).isValid))\n ) {\n const { value, message } = isMessage(required)\n ? { value: !!required, message: required }\n : getValueAndMessage(required);\n\n if (value) {\n error[name] = {\n type: INPUT_VALIDATION_RULES.required,\n message,\n ref: inputRef,\n ...appendErrorsCurry(INPUT_VALIDATION_RULES.required, message),\n };\n if (!validateAllFieldCriteria) {\n setCustomValidity(message);\n return error;\n }\n }\n }\n\n if (!isEmpty && (!isNullOrUndefined(min) || !isNullOrUndefined(max))) {\n let exceedMax;\n let exceedMin;\n const maxOutput = getValueAndMessage(max);\n const minOutput = getValueAndMessage(min);\n\n if (!isNullOrUndefined(inputValue) && !isNaN(inputValue as number)) {\n const valueNumber =\n (ref as HTMLInputElement).valueAsNumber ||\n (inputValue ? +inputValue : inputValue);\n if (!isNullOrUndefined(maxOutput.value)) {\n exceedMax = valueNumber > maxOutput.value;\n }\n if (!isNullOrUndefined(minOutput.value)) {\n exceedMin = valueNumber < minOutput.value;\n }\n } else {\n const valueDate =\n (ref as HTMLInputElement).valueAsDate || new Date(inputValue as string);\n const convertTimeToDate = (time: unknown) =>\n new Date(new Date().toDateString() + ' ' + time);\n const isTime = ref.type == 'time';\n const isWeek = ref.type == 'week';\n\n if (isString(maxOutput.value) && inputValue) {\n exceedMax = isTime\n ? convertTimeToDate(inputValue) > convertTimeToDate(maxOutput.value)\n : isWeek\n ? inputValue > maxOutput.value\n : valueDate > new Date(maxOutput.value);\n }\n\n if (isString(minOutput.value) && inputValue) {\n exceedMin = isTime\n ? convertTimeToDate(inputValue) < convertTimeToDate(minOutput.value)\n : isWeek\n ? inputValue < minOutput.value\n : valueDate < new Date(minOutput.value);\n }\n }\n\n if (exceedMax || exceedMin) {\n getMinMaxMessage(\n !!exceedMax,\n maxOutput.message,\n minOutput.message,\n INPUT_VALIDATION_RULES.max,\n INPUT_VALIDATION_RULES.min,\n );\n if (!validateAllFieldCriteria) {\n setCustomValidity(error[name]!.message);\n return error;\n }\n }\n }\n\n if (\n (maxLength || minLength) &&\n !isEmpty &&\n (isString(inputValue) || (isFieldArray && Array.isArray(inputValue)))\n ) {\n const maxLengthOutput = getValueAndMessage(maxLength);\n const minLengthOutput = getValueAndMessage(minLength);\n const exceedMax =\n !isNullOrUndefined(maxLengthOutput.value) &&\n inputValue.length > +maxLengthOutput.value;\n const exceedMin =\n !isNullOrUndefined(minLengthOutput.value) &&\n inputValue.length < +minLengthOutput.value;\n\n if (exceedMax || exceedMin) {\n getMinMaxMessage(\n exceedMax,\n maxLengthOutput.message,\n minLengthOutput.message,\n );\n if (!validateAllFieldCriteria) {\n setCustomValidity(error[name]!.message);\n return error;\n }\n }\n }\n\n if (pattern && !isEmpty && isString(inputValue)) {\n const { value: patternValue, message } = getValueAndMessage(pattern);\n\n if (isRegex(patternValue) && !inputValue.match(patternValue)) {\n error[name] = {\n type: INPUT_VALIDATION_RULES.pattern,\n message,\n ref,\n ...appendErrorsCurry(INPUT_VALIDATION_RULES.pattern, message),\n };\n if (!validateAllFieldCriteria) {\n setCustomValidity(message);\n return error;\n }\n }\n }\n\n if (validate) {\n if (isFunction(validate)) {\n const result = await validate(inputValue, formValues);\n const validateError = getValidateError(result, inputRef);\n\n if (validateError) {\n error[name] = {\n ...validateError,\n ...appendErrorsCurry(\n INPUT_VALIDATION_RULES.validate,\n validateError.message,\n ),\n };\n if (!validateAllFieldCriteria) {\n setCustomValidity(validateError.message);\n return error;\n }\n }\n } else if (isObject(validate)) {\n let validationResult = {} as FieldError;\n\n for (const key in validate) {\n if (!isEmptyObject(validationResult) && !validateAllFieldCriteria) {\n break;\n }\n\n const validateError = getValidateError(\n await validate[key](inputValue, formValues),\n inputRef,\n key,\n );\n\n if (validateError) {\n validationResult = {\n ...validateError,\n ...appendErrorsCurry(key, validateError.message),\n };\n\n setCustomValidity(validateError.message);\n\n if (validateAllFieldCriteria) {\n error[name] = validationResult;\n }\n }\n }\n\n if (!isEmptyObject(validationResult)) {\n error[name] = {\n ref: inputRef,\n ...validationResult,\n };\n if (!validateAllFieldCriteria) {\n return error;\n }\n }\n }\n }\n\n setCustomValidity(true);\n return error;\n};\n","import convertToArrayPayload from './convertToArrayPayload';\n\nexport default <T>(data: T[], value: T | T[]): T[] => [\n ...data,\n ...convertToArrayPayload(value),\n];\n","export default <T>(value: T | T[]): undefined[] | undefined =>\n Array.isArray(value) ? value.map(() => undefined) : undefined;\n","import convertToArrayPayload from './convertToArrayPayload';\n\nexport default function insert<T>(data: T[], index: number): (T | undefined)[];\nexport default function insert<T>(\n data: T[],\n index: number,\n value: T | T[],\n): T[];\nexport default function insert<T>(\n data: T[],\n index: number,\n value?: T | T[],\n): (T | undefined)[] {\n return [\n ...data.slice(0, index),\n ...convertToArrayPayload(value),\n ...data.slice(index),\n ];\n}\n","import isUndefined from './isUndefined';\n\nexport default <T>(\n data: (T | undefined)[],\n from: number,\n to: number,\n): (T | undefined)[] => {\n if (!Array.isArray(data)) {\n return [];\n }\n\n if (isUndefined(data[to])) {\n data[to] = undefined;\n }\n data.splice(to, 0, data.splice(from, 1)[0]);\n\n return data;\n};\n","import convertToArrayPayload from './convertToArrayPayload';\n\nexport default <T>(data: T[], value: T | T[]): T[] => [\n ...convertToArrayPayload(value),\n ...convertToArrayPayload(data),\n];\n","import compact from './compact';\nimport convertToArrayPayload from './convertToArrayPayload';\nimport isUndefined from './isUndefined';\n\nfunction removeAtIndexes<T>(data: T[], indexes: number[]): T[] {\n let i = 0;\n const temp = [...data];\n\n for (const index of indexes) {\n temp.splice(index - i, 1);\n i++;\n }\n\n return compact(temp).length ? temp : [];\n}\n\nexport default <T>(data: T[], index?: number | number[]): T[] =>\n isUndefined(index)\n ? []\n : removeAtIndexes(\n data,\n (convertToArrayPayload(index) as number[]).sort((a, b) => a - b),\n );\n","export default <T>(data: T[], indexA: number, indexB: number): void => {\n [data[indexA], data[indexB]] = [data[indexB], data[indexA]];\n};\n","import isEmptyObject from './isEmptyObject';\nimport isKey from './isKey';\nimport isObject from './isObject';\nimport isUndefined from './isUndefined';\nimport stringToPath from './stringToPath';\n\nfunction baseGet(object: any, updatePath: (string | number)[]) {\n const length = updatePath.slice(0, -1).length;\n let index = 0;\n\n while (index < length) {\n object = isUndefined(object) ? index++ : object[updatePath[index++]];\n }\n\n return object;\n}\n\nfunction isEmptyArray(obj: unknown[]) {\n for (const key in obj) {\n if (obj.hasOwnProperty(key) && !isUndefined(obj[key])) {\n return false;\n }\n }\n return true;\n}\n\nexport default function unset(object: any, path: string | (string | number)[]) {\n const paths = Array.isArray(path)\n ? path\n : isKey(path)\n ? [path]\n : stringToPath(path);\n\n const childObject = paths.length === 1 ? object : baseGet(object, paths);\n\n const index = paths.length - 1;\n const key = paths[index];\n\n if (childObject) {\n delete childObject[key];\n }\n\n if (\n index !== 0 &&\n ((isObject(childObject) && isEmptyObject(childObject)) ||\n (Array.isArray(childObject) && isEmptyArray(childObject)))\n ) {\n unset(object, paths.slice(0, -1));\n }\n\n return object;\n}\n","export default <T>(fieldValues: T[], index: number, value: T) => {\n fieldValues[index] = value;\n return fieldValues;\n};\n","import React from 'react';\n\nimport generateId from './logic/generateId';\nimport getFocusFieldName from './logic/getFocusFieldName';\nimport getValidationModes from './logic/getValidationModes';\nimport isWatched from './logic/isWatched';\nimport iterateFieldsByAction from './logic/iterateFieldsByAction';\nimport updateFieldArrayRootError from './logic/updateFieldArrayRootError';\nimport validateField from './logic/validateField';\nimport appendAt from './utils/append';\nimport cloneObject from './utils/cloneObject';\nimport convertToArrayPayload from './utils/convertToArrayPayload';\nimport fillEmptyArray from './utils/fillEmptyArray';\nimport get from './utils/get';\nimport insertAt from './utils/insert';\nimport isEmptyObject from './utils/isEmptyObject';\nimport moveArrayAt from './utils/move';\nimport prependAt from './utils/prepend';\nimport removeArrayAt from './utils/remove';\nimport set from './utils/set';\nimport swapArrayAt from './utils/swap';\nimport unset from './utils/unset';\nimport updateAt from './utils/update';\nimport { VALIDATION_MODE } from './constants';\nimport {\n Control,\n Field,\n FieldArray,\n FieldArrayMethodProps,\n FieldArrayPath,\n FieldArrayWithId,\n FieldErrors,\n FieldPath,\n FieldValues,\n FormState,\n InternalFieldName,\n RegisterOptions,\n UseFieldArrayProps,\n UseFieldArrayReturn,\n} from './types';\nimport { useFormContext } from './useFormContext';\nimport { useSubscribe } from './useSubscribe';\n\n/**\n * A custom hook that exposes convenient methods to perform operations with a list of dynamic inputs that need to be appended, updated, removed etc. • [Demo](https://codesandbox.io/s/react-hook-form-usefieldarray-ssugn) • [Video](https://youtu.be/4MrbfGSFY2A)\n *\n * @remarks\n * [API](https://react-hook-form.com/docs/usefieldarray) • [Demo](https://codesandbox.io/s/react-hook-form-usefieldarray-ssugn)\n *\n * @param props - useFieldArray props\n *\n * @returns methods - functions to manipulate with the Field Arrays (dynamic inputs) {@link UseFieldArrayReturn}\n *\n * @example\n * ```tsx\n * function App() {\n * const { register, control, handleSubmit, reset, trigger, setError } = useForm({\n * defaultValues: {\n * test: []\n * }\n * });\n * const { fields, append } = useFieldArray({\n * control,\n * name: \"test\"\n * });\n *\n * return (\n * <form onSubmit={handleSubmit(data => console.log(data))}>\n * {fields.map((item, index) => (\n * <input key={item.id} {...register(`test.${index}.firstName`)} />\n * ))}\n * <button type=\"button\" onClick={() => append({ firstName: \"bill\" })}>\n * append\n * </button>\n * <input type=\"submit\" />\n * </form>\n * );\n * }\n * ```\n */\nexport function useFieldArray<\n TFieldValues extends FieldValues = FieldValues,\n TFieldArrayName extends FieldArrayPath<TFieldValues> = FieldArrayPath<TFieldValues>,\n TKeyName extends string = 'id',\n>(\n props: UseFieldArrayProps<TFieldValues, TFieldArrayName, TKeyName>,\n): UseFieldArrayReturn<TFieldValues, TFieldArrayName, TKeyName> {\n const methods = useFormContext();\n const {\n control = methods.control,\n name,\n keyName = 'id',\n shouldUnregister,\n } = props;\n const [fields, setFields] = React.useState(control._getFieldArray(name));\n const ids = React.useRef<string[]>(\n control._getFieldArray(name).map(generateId),\n );\n const _fieldIds = React.useRef(fields);\n const _name = React.useRef(name);\n const _actioned = React.useRef(false);\n\n _name.current = name;\n _fieldIds.current = fields;\n control._names.array.add(name);\n\n props.rules &&\n (control as Control<TFieldValues>).register(\n name as FieldPath<TFieldValues>,\n props.rules as RegisterOptions<TFieldValues>,\n );\n\n useSubscribe({\n next: ({\n values,\n name: fieldArrayName,\n }: {\n values?: FieldValues;\n name?: InternalFieldName;\n }) => {\n if (fieldArrayName === _name.current || !fieldArrayName) {\n const fieldValues = get(values, _name.current);\n if (Array.isArray(fieldValues)) {\n setFields(fieldValues);\n ids.current = fieldValues.map(generateId);\n }\n }\n },\n subject: control._subjects.array,\n });\n\n const updateValues = React.useCallback(\n <\n T extends Partial<\n FieldArrayWithId<TFieldValues, TFieldArrayName, TKeyName>\n >[],\n >(\n updatedFieldArrayValues: T,\n ) => {\n _actioned.current = true;\n control._updateFieldArray(name, updatedFieldArrayValues);\n },\n [control, name],\n );\n\n const append = (\n value:\n | Partial<FieldArray<TFieldValues, TFieldArrayName>>\n | Partial<FieldArray<TFieldValues, TFieldArrayName>>[],\n options?: FieldArrayMethodProps,\n ) => {\n const appendValue = convertToArrayPayload(cloneObject(value));\n const updatedFieldArrayValues = appendAt(\n control._getFieldArray(name),\n appendValue,\n );\n control._names.focus = getFocusFieldName(\n name,\n updatedFieldArrayValues.length - 1,\n options,\n );\n ids.current = appendAt(ids.current, appendValue.map(generateId));\n updateValues(updatedFieldArrayValues);\n setFields(updatedFieldArrayValues);\n control._updateFieldArray(name, updatedFieldArrayValues, appendAt, {\n argA: fillEmptyArray(value),\n });\n };\n\n const prepend = (\n value:\n | Partial<FieldArray<TFieldValues, TFieldArrayName>>\n | Partial<FieldArray<TFieldValues, TFieldArrayName>>[],\n options?: FieldArrayMethodProps,\n ) => {\n const prependValue = convertToArrayPayload(cloneObject(value));\n const updatedFieldArrayValues = prependAt(\n control._getFieldArray(name),\n prependValue,\n );\n control._names.focus = getFocusFieldName(name, 0, options);\n ids.current = prependAt(ids.current, prependValue.map(generateId));\n updateValues(updatedFieldArrayValues);\n setFields(updatedFieldArrayValues);\n control._updateFieldArray(name, updatedFieldArrayValues, prependAt, {\n argA: fillEmptyArray(value),\n });\n };\n\n const remove = (index?: number | number[]) => {\n const updatedFieldArrayValues: Partial<\n FieldArrayWithId<TFieldValues, TFieldArrayName, TKeyName>\n >[] = removeArrayAt(control._getFieldArray(name), index);\n ids.current = removeArrayAt(ids.current, index);\n updateValues(updatedFieldArrayValues);\n setFields(updatedFieldArrayValues);\n control._updateFieldArray(name, updatedFieldArrayValues, removeArrayAt, {\n argA: index,\n });\n };\n\n const insert = (\n index: number,\n value:\n | Partial<FieldArray<TFieldValues, TFieldArrayName>>\n | Partial<FieldArray<TFieldValues, TFieldArrayName>>[],\n options?: FieldArrayMethodProps,\n ) => {\n const insertValue = convertToArrayPayload(cloneObject(value));\n const updatedFieldArrayValues = insertAt(\n control._getFieldArray(name),\n index,\n insertValue,\n );\n control._names.focus = getFocusFieldName(name, index, options);\n ids.current = insertAt(ids.current, index, insertValue.map(generateId));\n updateValues(updatedFieldArrayValues);\n setFields(updatedFieldArrayValues);\n control._updateFieldArray(name, updatedFieldArrayValues, insertAt, {\n argA: index,\n argB: fillEmptyArray(value),\n });\n };\n\n const swap = (indexA: number, indexB: number) => {\n const updatedFieldArrayValues = control._getFieldArray(name);\n swapArrayAt(updatedFieldArrayValues, indexA, indexB);\n swapArrayAt(ids.current, indexA, indexB);\n updateValues(updatedFieldArrayValues);\n setFields(updatedFieldArrayValues);\n control._updateFieldArray(\n name,\n updatedFieldArrayValues,\n swapArrayAt,\n {\n argA: indexA,\n argB: indexB,\n },\n false,\n );\n };\n\n const move = (from: number, to: number) => {\n const updatedFieldArrayValues = control._getFieldArray(name);\n moveArrayAt(updatedFieldArrayValues, from, to);\n moveArrayAt(ids.current, from, to);\n updateValues(updatedFieldArrayValues);\n setFields(updatedFieldArrayValues);\n control._updateFieldArray(\n name,\n updatedFieldArrayValues,\n moveArrayAt,\n {\n argA: from,\n argB: to,\n },\n false,\n );\n };\n\n const update = (\n index: number,\n value: FieldArray<TFieldValues, TFieldArrayName>,\n ) => {\n const updateValue = cloneObject(value);\n const updatedFieldArrayValues = updateAt(\n control._getFieldArray<\n FieldArrayWithId<TFieldValues, TFieldArrayName, TKeyName>\n >(name),\n index,\n updateValue as FieldArrayWithId<TFieldValues, TFieldArrayName, TKeyName>,\n );\n ids.current = [...updatedFieldArrayValues].map((item, i) =>\n !item || i === index ? generateId() : ids.current[i],\n );\n updateValues(updatedFieldArrayValues);\n setFields([...updatedFieldArrayValues]);\n control._updateFieldArray(\n name,\n updatedFieldArrayValues,\n updateAt,\n {\n argA: index,\n argB: updateValue,\n },\n true,\n false,\n );\n };\n\n const replace = (\n value:\n | Partial<FieldArray<TFieldValues, TFieldArrayName>>\n | Partial<FieldArray<TFieldValues, TFieldArrayName>>[],\n ) => {\n const updatedFieldArrayValues = convertToArrayPayload(cloneObject(value));\n ids.current = updatedFieldArrayValues.map(generateId);\n updateValues([...updatedFieldArrayValues]);\n setFields([...updatedFieldArrayValues]);\n control._updateFieldArray(\n name,\n [...updatedFieldArrayValues],\n <T>(data: T): T => data,\n {},\n true,\n false,\n );\n };\n\n React.useEffect(() => {\n control._state.action = false;\n\n isWatched(name, control._names) &&\n control._subjects.state.next({\n ...control._formState,\n } as FormState<TFieldValues>);\n\n if (\n _actioned.current &&\n (!getValidationModes(control._options.mode).isOnSubmit ||\n control._formState.isSubmitted)\n ) {\n if (control._options.resolver) {\n control._executeSchema([name]).then((result) => {\n const error = get(result.errors, name);\n const existingError = get(control._formState.errors, name);\n\n if (\n existingError\n ? (!error && existingError.type) ||\n (error &&\n (existingError.type !== error.type ||\n existingError.message !== error.message))\n : error && error.type\n ) {\n error\n ? set(control._formState.errors, name, error)\n : unset(control._formState.errors, name);\n control._subjects.state.next({\n errors: control._formState.errors as FieldErrors<TFieldValues>,\n });\n }\n });\n } else {\n const field: Field = get(control._fields, name);\n if (\n field &&\n field._f &&\n !(\n getValidationModes(control._options.reValidateMode).isOnSubmit &&\n getValidationModes(control._options.mode).isOnSubmit\n )\n ) {\n validateField(\n field,\n control._formValues,\n control._options.criteriaMode === VALIDATION_MODE.all,\n control._options.shouldUseNativeValidation,\n true,\n ).then(\n (error) =>\n !isEmptyObject(error) &&\n control._subjects.state.next({\n errors: updateFieldArrayRootError(\n control._formState.errors as FieldErrors<TFieldValues>,\n error,\n name,\n ) as FieldErrors<TFieldValues>,\n }),\n );\n }\n }\n }\n\n control._subjects.values.next({\n name,\n values: { ...control._formValues },\n });\n\n control._names.focus &&\n iterateFieldsByAction(control._fields, (ref, key: string) => {\n if (\n control._names.focus &&\n key.startsWith(control._names.focus) &&\n ref.focus\n ) {\n ref.focus();\n return 1;\n }\n return;\n });\n\n control._names.focus = '';\n\n control._updateValid();\n _actioned.current = false;\n }, [fields, name, control]);\n\n React.useEffect(() => {\n !get(control._formValues, name) && control._updateFieldArray(name);\n\n return () => {\n (control._options.shouldUnregister || shouldUnregister) &&\n control.unregister(name as FieldPath<TFieldValues>);\n };\n }, [name, control, keyName, shouldUnregister]);\n\n return {\n swap: React.useCallback(swap, [updateValues, name, control]),\n move: React.useCallback(move, [updateValues, name, control]),\n prepend: React.useCallback(prepend, [updateValues, name, control]),\n append: React.useCallback(append, [updateValues, name, control]),\n remove: React.useCallback(remove, [updateValues, name, control]),\n insert: React.useCallback(insert, [updateValues, name, control]),\n update: React.useCallback(update, [updateValues, name, control]),\n replace: React.useCallback(replace, [updateValues, name, control]),\n fields: React.useMemo(\n () =>\n fields.map((field, index) => ({\n ...field,\n [keyName]: ids.current[index] || generateId(),\n })) as FieldArrayWithId<TFieldValues, TFieldArrayName, TKeyName>[],\n [fields, keyName],\n ),\n };\n}\n","import { Noop } from '../types';\n\nexport type Observer<T> = {\n next: (value: T) => void;\n};\n\nexport type Subscription = {\n unsubscribe: Noop;\n};\n\nexport type Subject<T> = {\n readonly observers: Observer<T>[];\n subscribe: (value: Observer<T>) => Subscription;\n unsubscribe: Noop;\n} & Observer<T>;\n\nexport default <T>(): Subject<T> => {\n let _observers: Observer<T>[] = [];\n\n const next = (value: T) => {\n for (const observer of _observers) {\n observer.next && observer.next(value);\n }\n };\n\n const subscribe = (observer: Observer<T>): Subscription => {\n _observers.push(observer);\n return {\n unsubscribe: () => {\n _observers = _observers.filter((o) => o !== observer);\n },\n };\n };\n\n const unsubscribe = () => {\n _observers = [];\n };\n\n return {\n get observers() {\n return _observers;\n },\n next,\n subscribe,\n unsubscribe,\n };\n};\n","import { Primitive } from '../types';\n\nimport isNullOrUndefined from './isNullOrUndefined';\nimport { isObjectType } from './isObject';\n\nexport default (value: unknown): value is Primitive =>\n isNullOrUndefined(value) || !isObjectType(value);\n","import isObject from '../utils/isObject';\n\nimport isDateObject from './isDateObject';\nimport isPrimitive from './isPrimitive';\n\nexport default function deepEqual(object1: any, object2: any) {\n if (isPrimitive(object1) || isPrimitive(object2)) {\n return object1 === object2;\n }\n\n if (isDateObject(object1) && isDateObject(object2)) {\n return object1.getTime() === object2.getTime();\n }\n\n const keys1 = Object.keys(object1);\n const keys2 = Object.keys(object2);\n\n if (keys1.length !== keys2.length) {\n return false;\n }\n\n for (const key of keys1) {\n const val1 = object1[key];\n\n if (!keys2.includes(key)) {\n return false;\n }\n\n if (key !== 'ref') {\n const val2 = object2[key];\n\n if (\n (isDateObject(val1) && isDateObject(val2)) ||\n (isObject(val1) && isObject(val2)) ||\n (Array.isArray(val1) && Array.isArray(val2))\n ? !deepEqual(val1, val2)\n : val1 !== val2\n ) {\n return false;\n }\n }\n }\n\n return true;\n}\n","import { FieldElement } from '../types';\n\nexport default (element: FieldElement): element is HTMLSelectElement =>\n element.type === `select-multiple`;\n","import { FieldElement } from '../types';\n\nimport isCheckBoxInput from './isCheckBoxInput';\nimport isRadioInput from './isRadioInput';\n\nexport default (ref: FieldElement): ref is HTMLInputElement =>\n isRadioInput(ref) || isCheckBoxInput(ref);\n","import { Ref } from '../types';\n\nimport isHTMLElement from './isHTMLElement';\n\nexport default (ref: Ref) => isHTMLElement(ref) && ref.isConnected;\n","import isFunction from './isFunction';\n\nexport default <T>(data: T): boolean => {\n for (const key in data) {\n if (isFunction(data[key])) {\n return true;\n }\n }\n return false;\n};\n","import deepEqual from '../utils/deepEqual';\nimport isNullOrUndefined from '../utils/isNullOrUndefined';\nimport isObject from '../utils/isObject';\nimport isPrimitive from '../utils/isPrimitive';\nimport isUndefined from '../utils/isUndefined';\nimport objectHasFunction from '../utils/objectHasFunction';\n\nfunction markFieldsDirty<T>(data: T, fields: Record<string, any> = {}) {\n const isParentNodeArray = Array.isArray(data);\n\n if (isObject(data) || isParentNodeArray) {\n for (const key in data) {\n if (\n Array.isArray(data[key]) ||\n (isObject(data[key]) && !objectHasFunction(data[key]))\n ) {\n fields[key] = Array.isArray(data[key]) ? [] : {};\n markFieldsDirty(data[key], fields[key]);\n } else if (!isNullOrUndefined(data[key])) {\n fields[key] = true;\n }\n }\n }\n\n return fields;\n}\n\nfunction getDirtyFieldsFromDefaultValues<T>(\n data: T,\n formValues: T,\n dirtyFieldsFromValues: Record<\n Extract<keyof T, string>,\n ReturnType<typeof markFieldsDirty> | boolean\n >,\n) {\n const isParentNodeArray = Array.isArray(data);\n\n if (isObject(data) || isParentNodeArray) {\n for (const key in data) {\n if (\n Array.isArray(data[key]) ||\n (isObject(data[key]) && !objectHasFunction(data[key]))\n ) {\n if (\n isUndefined(formValues) ||\n isPrimitive(dirtyFieldsFromValues[key])\n ) {\n dirtyFieldsFromValues[key] = Array.isArray(data[key])\n ? markFieldsDirty(data[key], [])\n : { ...markFieldsDirty(data[key]) };\n } else {\n getDirtyFieldsFromDefaultValues(\n data[key],\n isNullOrUndefined(formValues) ? {} : formValues[key],\n dirtyFieldsFromValues[key],\n );\n }\n } else {\n dirtyFieldsFromValues[key] = !deepEqual(data[key], formValues[key]);\n }\n }\n }\n\n return dirtyFieldsFromValues;\n}\n\nexport default <T>(defaultValues: T, formValues: T) =>\n getDirtyFieldsFromDefaultValues(\n defaultValues,\n formValues,\n markFieldsDirty(formValues),\n );\n","import { Field, NativeFieldValue } from '../types';\nimport isString from '../utils/isString';\nimport isUndefined from '../utils/isUndefined';\n\nexport default <T extends NativeFieldValue>(\n value: T,\n { valueAsNumber, valueAsDate, setValueAs }: Field['_f'],\n) =>\n isUndefined(value)\n ? value\n : valueAsNumber\n ? value === ''\n ? NaN\n : value\n ? +value\n : value\n : valueAsDate && isString(value)\n ? new Date(value)\n : setValueAs\n ? setValueAs(value)\n : value;\n","import { Field } from '../types';\nimport isCheckBox from '../utils/isCheckBoxInput';\nimport isFileInput from '../utils/isFileInput';\nimport isMultipleSelect from '../utils/isMultipleSelect';\nimport isRadioInput from '../utils/isRadioInput';\nimport isUndefined from '../utils/isUndefined';\n\nimport getCheckboxValue from './getCheckboxValue';\nimport getFieldValueAs from './getFieldValueAs';\nimport getRadioValue from './getRadioValue';\n\nexport default function getFieldValue(_f: Field['_f']) {\n const ref = _f.ref;\n\n if (_f.refs ? _f.refs.every((ref) => ref.disabled) : ref.disabled) {\n return;\n }\n\n if (isFileInput(ref)) {\n return ref.files;\n }\n\n if (isRadioInput(ref)) {\n return getRadioValue(_f.refs).value;\n }\n\n if (isMultipleSelect(ref)) {\n return [...ref.selectedOptions].map(({ value }) => value);\n }\n\n if (isCheckBox(ref)) {\n return getCheckboxValue(_f.refs).value;\n }\n\n return getFieldValueAs(isUndefined(ref.value) ? _f.ref.value : ref.value, _f);\n}\n","import {\n CriteriaMode,\n Field,\n FieldName,\n FieldRefs,\n FieldValues,\n InternalFieldName,\n} from '../types';\nimport { get } from '../utils';\nimport set from '../utils/set';\n\nexport default <TFieldValues extends FieldValues>(\n fieldsNames: Set<InternalFieldName> | InternalFieldName[],\n _fields: FieldRefs,\n criteriaMode?: CriteriaMode,\n shouldUseNativeValidation?: boolean | undefined,\n) => {\n const fields: Record<InternalFieldName, Field['_f']> = {};\n\n for (const name of fieldsNames) {\n const field: Field = get(_fields, name);\n\n field && set(fields, name, field._f);\n }\n\n return {\n criteriaMode,\n names: [...fieldsNames] as FieldName<TFieldValues>[],\n fields,\n shouldUseNativeValidation,\n };\n};\n","import {\n ValidationRule,\n ValidationValue,\n ValidationValueMessage,\n} from '../types';\nimport isObject from '../utils/isObject';\nimport isRegex from '../utils/isRegex';\nimport isUndefined from '../utils/isUndefined';\n\nexport default <T extends ValidationValue>(\n rule?: ValidationRule<T> | ValidationValueMessage<T>,\n) =>\n isUndefined(rule)\n ? rule\n : isRegex(rule)\n ? rule.source\n : isObject(rule)\n ? isRegex(rule.value)\n ? rule.value.source\n : rule.value\n : rule;\n","import { Field } from '../types';\n\nexport default (options: Field['_f']) =>\n options.mount &&\n (options.required ||\n options.min ||\n options.max ||\n options.maxLength ||\n options.minLength ||\n options.pattern ||\n options.validate);\n","import { FieldError, FieldErrors, FieldValues } from '../types';\nimport get from '../utils/get';\nimport isKey from '../utils/isKey';\n\nexport default function schemaErrorLookup<T extends FieldValues = FieldValues>(\n errors: FieldErrors<T>,\n _fields: FieldValues,\n name: string,\n): {\n error?: FieldError;\n name: string;\n} {\n const error = get(errors, name);\n\n if (error || isKey(name)) {\n return {\n error,\n name,\n };\n }\n\n const names = name.split('.');\n\n while (names.length) {\n const fieldName = names.join('.');\n const field = get(_fields, fieldName);\n const foundError = get(errors, fieldName);\n\n if (field && !Array.isArray(field) && name !== fieldName) {\n return { name };\n }\n\n if (foundError && foundError.type) {\n return {\n name: fieldName,\n error: foundError,\n };\n }\n\n names.pop();\n }\n\n return {\n name,\n };\n}\n","import { ValidationModeFlags } from '../types';\n\nexport default (\n isBlurEvent: boolean,\n isTouched: boolean,\n isSubmitted: boolean,\n reValidateMode: {\n isOnBlur: boolean;\n isOnChange: boolean;\n },\n mode: Partial<ValidationModeFlags>,\n) => {\n if (mode.isOnAll) {\n return false;\n } else if (!isSubmitted && mode.isOnTouch) {\n return !(isTouched || isBlurEvent);\n } else if (isSubmitted ? reValidateMode.isOnBlur : mode.isOnBlur) {\n return !isBlurEvent;\n } else if (isSubmitted ? reValidateMode.isOnChange : mode.isOnChange) {\n return isBlurEvent;\n }\n return true;\n};\n","import compact from '../utils/compact';\nimport get from '../utils/get';\nimport unset from '../utils/unset';\n\nexport default <T>(ref: T, name: string) =>\n !compact(get(ref, name)).length && unset(ref, name);\n","import { EVENTS, VALIDATION_MODE } from '../constants';\nimport {\n BatchFieldArrayUpdate,\n ChangeHandler,\n Control,\n DeepPartial,\n DelayCallback,\n EventType,\n Field,\n FieldError,\n FieldErrors,\n FieldNamesMarkedBoolean,\n FieldPath,\n FieldRefs,\n FieldValues,\n FormState,\n GetIsDirty,\n InternalFieldName,\n Names,\n Path,\n PathValue,\n ReadFormState,\n Ref,\n SetFieldValue,\n SetValueConfig,\n Subjects,\n UseFormClearErrors,\n UseFormGetFieldState,\n UseFormGetValues,\n UseFormHandleSubmit,\n UseFormProps,\n UseFormRegister,\n UseFormReset,\n UseFormResetField,\n UseFormReturn,\n UseFormSetError,\n UseFormSetFocus,\n UseFormSetValue,\n UseFormTrigger,\n UseFormUnregister,\n UseFormWatch,\n WatchInternal,\n WatchObserver,\n} from '../types';\nimport cloneObject from '../utils/cloneObject';\nimport compact from '../utils/compact';\nimport convertToArrayPayload from '../utils/convertToArrayPayload';\nimport createSubject from '../utils/createSubject';\nimport deepEqual from '../utils/deepEqual';\nimport get from '../utils/get';\nimport isBoolean from '../utils/isBoolean';\nimport isCheckBoxInput from '../utils/isCheckBoxInput';\nimport isDateObject from '../utils/isDateObject';\nimport isEmptyObject from '../utils/isEmptyObject';\nimport isFileInput from '../utils/isFileInput';\nimport isFunction from '../utils/isFunction';\nimport isHTMLElement from '../utils/isHTMLElement';\nimport isMultipleSelect from '../utils/isMultipleSelect';\nimport isNullOrUndefined from '../utils/isNullOrUndefined';\nimport isObject from '../utils/isObject';\nimport isPrimitive from '../utils/isPrimitive';\nimport isRadioOrCheckbox from '../utils/isRadioOrCheckbox';\nimport isString from '../utils/isString';\nimport isUndefined from '../utils/isUndefined';\nimport isWeb from '../utils/isWeb';\nimport live from '../utils/live';\nimport set from '../utils/set';\nimport unset from '../utils/unset';\n\nimport generateWatchOutput from './generateWatchOutput';\nimport getDirtyFields from './getDirtyFields';\nimport getEventValue from './getEventValue';\nimport getFieldValue from './getFieldValue';\nimport getFieldValueAs from './getFieldValueAs';\nimport getResolverOptions from './getResolverOptions';\nimport getRuleValue from './getRuleValue';\nimport getValidationModes from './getValidationModes';\nimport hasValidation from './hasValidation';\nimport isNameInFieldArray from './isNameInFieldArray';\nimport isWatched from './isWatched';\nimport iterateFieldsByAction from './iterateFieldsByAction';\nimport schemaErrorLookup from './schemaErrorLookup';\nimport skipValidation from './skipValidation';\nimport unsetEmptyArray from './unsetEmptyArray';\nimport updateFieldArrayRootError from './updateFieldArrayRootError';\nimport validateField from './validateField';\n\nconst defaultOptions = {\n mode: VALIDATION_MODE.onSubmit,\n reValidateMode: VALIDATION_MODE.onChange,\n shouldFocusError: true,\n} as const;\n\nexport function createFormControl<\n TFieldValues extends FieldValues = FieldValues,\n TContext = any,\n>(\n props: UseFormProps<TFieldValues, TContext> = {},\n): Omit<UseFormReturn<TFieldValues, TContext>, 'formState'> {\n let _options = {\n ...defaultOptions,\n ...props,\n };\n let _formState: FormState<TFieldValues> = {\n submitCount: 0,\n isDirty: false,\n isLoading: isFunction(_options.defaultValues),\n isValidating: false,\n isSubmitted: false,\n isSubmitting: false,\n isSubmitSuccessful: false,\n isValid: false,\n touchedFields: {},\n dirtyFields: {},\n validatingFields: {},\n errors: _options.errors || {},\n disabled: _options.disabled || false,\n };\n let _fields: FieldRefs = {};\n let _defaultValues =\n isObject(_options.defaultValues) || isObject(_options.values)\n ? cloneObject(_options.defaultValues || _options.values) || {}\n : {};\n let _formValues = _options.shouldUnregister\n ? {}\n : cloneObject(_defaultValues);\n let _state = {\n action: false,\n mount: false,\n watch: false,\n };\n let _names: Names = {\n mount: new Set(),\n unMount: new Set(),\n array: new Set(),\n watch: new Set(),\n };\n let delayErrorCallback: DelayCallback | null;\n let timer = 0;\n const _proxyFormState: ReadFormState = {\n isDirty: false,\n dirtyFields: false,\n validatingFields: false,\n touchedFields: false,\n isValidating: false,\n isValid: false,\n errors: false,\n };\n const _subjects: Subjects<TFieldValues> = {\n values: createSubject(),\n array: createSubject(),\n state: createSubject(),\n };\n const validationModeBeforeSubmit = getValidationModes(_options.mode);\n const validationModeAfterSubmit = getValidationModes(_options.reValidateMode);\n const shouldDisplayAllAssociatedErrors =\n _options.criteriaMode === VALIDATION_MODE.all;\n\n const debounce =\n <T extends Function>(callback: T) =>\n (wait: number) => {\n clearTimeout(timer);\n timer = setTimeout(callback, wait);\n };\n\n const _updateValid = async (shouldUpdateValid?: boolean) => {\n if (_proxyFormState.isValid || shouldUpdateValid) {\n const isValid = _options.resolver\n ? isEmptyObject((await _executeSchema()).errors)\n : await executeBuiltInValidation(_fields, true);\n\n if (isValid !== _formState.isValid) {\n _subjects.state.next({\n isValid,\n });\n }\n }\n };\n\n const _updateIsValidating = (names?: string[], isValidating?: boolean) => {\n if (_proxyFormState.isValidating || _proxyFormState.validatingFields) {\n (names || Array.from(_names.mount)).forEach((name) => {\n if (name) {\n isValidating\n ? set(_formState.validatingFields, name, isValidating)\n : unset(_formState.validatingFields, name);\n }\n });\n\n _subjects.state.next({\n validatingFields: _formState.validatingFields,\n isValidating: !isEmptyObject(_formState.validatingFields),\n });\n }\n };\n\n const _updateFieldArray: BatchFieldArrayUpdate = (\n name,\n values = [],\n method,\n args,\n shouldSetValues = true,\n shouldUpdateFieldsAndState = true,\n ) => {\n if (args && method) {\n _state.action = true;\n if (shouldUpdateFieldsAndState && Array.isArray(get(_fields, name))) {\n const fieldValues = method(get(_fields, name), args.argA, args.argB);\n shouldSetValues && set(_fields, name, fieldValues);\n }\n\n if (\n shouldUpdateFieldsAndState &&\n Array.isArray(get(_formState.errors, name))\n ) {\n const errors = method(\n get(_formState.errors, name),\n args.argA,\n args.argB,\n );\n shouldSetValues && set(_formState.errors, name, errors);\n unsetEmptyArray(_formState.errors, name);\n }\n\n if (\n _proxyFormState.touchedFields &&\n shouldUpdateFieldsAndState &&\n Array.isArray(get(_formState.touchedFields, name))\n ) {\n const touchedFields = method(\n get(_formState.touchedFields, name),\n args.argA,\n args.argB,\n );\n shouldSetValues && set(_formState.touchedFields, name, touchedFields);\n }\n\n if (_proxyFormState.dirtyFields) {\n _formState.dirtyFields = getDirtyFields(_defaultValues, _formValues);\n }\n\n _subjects.state.next({\n name,\n isDirty: _getDirty(name, values),\n dirtyFields: _formState.dirtyFields,\n errors: _formState.errors,\n isValid: _formState.isValid,\n });\n } else {\n set(_formValues, name, values);\n }\n };\n\n const updateErrors = (name: InternalFieldName, error: FieldError) => {\n set(_formState.errors, name, error);\n _subjects.state.next({\n errors: _formState.errors,\n });\n };\n\n const _setErrors = (errors: FieldErrors<TFieldValues>) => {\n _formState.errors = errors;\n _subjects.state.next({\n errors: _formState.errors,\n isValid: false,\n });\n };\n\n const updateValidAndValue = (\n name: InternalFieldName,\n shouldSkipSetValueAs: boolean,\n value?: unknown,\n ref?: Ref,\n ) => {\n const field: Field = get(_fields, name);\n\n if (field) {\n const defaultValue = get(\n _formValues,\n name,\n isUndefined(value) ? get(_defaultValues, name) : value,\n );\n\n isUndefined(defaultValue) ||\n (ref && (ref as HTMLInputElement).defaultChecked) ||\n shouldSkipSetValueAs\n ? set(\n _formValues,\n name,\n shouldSkipSetValueAs ? defaultValue : getFieldValue(field._f),\n )\n : setFieldValue(name, defaultValue);\n\n _state.mount && _updateValid();\n }\n };\n\n const updateTouchAndDirty = (\n name: InternalFieldName,\n fieldValue: unknown,\n isBlurEvent?: boolean,\n shouldDirty?: boolean,\n shouldRender?: boolean,\n ): Partial<\n Pick<FormState<TFieldValues>, 'dirtyFields' | 'isDirty' | 'touchedFields'>\n > => {\n let shouldUpdateField = false;\n let isPreviousDirty = false;\n const output: Partial<FormState<TFieldValues>> & { name: string } = {\n name,\n };\n const disabledField = !!(\n get(_fields, name) &&\n get(_fields, name)._f &&\n get(_fields, name)._f.disabled\n );\n\n if (!isBlurEvent || shouldDirty) {\n if (_proxyFormState.isDirty) {\n isPreviousDirty = _formState.isDirty;\n _formState.isDirty = output.isDirty = _getDirty();\n shouldUpdateField = isPreviousDirty !== output.isDirty;\n }\n\n const isCurrentFieldPristine =\n disabledField || deepEqual(get(_defaultValues, name), fieldValue);\n\n isPreviousDirty = !!(!disabledField && get(_formState.dirtyFields, name));\n isCurrentFieldPristine || disabledField\n ? unset(_formState.dirtyFields, name)\n : set(_formState.dirtyFields, name, true);\n output.dirtyFields = _formState.dirtyFields;\n shouldUpdateField =\n shouldUpdateField ||\n (_proxyFormState.dirtyFields &&\n isPreviousDirty !== !isCurrentFieldPristine);\n }\n\n if (isBlurEvent) {\n const isPreviousFieldTouched = get(_formState.touchedFields, name);\n\n if (!isPreviousFieldTouched) {\n set(_formState.touchedFields, name, isBlurEvent);\n output.touchedFields = _formState.touchedFields;\n shouldUpdateField =\n shouldUpdateField ||\n (_proxyFormState.touchedFields &&\n isPreviousFieldTouched !== isBlurEvent);\n }\n }\n\n shouldUpdateField && shouldRender && _subjects.state.next(output);\n\n return shouldUpdateField ? output : {};\n };\n\n const shouldRenderByError = (\n name: InternalFieldName,\n isValid?: boolean,\n error?: FieldError,\n fieldState?: {\n dirty?: FieldNamesMarkedBoolean<TFieldValues>;\n isDirty?: boolean;\n touched?: FieldNamesMarkedBoolean<TFieldValues>;\n },\n ) => {\n const previousFieldError = get(_formState.errors, name);\n const shouldUpdateValid =\n _proxyFormState.isValid &&\n isBoolean(isValid) &&\n _formState.isValid !== isValid;\n\n if (props.delayError && error) {\n delayErrorCallback = debounce(() => updateErrors(name, error));\n delayErrorCallback(props.delayError);\n } else {\n clearTimeout(timer);\n delayErrorCallback = null;\n error\n ? set(_formState.errors, name, error)\n : unset(_formState.errors, name);\n }\n\n if (\n (error ? !deepEqual(previousFieldError, error) : previousFieldError) ||\n !isEmptyObject(fieldState) ||\n shouldUpdateValid\n ) {\n const updatedFormState = {\n ...fieldState,\n ...(shouldUpdateValid && isBoolean(isValid) ? { isValid } : {}),\n errors: _formState.errors,\n name,\n };\n\n _formState = {\n ..._formState,\n ...updatedFormState,\n };\n\n _subjects.state.next(updatedFormState);\n }\n };\n\n const _executeSchema = async (name?: InternalFieldName[]) => {\n _updateIsValidating(name, true);\n const result = await _options.resolver!(\n _formValues as TFieldValues,\n _options.context,\n getResolverOptions(\n name || _names.mount,\n _fields,\n _options.criteriaMode,\n _options.shouldUseNativeValidation,\n ),\n );\n _updateIsValidating(name);\n return result;\n };\n\n const executeSchemaAndUpdateState = async (names?: InternalFieldName[]) => {\n const { errors } = await _executeSchema(names);\n\n if (names) {\n for (const name of names) {\n const error = get(errors, name);\n error\n ? set(_formState.errors, name, error)\n : unset(_formState.errors, name);\n }\n } else {\n _formState.errors = errors;\n }\n\n return errors;\n };\n\n const executeBuiltInValidation = async (\n fields: FieldRefs,\n shouldOnlyCheckValid?: boolean,\n context: {\n valid: boolean;\n } = {\n valid: true,\n },\n ) => {\n for (const name in fields) {\n const field = fields[name];\n\n if (field) {\n const { _f, ...fieldValue } = field;\n\n if (_f) {\n const isFieldArrayRoot = _names.array.has(_f.name);\n _updateIsValidating([name], true);\n const fieldError = await validateField(\n field,\n _formValues,\n shouldDisplayAllAssociatedErrors,\n _options.shouldUseNativeValidation && !shouldOnlyCheckValid,\n isFieldArrayRoot,\n );\n _updateIsValidating([name]);\n\n if (fieldError[_f.name]) {\n context.valid = false;\n if (shouldOnlyCheckValid) {\n break;\n }\n }\n\n !shouldOnlyCheckValid &&\n (get(fieldError, _f.name)\n ? isFieldArrayRoot\n ? updateFieldArrayRootError(\n _formState.errors,\n fieldError,\n _f.name,\n )\n : set(_formState.errors, _f.name, fieldError[_f.name])\n : unset(_formState.errors, _f.name));\n }\n\n fieldValue &&\n (await executeBuiltInValidation(\n fieldValue,\n shouldOnlyCheckValid,\n context,\n ));\n }\n }\n\n return context.valid;\n };\n\n const _removeUnmounted = () => {\n for (const name of _names.unMount) {\n const field: Field = get(_fields, name);\n\n field &&\n (field._f.refs\n ? field._f.refs.every((ref) => !live(ref))\n : !live(field._f.ref)) &&\n unregister(name as FieldPath<TFieldValues>);\n }\n\n _names.unMount = new Set();\n };\n\n const _getDirty: GetIsDirty = (name, data) => (\n name && data && set(_formValues, name, data),\n !deepEqual(getValues(), _defaultValues)\n );\n\n const _getWatch: WatchInternal<TFieldValues> = (\n names,\n defaultValue,\n isGlobal,\n ) =>\n generateWatchOutput(\n names,\n _names,\n {\n ...(_state.mount\n ? _formValues\n : isUndefined(defaultValue)\n ? _defaultValues\n : isString(names)\n ? { [names]: defaultValue }\n : defaultValue),\n },\n isGlobal,\n defaultValue,\n );\n\n const _getFieldArray = <TFieldArrayValues>(\n name: InternalFieldName,\n ): Partial<TFieldArrayValues>[] =>\n compact(\n get(\n _state.mount ? _formValues : _defaultValues,\n name,\n props.shouldUnregister ? get(_defaultValues, name, []) : [],\n ),\n );\n\n const setFieldValue = (\n name: InternalFieldName,\n value: SetFieldValue<TFieldValues>,\n options: SetValueConfig = {},\n ) => {\n const field: Field = get(_fields, name);\n let fieldValue: unknown = value;\n\n if (field) {\n const fieldReference = field._f;\n\n if (fieldReference) {\n !fieldReference.disabled &&\n set(_formValues, name, getFieldValueAs(value, fieldReference));\n\n fieldValue =\n isHTMLElement(fieldReference.ref) && isNullOrUndefined(value)\n ? ''\n : value;\n\n if (isMultipleSelect(fieldReference.ref)) {\n [...fieldReference.ref.options].forEach(\n (optionRef) =>\n (optionRef.selected = (\n fieldValue as InternalFieldName[]\n ).includes(optionRef.value)),\n );\n } else if (fieldReference.refs) {\n if (isCheckBoxInput(fieldReference.ref)) {\n fieldReference.refs.length > 1\n ? fieldReference.refs.forEach(\n (checkboxRef) =>\n (!checkboxRef.defaultChecked || !checkboxRef.disabled) &&\n (checkboxRef.checked = Array.isArray(fieldValue)\n ? !!(fieldValue as []).find(\n (data: string) => data === checkboxRef.value,\n )\n : fieldValue === checkboxRef.value),\n )\n : fieldReference.refs[0] &&\n (fieldReference.refs[0].checked = !!fieldValue);\n } else {\n fieldReference.refs.forEach(\n (radioRef: HTMLInputElement) =>\n (radioRef.checked = radioRef.value === fieldValue),\n );\n }\n } else if (isFileInput(fieldReference.ref)) {\n fieldReference.ref.value = '';\n } else {\n fieldReference.ref.value = fieldValue;\n\n if (!fieldReference.ref.type) {\n _subjects.values.next({\n name,\n values: { ..._formValues },\n });\n }\n }\n }\n }\n\n (options.shouldDirty || options.shouldTouch) &&\n updateTouchAndDirty(\n name,\n fieldValue,\n options.shouldTouch,\n options.shouldDirty,\n true,\n );\n\n options.shouldValidate && trigger(name as Path<TFieldValues>);\n };\n\n const setValues = <\n T extends InternalFieldName,\n K extends SetFieldValue<TFieldValues>,\n U extends SetValueConfig,\n >(\n name: T,\n value: K,\n options: U,\n ) => {\n for (const fieldKey in value) {\n const fieldValue = value[fieldKey];\n const fieldName = `${name}.${fieldKey}`;\n const field = get(_fields, fieldName);\n\n (_names.array.has(name) ||\n !isPrimitive(fieldValue) ||\n (field && !field._f)) &&\n !isDateObject(fieldValue)\n ? setValues(fieldName, fieldValue, options)\n : setFieldValue(fieldName, fieldValue, options);\n }\n };\n\n const setValue: UseFormSetValue<TFieldValues> = (\n name,\n value,\n options = {},\n ) => {\n const field = get(_fields, name);\n const isFieldArray = _names.array.has(name);\n const cloneValue = cloneObject(value);\n\n set(_formValues, name, cloneValue);\n\n if (isFieldArray) {\n _subjects.array.next({\n name,\n values: { ..._formValues },\n });\n\n if (\n (_proxyFormState.isDirty || _proxyFormState.dirtyFields) &&\n options.shouldDirty\n ) {\n _subjects.state.next({\n name,\n dirtyFields: getDirtyFields(_defaultValues, _formValues),\n isDirty: _getDirty(name, cloneValue),\n });\n }\n } else {\n field && !field._f && !isNullOrUndefined(cloneValue)\n ? setValues(name, cloneValue, options)\n : setFieldValue(name, cloneValue, options);\n }\n\n isWatched(name, _names) && _subjects.state.next({ ..._formState });\n _subjects.values.next({\n name: _state.mount ? name : undefined,\n values: { ..._formValues },\n });\n };\n\n const onChange: ChangeHandler = async (event) => {\n _state.mount = true;\n const target = event.target;\n let name = target.name as string;\n let isFieldValueUpdated = true;\n const field: Field = get(_fields, name);\n const getCurrentFieldValue = () =>\n target.type ? getFieldValue(field._f) : getEventValue(event);\n const _updateIsFieldValueUpdated = (fieldValue: any): void => {\n isFieldValueUpdated =\n Number.isNaN(fieldValue) ||\n fieldValue === get(_formValues, name, fieldValue);\n };\n\n if (field) {\n let error;\n let isValid;\n const fieldValue = getCurrentFieldValue();\n const isBlurEvent =\n event.type === EVENTS.BLUR || event.type === EVENTS.FOCUS_OUT;\n const shouldSkipValidation =\n (!hasValidation(field._f) &&\n !_options.resolver &&\n !get(_formState.errors, name) &&\n !field._f.deps) ||\n skipValidation(\n isBlurEvent,\n get(_formState.touchedFields, name),\n _formState.isSubmitted,\n validationModeAfterSubmit,\n validationModeBeforeSubmit,\n );\n const watched = isWatched(name, _names, isBlurEvent);\n\n set(_formValues, name, fieldValue);\n\n if (isBlurEvent) {\n field._f.onBlur && field._f.onBlur(event);\n delayErrorCallback && delayErrorCallback(0);\n } else if (field._f.onChange) {\n field._f.onChange(event);\n }\n\n const fieldState = updateTouchAndDirty(\n name,\n fieldValue,\n isBlurEvent,\n false,\n );\n\n const shouldRender = !isEmptyObject(fieldState) || watched;\n\n !isBlurEvent &&\n _subjects.values.next({\n name,\n type: event.type,\n values: { ..._formValues },\n });\n\n if (shouldSkipValidation) {\n _proxyFormState.isValid && _updateValid();\n\n return (\n shouldRender &&\n _subjects.state.next({ name, ...(watched ? {} : fieldState) })\n );\n }\n\n !isBlurEvent && watched && _subjects.state.next({ ..._formState });\n\n if (_options.resolver) {\n const { errors } = await _executeSchema([name]);\n\n _updateIsFieldValueUpdated(fieldValue);\n\n if (isFieldValueUpdated) {\n const previousErrorLookupResult = schemaErrorLookup(\n _formState.errors,\n _fields,\n name,\n );\n const errorLookupResult = schemaErrorLookup(\n errors,\n _fields,\n previousErrorLookupResult.name || name,\n );\n\n error = errorLookupResult.error;\n name = errorLookupResult.name;\n\n isValid = isEmptyObject(errors);\n }\n } else {\n _updateIsValidating([name], true);\n error = (\n await validateField(\n field,\n _formValues,\n shouldDisplayAllAssociatedErrors,\n _options.shouldUseNativeValidation,\n )\n )[name];\n _updateIsValidating([name]);\n\n _updateIsFieldValueUpdated(fieldValue);\n\n if (isFieldValueUpdated) {\n if (error) {\n isValid = false;\n } else if (_proxyFormState.isValid) {\n isValid = await executeBuiltInValidation(_fields, true);\n }\n }\n }\n\n if (isFieldValueUpdated) {\n field._f.deps &&\n trigger(\n field._f.deps as\n | FieldPath<TFieldValues>\n | FieldPath<TFieldValues>[],\n );\n shouldRenderByError(name, isValid, error, fieldState);\n }\n }\n };\n\n const _focusInput = (ref: Ref, key: string) => {\n if (get(_formState.errors, key) && ref.focus) {\n ref.focus();\n return 1;\n }\n return;\n };\n\n const trigger: UseFormTrigger<TFieldValues> = async (name, options = {}) => {\n let isValid;\n let validationResult;\n const fieldNames = convertToArrayPayload(name) as InternalFieldName[];\n\n if (_options.resolver) {\n const errors = await executeSchemaAndUpdateState(\n isUndefined(name) ? name : fieldNames,\n );\n\n isValid = isEmptyObject(errors);\n validationResult = name\n ? !fieldNames.some((name) => get(errors, name))\n : isValid;\n } else if (name) {\n validationResult = (\n await Promise.all(\n fieldNames.map(async (fieldName) => {\n const field = get(_fields, fieldName);\n return await executeBuiltInValidation(\n field && field._f ? { [fieldName]: field } : field,\n );\n }),\n )\n ).every(Boolean);\n !(!validationResult && !_formState.isValid) && _updateValid();\n } else {\n validationResult = isValid = await executeBuiltInValidation(_fields);\n }\n\n _subjects.state.next({\n ...(!isString(name) ||\n (_proxyFormState.isValid && isValid !== _formState.isValid)\n ? {}\n : { name }),\n ...(_options.resolver || !name ? { isValid } : {}),\n errors: _formState.errors,\n });\n\n options.shouldFocus &&\n !validationResult &&\n iterateFieldsByAction(\n _fields,\n _focusInput,\n name ? fieldNames : _names.mount,\n );\n\n return validationResult;\n };\n\n const getValues: UseFormGetValues<TFieldValues> = (\n fieldNames?:\n | FieldPath<TFieldValues>\n | ReadonlyArray<FieldPath<TFieldValues>>,\n ) => {\n const values = {\n ...(_state.mount ? _formValues : _defaultValues),\n };\n\n return isUndefined(fieldNames)\n ? values\n : isString(fieldNames)\n ? get(values, fieldNames)\n : fieldNames.map((name) => get(values, name));\n };\n\n const getFieldState: UseFormGetFieldState<TFieldValues> = (\n name,\n formState,\n ) => ({\n invalid: !!get((formState || _formState).errors, name),\n isDirty: !!get((formState || _formState).dirtyFields, name),\n error: get((formState || _formState).errors, name),\n isValidating: !!get(_formState.validatingFields, name),\n isTouched: !!get((formState || _formState).touchedFields, name),\n });\n\n const clearErrors: UseFormClearErrors<TFieldValues> = (name) => {\n name &&\n convertToArrayPayload(name).forEach((inputName) =>\n unset(_formState.errors, inputName),\n );\n\n _subjects.state.next({\n errors: name ? _formState.errors : {},\n });\n };\n\n const setError: UseFormSetError<TFieldValues> = (name, error, options) => {\n const ref = (get(_fields, name, { _f: {} })._f || {}).ref;\n const currentError = get(_formState.errors, name) || {};\n\n // Don't override existing error messages elsewhere in the object tree.\n const { ref: currentRef, message, type, ...restOfErrorTree } = currentError;\n\n set(_formState.errors, name, {\n ...restOfErrorTree,\n ...error,\n ref,\n });\n\n _subjects.state.next({\n name,\n errors: _formState.errors,\n isValid: false,\n });\n\n options && options.shouldFocus && ref && ref.focus && ref.focus();\n };\n\n const watch: UseFormWatch<TFieldValues> = (\n name?:\n | FieldPath<TFieldValues>\n | ReadonlyArray<FieldPath<TFieldValues>>\n | WatchObserver<TFieldValues>,\n defaultValue?: DeepPartial<TFieldValues>,\n ) =>\n isFunction(name)\n ? _subjects.values.subscribe({\n next: (payload) =>\n name(\n _getWatch(undefined, defaultValue),\n payload as {\n name?: FieldPath<TFieldValues>;\n type?: EventType;\n value?: unknown;\n },\n ),\n })\n : _getWatch(\n name as InternalFieldName | InternalFieldName[],\n defaultValue,\n true,\n );\n\n const unregister: UseFormUnregister<TFieldValues> = (name, options = {}) => {\n for (const fieldName of name ? convertToArrayPayload(name) : _names.mount) {\n _names.mount.delete(fieldName);\n _names.array.delete(fieldName);\n\n if (!options.keepValue) {\n unset(_fields, fieldName);\n unset(_formValues, fieldName);\n }\n\n !options.keepError && unset(_formState.errors, fieldName);\n !options.keepDirty && unset(_formState.dirtyFields, fieldName);\n !options.keepTouched && unset(_formState.touchedFields, fieldName);\n !options.keepIsValidating &&\n unset(_formState.validatingFields, fieldName);\n !_options.shouldUnregister &&\n !options.keepDefaultValue &&\n unset(_defaultValues, fieldName);\n }\n\n _subjects.values.next({\n values: { ..._formValues },\n });\n\n _subjects.state.next({\n ..._formState,\n ...(!options.keepDirty ? {} : { isDirty: _getDirty() }),\n });\n\n !options.keepIsValid && _updateValid();\n };\n\n const _updateDisabledField: Control<TFieldValues>['_updateDisabledField'] = ({\n disabled,\n name,\n field,\n fields,\n value,\n }) => {\n if ((isBoolean(disabled) && _state.mount) || !!disabled) {\n const inputValue = disabled\n ? undefined\n : isUndefined(value)\n ? getFieldValue(field ? field._f : get(fields, name)._f)\n : value;\n set(_formValues, name, inputValue);\n updateTouchAndDirty(name, inputValue, false, false, true);\n }\n };\n\n const register: UseFormRegister<TFieldValues> = (name, options = {}) => {\n let field = get(_fields, name);\n const disabledIsDefined = isBoolean(options.disabled);\n\n set(_fields, name, {\n ...(field || {}),\n _f: {\n ...(field && field._f ? field._f : { ref: { name } }),\n name,\n mount: true,\n ...options,\n },\n });\n _names.mount.add(name);\n\n if (field) {\n _updateDisabledField({\n field,\n disabled: options.disabled,\n name,\n value: options.value,\n });\n } else {\n updateValidAndValue(name, true, options.value);\n }\n\n return {\n ...(disabledIsDefined ? { disabled: options.disabled } : {}),\n ...(_options.progressive\n ? {\n required: !!options.required,\n min: getRuleValue(options.min),\n max: getRuleValue(options.max),\n minLength: getRuleValue<number>(options.minLength) as number,\n maxLength: getRuleValue(options.maxLength) as number,\n pattern: getRuleValue(options.pattern) as string,\n }\n : {}),\n name,\n onChange,\n onBlur: onChange,\n ref: (ref: HTMLInputElement | null): void => {\n if (ref) {\n register(name, options);\n field = get(_fields, name);\n\n const fieldRef = isUndefined(ref.value)\n ? ref.querySelectorAll\n ? (ref.querySelectorAll('input,select,textarea')[0] as Ref) || ref\n : ref\n : ref;\n const radioOrCheckbox = isRadioOrCheckbox(fieldRef);\n const refs = field._f.refs || [];\n\n if (\n radioOrCheckbox\n ? refs.find((option: Ref) => option === fieldRef)\n : fieldRef === field._f.ref\n ) {\n return;\n }\n\n set(_fields, name, {\n _f: {\n ...field._f,\n ...(radioOrCheckbox\n ? {\n refs: [\n ...refs.filter(live),\n fieldRef,\n ...(Array.isArray(get(_defaultValues, name)) ? [{}] : []),\n ],\n ref: { type: fieldRef.type, name },\n }\n : { ref: fieldRef }),\n },\n });\n\n updateValidAndValue(name, false, undefined, fieldRef);\n } else {\n field = get(_fields, name, {});\n\n if (field._f) {\n field._f.mount = false;\n }\n\n (_options.shouldUnregister || options.shouldUnregister) &&\n !(isNameInFieldArray(_names.array, name) && _state.action) &&\n _names.unMount.add(name);\n }\n },\n };\n };\n\n const _focusError = () =>\n _options.shouldFocusError &&\n iterateFieldsByAction(_fields, _focusInput, _names.mount);\n\n const _disableForm = (disabled?: boolean) => {\n if (isBoolean(disabled)) {\n _subjects.state.next({ disabled });\n iterateFieldsByAction(\n _fields,\n (ref, name) => {\n const currentField: Field = get(_fields, name);\n if (currentField) {\n ref.disabled = currentField._f.disabled || disabled;\n\n if (Array.isArray(currentField._f.refs)) {\n currentField._f.refs.forEach((inputRef) => {\n inputRef.disabled = currentField._f.disabled || disabled;\n });\n }\n }\n },\n 0,\n false,\n );\n }\n };\n\n const handleSubmit: UseFormHandleSubmit<TFieldValues> =\n (onValid, onInvalid) => async (e) => {\n let onValidError = undefined;\n if (e) {\n e.preventDefault && e.preventDefault();\n e.persist && e.persist();\n }\n let fieldValues = cloneObject(_formValues);\n\n _subjects.state.next({\n isSubmitting: true,\n });\n\n if (_options.resolver) {\n const { errors, values } = await _executeSchema();\n _formState.errors = errors;\n fieldValues = values;\n } else {\n await executeBuiltInValidation(_fields);\n }\n\n unset(_formState.errors, 'root');\n\n if (isEmptyObject(_formState.errors)) {\n _subjects.state.next({\n errors: {},\n });\n try {\n await onValid(fieldValues as TFieldValues, e);\n } catch (error) {\n onValidError = error;\n }\n } else {\n if (onInvalid) {\n await onInvalid({ ..._formState.errors }, e);\n }\n _focusError();\n setTimeout(_focusError);\n }\n\n _subjects.state.next({\n isSubmitted: true,\n isSubmitting: false,\n isSubmitSuccessful: isEmptyObject(_formState.errors) && !onValidError,\n submitCount: _formState.submitCount + 1,\n errors: _formState.errors,\n });\n if (onValidError) {\n throw onValidError;\n }\n };\n\n const resetField: UseFormResetField<TFieldValues> = (name, options = {}) => {\n if (get(_fields, name)) {\n if (isUndefined(options.defaultValue)) {\n setValue(name, cloneObject(get(_defaultValues, name)));\n } else {\n setValue(\n name,\n options.defaultValue as PathValue<\n TFieldValues,\n FieldPath<TFieldValues>\n >,\n );\n set(_defaultValues, name, cloneObject(options.defaultValue));\n }\n\n if (!options.keepTouched) {\n unset(_formState.touchedFields, name);\n }\n\n if (!options.keepDirty) {\n unset(_formState.dirtyFields, name);\n _formState.isDirty = options.defaultValue\n ? _getDirty(name, cloneObject(get(_defaultValues, name)))\n : _getDirty();\n }\n\n if (!options.keepError) {\n unset(_formState.errors, name);\n _proxyFormState.isValid && _updateValid();\n }\n\n _subjects.state.next({ ..._formState });\n }\n };\n\n const _reset: UseFormReset<TFieldValues> = (\n formValues,\n keepStateOptions = {},\n ) => {\n const updatedValues = formValues ? cloneObject(formValues) : _defaultValues;\n const cloneUpdatedValues = cloneObject(updatedValues);\n const isEmptyResetValues = isEmptyObject(formValues);\n const values = isEmptyResetValues ? _defaultValues : cloneUpdatedValues;\n\n if (!keepStateOptions.keepDefaultValues) {\n _defaultValues = updatedValues;\n }\n\n if (!keepStateOptions.keepValues) {\n if (keepStateOptions.keepDirtyValues) {\n for (const fieldName of _names.mount) {\n get(_formState.dirtyFields, fieldName)\n ? set(values, fieldName, get(_formValues, fieldName))\n : setValue(\n fieldName as FieldPath<TFieldValues>,\n get(values, fieldName),\n );\n }\n } else {\n if (isWeb && isUndefined(formValues)) {\n for (const name of _names.mount) {\n const field = get(_fields, name);\n if (field && field._f) {\n const fieldReference = Array.isArray(field._f.refs)\n ? field._f.refs[0]\n : field._f.ref;\n\n if (isHTMLElement(fieldReference)) {\n const form = fieldReference.closest('form');\n if (form) {\n form.reset();\n break;\n }\n }\n }\n }\n }\n\n _fields = {};\n }\n\n _formValues = props.shouldUnregister\n ? keepStateOptions.keepDefaultValues\n ? cloneObject(_defaultValues)\n : {}\n : cloneObject(values);\n\n _subjects.array.next({\n values: { ...values },\n });\n\n _subjects.values.next({\n values: { ...values },\n });\n }\n\n _names = {\n mount: keepStateOptions.keepDirtyValues ? _names.mount : new Set(),\n unMount: new Set(),\n array: new Set(),\n watch: new Set(),\n watchAll: false,\n focus: '',\n };\n\n _state.mount =\n !_proxyFormState.isValid ||\n !!keepStateOptions.keepIsValid ||\n !!keepStateOptions.keepDirtyValues;\n\n _state.watch = !!props.shouldUnregister;\n\n _subjects.state.next({\n submitCount: keepStateOptions.keepSubmitCount\n ? _formState.submitCount\n : 0,\n isDirty: isEmptyResetValues\n ? false\n : keepStateOptions.keepDirty\n ? _formState.isDirty\n : !!(\n keepStateOptions.keepDefaultValues &&\n !deepEqual(formValues, _defaultValues)\n ),\n isSubmitted: keepStateOptions.keepIsSubmitted\n ? _formState.isSubmitted\n : false,\n dirtyFields: isEmptyResetValues\n ? []\n : keepStateOptions.keepDirtyValues\n ? keepStateOptions.keepDefaultValues && _formValues\n ? getDirtyFields(_defaultValues, _formValues)\n : _formState.dirtyFields\n : keepStateOptions.keepDefaultValues && formValues\n ? getDirtyFields(_defaultValues, formValues)\n : keepStateOptions.keepDirty\n ? _formState.dirtyFields\n : {},\n touchedFields: keepStateOptions.keepTouched\n ? _formState.touchedFields\n : {},\n errors: keepStateOptions.keepErrors ? _formState.errors : {},\n isSubmitSuccessful: keepStateOptions.keepIsSubmitSuccessful\n ? _formState.isSubmitSuccessful\n : false,\n isSubmitting: false,\n });\n };\n\n const reset: UseFormReset<TFieldValues> = (formValues, keepStateOptions) =>\n _reset(\n isFunction(formValues)\n ? formValues(_formValues as TFieldValues)\n : formValues,\n keepStateOptions,\n );\n\n const setFocus: UseFormSetFocus<TFieldValues> = (name, options = {}) => {\n const field = get(_fields, name);\n const fieldReference = field && field._f;\n\n if (fieldReference) {\n const fieldRef = fieldReference.refs\n ? fieldReference.refs[0]\n : fieldReference.ref;\n\n if (fieldRef.focus) {\n fieldRef.focus();\n options.shouldSelect && fieldRef.select();\n }\n }\n };\n\n const _updateFormState = (\n updatedFormState: Partial<FormState<TFieldValues>>,\n ) => {\n _formState = {\n ..._formState,\n ...updatedFormState,\n };\n };\n\n const _resetDefaultValues = () =>\n isFunction(_options.defaultValues) &&\n _options.defaultValues().then((values) => {\n reset(values, _options.resetOptions);\n _subjects.state.next({\n isLoading: false,\n });\n });\n\n return {\n control: {\n register,\n unregister,\n getFieldState,\n handleSubmit,\n setError,\n _executeSchema,\n _getWatch,\n _getDirty,\n _updateValid,\n _removeUnmounted,\n _updateFieldArray,\n _updateDisabledField,\n _getFieldArray,\n _reset,\n _resetDefaultValues,\n _updateFormState,\n _disableForm,\n _subjects,\n _proxyFormState,\n _setErrors,\n get _fields() {\n return _fields;\n },\n get _formValues() {\n return _formValues;\n },\n get _state() {\n return _state;\n },\n set _state(value) {\n _state = value;\n },\n get _defaultValues() {\n return _defaultValues;\n },\n get _names() {\n return _names;\n },\n set _names(value) {\n _names = value;\n },\n get _formState() {\n return _formState;\n },\n set _formState(value) {\n _formState = value;\n },\n get _options() {\n return _options;\n },\n set _options(value) {\n _options = {\n ..._options,\n ...value,\n };\n },\n },\n trigger,\n register,\n handleSubmit,\n watch,\n setValue,\n getValues,\n reset,\n resetField,\n clearErrors,\n unregister,\n setError,\n setFocus,\n getFieldState,\n };\n}\n","import React from 'react';\n\nimport { createFormControl } from './logic/createFormControl';\nimport getProxyFormState from './logic/getProxyFormState';\nimport shouldRenderFormState from './logic/shouldRenderFormState';\nimport deepEqual from './utils/deepEqual';\nimport isFunction from './utils/isFunction';\nimport {\n FieldValues,\n FormState,\n InternalFieldName,\n UseFormProps,\n UseFormReturn,\n} from './types';\nimport { useSubscribe } from './useSubscribe';\n\n/**\n * Custom hook to manage the entire form.\n *\n * @remarks\n * [API](https://react-hook-form.com/docs/useform) • [Demo](https://codesandbox.io/s/react-hook-form-get-started-ts-5ksmm) • [Video](https://www.youtube.com/watch?v=RkXv4AXXC_4)\n *\n * @param props - form configuration and validation parameters.\n *\n * @returns methods - individual functions to manage the form state. {@link UseFormReturn}\n *\n * @example\n * ```tsx\n * function App() {\n * const { register, handleSubmit, watch, formState: { errors } } = useForm();\n * const onSubmit = data => console.log(data);\n *\n * console.log(watch(\"example\"));\n *\n * return (\n * <form onSubmit={handleSubmit(onSubmit)}>\n * <input defaultValue=\"test\" {...register(\"example\")} />\n * <input {...register(\"exampleRequired\", { required: true })} />\n * {errors.exampleRequired && <span>This field is required</span>}\n * <button>Submit</button>\n * </form>\n * );\n * }\n * ```\n */\nexport function useForm<\n TFieldValues extends FieldValues = FieldValues,\n TContext = any,\n TTransformedValues extends FieldValues | undefined = undefined,\n>(\n props: UseFormProps<TFieldValues, TContext> = {},\n): UseFormReturn<TFieldValues, TContext, TTransformedValues> {\n const _formControl = React.useRef<\n UseFormReturn<TFieldValues, TContext, TTransformedValues> | undefined\n >();\n const _values = React.useRef<typeof props.values>();\n const [formState, updateFormState] = React.useState<FormState<TFieldValues>>({\n isDirty: false,\n isValidating: false,\n isLoading: isFunction(props.defaultValues),\n isSubmitted: false,\n isSubmitting: false,\n isSubmitSuccessful: false,\n isValid: false,\n submitCount: 0,\n dirtyFields: {},\n touchedFields: {},\n validatingFields: {},\n errors: props.errors || {},\n disabled: props.disabled || false,\n defaultValues: isFunction(props.defaultValues)\n ? undefined\n : props.defaultValues,\n });\n\n if (!_formControl.current) {\n _formControl.current = {\n ...createFormControl(props),\n formState,\n };\n }\n\n const control = _formControl.current.control;\n control._options = props;\n\n useSubscribe({\n subject: control._subjects.state,\n next: (\n value: Partial<FormState<TFieldValues>> & { name?: InternalFieldName },\n ) => {\n if (\n shouldRenderFormState(\n value,\n control._proxyFormState,\n control._updateFormState,\n true,\n )\n ) {\n updateFormState({ ...control._formState });\n }\n },\n });\n\n React.useEffect(\n () => control._disableForm(props.disabled),\n [control, props.disabled],\n );\n\n React.useEffect(() => {\n if (control._proxyFormState.isDirty) {\n const isDirty = control._getDirty();\n if (isDirty !== formState.isDirty) {\n control._subjects.state.next({\n isDirty,\n });\n }\n }\n }, [control, formState.isDirty]);\n\n React.useEffect(() => {\n if (props.values && !deepEqual(props.values, _values.current)) {\n control._reset(props.values, control._options.resetOptions);\n _values.current = props.values;\n updateFormState((state) => ({ ...state }));\n } else {\n control._resetDefaultValues();\n }\n }, [props.values, control]);\n\n React.useEffect(() => {\n if (props.errors) {\n control._setErrors(props.errors);\n }\n }, [props.errors, control]);\n\n React.useEffect(() => {\n if (!control._state.mount) {\n control._updateValid();\n control._state.mount = true;\n }\n\n if (control._state.watch) {\n control._state.watch = false;\n control._subjects.state.next({ ...control._formState });\n }\n\n control._removeUnmounted();\n });\n\n React.useEffect(() => {\n props.shouldUnregister &&\n control._subjects.values.next({\n values: control._getWatch(),\n });\n }, [props.shouldUnregister, control]);\n\n _formControl.current.formState = getProxyFormState(formState, control);\n\n return _formControl.current;\n}\n","import { TASK, SAGA_ACTION, MULTICAST, IO } from '@redux-saga/symbols';\n\nvar undef = function undef(v) {\n return v === null || v === undefined;\n};\nvar notUndef = function notUndef(v) {\n return v !== null && v !== undefined;\n};\nvar func = function func(f) {\n return typeof f === 'function';\n};\nvar number = function number(n) {\n return typeof n === 'number';\n};\nvar string = function string(s) {\n return typeof s === 'string';\n};\nvar array = Array.isArray;\nvar object = function object(obj) {\n return obj && !array(obj) && typeof obj === 'object';\n};\nvar promise = function promise(p) {\n return p && func(p.then);\n};\nvar iterator = function iterator(it) {\n return it && func(it.next) && func(it.throw);\n};\nvar iterable = function iterable(it) {\n return it && func(Symbol) ? func(it[Symbol.iterator]) : array(it);\n};\nvar task = function task(t) {\n return t && t[TASK];\n};\nvar sagaAction = function sagaAction(a) {\n return Boolean(a && a[SAGA_ACTION]);\n};\nvar observable = function observable(ob) {\n return ob && func(ob.subscribe);\n};\nvar buffer = function buffer(buf) {\n return buf && func(buf.isEmpty) && func(buf.take) && func(buf.put);\n};\nvar pattern = function pattern(pat) {\n return pat && (string(pat) || symbol(pat) || func(pat) || array(pat) && pat.every(pattern));\n};\nvar channel = function channel(ch) {\n return ch && func(ch.take) && func(ch.close);\n};\nvar stringableFunc = function stringableFunc(f) {\n return func(f) && f.hasOwnProperty('toString');\n};\nvar symbol = function symbol(sym) {\n return Boolean(sym) && typeof Symbol === 'function' && sym.constructor === Symbol && sym !== Symbol.prototype;\n};\nvar multicast = function multicast(ch) {\n return channel(ch) && ch[MULTICAST];\n};\nvar effect = function effect(eff) {\n return eff && eff[IO];\n};\n\nexport { array, buffer, channel, effect, func, iterable, iterator, multicast, notUndef, number, object, observable, pattern, promise, sagaAction, string, stringableFunc, symbol, task, undef };\n","function _objectWithoutPropertiesLoose(r, e) {\n if (null == r) return {};\n var t = {};\n for (var n in r) if ({}.hasOwnProperty.call(r, n)) {\n if (e.indexOf(n) >= 0) continue;\n t[n] = r[n];\n }\n return t;\n}\nexport { _objectWithoutPropertiesLoose as default };","// MIT License\n// Copyright (c) 2019-present StringEpsilon <StringEpsilon@gmail.com>\n// Copyright (c) 2017-2019 James Kyle <me@thejameskyle.com>\n// https://github.com/StringEpsilon/mini-create-react-context\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\nconst MAX_SIGNED_31_BIT_INT = 1073741823;\n\nconst commonjsGlobal =\n typeof globalThis !== \"undefined\" // 'global proper'\n ? // eslint-disable-next-line no-undef\n globalThis\n : typeof window !== \"undefined\"\n ? window // Browser\n : typeof global !== \"undefined\"\n ? global // node.js\n : {};\n\nfunction getUniqueId() {\n let key = \"__global_unique_id__\";\n return (commonjsGlobal[key] = (commonjsGlobal[key] || 0) + 1);\n}\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 // eslint-disable-next-line no-self-compare\n return x !== x && y !== y;\n }\n}\n\nfunction createEventEmitter(value) {\n let handlers = [];\n return {\n on(handler) {\n handlers.push(handler);\n },\n\n off(handler) {\n handlers = handlers.filter(h => h !== handler);\n },\n\n get() {\n return value;\n },\n\n set(newValue, changedBits) {\n value = newValue;\n handlers.forEach(handler => handler(value, changedBits));\n }\n };\n}\n\nfunction onlyChild(children) {\n return Array.isArray(children) ? children[0] : children;\n}\n\nexport default function createReactContext(defaultValue, calculateChangedBits) {\n const contextProp = \"__create-react-context-\" + getUniqueId() + \"__\";\n\n class Provider extends React.Component {\n emitter = createEventEmitter(this.props.value);\n\n static childContextTypes = {\n [contextProp]: PropTypes.object.isRequired\n };\n\n getChildContext() {\n return {\n [contextProp]: this.emitter\n };\n }\n\n componentWillReceiveProps(nextProps) {\n if (this.props.value !== nextProps.value) {\n let oldValue = this.props.value;\n let newValue = nextProps.value;\n let changedBits;\n\n if (objectIs(oldValue, newValue)) {\n changedBits = 0; // No change\n } else {\n changedBits =\n typeof calculateChangedBits === \"function\"\n ? calculateChangedBits(oldValue, newValue)\n : MAX_SIGNED_31_BIT_INT;\n if (process.env.NODE_ENV !== \"production\") {\n warning(\n (changedBits & MAX_SIGNED_31_BIT_INT) === changedBits,\n \"calculateChangedBits: Expected the return value to be a \" +\n \"31-bit integer. Instead received: \" +\n changedBits\n );\n }\n\n changedBits |= 0;\n\n if (changedBits !== 0) {\n this.emitter.set(nextProps.value, changedBits);\n }\n }\n }\n }\n\n render() {\n return this.props.children;\n }\n }\n\n class Consumer extends React.Component {\n static contextTypes = {\n [contextProp]: PropTypes.object\n };\n\n observedBits;\n\n state = {\n value: this.getValue()\n };\n\n componentWillReceiveProps(nextProps) {\n let { observedBits } = nextProps;\n this.observedBits =\n observedBits === undefined || observedBits === null\n ? MAX_SIGNED_31_BIT_INT // Subscribe to all changes by default\n : observedBits;\n }\n\n componentDidMount() {\n if (this.context[contextProp]) {\n this.context[contextProp].on(this.onUpdate);\n }\n let { observedBits } = this.props;\n this.observedBits =\n observedBits === undefined || observedBits === null\n ? MAX_SIGNED_31_BIT_INT // Subscribe to all changes by default\n : observedBits;\n }\n\n componentWillUnmount() {\n if (this.context[contextProp]) {\n this.context[contextProp].off(this.onUpdate);\n }\n }\n\n getValue() {\n if (this.context[contextProp]) {\n return this.context[contextProp].get();\n } else {\n return defaultValue;\n }\n }\n\n onUpdate = (newValue, changedBits) => {\n const observedBits = this.observedBits | 0;\n if ((observedBits & changedBits) !== 0) {\n this.setState({ value: this.getValue() });\n }\n };\n\n render() {\n return onlyChild(this.props.children)(this.state.value);\n }\n }\n\n return {\n Provider,\n Consumer\n };\n}\n","// MIT License\n// Copyright (c) 2019-present StringEpsilon <StringEpsilon@gmail.com>\n// Copyright (c) 2017-2019 James Kyle <me@thejameskyle.com>\n// https://github.com/StringEpsilon/mini-create-react-context\nimport React from \"react\";\nimport createReactContext from \"./miniCreateReactContext\";\n\nexport default React.createContext || createReactContext;\n","// TODO: Replace with React.createContext once we can assume React 16+\nimport createContext from \"./createContext\";\n\nconst createNamedContext = name => {\n const context = createContext();\n context.displayName = name;\n\n return context;\n};\n\nexport default createNamedContext;\n","import createNamedContext from \"./createNamedContext\";\n\nconst historyContext = /*#__PURE__*/ createNamedContext(\"Router-History\");\nexport default historyContext;\n","import createNamedContext from \"./createNamedContext\";\n\nconst context = /*#__PURE__*/ createNamedContext(\"Router\");\nexport default context;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\nimport HistoryContext from \"./HistoryContext.js\";\nimport RouterContext from \"./RouterContext.js\";\n\n/**\n * The public API for putting history on context.\n */\nclass Router extends React.Component {\n static computeRootMatch(pathname) {\n return { path: \"/\", url: \"/\", params: {}, isExact: pathname === \"/\" };\n }\n\n constructor(props) {\n super(props);\n\n this.state = {\n location: props.history.location\n };\n\n // This is a bit of a hack. We have to start listening for location\n // changes here in the constructor in case there are any <Redirect>s\n // on the initial render. If there are, they will replace/push when\n // they mount and since cDM fires in children before parents, we may\n // get a new location before the <Router> is mounted.\n this._isMounted = false;\n this._pendingLocation = null;\n\n if (!props.staticContext) {\n this.unlisten = props.history.listen(location => {\n this._pendingLocation = location;\n });\n }\n }\n\n componentDidMount() {\n this._isMounted = true;\n\n if (this.unlisten) {\n // Any pre-mount location changes have been captured at\n // this point, so unregister the listener.\n this.unlisten();\n }\n if (!this.props.staticContext) {\n this.unlisten = this.props.history.listen(location => {\n if (this._isMounted) {\n this.setState({ location });\n }\n });\n }\n if (this._pendingLocation) {\n this.setState({ location: this._pendingLocation });\n }\n }\n\n componentWillUnmount() {\n if (this.unlisten) {\n this.unlisten();\n this._isMounted = false;\n this._pendingLocation = null;\n }\n }\n\n render() {\n return (\n <RouterContext.Provider\n value={{\n history: this.props.history,\n location: this.state.location,\n match: Router.computeRootMatch(this.state.location.pathname),\n staticContext: this.props.staticContext\n }}\n >\n <HistoryContext.Provider\n children={this.props.children || null}\n value={this.props.history}\n />\n </RouterContext.Provider>\n );\n }\n}\n\nif (__DEV__) {\n Router.propTypes = {\n children: PropTypes.node,\n history: PropTypes.object.isRequired,\n staticContext: PropTypes.object\n };\n\n Router.prototype.componentDidUpdate = function(prevProps) {\n warning(\n prevProps.history === this.props.history,\n \"You cannot change <Router history>\"\n );\n };\n}\n\nexport default Router;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createMemoryHistory as createHistory } from \"history\";\nimport warning from \"tiny-warning\";\n\nimport Router from \"./Router.js\";\n\n/**\n * The public API for a <Router> that stores location in memory.\n */\nclass MemoryRouter extends React.Component {\n history = createHistory(this.props);\n\n render() {\n return <Router history={this.history} children={this.props.children} />;\n }\n}\n\nif (__DEV__) {\n MemoryRouter.propTypes = {\n initialEntries: PropTypes.array,\n initialIndex: PropTypes.number,\n getUserConfirmation: PropTypes.func,\n keyLength: PropTypes.number,\n children: PropTypes.node\n };\n\n MemoryRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \"<MemoryRouter> ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { MemoryRouter as Router }`.\"\n );\n };\n}\n\nexport default MemoryRouter;\n","import React from \"react\";\n\nclass Lifecycle extends React.Component {\n componentDidMount() {\n if (this.props.onMount) this.props.onMount.call(this, this);\n }\n\n componentDidUpdate(prevProps) {\n if (this.props.onUpdate) this.props.onUpdate.call(this, this, prevProps);\n }\n\n componentWillUnmount() {\n if (this.props.onUnmount) this.props.onUnmount.call(this, this);\n }\n\n render() {\n return null;\n }\n}\n\nexport default Lifecycle;\n","import pathToRegexp from \"path-to-regexp\";\n\nconst cache = {};\nconst cacheLimit = 10000;\nlet cacheCount = 0;\n\nfunction compilePath(path) {\n if (cache[path]) return cache[path];\n\n const generator = pathToRegexp.compile(path);\n\n if (cacheCount < cacheLimit) {\n cache[path] = generator;\n cacheCount++;\n }\n\n return generator;\n}\n\n/**\n * Public API for generating a URL pathname from a path and parameters.\n */\nfunction generatePath(path = \"/\", params = {}) {\n return path === \"/\" ? path : compilePath(path)(params, { pretty: true });\n}\n\nexport default generatePath;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createLocation, locationsAreEqual } from \"history\";\nimport invariant from \"tiny-invariant\";\n\nimport Lifecycle from \"./Lifecycle.js\";\nimport RouterContext from \"./RouterContext.js\";\nimport generatePath from \"./generatePath.js\";\n\n/**\n * The public API for navigating programmatically with a component.\n */\nfunction Redirect({ computedMatch, to, push = false }) {\n return (\n <RouterContext.Consumer>\n {context => {\n invariant(context, \"You should not use <Redirect> outside a <Router>\");\n\n const { history, staticContext } = context;\n\n const method = push ? history.push : history.replace;\n const location = createLocation(\n computedMatch\n ? typeof to === \"string\"\n ? generatePath(to, computedMatch.params)\n : {\n ...to,\n pathname: generatePath(to.pathname, computedMatch.params)\n }\n : to\n );\n\n // When rendering in a static context,\n // set the new location immediately.\n if (staticContext) {\n method(location);\n return null;\n }\n\n return (\n <Lifecycle\n onMount={() => {\n method(location);\n }}\n onUpdate={(self, prevProps) => {\n const prevLocation = createLocation(prevProps.to);\n if (\n !locationsAreEqual(prevLocation, {\n ...location,\n key: prevLocation.key\n })\n ) {\n method(location);\n }\n }}\n to={to}\n />\n );\n }}\n </RouterContext.Consumer>\n );\n}\n\nif (__DEV__) {\n Redirect.propTypes = {\n push: PropTypes.bool,\n from: PropTypes.string,\n to: PropTypes.oneOfType([PropTypes.string, PropTypes.object]).isRequired\n };\n}\n\nexport default Redirect;\n","import pathToRegexp from \"path-to-regexp\";\n\nconst cache = {};\nconst cacheLimit = 10000;\nlet cacheCount = 0;\n\nfunction compilePath(path, options) {\n const cacheKey = `${options.end}${options.strict}${options.sensitive}`;\n const pathCache = cache[cacheKey] || (cache[cacheKey] = {});\n\n if (pathCache[path]) return pathCache[path];\n\n const keys = [];\n const regexp = pathToRegexp(path, keys, options);\n const result = { regexp, keys };\n\n if (cacheCount < cacheLimit) {\n pathCache[path] = result;\n cacheCount++;\n }\n\n return result;\n}\n\n/**\n * Public API for matching a URL pathname to a path.\n */\nfunction matchPath(pathname, options = {}) {\n if (typeof options === \"string\" || Array.isArray(options)) {\n options = { path: options };\n }\n\n const { path, exact = false, strict = false, sensitive = false } = options;\n\n const paths = [].concat(path);\n\n return paths.reduce((matched, path) => {\n if (!path && path !== \"\") return null;\n if (matched) return matched;\n\n const { regexp, keys } = compilePath(path, {\n end: exact,\n strict,\n sensitive\n });\n const match = regexp.exec(pathname);\n\n if (!match) return null;\n\n const [url, ...values] = match;\n const isExact = pathname === url;\n\n if (exact && !isExact) return null;\n\n return {\n path, // the path used to match\n url: path === \"/\" && url === \"\" ? \"/\" : url, // the matched portion of the URL\n isExact, // whether or not we matched exactly\n params: keys.reduce((memo, key, index) => {\n memo[key.name] = values[index];\n return memo;\n }, {})\n };\n }, null);\n}\n\nexport default matchPath;\n","import React from \"react\";\nimport { isValidElementType } from \"react-is\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport RouterContext from \"./RouterContext.js\";\nimport matchPath from \"./matchPath.js\";\n\nfunction isEmptyChildren(children) {\n return React.Children.count(children) === 0;\n}\n\nfunction evalChildrenDev(children, props, path) {\n const value = children(props);\n\n warning(\n value !== undefined,\n \"You returned `undefined` from the `children` function of \" +\n `<Route${path ? ` path=\"${path}\"` : \"\"}>, but you ` +\n \"should have returned a React element or `null`\"\n );\n\n return value || null;\n}\n\n/**\n * The public API for matching a single path and rendering.\n */\nclass Route extends React.Component {\n render() {\n return (\n <RouterContext.Consumer>\n {context => {\n invariant(context, \"You should not use <Route> outside a <Router>\");\n\n const location = this.props.location || context.location;\n const match = this.props.computedMatch\n ? this.props.computedMatch // <Switch> already computed the match for us\n : this.props.path\n ? matchPath(location.pathname, this.props)\n : context.match;\n\n const props = { ...context, location, match };\n\n let { children, component, render } = this.props;\n\n // Preact uses an empty array as children by\n // default, so use null if that's the case.\n if (Array.isArray(children) && isEmptyChildren(children)) {\n children = null;\n }\n\n return (\n <RouterContext.Provider value={props}>\n {props.match\n ? children\n ? typeof children === \"function\"\n ? __DEV__\n ? evalChildrenDev(children, props, this.props.path)\n : children(props)\n : children\n : component\n ? React.createElement(component, props)\n : render\n ? render(props)\n : null\n : typeof children === \"function\"\n ? __DEV__\n ? evalChildrenDev(children, props, this.props.path)\n : children(props)\n : null}\n </RouterContext.Provider>\n );\n }}\n </RouterContext.Consumer>\n );\n }\n}\n\nif (__DEV__) {\n Route.propTypes = {\n children: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),\n component: (props, propName) => {\n if (props[propName] && !isValidElementType(props[propName])) {\n return new Error(\n `Invalid prop 'component' supplied to 'Route': the prop is not a valid React component`\n );\n }\n },\n exact: PropTypes.bool,\n location: PropTypes.object,\n path: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string)\n ]),\n render: PropTypes.func,\n sensitive: PropTypes.bool,\n strict: PropTypes.bool\n };\n\n Route.prototype.componentDidMount = function() {\n warning(\n !(\n this.props.children &&\n !isEmptyChildren(this.props.children) &&\n this.props.component\n ),\n \"You should not use <Route component> and <Route children> in the same route; <Route component> will be ignored\"\n );\n\n warning(\n !(\n this.props.children &&\n !isEmptyChildren(this.props.children) &&\n this.props.render\n ),\n \"You should not use <Route render> and <Route children> in the same route; <Route render> will be ignored\"\n );\n\n warning(\n !(this.props.component && this.props.render),\n \"You should not use <Route component> and <Route render> in the same route; <Route render> will be ignored\"\n );\n };\n\n Route.prototype.componentDidUpdate = function(prevProps) {\n warning(\n !(this.props.location && !prevProps.location),\n '<Route> elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.'\n );\n\n warning(\n !(!this.props.location && prevProps.location),\n '<Route> elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.'\n );\n };\n}\n\nexport default Route;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createLocation, createPath } from \"history\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport Router from \"./Router.js\";\n\nfunction addLeadingSlash(path) {\n return path.charAt(0) === \"/\" ? path : \"/\" + path;\n}\n\nfunction addBasename(basename, location) {\n if (!basename) return location;\n\n return {\n ...location,\n pathname: addLeadingSlash(basename) + location.pathname\n };\n}\n\nfunction stripBasename(basename, location) {\n if (!basename) return location;\n\n const base = addLeadingSlash(basename);\n\n if (location.pathname.indexOf(base) !== 0) return location;\n\n return {\n ...location,\n pathname: location.pathname.substr(base.length)\n };\n}\n\nfunction createURL(location) {\n return typeof location === \"string\" ? location : createPath(location);\n}\n\nfunction staticHandler(methodName) {\n return () => {\n invariant(false, \"You cannot %s with <StaticRouter>\", methodName);\n };\n}\n\nfunction noop() {}\n\n/**\n * The public top-level API for a \"static\" <Router>, so-called because it\n * can't actually change the current location. Instead, it just records\n * location changes in a context object. Useful mainly in testing and\n * server-rendering scenarios.\n */\nclass StaticRouter extends React.Component {\n navigateTo(location, action) {\n const { basename = \"\", context = {} } = this.props;\n context.action = action;\n context.location = addBasename(basename, createLocation(location));\n context.url = createURL(context.location);\n }\n\n handlePush = location => this.navigateTo(location, \"PUSH\");\n handleReplace = location => this.navigateTo(location, \"REPLACE\");\n handleListen = () => noop;\n handleBlock = () => noop;\n\n render() {\n const { basename = \"\", context = {}, location = \"/\", ...rest } = this.props;\n\n const history = {\n createHref: path => addLeadingSlash(basename + createURL(path)),\n action: \"POP\",\n location: stripBasename(basename, createLocation(location)),\n push: this.handlePush,\n replace: this.handleReplace,\n go: staticHandler(\"go\"),\n goBack: staticHandler(\"goBack\"),\n goForward: staticHandler(\"goForward\"),\n listen: this.handleListen,\n block: this.handleBlock\n };\n\n return <Router {...rest} history={history} staticContext={context} />;\n }\n}\n\nif (__DEV__) {\n StaticRouter.propTypes = {\n basename: PropTypes.string,\n context: PropTypes.object,\n location: PropTypes.oneOfType([PropTypes.string, PropTypes.object])\n };\n\n StaticRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \"<StaticRouter> ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { StaticRouter as Router }`.\"\n );\n };\n}\n\nexport default StaticRouter;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport RouterContext from \"./RouterContext.js\";\nimport matchPath from \"./matchPath.js\";\n\n/**\n * The public API for rendering the first <Route> that matches.\n */\nclass Switch extends React.Component {\n render() {\n return (\n <RouterContext.Consumer>\n {context => {\n invariant(context, \"You should not use <Switch> outside a <Router>\");\n\n const location = this.props.location || context.location;\n\n let element, match;\n\n // We use React.Children.forEach instead of React.Children.toArray().find()\n // here because toArray adds keys to all child elements and we do not want\n // to trigger an unmount/remount for two <Route>s that render the same\n // component at different URLs.\n React.Children.forEach(this.props.children, child => {\n if (match == null && React.isValidElement(child)) {\n element = child;\n\n const path = child.props.path || child.props.from;\n\n match = path\n ? matchPath(location.pathname, { ...child.props, path })\n : context.match;\n }\n });\n\n return match\n ? React.cloneElement(element, { location, computedMatch: match })\n : null;\n }}\n </RouterContext.Consumer>\n );\n }\n}\n\nif (__DEV__) {\n Switch.propTypes = {\n children: PropTypes.node,\n location: PropTypes.object\n };\n\n Switch.prototype.componentDidUpdate = function(prevProps) {\n warning(\n !(this.props.location && !prevProps.location),\n '<Switch> elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.'\n );\n\n warning(\n !(!this.props.location && prevProps.location),\n '<Switch> elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.'\n );\n };\n}\n\nexport default Switch;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport hoistStatics from \"hoist-non-react-statics\";\nimport invariant from \"tiny-invariant\";\n\nimport RouterContext from \"./RouterContext.js\";\n\n/**\n * A public higher-order component to access the imperative API\n */\nfunction withRouter(Component) {\n const displayName = `withRouter(${Component.displayName || Component.name})`;\n const C = props => {\n const { wrappedComponentRef, ...remainingProps } = props;\n\n return (\n <RouterContext.Consumer>\n {context => {\n invariant(\n context,\n `You should not use <${displayName} /> outside a <Router>`\n );\n return (\n <Component\n {...remainingProps}\n {...context}\n ref={wrappedComponentRef}\n />\n );\n }}\n </RouterContext.Consumer>\n );\n };\n\n C.displayName = displayName;\n C.WrappedComponent = Component;\n\n if (__DEV__) {\n C.propTypes = {\n wrappedComponentRef: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.func,\n PropTypes.object\n ])\n };\n }\n\n return hoistStatics(C, Component);\n}\n\nexport default withRouter;\n","import React from \"react\";\nimport invariant from \"tiny-invariant\";\n\nimport RouterContext from \"./RouterContext.js\";\nimport HistoryContext from \"./HistoryContext.js\";\nimport matchPath from \"./matchPath.js\";\n\nconst useContext = React.useContext;\n\nexport function useHistory() {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useHistory()\"\n );\n }\n\n return useContext(HistoryContext);\n}\n\nexport function useLocation() {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useLocation()\"\n );\n }\n\n return useContext(RouterContext).location;\n}\n\nexport function useParams() {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useParams()\"\n );\n }\n\n const match = useContext(RouterContext).match;\n return match ? match.params : {};\n}\n\nexport function useRouteMatch(path) {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useRouteMatch()\"\n );\n }\n\n const location = useLocation();\n const match = useContext(RouterContext).match;\n return path ? matchPath(location.pathname, path) : match;\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\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","var isMergeableObject = function isMergeableObject(value) {\n\treturn isNonNullObject(value)\n\t\t&& !isSpecial(value)\n};\n\nfunction isNonNullObject(value) {\n\treturn !!value && typeof value === 'object'\n}\n\nfunction isSpecial(value) {\n\tvar stringValue = Object.prototype.toString.call(value);\n\n\treturn stringValue === '[object RegExp]'\n\t\t|| stringValue === '[object Date]'\n\t\t|| isReactElement(value)\n}\n\n// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25\nvar canUseSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;\n\nfunction isReactElement(value) {\n\treturn value.$$typeof === REACT_ELEMENT_TYPE\n}\n\nfunction emptyTarget(val) {\n\treturn Array.isArray(val) ? [] : {}\n}\n\nfunction cloneUnlessOtherwiseSpecified(value, options) {\n\treturn (options.clone !== false && options.isMergeableObject(value))\n\t\t? deepmerge(emptyTarget(value), value, options)\n\t\t: value\n}\n\nfunction defaultArrayMerge(target, source, options) {\n\treturn target.concat(source).map(function(element) {\n\t\treturn cloneUnlessOtherwiseSpecified(element, options)\n\t})\n}\n\nfunction mergeObject(target, source, options) {\n\tvar destination = {};\n\tif (options.isMergeableObject(target)) {\n\t\tObject.keys(target).forEach(function(key) {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(target[key], options);\n\t\t});\n\t}\n\tObject.keys(source).forEach(function(key) {\n\t\tif (!options.isMergeableObject(source[key]) || !target[key]) {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(source[key], options);\n\t\t} else {\n\t\t\tdestination[key] = deepmerge(target[key], source[key], options);\n\t\t}\n\t});\n\treturn destination\n}\n\nfunction deepmerge(target, source, options) {\n\toptions = options || {};\n\toptions.arrayMerge = options.arrayMerge || defaultArrayMerge;\n\toptions.isMergeableObject = options.isMergeableObject || isMergeableObject;\n\n\tvar sourceIsArray = Array.isArray(source);\n\tvar targetIsArray = Array.isArray(target);\n\tvar sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n\n\tif (!sourceAndTargetTypesMatch) {\n\t\treturn cloneUnlessOtherwiseSpecified(source, options)\n\t} else if (sourceIsArray) {\n\t\treturn options.arrayMerge(target, source, options)\n\t} else {\n\t\treturn mergeObject(target, source, options)\n\t}\n}\n\ndeepmerge.all = function deepmergeAll(array, options) {\n\tif (!Array.isArray(array)) {\n\t\tthrow new Error('first argument should be an array')\n\t}\n\n\treturn array.reduce(function(prev, next) {\n\t\treturn deepmerge(prev, next, options)\n\t}, {})\n};\n\nvar deepmerge_1 = deepmerge;\n\nexport default deepmerge_1;\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 * 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 * 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\nexport default 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\nexport default eq;\n","import eq from './eq.js';\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\nexport default assocIndexOf;\n","import assocIndexOf from './_assocIndexOf.js';\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\nexport default listCacheDelete;\n","import assocIndexOf from './_assocIndexOf.js';\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\nexport default listCacheGet;\n","import assocIndexOf from './_assocIndexOf.js';\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\nexport default listCacheHas;\n","import assocIndexOf from './_assocIndexOf.js';\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\nexport default listCacheSet;\n","import listCacheClear from './_listCacheClear.js';\nimport listCacheDelete from './_listCacheDelete.js';\nimport listCacheGet from './_listCacheGet.js';\nimport listCacheHas from './_listCacheHas.js';\nimport listCacheSet from './_listCacheSet.js';\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\nexport default ListCache;\n","import ListCache from './_ListCache.js';\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\nexport default 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\nexport default 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\nexport default 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\nexport default stackHas;\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","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","/**\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 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","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';\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nexport default nativeCreate;\n","import nativeCreate from './_nativeCreate.js';\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\nexport default 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\nexport default hashDelete;\n","import nativeCreate from './_nativeCreate.js';\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\nexport default hashGet;\n","import nativeCreate from './_nativeCreate.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 * 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\nexport default hashHas;\n","import nativeCreate from './_nativeCreate.js';\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\nexport default hashSet;\n","import hashClear from './_hashClear.js';\nimport hashDelete from './_hashDelete.js';\nimport hashGet from './_hashGet.js';\nimport hashHas from './_hashHas.js';\nimport hashSet from './_hashSet.js';\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\nexport default Hash;\n","import Hash from './_Hash.js';\nimport ListCache from './_ListCache.js';\nimport Map from './_Map.js';\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\nexport default 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\nexport default isKeyable;\n","import isKeyable from './_isKeyable.js';\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\nexport default getMapData;\n","import getMapData from './_getMapData.js';\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\nexport default mapCacheDelete;\n","import getMapData from './_getMapData.js';\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\nexport default mapCacheGet;\n","import getMapData from './_getMapData.js';\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\nexport default mapCacheHas;\n","import getMapData from './_getMapData.js';\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\nexport default mapCacheSet;\n","import mapCacheClear from './_mapCacheClear.js';\nimport mapCacheDelete from './_mapCacheDelete.js';\nimport mapCacheGet from './_mapCacheGet.js';\nimport mapCacheHas from './_mapCacheHas.js';\nimport mapCacheSet from './_mapCacheSet.js';\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\nexport default MapCache;\n","import ListCache from './_ListCache.js';\nimport Map from './_Map.js';\nimport MapCache from './_MapCache.js';\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\nexport default stackSet;\n","import ListCache from './_ListCache.js';\nimport stackClear from './_stackClear.js';\nimport stackDelete from './_stackDelete.js';\nimport stackGet from './_stackGet.js';\nimport stackHas from './_stackHas.js';\nimport stackSet from './_stackSet.js';\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\nexport default Stack;\n","/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\nexport default arrayEach;\n","import getNative from './_getNative.js';\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nexport default defineProperty;\n","import defineProperty from './_defineProperty.js';\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\nexport default baseAssignValue;\n","import baseAssignValue from './_baseAssignValue.js';\nimport eq from './eq.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 * 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\nexport default assignValue;\n","import assignValue from './_assignValue.js';\nimport baseAssignValue from './_baseAssignValue.js';\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\nexport default copyObject;\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","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","/**\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","/** 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\nexport default 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\nexport default isLength;\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","/**\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 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","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","/** 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 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","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 copyObject from './_copyObject.js';\nimport keys from './keys.js';\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n}\n\nexport default baseAssign;\n","/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default nativeKeysIn;\n","import isObject from './isObject.js';\nimport isPrototype from './_isPrototype.js';\nimport nativeKeysIn from './_nativeKeysIn.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 `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default baseKeysIn;\n","import arrayLikeKeys from './_arrayLikeKeys.js';\nimport baseKeysIn from './_baseKeysIn.js';\nimport isArrayLike from './isArrayLike.js';\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nexport default keysIn;\n","import copyObject from './_copyObject.js';\nimport keysIn from './keysIn.js';\n\n/**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n}\n\nexport default baseAssignIn;\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\nexport default copyArray;\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\nexport default 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\nexport default stubArray;\n","import arrayFilter from './_arrayFilter.js';\nimport stubArray from './stubArray.js';\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\nexport default getSymbols;\n","import copyObject from './_copyObject.js';\nimport getSymbols from './_getSymbols.js';\n\n/**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n}\n\nexport default copySymbols;\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\nexport default arrayPush;\n","import arrayPush from './_arrayPush.js';\nimport getPrototype from './_getPrototype.js';\nimport getSymbols from './_getSymbols.js';\nimport stubArray from './stubArray.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n};\n\nexport default getSymbolsIn;\n","import copyObject from './_copyObject.js';\nimport getSymbolsIn from './_getSymbolsIn.js';\n\n/**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n}\n\nexport default copySymbolsIn;\n","import arrayPush from './_arrayPush.js';\nimport isArray from './isArray.js';\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\nexport default baseGetAllKeys;\n","import baseGetAllKeys from './_baseGetAllKeys.js';\nimport getSymbols from './_getSymbols.js';\nimport keys from './keys.js';\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\nexport default getAllKeys;\n","import baseGetAllKeys from './_baseGetAllKeys.js';\nimport getSymbolsIn from './_getSymbolsIn.js';\nimport keysIn from './keysIn.js';\n\n/**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n}\n\nexport default getAllKeysIn;\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 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","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n}\n\nexport default initCloneArray;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nexport default Uint8Array;\n","import Uint8Array from './_Uint8Array.js';\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\nexport default cloneArrayBuffer;\n","import cloneArrayBuffer from './_cloneArrayBuffer.js';\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\nexport default cloneDataView;\n","/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\n\nexport default cloneRegExp;\n","import Symbol from './_Symbol.js';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\nexport default cloneSymbol;\n","import cloneArrayBuffer from './_cloneArrayBuffer.js';\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nexport default cloneTypedArray;\n","import cloneArrayBuffer from './_cloneArrayBuffer.js';\nimport cloneDataView from './_cloneDataView.js';\nimport cloneRegExp from './_cloneRegExp.js';\nimport cloneSymbol from './_cloneSymbol.js';\nimport cloneTypedArray from './_cloneTypedArray.js';\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n}\n\nexport default initCloneByTag;\n","import isObject from './isObject.js';\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\nexport default baseCreate;\n","import baseCreate from './_baseCreate.js';\nimport getPrototype from './_getPrototype.js';\nimport isPrototype from './_isPrototype.js';\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\nexport default initCloneObject;\n","import getTag from './_getTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]';\n\n/**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\nfunction baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n}\n\nexport default baseIsMap;\n","import baseIsMap from './_baseIsMap.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsMap = nodeUtil && nodeUtil.isMap;\n\n/**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\nvar isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\nexport default isMap;\n","import getTag from './_getTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar setTag = '[object Set]';\n\n/**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\nfunction baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n}\n\nexport default baseIsSet;\n","import baseIsSet from './_baseIsSet.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsSet = nodeUtil && nodeUtil.isSet;\n\n/**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\nvar isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\nexport default isSet;\n","import Stack from './_Stack.js';\nimport arrayEach from './_arrayEach.js';\nimport assignValue from './_assignValue.js';\nimport baseAssign from './_baseAssign.js';\nimport baseAssignIn from './_baseAssignIn.js';\nimport cloneBuffer from './_cloneBuffer.js';\nimport copyArray from './_copyArray.js';\nimport copySymbols from './_copySymbols.js';\nimport copySymbolsIn from './_copySymbolsIn.js';\nimport getAllKeys from './_getAllKeys.js';\nimport getAllKeysIn from './_getAllKeysIn.js';\nimport getTag from './_getTag.js';\nimport initCloneArray from './_initCloneArray.js';\nimport initCloneByTag from './_initCloneByTag.js';\nimport initCloneObject from './_initCloneObject.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isMap from './isMap.js';\nimport isObject from './isObject.js';\nimport isSet from './isSet.js';\nimport keys from './keys.js';\nimport keysIn from './keysIn.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n}\n\nexport default baseClone;\n","import baseClone from './_baseClone.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\nfunction cloneDeep(value) {\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n}\n\nexport default cloneDeep;\n","import baseClone from './_baseClone.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\nfunction clone(value) {\n return baseClone(value, CLONE_SYMBOLS_FLAG);\n}\n\nexport default clone;\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 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 MapCache from './_MapCache.js';\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\nexport default memoize;\n","import memoize from './memoize.js';\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\nexport default memoizeCapped;\n","import memoizeCapped from './_memoizeCapped.js';\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\nexport default stringToPath;\n","import isSymbol from './isSymbol.js';\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\nexport default toKey;\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 arrayMap from './_arrayMap.js';\nimport copyArray from './_copyArray.js';\nimport isArray from './isArray.js';\nimport isSymbol from './isSymbol.js';\nimport stringToPath from './_stringToPath.js';\nimport toKey from './_toKey.js';\nimport toString from './toString.js';\n\n/**\n * Converts `value` to a property path array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {*} value The value to convert.\n * @returns {Array} Returns the new property path array.\n * @example\n *\n * _.toPath('a.b.c');\n * // => ['a', 'b', 'c']\n *\n * _.toPath('a[0].b.c');\n * // => ['a', '0', 'b', 'c']\n */\nfunction toPath(value) {\n if (isArray(value)) {\n return arrayMap(value, toKey);\n }\n return isSymbol(value) ? [value] : copyArray(stringToPath(toString(value)));\n}\n\nexport default toPath;\n","import * as React from 'react';\nimport { FormikContextType } from './types';\nimport invariant from 'tiny-warning';\n\nexport const FormikContext = React.createContext<FormikContextType<any>>(\n undefined as any\n);\nFormikContext.displayName = 'FormikContext';\n\nexport const FormikProvider = FormikContext.Provider;\nexport const FormikConsumer = FormikContext.Consumer;\n\nexport function useFormikContext<Values>() {\n const formik = React.useContext<FormikContextType<Values>>(FormikContext);\n\n invariant(\n !!formik,\n `Formik context is undefined, please verify you are calling useFormikContext() as child of a <Formik> component.`\n );\n\n return formik;\n}\n","import deepmerge from 'deepmerge';\nimport isPlainObject from 'lodash/isPlainObject';\nimport cloneDeep from 'lodash/cloneDeep';\nimport * as React from 'react';\nimport isEqual from 'react-fast-compare';\nimport invariant from 'tiny-warning';\nimport { FieldConfig } from './Field';\nimport { FormikProvider } from './FormikContext';\nimport {\n FieldHelperProps,\n FieldInputProps,\n FieldMetaProps,\n FormikConfig,\n FormikErrors,\n FormikHandlers,\n FormikHelpers,\n FormikProps,\n FormikState,\n FormikTouched,\n FormikValues,\n} from './types';\nimport {\n getActiveElement,\n getIn,\n isEmptyChildren,\n isFunction,\n isObject,\n isPromise,\n isString,\n setIn,\n setNestedObjectValues,\n} from './utils';\n\ntype FormikMessage<Values> =\n | { type: 'SUBMIT_ATTEMPT' }\n | { type: 'SUBMIT_FAILURE' }\n | { type: 'SUBMIT_SUCCESS' }\n | { type: 'SET_ISVALIDATING'; payload: boolean }\n | { type: 'SET_ISSUBMITTING'; payload: boolean }\n | { type: 'SET_VALUES'; payload: Values }\n | { type: 'SET_FIELD_VALUE'; payload: { field: string; value?: any } }\n | { type: 'SET_FIELD_TOUCHED'; payload: { field: string; value?: boolean } }\n | { type: 'SET_FIELD_ERROR'; payload: { field: string; value?: string } }\n | { type: 'SET_TOUCHED'; payload: FormikTouched<Values> }\n | { type: 'SET_ERRORS'; payload: FormikErrors<Values> }\n | { type: 'SET_STATUS'; payload: any }\n | {\n type: 'SET_FORMIK_STATE';\n payload: (s: FormikState<Values>) => FormikState<Values>;\n }\n | {\n type: 'RESET_FORM';\n payload: FormikState<Values>;\n };\n\n// State reducer\nfunction formikReducer<Values>(\n state: FormikState<Values>,\n msg: FormikMessage<Values>\n) {\n switch (msg.type) {\n case 'SET_VALUES':\n return { ...state, values: msg.payload };\n case 'SET_TOUCHED':\n return { ...state, touched: msg.payload };\n case 'SET_ERRORS':\n if (isEqual(state.errors, msg.payload)) {\n return state;\n }\n\n return { ...state, errors: msg.payload };\n case 'SET_STATUS':\n return { ...state, status: msg.payload };\n case 'SET_ISSUBMITTING':\n return { ...state, isSubmitting: msg.payload };\n case 'SET_ISVALIDATING':\n return { ...state, isValidating: msg.payload };\n case 'SET_FIELD_VALUE':\n return {\n ...state,\n values: setIn(state.values, msg.payload.field, msg.payload.value),\n };\n case 'SET_FIELD_TOUCHED':\n return {\n ...state,\n touched: setIn(state.touched, msg.payload.field, msg.payload.value),\n };\n case 'SET_FIELD_ERROR':\n return {\n ...state,\n errors: setIn(state.errors, msg.payload.field, msg.payload.value),\n };\n case 'RESET_FORM':\n return { ...state, ...msg.payload };\n case 'SET_FORMIK_STATE':\n return msg.payload(state);\n case 'SUBMIT_ATTEMPT':\n return {\n ...state,\n touched: setNestedObjectValues<FormikTouched<Values>>(\n state.values,\n true\n ),\n isSubmitting: true,\n submitCount: state.submitCount + 1,\n };\n case 'SUBMIT_FAILURE':\n return {\n ...state,\n isSubmitting: false,\n };\n case 'SUBMIT_SUCCESS':\n return {\n ...state,\n isSubmitting: false,\n };\n default:\n return state;\n }\n}\n\n// Initial empty states // objects\nconst emptyErrors: FormikErrors<unknown> = {};\nconst emptyTouched: FormikTouched<unknown> = {};\n\n// This is an object that contains a map of all registered fields\n// and their validate functions\ninterface FieldRegistry {\n [field: string]: {\n validate: (value: any) => string | Promise<string> | undefined;\n };\n}\n\nexport function useFormik<Values extends FormikValues = FormikValues>({\n validateOnChange = true,\n validateOnBlur = true,\n validateOnMount = false,\n isInitialValid,\n enableReinitialize = false,\n onSubmit,\n ...rest\n}: FormikConfig<Values>) {\n const props = {\n validateOnChange,\n validateOnBlur,\n validateOnMount,\n onSubmit,\n ...rest,\n };\n const initialValues = React.useRef(props.initialValues);\n const initialErrors = React.useRef(props.initialErrors || emptyErrors);\n const initialTouched = React.useRef(props.initialTouched || emptyTouched);\n const initialStatus = React.useRef(props.initialStatus);\n const isMounted = React.useRef<boolean>(false);\n const fieldRegistry = React.useRef<FieldRegistry>({});\n if (__DEV__) {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useEffect(() => {\n invariant(\n typeof isInitialValid === 'undefined',\n 'isInitialValid has been deprecated and will be removed in future versions of Formik. Please use initialErrors or validateOnMount instead.'\n );\n // eslint-disable-next-line\n }, []);\n }\n\n React.useEffect(() => {\n isMounted.current = true;\n\n return () => {\n isMounted.current = false;\n };\n }, []);\n\n const [, setIteration] = React.useState(0);\n const stateRef = React.useRef<FormikState<Values>>({\n values: cloneDeep(props.initialValues),\n errors: cloneDeep(props.initialErrors) || emptyErrors,\n touched: cloneDeep(props.initialTouched) || emptyTouched,\n status: cloneDeep(props.initialStatus),\n isSubmitting: false,\n isValidating: false,\n submitCount: 0,\n });\n\n const state = stateRef.current;\n\n const dispatch = React.useCallback((action: FormikMessage<Values>) => {\n const prev = stateRef.current;\n\n stateRef.current = formikReducer(prev, action);\n\n // force rerender\n if (prev !== stateRef.current) setIteration(x => x + 1);\n }, []);\n\n const runValidateHandler = React.useCallback(\n (values: Values, field?: string): Promise<FormikErrors<Values>> => {\n return new Promise((resolve, reject) => {\n const maybePromisedErrors = (props.validate as any)(values, field);\n if (maybePromisedErrors == null) {\n // use loose null check here on purpose\n resolve(emptyErrors);\n } else if (isPromise(maybePromisedErrors)) {\n (maybePromisedErrors as Promise<any>).then(\n errors => {\n resolve(errors || emptyErrors);\n },\n actualException => {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\n `Warning: An unhandled error was caught during validation in <Formik validate />`,\n actualException\n );\n }\n\n reject(actualException);\n }\n );\n } else {\n resolve(maybePromisedErrors);\n }\n });\n },\n [props.validate]\n );\n\n /**\n * Run validation against a Yup schema and optionally run a function if successful\n */\n const runValidationSchema = React.useCallback(\n (values: Values, field?: string): Promise<FormikErrors<Values>> => {\n const validationSchema = props.validationSchema;\n const schema = isFunction(validationSchema)\n ? validationSchema(field)\n : validationSchema;\n const promise =\n field && schema.validateAt\n ? schema.validateAt(field, values)\n : validateYupSchema(values, schema);\n return new Promise((resolve, reject) => {\n promise.then(\n () => {\n resolve(emptyErrors);\n },\n (err: any) => {\n // Yup will throw a validation error if validation fails. We catch those and\n // resolve them into Formik errors. We can sniff if something is a Yup error\n // by checking error.name.\n // @see https://github.com/jquense/yup#validationerrorerrors-string--arraystring-value-any-path-string\n if (err.name === 'ValidationError') {\n resolve(yupToFormErrors(err));\n } else {\n // We throw any other errors\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\n `Warning: An unhandled error was caught during validation in <Formik validationSchema />`,\n err\n );\n }\n\n reject(err);\n }\n }\n );\n });\n },\n [props.validationSchema]\n );\n\n const runSingleFieldLevelValidation = React.useCallback(\n (field: string, value: void | string): Promise<string> => {\n return new Promise(resolve =>\n resolve(fieldRegistry.current[field].validate(value) as string)\n );\n },\n []\n );\n\n const runFieldLevelValidations = React.useCallback(\n (values: Values): Promise<FormikErrors<Values>> => {\n const fieldKeysWithValidation: string[] = Object.keys(\n fieldRegistry.current\n ).filter(f => isFunction(fieldRegistry.current[f].validate));\n\n // Construct an array with all of the field validation functions\n const fieldValidations: Promise<string>[] =\n fieldKeysWithValidation.length > 0\n ? fieldKeysWithValidation.map(f =>\n runSingleFieldLevelValidation(f, getIn(values, f))\n )\n : [Promise.resolve('DO_NOT_DELETE_YOU_WILL_BE_FIRED')]; // use special case ;)\n\n return Promise.all(fieldValidations).then((fieldErrorsList: string[]) =>\n fieldErrorsList.reduce((prev, curr, index) => {\n if (curr === 'DO_NOT_DELETE_YOU_WILL_BE_FIRED') {\n return prev;\n }\n if (curr) {\n prev = setIn(prev, fieldKeysWithValidation[index], curr);\n }\n return prev;\n }, {})\n );\n },\n [runSingleFieldLevelValidation]\n );\n\n // Run all validations and return the result\n const runAllValidations = React.useCallback(\n (values: Values) => {\n return Promise.all([\n runFieldLevelValidations(values),\n props.validationSchema ? runValidationSchema(values) : {},\n props.validate ? runValidateHandler(values) : {},\n ]).then(([fieldErrors, schemaErrors, validateErrors]) => {\n const combinedErrors = deepmerge.all<FormikErrors<Values>>(\n [fieldErrors, schemaErrors, validateErrors],\n { arrayMerge }\n );\n return combinedErrors;\n });\n },\n [\n props.validate,\n props.validationSchema,\n runFieldLevelValidations,\n runValidateHandler,\n runValidationSchema,\n ]\n );\n\n // Run all validations methods and update state accordingly\n const validateFormWithHighPriority = useEventCallback(\n (values: Values = state.values) => {\n dispatch({ type: 'SET_ISVALIDATING', payload: true });\n return runAllValidations(values).then(combinedErrors => {\n if (!!isMounted.current) {\n dispatch({ type: 'SET_ISVALIDATING', payload: false });\n dispatch({ type: 'SET_ERRORS', payload: combinedErrors });\n }\n return combinedErrors;\n });\n }\n );\n\n React.useEffect(() => {\n if (\n validateOnMount &&\n isMounted.current === true &&\n isEqual(initialValues.current, props.initialValues)\n ) {\n validateFormWithHighPriority(initialValues.current);\n }\n }, [validateOnMount, validateFormWithHighPriority]);\n\n const resetForm = React.useCallback(\n (nextState?: Partial<FormikState<Values>>) => {\n const values =\n nextState && nextState.values\n ? nextState.values\n : initialValues.current;\n const errors =\n nextState && nextState.errors\n ? nextState.errors\n : initialErrors.current\n ? initialErrors.current\n : props.initialErrors || {};\n const touched =\n nextState && nextState.touched\n ? nextState.touched\n : initialTouched.current\n ? initialTouched.current\n : props.initialTouched || {};\n const status =\n nextState && nextState.status\n ? nextState.status\n : initialStatus.current\n ? initialStatus.current\n : props.initialStatus;\n initialValues.current = values;\n initialErrors.current = errors;\n initialTouched.current = touched;\n initialStatus.current = status;\n\n const dispatchFn = () => {\n dispatch({\n type: 'RESET_FORM',\n payload: {\n isSubmitting: !!nextState && !!nextState.isSubmitting,\n errors,\n touched,\n status,\n values,\n isValidating: !!nextState && !!nextState.isValidating,\n submitCount:\n !!nextState &&\n !!nextState.submitCount &&\n typeof nextState.submitCount === 'number'\n ? nextState.submitCount\n : 0,\n },\n });\n };\n\n if (props.onReset) {\n const maybePromisedOnReset = (props.onReset as any)(\n state.values,\n imperativeMethods\n );\n\n if (isPromise(maybePromisedOnReset)) {\n (maybePromisedOnReset as Promise<any>).then(dispatchFn);\n } else {\n dispatchFn();\n }\n } else {\n dispatchFn();\n }\n },\n [props.initialErrors, props.initialStatus, props.initialTouched, props.onReset]\n );\n\n React.useEffect(() => {\n if (\n isMounted.current === true &&\n !isEqual(initialValues.current, props.initialValues)\n ) {\n if (enableReinitialize) {\n initialValues.current = props.initialValues;\n resetForm();\n if (validateOnMount) {\n validateFormWithHighPriority(initialValues.current);\n }\n }\n }\n }, [\n enableReinitialize,\n props.initialValues,\n resetForm,\n validateOnMount,\n validateFormWithHighPriority,\n ]);\n\n React.useEffect(() => {\n if (\n enableReinitialize &&\n isMounted.current === true &&\n !isEqual(initialErrors.current, props.initialErrors)\n ) {\n initialErrors.current = props.initialErrors || emptyErrors;\n dispatch({\n type: 'SET_ERRORS',\n payload: props.initialErrors || emptyErrors,\n });\n }\n }, [enableReinitialize, props.initialErrors]);\n\n React.useEffect(() => {\n if (\n enableReinitialize &&\n isMounted.current === true &&\n !isEqual(initialTouched.current, props.initialTouched)\n ) {\n initialTouched.current = props.initialTouched || emptyTouched;\n dispatch({\n type: 'SET_TOUCHED',\n payload: props.initialTouched || emptyTouched,\n });\n }\n }, [enableReinitialize, props.initialTouched]);\n\n React.useEffect(() => {\n if (\n enableReinitialize &&\n isMounted.current === true &&\n !isEqual(initialStatus.current, props.initialStatus)\n ) {\n initialStatus.current = props.initialStatus;\n dispatch({\n type: 'SET_STATUS',\n payload: props.initialStatus,\n });\n }\n }, [enableReinitialize, props.initialStatus, props.initialTouched]);\n\n const validateField = useEventCallback((name: string) => {\n // This will efficiently validate a single field by avoiding state\n // changes if the validation function is synchronous. It's different from\n // what is called when using validateForm.\n\n if (\n fieldRegistry.current[name] &&\n isFunction(fieldRegistry.current[name].validate)\n ) {\n const value = getIn(state.values, name);\n const maybePromise = fieldRegistry.current[name].validate(value);\n if (isPromise(maybePromise)) {\n // Only flip isValidating if the function is async.\n dispatch({ type: 'SET_ISVALIDATING', payload: true });\n return maybePromise\n .then((x: any) => x)\n .then((error: string) => {\n dispatch({\n type: 'SET_FIELD_ERROR',\n payload: { field: name, value: error },\n });\n dispatch({ type: 'SET_ISVALIDATING', payload: false });\n });\n } else {\n dispatch({\n type: 'SET_FIELD_ERROR',\n payload: {\n field: name,\n value: maybePromise as string | undefined,\n },\n });\n return Promise.resolve(maybePromise as string | undefined);\n }\n } else if (props.validationSchema) {\n dispatch({ type: 'SET_ISVALIDATING', payload: true });\n return runValidationSchema(state.values, name)\n .then((x: any) => x)\n .then((error: any) => {\n dispatch({\n type: 'SET_FIELD_ERROR',\n payload: { field: name, value: getIn(error, name) },\n });\n dispatch({ type: 'SET_ISVALIDATING', payload: false });\n });\n }\n\n return Promise.resolve();\n });\n\n const registerField = React.useCallback((name: string, { validate }: any) => {\n fieldRegistry.current[name] = {\n validate,\n };\n }, []);\n\n const unregisterField = React.useCallback((name: string) => {\n delete fieldRegistry.current[name];\n }, []);\n\n const setTouched = useEventCallback(\n (touched: FormikTouched<Values>, shouldValidate?: boolean) => {\n dispatch({ type: 'SET_TOUCHED', payload: touched });\n const willValidate =\n shouldValidate === undefined ? validateOnBlur : shouldValidate;\n return willValidate\n ? validateFormWithHighPriority(state.values)\n : Promise.resolve();\n }\n );\n\n const setErrors = React.useCallback((errors: FormikErrors<Values>) => {\n dispatch({ type: 'SET_ERRORS', payload: errors });\n }, []);\n\n const setValues = useEventCallback(\n (values: React.SetStateAction<Values>, shouldValidate?: boolean) => {\n const resolvedValues = isFunction(values) ? values(state.values) : values;\n\n dispatch({ type: 'SET_VALUES', payload: resolvedValues });\n const willValidate =\n shouldValidate === undefined ? validateOnChange : shouldValidate;\n return willValidate\n ? validateFormWithHighPriority(resolvedValues)\n : Promise.resolve();\n }\n );\n\n const setFieldError = React.useCallback(\n (field: string, value: string | undefined) => {\n dispatch({\n type: 'SET_FIELD_ERROR',\n payload: { field, value },\n });\n },\n []\n );\n\n const setFieldValue = useEventCallback(\n (field: string, value: any, shouldValidate?: boolean) => {\n dispatch({\n type: 'SET_FIELD_VALUE',\n payload: {\n field,\n value,\n },\n });\n const willValidate =\n shouldValidate === undefined ? validateOnChange : shouldValidate;\n return willValidate\n ? validateFormWithHighPriority(setIn(state.values, field, value))\n : Promise.resolve();\n }\n );\n\n const executeChange = React.useCallback(\n (eventOrTextValue: string | React.ChangeEvent<any>, maybePath?: string) => {\n // By default, assume that the first argument is a string. This allows us to use\n // handleChange with React Native and React Native Web's onChangeText prop which\n // provides just the value of the input.\n let field = maybePath;\n let val = eventOrTextValue;\n let parsed;\n // If the first argument is not a string though, it has to be a synthetic React Event (or a fake one),\n // so we handle like we would a normal HTML change event.\n if (!isString(eventOrTextValue)) {\n // If we can, persist the event\n // @see https://reactjs.org/docs/events.html#event-pooling\n if ((eventOrTextValue as any).persist) {\n (eventOrTextValue as React.ChangeEvent<any>).persist();\n }\n const target = eventOrTextValue.target\n ? (eventOrTextValue as React.ChangeEvent<any>).target\n : (eventOrTextValue as React.ChangeEvent<any>).currentTarget;\n\n const {\n type,\n name,\n id,\n value,\n checked,\n outerHTML,\n options,\n multiple,\n } = target;\n\n field = maybePath ? maybePath : name ? name : id;\n if (!field && __DEV__) {\n warnAboutMissingIdentifier({\n htmlContent: outerHTML,\n documentationAnchorLink: 'handlechange-e-reactchangeeventany--void',\n handlerName: 'handleChange',\n });\n }\n val = /number|range/.test(type)\n ? ((parsed = parseFloat(value)), isNaN(parsed) ? '' : parsed)\n : /checkbox/.test(type) // checkboxes\n ? getValueForCheckbox(getIn(state.values, field!), checked, value)\n : options && multiple // <select multiple>\n ? getSelectedValues(options)\n : value;\n }\n\n if (field) {\n // Set form fields by name\n setFieldValue(field, val);\n }\n },\n [setFieldValue, state.values]\n );\n\n const handleChange = useEventCallback<FormikHandlers['handleChange']>(\n (\n eventOrPath: string | React.ChangeEvent<any>\n ): void | ((eventOrTextValue: string | React.ChangeEvent<any>) => void) => {\n if (isString(eventOrPath)) {\n return event => executeChange(event, eventOrPath);\n } else {\n executeChange(eventOrPath);\n }\n }\n );\n\n const setFieldTouched = useEventCallback(\n (field: string, touched: boolean = true, shouldValidate?: boolean) => {\n dispatch({\n type: 'SET_FIELD_TOUCHED',\n payload: {\n field,\n value: touched,\n },\n });\n const willValidate =\n shouldValidate === undefined ? validateOnBlur : shouldValidate;\n return willValidate\n ? validateFormWithHighPriority(state.values)\n : Promise.resolve();\n }\n );\n\n const executeBlur = React.useCallback(\n (e: any, path?: string) => {\n if (e.persist) {\n e.persist();\n }\n const { name, id, outerHTML } = e.target;\n const field = path ? path : name ? name : id;\n\n if (!field && __DEV__) {\n warnAboutMissingIdentifier({\n htmlContent: outerHTML,\n documentationAnchorLink: 'handleblur-e-any--void',\n handlerName: 'handleBlur',\n });\n }\n\n setFieldTouched(field, true);\n },\n [setFieldTouched]\n );\n\n const handleBlur = useEventCallback<FormikHandlers['handleBlur']>(\n (eventOrString: any): void | ((e: any) => void) => {\n if (isString(eventOrString)) {\n return event => executeBlur(event, eventOrString);\n } else {\n executeBlur(eventOrString);\n }\n }\n );\n\n const setFormikState = React.useCallback(\n (\n stateOrCb:\n | FormikState<Values>\n | ((state: FormikState<Values>) => FormikState<Values>)\n ): void => {\n if (isFunction(stateOrCb)) {\n dispatch({ type: 'SET_FORMIK_STATE', payload: stateOrCb });\n } else {\n dispatch({ type: 'SET_FORMIK_STATE', payload: () => stateOrCb });\n }\n },\n []\n );\n\n const setStatus = React.useCallback((status: any) => {\n dispatch({ type: 'SET_STATUS', payload: status });\n }, []);\n\n const setSubmitting = React.useCallback((isSubmitting: boolean) => {\n dispatch({ type: 'SET_ISSUBMITTING', payload: isSubmitting });\n }, []);\n\n const submitForm = useEventCallback(() => {\n dispatch({ type: 'SUBMIT_ATTEMPT' });\n return validateFormWithHighPriority().then(\n (combinedErrors: FormikErrors<Values>) => {\n // In case an error was thrown and passed to the resolved Promise,\n // `combinedErrors` can be an instance of an Error. We need to check\n // that and abort the submit.\n // If we don't do that, calling `Object.keys(new Error())` yields an\n // empty array, which causes the validation to pass and the form\n // to be submitted.\n\n const isInstanceOfError = combinedErrors instanceof Error;\n const isActuallyValid =\n !isInstanceOfError && Object.keys(combinedErrors).length === 0;\n if (isActuallyValid) {\n // Proceed with submit...\n //\n // To respect sync submit fns, we can't simply wrap executeSubmit in a promise and\n // _always_ dispatch SUBMIT_SUCCESS because isSubmitting would then always be false.\n // This would be fine in simple cases, but make it impossible to disable submit\n // buttons where people use callbacks or promises as side effects (which is basically\n // all of v1 Formik code). Instead, recall that we are inside of a promise chain already,\n // so we can try/catch executeSubmit(), if it returns undefined, then just bail.\n // If there are errors, throw em. Otherwise, wrap executeSubmit in a promise and handle\n // cleanup of isSubmitting on behalf of the consumer.\n let promiseOrUndefined;\n try {\n promiseOrUndefined = executeSubmit();\n // Bail if it's sync, consumer is responsible for cleaning up\n // via setSubmitting(false)\n if (promiseOrUndefined === undefined) {\n return;\n }\n } catch (error) {\n throw error;\n }\n\n return Promise.resolve(promiseOrUndefined)\n .then(result => {\n if (!!isMounted.current) {\n dispatch({ type: 'SUBMIT_SUCCESS' });\n }\n return result;\n })\n .catch(_errors => {\n if (!!isMounted.current) {\n dispatch({ type: 'SUBMIT_FAILURE' });\n // This is a legit error rejected by the onSubmit fn\n // so we don't want to break the promise chain\n throw _errors;\n }\n });\n } else if (!!isMounted.current) {\n // ^^^ Make sure Formik is still mounted before updating state\n dispatch({ type: 'SUBMIT_FAILURE' });\n // throw combinedErrors;\n if (isInstanceOfError) {\n throw combinedErrors;\n }\n }\n return;\n }\n );\n });\n\n const handleSubmit = useEventCallback(\n (e?: React.FormEvent<HTMLFormElement>) => {\n if (e && e.preventDefault && isFunction(e.preventDefault)) {\n e.preventDefault();\n }\n\n if (e && e.stopPropagation && isFunction(e.stopPropagation)) {\n e.stopPropagation();\n }\n\n // Warn if form submission is triggered by a <button> without a\n // specified `type` attribute during development. This mitigates\n // a common gotcha in forms with both reset and submit buttons,\n // where the dev forgets to add type=\"button\" to the reset button.\n if (__DEV__ && typeof document !== 'undefined') {\n // Safely get the active element (works with IE)\n const activeElement = getActiveElement();\n if (\n activeElement !== null &&\n activeElement instanceof HTMLButtonElement\n ) {\n invariant(\n activeElement.attributes &&\n activeElement.attributes.getNamedItem('type'),\n 'You submitted a Formik form using a button with an unspecified `type` attribute. Most browsers default button elements to `type=\"submit\"`. If this is not a submit button, please add `type=\"button\"`.'\n );\n }\n }\n\n submitForm().catch(reason => {\n console.warn(\n `Warning: An unhandled error was caught from submitForm()`,\n reason\n );\n });\n }\n );\n\n const imperativeMethods: FormikHelpers<Values> = {\n resetForm,\n validateForm: validateFormWithHighPriority,\n validateField,\n setErrors,\n setFieldError,\n setFieldTouched,\n setFieldValue,\n setStatus,\n setSubmitting,\n setTouched,\n setValues,\n setFormikState,\n submitForm,\n };\n\n const executeSubmit = useEventCallback(() => {\n return onSubmit(state.values, imperativeMethods);\n });\n\n const handleReset = useEventCallback(e => {\n if (e && e.preventDefault && isFunction(e.preventDefault)) {\n e.preventDefault();\n }\n\n if (e && e.stopPropagation && isFunction(e.stopPropagation)) {\n e.stopPropagation();\n }\n\n resetForm();\n });\n\n const getFieldMeta = React.useCallback(\n (name: string): FieldMetaProps<any> => {\n return {\n value: getIn(state.values, name),\n error: getIn(state.errors, name),\n touched: !!getIn(state.touched, name),\n initialValue: getIn(initialValues.current, name),\n initialTouched: !!getIn(initialTouched.current, name),\n initialError: getIn(initialErrors.current, name),\n };\n },\n [state.errors, state.touched, state.values]\n );\n\n const getFieldHelpers = React.useCallback(\n (name: string): FieldHelperProps<any> => {\n return {\n setValue: (value: any, shouldValidate?: boolean) =>\n setFieldValue(name, value, shouldValidate),\n setTouched: (value: boolean, shouldValidate?: boolean) =>\n setFieldTouched(name, value, shouldValidate),\n setError: (value: any) => setFieldError(name, value),\n };\n },\n [setFieldValue, setFieldTouched, setFieldError]\n );\n\n const getFieldProps = React.useCallback(\n (nameOrOptions: string | FieldConfig<any>): FieldInputProps<any> => {\n const isAnObject = isObject(nameOrOptions);\n const name = isAnObject\n ? (nameOrOptions as FieldConfig<any>).name\n : nameOrOptions;\n const valueState = getIn(state.values, name);\n\n const field: FieldInputProps<any> = {\n name,\n value: valueState,\n onChange: handleChange,\n onBlur: handleBlur,\n };\n if (isAnObject) {\n const {\n type,\n value: valueProp, // value is special for checkboxes\n as: is,\n multiple,\n } = nameOrOptions as FieldConfig<any>;\n\n if (type === 'checkbox') {\n if (valueProp === undefined) {\n field.checked = !!valueState;\n } else {\n field.checked = !!(\n Array.isArray(valueState) && ~valueState.indexOf(valueProp)\n );\n field.value = valueProp;\n }\n } else if (type === 'radio') {\n field.checked = valueState === valueProp;\n field.value = valueProp;\n } else if (is === 'select' && multiple) {\n field.value = field.value || [];\n field.multiple = true;\n }\n }\n return field;\n },\n [handleBlur, handleChange, state.values]\n );\n\n const dirty = React.useMemo(\n () => !isEqual(initialValues.current, state.values),\n [initialValues.current, state.values]\n );\n\n const isValid = React.useMemo(\n () =>\n typeof isInitialValid !== 'undefined'\n ? dirty\n ? state.errors && Object.keys(state.errors).length === 0\n : isInitialValid !== false && isFunction(isInitialValid)\n ? (isInitialValid as (props: FormikConfig<Values>) => boolean)(props)\n : (isInitialValid as boolean)\n : state.errors && Object.keys(state.errors).length === 0,\n [isInitialValid, dirty, state.errors, props]\n );\n\n const ctx = {\n ...state,\n initialValues: initialValues.current,\n initialErrors: initialErrors.current,\n initialTouched: initialTouched.current,\n initialStatus: initialStatus.current,\n handleBlur,\n handleChange,\n handleReset,\n handleSubmit,\n resetForm,\n setErrors,\n setFormikState,\n setFieldTouched,\n setFieldValue,\n setFieldError,\n setStatus,\n setSubmitting,\n setTouched,\n setValues,\n submitForm,\n validateForm: validateFormWithHighPriority,\n validateField,\n isValid,\n dirty,\n unregisterField,\n registerField,\n getFieldProps,\n getFieldMeta,\n getFieldHelpers,\n validateOnBlur,\n validateOnChange,\n validateOnMount,\n };\n\n return ctx;\n}\n\nexport function Formik<\n Values extends FormikValues = FormikValues,\n ExtraProps = {}\n>(props: FormikConfig<Values> & ExtraProps) {\n const formikbag = useFormik<Values>(props);\n const { component, children, render, innerRef } = props;\n\n // This allows folks to pass a ref to <Formik />\n React.useImperativeHandle(innerRef, () => formikbag);\n\n if (__DEV__) {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useEffect(() => {\n invariant(\n !props.render,\n `<Formik render> has been deprecated and will be removed in future versions of Formik. Please use a child callback function instead. To get rid of this warning, replace <Formik render={(props) => ...} /> with <Formik>{(props) => ...}</Formik>`\n );\n // eslint-disable-next-line\n }, []);\n }\n return (\n <FormikProvider value={formikbag}>\n {component\n ? React.createElement(component as any, formikbag)\n : render\n ? render(formikbag)\n : children // children come last, always called\n ? isFunction(children)\n ? (children as (bag: FormikProps<Values>) => React.ReactNode)(\n formikbag as FormikProps<Values>\n )\n : !isEmptyChildren(children)\n ? React.Children.only(children)\n : null\n : null}\n </FormikProvider>\n );\n}\n\nfunction warnAboutMissingIdentifier({\n htmlContent,\n documentationAnchorLink,\n handlerName,\n}: {\n htmlContent: string;\n documentationAnchorLink: string;\n handlerName: string;\n}) {\n console.warn(\n `Warning: Formik called \\`${handlerName}\\`, but you forgot to pass an \\`id\\` or \\`name\\` attribute to your input:\n ${htmlContent}\n Formik cannot determine which value to update. For more info see https://formik.org/docs/api/formik#${documentationAnchorLink}\n `\n );\n}\n\n/**\n * Transform Yup ValidationError to a more usable object\n */\nexport function yupToFormErrors<Values>(yupError: any): FormikErrors<Values> {\n let errors: FormikErrors<Values> = {};\n if (yupError.inner) {\n if (yupError.inner.length === 0) {\n return setIn(errors, yupError.path, yupError.message);\n }\n for (let err of yupError.inner) {\n if (!getIn(errors, err.path)) {\n errors = setIn(errors, err.path, err.message);\n }\n }\n }\n return errors;\n}\n\n/**\n * Validate a yup schema.\n */\nexport function validateYupSchema<T extends FormikValues>(\n values: T,\n schema: any,\n sync: boolean = false,\n context?: any\n): Promise<Partial<T>> {\n const normalizedValues: FormikValues = prepareDataForValidation(values);\n\n return schema[sync ? 'validateSync' : 'validate'](normalizedValues, {\n abortEarly: false,\n context: context || normalizedValues,\n });\n}\n\n/**\n * Recursively prepare values.\n */\nexport function prepareDataForValidation<T extends FormikValues>(\n values: T\n): FormikValues {\n let data: FormikValues = Array.isArray(values) ? [] : {};\n for (let k in values) {\n if (Object.prototype.hasOwnProperty.call(values, k)) {\n const key = String(k);\n if (Array.isArray(values[key]) === true) {\n data[key] = values[key].map((value: any) => {\n if (Array.isArray(value) === true || isPlainObject(value)) {\n return prepareDataForValidation(value);\n } else {\n return value !== '' ? value : undefined;\n }\n });\n } else if (isPlainObject(values[key])) {\n data[key] = prepareDataForValidation(values[key]);\n } else {\n data[key] = values[key] !== '' ? values[key] : undefined;\n }\n }\n }\n return data;\n}\n\n/**\n * deepmerge array merging algorithm\n * https://github.com/KyleAMathews/deepmerge#combine-array\n */\nfunction arrayMerge(target: any[], source: any[], options: any): any[] {\n const destination = target.slice();\n\n source.forEach(function merge(e: any, i: number) {\n if (typeof destination[i] === 'undefined') {\n const cloneRequested = options.clone !== false;\n const shouldClone = cloneRequested && options.isMergeableObject(e);\n destination[i] = shouldClone\n ? deepmerge(Array.isArray(e) ? [] : {}, e, options)\n : e;\n } else if (options.isMergeableObject(e)) {\n destination[i] = deepmerge(target[i], e, options);\n } else if (target.indexOf(e) === -1) {\n destination.push(e);\n }\n });\n return destination;\n}\n\n/** Return multi select values based on an array of options */\nfunction getSelectedValues(options: any[]) {\n return Array.from(options)\n .filter(el => el.selected)\n .map(el => el.value);\n}\n\n/** Return the next value for a checkbox */\nfunction getValueForCheckbox(\n currentValue: string | any[],\n checked: boolean,\n valueProp: any\n) {\n // If the current value was a boolean, return a boolean\n if (typeof currentValue === 'boolean') {\n return Boolean(checked);\n }\n\n // If the currentValue was not a boolean we want to return an array\n let currentArrayOfValues = [];\n let isValueInArray = false;\n let index = -1;\n\n if (!Array.isArray(currentValue)) {\n // eslint-disable-next-line eqeqeq\n if (!valueProp || valueProp == 'true' || valueProp == 'false') {\n return Boolean(checked);\n }\n } else {\n // If the current value is already an array, use it\n currentArrayOfValues = currentValue;\n index = currentValue.indexOf(valueProp);\n isValueInArray = index >= 0;\n }\n\n // If the checkbox was checked and the value is not already present in the aray we want to add the new value to the array of values\n if (checked && valueProp && !isValueInArray) {\n return currentArrayOfValues.concat(valueProp);\n }\n\n // If the checkbox was unchecked and the value is not in the array, simply return the already existing array of values\n if (!isValueInArray) {\n return currentArrayOfValues;\n }\n\n // If the checkbox was unchecked and the value is in the array, remove the value and return the array\n return currentArrayOfValues\n .slice(0, index)\n .concat(currentArrayOfValues.slice(index + 1));\n}\n\n// React currently throws a warning when using useLayoutEffect on the server.\n// To get around it, we can conditionally useEffect on the server (no-op) and\n// useLayoutEffect in the browser.\n// @see https://gist.github.com/gaearon/e7d97cdf38a2907924ea12e4ebdf3c85\nconst useIsomorphicLayoutEffect =\n typeof window !== 'undefined' &&\n typeof window.document !== 'undefined' &&\n typeof window.document.createElement !== 'undefined'\n ? React.useLayoutEffect\n : React.useEffect;\n\nfunction useEventCallback<T extends (...args: any[]) => any>(fn: T): T {\n const ref: any = React.useRef(fn);\n\n // we copy a ref to the callback scoped to the current state/props on each render\n useIsomorphicLayoutEffect(() => {\n ref.current = fn;\n });\n\n return React.useCallback(\n (...args: any[]) => ref.current.apply(void 0, args),\n []\n ) as T;\n}\n","import * as React from 'react';\nimport {\n FormikProps,\n GenericFieldHTMLAttributes,\n FieldMetaProps,\n FieldHelperProps,\n FieldInputProps,\n FieldValidator,\n} from './types';\nimport { useFormikContext } from './FormikContext';\nimport { isFunction, isEmptyChildren, isObject } from './utils';\nimport invariant from 'tiny-warning';\n\nexport interface FieldProps<V = any, FormValues = any> {\n field: FieldInputProps<V>;\n form: FormikProps<FormValues>; // if ppl want to restrict this for a given form, let them.\n meta: FieldMetaProps<V>;\n}\n\nexport interface FieldConfig<V = any> {\n /**\n * Field component to render. Can either be a string like 'select' or a component.\n */\n component?:\n | string\n | React.ComponentType<FieldProps<V>>\n | React.ComponentType\n | React.ForwardRefExoticComponent<any>;\n\n /**\n * Component to render. Can either be a string e.g. 'select', 'input', or 'textarea', or a component.\n */\n as?:\n | React.ComponentType<FieldProps<V>['field']>\n | string\n | React.ComponentType\n | React.ForwardRefExoticComponent<any>;\n\n /**\n * Render prop (works like React router's <Route render={props =>} />)\n * @deprecated\n */\n render?: (props: FieldProps<V>) => React.ReactNode;\n\n /**\n * Children render function <Field name>{props => ...}</Field>)\n */\n children?: ((props: FieldProps<V>) => React.ReactNode) | React.ReactNode;\n\n /**\n * Validate a single field value independently\n */\n validate?: FieldValidator;\n\n /**\n * Used for 'select' and related input types.\n */\n multiple?: boolean;\n\n /**\n * Field name\n */\n name: string;\n\n /** HTML input type */\n type?: string;\n\n /** Field value */\n value?: any;\n\n /** Inner ref */\n innerRef?: (instance: any) => void;\n}\n\nexport type FieldAttributes<T> = { className?: string; } & GenericFieldHTMLAttributes &\n FieldConfig<T> &\n T & {\n name: string,\n };\n\nexport type FieldHookConfig<T> = GenericFieldHTMLAttributes & FieldConfig<T>;\n\nexport function useField<Val = any>(\n propsOrFieldName: string | FieldHookConfig<Val>\n): [FieldInputProps<Val>, FieldMetaProps<Val>, FieldHelperProps<Val>] {\n const formik = useFormikContext();\n const {\n getFieldProps,\n getFieldMeta,\n getFieldHelpers,\n registerField,\n unregisterField,\n } = formik;\n\n const isAnObject = isObject(propsOrFieldName);\n\n // Normalize propsOrFieldName to FieldHookConfig<Val>\n const props: FieldHookConfig<Val> = isAnObject\n ? (propsOrFieldName as FieldHookConfig<Val>)\n : { name: propsOrFieldName as string };\n\n const { name: fieldName, validate: validateFn } = props;\n\n React.useEffect(() => {\n if (fieldName) {\n registerField(fieldName, {\n validate: validateFn,\n });\n }\n return () => {\n if (fieldName) {\n unregisterField(fieldName);\n }\n };\n }, [registerField, unregisterField, fieldName, validateFn]);\n\n if (__DEV__) {\n invariant(\n formik,\n 'useField() / <Field /> must be used underneath a <Formik> component or withFormik() higher order component'\n );\n }\n\n invariant(\n fieldName,\n 'Invalid field name. Either pass `useField` a string or an object containing a `name` key.'\n );\n\n const fieldHelpers = React.useMemo(() => getFieldHelpers(fieldName), [\n getFieldHelpers,\n fieldName,\n ]);\n\n return [getFieldProps(props), getFieldMeta(fieldName), fieldHelpers];\n}\n\nexport function Field({\n validate,\n name,\n render,\n children,\n as: is, // `as` is reserved in typescript lol\n component,\n className,\n ...props\n}: FieldAttributes<any>) {\n const {\n validate: _validate,\n validationSchema: _validationSchema,\n\n ...formik\n } = useFormikContext();\n\n if (__DEV__) {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useEffect(() => {\n invariant(\n !render,\n `<Field render> has been deprecated and will be removed in future versions of Formik. Please use a child callback function instead. To get rid of this warning, replace <Field name=\"${name}\" render={({field, form}) => ...} /> with <Field name=\"${name}\">{({field, form, meta}) => ...}</Field>`\n );\n\n invariant(\n !(is && children && isFunction(children)),\n 'You should not use <Field as> and <Field children> as a function in the same <Field> component; <Field as> will be ignored.'\n );\n\n invariant(\n !(component && children && isFunction(children)),\n 'You should not use <Field component> and <Field children> as a function in the same <Field> component; <Field component> will be ignored.'\n );\n\n invariant(\n !(render && children && !isEmptyChildren(children)),\n 'You should not use <Field render> and <Field children> in the same <Field> component; <Field children> will be ignored'\n );\n // eslint-disable-next-line\n }, []);\n }\n\n // Register field and field-level validation with parent <Formik>\n const { registerField, unregisterField } = formik;\n React.useEffect(() => {\n registerField(name, {\n validate: validate,\n });\n return () => {\n unregisterField(name);\n };\n }, [registerField, unregisterField, name, validate]);\n const field = formik.getFieldProps({ name, ...props });\n const meta = formik.getFieldMeta(name);\n const legacyBag = { field, form: formik };\n\n if (render) {\n return render({ ...legacyBag, meta });\n }\n\n if (isFunction(children)) {\n return children({ ...legacyBag, meta });\n }\n\n if (component) {\n // This behavior is backwards compat with earlier Formik 0.9 to 1.x\n if (typeof component === 'string') {\n const { innerRef, ...rest } = props;\n return React.createElement(\n component,\n { ref: innerRef, ...field, ...rest, className },\n children\n );\n }\n // We don't pass `meta` for backwards compat\n return React.createElement(\n component,\n { field, form: formik, ...props, className },\n children\n );\n }\n\n // default to input here so we can check for both `as` and `children` above\n const asElement = is || 'input';\n\n if (typeof asElement === 'string') {\n const { innerRef, ...rest } = props;\n return React.createElement(\n asElement,\n { ref: innerRef, ...field, ...rest, className },\n children\n );\n }\n\n return React.createElement(asElement, { ...field, ...props, className }, children);\n}\n","import * as React from 'react';\nimport { useFormikContext } from './FormikContext';\n\nexport type FormikFormProps = Pick<\n React.FormHTMLAttributes<HTMLFormElement>,\n Exclude<\n keyof React.FormHTMLAttributes<HTMLFormElement>,\n 'onReset' | 'onSubmit'\n >\n>;\n\ntype FormProps = React.ComponentPropsWithoutRef<'form'>;\n\n// @todo tests\nexport const Form = React.forwardRef<HTMLFormElement, FormProps>(\n (props: FormikFormProps, ref) => {\n // iOS needs an \"action\" attribute for nice input: https://stackoverflow.com/a/39485162/406725\n // We default the action to \"#\" in case the preventDefault fails (just updates the URL hash)\n const { action, ...rest } = props;\n const _action = action ?? '#';\n const { handleReset, handleSubmit } = useFormikContext();\n return (\n <form\n onSubmit={handleSubmit}\n ref={ref}\n onReset={handleReset}\n action={_action}\n {...rest}\n />\n );\n }\n);\n\nForm.displayName = 'Form';\n","import hoistNonReactStatics from 'hoist-non-react-statics';\nimport * as React from 'react';\nimport { Formik } from './Formik';\nimport {\n FormikHelpers,\n FormikProps,\n FormikSharedConfig,\n FormikValues,\n FormikTouched,\n FormikErrors,\n} from './types';\nimport { isFunction } from './utils';\n\n/**\n * State, handlers, and helpers injected as props into the wrapped form component.\n * Used with withFormik()\n *\n * @deprecated Use `OuterProps & FormikProps<Values>` instead.\n */\nexport type InjectedFormikProps<Props, Values> = Props & FormikProps<Values>;\n\n/**\n * Formik helpers + { props }\n */\nexport type FormikBag<P, V> = { props: P } & FormikHelpers<V>;\n\n/**\n * withFormik() configuration options. Backwards compatible.\n */\nexport interface WithFormikConfig<\n Props,\n Values extends FormikValues = FormikValues,\n DeprecatedPayload = Values\n> extends FormikSharedConfig<Props> {\n /**\n * Set the display name of the component. Useful for React DevTools.\n */\n displayName?: string;\n\n /**\n * Submission handler\n */\n handleSubmit: (values: Values, formikBag: FormikBag<Props, Values>) => void;\n\n /**\n * Map props to the form values\n */\n mapPropsToValues?: (props: Props) => Values;\n\n /**\n * Map props to the form status\n */\n mapPropsToStatus?: (props: Props) => any;\n\n /**\n * Map props to the form touched state\n */\n mapPropsToTouched?: (props: Props) => FormikTouched<Values>;\n\n /**\n * Map props to the form errors state\n */\n mapPropsToErrors?: (props: Props) => FormikErrors<Values>;\n\n /**\n * @deprecated in 0.9.0 (but needed to break TS types)\n */\n mapValuesToPayload?: (values: Values) => DeprecatedPayload;\n\n /**\n * A Yup Schema or a function that returns a Yup schema\n */\n validationSchema?: any | ((props: Props) => any);\n\n /**\n * Validation function. Must return an error object or promise that\n * throws an error object where that object keys map to corresponding value.\n */\n validate?: (values: Values, props: Props) => void | object | Promise<any>;\n}\n\nexport type CompositeComponent<P> =\n | React.ComponentClass<P>\n | React.FunctionComponent<P>;\n\nexport interface ComponentDecorator<TOwnProps, TMergedProps> {\n (component: CompositeComponent<TMergedProps>): React.ComponentType<TOwnProps>;\n}\n\nexport interface InferableComponentDecorator<TOwnProps> {\n <T extends CompositeComponent<TOwnProps>>(component: T): T;\n}\n\n/**\n * A public higher-order component to access the imperative API\n */\nexport function withFormik<\n OuterProps extends object,\n Values extends FormikValues,\n Payload = Values\n>({\n mapPropsToValues = (vanillaProps: OuterProps): Values => {\n let val: Values = {} as Values;\n for (let k in vanillaProps) {\n if (\n vanillaProps.hasOwnProperty(k) &&\n typeof vanillaProps[k] !== 'function'\n ) {\n // @todo TypeScript fix\n (val as any)[k] = vanillaProps[k];\n }\n }\n return val as Values;\n },\n ...config\n}: WithFormikConfig<OuterProps, Values, Payload>): ComponentDecorator<\n OuterProps,\n OuterProps & FormikProps<Values>\n> {\n return function createFormik(\n Component: CompositeComponent<OuterProps & FormikProps<Values>>\n ): React.ComponentClass<OuterProps> {\n const componentDisplayName =\n Component.displayName ||\n Component.name ||\n (Component.constructor && Component.constructor.name) ||\n 'Component';\n /**\n * We need to use closures here for to provide the wrapped component's props to\n * the respective withFormik config methods.\n */\n class C extends React.Component<OuterProps, {}> {\n static displayName = `WithFormik(${componentDisplayName})`;\n\n validate = (values: Values): void | object | Promise<any> => {\n return config.validate!(values, this.props);\n };\n\n validationSchema = () => {\n return isFunction(config.validationSchema)\n ? config.validationSchema!(this.props)\n : config.validationSchema;\n };\n\n handleSubmit = (values: Values, actions: FormikHelpers<Values>) => {\n return config.handleSubmit(values, {\n ...actions,\n props: this.props,\n });\n };\n\n /**\n * Just avoiding a render callback for perf here\n */\n renderFormComponent = (formikProps: FormikProps<Values>) => {\n return <Component {...this.props} {...formikProps} />;\n };\n\n render() {\n const { children, ...props } = this.props as any;\n return (\n <Formik\n {...props}\n {...config}\n validate={config.validate && this.validate}\n validationSchema={config.validationSchema && this.validationSchema}\n initialValues={mapPropsToValues(this.props)}\n initialStatus={\n config.mapPropsToStatus && config.mapPropsToStatus(this.props)\n }\n initialErrors={\n config.mapPropsToErrors && config.mapPropsToErrors(this.props)\n }\n initialTouched={\n config.mapPropsToTouched && config.mapPropsToTouched(this.props)\n }\n onSubmit={this.handleSubmit as any}\n children={this.renderFormComponent}\n />\n );\n }\n }\n\n return hoistNonReactStatics(\n C,\n Component as React.ComponentClass<OuterProps & FormikProps<Values>> // cast type to ComponentClass (even if SFC)\n ) as React.ComponentClass<OuterProps>;\n };\n}\n","import * as React from 'react';\nimport hoistNonReactStatics from 'hoist-non-react-statics';\n\nimport { FormikContextType } from './types';\nimport { FormikConsumer } from './FormikContext';\nimport invariant from 'tiny-warning';\n\n/**\n * Connect any component to Formik context, and inject as a prop called `formik`;\n * @param Comp React Component\n */\nexport function connect<OuterProps, Values = {}>(\n Comp: React.ComponentType<OuterProps & { formik: FormikContextType<Values> }>\n) {\n const C: React.FC<OuterProps> = props => (\n <FormikConsumer>\n {formik => {\n invariant(\n !!formik,\n `Formik context is undefined, please verify you are rendering <Form>, <Field>, <FastField>, <FieldArray>, or your custom context-using component as a child of a <Formik> component. Component name: ${Comp.name}`\n );\n return <Comp {...props} formik={formik} />;\n }}\n </FormikConsumer>\n );\n\n const componentDisplayName =\n Comp.displayName ||\n Comp.name ||\n (Comp.constructor && Comp.constructor.name) ||\n 'Component';\n\n // Assign Comp to C.WrappedComponent so we can access the inner component in tests\n // For example, <Field.WrappedComponent /> gets us <FieldInner/>\n (C as React.FC<OuterProps> & {\n WrappedComponent: typeof Comp;\n }).WrappedComponent = Comp;\n\n C.displayName = `FormikConnect(${componentDisplayName})`;\n\n return hoistNonReactStatics(\n C,\n Comp as React.ComponentClass<\n OuterProps & { formik: FormikContextType<Values> }\n > // cast type to ComponentClass (even if SFC)\n );\n}\n","import cloneDeep from 'lodash/cloneDeep';\nimport * as React from 'react';\nimport isEqual from 'react-fast-compare';\nimport { connect } from './connect';\nimport {\n FormikContextType,\n FormikProps,\n FormikState,\n SharedRenderProps,\n} from './types';\nimport {\n getIn,\n isEmptyArray,\n isEmptyChildren,\n isFunction,\n isObject,\n setIn,\n} from './utils';\n\nexport type FieldArrayRenderProps = ArrayHelpers & {\n form: FormikProps<any>;\n name: string;\n};\n\nexport type FieldArrayConfig = {\n /** Really the path to the array field to be updated */\n name: string;\n /** Should field array validate the form AFTER array updates/changes? */\n validateOnChange?: boolean;\n} & SharedRenderProps<FieldArrayRenderProps>;\nexport interface ArrayHelpers<T extends any[] = any[]> {\n /** Imperatively add a value to the end of an array */\n push<X = T[number]>(obj: X): void;\n /** Curried fn to add a value to the end of an array */\n handlePush<X = T[number]>(obj: X): () => void;\n /** Imperatively swap two values in an array */\n swap: (indexA: number, indexB: number) => void;\n /** Curried fn to swap two values in an array */\n handleSwap: (indexA: number, indexB: number) => () => void;\n /** Imperatively move an element in an array to another index */\n move: (from: number, to: number) => void;\n /** Imperatively move an element in an array to another index */\n handleMove: (from: number, to: number) => () => void;\n /** Imperatively insert an element at a given index into the array */\n insert<X = T[number]>(index: number, value: X): void;\n /** Curried fn to insert an element at a given index into the array */\n handleInsert<X = T[number]>(index: number, value: X): () => void;\n /** Imperatively replace a value at an index of an array */\n replace<X = T[number]>(index: number, value: X): void;\n /** Curried fn to replace an element at a given index into the array */\n handleReplace<X = T[number]>(index: number, value: X): () => void;\n /** Imperatively add an element to the beginning of an array and return its length */\n unshift<X = T[number]>(value: X): number;\n /** Curried fn to add an element to the beginning of an array */\n handleUnshift<X = T[number]>(value: X): () => void;\n /** Curried fn to remove an element at an index of an array */\n handleRemove: (index: number) => () => void;\n /** Curried fn to remove a value from the end of the array */\n handlePop: () => () => void;\n /** Imperatively remove and element at an index of an array */\n remove<X = T[number]>(index: number): X | undefined;\n /** Imperatively remove and return value from the end of the array */\n pop<X = T[number]>(): X | undefined;\n}\n\n/**\n * Some array helpers!\n */\nexport const move = <T,>(array: T[], from: number, to: number) => {\n const copy = copyArrayLike(array);\n const value = copy[from];\n copy.splice(from, 1);\n copy.splice(to, 0, value);\n return copy;\n};\n\nexport const swap = <T,>(\n arrayLike: ArrayLike<T>,\n indexA: number,\n indexB: number\n) => {\n const copy = copyArrayLike(arrayLike);\n const a = copy[indexA];\n copy[indexA] = copy[indexB];\n copy[indexB] = a;\n return copy;\n};\n\nexport const insert = <T,>(\n arrayLike: ArrayLike<T>,\n index: number,\n value: T\n) => {\n const copy = copyArrayLike(arrayLike);\n copy.splice(index, 0, value);\n return copy;\n};\n\nexport const replace = <T,>(\n arrayLike: ArrayLike<T>,\n index: number,\n value: T\n) => {\n const copy = copyArrayLike(arrayLike);\n copy[index] = value;\n return copy;\n};\n\nconst copyArrayLike = (arrayLike: ArrayLike<any>) => {\n if (!arrayLike) {\n return [];\n } else if (Array.isArray(arrayLike)) {\n return [...arrayLike];\n } else {\n const maxIndex = Object.keys(arrayLike)\n .map(key => parseInt(key))\n .reduce((max, el) => (el > max ? el : max), 0);\n return Array.from({ ...arrayLike, length: maxIndex + 1 });\n }\n};\n\nconst createAlterationHandler = (\n alteration: boolean | Function,\n defaultFunction: Function\n) => {\n const fn = typeof alteration === 'function' ? alteration : defaultFunction;\n\n return (data: any | any[]) => {\n if (Array.isArray(data) || isObject(data)) {\n const clone = copyArrayLike(data);\n return fn(clone);\n }\n\n // This can be assumed to be a primitive, which\n // is a case for top level validation errors\n return data;\n };\n};\n\nclass FieldArrayInner<Values = {}> extends React.Component<\n FieldArrayConfig & { formik: FormikContextType<Values> },\n {}\n> {\n static defaultProps = {\n validateOnChange: true,\n };\n\n constructor(props: FieldArrayConfig & { formik: FormikContextType<Values> }) {\n super(props);\n // We need TypeScript generics on these, so we'll bind them in the constructor\n // @todo Fix TS 3.2.1\n this.remove = this.remove.bind(this) as any;\n this.pop = this.pop.bind(this) as any;\n }\n\n componentDidUpdate(\n prevProps: FieldArrayConfig & { formik: FormikContextType<Values> }\n ) {\n if (\n this.props.validateOnChange &&\n this.props.formik.validateOnChange &&\n !isEqual(\n getIn(prevProps.formik.values, prevProps.name),\n getIn(this.props.formik.values, this.props.name)\n )\n ) {\n this.props.formik.validateForm(this.props.formik.values);\n }\n }\n\n updateArrayField = (\n fn: Function,\n alterTouched: boolean | Function,\n alterErrors: boolean | Function\n ) => {\n const {\n name,\n\n formik: { setFormikState },\n } = this.props;\n\n setFormikState((prevState: FormikState<any>) => {\n let updateErrors = createAlterationHandler(alterErrors, fn);\n let updateTouched = createAlterationHandler(alterTouched, fn);\n\n // values fn should be executed before updateErrors and updateTouched,\n // otherwise it causes an error with unshift.\n let values = setIn(\n prevState.values,\n name,\n fn(getIn(prevState.values, name))\n );\n\n let fieldError = alterErrors\n ? updateErrors(getIn(prevState.errors, name))\n : undefined;\n let fieldTouched = alterTouched\n ? updateTouched(getIn(prevState.touched, name))\n : undefined;\n\n if (isEmptyArray(fieldError)) {\n fieldError = undefined;\n }\n if (isEmptyArray(fieldTouched)) {\n fieldTouched = undefined;\n }\n\n return {\n ...prevState,\n values,\n errors: alterErrors\n ? setIn(prevState.errors, name, fieldError)\n : prevState.errors,\n touched: alterTouched\n ? setIn(prevState.touched, name, fieldTouched)\n : prevState.touched,\n };\n });\n };\n\n push = (value: any) =>\n this.updateArrayField(\n (arrayLike: ArrayLike<any>) => [\n ...copyArrayLike(arrayLike),\n cloneDeep(value),\n ],\n false,\n false\n );\n\n handlePush = (value: any) => () => this.push(value);\n\n swap = (indexA: number, indexB: number) =>\n this.updateArrayField(\n (array: any[]) => swap(array, indexA, indexB),\n true,\n true\n );\n\n handleSwap = (indexA: number, indexB: number) => () =>\n this.swap(indexA, indexB);\n\n move = (from: number, to: number) =>\n this.updateArrayField((array: any[]) => move(array, from, to), true, true);\n\n handleMove = (from: number, to: number) => () => this.move(from, to);\n\n insert = (index: number, value: any) =>\n this.updateArrayField(\n (array: any[]) => insert(array, index, value),\n (array: any[]) => insert(array, index, null),\n (array: any[]) => insert(array, index, null)\n );\n\n handleInsert = (index: number, value: any) => () => this.insert(index, value);\n\n replace = (index: number, value: any) =>\n this.updateArrayField(\n (array: any[]) => replace(array, index, value),\n false,\n false\n );\n\n handleReplace = (index: number, value: any) => () =>\n this.replace(index, value);\n\n unshift = (value: any) => {\n let length = -1;\n this.updateArrayField(\n (array: any[]) => {\n const arr = array ? [value, ...array] : [value];\n\n length = arr.length;\n\n return arr;\n },\n (array: any[]) => {\n return array ? [null, ...array] : [null];\n },\n (array: any[]) => {\n return array ? [null, ...array] : [null];\n }\n );\n\n return length;\n };\n\n handleUnshift = (value: any) => () => this.unshift(value);\n\n remove<T>(index: number): T {\n // We need to make sure we also remove relevant pieces of `touched` and `errors`\n let result: any;\n this.updateArrayField(\n // so this gets call 3 times\n (array?: any[]) => {\n const copy = array ? copyArrayLike(array) : [];\n if (!result) {\n result = copy[index];\n }\n if (isFunction(copy.splice)) {\n copy.splice(index, 1);\n }\n // if the array only includes undefined values we have to return an empty array\n return isFunction(copy.every)\n ? copy.every(v => v === undefined)\n ? []\n : copy\n : copy;\n },\n true,\n true\n );\n\n return result as T;\n }\n\n handleRemove = (index: number) => () => this.remove<any>(index);\n\n pop<T>(): T {\n // Remove relevant pieces of `touched` and `errors` too!\n let result: any;\n this.updateArrayField(\n // so this gets call 3 times\n (array: any[]) => {\n const tmp = array.slice();\n if (!result) {\n result = tmp && tmp.pop && tmp.pop();\n }\n return tmp;\n },\n true,\n true\n );\n\n return result as T;\n }\n\n handlePop = () => () => this.pop<any>();\n\n render() {\n const arrayHelpers: ArrayHelpers = {\n push: this.push,\n pop: this.pop,\n swap: this.swap,\n move: this.move,\n insert: this.insert,\n replace: this.replace,\n unshift: this.unshift,\n remove: this.remove,\n handlePush: this.handlePush,\n handlePop: this.handlePop,\n handleSwap: this.handleSwap,\n handleMove: this.handleMove,\n handleInsert: this.handleInsert,\n handleReplace: this.handleReplace,\n handleUnshift: this.handleUnshift,\n handleRemove: this.handleRemove,\n };\n\n const {\n component,\n render,\n children,\n name,\n formik: {\n validate: _validate,\n validationSchema: _validationSchema,\n ...restOfFormik\n },\n } = this.props;\n\n const props: FieldArrayRenderProps = {\n ...arrayHelpers,\n form: restOfFormik,\n name,\n };\n\n return component\n ? React.createElement(component as any, props)\n : render\n ? (render as any)(props)\n : children // children come last, always called\n ? typeof children === 'function'\n ? (children as any)(props)\n : !isEmptyChildren(children)\n ? React.Children.only(children)\n : null\n : null;\n }\n}\n\nexport const FieldArray = connect<FieldArrayConfig, any>(FieldArrayInner);\n","import * as React from 'react';\nimport { useFormContext, get, FieldErrors } from 'react-hook-form';\nimport { Props } from './types';\n\nconst ErrorMessage = <\n TFieldErrors extends FieldErrors,\n TAs extends\n | undefined\n | React.ReactElement\n | React.ComponentType<any>\n | keyof JSX.IntrinsicElements = undefined\n>({\n as,\n errors,\n name,\n message,\n render,\n ...rest\n}: Props<TFieldErrors, TAs>) => {\n const methods = useFormContext();\n const error = get(errors || methods.formState.errors, name);\n\n if (!error) {\n return null;\n }\n\n const { message: messageFromRegister, types } = error;\n const props = Object.assign({}, rest, {\n children: messageFromRegister || message,\n });\n\n return React.isValidElement(as)\n ? React.cloneElement(as, props)\n : render\n ? (render({\n message: messageFromRegister || message,\n messages: types,\n }) as React.ReactElement)\n : React.createElement((as as string) || React.Fragment, props);\n};\n\nexport { ErrorMessage };\n","import * as React from 'react';\n\nimport {\n FormikProps,\n GenericFieldHTMLAttributes,\n FormikContextType,\n FieldMetaProps,\n FieldInputProps,\n} from './types';\nimport invariant from 'tiny-warning';\nimport { getIn, isEmptyChildren, isFunction } from './utils';\nimport { FieldConfig } from './Field';\nimport { connect } from './connect';\n\ntype $FixMe = any;\n\nexport interface FastFieldProps<V = any> {\n field: FieldInputProps<V>;\n meta: FieldMetaProps<V>;\n form: FormikProps<V>; // if ppl want to restrict this for a given form, let them.\n}\n\nexport type FastFieldConfig<T> = FieldConfig & {\n /** Override FastField's default shouldComponentUpdate */\n shouldUpdate?: (\n nextProps: T & GenericFieldHTMLAttributes,\n props: {}\n ) => boolean;\n};\n\nexport type FastFieldAttributes<T> = GenericFieldHTMLAttributes &\n FastFieldConfig<T> &\n T;\n\ntype FastFieldInnerProps<Values = {}, Props = {}> = FastFieldAttributes<\n Props\n> & { formik: FormikContextType<Values> };\n\n/**\n * Custom Field component for quickly hooking into Formik\n * context and wiring up forms.\n */\nclass FastFieldInner<Values = {}, Props = {}> extends React.Component<\n FastFieldInnerProps<Values, Props>,\n {}\n> {\n constructor(props: FastFieldInnerProps<Values, Props>) {\n super(props);\n const { render, children, component, as: is, name } = props;\n invariant(\n !render,\n `<FastField render> has been deprecated. Please use a child callback function instead: <FastField name={${name}}>{props => ...}</FastField> instead.`\n );\n invariant(\n !(component && render),\n 'You should not use <FastField component> and <FastField render> in the same <FastField> component; <FastField component> will be ignored'\n );\n\n invariant(\n !(is && children && isFunction(children)),\n 'You should not use <FastField as> and <FastField children> as a function in the same <FastField> component; <FastField as> will be ignored.'\n );\n\n invariant(\n !(component && children && isFunction(children)),\n 'You should not use <FastField component> and <FastField children> as a function in the same <FastField> component; <FastField component> will be ignored.'\n );\n\n invariant(\n !(render && children && !isEmptyChildren(children)),\n 'You should not use <FastField render> and <FastField children> in the same <FastField> component; <FastField children> will be ignored'\n );\n }\n\n shouldComponentUpdate(props: FastFieldInnerProps<Values, Props>) {\n if (this.props.shouldUpdate) {\n return this.props.shouldUpdate(props, this.props);\n } else if (\n props.name !== this.props.name ||\n getIn(props.formik.values, this.props.name) !==\n getIn(this.props.formik.values, this.props.name) ||\n getIn(props.formik.errors, this.props.name) !==\n getIn(this.props.formik.errors, this.props.name) ||\n getIn(props.formik.touched, this.props.name) !==\n getIn(this.props.formik.touched, this.props.name) ||\n Object.keys(this.props).length !== Object.keys(props).length ||\n props.formik.isSubmitting !== this.props.formik.isSubmitting\n ) {\n return true;\n } else {\n return false;\n }\n }\n\n componentDidMount() {\n // Register the Field with the parent Formik. Parent will cycle through\n // registered Field's validate fns right prior to submit\n this.props.formik.registerField(this.props.name, {\n validate: this.props.validate,\n });\n }\n\n componentDidUpdate(prevProps: FastFieldAttributes<Props>) {\n if (this.props.name !== prevProps.name) {\n this.props.formik.unregisterField(prevProps.name);\n this.props.formik.registerField(this.props.name, {\n validate: this.props.validate,\n });\n }\n\n if (this.props.validate !== prevProps.validate) {\n this.props.formik.registerField(this.props.name, {\n validate: this.props.validate,\n });\n }\n }\n\n componentWillUnmount() {\n this.props.formik.unregisterField(this.props.name);\n }\n\n render() {\n const {\n validate,\n name,\n render,\n as: is,\n children,\n component,\n shouldUpdate,\n formik,\n ...props\n } = this.props as FastFieldInnerProps<Values, Props>;\n\n const {\n validate: _validate,\n validationSchema: _validationSchema,\n ...restOfFormik\n } = formik;\n const field = formik.getFieldProps({ name, ...props });\n const meta = {\n value: getIn(formik.values, name),\n error: getIn(formik.errors, name),\n touched: !!getIn(formik.touched, name),\n initialValue: getIn(formik.initialValues, name),\n initialTouched: !!getIn(formik.initialTouched, name),\n initialError: getIn(formik.initialErrors, name),\n };\n\n const bag = { field, meta, form: restOfFormik };\n\n if (render) {\n return (render as any)(bag);\n }\n\n if (isFunction(children)) {\n return (children as (props: FastFieldProps<any>) => React.ReactNode)(bag);\n }\n\n if (component) {\n // This behavior is backwards compat with earlier Formik 0.9 to 1.x\n if (typeof component === 'string') {\n const { innerRef, ...rest } = props;\n return React.createElement(\n component,\n { ref: innerRef, ...field, ...(rest as $FixMe) },\n children\n );\n }\n // We don't pass `meta` for backwards compat\n return React.createElement(\n component as React.ComponentClass<$FixMe>,\n { field, form: formik, ...props },\n children\n );\n }\n\n // default to input here so we can check for both `as` and `children` above\n const asElement = is || 'input';\n\n if (typeof asElement === 'string') {\n const { innerRef, ...rest } = props;\n return React.createElement(\n asElement,\n { ref: innerRef, ...field, ...(rest as $FixMe) },\n children\n );\n }\n\n return React.createElement(\n asElement as React.ComponentClass,\n { ...field, ...props },\n children\n );\n }\n}\n\nexport const FastField = connect<FastFieldAttributes<any>, any>(FastFieldInner);\n","/**\n * Checks if `value` is `null` or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is nullish, else `false`.\n * @example\n *\n * _.isNil(null);\n * // => true\n *\n * _.isNil(void 0);\n * // => true\n *\n * _.isNil(NaN);\n * // => false\n */\nfunction isNil(value) {\n return value == null;\n}\n\nmodule.exports = isNil;\n","import React from \"react\";\nimport { Router } from \"react-router\";\nimport { createBrowserHistory as createHistory } from \"history\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\n/**\n * The public API for a <Router> that uses HTML5 history.\n */\nclass BrowserRouter extends React.Component {\n history = createHistory(this.props);\n\n render() {\n return <Router history={this.history} children={this.props.children} />;\n }\n}\n\nif (__DEV__) {\n BrowserRouter.propTypes = {\n basename: PropTypes.string,\n children: PropTypes.node,\n forceRefresh: PropTypes.bool,\n getUserConfirmation: PropTypes.func,\n keyLength: PropTypes.number\n };\n\n BrowserRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \"<BrowserRouter> ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { BrowserRouter as Router }`.\"\n );\n };\n}\n\nexport default BrowserRouter;\n","import React from \"react\";\nimport { Router } from \"react-router\";\nimport { createHashHistory as createHistory } from \"history\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\n/**\n * The public API for a <Router> that uses window.location.hash.\n */\nclass HashRouter extends React.Component {\n history = createHistory(this.props);\n\n render() {\n return <Router history={this.history} children={this.props.children} />;\n }\n}\n\nif (__DEV__) {\n HashRouter.propTypes = {\n basename: PropTypes.string,\n children: PropTypes.node,\n getUserConfirmation: PropTypes.func,\n hashType: PropTypes.oneOf([\"hashbang\", \"noslash\", \"slash\"])\n };\n\n HashRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \"<HashRouter> ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { HashRouter as Router }`.\"\n );\n };\n}\n\nexport default HashRouter;\n","import { createLocation } from \"history\";\n\nexport const resolveToLocation = (to, currentLocation) =>\n typeof to === \"function\" ? to(currentLocation) : to;\n\nexport const normalizeToLocation = (to, currentLocation) => {\n return typeof to === \"string\"\n ? createLocation(to, null, null, currentLocation)\n : to;\n};\n","import React from \"react\";\nimport { __RouterContext as RouterContext } from \"react-router\";\nimport { createPath } from 'history';\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport {\n resolveToLocation,\n normalizeToLocation\n} from \"./utils/locationUtils.js\";\n\n// React 15 compat\nconst forwardRefShim = C => C;\nlet { forwardRef } = React;\nif (typeof forwardRef === \"undefined\") {\n forwardRef = forwardRefShim;\n}\n\nfunction isModifiedEvent(event) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\n\nconst LinkAnchor = forwardRef(\n (\n {\n innerRef, // TODO: deprecate\n navigate,\n onClick,\n ...rest\n },\n forwardedRef\n ) => {\n const { target } = rest;\n\n let props = {\n ...rest,\n onClick: event => {\n try {\n if (onClick) onClick(event);\n } catch (ex) {\n event.preventDefault();\n throw ex;\n }\n\n if (\n !event.defaultPrevented && // onClick prevented default\n event.button === 0 && // ignore everything but left clicks\n (!target || target === \"_self\") && // let browser handle \"target=_blank\" etc.\n !isModifiedEvent(event) // ignore clicks with modifier keys\n ) {\n event.preventDefault();\n navigate();\n }\n }\n };\n\n // React 15 compat\n if (forwardRefShim !== forwardRef) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.ref = innerRef;\n }\n\n /* eslint-disable-next-line jsx-a11y/anchor-has-content */\n return <a {...props} />;\n }\n);\n\nif (__DEV__) {\n LinkAnchor.displayName = \"LinkAnchor\";\n}\n\n/**\n * The public API for rendering a history-aware <a>.\n */\nconst Link = forwardRef(\n (\n {\n component = LinkAnchor,\n replace,\n to,\n innerRef, // TODO: deprecate\n ...rest\n },\n forwardedRef\n ) => {\n return (\n <RouterContext.Consumer>\n {context => {\n invariant(context, \"You should not use <Link> outside a <Router>\");\n\n const { history } = context;\n\n const location = normalizeToLocation(\n resolveToLocation(to, context.location),\n context.location\n );\n\n const href = location ? history.createHref(location) : \"\";\n const props = {\n ...rest,\n href,\n navigate() {\n const location = resolveToLocation(to, context.location);\n const isDuplicateNavigation = createPath(context.location) === createPath(normalizeToLocation(location));\n const method = (replace || isDuplicateNavigation) ? history.replace : history.push;\n\n method(location);\n }\n };\n\n // React 15 compat\n if (forwardRefShim !== forwardRef) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.innerRef = innerRef;\n }\n\n return React.createElement(component, props);\n }}\n </RouterContext.Consumer>\n );\n }\n);\n\nif (__DEV__) {\n const toType = PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.object,\n PropTypes.func\n ]);\n const refType = PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.func,\n PropTypes.shape({ current: PropTypes.any })\n ]);\n\n Link.displayName = \"Link\";\n\n Link.propTypes = {\n innerRef: refType,\n onClick: PropTypes.func,\n replace: PropTypes.bool,\n target: PropTypes.string,\n to: toType.isRequired\n };\n}\n\nexport default Link;\n","import React from \"react\";\nimport { __RouterContext as RouterContext, matchPath } from \"react-router\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport Link from \"./Link.js\";\nimport {\n resolveToLocation,\n normalizeToLocation\n} from \"./utils/locationUtils.js\";\n\n// React 15 compat\nconst forwardRefShim = C => C;\nlet { forwardRef } = React;\nif (typeof forwardRef === \"undefined\") {\n forwardRef = forwardRefShim;\n}\n\nfunction joinClassnames(...classnames) {\n return classnames.filter(i => i).join(\" \");\n}\n\n/**\n * A <Link> wrapper that knows if it's \"active\" or not.\n */\nconst NavLink = forwardRef(\n (\n {\n \"aria-current\": ariaCurrent = \"page\",\n activeClassName = \"active\", // TODO: deprecate\n activeStyle, // TODO: deprecate\n className: classNameProp,\n exact,\n isActive: isActiveProp,\n location: locationProp,\n sensitive,\n strict,\n style: styleProp,\n to,\n innerRef, // TODO: deprecate\n ...rest\n },\n forwardedRef\n ) => {\n return (\n <RouterContext.Consumer>\n {context => {\n invariant(context, \"You should not use <NavLink> outside a <Router>\");\n\n const currentLocation = locationProp || context.location;\n const toLocation = normalizeToLocation(\n resolveToLocation(to, currentLocation),\n currentLocation\n );\n const { pathname: path } = toLocation;\n // Regex taken from: https://github.com/pillarjs/path-to-regexp/blob/master/index.js#L202\n const escapedPath =\n path && path.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, \"\\\\$1\");\n\n const match = escapedPath\n ? matchPath(currentLocation.pathname, {\n path: escapedPath,\n exact,\n sensitive,\n strict\n })\n : null;\n const isActive = !!(isActiveProp\n ? isActiveProp(match, currentLocation)\n : match);\n\n let className =\n typeof classNameProp === \"function\"\n ? classNameProp(isActive)\n : classNameProp;\n\n let style =\n typeof styleProp === \"function\" ? styleProp(isActive) : styleProp;\n\n if (isActive) {\n className = joinClassnames(className, activeClassName);\n style = { ...style, ...activeStyle };\n }\n\n const props = {\n \"aria-current\": (isActive && ariaCurrent) || null,\n className,\n style,\n to: toLocation,\n ...rest\n };\n\n // React 15 compat\n if (forwardRefShim !== forwardRef) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.innerRef = innerRef;\n }\n\n return <Link {...props} />;\n }}\n </RouterContext.Consumer>\n );\n }\n);\n\nif (__DEV__) {\n NavLink.displayName = \"NavLink\";\n\n const ariaCurrentType = PropTypes.oneOf([\n \"page\",\n \"step\",\n \"location\",\n \"date\",\n \"time\",\n \"true\",\n \"false\"\n ]);\n\n NavLink.propTypes = {\n ...Link.propTypes,\n \"aria-current\": ariaCurrentType,\n activeClassName: PropTypes.string,\n activeStyle: PropTypes.object,\n className: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),\n exact: PropTypes.bool,\n isActive: PropTypes.func,\n location: PropTypes.object,\n sensitive: PropTypes.bool,\n strict: PropTypes.bool,\n style: PropTypes.oneOfType([PropTypes.object, PropTypes.func])\n };\n}\n\nexport default NavLink;\n","import { DirectionalHint } from '../../common/DirectionalHint';\nimport { IRectangle, Point } from '../../Utilities';\n\n// eslint-disable-next-line deprecation/deprecation\nexport { Point, IPoint } from '../../Utilities';\n\nexport enum RectangleEdge {\n top = 1,\n bottom = -1,\n left = 2,\n right = -2,\n}\n\nexport enum Position {\n top = 0,\n bottom = 1,\n start = 2,\n end = 3,\n}\n\n/**\n * Window with typings for experimental features regarding Dual Screen devices.\n */\nexport interface IWindowWithSegments extends Window {\n getWindowSegments?: () => DOMRect[];\n}\n\nexport interface IPositionProps {\n target?: Element | MouseEvent | Point;\n /** how the element should be positioned */\n directionalHint?: DirectionalHint;\n /**\n * How the element should be positioned in RTL layouts.\n * If not specified, a mirror of `directionalHint` will be used instead\n */\n directionalHintForRTL?: DirectionalHint;\n /** The gap between the callout and the target */\n gapSpace?: number;\n /**\n * The bounding rectangle for which the contextual menu can appear in.\n */\n bounds?: IRectangle;\n /**\n * If true the position returned will have the menu element cover the target.\n * If false then it will position next to the target;\n */\n coverTarget?: boolean;\n /**\n * If true the position will not change edges in an attempt to fit the rectangle within bounds.\n * It will still attempt to align it to whatever bounds are given.\n * @defaultvalue false\n */\n directionalHintFixed?: boolean;\n\n /**\n * If true the positioning logic will prefer flipping edges over nudging the rectangle to fit within bounds,\n * thus making sure the element align perfectly with target.\n */\n alignTargetEdge?: boolean;\n}\n\nexport interface ICalloutPositionProps extends IPositionProps {\n /**\n * The width of the beak.\n */\n beakWidth?: number;\n\n /**\n * Whether or not the beak is visible\n */\n isBeakVisible?: boolean;\n}\n\nexport interface IPositionedData {\n /**\n * The new position of the element.\n */\n elementPosition: IPosition;\n /**\n * The finalized target edge that element is aligning to. For instance RectangleEdge.bottom would mean\n * that the bottom edge of the target is being aligned to by the RectangleEdge.top of the element\n * that is being positioned.\n */\n targetEdge: RectangleEdge;\n /**\n * The finalized alignment edge that the element is aligning too. For instance, RectangleEdge.left means\n * that the left edge of the target should be in line with the left edge of the element being positioned.\n */\n alignmentEdge?: RectangleEdge;\n}\n\nexport interface ICalloutPositionedInfo extends IPositionedData {\n beakPosition: ICalloutBeakPositionedInfo;\n}\n\nexport interface ICalloutBeakPositionedInfo extends IPositionedData {\n closestEdge: RectangleEdge;\n}\n\n/**\n * Gives the position of some element on the page. Only a pair of vertical and horizontal edges need to be\n * given. So top/left or bottom/left is sufficient.\n * The number given is the distance in pixels from whatever host was given..\n * So bottom: 100 would be 100px up from the bottom of the host while top: 100px from the top.\n */\nexport interface IPosition {\n top?: number;\n left?: number;\n bottom?: number;\n right?: number;\n [key: string]: number | undefined;\n}\n\nexport interface IPositionDirectionalHintData {\n targetEdge: RectangleEdge;\n alignmentEdge?: RectangleEdge;\n isAuto?: boolean;\n alignTargetEdge?: boolean;\n}\n\nexport interface IRelativePositions {\n calloutPosition: IPosition;\n beakPosition: { position: IPosition | undefined; display: 'block' };\n directionalClassName: string;\n submenuDirection: DirectionalHint;\n}\n","/**\n * @license\n * Lodash <https://lodash.com/>\n * Copyright OpenJS Foundation and other contributors <https://openjsf.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n;(function() {\n\n /** Used as a safe reference for `undefined` in pre-ES5 environments. */\n var undefined;\n\n /** Used as the semantic version number. */\n var VERSION = '4.17.21';\n\n /** Used as the size to enable large array optimizations. */\n var LARGE_ARRAY_SIZE = 200;\n\n /** Error message constants. */\n var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.',\n FUNC_ERROR_TEXT = 'Expected a function',\n INVALID_TEMPL_VAR_ERROR_TEXT = 'Invalid `variable` option passed into `_.template`';\n\n /** Used to stand-in for `undefined` hash values. */\n var HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n /** Used as the maximum memoize cache size. */\n var MAX_MEMOIZE_SIZE = 500;\n\n /** Used as the internal argument placeholder. */\n var PLACEHOLDER = '__lodash_placeholder__';\n\n /** Used to compose bitmasks for cloning. */\n var CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n /** Used to compose bitmasks for value comparisons. */\n var COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n /** Used to compose bitmasks for function metadata. */\n var WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_BOUND_FLAG = 4,\n WRAP_CURRY_FLAG = 8,\n WRAP_CURRY_RIGHT_FLAG = 16,\n WRAP_PARTIAL_FLAG = 32,\n WRAP_PARTIAL_RIGHT_FLAG = 64,\n WRAP_ARY_FLAG = 128,\n WRAP_REARG_FLAG = 256,\n WRAP_FLIP_FLAG = 512;\n\n /** Used as default options for `_.truncate`. */\n var DEFAULT_TRUNC_LENGTH = 30,\n DEFAULT_TRUNC_OMISSION = '...';\n\n /** Used to detect hot functions by number of calls within a span of milliseconds. */\n var HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n /** Used to indicate the type of lazy iteratees. */\n var LAZY_FILTER_FLAG = 1,\n LAZY_MAP_FLAG = 2,\n LAZY_WHILE_FLAG = 3;\n\n /** Used as references for various `Number` constants. */\n var INFINITY = 1 / 0,\n MAX_SAFE_INTEGER = 9007199254740991,\n MAX_INTEGER = 1.7976931348623157e+308,\n NAN = 0 / 0;\n\n /** Used as references for the maximum length and index of an array. */\n var MAX_ARRAY_LENGTH = 4294967295,\n MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1,\n HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;\n\n /** Used to associate wrap methods with their bit flags. */\n var wrapFlags = [\n ['ary', WRAP_ARY_FLAG],\n ['bind', WRAP_BIND_FLAG],\n ['bindKey', WRAP_BIND_KEY_FLAG],\n ['curry', WRAP_CURRY_FLAG],\n ['curryRight', WRAP_CURRY_RIGHT_FLAG],\n ['flip', WRAP_FLIP_FLAG],\n ['partial', WRAP_PARTIAL_FLAG],\n ['partialRight', WRAP_PARTIAL_RIGHT_FLAG],\n ['rearg', WRAP_REARG_FLAG]\n ];\n\n /** `Object#toString` result references. */\n var argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n domExcTag = '[object DOMException]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]',\n weakSetTag = '[object WeakSet]';\n\n var 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 match empty string literals in compiled template source. */\n var reEmptyStringLeading = /\\b__p \\+= '';/g,\n reEmptyStringMiddle = /\\b(__p \\+=) '' \\+/g,\n reEmptyStringTrailing = /(__e\\(.*?\\)|\\b__t\\)) \\+\\n'';/g;\n\n /** Used to match HTML entities and HTML characters. */\n var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g,\n reUnescapedHtml = /[&<>\"']/g,\n reHasEscapedHtml = RegExp(reEscapedHtml.source),\n reHasUnescapedHtml = RegExp(reUnescapedHtml.source);\n\n /** Used to match template delimiters. */\n var reEscape = /<%-([\\s\\S]+?)%>/g,\n reEvaluate = /<%([\\s\\S]+?)%>/g,\n reInterpolate = /<%=([\\s\\S]+?)%>/g;\n\n /** Used to match property names within property paths. */\n var reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/,\n rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n /**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\n var reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g,\n reHasRegExpChar = RegExp(reRegExpChar.source);\n\n /** Used to match leading whitespace. */\n var reTrimStart = /^\\s+/;\n\n /** Used to match a single whitespace character. */\n var reWhitespace = /\\s/;\n\n /** Used to match wrap detail comments. */\n var reWrapComment = /\\{(?:\\n\\/\\* \\[wrapped with .+\\] \\*\\/)?\\n?/,\n reWrapDetails = /\\{\\n\\/\\* \\[wrapped with (.+)\\] \\*/,\n reSplitDetails = /,? & /;\n\n /** Used to match words composed of alphanumeric characters. */\n var reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n /**\n * Used to validate the `validate` option in `_.template` variable.\n *\n * Forbids characters which could potentially change the meaning of the function argument definition:\n * - \"(),\" (modification of function parameters)\n * - \"=\" (default value)\n * - \"[]{}\" (destructuring of function parameters)\n * - \"/\" (beginning of a comment)\n * - whitespace\n */\n var reForbiddenIdentifierChars = /[()=,{}\\[\\]\\/\\s]/;\n\n /** Used to match backslashes in property paths. */\n var reEscapeChar = /\\\\(\\\\)?/g;\n\n /**\n * Used to match\n * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components).\n */\n var reEsTemplate = /\\$\\{([^\\\\}]*(?:\\\\.[^\\\\}]*)*)\\}/g;\n\n /** Used to match `RegExp` flags from their coerced string values. */\n var reFlags = /\\w*$/;\n\n /** Used to detect bad signed hexadecimal string values. */\n var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n /** Used to detect binary string values. */\n var reIsBinary = /^0b[01]+$/i;\n\n /** Used to detect host constructors (Safari). */\n var reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n /** Used to detect octal string values. */\n var reIsOctal = /^0o[0-7]+$/i;\n\n /** Used to detect unsigned integer values. */\n var reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n /** Used to match Latin Unicode letters (excluding mathematical operators). */\n var reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n /** Used to ensure capturing order of template delimiters. */\n var reNoMatch = /($^)/;\n\n /** Used to match unescaped characters in compiled string literals. */\n var reUnescapedString = /['\\n\\r\\u2028\\u2029\\\\]/g;\n\n /** Used to compose unicode character classes. */\n var rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsDingbatRange = '\\\\u2700-\\\\u27bf',\n rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n rsPunctuationRange = '\\\\u2000-\\\\u206f',\n rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n rsVarRange = '\\\\ufe0e\\\\ufe0f',\n rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n /** Used to compose unicode capture groups. */\n var rsApos = \"['\\u2019]\",\n rsAstral = '[' + rsAstralRange + ']',\n rsBreak = '[' + rsBreakRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsDigits = '\\\\d+',\n rsDingbat = '[' + rsDingbatRange + ']',\n rsLower = '[' + rsLowerRange + ']',\n rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsUpper = '[' + rsUpperRange + ']',\n rsZWJ = '\\\\u200d';\n\n /** Used to compose unicode regexes. */\n var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n /** Used to match apostrophes. */\n var reApos = RegExp(rsApos, 'g');\n\n /**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\n var reComboMark = RegExp(rsCombo, 'g');\n\n /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\n var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n /** Used to match complex or compound words. */\n var reUnicodeWord = RegExp([\n rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n rsUpper + '+' + rsOptContrUpper,\n rsOrdUpper,\n rsOrdLower,\n rsDigits,\n rsEmoji\n ].join('|'), 'g');\n\n /** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\n var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n /** Used to detect strings that need a more robust regexp to match words. */\n var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n /** Used to assign default `context` object properties. */\n var contextProps = [\n 'Array', 'Buffer', 'DataView', 'Date', 'Error', 'Float32Array', 'Float64Array',\n 'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Map', 'Math', 'Object',\n 'Promise', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError', 'Uint8Array',\n 'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap',\n '_', 'clearTimeout', 'isFinite', 'parseInt', 'setTimeout'\n ];\n\n /** Used to make template sourceURLs easier to identify. */\n var templateCounter = -1;\n\n /** Used to identify `toStringTag` values of typed arrays. */\n var typedArrayTags = {};\n typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\n typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\n typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\n typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\n typedArrayTags[uint32Tag] = true;\n typedArrayTags[argsTag] = typedArrayTags[arrayTag] =\n typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\n typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\n typedArrayTags[errorTag] = typedArrayTags[funcTag] =\n typedArrayTags[mapTag] = typedArrayTags[numberTag] =\n typedArrayTags[objectTag] = typedArrayTags[regexpTag] =\n typedArrayTags[setTag] = typedArrayTags[stringTag] =\n typedArrayTags[weakMapTag] = false;\n\n /** Used to identify `toStringTag` values supported by `_.clone`. */\n var cloneableTags = {};\n cloneableTags[argsTag] = cloneableTags[arrayTag] =\n cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\n cloneableTags[boolTag] = cloneableTags[dateTag] =\n cloneableTags[float32Tag] = cloneableTags[float64Tag] =\n cloneableTags[int8Tag] = cloneableTags[int16Tag] =\n cloneableTags[int32Tag] = cloneableTags[mapTag] =\n cloneableTags[numberTag] = cloneableTags[objectTag] =\n cloneableTags[regexpTag] = cloneableTags[setTag] =\n cloneableTags[stringTag] = cloneableTags[symbolTag] =\n cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\n cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\n cloneableTags[errorTag] = cloneableTags[funcTag] =\n cloneableTags[weakMapTag] = false;\n\n /** Used to map Latin Unicode letters to basic Latin letters. */\n var deburredLetters = {\n // Latin-1 Supplement block.\n '\\xc0': 'A', '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n '\\xe0': 'a', '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n '\\xc7': 'C', '\\xe7': 'c',\n '\\xd0': 'D', '\\xf0': 'd',\n '\\xc8': 'E', '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n '\\xe8': 'e', '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n '\\xcc': 'I', '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n '\\xec': 'i', '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n '\\xd1': 'N', '\\xf1': 'n',\n '\\xd2': 'O', '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n '\\xf2': 'o', '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n '\\xd9': 'U', '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n '\\xf9': 'u', '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n '\\xdd': 'Y', '\\xfd': 'y', '\\xff': 'y',\n '\\xc6': 'Ae', '\\xe6': 'ae',\n '\\xde': 'Th', '\\xfe': 'th',\n '\\xdf': 'ss',\n // Latin Extended-A block.\n '\\u0100': 'A', '\\u0102': 'A', '\\u0104': 'A',\n '\\u0101': 'a', '\\u0103': 'a', '\\u0105': 'a',\n '\\u0106': 'C', '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n '\\u0107': 'c', '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n '\\u010e': 'D', '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n '\\u0112': 'E', '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n '\\u0113': 'e', '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n '\\u011c': 'G', '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n '\\u011d': 'g', '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n '\\u0124': 'H', '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n '\\u0128': 'I', '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n '\\u0129': 'i', '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n '\\u0134': 'J', '\\u0135': 'j',\n '\\u0136': 'K', '\\u0137': 'k', '\\u0138': 'k',\n '\\u0139': 'L', '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n '\\u013a': 'l', '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n '\\u0143': 'N', '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n '\\u0144': 'n', '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n '\\u014c': 'O', '\\u014e': 'O', '\\u0150': 'O',\n '\\u014d': 'o', '\\u014f': 'o', '\\u0151': 'o',\n '\\u0154': 'R', '\\u0156': 'R', '\\u0158': 'R',\n '\\u0155': 'r', '\\u0157': 'r', '\\u0159': 'r',\n '\\u015a': 'S', '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n '\\u015b': 's', '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n '\\u0162': 'T', '\\u0164': 'T', '\\u0166': 'T',\n '\\u0163': 't', '\\u0165': 't', '\\u0167': 't',\n '\\u0168': 'U', '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n '\\u0169': 'u', '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n '\\u0174': 'W', '\\u0175': 'w',\n '\\u0176': 'Y', '\\u0177': 'y', '\\u0178': 'Y',\n '\\u0179': 'Z', '\\u017b': 'Z', '\\u017d': 'Z',\n '\\u017a': 'z', '\\u017c': 'z', '\\u017e': 'z',\n '\\u0132': 'IJ', '\\u0133': 'ij',\n '\\u0152': 'Oe', '\\u0153': 'oe',\n '\\u0149': \"'n\", '\\u017f': 's'\n };\n\n /** Used to map characters to HTML entities. */\n var htmlEscapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n };\n\n /** Used to map HTML entities to characters. */\n var htmlUnescapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '"': '\"',\n ''': \"'\"\n };\n\n /** Used to escape characters for inclusion in compiled string literals. */\n var stringEscapes = {\n '\\\\': '\\\\',\n \"'\": \"'\",\n '\\n': 'n',\n '\\r': 'r',\n '\\u2028': 'u2028',\n '\\u2029': 'u2029'\n };\n\n /** Built-in method references without a dependency on `root`. */\n var freeParseFloat = parseFloat,\n freeParseInt = parseInt;\n\n /** Detect free variable `global` from Node.js. */\n var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n /** Detect free variable `self`. */\n var freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n /** Used as a reference to the global object. */\n var root = freeGlobal || freeSelf || Function('return this')();\n\n /** Detect free variable `exports`. */\n var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n /** Detect free variable `module`. */\n var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n /** Detect the popular CommonJS extension `module.exports`. */\n var moduleExports = freeModule && freeModule.exports === freeExports;\n\n /** Detect free variable `process` from Node.js. */\n var freeProcess = moduleExports && freeGlobal.process;\n\n /** Used to access faster Node.js helpers. */\n var 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\n /* Node.js helper references. */\n var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer,\n nodeIsDate = nodeUtil && nodeUtil.isDate,\n nodeIsMap = nodeUtil && nodeUtil.isMap,\n nodeIsRegExp = nodeUtil && nodeUtil.isRegExp,\n nodeIsSet = nodeUtil && nodeUtil.isSet,\n nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n /*--------------------------------------------------------------------------*/\n\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 */\n function 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\n /**\n * A specialized version of `baseAggregator` for arrays.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function arrayAggregator(array, setter, iteratee, accumulator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n var value = array[index];\n setter(accumulator, value, iteratee(value), array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.forEachRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEachRight(array, iteratee) {\n var length = array == null ? 0 : array.length;\n\n while (length--) {\n if (iteratee(array[length], length, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.every` 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 {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n */\n function arrayEvery(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 false;\n }\n }\n return true;\n }\n\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 */\n function 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\n /**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n }\n\n /**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n }\n\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 */\n function 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\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 */\n function 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\n /**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.reduceRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the last element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduceRight(array, iteratee, accumulator, initAccum) {\n var length = array == null ? 0 : array.length;\n if (initAccum && length) {\n accumulator = array[--length];\n }\n while (length--) {\n accumulator = iteratee(accumulator, array[length], length, array);\n }\n return accumulator;\n }\n\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 */\n function 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\n /**\n * Gets the size of an ASCII `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n var asciiSize = baseProperty('length');\n\n /**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function asciiToArray(string) {\n return string.split('');\n }\n\n /**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function asciiWords(string) {\n return string.match(reAsciiWord) || [];\n }\n\n /**\n * The base implementation of methods like `_.findKey` and `_.findLastKey`,\n * without support for iteratee shorthands, which iterates over `collection`\n * using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the found element or its key, else `undefined`.\n */\n function baseFindKey(collection, predicate, eachFunc) {\n var result;\n eachFunc(collection, function(value, key, collection) {\n if (predicate(value, key, collection)) {\n result = key;\n return false;\n }\n });\n return result;\n }\n\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 */\n function 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\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 */\n function baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n }\n\n /**\n * This function is like `baseIndexOf` except that it accepts a comparator.\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 * @param {Function} comparator The comparator invoked per element.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOfWith(array, value, fromIndex, comparator) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (comparator(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\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 */\n function baseIsNaN(value) {\n return value !== value;\n }\n\n /**\n * The base implementation of `_.mean` and `_.meanBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the mean.\n */\n function baseMean(array, iteratee) {\n var length = array == null ? 0 : array.length;\n return length ? (baseSum(array, iteratee) / length) : NAN;\n }\n\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 */\n function baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.reduce` and `_.reduceRight`, without support\n * for iteratee shorthands, which iterates over `collection` using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} accumulator The initial value.\n * @param {boolean} initAccum Specify using the first or last element of\n * `collection` as the initial value.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the accumulated value.\n */\n function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {\n eachFunc(collection, function(value, index, collection) {\n accumulator = initAccum\n ? (initAccum = false, value)\n : iteratee(accumulator, value, index, collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\n function baseSortBy(array, comparer) {\n var length = array.length;\n\n array.sort(comparer);\n while (length--) {\n array[length] = array[length].value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.sum` and `_.sumBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the sum.\n */\n function baseSum(array, iteratee) {\n var result,\n index = -1,\n length = array.length;\n\n while (++index < length) {\n var current = iteratee(array[index]);\n if (current !== undefined) {\n result = result === undefined ? current : (result + current);\n }\n }\n return result;\n }\n\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 */\n function 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\n /**\n * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array\n * of key-value pairs for `object` corresponding to the property names 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 key-value pairs.\n */\n function baseToPairs(object, props) {\n return arrayMap(props, function(key) {\n return [key, object[key]];\n });\n }\n\n /**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\n function baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n }\n\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 */\n function baseUnary(func) {\n return function(value) {\n return func(value);\n };\n }\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 */\n function baseValues(object, props) {\n return arrayMap(props, function(key) {\n return object[key];\n });\n }\n\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 */\n function cacheHas(cache, key) {\n return cache.has(key);\n }\n\n /**\n * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the first unmatched string symbol.\n */\n function charsStartIndex(strSymbols, chrSymbols) {\n var index = -1,\n length = strSymbols.length;\n\n while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the last unmatched string symbol.\n */\n function charsEndIndex(strSymbols, chrSymbols) {\n var index = strSymbols.length;\n\n while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Gets the number of `placeholder` occurrences in `array`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} placeholder The placeholder to search for.\n * @returns {number} Returns the placeholder count.\n */\n function countHolders(array, placeholder) {\n var length = array.length,\n result = 0;\n\n while (length--) {\n if (array[length] === placeholder) {\n ++result;\n }\n }\n return result;\n }\n\n /**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\n var deburrLetter = basePropertyOf(deburredLetters);\n\n /**\n * Used by `_.escape` to convert characters to HTML entities.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n var escapeHtmlChar = basePropertyOf(htmlEscapes);\n\n /**\n * Used by `_.template` to escape characters for inclusion in compiled string literals.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n function escapeStringChar(chr) {\n return '\\\\' + stringEscapes[chr];\n }\n\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 */\n function getValue(object, key) {\n return object == null ? undefined : object[key];\n }\n\n /**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\n function hasUnicode(string) {\n return reHasUnicode.test(string);\n }\n\n /**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\n function hasUnicodeWord(string) {\n return reHasUnicodeWord.test(string);\n }\n\n /**\n * Converts `iterator` to an array.\n *\n * @private\n * @param {Object} iterator The iterator to convert.\n * @returns {Array} Returns the converted array.\n */\n function iteratorToArray(iterator) {\n var data,\n result = [];\n\n while (!(data = iterator.next()).done) {\n result.push(data.value);\n }\n return result;\n }\n\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 */\n function 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\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 */\n function overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n }\n\n /**\n * Replaces all `placeholder` elements in `array` with an internal placeholder\n * and returns an array of their indexes.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {*} placeholder The placeholder to replace.\n * @returns {Array} Returns the new array of placeholder indexes.\n */\n function replaceHolders(array, placeholder) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value === placeholder || value === PLACEHOLDER) {\n array[index] = PLACEHOLDER;\n result[resIndex++] = index;\n }\n }\n return result;\n }\n\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 */\n function 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\n /**\n * Converts `set` to its value-value pairs.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the value-value pairs.\n */\n function setToPairs(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = [value, value];\n });\n return result;\n }\n\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 */\n function 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\n /**\n * A specialized version of `_.lastIndexOf` 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 */\n function strictLastIndexOf(array, value, fromIndex) {\n var index = fromIndex + 1;\n while (index--) {\n if (array[index] === value) {\n return index;\n }\n }\n return index;\n }\n\n /**\n * Gets the number of symbols in `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the string size.\n */\n function stringSize(string) {\n return hasUnicode(string)\n ? unicodeSize(string)\n : asciiSize(string);\n }\n\n /**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n }\n\n /**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\n function trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n }\n\n /**\n * Used by `_.unescape` to convert HTML entities to characters.\n *\n * @private\n * @param {string} chr The matched character to unescape.\n * @returns {string} Returns the unescaped character.\n */\n var unescapeHtmlChar = basePropertyOf(htmlUnescapes);\n\n /**\n * Gets the size of a Unicode `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n function unicodeSize(string) {\n var result = reUnicode.lastIndex = 0;\n while (reUnicode.test(string)) {\n ++result;\n }\n return result;\n }\n\n /**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function unicodeToArray(string) {\n return string.match(reUnicode) || [];\n }\n\n /**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function unicodeWords(string) {\n return string.match(reUnicodeWord) || [];\n }\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * Create a new pristine `lodash` function using the `context` object.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Util\n * @param {Object} [context=root] The context object.\n * @returns {Function} Returns a new `lodash` function.\n * @example\n *\n * _.mixin({ 'foo': _.constant('foo') });\n *\n * var lodash = _.runInContext();\n * lodash.mixin({ 'bar': lodash.constant('bar') });\n *\n * _.isFunction(_.foo);\n * // => true\n * _.isFunction(_.bar);\n * // => false\n *\n * lodash.isFunction(lodash.foo);\n * // => false\n * lodash.isFunction(lodash.bar);\n * // => true\n *\n * // Create a suped-up `defer` in Node.js.\n * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer;\n */\n var runInContext = (function runInContext(context) {\n context = context == null ? root : _.defaults(root.Object(), context, _.pick(root, contextProps));\n\n /** Built-in constructor references. */\n var Array = context.Array,\n Date = context.Date,\n Error = context.Error,\n Function = context.Function,\n Math = context.Math,\n Object = context.Object,\n RegExp = context.RegExp,\n String = context.String,\n TypeError = context.TypeError;\n\n /** Used for built-in method references. */\n var arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n /** Used to detect overreaching core-js shims. */\n var coreJsData = context['__core-js_shared__'];\n\n /** Used to resolve the decompiled source of functions. */\n var funcToString = funcProto.toString;\n\n /** Used to check objects for own properties. */\n var hasOwnProperty = objectProto.hasOwnProperty;\n\n /** Used to generate unique IDs. */\n var idCounter = 0;\n\n /** Used to detect methods masquerading as native. */\n var maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n }());\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 */\n var nativeObjectToString = objectProto.toString;\n\n /** Used to infer the `Object` constructor. */\n var objectCtorString = funcToString.call(Object);\n\n /** Used to restore the original `_` reference in `_.noConflict`. */\n var oldDash = root._;\n\n /** Used to detect if a method is native. */\n var reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n );\n\n /** Built-in value references. */\n var Buffer = moduleExports ? context.Buffer : undefined,\n Symbol = context.Symbol,\n Uint8Array = context.Uint8Array,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined,\n symIterator = Symbol ? Symbol.iterator : undefined,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n var defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n }());\n\n /** Mocked built-ins. */\n var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout,\n ctxNow = Date && Date.now !== root.Date.now && Date.now,\n ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout;\n\n /* Built-in method references for those with the same name as other `lodash` methods. */\n var nativeCeil = Math.ceil,\n nativeFloor = Math.floor,\n nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeIsFinite = context.isFinite,\n nativeJoin = arrayProto.join,\n nativeKeys = overArg(Object.keys, Object),\n nativeMax = Math.max,\n nativeMin = Math.min,\n nativeNow = Date.now,\n nativeParseInt = context.parseInt,\n nativeRandom = Math.random,\n nativeReverse = arrayProto.reverse;\n\n /* Built-in method references that are verified to be native. */\n var DataView = getNative(context, 'DataView'),\n Map = getNative(context, 'Map'),\n Promise = getNative(context, 'Promise'),\n Set = getNative(context, 'Set'),\n WeakMap = getNative(context, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n /** Used to store function metadata. */\n var metaMap = WeakMap && new WeakMap;\n\n /** Used to lookup unminified function names. */\n var realNames = {};\n\n /** Used to detect maps, sets, and weakmaps. */\n var dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n /** Used to convert symbols to primitives and strings. */\n var symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n /*------------------------------------------------------------------------*/\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 */\n function 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 /**\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 */\n var 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\n /**\n * The function whose prototype chain sequence wrappers inherit from.\n *\n * @private\n */\n function baseLodash() {\n // No operation performed.\n }\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 */\n function LodashWrapper(value, chainAll) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__chain__ = !!chainAll;\n this.__index__ = 0;\n this.__values__ = undefined;\n }\n\n /**\n * By default, the template delimiters used by lodash are like those in\n * embedded Ruby (ERB) as well as ES2015 template strings. Change the\n * following template settings to use alternative delimiters.\n *\n * @static\n * @memberOf _\n * @type {Object}\n */\n lodash.templateSettings = {\n\n /**\n * Used to detect `data` property values to be HTML-escaped.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'escape': reEscape,\n\n /**\n * Used to detect code to be evaluated.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'evaluate': reEvaluate,\n\n /**\n * Used to detect `data` property values to inject.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'interpolate': reInterpolate,\n\n /**\n * Used to reference the data object in the template text.\n *\n * @memberOf _.templateSettings\n * @type {string}\n */\n 'variable': '',\n\n /**\n * Used to import variables into the compiled template.\n *\n * @memberOf _.templateSettings\n * @type {Object}\n */\n 'imports': {\n\n /**\n * A reference to the `lodash` function.\n *\n * @memberOf _.templateSettings.imports\n * @type {Function}\n */\n '_': lodash\n }\n };\n\n // Ensure wrappers are instances of `baseLodash`.\n lodash.prototype = baseLodash.prototype;\n lodash.prototype.constructor = lodash;\n\n LodashWrapper.prototype = baseCreate(baseLodash.prototype);\n LodashWrapper.prototype.constructor = LodashWrapper;\n\n /*------------------------------------------------------------------------*/\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 */\n function 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 /**\n * Creates a clone of the lazy wrapper object.\n *\n * @private\n * @name clone\n * @memberOf LazyWrapper\n * @returns {Object} Returns the cloned `LazyWrapper` object.\n */\n function lazyClone() {\n var result = new LazyWrapper(this.__wrapped__);\n result.__actions__ = copyArray(this.__actions__);\n result.__dir__ = this.__dir__;\n result.__filtered__ = this.__filtered__;\n result.__iteratees__ = copyArray(this.__iteratees__);\n result.__takeCount__ = this.__takeCount__;\n result.__views__ = copyArray(this.__views__);\n return result;\n }\n\n /**\n * Reverses the direction of lazy iteration.\n *\n * @private\n * @name reverse\n * @memberOf LazyWrapper\n * @returns {Object} Returns the new reversed `LazyWrapper` object.\n */\n function lazyReverse() {\n if (this.__filtered__) {\n var result = new LazyWrapper(this);\n result.__dir__ = -1;\n result.__filtered__ = true;\n } else {\n result = this.clone();\n result.__dir__ *= -1;\n }\n return result;\n }\n\n /**\n * Extracts the unwrapped value from its lazy wrapper.\n *\n * @private\n * @name value\n * @memberOf LazyWrapper\n * @returns {*} Returns the unwrapped value.\n */\n function lazyValue() {\n var array = this.__wrapped__.value(),\n dir = this.__dir__,\n isArr = isArray(array),\n isRight = dir < 0,\n arrLength = isArr ? array.length : 0,\n view = getView(0, arrLength, this.__views__),\n start = view.start,\n end = view.end,\n length = end - start,\n index = isRight ? end : (start - 1),\n iteratees = this.__iteratees__,\n iterLength = iteratees.length,\n resIndex = 0,\n takeCount = nativeMin(length, this.__takeCount__);\n\n if (!isArr || (!isRight && arrLength == length && takeCount == length)) {\n return baseWrapperValue(array, this.__actions__);\n }\n var result = [];\n\n outer:\n while (length-- && resIndex < takeCount) {\n index += dir;\n\n var iterIndex = -1,\n value = array[index];\n\n while (++iterIndex < iterLength) {\n var data = iteratees[iterIndex],\n iteratee = data.iteratee,\n type = data.type,\n computed = iteratee(value);\n\n if (type == LAZY_MAP_FLAG) {\n value = computed;\n } else if (!computed) {\n if (type == LAZY_FILTER_FLAG) {\n continue outer;\n } else {\n break outer;\n }\n }\n }\n result[resIndex++] = value;\n }\n return result;\n }\n\n // Ensure `LazyWrapper` is an instance of `baseLodash`.\n LazyWrapper.prototype = baseCreate(baseLodash.prototype);\n LazyWrapper.prototype.constructor = LazyWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function 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 /**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\n function hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n }\n\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 */\n function hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n }\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 */\n function 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\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 */\n function hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n }\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 */\n function 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\n // Add methods to `Hash`.\n Hash.prototype.clear = hashClear;\n Hash.prototype['delete'] = hashDelete;\n Hash.prototype.get = hashGet;\n Hash.prototype.has = hashHas;\n Hash.prototype.set = hashSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function 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 /**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\n function listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n }\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 */\n function 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\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 */\n function listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n }\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 */\n function listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n }\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 */\n function 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\n // Add methods to `ListCache`.\n ListCache.prototype.clear = listCacheClear;\n ListCache.prototype['delete'] = listCacheDelete;\n ListCache.prototype.get = listCacheGet;\n ListCache.prototype.has = listCacheHas;\n ListCache.prototype.set = listCacheSet;\n\n /*------------------------------------------------------------------------*/\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 */\n function 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 /**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\n function mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n }\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 */\n function mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n }\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 */\n function mapCacheGet(key) {\n return getMapData(this, key).get(key);\n }\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 */\n function mapCacheHas(key) {\n return getMapData(this, key).has(key);\n }\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 */\n function 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\n // Add methods to `MapCache`.\n MapCache.prototype.clear = mapCacheClear;\n MapCache.prototype['delete'] = mapCacheDelete;\n MapCache.prototype.get = mapCacheGet;\n MapCache.prototype.has = mapCacheHas;\n MapCache.prototype.set = mapCacheSet;\n\n /*------------------------------------------------------------------------*/\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 */\n function 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 /**\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 */\n function setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n }\n\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 */\n function setCacheHas(value) {\n return this.__data__.has(value);\n }\n\n // Add methods to `SetCache`.\n SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\n SetCache.prototype.has = setCacheHas;\n\n /*------------------------------------------------------------------------*/\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 */\n function Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n }\n\n /**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\n function stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n }\n\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 */\n function stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n }\n\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 */\n function stackGet(key) {\n return this.__data__.get(key);\n }\n\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 */\n function stackHas(key) {\n return this.__data__.has(key);\n }\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 */\n function 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\n // Add methods to `Stack`.\n Stack.prototype.clear = stackClear;\n Stack.prototype['delete'] = stackDelete;\n Stack.prototype.get = stackGet;\n Stack.prototype.has = stackHas;\n Stack.prototype.set = stackSet;\n\n /*------------------------------------------------------------------------*/\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 */\n function 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\n /**\n * A specialized version of `_.sample` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @returns {*} Returns the random element.\n */\n function arraySample(array) {\n var length = array.length;\n return length ? array[baseRandom(0, length - 1)] : undefined;\n }\n\n /**\n * A specialized version of `_.sampleSize` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function arraySampleSize(array, n) {\n return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length));\n }\n\n /**\n * A specialized version of `_.shuffle` for arrays.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function arrayShuffle(array) {\n return shuffleSelf(copyArray(array));\n }\n\n /**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\n\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 */\n function 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\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 */\n function 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\n /**\n * Aggregates elements of `collection` on `accumulator` with keys transformed\n * by `iteratee` and values set by `setter`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseAggregator(collection, setter, iteratee, accumulator) {\n baseEach(collection, function(value, key, collection) {\n setter(accumulator, value, iteratee(value), collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n }\n\n /**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n }\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 */\n function 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\n /**\n * The base implementation of `_.at` without support for individual paths.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {string[]} paths The property paths to pick.\n * @returns {Array} Returns the picked elements.\n */\n function baseAt(object, paths) {\n var index = -1,\n length = paths.length,\n result = Array(length),\n skip = object == null;\n\n while (++index < length) {\n result[index] = skip ? undefined : get(object, paths[index]);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.clamp` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n */\n function baseClamp(number, lower, upper) {\n if (number === number) {\n if (upper !== undefined) {\n number = number <= upper ? number : upper;\n }\n if (lower !== undefined) {\n number = number >= lower ? number : lower;\n }\n }\n return number;\n }\n\n /**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\n function baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n }\n\n /**\n * The base implementation of `_.conforms` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property predicates to conform to.\n * @returns {Function} Returns the new spec function.\n */\n function baseConforms(source) {\n var props = keys(source);\n return function(object) {\n return baseConformsTo(object, source, props);\n };\n }\n\n /**\n * The base implementation of `_.conformsTo` which accepts `props` to check.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n */\n function baseConformsTo(object, source, props) {\n var length = props.length;\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (length--) {\n var key = props[length],\n predicate = source[key],\n value = object[key];\n\n if ((value === undefined && !(key in object)) || !predicate(value)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.delay` and `_.defer` which accepts `args`\n * to provide to `func`.\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {Array} args The arguments to provide to `func`.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n function baseDelay(func, wait, args) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return setTimeout(function() { func.apply(undefined, args); }, wait);\n }\n\n /**\n * The base implementation of methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\n function baseDifference(array, values, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n isCommon = true,\n length = array.length,\n result = [],\n valuesLength = values.length;\n\n if (!length) {\n return result;\n }\n if (iteratee) {\n values = arrayMap(values, baseUnary(iteratee));\n }\n if (comparator) {\n includes = arrayIncludesWith;\n isCommon = false;\n }\n else if (values.length >= LARGE_ARRAY_SIZE) {\n includes = cacheHas;\n isCommon = false;\n values = new SetCache(values);\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee == null ? value : iteratee(value);\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var valuesIndex = valuesLength;\n while (valuesIndex--) {\n if (values[valuesIndex] === computed) {\n continue outer;\n }\n }\n result.push(value);\n }\n else if (!includes(values, computed, comparator)) {\n result.push(value);\n }\n }\n return result;\n }\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 */\n var baseEach = createBaseEach(baseForOwn);\n\n /**\n * The base implementation of `_.forEachRight` 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 */\n var baseEachRight = createBaseEach(baseForOwnRight, true);\n\n /**\n * The base implementation of `_.every` 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 all elements pass the predicate check,\n * else `false`\n */\n function baseEvery(collection, predicate) {\n var result = true;\n baseEach(collection, function(value, index, collection) {\n result = !!predicate(value, index, collection);\n return result;\n });\n return result;\n }\n\n /**\n * The base implementation of methods like `_.max` and `_.min` which accepts a\n * `comparator` to determine the extremum value.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The iteratee invoked per iteration.\n * @param {Function} comparator The comparator used to compare values.\n * @returns {*} Returns the extremum value.\n */\n function baseExtremum(array, iteratee, comparator) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n var value = array[index],\n current = iteratee(value);\n\n if (current != null && (computed === undefined\n ? (current === current && !isSymbol(current))\n : comparator(current, computed)\n )) {\n var computed = current,\n result = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.fill` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n */\n function baseFill(array, value, start, end) {\n var length = array.length;\n\n start = toInteger(start);\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = (end === undefined || end > length) ? length : toInteger(end);\n if (end < 0) {\n end += length;\n }\n end = start > end ? 0 : toLength(end);\n while (start < end) {\n array[start++] = value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.filter` 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 {Array} Returns the new filtered array.\n */\n function baseFilter(collection, predicate) {\n var result = [];\n baseEach(collection, function(value, index, collection) {\n if (predicate(value, index, collection)) {\n result.push(value);\n }\n });\n return result;\n }\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 */\n function 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\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 */\n var baseFor = createBaseFor();\n\n /**\n * This function is like `baseFor` except that it iterates over properties\n * in the opposite order.\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 */\n var baseForRight = createBaseFor(true);\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 */\n function baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.forOwnRight` 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 */\n function baseForOwnRight(object, iteratee) {\n return object && baseForRight(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.functions` which creates an array of\n * `object` function property names filtered from `props`.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Array} props The property names to filter.\n * @returns {Array} Returns the function names.\n */\n function baseFunctions(object, props) {\n return arrayFilter(props, function(key) {\n return isFunction(object[key]);\n });\n }\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 */\n function 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\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 */\n function baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n }\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 */\n function 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\n /**\n * The base implementation of `_.gt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n */\n function baseGt(value, other) {\n return value > other;\n }\n\n /**\n * The base implementation of `_.has` 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 */\n function baseHas(object, key) {\n return object != null && hasOwnProperty.call(object, key);\n }\n\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 */\n function baseHasIn(object, key) {\n return object != null && key in Object(object);\n }\n\n /**\n * The base implementation of `_.inRange` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to check.\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n */\n function baseInRange(number, start, end) {\n return number >= nativeMin(start, end) && number < nativeMax(start, end);\n }\n\n /**\n * The base implementation of methods like `_.intersection`, without support\n * for iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of shared values.\n */\n function baseIntersection(arrays, iteratee, comparator) {\n var includes = comparator ? arrayIncludesWith : arrayIncludes,\n length = arrays[0].length,\n othLength = arrays.length,\n othIndex = othLength,\n caches = Array(othLength),\n maxLength = Infinity,\n result = [];\n\n while (othIndex--) {\n var array = arrays[othIndex];\n if (othIndex && iteratee) {\n array = arrayMap(array, baseUnary(iteratee));\n }\n maxLength = nativeMin(array.length, maxLength);\n caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))\n ? new SetCache(othIndex && array)\n : undefined;\n }\n array = arrays[0];\n\n var index = -1,\n seen = caches[0];\n\n outer:\n while (++index < length && result.length < maxLength) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (!(seen\n ? cacheHas(seen, computed)\n : includes(result, computed, comparator)\n )) {\n othIndex = othLength;\n while (--othIndex) {\n var cache = caches[othIndex];\n if (!(cache\n ? cacheHas(cache, computed)\n : includes(arrays[othIndex], computed, comparator))\n ) {\n continue outer;\n }\n }\n if (seen) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.invert` and `_.invertBy` which inverts\n * `object` with values transformed by `iteratee` and set by `setter`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform values.\n * @param {Object} accumulator The initial inverted object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseInverter(object, setter, iteratee, accumulator) {\n baseForOwn(object, function(value, key, object) {\n setter(accumulator, iteratee(value), key, object);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.invoke` without support for individual\n * method arguments.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {Array} args The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n */\n function baseInvoke(object, path, args) {\n path = castPath(path, object);\n object = parent(object, path);\n var func = object == null ? object : object[toKey(last(path))];\n return func == null ? undefined : apply(func, object, args);\n }\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 */\n function baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n }\n\n /**\n * The base implementation of `_.isArrayBuffer` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n */\n function baseIsArrayBuffer(value) {\n return isObjectLike(value) && baseGetTag(value) == arrayBufferTag;\n }\n\n /**\n * The base implementation of `_.isDate` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n */\n function baseIsDate(value) {\n return isObjectLike(value) && baseGetTag(value) == dateTag;\n }\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 */\n function 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\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 */\n function 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\n /**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\n function baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n }\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 */\n function 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\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 */\n function 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\n /**\n * The base implementation of `_.isRegExp` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n */\n function baseIsRegExp(value) {\n return isObjectLike(value) && baseGetTag(value) == regexpTag;\n }\n\n /**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\n function baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n }\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 */\n function baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n }\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 */\n function 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\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 */\n function 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\n /**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.lt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n */\n function baseLt(value, other) {\n return value < other;\n }\n\n /**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n }\n\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 */\n function 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\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 */\n function 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\n /**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n }\n\n /**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n }\n\n /**\n * The base implementation of `_.nth` which doesn't coerce arguments.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {number} n The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n */\n function baseNth(array, n) {\n var length = array.length;\n if (!length) {\n return;\n }\n n += n < 0 ? length : 0;\n return isIndex(n, length) ? array[n] : undefined;\n }\n\n /**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\n function baseOrderBy(collection, iteratees, orders) {\n if (iteratees.length) {\n iteratees = arrayMap(iteratees, function(iteratee) {\n if (isArray(iteratee)) {\n return function(value) {\n return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee);\n }\n }\n return iteratee;\n });\n } else {\n iteratees = [identity];\n }\n\n var index = -1;\n iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n\n var result = baseMap(collection, function(value, key, collection) {\n var criteria = arrayMap(iteratees, function(iteratee) {\n return iteratee(value);\n });\n return { 'criteria': criteria, 'index': ++index, 'value': value };\n });\n\n return baseSortBy(result, function(object, other) {\n return compareMultiple(object, other, orders);\n });\n }\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 */\n function basePick(object, paths) {\n return basePickBy(object, paths, function(value, path) {\n return hasIn(object, path);\n });\n }\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 */\n function 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\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 */\n function basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n }\n\n /**\n * The base implementation of `_.pullAllBy` without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n */\n function basePullAll(array, values, iteratee, comparator) {\n var indexOf = comparator ? baseIndexOfWith : baseIndexOf,\n index = -1,\n length = values.length,\n seen = array;\n\n if (array === values) {\n values = copyArray(values);\n }\n if (iteratee) {\n seen = arrayMap(array, baseUnary(iteratee));\n }\n while (++index < length) {\n var fromIndex = 0,\n value = values[index],\n computed = iteratee ? iteratee(value) : value;\n\n while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) {\n if (seen !== array) {\n splice.call(seen, fromIndex, 1);\n }\n splice.call(array, fromIndex, 1);\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.pullAt` without support for individual\n * indexes or capturing the removed elements.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {number[]} indexes The indexes of elements to remove.\n * @returns {Array} Returns `array`.\n */\n function basePullAt(array, indexes) {\n var length = array ? indexes.length : 0,\n lastIndex = length - 1;\n\n while (length--) {\n var index = indexes[length];\n if (length == lastIndex || index !== previous) {\n var previous = index;\n if (isIndex(index)) {\n splice.call(array, index, 1);\n } else {\n baseUnset(array, index);\n }\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.random` without support for returning\n * floating-point numbers.\n *\n * @private\n * @param {number} lower The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the random number.\n */\n function baseRandom(lower, upper) {\n return lower + nativeFloor(nativeRandom() * (upper - lower + 1));\n }\n\n /**\n * The base implementation of `_.range` and `_.rangeRight` which doesn't\n * coerce arguments.\n *\n * @private\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @param {number} step The value to increment or decrement by.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the range of numbers.\n */\n function baseRange(start, end, step, fromRight) {\n var index = -1,\n length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n result = Array(length);\n\n while (length--) {\n result[fromRight ? length : ++index] = start;\n start += step;\n }\n return result;\n }\n\n /**\n * The base implementation of `_.repeat` which doesn't coerce arguments.\n *\n * @private\n * @param {string} string The string to repeat.\n * @param {number} n The number of times to repeat the string.\n * @returns {string} Returns the repeated string.\n */\n function baseRepeat(string, n) {\n var result = '';\n if (!string || n < 1 || n > MAX_SAFE_INTEGER) {\n return result;\n }\n // Leverage the exponentiation by squaring algorithm for a faster repeat.\n // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details.\n do {\n if (n % 2) {\n result += string;\n }\n n = nativeFloor(n / 2);\n if (n) {\n string += string;\n }\n } while (n);\n\n return result;\n }\n\n /**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\n function baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n }\n\n /**\n * The base implementation of `_.sample`.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n */\n function baseSample(collection) {\n return arraySample(values(collection));\n }\n\n /**\n * The base implementation of `_.sampleSize` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function baseSampleSize(collection, n) {\n var array = values(collection);\n return shuffleSelf(array, baseClamp(n, 0, array.length));\n }\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 */\n function 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 (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return object;\n }\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\n /**\n * The base implementation of `setData` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var baseSetData = !metaMap ? identity : function(func, data) {\n metaMap.set(func, data);\n return func;\n };\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 */\n var 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\n /**\n * The base implementation of `_.shuffle`.\n *\n * @private\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function baseShuffle(collection) {\n return shuffleSelf(values(collection));\n }\n\n /**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n }\n\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 */\n function 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\n /**\n * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which\n * performs a binary search of `array` to determine the index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndex(array, value, retHighest) {\n var low = 0,\n high = array == null ? low : array.length;\n\n if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) {\n while (low < high) {\n var mid = (low + high) >>> 1,\n computed = array[mid];\n\n if (computed !== null && !isSymbol(computed) &&\n (retHighest ? (computed <= value) : (computed < value))) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return high;\n }\n return baseSortedIndexBy(array, value, identity, retHighest);\n }\n\n /**\n * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy`\n * which invokes `iteratee` for `value` and each element of `array` to compute\n * their sort ranking. The iteratee is invoked with one argument; (value).\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} iteratee The iteratee invoked per element.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndexBy(array, value, iteratee, retHighest) {\n var low = 0,\n high = array == null ? 0 : array.length;\n if (high === 0) {\n return 0;\n }\n\n value = iteratee(value);\n var valIsNaN = value !== value,\n valIsNull = value === null,\n valIsSymbol = isSymbol(value),\n valIsUndefined = value === undefined;\n\n while (low < high) {\n var mid = nativeFloor((low + high) / 2),\n computed = iteratee(array[mid]),\n othIsDefined = computed !== undefined,\n othIsNull = computed === null,\n othIsReflexive = computed === computed,\n othIsSymbol = isSymbol(computed);\n\n if (valIsNaN) {\n var setLow = retHighest || othIsReflexive;\n } else if (valIsUndefined) {\n setLow = othIsReflexive && (retHighest || othIsDefined);\n } else if (valIsNull) {\n setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull);\n } else if (valIsSymbol) {\n setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol);\n } else if (othIsNull || othIsSymbol) {\n setLow = false;\n } else {\n setLow = retHighest ? (computed <= value) : (computed < value);\n }\n if (setLow) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return nativeMin(high, MAX_ARRAY_INDEX);\n }\n\n /**\n * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseSortedUniq(array, iteratee) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n if (!index || !eq(computed, seen)) {\n var seen = computed;\n result[resIndex++] = value === 0 ? 0 : value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toNumber` which doesn't ensure correct\n * conversions of binary, hexadecimal, or octal string values.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n */\n function baseToNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n return +value;\n }\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 */\n function 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\n /**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.unset`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The property path to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n */\n function baseUnset(object, path) {\n path = castPath(path, object);\n object = parent(object, path);\n return object == null || delete object[toKey(last(path))];\n }\n\n /**\n * The base implementation of `_.update`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to update.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseUpdate(object, path, updater, customizer) {\n return baseSet(object, path, updater(baseGet(object, path)), customizer);\n }\n\n /**\n * The base implementation of methods like `_.dropWhile` and `_.takeWhile`\n * without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {Function} predicate The function invoked per iteration.\n * @param {boolean} [isDrop] Specify dropping elements instead of taking them.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseWhile(array, predicate, isDrop, fromRight) {\n var length = array.length,\n index = fromRight ? length : -1;\n\n while ((fromRight ? index-- : ++index < length) &&\n predicate(array[index], index, array)) {}\n\n return isDrop\n ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length))\n : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index));\n }\n\n /**\n * The base implementation of `wrapperValue` which returns the result of\n * performing a sequence of actions on the unwrapped `value`, where each\n * successive action is supplied the return value of the previous.\n *\n * @private\n * @param {*} value The unwrapped value.\n * @param {Array} actions Actions to perform to resolve the unwrapped value.\n * @returns {*} Returns the resolved value.\n */\n function baseWrapperValue(value, actions) {\n var result = value;\n if (result instanceof LazyWrapper) {\n result = result.value();\n }\n return arrayReduce(actions, function(result, action) {\n return action.func.apply(action.thisArg, arrayPush([result], action.args));\n }, result);\n }\n\n /**\n * The base implementation of methods like `_.xor`, without support for\n * iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of values.\n */\n function baseXor(arrays, iteratee, comparator) {\n var length = arrays.length;\n if (length < 2) {\n return length ? baseUniq(arrays[0]) : [];\n }\n var index = -1,\n result = Array(length);\n\n while (++index < length) {\n var array = arrays[index],\n othIndex = -1;\n\n while (++othIndex < length) {\n if (othIndex != index) {\n result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator);\n }\n }\n }\n return baseUniq(baseFlatten(result, 1), iteratee, comparator);\n }\n\n /**\n * This base implementation of `_.zipObject` which assigns values using `assignFunc`.\n *\n * @private\n * @param {Array} props The property identifiers.\n * @param {Array} values The property values.\n * @param {Function} assignFunc The function to assign values.\n * @returns {Object} Returns the new object.\n */\n function baseZipObject(props, values, assignFunc) {\n var index = -1,\n length = props.length,\n valsLength = values.length,\n result = {};\n\n while (++index < length) {\n var value = index < valsLength ? values[index] : undefined;\n assignFunc(result, props[index], value);\n }\n return result;\n }\n\n /**\n * Casts `value` to an empty array if it's not an array like object.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array|Object} Returns the cast array-like object.\n */\n function castArrayLikeObject(value) {\n return isArrayLikeObject(value) ? value : [];\n }\n\n /**\n * Casts `value` to `identity` if it's not a function.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Function} Returns cast function.\n */\n function castFunction(value) {\n return typeof value == 'function' ? value : identity;\n }\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 */\n function castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n }\n\n /**\n * A `baseRest` alias which can be replaced with `identity` by module\n * replacement plugins.\n *\n * @private\n * @type {Function}\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n var castRest = baseRest;\n\n /**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\n function castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n }\n\n /**\n * A simple wrapper around the global [`clearTimeout`](https://mdn.io/clearTimeout).\n *\n * @private\n * @param {number|Object} id The timer id or timeout object of the timer to clear.\n */\n var clearTimeout = ctxClearTimeout || function(id) {\n return root.clearTimeout(id);\n };\n\n /**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\n function cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n }\n\n /**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\n function cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n }\n\n /**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\n function cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n }\n\n /**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\n function cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n }\n\n /**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\n function cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n }\n\n /**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\n function cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n }\n\n /**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\n function compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined,\n valIsNull = value === null,\n valIsReflexive = value === value,\n valIsSymbol = isSymbol(value);\n\n var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = isSymbol(other);\n\n if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n (valIsNull && othIsDefined && othIsReflexive) ||\n (!valIsDefined && othIsReflexive) ||\n !valIsReflexive) {\n return 1;\n }\n if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n (othIsNull && valIsDefined && valIsReflexive) ||\n (!othIsDefined && valIsReflexive) ||\n !othIsReflexive) {\n return -1;\n }\n }\n return 0;\n }\n\n /**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\n function compareMultiple(object, other, orders) {\n var index = -1,\n objCriteria = object.criteria,\n othCriteria = other.criteria,\n length = objCriteria.length,\n ordersLength = orders.length;\n\n while (++index < length) {\n var result = compareAscending(objCriteria[index], othCriteria[index]);\n if (result) {\n if (index >= ordersLength) {\n return result;\n }\n var order = orders[index];\n return result * (order == 'desc' ? -1 : 1);\n }\n }\n // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n // that causes it, under certain circumstances, to provide the same value for\n // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n // for more details.\n //\n // This also ensures a stable sort in V8 and other engines.\n // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n return object.index - other.index;\n }\n\n /**\n * Creates an array that is the composition of partially applied arguments,\n * placeholders, and provided arguments into a single array of arguments.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to prepend to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgs(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersLength = holders.length,\n leftIndex = -1,\n leftLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(leftLength + rangeLength),\n isUncurried = !isCurried;\n\n while (++leftIndex < leftLength) {\n result[leftIndex] = partials[leftIndex];\n }\n while (++argsIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[holders[argsIndex]] = args[argsIndex];\n }\n }\n while (rangeLength--) {\n result[leftIndex++] = args[argsIndex++];\n }\n return result;\n }\n\n /**\n * This function is like `composeArgs` except that the arguments composition\n * is tailored for `_.partialRight`.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to append to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgsRight(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersIndex = -1,\n holdersLength = holders.length,\n rightIndex = -1,\n rightLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(rangeLength + rightLength),\n isUncurried = !isCurried;\n\n while (++argsIndex < rangeLength) {\n result[argsIndex] = args[argsIndex];\n }\n var offset = argsIndex;\n while (++rightIndex < rightLength) {\n result[offset + rightIndex] = partials[rightIndex];\n }\n while (++holdersIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[offset + holders[holdersIndex]] = args[argsIndex++];\n }\n }\n return result;\n }\n\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 */\n function 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\n /**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\n function copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n }\n\n /**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n }\n\n /**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n }\n\n /**\n * Creates a function like `_.groupBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} [initializer] The accumulator object initializer.\n * @returns {Function} Returns the new aggregator function.\n */\n function createAggregator(setter, initializer) {\n return function(collection, iteratee) {\n var func = isArray(collection) ? arrayAggregator : baseAggregator,\n accumulator = initializer ? initializer() : {};\n\n return func(collection, setter, getIteratee(iteratee, 2), accumulator);\n };\n }\n\n /**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\n function createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n }\n\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 */\n function 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\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 */\n function 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\n /**\n * Creates a function that wraps `func` to invoke it with the optional `this`\n * binding of `thisArg`.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createBind(func, bitmask, thisArg) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return fn.apply(isBind ? thisArg : this, arguments);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\n function createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n }\n\n /**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\n function createCompounder(callback) {\n return function(string) {\n return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n };\n }\n\n /**\n * Creates a function that produces an instance of `Ctor` regardless of\n * whether it was invoked as part of a `new` expression or by `call` or `apply`.\n *\n * @private\n * @param {Function} Ctor The constructor to wrap.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCtor(Ctor) {\n return function() {\n // Use a `switch` statement to work with class constructors. See\n // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist\n // for more details.\n var args = arguments;\n switch (args.length) {\n case 0: return new Ctor;\n case 1: return new Ctor(args[0]);\n case 2: return new Ctor(args[0], args[1]);\n case 3: return new Ctor(args[0], args[1], args[2]);\n case 4: return new Ctor(args[0], args[1], args[2], args[3]);\n case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);\n case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);\n case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);\n }\n var thisBinding = baseCreate(Ctor.prototype),\n result = Ctor.apply(thisBinding, args);\n\n // Mimic the constructor's `return` behavior.\n // See https://es5.github.io/#x13.2.2 for more details.\n return isObject(result) ? result : thisBinding;\n };\n }\n\n /**\n * Creates a function that wraps `func` to enable currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {number} arity The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCurry(func, bitmask, arity) {\n var Ctor = createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length,\n placeholder = getHolder(wrapper);\n\n while (index--) {\n args[index] = arguments[index];\n }\n var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder)\n ? []\n : replaceHolders(args, placeholder);\n\n length -= holders.length;\n if (length < arity) {\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, undefined,\n args, holders, undefined, undefined, arity - length);\n }\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return apply(fn, this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\n function createFind(findIndexFunc) {\n return function(collection, predicate, fromIndex) {\n var iterable = Object(collection);\n if (!isArrayLike(collection)) {\n var iteratee = getIteratee(predicate, 3);\n collection = keys(collection);\n predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n }\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n }\n\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 */\n function 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\n /**\n * Creates a function that wraps `func` to invoke it with optional `this`\n * binding of `thisArg`, partial application, and currying.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [partialsRight] The arguments to append to those provided\n * to the new function.\n * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {\n var isAry = bitmask & WRAP_ARY_FLAG,\n isBind = bitmask & WRAP_BIND_FLAG,\n isBindKey = bitmask & WRAP_BIND_KEY_FLAG,\n isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG),\n isFlip = bitmask & WRAP_FLIP_FLAG,\n Ctor = isBindKey ? undefined : createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length;\n\n while (index--) {\n args[index] = arguments[index];\n }\n if (isCurried) {\n var placeholder = getHolder(wrapper),\n holdersCount = countHolders(args, placeholder);\n }\n if (partials) {\n args = composeArgs(args, partials, holders, isCurried);\n }\n if (partialsRight) {\n args = composeArgsRight(args, partialsRight, holdersRight, isCurried);\n }\n length -= holdersCount;\n if (isCurried && length < arity) {\n var newHolders = replaceHolders(args, placeholder);\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, thisArg,\n args, newHolders, argPos, ary, arity - length\n );\n }\n var thisBinding = isBind ? thisArg : this,\n fn = isBindKey ? thisBinding[func] : func;\n\n length = args.length;\n if (argPos) {\n args = reorder(args, argPos);\n } else if (isFlip && length > 1) {\n args.reverse();\n }\n if (isAry && ary < length) {\n args.length = ary;\n }\n if (this && this !== root && this instanceof wrapper) {\n fn = Ctor || createCtor(fn);\n }\n return fn.apply(thisBinding, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.invertBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} toIteratee The function to resolve iteratees.\n * @returns {Function} Returns the new inverter function.\n */\n function createInverter(setter, toIteratee) {\n return function(object, iteratee) {\n return baseInverter(object, setter, toIteratee(iteratee), {});\n };\n }\n\n /**\n * Creates a function that performs a mathematical operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @param {number} [defaultValue] The value used for `undefined` arguments.\n * @returns {Function} Returns the new mathematical operation function.\n */\n function createMathOperation(operator, defaultValue) {\n return function(value, other) {\n var result;\n if (value === undefined && other === undefined) {\n return defaultValue;\n }\n if (value !== undefined) {\n result = value;\n }\n if (other !== undefined) {\n if (result === undefined) {\n return other;\n }\n if (typeof value == 'string' || typeof other == 'string') {\n value = baseToString(value);\n other = baseToString(other);\n } else {\n value = baseToNumber(value);\n other = baseToNumber(other);\n }\n result = operator(value, other);\n }\n return result;\n };\n }\n\n /**\n * Creates a function like `_.over`.\n *\n * @private\n * @param {Function} arrayFunc The function to iterate over iteratees.\n * @returns {Function} Returns the new over function.\n */\n function createOver(arrayFunc) {\n return flatRest(function(iteratees) {\n iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n return baseRest(function(args) {\n var thisArg = this;\n return arrayFunc(iteratees, function(iteratee) {\n return apply(iteratee, thisArg, args);\n });\n });\n });\n }\n\n /**\n * Creates the padding for `string` based on `length`. The `chars` string\n * is truncated if the number of characters exceeds `length`.\n *\n * @private\n * @param {number} length The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padding for `string`.\n */\n function createPadding(length, chars) {\n chars = chars === undefined ? ' ' : baseToString(chars);\n\n var charsLength = chars.length;\n if (charsLength < 2) {\n return charsLength ? baseRepeat(chars, length) : chars;\n }\n var result = baseRepeat(chars, nativeCeil(length / stringSize(chars)));\n return hasUnicode(chars)\n ? castSlice(stringToArray(result), 0, length).join('')\n : result.slice(0, length);\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the `this` binding\n * of `thisArg` and `partials` prepended to the arguments it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} partials The arguments to prepend to those provided to\n * the new function.\n * @returns {Function} Returns the new wrapped function.\n */\n function createPartial(func, bitmask, thisArg, partials) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var argsIndex = -1,\n argsLength = arguments.length,\n leftIndex = -1,\n leftLength = partials.length,\n args = Array(leftLength + argsLength),\n fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n\n while (++leftIndex < leftLength) {\n args[leftIndex] = partials[leftIndex];\n }\n while (argsLength--) {\n args[leftIndex++] = arguments[++argsIndex];\n }\n return apply(fn, isBind ? thisArg : this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.range` or `_.rangeRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new range function.\n */\n function createRange(fromRight) {\n return function(start, end, step) {\n if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n end = step = undefined;\n }\n // Ensure the sign of `-0` is preserved.\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n return baseRange(start, end, step, fromRight);\n };\n }\n\n /**\n * Creates a function that performs a relational operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @returns {Function} Returns the new relational operation function.\n */\n function createRelationalOperation(operator) {\n return function(value, other) {\n if (!(typeof value == 'string' && typeof other == 'string')) {\n value = toNumber(value);\n other = toNumber(other);\n }\n return operator(value, other);\n };\n }\n\n /**\n * Creates a function that wraps `func` to continue currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {Function} wrapFunc The function to create the `func` wrapper.\n * @param {*} placeholder The placeholder value.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {\n var isCurry = bitmask & WRAP_CURRY_FLAG,\n newHolders = isCurry ? holders : undefined,\n newHoldersRight = isCurry ? undefined : holders,\n newPartials = isCurry ? partials : undefined,\n newPartialsRight = isCurry ? undefined : partials;\n\n bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG);\n bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);\n\n if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {\n bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);\n }\n var newData = [\n func, bitmask, thisArg, newPartials, newHolders, newPartialsRight,\n newHoldersRight, argPos, ary, arity\n ];\n\n var result = wrapFunc.apply(undefined, newData);\n if (isLaziable(func)) {\n setData(result, newData);\n }\n result.placeholder = placeholder;\n return setWrapToString(result, func, bitmask);\n }\n\n /**\n * Creates a function like `_.round`.\n *\n * @private\n * @param {string} methodName The name of the `Math` method to use when rounding.\n * @returns {Function} Returns the new round function.\n */\n function createRound(methodName) {\n var func = Math[methodName];\n return function(number, precision) {\n number = toNumber(number);\n precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);\n if (precision && nativeIsFinite(number)) {\n // Shift with exponential notation to avoid floating-point issues.\n // See [MDN](https://mdn.io/round#Examples) for more details.\n var pair = (toString(number) + 'e').split('e'),\n value = func(pair[0] + 'e' + (+pair[1] + precision));\n\n pair = (toString(value) + 'e').split('e');\n return +(pair[0] + 'e' + (+pair[1] - precision));\n }\n return func(number);\n };\n }\n\n /**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\n var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n };\n\n /**\n * Creates a `_.toPairs` or `_.toPairsIn` function.\n *\n * @private\n * @param {Function} keysFunc The function to get the keys of a given object.\n * @returns {Function} Returns the new pairs function.\n */\n function createToPairs(keysFunc) {\n return function(object) {\n var tag = getTag(object);\n if (tag == mapTag) {\n return mapToArray(object);\n }\n if (tag == setTag) {\n return setToPairs(object);\n }\n return baseToPairs(object, keysFunc(object));\n };\n }\n\n /**\n * Creates a function that either curries or invokes `func` with optional\n * `this` binding and partially applied arguments.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags.\n * 1 - `_.bind`\n * 2 - `_.bindKey`\n * 4 - `_.curry` or `_.curryRight` of a bound function\n * 8 - `_.curry`\n * 16 - `_.curryRight`\n * 32 - `_.partial`\n * 64 - `_.partialRight`\n * 128 - `_.rearg`\n * 256 - `_.ary`\n * 512 - `_.flip`\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to be partially applied.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {\n var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;\n if (!isBindKey && typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var length = partials ? partials.length : 0;\n if (!length) {\n bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);\n partials = holders = undefined;\n }\n ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0);\n arity = arity === undefined ? arity : toInteger(arity);\n length -= holders ? holders.length : 0;\n\n if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {\n var partialsRight = partials,\n holdersRight = holders;\n\n partials = holders = undefined;\n }\n var data = isBindKey ? undefined : getData(func);\n\n var newData = [\n func, bitmask, thisArg, partials, holders, partialsRight, holdersRight,\n argPos, ary, arity\n ];\n\n if (data) {\n mergeData(newData, data);\n }\n func = newData[0];\n bitmask = newData[1];\n thisArg = newData[2];\n partials = newData[3];\n holders = newData[4];\n arity = newData[9] = newData[9] === undefined\n ? (isBindKey ? 0 : func.length)\n : nativeMax(newData[9] - length, 0);\n\n if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {\n bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);\n }\n if (!bitmask || bitmask == WRAP_BIND_FLAG) {\n var result = createBind(func, bitmask, thisArg);\n } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {\n result = createCurry(func, bitmask, arity);\n } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {\n result = createPartial(func, bitmask, thisArg, partials);\n } else {\n result = createHybrid.apply(undefined, newData);\n }\n var setter = data ? baseSetData : setData;\n return setWrapToString(setter(result, newData), func, bitmask);\n }\n\n /**\n * Used by `_.defaults` to customize its `_.assignIn` use to assign properties\n * of source objects to the destination object for all destination properties\n * that resolve to `undefined`.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to assign.\n * @param {Object} object The parent object of `objValue`.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsAssignIn(objValue, srcValue, key, object) {\n if (objValue === undefined ||\n (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n return srcValue;\n }\n return objValue;\n }\n\n /**\n * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source\n * objects into destination objects that are passed thru.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to merge.\n * @param {Object} object The parent object of `objValue`.\n * @param {Object} source The parent object of `srcValue`.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsMerge(objValue, srcValue, key, object, source, stack) {\n if (isObject(objValue) && isObject(srcValue)) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, objValue);\n baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack);\n stack['delete'](srcValue);\n }\n return objValue;\n }\n\n /**\n * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain\n * objects.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {string} key The key of the property to inspect.\n * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.\n */\n function customOmitClone(value) {\n return isPlainObject(value) ? undefined : value;\n }\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 */\n function 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 // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\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\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 */\n function 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\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 */\n function 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 // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\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\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 */\n function flatRest(func) {\n return setToString(overRest(func, undefined, flatten), func + '');\n }\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 */\n function getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n }\n\n /**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n }\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 */\n var getData = !metaMap ? noop : function(func) {\n return metaMap.get(func);\n };\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 */\n function 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\n /**\n * Gets the argument placeholder value for `func`.\n *\n * @private\n * @param {Function} func The function to inspect.\n * @returns {*} Returns the placeholder value.\n */\n function getHolder(func) {\n var object = hasOwnProperty.call(lodash, 'placeholder') ? lodash : func;\n return object.placeholder;\n }\n\n /**\n * Gets the appropriate \"iteratee\" function. If `_.iteratee` is customized,\n * this function returns the custom method, otherwise it returns `baseIteratee`.\n * If arguments are provided, the chosen function is invoked with them and\n * its result is returned.\n *\n * @private\n * @param {*} [value] The value to convert to an iteratee.\n * @param {number} [arity] The arity of the created iteratee.\n * @returns {Function} Returns the chosen function or its result.\n */\n function getIteratee() {\n var result = lodash.iteratee || iteratee;\n result = result === iteratee ? baseIteratee : result;\n return arguments.length ? result(arguments[0], arguments[1]) : result;\n }\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 */\n function getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n }\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 */\n function 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\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 */\n function getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n }\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 */\n function 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\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 */\n var 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\n /**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n };\n\n /**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n var getTag = baseGetTag;\n\n // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\n if ((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\n /**\n * Gets the view, applying any `transforms` to the `start` and `end` positions.\n *\n * @private\n * @param {number} start The start of the view.\n * @param {number} end The end of the view.\n * @param {Array} transforms The transformations to apply to the view.\n * @returns {Object} Returns an object containing the `start` and `end`\n * positions of the view.\n */\n function getView(start, end, transforms) {\n var index = -1,\n length = transforms.length;\n\n while (++index < length) {\n var data = transforms[index],\n size = data.size;\n\n switch (data.type) {\n case 'drop': start += size; break;\n case 'dropRight': end -= size; break;\n case 'take': end = nativeMin(end, start + size); break;\n case 'takeRight': start = nativeMax(start, end - size); break;\n }\n }\n return { 'start': start, 'end': end };\n }\n\n /**\n * Extracts wrapper details from the `source` body comment.\n *\n * @private\n * @param {string} source The source to inspect.\n * @returns {Array} Returns the wrapper details.\n */\n function getWrapDetails(source) {\n var match = source.match(reWrapDetails);\n return match ? match[1].split(reSplitDetails) : [];\n }\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 */\n function 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\n /**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\n function initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n }\n\n /**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n }\n\n /**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n }\n\n /**\n * Inserts wrapper `details` in a comment at the top of the `source` body.\n *\n * @private\n * @param {string} source The source to modify.\n * @returns {Array} details The details to insert.\n * @returns {string} Returns the modified source.\n */\n function insertWrapDetails(source, details) {\n var length = details.length;\n if (!length) {\n return source;\n }\n var lastIndex = length - 1;\n details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex];\n details = details.join(length > 2 ? ', ' : ' ');\n return source.replace(reWrapComment, '{\\n/* [wrapped with ' + details + '] */\\n');\n }\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 */\n function isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n }\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 */\n function 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\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 */\n function 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\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 */\n function 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\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 */\n function 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\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 */\n function 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\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 */\n function isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n }\n\n /**\n * Checks if `func` is capable of being masked.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `func` is maskable, else `false`.\n */\n var isMaskable = coreJsData ? isFunction : stubFalse;\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 */\n function isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n }\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 */\n function isStrictComparable(value) {\n return value === value && !isObject(value);\n }\n\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 */\n function 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\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 */\n function 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\n /**\n * Merges the function metadata of `source` into `data`.\n *\n * Merging metadata reduces the number of wrappers used to invoke a function.\n * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`\n * may be applied regardless of execution order. Methods like `_.ary` and\n * `_.rearg` modify function arguments, making the order in which they are\n * executed important, preventing the merging of metadata. However, we make\n * an exception for a safe combined case where curried functions have `_.ary`\n * and or `_.rearg` applied.\n *\n * @private\n * @param {Array} data The destination metadata.\n * @param {Array} source The source metadata.\n * @returns {Array} Returns `data`.\n */\n function mergeData(data, source) {\n var bitmask = data[1],\n srcBitmask = source[1],\n newBitmask = bitmask | srcBitmask,\n isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);\n\n var isCombo =\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) ||\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) ||\n ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG));\n\n // Exit early if metadata can't be merged.\n if (!(isCommon || isCombo)) {\n return data;\n }\n // Use source `thisArg` if available.\n if (srcBitmask & WRAP_BIND_FLAG) {\n data[2] = source[2];\n // Set when currying a bound function.\n newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;\n }\n // Compose partial arguments.\n var value = source[3];\n if (value) {\n var partials = data[3];\n data[3] = partials ? composeArgs(partials, value, source[4]) : value;\n data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];\n }\n // Compose partial right arguments.\n value = source[5];\n if (value) {\n partials = data[5];\n data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;\n data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];\n }\n // Use source `argPos` if available.\n value = source[7];\n if (value) {\n data[7] = value;\n }\n // Use source `ary` if it's smaller.\n if (srcBitmask & WRAP_ARY_FLAG) {\n data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);\n }\n // Use source `arity` if one is not provided.\n if (data[9] == null) {\n data[9] = source[9];\n }\n // Use source `func` and merge bitmasks.\n data[0] = source[0];\n data[1] = newBitmask;\n\n return data;\n }\n\n /**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n }\n\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 */\n function objectToString(value) {\n return nativeObjectToString.call(value);\n }\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 */\n function 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\n /**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\n function parent(object, path) {\n return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n }\n\n /**\n * Reorder `array` according to the specified indexes where the element at\n * the first index is assigned as the first element, the element at\n * the second index is assigned as the second element, and so on.\n *\n * @private\n * @param {Array} array The array to reorder.\n * @param {Array} indexes The arranged array indexes.\n * @returns {Array} Returns `array`.\n */\n function reorder(array, indexes) {\n var arrLength = array.length,\n length = nativeMin(indexes.length, arrLength),\n oldArray = copyArray(array);\n\n while (length--) {\n var index = indexes[length];\n array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;\n }\n return array;\n }\n\n /**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n function safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n }\n\n /**\n * Sets metadata for `func`.\n *\n * **Note:** If this function becomes hot, i.e. is invoked a lot in a short\n * period of time, it will trip its breaker and transition to an identity\n * function to avoid garbage collection pauses in V8. See\n * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070)\n * for more details.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var setData = shortOut(baseSetData);\n\n /**\n * A simple wrapper around the global [`setTimeout`](https://mdn.io/setTimeout).\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n var setTimeout = ctxSetTimeout || function(func, wait) {\n return root.setTimeout(func, wait);\n };\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 */\n var setToString = shortOut(baseSetToString);\n\n /**\n * Sets the `toString` method of `wrapper` to mimic the source of `reference`\n * with wrapper details in a comment at the top of the source body.\n *\n * @private\n * @param {Function} wrapper The function to modify.\n * @param {Function} reference The reference function.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Function} Returns `wrapper`.\n */\n function setWrapToString(wrapper, reference, bitmask) {\n var source = (reference + '');\n return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));\n }\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 */\n function 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\n /**\n * A specialized version of `_.shuffle` which mutates and sets the size of `array`.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @param {number} [size=array.length] The size of `array`.\n * @returns {Array} Returns `array`.\n */\n function shuffleSelf(array, size) {\n var index = -1,\n length = array.length,\n lastIndex = length - 1;\n\n size = size === undefined ? length : size;\n while (++index < size) {\n var rand = baseRandom(index, lastIndex),\n value = array[rand];\n\n array[rand] = array[index];\n array[index] = value;\n }\n array.length = size;\n return array;\n }\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 */\n var 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\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 */\n function 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\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 */\n function 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\n /**\n * Updates wrapper `details` based on `bitmask` flags.\n *\n * @private\n * @returns {Array} details The details to modify.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Array} Returns `details`.\n */\n function updateWrapDetails(details, bitmask) {\n arrayEach(wrapFlags, function(pair) {\n var value = '_.' + pair[0];\n if ((bitmask & pair[1]) && !arrayIncludes(details, value)) {\n details.push(value);\n }\n });\n return details.sort();\n }\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 */\n function 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\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of elements split into groups the length of `size`.\n * If `array` can't be split evenly, the final chunk will be the remaining\n * elements.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to process.\n * @param {number} [size=1] The length of each chunk\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the new array of chunks.\n * @example\n *\n * _.chunk(['a', 'b', 'c', 'd'], 2);\n * // => [['a', 'b'], ['c', 'd']]\n *\n * _.chunk(['a', 'b', 'c', 'd'], 3);\n * // => [['a', 'b', 'c'], ['d']]\n */\n function chunk(array, size, guard) {\n if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) {\n size = 1;\n } else {\n size = nativeMax(toInteger(size), 0);\n }\n var length = array == null ? 0 : array.length;\n if (!length || size < 1) {\n return [];\n }\n var index = 0,\n resIndex = 0,\n result = Array(nativeCeil(length / size));\n\n while (index < length) {\n result[resIndex++] = baseSlice(array, index, (index += size));\n }\n return result;\n }\n\n /**\n * Creates an array with all falsey values removed. The values `false`, `null`,\n * `0`, `\"\"`, `undefined`, and `NaN` are falsey.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to compact.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.compact([0, 1, false, 2, '', 3]);\n * // => [1, 2, 3]\n */\n function compact(array) {\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 (value) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * Creates a new array concatenating `array` with any additional arrays\n * and/or values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to concatenate.\n * @param {...*} [values] The values to concatenate.\n * @returns {Array} Returns the new concatenated array.\n * @example\n *\n * var array = [1];\n * var other = _.concat(array, 2, [3], [[4]]);\n *\n * console.log(other);\n * // => [1, 2, 3, [4]]\n *\n * console.log(array);\n * // => [1]\n */\n function concat() {\n var length = arguments.length;\n if (!length) {\n return [];\n }\n var args = Array(length - 1),\n array = arguments[0],\n index = length;\n\n while (index--) {\n args[index - 1] = arguments[index];\n }\n return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));\n }\n\n /**\n * Creates an array of `array` values not included in the other given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * **Note:** Unlike `_.pullAll`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.without, _.xor\n * @example\n *\n * _.difference([2, 1], [2, 3]);\n * // => [1]\n */\n var difference = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `iteratee` which\n * is invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * **Note:** Unlike `_.pullAllBy`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var differenceBy = baseRest(function(array, values) {\n var iteratee = last(values);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `comparator`\n * which is invoked to compare elements of `array` to `values`. The order and\n * references of result values are determined by the first array. The comparator\n * is invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.pullAllWith`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n *\n * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }]\n */\n var differenceWith = baseRest(function(array, values) {\n var comparator = last(values);\n if (isArrayLikeObject(comparator)) {\n comparator = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator)\n : [];\n });\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.drop([1, 2, 3]);\n * // => [2, 3]\n *\n * _.drop([1, 2, 3], 2);\n * // => [3]\n *\n * _.drop([1, 2, 3], 5);\n * // => []\n *\n * _.drop([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function drop(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.dropRight([1, 2, 3]);\n * // => [1, 2]\n *\n * _.dropRight([1, 2, 3], 2);\n * // => [1]\n *\n * _.dropRight([1, 2, 3], 5);\n * // => []\n *\n * _.dropRight([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function dropRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the end.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.dropRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropRightWhile(users, ['active', false]);\n * // => objects for ['barney']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropRightWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the beginning.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.dropWhile(users, function(o) { return !o.active; });\n * // => objects for ['pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropWhile(users, ['active', false]);\n * // => objects for ['pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true)\n : [];\n }\n\n /**\n * Fills elements of `array` with `value` from `start` up to, but not\n * including, `end`.\n *\n * **Note:** This method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Array\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.fill(array, 'a');\n * console.log(array);\n * // => ['a', 'a', 'a']\n *\n * _.fill(Array(3), 2);\n * // => [2, 2, 2]\n *\n * _.fill([4, 6, 8, 10], '*', 1, 3);\n * // => [4, '*', '*', 10]\n */\n function fill(array, value, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (start && typeof start != 'number' && isIterateeCall(array, value, start)) {\n start = 0;\n end = length;\n }\n return baseFill(array, value, start, end);\n }\n\n /**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\n function findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index);\n }\n\n /**\n * This method is like `_.findIndex` except that it iterates over elements\n * of `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; });\n * // => 2\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastIndex(users, { 'user': 'barney', 'active': true });\n * // => 0\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastIndex(users, ['active', false]);\n * // => 2\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastIndex(users, 'active');\n * // => 0\n */\n function findLastIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length - 1;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = fromIndex < 0\n ? nativeMax(length + index, 0)\n : nativeMin(index, length - 1);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index, true);\n }\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 */\n function flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n }\n\n /**\n * Recursively flattens `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flattenDeep([1, [2, [3, [4]], 5]]);\n * // => [1, 2, 3, 4, 5]\n */\n function flattenDeep(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, INFINITY) : [];\n }\n\n /**\n * Recursively flatten `array` up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * var array = [1, [2, [3, [4]], 5]];\n *\n * _.flattenDepth(array, 1);\n * // => [1, 2, [3, [4]], 5]\n *\n * _.flattenDepth(array, 2);\n * // => [1, 2, 3, [4], 5]\n */\n function flattenDepth(array, depth) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(array, depth);\n }\n\n /**\n * The inverse of `_.toPairs`; this method returns an object composed\n * from key-value `pairs`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} pairs The key-value pairs.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.fromPairs([['a', 1], ['b', 2]]);\n * // => { 'a': 1, 'b': 2 }\n */\n function fromPairs(pairs) {\n var index = -1,\n length = pairs == null ? 0 : pairs.length,\n result = {};\n\n while (++index < length) {\n var pair = pairs[index];\n result[pair[0]] = pair[1];\n }\n return result;\n }\n\n /**\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 */\n function head(array) {\n return (array && array.length) ? array[0] : undefined;\n }\n\n /**\n * Gets the index at which the first occurrence of `value` is found in `array`\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. If `fromIndex` is negative, it's used as the\n * offset from the end of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.indexOf([1, 2, 1, 2], 2);\n * // => 1\n *\n * // Search from the `fromIndex`.\n * _.indexOf([1, 2, 1, 2], 2, 2);\n * // => 3\n */\n function indexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseIndexOf(array, value, index);\n }\n\n /**\n * Gets all but the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.initial([1, 2, 3]);\n * // => [1, 2]\n */\n function initial(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 0, -1) : [];\n }\n\n /**\n * Creates an array of unique values that are included in all given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersection([2, 1], [2, 3]);\n * // => [2]\n */\n var intersection = baseRest(function(arrays) {\n var mapped = arrayMap(arrays, castArrayLikeObject);\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped)\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `iteratee`\n * which is invoked for each element of each `arrays` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [2.1]\n *\n * // The `_.property` iteratee shorthand.\n * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }]\n */\n var intersectionBy = baseRest(function(arrays) {\n var iteratee = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n if (iteratee === last(mapped)) {\n iteratee = undefined;\n } else {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `comparator`\n * which is invoked to compare elements of `arrays`. The order and references\n * of result values are determined by the first array. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.intersectionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }]\n */\n var intersectionWith = baseRest(function(arrays) {\n var comparator = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n comparator = typeof comparator == 'function' ? comparator : undefined;\n if (comparator) {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, undefined, comparator)\n : [];\n });\n\n /**\n * Converts all elements in `array` into a string separated by `separator`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to convert.\n * @param {string} [separator=','] The element separator.\n * @returns {string} Returns the joined string.\n * @example\n *\n * _.join(['a', 'b', 'c'], '~');\n * // => 'a~b~c'\n */\n function join(array, separator) {\n return array == null ? '' : nativeJoin.call(array, separator);\n }\n\n /**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\n function last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n }\n\n /**\n * This method is like `_.indexOf` except that it iterates over elements of\n * `array` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.lastIndexOf([1, 2, 1, 2], 2);\n * // => 3\n *\n * // Search from the `fromIndex`.\n * _.lastIndexOf([1, 2, 1, 2], 2, 2);\n * // => 1\n */\n function lastIndexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1);\n }\n return value === value\n ? strictLastIndexOf(array, value, index)\n : baseFindIndex(array, baseIsNaN, index, true);\n }\n\n /**\n * Gets the element at index `n` of `array`. If `n` is negative, the nth\n * element from the end is returned.\n *\n * @static\n * @memberOf _\n * @since 4.11.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=0] The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n *\n * _.nth(array, 1);\n * // => 'b'\n *\n * _.nth(array, -2);\n * // => 'c';\n */\n function nth(array, n) {\n return (array && array.length) ? baseNth(array, toInteger(n)) : undefined;\n }\n\n /**\n * Removes all given values from `array` using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove`\n * to remove elements from an array by predicate.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...*} [values] The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pull(array, 'a', 'c');\n * console.log(array);\n * // => ['b', 'b']\n */\n var pull = baseRest(pullAll);\n\n /**\n * This method is like `_.pull` except that it accepts an array of values to remove.\n *\n * **Note:** Unlike `_.difference`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pullAll(array, ['a', 'c']);\n * console.log(array);\n * // => ['b', 'b']\n */\n function pullAll(array, values) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values)\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `iteratee` which is\n * invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The iteratee is invoked with one argument: (value).\n *\n * **Note:** Unlike `_.differenceBy`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }];\n *\n * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x');\n * console.log(array);\n * // => [{ 'x': 2 }]\n */\n function pullAllBy(array, values, iteratee) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, getIteratee(iteratee, 2))\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `comparator` which\n * is invoked to compare elements of `array` to `values`. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.differenceWith`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }];\n *\n * _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual);\n * console.log(array);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }]\n */\n function pullAllWith(array, values, comparator) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, undefined, comparator)\n : array;\n }\n\n /**\n * Removes elements from `array` corresponding to `indexes` and returns an\n * array of removed elements.\n *\n * **Note:** Unlike `_.at`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...(number|number[])} [indexes] The indexes of elements to remove.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n * var pulled = _.pullAt(array, [1, 3]);\n *\n * console.log(array);\n * // => ['a', 'c']\n *\n * console.log(pulled);\n * // => ['b', 'd']\n */\n var pullAt = flatRest(function(array, indexes) {\n var length = array == null ? 0 : array.length,\n result = baseAt(array, indexes);\n\n basePullAt(array, arrayMap(indexes, function(index) {\n return isIndex(index, length) ? +index : index;\n }).sort(compareAscending));\n\n return result;\n });\n\n /**\n * Removes all elements from `array` that `predicate` returns truthy for\n * and returns an array of the removed elements. The predicate is invoked\n * with three arguments: (value, index, array).\n *\n * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull`\n * to pull elements from an array by value.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = [1, 2, 3, 4];\n * var evens = _.remove(array, function(n) {\n * return n % 2 == 0;\n * });\n *\n * console.log(array);\n * // => [1, 3]\n *\n * console.log(evens);\n * // => [2, 4]\n */\n function remove(array, predicate) {\n var result = [];\n if (!(array && array.length)) {\n return result;\n }\n var index = -1,\n indexes = [],\n length = array.length;\n\n predicate = getIteratee(predicate, 3);\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result.push(value);\n indexes.push(index);\n }\n }\n basePullAt(array, indexes);\n return result;\n }\n\n /**\n * Reverses `array` so that the first element becomes the last, the second\n * element becomes the second to last, and so on.\n *\n * **Note:** This method mutates `array` and is based on\n * [`Array#reverse`](https://mdn.io/Array/reverse).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.reverse(array);\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function reverse(array) {\n return array == null ? array : nativeReverse.call(array);\n }\n\n /**\n * Creates a slice of `array` from `start` up to, but not including, `end`.\n *\n * **Note:** This method is used instead of\n * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are\n * returned.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function slice(array, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (end && typeof end != 'number' && isIterateeCall(array, start, end)) {\n start = 0;\n end = length;\n }\n else {\n start = start == null ? 0 : toInteger(start);\n end = end === undefined ? length : toInteger(end);\n }\n return baseSlice(array, start, end);\n }\n\n /**\n * Uses a binary search to determine the lowest index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedIndex([30, 50], 40);\n * // => 1\n */\n function sortedIndex(array, value) {\n return baseSortedIndex(array, value);\n }\n\n /**\n * This method is like `_.sortedIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedIndexBy(objects, { 'x': 4 }, 'x');\n * // => 0\n */\n function sortedIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2));\n }\n\n /**\n * This method is like `_.indexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedIndexOf([4, 5, 5, 5, 6], 5);\n * // => 1\n */\n function sortedIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value);\n if (index < length && eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.sortedIndex` except that it returns the highest\n * index at which `value` should be inserted into `array` in order to\n * maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedLastIndex([4, 5, 5, 5, 6], 5);\n * // => 4\n */\n function sortedLastIndex(array, value) {\n return baseSortedIndex(array, value, true);\n }\n\n /**\n * This method is like `_.sortedLastIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 1\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedLastIndexBy(objects, { 'x': 4 }, 'x');\n * // => 1\n */\n function sortedLastIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2), true);\n }\n\n /**\n * This method is like `_.lastIndexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedLastIndexOf([4, 5, 5, 5, 6], 5);\n * // => 3\n */\n function sortedLastIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value, true) - 1;\n if (eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.uniq` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniq([1, 1, 2]);\n * // => [1, 2]\n */\n function sortedUniq(array) {\n return (array && array.length)\n ? baseSortedUniq(array)\n : [];\n }\n\n /**\n * This method is like `_.uniqBy` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor);\n * // => [1.1, 2.3]\n */\n function sortedUniqBy(array, iteratee) {\n return (array && array.length)\n ? baseSortedUniq(array, getIteratee(iteratee, 2))\n : [];\n }\n\n /**\n * Gets all but the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.tail([1, 2, 3]);\n * // => [2, 3]\n */\n function tail(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 1, length) : [];\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.take([1, 2, 3]);\n * // => [1]\n *\n * _.take([1, 2, 3], 2);\n * // => [1, 2]\n *\n * _.take([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.take([1, 2, 3], 0);\n * // => []\n */\n function take(array, n, guard) {\n if (!(array && array.length)) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.takeRight([1, 2, 3]);\n * // => [3]\n *\n * _.takeRight([1, 2, 3], 2);\n * // => [2, 3]\n *\n * _.takeRight([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.takeRight([1, 2, 3], 0);\n * // => []\n */\n function takeRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with elements taken from the end. Elements are\n * taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.takeRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeRightWhile(users, ['active', false]);\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeRightWhile(users, 'active');\n * // => []\n */\n function takeRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), false, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` with elements taken from the beginning. Elements\n * are taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.takeWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeWhile(users, ['active', false]);\n * // => objects for ['barney', 'fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeWhile(users, 'active');\n * // => []\n */\n function takeWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3))\n : [];\n }\n\n /**\n * Creates an array of unique values, in order, from all given arrays using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.union([2], [1, 2]);\n * // => [2, 1]\n */\n var union = baseRest(function(arrays) {\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));\n });\n\n /**\n * This method is like `_.union` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which uniqueness is computed. Result values are chosen from the first\n * array in which the value occurs. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.unionBy([2.1], [1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n var unionBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.union` except that it accepts `comparator` which\n * is invoked to compare elements of `arrays`. Result values are chosen from\n * the first array in which the value occurs. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.unionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var unionWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined, comparator);\n });\n\n /**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\n function uniq(array) {\n return (array && array.length) ? baseUniq(array) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * uniqueness is computed. The order of result values is determined by the\n * order they occur in the array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n function uniqBy(array, iteratee) {\n return (array && array.length) ? baseUniq(array, getIteratee(iteratee, 2)) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `comparator` which\n * is invoked to compare elements of `array`. The order of result values is\n * determined by the order they occur in the array.The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.uniqWith(objects, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]\n */\n function uniqWith(array, comparator) {\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return (array && array.length) ? baseUniq(array, undefined, comparator) : [];\n }\n\n /**\n * This method is like `_.zip` except that it accepts an array of grouped\n * elements and creates an array regrouping the elements to their pre-zip\n * configuration.\n *\n * @static\n * @memberOf _\n * @since 1.2.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n *\n * _.unzip(zipped);\n * // => [['a', 'b'], [1, 2], [true, false]]\n */\n function unzip(array) {\n if (!(array && array.length)) {\n return [];\n }\n var length = 0;\n array = arrayFilter(array, function(group) {\n if (isArrayLikeObject(group)) {\n length = nativeMax(group.length, length);\n return true;\n }\n });\n return baseTimes(length, function(index) {\n return arrayMap(array, baseProperty(index));\n });\n }\n\n /**\n * This method is like `_.unzip` except that it accepts `iteratee` to specify\n * how regrouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * regrouped values.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip([1, 2], [10, 20], [100, 200]);\n * // => [[1, 10, 100], [2, 20, 200]]\n *\n * _.unzipWith(zipped, _.add);\n * // => [3, 30, 300]\n */\n function unzipWith(array, iteratee) {\n if (!(array && array.length)) {\n return [];\n }\n var result = unzip(array);\n if (iteratee == null) {\n return result;\n }\n return arrayMap(result, function(group) {\n return apply(iteratee, undefined, group);\n });\n }\n\n /**\n * Creates an array excluding all given values using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.pull`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...*} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.xor\n * @example\n *\n * _.without([2, 1, 2, 3], 1, 2);\n * // => [3]\n */\n var without = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, values)\n : [];\n });\n\n /**\n * Creates an array of unique values that is the\n * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference)\n * of the given arrays. The order of result values is determined by the order\n * they occur in the arrays.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.without\n * @example\n *\n * _.xor([2, 1], [2, 3]);\n * // => [1, 3]\n */\n var xor = baseRest(function(arrays) {\n return baseXor(arrayFilter(arrays, isArrayLikeObject));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which by which they're compared. The order of result values is determined\n * by the order they occur in the arrays. The iteratee is invoked with one\n * argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2, 3.4]\n *\n * // The `_.property` iteratee shorthand.\n * _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var xorBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `comparator` which is\n * invoked to compare elements of `arrays`. The order of result values is\n * determined by the order they occur in the arrays. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.xorWith(objects, others, _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var xorWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined, comparator);\n });\n\n /**\n * Creates an array of grouped elements, the first of which contains the\n * first elements of the given arrays, the second of which contains the\n * second elements of the given arrays, and so on.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n */\n var zip = baseRest(unzip);\n\n /**\n * This method is like `_.fromPairs` except that it accepts two arrays,\n * one of property identifiers and one of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 0.4.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObject(['a', 'b'], [1, 2]);\n * // => { 'a': 1, 'b': 2 }\n */\n function zipObject(props, values) {\n return baseZipObject(props || [], values || [], assignValue);\n }\n\n /**\n * This method is like `_.zipObject` except that it supports property paths.\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]);\n * // => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } }\n */\n function zipObjectDeep(props, values) {\n return baseZipObject(props || [], values || [], baseSet);\n }\n\n /**\n * This method is like `_.zip` except that it accepts `iteratee` to specify\n * how grouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * grouped values.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) {\n * return a + b + c;\n * });\n * // => [111, 222]\n */\n var zipWith = baseRest(function(arrays) {\n var length = arrays.length,\n iteratee = length > 1 ? arrays[length - 1] : undefined;\n\n iteratee = typeof iteratee == 'function' ? (arrays.pop(), iteratee) : undefined;\n return unzipWith(arrays, iteratee);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` wrapper instance that wraps `value` with explicit method\n * chain sequences enabled. The result of such sequences must be unwrapped\n * with `_#value`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Seq\n * @param {*} value The value to wrap.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'pebbles', 'age': 1 }\n * ];\n *\n * var youngest = _\n * .chain(users)\n * .sortBy('age')\n * .map(function(o) {\n * return o.user + ' is ' + o.age;\n * })\n * .head()\n * .value();\n * // => 'pebbles is 1'\n */\n function chain(value) {\n var result = lodash(value);\n result.__chain__ = true;\n return result;\n }\n\n /**\n * This method invokes `interceptor` and returns `value`. The interceptor\n * is invoked with one argument; (value). The purpose of this method is to\n * \"tap into\" a method chain sequence in order to modify intermediate results.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns `value`.\n * @example\n *\n * _([1, 2, 3])\n * .tap(function(array) {\n * // Mutate input array.\n * array.pop();\n * })\n * .reverse()\n * .value();\n * // => [2, 1]\n */\n function tap(value, interceptor) {\n interceptor(value);\n return value;\n }\n\n /**\n * This method is like `_.tap` except that it returns the result of `interceptor`.\n * The purpose of this method is to \"pass thru\" values replacing intermediate\n * results in a method chain sequence.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns the result of `interceptor`.\n * @example\n *\n * _(' abc ')\n * .chain()\n * .trim()\n * .thru(function(value) {\n * return [value];\n * })\n * .value();\n * // => ['abc']\n */\n function thru(value, interceptor) {\n return interceptor(value);\n }\n\n /**\n * This method is the wrapper version of `_.at`.\n *\n * @name at\n * @memberOf _\n * @since 1.0.0\n * @category Seq\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _(object).at(['a[0].b.c', 'a[1]']).value();\n * // => [3, 4]\n */\n var wrapperAt = flatRest(function(paths) {\n var length = paths.length,\n start = length ? paths[0] : 0,\n value = this.__wrapped__,\n interceptor = function(object) { return baseAt(object, paths); };\n\n if (length > 1 || this.__actions__.length ||\n !(value instanceof LazyWrapper) || !isIndex(start)) {\n return this.thru(interceptor);\n }\n value = value.slice(start, +start + (length ? 1 : 0));\n value.__actions__.push({\n 'func': thru,\n 'args': [interceptor],\n 'thisArg': undefined\n });\n return new LodashWrapper(value, this.__chain__).thru(function(array) {\n if (length && !array.length) {\n array.push(undefined);\n }\n return array;\n });\n });\n\n /**\n * Creates a `lodash` wrapper instance with explicit method chain sequences enabled.\n *\n * @name chain\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 }\n * ];\n *\n * // A sequence without explicit chaining.\n * _(users).head();\n * // => { 'user': 'barney', 'age': 36 }\n *\n * // A sequence with explicit chaining.\n * _(users)\n * .chain()\n * .head()\n * .pick('user')\n * .value();\n * // => { 'user': 'barney' }\n */\n function wrapperChain() {\n return chain(this);\n }\n\n /**\n * Executes the chain sequence and returns the wrapped result.\n *\n * @name commit\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2];\n * var wrapped = _(array).push(3);\n *\n * console.log(array);\n * // => [1, 2]\n *\n * wrapped = wrapped.commit();\n * console.log(array);\n * // => [1, 2, 3]\n *\n * wrapped.last();\n * // => 3\n *\n * console.log(array);\n * // => [1, 2, 3]\n */\n function wrapperCommit() {\n return new LodashWrapper(this.value(), this.__chain__);\n }\n\n /**\n * Gets the next value on a wrapped object following the\n * [iterator protocol](https://mdn.io/iteration_protocols#iterator).\n *\n * @name next\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the next iterator value.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 1 }\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 2 }\n *\n * wrapped.next();\n * // => { 'done': true, 'value': undefined }\n */\n function wrapperNext() {\n if (this.__values__ === undefined) {\n this.__values__ = toArray(this.value());\n }\n var done = this.__index__ >= this.__values__.length,\n value = done ? undefined : this.__values__[this.__index__++];\n\n return { 'done': done, 'value': value };\n }\n\n /**\n * Enables the wrapper to be iterable.\n *\n * @name Symbol.iterator\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the wrapper object.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped[Symbol.iterator]() === wrapped;\n * // => true\n *\n * Array.from(wrapped);\n * // => [1, 2]\n */\n function wrapperToIterator() {\n return this;\n }\n\n /**\n * Creates a clone of the chain sequence planting `value` as the wrapped value.\n *\n * @name plant\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @param {*} value The value to plant.\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]).map(square);\n * var other = wrapped.plant([3, 4]);\n *\n * other.value();\n * // => [9, 16]\n *\n * wrapped.value();\n * // => [1, 4]\n */\n function wrapperPlant(value) {\n var result,\n parent = this;\n\n while (parent instanceof baseLodash) {\n var clone = wrapperClone(parent);\n clone.__index__ = 0;\n clone.__values__ = undefined;\n if (result) {\n previous.__wrapped__ = clone;\n } else {\n result = clone;\n }\n var previous = clone;\n parent = parent.__wrapped__;\n }\n previous.__wrapped__ = value;\n return result;\n }\n\n /**\n * This method is the wrapper version of `_.reverse`.\n *\n * **Note:** This method mutates the wrapped array.\n *\n * @name reverse\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _(array).reverse().value()\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function wrapperReverse() {\n var value = this.__wrapped__;\n if (value instanceof LazyWrapper) {\n var wrapped = value;\n if (this.__actions__.length) {\n wrapped = new LazyWrapper(this);\n }\n wrapped = wrapped.reverse();\n wrapped.__actions__.push({\n 'func': thru,\n 'args': [reverse],\n 'thisArg': undefined\n });\n return new LodashWrapper(wrapped, this.__chain__);\n }\n return this.thru(reverse);\n }\n\n /**\n * Executes the chain sequence to resolve the unwrapped value.\n *\n * @name value\n * @memberOf _\n * @since 0.1.0\n * @alias toJSON, valueOf\n * @category Seq\n * @returns {*} Returns the resolved unwrapped value.\n * @example\n *\n * _([1, 2, 3]).value();\n * // => [1, 2, 3]\n */\n function wrapperValue() {\n return baseWrapperValue(this.__wrapped__, this.__actions__);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the number of times the key was returned by `iteratee`. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.countBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': 1, '6': 2 }\n *\n * // The `_.property` iteratee shorthand.\n * _.countBy(['one', 'two', 'three'], 'length');\n * // => { '3': 2, '5': 1 }\n */\n var countBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n ++result[key];\n } else {\n baseAssignValue(result, key, 1);\n }\n });\n\n /**\n * Checks if `predicate` returns truthy for **all** elements of `collection`.\n * Iteration is stopped once `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * **Note:** This method returns `true` for\n * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because\n * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of\n * elements of empty collections.\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 all elements pass the predicate check,\n * else `false`.\n * @example\n *\n * _.every([true, 1, null, 'yes'], Boolean);\n * // => false\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.every(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.every(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.every(users, 'active');\n * // => false\n */\n function every(collection, predicate, guard) {\n var func = isArray(collection) ? arrayEvery : baseEvery;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning an array of all elements\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * **Note:** Unlike `_.remove`, this method returns a new array.\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 * @returns {Array} Returns the new filtered array.\n * @see _.reject\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * _.filter(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, { 'age': 36, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.filter(users, 'active');\n * // => objects for ['barney']\n *\n * // Combining several predicates using `_.overEvery` or `_.overSome`.\n * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]]));\n * // => objects for ['fred', 'barney']\n */\n function filter(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * 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 inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\n var find = createFind(findIndex);\n\n /**\n * This method is like `_.find` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=collection.length-1] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * _.findLast([1, 2, 3, 4], function(n) {\n * return n % 2 == 1;\n * });\n * // => 3\n */\n var findLast = createFind(findLastIndex);\n\n /**\n * Creates a flattened array of values by running each element in `collection`\n * thru `iteratee` and flattening the mapped results. The iteratee is invoked\n * with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [n, n];\n * }\n *\n * _.flatMap([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMap(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), 1);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDeep([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMapDeep(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), INFINITY);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDepth([1, 2], duplicate, 2);\n * // => [[1, 1], [2, 2]]\n */\n function flatMapDepth(collection, iteratee, depth) {\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(map(collection, iteratee), depth);\n }\n\n /**\n * Iterates over elements of `collection` and invokes `iteratee` for each element.\n * The iteratee is invoked with three arguments: (value, index|key, collection).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n * property are iterated like arrays. To avoid this behavior use `_.forIn`\n * or `_.forOwn` for object iteration.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias each\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEachRight\n * @example\n *\n * _.forEach([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `1` then `2`.\n *\n * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forEach(collection, iteratee) {\n var func = isArray(collection) ? arrayEach : baseEach;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forEach` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @alias eachRight\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEach\n * @example\n *\n * _.forEachRight([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `2` then `1`.\n */\n function forEachRight(collection, iteratee) {\n var func = isArray(collection) ? arrayEachRight : baseEachRight;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The order of grouped values\n * is determined by the order they occur in `collection`. The corresponding\n * value of each key is an array of elements responsible for generating the\n * key. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.groupBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': [4.2], '6': [6.1, 6.3] }\n *\n * // The `_.property` iteratee shorthand.\n * _.groupBy(['one', 'two', 'three'], 'length');\n * // => { '3': ['one', 'two'], '5': ['three'] }\n */\n var groupBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n result[key].push(value);\n } else {\n baseAssignValue(result, key, [value]);\n }\n });\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 */\n function 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\n /**\n * Invokes the method at `path` of each element in `collection`, returning\n * an array of the results of each invoked method. Any additional arguments\n * are provided to each invoked method. If `path` is a function, it's invoked\n * for, and `this` bound to, each element in `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array|Function|string} path The path of the method to invoke or\n * the function invoked per iteration.\n * @param {...*} [args] The arguments to invoke each method with.\n * @returns {Array} Returns the array of results.\n * @example\n *\n * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort');\n * // => [[1, 5, 7], [1, 2, 3]]\n *\n * _.invokeMap([123, 456], String.prototype.split, '');\n * // => [['1', '2', '3'], ['4', '5', '6']]\n */\n var invokeMap = baseRest(function(collection, path, args) {\n var index = -1,\n isFunc = typeof path == 'function',\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value) {\n result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args);\n });\n return result;\n });\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the last element responsible for generating the key. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * var array = [\n * { 'dir': 'left', 'code': 97 },\n * { 'dir': 'right', 'code': 100 }\n * ];\n *\n * _.keyBy(array, function(o) {\n * return String.fromCharCode(o.code);\n * });\n * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }\n *\n * _.keyBy(array, 'dir');\n * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }\n */\n var keyBy = createAggregator(function(result, value, key) {\n baseAssignValue(result, key, value);\n });\n\n /**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\n function map(collection, iteratee) {\n var func = isArray(collection) ? arrayMap : baseMap;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.sortBy` except that it allows specifying the sort\n * orders of the iteratees to sort by. If `orders` is unspecified, all values\n * are sorted in ascending order. Otherwise, specify an order of \"desc\" for\n * descending or \"asc\" for ascending sort order of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @param {string[]} [orders] The sort orders of `iteratees`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 34 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'barney', 'age': 36 }\n * ];\n *\n * // Sort by `user` in ascending order and by `age` in descending order.\n * _.orderBy(users, ['user', 'age'], ['asc', 'desc']);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n */\n function orderBy(collection, iteratees, orders, guard) {\n if (collection == null) {\n return [];\n }\n if (!isArray(iteratees)) {\n iteratees = iteratees == null ? [] : [iteratees];\n }\n orders = guard ? undefined : orders;\n if (!isArray(orders)) {\n orders = orders == null ? [] : [orders];\n }\n return baseOrderBy(collection, iteratees, orders);\n }\n\n /**\n * Creates an array of elements split into two groups, the first of which\n * contains elements `predicate` returns truthy for, the second of which\n * contains elements `predicate` returns falsey for. The predicate is\n * invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 3.0.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 * @returns {Array} Returns the array of grouped elements.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true },\n * { 'user': 'pebbles', 'age': 1, 'active': false }\n * ];\n *\n * _.partition(users, function(o) { return o.active; });\n * // => objects for [['fred'], ['barney', 'pebbles']]\n *\n * // The `_.matches` iteratee shorthand.\n * _.partition(users, { 'age': 1, 'active': false });\n * // => objects for [['pebbles'], ['barney', 'fred']]\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.partition(users, ['active', false]);\n * // => objects for [['barney', 'pebbles'], ['fred']]\n *\n * // The `_.property` iteratee shorthand.\n * _.partition(users, 'active');\n * // => objects for [['fred'], ['barney', 'pebbles']]\n */\n var partition = createAggregator(function(result, value, key) {\n result[key ? 0 : 1].push(value);\n }, function() { return [[], []]; });\n\n /**\n * Reduces `collection` to a value which is the accumulated result of running\n * each element in `collection` thru `iteratee`, where each successive\n * invocation is supplied the return value of the previous. If `accumulator`\n * is not given, the first element of `collection` is used as the initial\n * value. The iteratee is invoked with four arguments:\n * (accumulator, value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.reduce`, `_.reduceRight`, and `_.transform`.\n *\n * The guarded methods are:\n * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,\n * and `sortBy`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduceRight\n * @example\n *\n * _.reduce([1, 2], function(sum, n) {\n * return sum + n;\n * }, 0);\n * // => 3\n *\n * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * return result;\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)\n */\n function reduce(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduce : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEach);\n }\n\n /**\n * This method is like `_.reduce` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduce\n * @example\n *\n * var array = [[0, 1], [2, 3], [4, 5]];\n *\n * _.reduceRight(array, function(flattened, other) {\n * return flattened.concat(other);\n * }, []);\n * // => [4, 5, 2, 3, 0, 1]\n */\n function reduceRight(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduceRight : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEachRight);\n }\n\n /**\n * The opposite of `_.filter`; this method returns the elements of `collection`\n * that `predicate` does **not** return truthy for.\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 * @returns {Array} Returns the new filtered array.\n * @see _.filter\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true }\n * ];\n *\n * _.reject(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.reject(users, { 'age': 40, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.reject(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.reject(users, 'active');\n * // => objects for ['barney']\n */\n function reject(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, negate(getIteratee(predicate, 3)));\n }\n\n /**\n * Gets a random element from `collection`.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n * @example\n *\n * _.sample([1, 2, 3, 4]);\n * // => 2\n */\n function sample(collection) {\n var func = isArray(collection) ? arraySample : baseSample;\n return func(collection);\n }\n\n /**\n * Gets `n` random elements at unique keys from `collection` up to the\n * size of `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @param {number} [n=1] The number of elements to sample.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the random elements.\n * @example\n *\n * _.sampleSize([1, 2, 3], 2);\n * // => [3, 1]\n *\n * _.sampleSize([1, 2, 3], 4);\n * // => [2, 3, 1]\n */\n function sampleSize(collection, n, guard) {\n if ((guard ? isIterateeCall(collection, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n var func = isArray(collection) ? arraySampleSize : baseSampleSize;\n return func(collection, n);\n }\n\n /**\n * Creates an array of shuffled values, using a version of the\n * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n * @example\n *\n * _.shuffle([1, 2, 3, 4]);\n * // => [4, 1, 3, 2]\n */\n function shuffle(collection) {\n var func = isArray(collection) ? arrayShuffle : baseShuffle;\n return func(collection);\n }\n\n /**\n * Gets the size of `collection` by returning its length for array-like\n * values or the number of own enumerable string keyed properties for objects.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @returns {number} Returns the collection size.\n * @example\n *\n * _.size([1, 2, 3]);\n * // => 3\n *\n * _.size({ 'a': 1, 'b': 2 });\n * // => 2\n *\n * _.size('pebbles');\n * // => 7\n */\n function size(collection) {\n if (collection == null) {\n return 0;\n }\n if (isArrayLike(collection)) {\n return isString(collection) ? stringSize(collection) : collection.length;\n }\n var tag = getTag(collection);\n if (tag == mapTag || tag == setTag) {\n return collection.size;\n }\n return baseKeys(collection).length;\n }\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 */\n function 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, getIteratee(predicate, 3));\n }\n\n /**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\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|Function[])} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 30 },\n * { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, [function(o) { return o.user; }]);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]]\n */\n var sortBy = baseRest(function(collection, iteratees) {\n if (collection == null) {\n return [];\n }\n var length = iteratees.length;\n if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n iteratees = [];\n } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n iteratees = [iteratees[0]];\n }\n return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n });\n\n /*------------------------------------------------------------------------*/\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 */\n var now = ctxNow || function() {\n return root.Date.now();\n };\n\n /*------------------------------------------------------------------------*/\n\n /**\n * The opposite of `_.before`; this method creates a function that invokes\n * `func` once it's called `n` or more times.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {number} n The number of calls before `func` is invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var saves = ['profile', 'settings'];\n *\n * var done = _.after(saves.length, function() {\n * console.log('done saving!');\n * });\n *\n * _.forEach(saves, function(type) {\n * asyncSave({ 'type': type, 'complete': done });\n * });\n * // => Logs 'done saving!' after the two async saves have completed.\n */\n function after(n, func) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n < 1) {\n return func.apply(this, arguments);\n }\n };\n }\n\n /**\n * Creates a function that invokes `func`, with up to `n` arguments,\n * ignoring any additional arguments.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @param {number} [n=func.length] The arity cap.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.ary(parseInt, 1));\n * // => [6, 8, 10]\n */\n function ary(func, n, guard) {\n n = guard ? undefined : n;\n n = (func && n == null) ? func.length : n;\n return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n);\n }\n\n /**\n * Creates a function that invokes `func`, with the `this` binding and arguments\n * of the created function, while it's called less than `n` times. Subsequent\n * calls to the created function return the result of the last `func` invocation.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {number} n The number of calls at which `func` is no longer invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * jQuery(element).on('click', _.before(5, addContactToList));\n * // => Allows adding up to 4 contacts to the list.\n */\n function before(n, func) {\n var result;\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n > 0) {\n result = func.apply(this, arguments);\n }\n if (n <= 1) {\n func = undefined;\n }\n return result;\n };\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of `thisArg`\n * and `partials` prepended to the arguments it receives.\n *\n * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for partially applied arguments.\n *\n * **Note:** Unlike native `Function#bind`, this method doesn't set the \"length\"\n * property of bound functions.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to bind.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * function greet(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n *\n * var object = { 'user': 'fred' };\n *\n * var bound = _.bind(greet, object, 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bind(greet, object, _, '!');\n * bound('hi');\n * // => 'hi fred!'\n */\n var bind = baseRest(function(func, thisArg, partials) {\n var bitmask = WRAP_BIND_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bind));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(func, bitmask, thisArg, partials, holders);\n });\n\n /**\n * Creates a function that invokes the method at `object[key]` with `partials`\n * prepended to the arguments it receives.\n *\n * This method differs from `_.bind` by allowing bound functions to reference\n * methods that may be redefined or don't yet exist. See\n * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern)\n * for more details.\n *\n * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Function\n * @param {Object} object The object to invoke the method on.\n * @param {string} key The key of the method.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * var object = {\n * 'user': 'fred',\n * 'greet': function(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n * };\n *\n * var bound = _.bindKey(object, 'greet', 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * object.greet = function(greeting, punctuation) {\n * return greeting + 'ya ' + this.user + punctuation;\n * };\n *\n * bound('!');\n * // => 'hiya fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bindKey(object, 'greet', _, '!');\n * bound('hi');\n * // => 'hiya fred!'\n */\n var bindKey = baseRest(function(object, key, partials) {\n var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bindKey));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(key, bitmask, object, partials, holders);\n });\n\n /**\n * Creates a function that accepts arguments of `func` and either invokes\n * `func` returning its result, if at least `arity` number of arguments have\n * been provided, or returns a function that accepts the remaining `func`\n * arguments, and so on. The arity of `func` may be specified if `func.length`\n * is not sufficient.\n *\n * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curry(abc);\n *\n * curried(1)(2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(1)(_, 3)(2);\n * // => [1, 2, 3]\n */\n function curry(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curry.placeholder;\n return result;\n }\n\n /**\n * This method is like `_.curry` except that arguments are applied to `func`\n * in the manner of `_.partialRight` instead of `_.partial`.\n *\n * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curryRight(abc);\n *\n * curried(3)(2)(1);\n * // => [1, 2, 3]\n *\n * curried(2, 3)(1);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(3)(1, _)(2);\n * // => [1, 2, 3]\n */\n function curryRight(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curryRight.placeholder;\n return result;\n }\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 */\n function 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\n /**\n * Defers invoking the `func` until the current call stack has cleared. Any\n * additional arguments are provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to defer.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.defer(function(text) {\n * console.log(text);\n * }, 'deferred');\n * // => Logs 'deferred' after one millisecond.\n */\n var defer = baseRest(function(func, args) {\n return baseDelay(func, 1, args);\n });\n\n /**\n * Invokes `func` after `wait` milliseconds. Any additional arguments are\n * provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.delay(function(text) {\n * console.log(text);\n * }, 1000, 'later');\n * // => Logs 'later' after one second.\n */\n var delay = baseRest(function(func, wait, args) {\n return baseDelay(func, toNumber(wait) || 0, args);\n });\n\n /**\n * Creates a function that invokes `func` with arguments reversed.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to flip arguments for.\n * @returns {Function} Returns the new flipped function.\n * @example\n *\n * var flipped = _.flip(function() {\n * return _.toArray(arguments);\n * });\n *\n * flipped('a', 'b', 'c', 'd');\n * // => ['d', 'c', 'b', 'a']\n */\n function flip(func) {\n return createWrap(func, WRAP_FLIP_FLAG);\n }\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 */\n function 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`.\n memoize.Cache = MapCache;\n\n /**\n * Creates a function that negates the result of the predicate `func`. The\n * `func` predicate is invoked with the `this` binding and arguments of the\n * created function.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} predicate The predicate to negate.\n * @returns {Function} Returns the new negated function.\n * @example\n *\n * function isEven(n) {\n * return n % 2 == 0;\n * }\n *\n * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));\n * // => [1, 3, 5]\n */\n function negate(predicate) {\n if (typeof predicate != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return function() {\n var args = arguments;\n switch (args.length) {\n case 0: return !predicate.call(this);\n case 1: return !predicate.call(this, args[0]);\n case 2: return !predicate.call(this, args[0], args[1]);\n case 3: return !predicate.call(this, args[0], args[1], args[2]);\n }\n return !predicate.apply(this, args);\n };\n }\n\n /**\n * Creates a function that is restricted to invoking `func` once. Repeat calls\n * to the function return the value of the first invocation. The `func` is\n * invoked with the `this` binding and arguments of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var initialize = _.once(createApplication);\n * initialize();\n * initialize();\n * // => `createApplication` is invoked once\n */\n function once(func) {\n return before(2, func);\n }\n\n /**\n * Creates a function that invokes `func` with its arguments transformed.\n *\n * @static\n * @since 4.0.0\n * @memberOf _\n * @category Function\n * @param {Function} func The function to wrap.\n * @param {...(Function|Function[])} [transforms=[_.identity]]\n * The argument transforms.\n * @returns {Function} Returns the new function.\n * @example\n *\n * function doubled(n) {\n * return n * 2;\n * }\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var func = _.overArgs(function(x, y) {\n * return [x, y];\n * }, [square, doubled]);\n *\n * func(9, 3);\n * // => [81, 6]\n *\n * func(10, 5);\n * // => [100, 10]\n */\n var overArgs = castRest(function(func, transforms) {\n transforms = (transforms.length == 1 && isArray(transforms[0]))\n ? arrayMap(transforms[0], baseUnary(getIteratee()))\n : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee()));\n\n var funcsLength = transforms.length;\n return baseRest(function(args) {\n var index = -1,\n length = nativeMin(args.length, funcsLength);\n\n while (++index < length) {\n args[index] = transforms[index].call(this, args[index]);\n }\n return apply(func, this, args);\n });\n });\n\n /**\n * Creates a function that invokes `func` with `partials` prepended to the\n * arguments it receives. This method is like `_.bind` except it does **not**\n * alter the `this` binding.\n *\n * The `_.partial.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 0.2.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var sayHelloTo = _.partial(greet, 'hello');\n * sayHelloTo('fred');\n * // => 'hello fred'\n *\n * // Partially applied with placeholders.\n * var greetFred = _.partial(greet, _, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n */\n var partial = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partial));\n return createWrap(func, WRAP_PARTIAL_FLAG, undefined, partials, holders);\n });\n\n /**\n * This method is like `_.partial` except that partially applied arguments\n * are appended to the arguments it receives.\n *\n * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var greetFred = _.partialRight(greet, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n *\n * // Partially applied with placeholders.\n * var sayHelloTo = _.partialRight(greet, 'hello', _);\n * sayHelloTo('fred');\n * // => 'hello fred'\n */\n var partialRight = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partialRight));\n return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined, partials, holders);\n });\n\n /**\n * Creates a function that invokes `func` with arguments arranged according\n * to the specified `indexes` where the argument value at the first index is\n * provided as the first argument, the argument value at the second index is\n * provided as the second argument, and so on.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to rearrange arguments for.\n * @param {...(number|number[])} indexes The arranged argument indexes.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var rearged = _.rearg(function(a, b, c) {\n * return [a, b, c];\n * }, [2, 0, 1]);\n *\n * rearged('b', 'c', 'a')\n * // => ['a', 'b', 'c']\n */\n var rearg = flatRest(function(func, indexes) {\n return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes);\n });\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * created function and arguments from `start` and beyond provided as\n * an array.\n *\n * **Note:** This method is based on the\n * [rest parameter](https://mdn.io/rest_parameters).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.rest(function(what, names) {\n * return what + ' ' + _.initial(names).join(', ') +\n * (_.size(names) > 1 ? ', & ' : '') + _.last(names);\n * });\n *\n * say('hello', 'fred', 'barney', 'pebbles');\n * // => 'hello fred, barney, & pebbles'\n */\n function rest(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start === undefined ? start : toInteger(start);\n return baseRest(func, start);\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * create function and an array of arguments much like\n * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply).\n *\n * **Note:** This method is based on the\n * [spread operator](https://mdn.io/spread_operator).\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Function\n * @param {Function} func The function to spread arguments over.\n * @param {number} [start=0] The start position of the spread.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.spread(function(who, what) {\n * return who + ' says ' + what;\n * });\n *\n * say(['fred', 'hello']);\n * // => 'fred says hello'\n *\n * var numbers = Promise.all([\n * Promise.resolve(40),\n * Promise.resolve(36)\n * ]);\n *\n * numbers.then(_.spread(function(x, y) {\n * return x + y;\n * }));\n * // => a Promise of 76\n */\n function spread(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start == null ? 0 : nativeMax(toInteger(start), 0);\n return baseRest(function(args) {\n var array = args[start],\n otherArgs = castSlice(args, 0, start);\n\n if (array) {\n arrayPush(otherArgs, array);\n }\n return apply(func, this, otherArgs);\n });\n }\n\n /**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\n function throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n }\n\n /**\n * Creates a function that accepts up to one argument, ignoring any\n * additional arguments.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.unary(parseInt));\n * // => [6, 8, 10]\n */\n function unary(func) {\n return ary(func, 1);\n }\n\n /**\n * Creates a function that provides `value` to `wrapper` as its first\n * argument. Any additional arguments provided to the function are appended\n * to those provided to the `wrapper`. The wrapper is invoked with the `this`\n * binding of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {*} value The value to wrap.\n * @param {Function} [wrapper=identity] The wrapper function.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var p = _.wrap(_.escape, function(func, text) {\n * return '<p>' + func(text) + '</p>';\n * });\n *\n * p('fred, barney, & pebbles');\n * // => '<p>fred, barney, & pebbles</p>'\n */\n function wrap(value, wrapper) {\n return partial(castFunction(wrapper), value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Casts `value` as an array if it's not one.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Lang\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast array.\n * @example\n *\n * _.castArray(1);\n * // => [1]\n *\n * _.castArray({ 'a': 1 });\n * // => [{ 'a': 1 }]\n *\n * _.castArray('abc');\n * // => ['abc']\n *\n * _.castArray(null);\n * // => [null]\n *\n * _.castArray(undefined);\n * // => [undefined]\n *\n * _.castArray();\n * // => []\n *\n * var array = [1, 2, 3];\n * console.log(_.castArray(array) === array);\n * // => true\n */\n function castArray() {\n if (!arguments.length) {\n return [];\n }\n var value = arguments[0];\n return isArray(value) ? value : [value];\n }\n\n /**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\n function clone(value) {\n return baseClone(value, CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.clone` except that it accepts `customizer` which\n * is invoked to produce the cloned value. If `customizer` returns `undefined`,\n * cloning is handled by the method instead. The `customizer` is invoked with\n * up to four arguments; (value [, index|key, object, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeepWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(false);\n * }\n * }\n *\n * var el = _.cloneWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 0\n */\n function cloneWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\n function cloneDeep(value) {\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.cloneWith` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the deep cloned value.\n * @see _.cloneWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(true);\n * }\n * }\n *\n * var el = _.cloneDeepWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 20\n */\n function cloneDeepWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * Checks if `object` conforms to `source` by invoking the predicate\n * properties of `source` with the corresponding property values of `object`.\n *\n * **Note:** This method is equivalent to `_.conforms` when `source` is\n * partially applied.\n *\n * @static\n * @memberOf _\n * @since 4.14.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 1; } });\n * // => true\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 2; } });\n * // => false\n */\n function conformsTo(object, source) {\n return source == null || baseConformsTo(object, source, keys(source));\n }\n\n /**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\n function eq(value, other) {\n return value === other || (value !== value && other !== other);\n }\n\n /**\n * Checks if `value` is greater than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.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 `value` is greater than `other`,\n * else `false`.\n * @see _.lt\n * @example\n *\n * _.gt(3, 1);\n * // => true\n *\n * _.gt(3, 3);\n * // => false\n *\n * _.gt(1, 3);\n * // => false\n */\n var gt = createRelationalOperation(baseGt);\n\n /**\n * Checks if `value` is greater than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.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 `value` is greater than or equal to\n * `other`, else `false`.\n * @see _.lte\n * @example\n *\n * _.gte(3, 1);\n * // => true\n *\n * _.gte(3, 3);\n * // => true\n *\n * _.gte(1, 3);\n * // => false\n */\n var gte = createRelationalOperation(function(value, other) {\n return value >= other;\n });\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 */\n var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n };\n\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 */\n var isArray = Array.isArray;\n\n /**\n * Checks if `value` is classified as an `ArrayBuffer` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n * @example\n *\n * _.isArrayBuffer(new ArrayBuffer(2));\n * // => true\n *\n * _.isArrayBuffer(new Array(2));\n * // => false\n */\n var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer;\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 */\n function isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n }\n\n /**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\n function isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n }\n\n /**\n * Checks if `value` is classified as a boolean primitive or object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a boolean, else `false`.\n * @example\n *\n * _.isBoolean(false);\n * // => true\n *\n * _.isBoolean(null);\n * // => false\n */\n function isBoolean(value) {\n return value === true || value === false ||\n (isObjectLike(value) && baseGetTag(value) == boolTag);\n }\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 */\n var isBuffer = nativeIsBuffer || stubFalse;\n\n /**\n * Checks if `value` is classified as a `Date` 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 date object, else `false`.\n * @example\n *\n * _.isDate(new Date);\n * // => true\n *\n * _.isDate('Mon April 23 2012');\n * // => false\n */\n var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate;\n\n /**\n * Checks if `value` is likely a DOM element.\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 DOM element, else `false`.\n * @example\n *\n * _.isElement(document.body);\n * // => true\n *\n * _.isElement('<body>');\n * // => false\n */\n function isElement(value) {\n return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value);\n }\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 */\n function 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\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 */\n function isEqual(value, other) {\n return baseIsEqual(value, other);\n }\n\n /**\n * This method is like `_.isEqual` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with up to\n * six arguments: (objValue, othValue [, index|key, object, other, stack]).\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 * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, othValue) {\n * if (isGreeting(objValue) && isGreeting(othValue)) {\n * return true;\n * }\n * }\n *\n * var array = ['hello', 'goodbye'];\n * var other = ['hi', 'goodbye'];\n *\n * _.isEqualWith(array, other, customizer);\n * // => true\n */\n function isEqualWith(value, other, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n var result = customizer ? customizer(value, other) : undefined;\n return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result;\n }\n\n /**\n * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,\n * `SyntaxError`, `TypeError`, or `URIError` object.\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 an error object, else `false`.\n * @example\n *\n * _.isError(new Error);\n * // => true\n *\n * _.isError(Error);\n * // => false\n */\n function isError(value) {\n if (!isObjectLike(value)) {\n return false;\n }\n var tag = baseGetTag(value);\n return tag == errorTag || tag == domExcTag ||\n (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value));\n }\n\n /**\n * Checks if `value` is a finite primitive number.\n *\n * **Note:** This method is based on\n * [`Number.isFinite`](https://mdn.io/Number/isFinite).\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 finite number, else `false`.\n * @example\n *\n * _.isFinite(3);\n * // => true\n *\n * _.isFinite(Number.MIN_VALUE);\n * // => true\n *\n * _.isFinite(Infinity);\n * // => false\n *\n * _.isFinite('3');\n * // => false\n */\n function isFinite(value) {\n return typeof value == 'number' && nativeIsFinite(value);\n }\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 */\n function 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\n /**\n * Checks if `value` is an integer.\n *\n * **Note:** This method is based on\n * [`Number.isInteger`](https://mdn.io/Number/isInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an integer, else `false`.\n * @example\n *\n * _.isInteger(3);\n * // => true\n *\n * _.isInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isInteger(Infinity);\n * // => false\n *\n * _.isInteger('3');\n * // => false\n */\n function isInteger(value) {\n return typeof value == 'number' && value == toInteger(value);\n }\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 */\n function isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\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 */\n function isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n }\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 */\n function isObjectLike(value) {\n return value != null && typeof value == 'object';\n }\n\n /**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\n var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\n /**\n * Performs a partial deep comparison between `object` and `source` to\n * determine if `object` contains equivalent property values.\n *\n * **Note:** This method is equivalent to `_.matches` when `source` is\n * partially applied.\n *\n * Partial comparisons will match empty array and empty object `source`\n * values against any array or object value, respectively. See `_.isEqual`\n * for a list of supported value comparisons.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.isMatch(object, { 'b': 2 });\n * // => true\n *\n * _.isMatch(object, { 'b': 1 });\n * // => false\n */\n function isMatch(object, source) {\n return object === source || baseIsMatch(object, source, getMatchData(source));\n }\n\n /**\n * This method is like `_.isMatch` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with five\n * arguments: (objValue, srcValue, index|key, object, source).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, srcValue) {\n * if (isGreeting(objValue) && isGreeting(srcValue)) {\n * return true;\n * }\n * }\n *\n * var object = { 'greeting': 'hello' };\n * var source = { 'greeting': 'hi' };\n *\n * _.isMatchWith(object, source, customizer);\n * // => true\n */\n function isMatchWith(object, source, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseIsMatch(object, source, getMatchData(source), customizer);\n }\n\n /**\n * Checks if `value` is `NaN`.\n *\n * **Note:** This method is based on\n * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as\n * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for\n * `undefined` and other non-number values.\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 `NaN`, else `false`.\n * @example\n *\n * _.isNaN(NaN);\n * // => true\n *\n * _.isNaN(new Number(NaN));\n * // => true\n *\n * isNaN(undefined);\n * // => true\n *\n * _.isNaN(undefined);\n * // => false\n */\n function isNaN(value) {\n // An `NaN` primitive is the only value that is not equal to itself.\n // Perform the `toStringTag` check first to avoid errors with some\n // ActiveX objects in IE.\n return isNumber(value) && value != +value;\n }\n\n /**\n * Checks if `value` is a pristine native function.\n *\n * **Note:** This method can't reliably detect native functions in the presence\n * of the core-js package because core-js circumvents this kind of detection.\n * Despite multiple requests, the core-js maintainer has made it clear: any\n * attempt to fix the detection will be obstructed. As a result, we're left\n * with little choice but to throw an error. Unfortunately, this also affects\n * packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill),\n * which rely on core-js.\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 native function,\n * else `false`.\n * @example\n *\n * _.isNative(Array.prototype.push);\n * // => true\n *\n * _.isNative(_);\n * // => false\n */\n function isNative(value) {\n if (isMaskable(value)) {\n throw new Error(CORE_ERROR_TEXT);\n }\n return baseIsNative(value);\n }\n\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 */\n function isNull(value) {\n return value === null;\n }\n\n /**\n * Checks if `value` is `null` or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is nullish, else `false`.\n * @example\n *\n * _.isNil(null);\n * // => true\n *\n * _.isNil(void 0);\n * // => true\n *\n * _.isNil(NaN);\n * // => false\n */\n function isNil(value) {\n return value == null;\n }\n\n /**\n * Checks if `value` is classified as a `Number` primitive or object.\n *\n * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are\n * classified as numbers, use the `_.isFinite` method.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a number, else `false`.\n * @example\n *\n * _.isNumber(3);\n * // => true\n *\n * _.isNumber(Number.MIN_VALUE);\n * // => true\n *\n * _.isNumber(Infinity);\n * // => true\n *\n * _.isNumber('3');\n * // => false\n */\n function isNumber(value) {\n return typeof value == 'number' ||\n (isObjectLike(value) && baseGetTag(value) == numberTag);\n }\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 */\n function 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\n /**\n * Checks if `value` is classified as a `RegExp` 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 regexp, else `false`.\n * @example\n *\n * _.isRegExp(/abc/);\n * // => true\n *\n * _.isRegExp('/abc/');\n * // => false\n */\n var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;\n\n /**\n * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754\n * double precision number which isn't the result of a rounded unsafe integer.\n *\n * **Note:** This method is based on\n * [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger).\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 safe integer, else `false`.\n * @example\n *\n * _.isSafeInteger(3);\n * // => true\n *\n * _.isSafeInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isSafeInteger(Infinity);\n * // => false\n *\n * _.isSafeInteger('3');\n * // => false\n */\n function isSafeInteger(value) {\n return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\n var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\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 */\n function isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n }\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 */\n function isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n }\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 */\n var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\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 */\n function isUndefined(value) {\n return value === undefined;\n }\n\n /**\n * Checks if `value` is classified as a `WeakMap` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak map, else `false`.\n * @example\n *\n * _.isWeakMap(new WeakMap);\n * // => true\n *\n * _.isWeakMap(new Map);\n * // => false\n */\n function isWeakMap(value) {\n return isObjectLike(value) && getTag(value) == weakMapTag;\n }\n\n /**\n * Checks if `value` is classified as a `WeakSet` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak set, else `false`.\n * @example\n *\n * _.isWeakSet(new WeakSet);\n * // => true\n *\n * _.isWeakSet(new Set);\n * // => false\n */\n function isWeakSet(value) {\n return isObjectLike(value) && baseGetTag(value) == weakSetTag;\n }\n\n /**\n * Checks if `value` is less than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.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 `value` is less than `other`,\n * else `false`.\n * @see _.gt\n * @example\n *\n * _.lt(1, 3);\n * // => true\n *\n * _.lt(3, 3);\n * // => false\n *\n * _.lt(3, 1);\n * // => false\n */\n var lt = createRelationalOperation(baseLt);\n\n /**\n * Checks if `value` is less than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.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 `value` is less than or equal to\n * `other`, else `false`.\n * @see _.gte\n * @example\n *\n * _.lte(1, 3);\n * // => true\n *\n * _.lte(3, 3);\n * // => true\n *\n * _.lte(3, 1);\n * // => false\n */\n var lte = createRelationalOperation(function(value, other) {\n return value <= other;\n });\n\n /**\n * Converts `value` to an array.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Array} Returns the converted array.\n * @example\n *\n * _.toArray({ 'a': 1, 'b': 2 });\n * // => [1, 2]\n *\n * _.toArray('abc');\n * // => ['a', 'b', 'c']\n *\n * _.toArray(1);\n * // => []\n *\n * _.toArray(null);\n * // => []\n */\n function toArray(value) {\n if (!value) {\n return [];\n }\n if (isArrayLike(value)) {\n return isString(value) ? stringToArray(value) : copyArray(value);\n }\n if (symIterator && value[symIterator]) {\n return iteratorToArray(value[symIterator]());\n }\n var tag = getTag(value),\n func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values);\n\n return func(value);\n }\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 */\n function 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\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 */\n function toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n }\n\n /**\n * Converts `value` to an integer suitable for use as the length of an\n * array-like object.\n *\n * **Note:** This method is 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 convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toLength(3.2);\n * // => 3\n *\n * _.toLength(Number.MIN_VALUE);\n * // => 0\n *\n * _.toLength(Infinity);\n * // => 4294967295\n *\n * _.toLength('3.2');\n * // => 3\n */\n function toLength(value) {\n return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0;\n }\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 */\n function 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 = baseTrim(value);\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\n /**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\n function toPlainObject(value) {\n return copyObject(value, keysIn(value));\n }\n\n /**\n * Converts `value` to a safe integer. A safe integer can be compared and\n * represented correctly.\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 * _.toSafeInteger(3.2);\n * // => 3\n *\n * _.toSafeInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toSafeInteger(Infinity);\n * // => 9007199254740991\n *\n * _.toSafeInteger('3.2');\n * // => 3\n */\n function toSafeInteger(value) {\n return value\n ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER)\n : (value === 0 ? value : 0);\n }\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 */\n function toString(value) {\n return value == null ? '' : baseToString(value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Assigns own enumerable string keyed properties of source objects to the\n * destination object. Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object` and is loosely based on\n * [`Object.assign`](https://mdn.io/Object/assign).\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assignIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assign({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'c': 3 }\n */\n var assign = createAssigner(function(object, source) {\n if (isPrototype(source) || isArrayLike(source)) {\n copyObject(source, keys(source), object);\n return;\n }\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n assignValue(object, key, source[key]);\n }\n }\n });\n\n /**\n * This method is like `_.assign` except that it iterates over own and\n * inherited source properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extend\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assign\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assignIn({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }\n */\n var assignIn = createAssigner(function(object, source) {\n copyObject(source, keysIn(source), object);\n });\n\n /**\n * This method is like `_.assignIn` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extendWith\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignInWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignInWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keysIn(source), object, customizer);\n });\n\n /**\n * This method is like `_.assign` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignInWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keys(source), object, customizer);\n });\n\n /**\n * Creates an array of values corresponding to `paths` of `object`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Array} Returns the picked values.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _.at(object, ['a[0].b.c', 'a[1]']);\n * // => [3, 4]\n */\n var at = flatRest(baseAt);\n\n /**\n * Creates an object that inherits from the `prototype` object. If a\n * `properties` object is given, its own enumerable string keyed properties\n * are assigned to the created object.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Object\n * @param {Object} prototype The object to inherit from.\n * @param {Object} [properties] The properties to assign to the object.\n * @returns {Object} Returns the new object.\n * @example\n *\n * function Shape() {\n * this.x = 0;\n * this.y = 0;\n * }\n *\n * function Circle() {\n * Shape.call(this);\n * }\n *\n * Circle.prototype = _.create(Shape.prototype, {\n * 'constructor': Circle\n * });\n *\n * var circle = new Circle;\n * circle instanceof Circle;\n * // => true\n *\n * circle instanceof Shape;\n * // => true\n */\n function create(prototype, properties) {\n var result = baseCreate(prototype);\n return properties == null ? result : baseAssign(result, properties);\n }\n\n /**\n * Assigns own and inherited enumerable string keyed properties of source\n * objects to the destination object for all destination properties that\n * resolve to `undefined`. Source objects are applied from left to right.\n * Once a property is set, additional values of the same property are ignored.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaultsDeep\n * @example\n *\n * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var defaults = baseRest(function(object, sources) {\n object = Object(object);\n\n var index = -1;\n var length = sources.length;\n var guard = length > 2 ? sources[2] : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n length = 1;\n }\n\n while (++index < length) {\n var source = sources[index];\n var props = keysIn(source);\n var propsIndex = -1;\n var propsLength = props.length;\n\n while (++propsIndex < propsLength) {\n var key = props[propsIndex];\n var value = object[key];\n\n if (value === undefined ||\n (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n object[key] = source[key];\n }\n }\n }\n\n return object;\n });\n\n /**\n * This method is like `_.defaults` except that it recursively assigns\n * default properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaults\n * @example\n *\n * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } });\n * // => { 'a': { 'b': 2, 'c': 3 } }\n */\n var defaultsDeep = baseRest(function(args) {\n args.push(undefined, customDefaultsMerge);\n return apply(mergeWith, undefined, args);\n });\n\n /**\n * This method is like `_.find` except that it returns the key of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findKey(users, function(o) { return o.age < 40; });\n * // => 'barney' (iteration order is not guaranteed)\n *\n * // The `_.matches` iteratee shorthand.\n * _.findKey(users, { 'age': 1, 'active': true });\n * // => 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findKey(users, 'active');\n * // => 'barney'\n */\n function findKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwn);\n }\n\n /**\n * This method is like `_.findKey` except that it iterates over elements of\n * a collection in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findLastKey(users, function(o) { return o.age < 40; });\n * // => returns 'pebbles' assuming `_.findKey` returns 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastKey(users, { 'age': 36, 'active': true });\n * // => 'barney'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastKey(users, 'active');\n * // => 'pebbles'\n */\n function findLastKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight);\n }\n\n /**\n * Iterates over own and inherited enumerable string keyed properties of an\n * object and invokes `iteratee` for each property. The iteratee is invoked\n * with three arguments: (value, key, object). Iteratee functions may exit\n * iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forInRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forIn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed).\n */\n function forIn(object, iteratee) {\n return object == null\n ? object\n : baseFor(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * This method is like `_.forIn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forInRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'.\n */\n function forInRight(object, iteratee) {\n return object == null\n ? object\n : baseForRight(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * Iterates over own enumerable string keyed properties of an object and\n * invokes `iteratee` for each property. The iteratee is invoked with three\n * arguments: (value, key, object). Iteratee functions may exit iteration\n * early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwnRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forOwn(object, iteratee) {\n return object && baseForOwn(object, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forOwn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwnRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'.\n */\n function forOwnRight(object, iteratee) {\n return object && baseForOwnRight(object, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an array of function property names from own enumerable properties\n * of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functionsIn\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functions(new Foo);\n * // => ['a', 'b']\n */\n function functions(object) {\n return object == null ? [] : baseFunctions(object, keys(object));\n }\n\n /**\n * Creates an array of function property names from own and inherited\n * enumerable properties of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functions\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functionsIn(new Foo);\n * // => ['a', 'b', 'c']\n */\n function functionsIn(object) {\n return object == null ? [] : baseFunctions(object, keysIn(object));\n }\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 */\n function get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n }\n\n /**\n * Checks if `path` is a direct property of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\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 = { 'a': { 'b': 2 } };\n * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.has(object, 'a');\n * // => true\n *\n * _.has(object, 'a.b');\n * // => true\n *\n * _.has(object, ['a', 'b']);\n * // => true\n *\n * _.has(other, 'a');\n * // => false\n */\n function has(object, path) {\n return object != null && hasPath(object, path, baseHas);\n }\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 */\n function hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n }\n\n /**\n * Creates an object composed of the inverted keys and values of `object`.\n * If `object` contains duplicate values, subsequent values overwrite\n * property assignments of previous values.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Object\n * @param {Object} object The object to invert.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invert(object);\n * // => { '1': 'c', '2': 'b' }\n */\n var invert = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n result[value] = key;\n }, constant(identity));\n\n /**\n * This method is like `_.invert` except that the inverted object is generated\n * from the results of running each element of `object` thru `iteratee`. The\n * corresponding inverted value of each inverted key is an array of keys\n * responsible for generating the inverted value. The iteratee is invoked\n * with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Object\n * @param {Object} object The object to invert.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invertBy(object);\n * // => { '1': ['a', 'c'], '2': ['b'] }\n *\n * _.invertBy(object, function(value) {\n * return 'group' + value;\n * });\n * // => { 'group1': ['a', 'c'], 'group2': ['b'] }\n */\n var invertBy = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n if (hasOwnProperty.call(result, value)) {\n result[value].push(key);\n } else {\n result[value] = [key];\n }\n }, getIteratee);\n\n /**\n * Invokes the method at `path` 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 of the method to invoke.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] };\n *\n * _.invoke(object, 'a[0].b.c.slice', 1, 3);\n * // => [2, 3]\n */\n var invoke = baseRest(baseInvoke);\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 */\n function keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n }\n\n /**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\n function keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n }\n\n /**\n * The opposite of `_.mapValues`; this method creates an object with the\n * same values as `object` and keys generated by running each own enumerable\n * string keyed property of `object` thru `iteratee`. The iteratee is invoked\n * with three arguments: (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapValues\n * @example\n *\n * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) {\n * return key + value;\n * });\n * // => { 'a1': 1, 'b2': 2 }\n */\n function mapKeys(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, iteratee(value, key, object), value);\n });\n return result;\n }\n\n /**\n * Creates an object with the same keys as `object` and values generated\n * by running each own enumerable string keyed property of `object` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapKeys\n * @example\n *\n * var users = {\n * 'fred': { 'user': 'fred', 'age': 40 },\n * 'pebbles': { 'user': 'pebbles', 'age': 1 }\n * };\n *\n * _.mapValues(users, function(o) { return o.age; });\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n *\n * // The `_.property` iteratee shorthand.\n * _.mapValues(users, 'age');\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n */\n function mapValues(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, key, iteratee(value, key, object));\n });\n return result;\n }\n\n /**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\n var merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n });\n\n /**\n * This method is like `_.merge` except that it accepts `customizer` which\n * is invoked to produce the merged values of the destination and source\n * properties. If `customizer` returns `undefined`, merging is handled by the\n * method instead. The `customizer` is invoked with six arguments:\n * (objValue, srcValue, key, object, source, stack).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} customizer The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * function customizer(objValue, srcValue) {\n * if (_.isArray(objValue)) {\n * return objValue.concat(srcValue);\n * }\n * }\n *\n * var object = { 'a': [1], 'b': [2] };\n * var other = { 'a': [3], 'b': [4] };\n *\n * _.mergeWith(object, other, customizer);\n * // => { 'a': [1, 3], 'b': [2, 4] }\n */\n var mergeWith = createAssigner(function(object, source, srcIndex, customizer) {\n baseMerge(object, source, srcIndex, customizer);\n });\n\n /**\n * The opposite of `_.pick`; this method creates an object composed of the\n * own and inherited enumerable property paths of `object` that are not omitted.\n *\n * **Note:** This method is considerably slower than `_.pick`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to omit.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omit(object, ['a', 'c']);\n * // => { 'b': '2' }\n */\n var omit = flatRest(function(object, paths) {\n var result = {};\n if (object == null) {\n return result;\n }\n var isDeep = false;\n paths = arrayMap(paths, function(path) {\n path = castPath(path, object);\n isDeep || (isDeep = path.length > 1);\n return path;\n });\n copyObject(object, getAllKeysIn(object), result);\n if (isDeep) {\n result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);\n }\n var length = paths.length;\n while (length--) {\n baseUnset(result, paths[length]);\n }\n return result;\n });\n\n /**\n * The opposite of `_.pickBy`; this method creates an object composed of\n * the own and inherited enumerable string keyed properties of `object` that\n * `predicate` doesn't return truthy for. The predicate is invoked with two\n * arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omitBy(object, _.isNumber);\n * // => { 'b': '2' }\n */\n function omitBy(object, predicate) {\n return pickBy(object, negate(getIteratee(predicate)));\n }\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 */\n var pick = flatRest(function(object, paths) {\n return object == null ? {} : basePick(object, paths);\n });\n\n /**\n * Creates an object composed of the `object` properties `predicate` returns\n * truthy for. The predicate is invoked with two arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pickBy(object, _.isNumber);\n * // => { 'a': 1, 'c': 3 }\n */\n function pickBy(object, predicate) {\n if (object == null) {\n return {};\n }\n var props = arrayMap(getAllKeysIn(object), function(prop) {\n return [prop];\n });\n predicate = getIteratee(predicate);\n return basePickBy(object, props, function(value, path) {\n return predicate(value, path[0]);\n });\n }\n\n /**\n * This method is like `_.get` except that if the resolved value is a\n * function it's invoked with the `this` binding of its parent object and\n * its result is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to resolve.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] };\n *\n * _.result(object, 'a[0].b.c1');\n * // => 3\n *\n * _.result(object, 'a[0].b.c2');\n * // => 4\n *\n * _.result(object, 'a[0].b.c3', 'default');\n * // => 'default'\n *\n * _.result(object, 'a[0].b.c3', _.constant('default'));\n * // => 'default'\n */\n function result(object, path, defaultValue) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length;\n\n // Ensure the loop is entered when path is empty.\n if (!length) {\n length = 1;\n object = undefined;\n }\n while (++index < length) {\n var value = object == null ? undefined : object[toKey(path[index])];\n if (value === undefined) {\n index = length;\n value = defaultValue;\n }\n object = isFunction(value) ? value.call(object) : value;\n }\n return object;\n }\n\n /**\n * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,\n * it's created. Arrays are created for missing index properties while objects\n * are created for all other missing properties. Use `_.setWith` to customize\n * `path` creation.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\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 * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.set(object, 'a[0].b.c', 4);\n * console.log(object.a[0].b.c);\n * // => 4\n *\n * _.set(object, ['x', '0', 'y', 'z'], 5);\n * console.log(object.x[0].y.z);\n * // => 5\n */\n function set(object, path, value) {\n return object == null ? object : baseSet(object, path, value);\n }\n\n /**\n * This method is like `_.set` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\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 assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.setWith(object, '[0][1]', 'a', Object);\n * // => { '0': { '1': 'a' } }\n */\n function setWith(object, path, value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseSet(object, path, value, customizer);\n }\n\n /**\n * Creates an array of own enumerable string keyed-value pairs for `object`\n * which can be consumed by `_.fromPairs`. If `object` is a map or set, its\n * entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entries\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairs(new Foo);\n * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed)\n */\n var toPairs = createToPairs(keys);\n\n /**\n * Creates an array of own and inherited enumerable string keyed-value pairs\n * for `object` which can be consumed by `_.fromPairs`. If `object` is a map\n * or set, its entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entriesIn\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairsIn(new Foo);\n * // => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed)\n */\n var toPairsIn = createToPairs(keysIn);\n\n /**\n * An alternative to `_.reduce`; this method transforms `object` to a new\n * `accumulator` object which is the result of running each of its own\n * enumerable string keyed properties thru `iteratee`, with each invocation\n * potentially mutating the `accumulator` object. If `accumulator` is not\n * provided, a new object with the same `[[Prototype]]` will be used. The\n * iteratee is invoked with four arguments: (accumulator, value, key, object).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The custom accumulator value.\n * @returns {*} Returns the accumulated value.\n * @example\n *\n * _.transform([2, 3, 4], function(result, n) {\n * result.push(n *= n);\n * return n % 2 == 0;\n * }, []);\n * // => [4, 9]\n *\n * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] }\n */\n function transform(object, iteratee, accumulator) {\n var isArr = isArray(object),\n isArrLike = isArr || isBuffer(object) || isTypedArray(object);\n\n iteratee = getIteratee(iteratee, 4);\n if (accumulator == null) {\n var Ctor = object && object.constructor;\n if (isArrLike) {\n accumulator = isArr ? new Ctor : [];\n }\n else if (isObject(object)) {\n accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {};\n }\n else {\n accumulator = {};\n }\n }\n (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) {\n return iteratee(accumulator, value, index, object);\n });\n return accumulator;\n }\n\n /**\n * Removes the property at `path` of `object`.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 7 } }] };\n * _.unset(object, 'a[0].b.c');\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n *\n * _.unset(object, ['a', '0', 'b', 'c']);\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n */\n function unset(object, path) {\n return object == null ? true : baseUnset(object, path);\n }\n\n /**\n * This method is like `_.set` except that accepts `updater` to produce the\n * value to set. Use `_.updateWith` to customize `path` creation. The `updater`\n * is invoked with one argument: (value).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.update(object, 'a[0].b.c', function(n) { return n * n; });\n * console.log(object.a[0].b.c);\n * // => 9\n *\n * _.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; });\n * console.log(object.x[0].y.z);\n * // => 0\n */\n function update(object, path, updater) {\n return object == null ? object : baseUpdate(object, path, castFunction(updater));\n }\n\n /**\n * This method is like `_.update` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.updateWith(object, '[0][1]', _.constant('a'), Object);\n * // => { '0': { '1': 'a' } }\n */\n function updateWith(object, path, updater, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer);\n }\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 */\n function values(object) {\n return object == null ? [] : baseValues(object, keys(object));\n }\n\n /**\n * Creates an array of the own and inherited enumerable string keyed property\n * values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.valuesIn(new Foo);\n * // => [1, 2, 3] (iteration order is not guaranteed)\n */\n function valuesIn(object) {\n return object == null ? [] : baseValues(object, keysIn(object));\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Clamps `number` within the inclusive `lower` and `upper` bounds.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Number\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n * @example\n *\n * _.clamp(-10, -5, 5);\n * // => -5\n *\n * _.clamp(10, -5, 5);\n * // => 5\n */\n function clamp(number, lower, upper) {\n if (upper === undefined) {\n upper = lower;\n lower = undefined;\n }\n if (upper !== undefined) {\n upper = toNumber(upper);\n upper = upper === upper ? upper : 0;\n }\n if (lower !== undefined) {\n lower = toNumber(lower);\n lower = lower === lower ? lower : 0;\n }\n return baseClamp(toNumber(number), lower, upper);\n }\n\n /**\n * Checks if `n` is between `start` and up to, but not including, `end`. If\n * `end` is not specified, it's set to `start` with `start` then set to `0`.\n * If `start` is greater than `end` the params are swapped to support\n * negative ranges.\n *\n * @static\n * @memberOf _\n * @since 3.3.0\n * @category Number\n * @param {number} number The number to check.\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n * @see _.range, _.rangeRight\n * @example\n *\n * _.inRange(3, 2, 4);\n * // => true\n *\n * _.inRange(4, 8);\n * // => true\n *\n * _.inRange(4, 2);\n * // => false\n *\n * _.inRange(2, 2);\n * // => false\n *\n * _.inRange(1.2, 2);\n * // => true\n *\n * _.inRange(5.2, 4);\n * // => false\n *\n * _.inRange(-3, -2, -6);\n * // => true\n */\n function inRange(number, start, end) {\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n number = toNumber(number);\n return baseInRange(number, start, end);\n }\n\n /**\n * Produces a random number between the inclusive `lower` and `upper` bounds.\n * If only one argument is provided a number between `0` and the given number\n * is returned. If `floating` is `true`, or either `lower` or `upper` are\n * floats, a floating-point number is returned instead of an integer.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Number\n * @param {number} [lower=0] The lower bound.\n * @param {number} [upper=1] The upper bound.\n * @param {boolean} [floating] Specify returning a floating-point number.\n * @returns {number} Returns the random number.\n * @example\n *\n * _.random(0, 5);\n * // => an integer between 0 and 5\n *\n * _.random(5);\n * // => also an integer between 0 and 5\n *\n * _.random(5, true);\n * // => a floating-point number between 0 and 5\n *\n * _.random(1.2, 5.2);\n * // => a floating-point number between 1.2 and 5.2\n */\n function random(lower, upper, floating) {\n if (floating && typeof floating != 'boolean' && isIterateeCall(lower, upper, floating)) {\n upper = floating = undefined;\n }\n if (floating === undefined) {\n if (typeof upper == 'boolean') {\n floating = upper;\n upper = undefined;\n }\n else if (typeof lower == 'boolean') {\n floating = lower;\n lower = undefined;\n }\n }\n if (lower === undefined && upper === undefined) {\n lower = 0;\n upper = 1;\n }\n else {\n lower = toFinite(lower);\n if (upper === undefined) {\n upper = lower;\n lower = 0;\n } else {\n upper = toFinite(upper);\n }\n }\n if (lower > upper) {\n var temp = lower;\n lower = upper;\n upper = temp;\n }\n if (floating || lower % 1 || upper % 1) {\n var rand = nativeRandom();\n return nativeMin(lower + (rand * (upper - lower + freeParseFloat('1e-' + ((rand + '').length - 1)))), upper);\n }\n return baseRandom(lower, upper);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the camel cased string.\n * @example\n *\n * _.camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * _.camelCase('--foo-bar--');\n * // => 'fooBar'\n *\n * _.camelCase('__FOO_BAR__');\n * // => 'fooBar'\n */\n var camelCase = createCompounder(function(result, word, index) {\n word = word.toLowerCase();\n return result + (index ? capitalize(word) : word);\n });\n\n /**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\n function capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n }\n\n /**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\n function deburr(string) {\n string = toString(string);\n return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n }\n\n /**\n * Checks if `string` ends with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=string.length] The position to search up to.\n * @returns {boolean} Returns `true` if `string` ends with `target`,\n * else `false`.\n * @example\n *\n * _.endsWith('abc', 'c');\n * // => true\n *\n * _.endsWith('abc', 'b');\n * // => false\n *\n * _.endsWith('abc', 'b', 2);\n * // => true\n */\n function endsWith(string, target, position) {\n string = toString(string);\n target = baseToString(target);\n\n var length = string.length;\n position = position === undefined\n ? length\n : baseClamp(toInteger(position), 0, length);\n\n var end = position;\n position -= target.length;\n return position >= 0 && string.slice(position, end) == target;\n }\n\n /**\n * Converts the characters \"&\", \"<\", \">\", '\"', and \"'\" in `string` to their\n * corresponding HTML entities.\n *\n * **Note:** No other characters are escaped. To escape additional\n * characters use a third-party library like [_he_](https://mths.be/he).\n *\n * Though the \">\" character is escaped for symmetry, characters like\n * \">\" and \"/\" don't need escaping in HTML and have no special meaning\n * unless they're part of a tag or unquoted attribute value. See\n * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)\n * (under \"semi-related fun fact\") for more details.\n *\n * When working with HTML you should always\n * [quote attribute values](http://wonko.com/post/html-escaping) to reduce\n * XSS vectors.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escape('fred, barney, & pebbles');\n * // => 'fred, barney, & pebbles'\n */\n function escape(string) {\n string = toString(string);\n return (string && reHasUnescapedHtml.test(string))\n ? string.replace(reUnescapedHtml, escapeHtmlChar)\n : string;\n }\n\n /**\n * Escapes the `RegExp` special characters \"^\", \"$\", \"\\\", \".\", \"*\", \"+\",\n * \"?\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", and \"|\" in `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escapeRegExp('[lodash](https://lodash.com/)');\n * // => '\\[lodash\\]\\(https://lodash\\.com/\\)'\n */\n function escapeRegExp(string) {\n string = toString(string);\n return (string && reHasRegExpChar.test(string))\n ? string.replace(reRegExpChar, '\\\\$&')\n : string;\n }\n\n /**\n * Converts `string` to\n * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the kebab cased string.\n * @example\n *\n * _.kebabCase('Foo Bar');\n * // => 'foo-bar'\n *\n * _.kebabCase('fooBar');\n * // => 'foo-bar'\n *\n * _.kebabCase('__FOO_BAR__');\n * // => 'foo-bar'\n */\n var kebabCase = createCompounder(function(result, word, index) {\n return result + (index ? '-' : '') + word.toLowerCase();\n });\n\n /**\n * Converts `string`, as space separated words, to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the lower cased string.\n * @example\n *\n * _.lowerCase('--Foo-Bar--');\n * // => 'foo bar'\n *\n * _.lowerCase('fooBar');\n * // => 'foo bar'\n *\n * _.lowerCase('__FOO_BAR__');\n * // => 'foo bar'\n */\n var lowerCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + word.toLowerCase();\n });\n\n /**\n * Converts the first character of `string` to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.lowerFirst('Fred');\n * // => 'fred'\n *\n * _.lowerFirst('FRED');\n * // => 'fRED'\n */\n var lowerFirst = createCaseFirst('toLowerCase');\n\n /**\n * Pads `string` on the left and right sides if it's shorter than `length`.\n * Padding characters are truncated if they can't be evenly divided by `length`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.pad('abc', 8);\n * // => ' abc '\n *\n * _.pad('abc', 8, '_-');\n * // => '_-abc_-_'\n *\n * _.pad('abc', 3);\n * // => 'abc'\n */\n function pad(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n if (!length || strLength >= length) {\n return string;\n }\n var mid = (length - strLength) / 2;\n return (\n createPadding(nativeFloor(mid), chars) +\n string +\n createPadding(nativeCeil(mid), chars)\n );\n }\n\n /**\n * Pads `string` on the right side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padEnd('abc', 6);\n * // => 'abc '\n *\n * _.padEnd('abc', 6, '_-');\n * // => 'abc_-_'\n *\n * _.padEnd('abc', 3);\n * // => 'abc'\n */\n function padEnd(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (string + createPadding(length - strLength, chars))\n : string;\n }\n\n /**\n * Pads `string` on the left side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padStart('abc', 6);\n * // => ' abc'\n *\n * _.padStart('abc', 6, '_-');\n * // => '_-_abc'\n *\n * _.padStart('abc', 3);\n * // => 'abc'\n */\n function padStart(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (createPadding(length - strLength, chars) + string)\n : string;\n }\n\n /**\n * Converts `string` to an integer of the specified radix. If `radix` is\n * `undefined` or `0`, a `radix` of `10` is used unless `value` is a\n * hexadecimal, in which case a `radix` of `16` is used.\n *\n * **Note:** This method aligns with the\n * [ES5 implementation](https://es5.github.io/#x15.1.2.2) of `parseInt`.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category String\n * @param {string} string The string to convert.\n * @param {number} [radix=10] The radix to interpret `value` by.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.parseInt('08');\n * // => 8\n *\n * _.map(['6', '08', '10'], _.parseInt);\n * // => [6, 8, 10]\n */\n function parseInt(string, radix, guard) {\n if (guard || radix == null) {\n radix = 0;\n } else if (radix) {\n radix = +radix;\n }\n return nativeParseInt(toString(string).replace(reTrimStart, ''), radix || 0);\n }\n\n /**\n * Repeats the given string `n` times.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to repeat.\n * @param {number} [n=1] The number of times to repeat the string.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the repeated string.\n * @example\n *\n * _.repeat('*', 3);\n * // => '***'\n *\n * _.repeat('abc', 2);\n * // => 'abcabc'\n *\n * _.repeat('abc', 0);\n * // => ''\n */\n function repeat(string, n, guard) {\n if ((guard ? isIterateeCall(string, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n return baseRepeat(toString(string), n);\n }\n\n /**\n * Replaces matches for `pattern` in `string` with `replacement`.\n *\n * **Note:** This method is based on\n * [`String#replace`](https://mdn.io/String/replace).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to modify.\n * @param {RegExp|string} pattern The pattern to replace.\n * @param {Function|string} replacement The match replacement.\n * @returns {string} Returns the modified string.\n * @example\n *\n * _.replace('Hi Fred', 'Fred', 'Barney');\n * // => 'Hi Barney'\n */\n function replace() {\n var args = arguments,\n string = toString(args[0]);\n\n return args.length < 3 ? string : string.replace(args[1], args[2]);\n }\n\n /**\n * Converts `string` to\n * [snake case](https://en.wikipedia.org/wiki/Snake_case).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the snake cased string.\n * @example\n *\n * _.snakeCase('Foo Bar');\n * // => 'foo_bar'\n *\n * _.snakeCase('fooBar');\n * // => 'foo_bar'\n *\n * _.snakeCase('--FOO-BAR--');\n * // => 'foo_bar'\n */\n var snakeCase = createCompounder(function(result, word, index) {\n return result + (index ? '_' : '') + word.toLowerCase();\n });\n\n /**\n * Splits `string` by `separator`.\n *\n * **Note:** This method is based on\n * [`String#split`](https://mdn.io/String/split).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to split.\n * @param {RegExp|string} separator The separator pattern to split by.\n * @param {number} [limit] The length to truncate results to.\n * @returns {Array} Returns the string segments.\n * @example\n *\n * _.split('a-b-c', '-', 2);\n * // => ['a', 'b']\n */\n function split(string, separator, limit) {\n if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) {\n separator = limit = undefined;\n }\n limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0;\n if (!limit) {\n return [];\n }\n string = toString(string);\n if (string && (\n typeof separator == 'string' ||\n (separator != null && !isRegExp(separator))\n )) {\n separator = baseToString(separator);\n if (!separator && hasUnicode(string)) {\n return castSlice(stringToArray(string), 0, limit);\n }\n }\n return string.split(separator, limit);\n }\n\n /**\n * Converts `string` to\n * [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage).\n *\n * @static\n * @memberOf _\n * @since 3.1.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the start cased string.\n * @example\n *\n * _.startCase('--foo-bar--');\n * // => 'Foo Bar'\n *\n * _.startCase('fooBar');\n * // => 'Foo Bar'\n *\n * _.startCase('__FOO_BAR__');\n * // => 'FOO BAR'\n */\n var startCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + upperFirst(word);\n });\n\n /**\n * Checks if `string` starts with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=0] The position to search from.\n * @returns {boolean} Returns `true` if `string` starts with `target`,\n * else `false`.\n * @example\n *\n * _.startsWith('abc', 'a');\n * // => true\n *\n * _.startsWith('abc', 'b');\n * // => false\n *\n * _.startsWith('abc', 'b', 1);\n * // => true\n */\n function startsWith(string, target, position) {\n string = toString(string);\n position = position == null\n ? 0\n : baseClamp(toInteger(position), 0, string.length);\n\n target = baseToString(target);\n return string.slice(position, position + target.length) == target;\n }\n\n /**\n * Creates a compiled template function that can interpolate data properties\n * in \"interpolate\" delimiters, HTML-escape interpolated data properties in\n * \"escape\" delimiters, and execute JavaScript in \"evaluate\" delimiters. Data\n * properties may be accessed as free variables in the template. If a setting\n * object is given, it takes precedence over `_.templateSettings` values.\n *\n * **Note:** In the development build `_.template` utilizes\n * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl)\n * for easier debugging.\n *\n * For more information on precompiling templates see\n * [lodash's custom builds documentation](https://lodash.com/custom-builds).\n *\n * For more information on Chrome extension sandboxes see\n * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval).\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The template string.\n * @param {Object} [options={}] The options object.\n * @param {RegExp} [options.escape=_.templateSettings.escape]\n * The HTML \"escape\" delimiter.\n * @param {RegExp} [options.evaluate=_.templateSettings.evaluate]\n * The \"evaluate\" delimiter.\n * @param {Object} [options.imports=_.templateSettings.imports]\n * An object to import into the template as free variables.\n * @param {RegExp} [options.interpolate=_.templateSettings.interpolate]\n * The \"interpolate\" delimiter.\n * @param {string} [options.sourceURL='lodash.templateSources[n]']\n * The sourceURL of the compiled template.\n * @param {string} [options.variable='obj']\n * The data object variable name.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the compiled template function.\n * @example\n *\n * // Use the \"interpolate\" delimiter to create a compiled template.\n * var compiled = _.template('hello <%= user %>!');\n * compiled({ 'user': 'fred' });\n * // => 'hello fred!'\n *\n * // Use the HTML \"escape\" delimiter to escape data property values.\n * var compiled = _.template('<b><%- value %></b>');\n * compiled({ 'value': '<script>' });\n * // => '<b><script></b>'\n *\n * // Use the \"evaluate\" delimiter to execute JavaScript and generate HTML.\n * var compiled = _.template('<% _.forEach(users, function(user) { %><li><%- user %></li><% }); %>');\n * compiled({ 'users': ['fred', 'barney'] });\n * // => '<li>fred</li><li>barney</li>'\n *\n * // Use the internal `print` function in \"evaluate\" delimiters.\n * var compiled = _.template('<% print(\"hello \" + user); %>!');\n * compiled({ 'user': 'barney' });\n * // => 'hello barney!'\n *\n * // Use the ES template literal delimiter as an \"interpolate\" delimiter.\n * // Disable support by replacing the \"interpolate\" delimiter.\n * var compiled = _.template('hello ${ user }!');\n * compiled({ 'user': 'pebbles' });\n * // => 'hello pebbles!'\n *\n * // Use backslashes to treat delimiters as plain text.\n * var compiled = _.template('<%= \"\\\\<%- value %\\\\>\" %>');\n * compiled({ 'value': 'ignored' });\n * // => '<%- value %>'\n *\n * // Use the `imports` option to import `jQuery` as `jq`.\n * var text = '<% jq.each(users, function(user) { %><li><%- user %></li><% }); %>';\n * var compiled = _.template(text, { 'imports': { 'jq': jQuery } });\n * compiled({ 'users': ['fred', 'barney'] });\n * // => '<li>fred</li><li>barney</li>'\n *\n * // Use the `sourceURL` option to specify a custom sourceURL for the template.\n * var compiled = _.template('hello <%= user %>!', { 'sourceURL': '/basic/greeting.jst' });\n * compiled(data);\n * // => Find the source of \"greeting.jst\" under the Sources tab or Resources panel of the web inspector.\n *\n * // Use the `variable` option to ensure a with-statement isn't used in the compiled template.\n * var compiled = _.template('hi <%= data.user %>!', { 'variable': 'data' });\n * compiled.source;\n * // => function(data) {\n * // var __t, __p = '';\n * // __p += 'hi ' + ((__t = ( data.user )) == null ? '' : __t) + '!';\n * // return __p;\n * // }\n *\n * // Use custom template delimiters.\n * _.templateSettings.interpolate = /{{([\\s\\S]+?)}}/g;\n * var compiled = _.template('hello {{ user }}!');\n * compiled({ 'user': 'mustache' });\n * // => 'hello mustache!'\n *\n * // Use the `source` property to inline compiled templates for meaningful\n * // line numbers in error messages and stack traces.\n * fs.writeFileSync(path.join(process.cwd(), 'jst.js'), '\\\n * var JST = {\\\n * \"main\": ' + _.template(mainText).source + '\\\n * };\\\n * ');\n */\n function template(string, options, guard) {\n // Based on John Resig's `tmpl` implementation\n // (http://ejohn.org/blog/javascript-micro-templating/)\n // and Laura Doktorova's doT.js (https://github.com/olado/doT).\n var settings = lodash.templateSettings;\n\n if (guard && isIterateeCall(string, options, guard)) {\n options = undefined;\n }\n string = toString(string);\n options = assignInWith({}, options, settings, customDefaultsAssignIn);\n\n var imports = assignInWith({}, options.imports, settings.imports, customDefaultsAssignIn),\n importsKeys = keys(imports),\n importsValues = baseValues(imports, importsKeys);\n\n var isEscaping,\n isEvaluating,\n index = 0,\n interpolate = options.interpolate || reNoMatch,\n source = \"__p += '\";\n\n // Compile the regexp to match each delimiter.\n var reDelimiters = RegExp(\n (options.escape || reNoMatch).source + '|' +\n interpolate.source + '|' +\n (interpolate === reInterpolate ? reEsTemplate : reNoMatch).source + '|' +\n (options.evaluate || reNoMatch).source + '|$'\n , 'g');\n\n // Use a sourceURL for easier debugging.\n // The sourceURL gets injected into the source that's eval-ed, so be careful\n // to normalize all kinds of whitespace, so e.g. newlines (and unicode versions of it) can't sneak in\n // and escape the comment, thus injecting code that gets evaled.\n var sourceURL = '//# sourceURL=' +\n (hasOwnProperty.call(options, 'sourceURL')\n ? (options.sourceURL + '').replace(/\\s/g, ' ')\n : ('lodash.templateSources[' + (++templateCounter) + ']')\n ) + '\\n';\n\n string.replace(reDelimiters, function(match, escapeValue, interpolateValue, esTemplateValue, evaluateValue, offset) {\n interpolateValue || (interpolateValue = esTemplateValue);\n\n // Escape characters that can't be included in string literals.\n source += string.slice(index, offset).replace(reUnescapedString, escapeStringChar);\n\n // Replace delimiters with snippets.\n if (escapeValue) {\n isEscaping = true;\n source += \"' +\\n__e(\" + escapeValue + \") +\\n'\";\n }\n if (evaluateValue) {\n isEvaluating = true;\n source += \"';\\n\" + evaluateValue + \";\\n__p += '\";\n }\n if (interpolateValue) {\n source += \"' +\\n((__t = (\" + interpolateValue + \")) == null ? '' : __t) +\\n'\";\n }\n index = offset + match.length;\n\n // The JS engine embedded in Adobe products needs `match` returned in\n // order to produce the correct `offset` value.\n return match;\n });\n\n source += \"';\\n\";\n\n // If `variable` is not specified wrap a with-statement around the generated\n // code to add the data object to the top of the scope chain.\n var variable = hasOwnProperty.call(options, 'variable') && options.variable;\n if (!variable) {\n source = 'with (obj) {\\n' + source + '\\n}\\n';\n }\n // Throw an error if a forbidden character was found in `variable`, to prevent\n // potential command injection attacks.\n else if (reForbiddenIdentifierChars.test(variable)) {\n throw new Error(INVALID_TEMPL_VAR_ERROR_TEXT);\n }\n\n // Cleanup code by stripping empty strings.\n source = (isEvaluating ? source.replace(reEmptyStringLeading, '') : source)\n .replace(reEmptyStringMiddle, '$1')\n .replace(reEmptyStringTrailing, '$1;');\n\n // Frame code as the function body.\n source = 'function(' + (variable || 'obj') + ') {\\n' +\n (variable\n ? ''\n : 'obj || (obj = {});\\n'\n ) +\n \"var __t, __p = ''\" +\n (isEscaping\n ? ', __e = _.escape'\n : ''\n ) +\n (isEvaluating\n ? ', __j = Array.prototype.join;\\n' +\n \"function print() { __p += __j.call(arguments, '') }\\n\"\n : ';\\n'\n ) +\n source +\n 'return __p\\n}';\n\n var result = attempt(function() {\n return Function(importsKeys, sourceURL + 'return ' + source)\n .apply(undefined, importsValues);\n });\n\n // Provide the compiled function's source by its `toString` method or\n // the `source` property as a convenience for inlining compiled templates.\n result.source = source;\n if (isError(result)) {\n throw result;\n }\n return result;\n }\n\n /**\n * Converts `string`, as a whole, to lower case just like\n * [String#toLowerCase](https://mdn.io/toLowerCase).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the lower cased string.\n * @example\n *\n * _.toLower('--Foo-Bar--');\n * // => '--foo-bar--'\n *\n * _.toLower('fooBar');\n * // => 'foobar'\n *\n * _.toLower('__FOO_BAR__');\n * // => '__foo_bar__'\n */\n function toLower(value) {\n return toString(value).toLowerCase();\n }\n\n /**\n * Converts `string`, as a whole, to upper case just like\n * [String#toUpperCase](https://mdn.io/toUpperCase).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the upper cased string.\n * @example\n *\n * _.toUpper('--foo-bar--');\n * // => '--FOO-BAR--'\n *\n * _.toUpper('fooBar');\n * // => 'FOOBAR'\n *\n * _.toUpper('__foo_bar__');\n * // => '__FOO_BAR__'\n */\n function toUpper(value) {\n return toString(value).toUpperCase();\n }\n\n /**\n * Removes leading and trailing whitespace or specified characters from `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to trim.\n * @param {string} [chars=whitespace] The characters to trim.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the trimmed string.\n * @example\n *\n * _.trim(' abc ');\n * // => 'abc'\n *\n * _.trim('-_-abc-_-', '_-');\n * // => 'abc'\n *\n * _.map([' foo ', ' bar '], _.trim);\n * // => ['foo', 'bar']\n */\n function trim(string, chars, guard) {\n string = toString(string);\n if (string && (guard || chars === undefined)) {\n return baseTrim(string);\n }\n if (!string || !(chars = baseToString(chars))) {\n return string;\n }\n var strSymbols = stringToArray(string),\n chrSymbols = stringToArray(chars),\n start = charsStartIndex(strSymbols, chrSymbols),\n end = charsEndIndex(strSymbols, chrSymbols) + 1;\n\n return castSlice(strSymbols, start, end).join('');\n }\n\n /**\n * Removes trailing whitespace or specified characters from `string`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to trim.\n * @param {string} [chars=whitespace] The characters to trim.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the trimmed string.\n * @example\n *\n * _.trimEnd(' abc ');\n * // => ' abc'\n *\n * _.trimEnd('-_-abc-_-', '_-');\n * // => '-_-abc'\n */\n function trimEnd(string, chars, guard) {\n string = toString(string);\n if (string && (guard || chars === undefined)) {\n return string.slice(0, trimmedEndIndex(string) + 1);\n }\n if (!string || !(chars = baseToString(chars))) {\n return string;\n }\n var strSymbols = stringToArray(string),\n end = charsEndIndex(strSymbols, stringToArray(chars)) + 1;\n\n return castSlice(strSymbols, 0, end).join('');\n }\n\n /**\n * Removes leading whitespace or specified characters from `string`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to trim.\n * @param {string} [chars=whitespace] The characters to trim.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the trimmed string.\n * @example\n *\n * _.trimStart(' abc ');\n * // => 'abc '\n *\n * _.trimStart('-_-abc-_-', '_-');\n * // => 'abc-_-'\n */\n function trimStart(string, chars, guard) {\n string = toString(string);\n if (string && (guard || chars === undefined)) {\n return string.replace(reTrimStart, '');\n }\n if (!string || !(chars = baseToString(chars))) {\n return string;\n }\n var strSymbols = stringToArray(string),\n start = charsStartIndex(strSymbols, stringToArray(chars));\n\n return castSlice(strSymbols, start).join('');\n }\n\n /**\n * Truncates `string` if it's longer than the given maximum string length.\n * The last characters of the truncated string are replaced with the omission\n * string which defaults to \"...\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to truncate.\n * @param {Object} [options={}] The options object.\n * @param {number} [options.length=30] The maximum string length.\n * @param {string} [options.omission='...'] The string to indicate text is omitted.\n * @param {RegExp|string} [options.separator] The separator pattern to truncate to.\n * @returns {string} Returns the truncated string.\n * @example\n *\n * _.truncate('hi-diddly-ho there, neighborino');\n * // => 'hi-diddly-ho there, neighbo...'\n *\n * _.truncate('hi-diddly-ho there, neighborino', {\n * 'length': 24,\n * 'separator': ' '\n * });\n * // => 'hi-diddly-ho there,...'\n *\n * _.truncate('hi-diddly-ho there, neighborino', {\n * 'length': 24,\n * 'separator': /,? +/\n * });\n * // => 'hi-diddly-ho there...'\n *\n * _.truncate('hi-diddly-ho there, neighborino', {\n * 'omission': ' [...]'\n * });\n * // => 'hi-diddly-ho there, neig [...]'\n */\n function truncate(string, options) {\n var length = DEFAULT_TRUNC_LENGTH,\n omission = DEFAULT_TRUNC_OMISSION;\n\n if (isObject(options)) {\n var separator = 'separator' in options ? options.separator : separator;\n length = 'length' in options ? toInteger(options.length) : length;\n omission = 'omission' in options ? baseToString(options.omission) : omission;\n }\n string = toString(string);\n\n var strLength = string.length;\n if (hasUnicode(string)) {\n var strSymbols = stringToArray(string);\n strLength = strSymbols.length;\n }\n if (length >= strLength) {\n return string;\n }\n var end = length - stringSize(omission);\n if (end < 1) {\n return omission;\n }\n var result = strSymbols\n ? castSlice(strSymbols, 0, end).join('')\n : string.slice(0, end);\n\n if (separator === undefined) {\n return result + omission;\n }\n if (strSymbols) {\n end += (result.length - end);\n }\n if (isRegExp(separator)) {\n if (string.slice(end).search(separator)) {\n var match,\n substring = result;\n\n if (!separator.global) {\n separator = RegExp(separator.source, toString(reFlags.exec(separator)) + 'g');\n }\n separator.lastIndex = 0;\n while ((match = separator.exec(substring))) {\n var newEnd = match.index;\n }\n result = result.slice(0, newEnd === undefined ? end : newEnd);\n }\n } else if (string.indexOf(baseToString(separator), end) != end) {\n var index = result.lastIndexOf(separator);\n if (index > -1) {\n result = result.slice(0, index);\n }\n }\n return result + omission;\n }\n\n /**\n * The inverse of `_.escape`; this method converts the HTML entities\n * `&`, `<`, `>`, `"`, and `'` in `string` to\n * their corresponding characters.\n *\n * **Note:** No other HTML entities are unescaped. To unescape additional\n * HTML entities use a third-party library like [_he_](https://mths.be/he).\n *\n * @static\n * @memberOf _\n * @since 0.6.0\n * @category String\n * @param {string} [string=''] The string to unescape.\n * @returns {string} Returns the unescaped string.\n * @example\n *\n * _.unescape('fred, barney, & pebbles');\n * // => 'fred, barney, & pebbles'\n */\n function unescape(string) {\n string = toString(string);\n return (string && reHasEscapedHtml.test(string))\n ? string.replace(reEscapedHtml, unescapeHtmlChar)\n : string;\n }\n\n /**\n * Converts `string`, as space separated words, to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the upper cased string.\n * @example\n *\n * _.upperCase('--foo-bar');\n * // => 'FOO BAR'\n *\n * _.upperCase('fooBar');\n * // => 'FOO BAR'\n *\n * _.upperCase('__foo_bar__');\n * // => 'FOO BAR'\n */\n var upperCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + word.toUpperCase();\n });\n\n /**\n * Converts the first character of `string` to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.upperFirst('fred');\n * // => 'Fred'\n *\n * _.upperFirst('FRED');\n * // => 'FRED'\n */\n var upperFirst = createCaseFirst('toUpperCase');\n\n /**\n * Splits `string` into an array of its words.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {RegExp|string} [pattern] The pattern to match words.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the words of `string`.\n * @example\n *\n * _.words('fred, barney, & pebbles');\n * // => ['fred', 'barney', 'pebbles']\n *\n * _.words('fred, barney, & pebbles', /[^, ]+/g);\n * // => ['fred', 'barney', '&', 'pebbles']\n */\n function words(string, pattern, guard) {\n string = toString(string);\n pattern = guard ? undefined : pattern;\n\n if (pattern === undefined) {\n return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);\n }\n return string.match(pattern) || [];\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Attempts to invoke `func`, returning either the result or the caught error\n * object. Any additional arguments are provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {Function} func The function to attempt.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {*} Returns the `func` result or error object.\n * @example\n *\n * // Avoid throwing errors for invalid selectors.\n * var elements = _.attempt(function(selector) {\n * return document.querySelectorAll(selector);\n * }, '>_>');\n *\n * if (_.isError(elements)) {\n * elements = [];\n * }\n */\n var attempt = baseRest(function(func, args) {\n try {\n return apply(func, undefined, args);\n } catch (e) {\n return isError(e) ? e : new Error(e);\n }\n });\n\n /**\n * Binds methods of an object to the object itself, overwriting the existing\n * method.\n *\n * **Note:** This method doesn't set the \"length\" property of bound functions.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {Object} object The object to bind and assign the bound methods to.\n * @param {...(string|string[])} methodNames The object method names to bind.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var view = {\n * 'label': 'docs',\n * 'click': function() {\n * console.log('clicked ' + this.label);\n * }\n * };\n *\n * _.bindAll(view, ['click']);\n * jQuery(element).on('click', view.click);\n * // => Logs 'clicked docs' when clicked.\n */\n var bindAll = flatRest(function(object, methodNames) {\n arrayEach(methodNames, function(key) {\n key = toKey(key);\n baseAssignValue(object, key, bind(object[key], object));\n });\n return object;\n });\n\n /**\n * Creates a function that iterates over `pairs` and invokes the corresponding\n * function of the first predicate to return truthy. The predicate-function\n * pairs are invoked with the `this` binding and arguments of the created\n * function.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {Array} pairs The predicate-function pairs.\n * @returns {Function} Returns the new composite function.\n * @example\n *\n * var func = _.cond([\n * [_.matches({ 'a': 1 }), _.constant('matches A')],\n * [_.conforms({ 'b': _.isNumber }), _.constant('matches B')],\n * [_.stubTrue, _.constant('no match')]\n * ]);\n *\n * func({ 'a': 1, 'b': 2 });\n * // => 'matches A'\n *\n * func({ 'a': 0, 'b': 1 });\n * // => 'matches B'\n *\n * func({ 'a': '1', 'b': '2' });\n * // => 'no match'\n */\n function cond(pairs) {\n var length = pairs == null ? 0 : pairs.length,\n toIteratee = getIteratee();\n\n pairs = !length ? [] : arrayMap(pairs, function(pair) {\n if (typeof pair[1] != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return [toIteratee(pair[0]), pair[1]];\n });\n\n return baseRest(function(args) {\n var index = -1;\n while (++index < length) {\n var pair = pairs[index];\n if (apply(pair[0], this, args)) {\n return apply(pair[1], this, args);\n }\n }\n });\n }\n\n /**\n * Creates a function that invokes the predicate properties of `source` with\n * the corresponding property values of a given object, returning `true` if\n * all predicates return truthy, else `false`.\n *\n * **Note:** The created function is equivalent to `_.conformsTo` with\n * `source` partially applied.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {Object} source The object of property predicates to conform to.\n * @returns {Function} Returns the new spec function.\n * @example\n *\n * var objects = [\n * { 'a': 2, 'b': 1 },\n * { 'a': 1, 'b': 2 }\n * ];\n *\n * _.filter(objects, _.conforms({ 'b': function(n) { return n > 1; } }));\n * // => [{ 'a': 1, 'b': 2 }]\n */\n function conforms(source) {\n return baseConforms(baseClone(source, CLONE_DEEP_FLAG));\n }\n\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 */\n function constant(value) {\n return function() {\n return value;\n };\n }\n\n /**\n * Checks `value` to determine whether a default value should be returned in\n * its place. The `defaultValue` is returned if `value` is `NaN`, `null`,\n * or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.14.0\n * @category Util\n * @param {*} value The value to check.\n * @param {*} defaultValue The default value.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * _.defaultTo(1, 10);\n * // => 1\n *\n * _.defaultTo(undefined, 10);\n * // => 10\n */\n function defaultTo(value, defaultValue) {\n return (value == null || value !== value) ? defaultValue : value;\n }\n\n /**\n * Creates a function that returns the result of invoking the given functions\n * with the `this` binding of the created function, where each successive\n * invocation is supplied the return value of the previous.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {...(Function|Function[])} [funcs] The functions to invoke.\n * @returns {Function} Returns the new composite function.\n * @see _.flowRight\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var addSquare = _.flow([_.add, square]);\n * addSquare(1, 2);\n * // => 9\n */\n var flow = 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 */\n var flowRight = createFlow(true);\n\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 */\n function identity(value) {\n return value;\n }\n\n /**\n * Creates a function that invokes `func` with the arguments of the created\n * function. If `func` is a property name, the created function returns the\n * property value for a given element. If `func` is an array or object, the\n * created function returns `true` for elements that contain the equivalent\n * source properties, otherwise it returns `false`.\n *\n * @static\n * @since 4.0.0\n * @memberOf _\n * @category Util\n * @param {*} [func=_.identity] The value to convert to a callback.\n * @returns {Function} Returns the callback.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, _.iteratee({ 'user': 'barney', 'active': true }));\n * // => [{ 'user': 'barney', 'age': 36, 'active': true }]\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, _.iteratee(['user', 'fred']));\n * // => [{ 'user': 'fred', 'age': 40 }]\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, _.iteratee('user'));\n * // => ['barney', 'fred']\n *\n * // Create custom iteratee shorthands.\n * _.iteratee = _.wrap(_.iteratee, function(iteratee, func) {\n * return !_.isRegExp(func) ? iteratee(func) : function(string) {\n * return func.test(string);\n * };\n * });\n *\n * _.filter(['abc', 'def'], /ef/);\n * // => ['def']\n */\n function iteratee(func) {\n return baseIteratee(typeof func == 'function' ? func : baseClone(func, CLONE_DEEP_FLAG));\n }\n\n /**\n * Creates a function that performs a partial deep comparison between a given\n * object and `source`, returning `true` if the given object has equivalent\n * property values, else `false`.\n *\n * **Note:** The created function is equivalent to `_.isMatch` with `source`\n * partially applied.\n *\n * Partial comparisons will match empty array and empty object `source`\n * values against any array or object value, respectively. See `_.isEqual`\n * for a list of supported value comparisons.\n *\n * **Note:** Multiple values can be checked by combining several matchers\n * using `_.overSome`\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n * @example\n *\n * var objects = [\n * { 'a': 1, 'b': 2, 'c': 3 },\n * { 'a': 4, 'b': 5, 'c': 6 }\n * ];\n *\n * _.filter(objects, _.matches({ 'a': 4, 'c': 6 }));\n * // => [{ 'a': 4, 'b': 5, 'c': 6 }]\n *\n * // Checking for several possible values\n * _.filter(objects, _.overSome([_.matches({ 'a': 1 }), _.matches({ 'a': 4 })]));\n * // => [{ 'a': 1, 'b': 2, 'c': 3 }, { 'a': 4, 'b': 5, 'c': 6 }]\n */\n function matches(source) {\n return baseMatches(baseClone(source, CLONE_DEEP_FLAG));\n }\n\n /**\n * Creates a function that performs a partial deep comparison between the\n * value at `path` of a given object to `srcValue`, returning `true` if the\n * object value is equivalent, else `false`.\n *\n * **Note:** Partial comparisons will match empty array and empty object\n * `srcValue` values against any array or object value, respectively. See\n * `_.isEqual` for a list of supported value comparisons.\n *\n * **Note:** Multiple values can be checked by combining several matchers\n * using `_.overSome`\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Util\n * @param {Array|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 * @example\n *\n * var objects = [\n * { 'a': 1, 'b': 2, 'c': 3 },\n * { 'a': 4, 'b': 5, 'c': 6 }\n * ];\n *\n * _.find(objects, _.matchesProperty('a', 4));\n * // => { 'a': 4, 'b': 5, 'c': 6 }\n *\n * // Checking for several possible values\n * _.filter(objects, _.overSome([_.matchesProperty('a', 1), _.matchesProperty('a', 4)]));\n * // => [{ 'a': 1, 'b': 2, 'c': 3 }, { 'a': 4, 'b': 5, 'c': 6 }]\n */\n function matchesProperty(path, srcValue) {\n return baseMatchesProperty(path, baseClone(srcValue, CLONE_DEEP_FLAG));\n }\n\n /**\n * Creates a function that invokes the method at `path` of a given object.\n * Any additional arguments are provided to the invoked method.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Util\n * @param {Array|string} path The path of the method to invoke.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {Function} Returns the new invoker function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': _.constant(2) } },\n * { 'a': { 'b': _.constant(1) } }\n * ];\n *\n * _.map(objects, _.method('a.b'));\n * // => [2, 1]\n *\n * _.map(objects, _.method(['a', 'b']));\n * // => [2, 1]\n */\n var method = baseRest(function(path, args) {\n return function(object) {\n return baseInvoke(object, path, args);\n };\n });\n\n /**\n * The opposite of `_.method`; this method creates a function that invokes\n * the method at a given path of `object`. Any additional arguments are\n * provided to the invoked method.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Util\n * @param {Object} object The object to query.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {Function} Returns the new invoker function.\n * @example\n *\n * var array = _.times(3, _.constant),\n * object = { 'a': array, 'b': array, 'c': array };\n *\n * _.map(['a[2]', 'c[0]'], _.methodOf(object));\n * // => [2, 0]\n *\n * _.map([['a', '2'], ['c', '0']], _.methodOf(object));\n * // => [2, 0]\n */\n var methodOf = baseRest(function(object, args) {\n return function(path) {\n return baseInvoke(object, path, args);\n };\n });\n\n /**\n * Adds all own enumerable string keyed function properties of a source\n * object to the destination object. If `object` is a function, then methods\n * are added to its prototype as well.\n *\n * **Note:** Use `_.runInContext` to create a pristine `lodash` function to\n * avoid conflicts caused by modifying the original.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {Function|Object} [object=lodash] The destination object.\n * @param {Object} source The object of functions to add.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.chain=true] Specify whether mixins are chainable.\n * @returns {Function|Object} Returns `object`.\n * @example\n *\n * function vowels(string) {\n * return _.filter(string, function(v) {\n * return /[aeiou]/i.test(v);\n * });\n * }\n *\n * _.mixin({ 'vowels': vowels });\n * _.vowels('fred');\n * // => ['e']\n *\n * _('fred').vowels().value();\n * // => ['e']\n *\n * _.mixin({ 'vowels': vowels }, { 'chain': false });\n * _('fred').vowels();\n * // => ['e']\n */\n function mixin(object, source, options) {\n var props = keys(source),\n methodNames = baseFunctions(source, props);\n\n if (options == null &&\n !(isObject(source) && (methodNames.length || !props.length))) {\n options = source;\n source = object;\n object = this;\n methodNames = baseFunctions(source, keys(source));\n }\n var chain = !(isObject(options) && 'chain' in options) || !!options.chain,\n isFunc = isFunction(object);\n\n arrayEach(methodNames, function(methodName) {\n var func = source[methodName];\n object[methodName] = func;\n if (isFunc) {\n object.prototype[methodName] = function() {\n var chainAll = this.__chain__;\n if (chain || chainAll) {\n var result = object(this.__wrapped__),\n actions = result.__actions__ = copyArray(this.__actions__);\n\n actions.push({ 'func': func, 'args': arguments, 'thisArg': object });\n result.__chain__ = chainAll;\n return result;\n }\n return func.apply(object, arrayPush([this.value()], arguments));\n };\n }\n });\n\n return object;\n }\n\n /**\n * Reverts the `_` variable to its previous value and returns a reference to\n * the `lodash` function.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @returns {Function} Returns the `lodash` function.\n * @example\n *\n * var lodash = _.noConflict();\n */\n function noConflict() {\n if (root._ === this) {\n root._ = oldDash;\n }\n return this;\n }\n\n /**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\n function noop() {\n // No operation performed.\n }\n\n /**\n * Creates a function that gets the argument at index `n`. If `n` is negative,\n * the nth argument from the end is returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {number} [n=0] The index of the argument to return.\n * @returns {Function} Returns the new pass-thru function.\n * @example\n *\n * var func = _.nthArg(1);\n * func('a', 'b', 'c', 'd');\n * // => 'b'\n *\n * var func = _.nthArg(-2);\n * func('a', 'b', 'c', 'd');\n * // => 'c'\n */\n function nthArg(n) {\n n = toInteger(n);\n return baseRest(function(args) {\n return baseNth(args, n);\n });\n }\n\n /**\n * Creates a function that invokes `iteratees` with the arguments it receives\n * and returns their results.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to invoke.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var func = _.over([Math.max, Math.min]);\n *\n * func(1, 2, 3, 4);\n * // => [4, 1]\n */\n var over = createOver(arrayMap);\n\n /**\n * Creates a function that checks if **all** of the `predicates` return\n * truthy when invoked with the arguments it receives.\n *\n * Following shorthands are possible for providing predicates.\n * Pass an `Object` and it will be used as an parameter for `_.matches` to create the predicate.\n * Pass an `Array` of parameters for `_.matchesProperty` and the predicate will be created using them.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {...(Function|Function[])} [predicates=[_.identity]]\n * The predicates to check.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var func = _.overEvery([Boolean, isFinite]);\n *\n * func('1');\n * // => true\n *\n * func(null);\n * // => false\n *\n * func(NaN);\n * // => false\n */\n var overEvery = createOver(arrayEvery);\n\n /**\n * Creates a function that checks if **any** of the `predicates` return\n * truthy when invoked with the arguments it receives.\n *\n * Following shorthands are possible for providing predicates.\n * Pass an `Object` and it will be used as an parameter for `_.matches` to create the predicate.\n * Pass an `Array` of parameters for `_.matchesProperty` and the predicate will be created using them.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {...(Function|Function[])} [predicates=[_.identity]]\n * The predicates to check.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var func = _.overSome([Boolean, isFinite]);\n *\n * func('1');\n * // => true\n *\n * func(null);\n * // => true\n *\n * func(NaN);\n * // => false\n *\n * var matchesFunc = _.overSome([{ 'a': 1 }, { 'a': 2 }])\n * var matchesPropertyFunc = _.overSome([['a', 1], ['a', 2]])\n */\n var overSome = createOver(arraySome);\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 */\n function property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n }\n\n /**\n * The opposite of `_.property`; this method creates a function that returns\n * the value at a given path of `object`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var array = [0, 1, 2],\n * object = { 'a': array, 'b': array, 'c': array };\n *\n * _.map(['a[2]', 'c[0]'], _.propertyOf(object));\n * // => [2, 0]\n *\n * _.map([['a', '2'], ['c', '0']], _.propertyOf(object));\n * // => [2, 0]\n */\n function propertyOf(object) {\n return function(path) {\n return object == null ? undefined : baseGet(object, path);\n };\n }\n\n /**\n * Creates an array of numbers (positive and/or negative) progressing from\n * `start` up to, but not including, `end`. A step of `-1` is used if a negative\n * `start` is specified without an `end` or `step`. If `end` is not specified,\n * it's set to `start` with `start` then set to `0`.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @param {number} [step=1] The value to increment or decrement by.\n * @returns {Array} Returns the range of numbers.\n * @see _.inRange, _.rangeRight\n * @example\n *\n * _.range(4);\n * // => [0, 1, 2, 3]\n *\n * _.range(-4);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 5);\n * // => [1, 2, 3, 4]\n *\n * _.range(0, 20, 5);\n * // => [0, 5, 10, 15]\n *\n * _.range(0, -4, -1);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 4, 0);\n * // => [1, 1, 1]\n *\n * _.range(0);\n * // => []\n */\n var range = createRange();\n\n /**\n * This method is like `_.range` except that it populates values in\n * descending order.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @param {number} [step=1] The value to increment or decrement by.\n * @returns {Array} Returns the range of numbers.\n * @see _.inRange, _.range\n * @example\n *\n * _.rangeRight(4);\n * // => [3, 2, 1, 0]\n *\n * _.rangeRight(-4);\n * // => [-3, -2, -1, 0]\n *\n * _.rangeRight(1, 5);\n * // => [4, 3, 2, 1]\n *\n * _.rangeRight(0, 20, 5);\n * // => [15, 10, 5, 0]\n *\n * _.rangeRight(0, -4, -1);\n * // => [-3, -2, -1, 0]\n *\n * _.rangeRight(1, 4, 0);\n * // => [1, 1, 1]\n *\n * _.rangeRight(0);\n * // => []\n */\n var rangeRight = createRange(true);\n\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 */\n function stubArray() {\n return [];\n }\n\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 */\n function stubFalse() {\n return false;\n }\n\n /**\n * This method returns a new empty object.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Object} Returns the new empty object.\n * @example\n *\n * var objects = _.times(2, _.stubObject);\n *\n * console.log(objects);\n * // => [{}, {}]\n *\n * console.log(objects[0] === objects[1]);\n * // => false\n */\n function stubObject() {\n return {};\n }\n\n /**\n * This method returns an empty string.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {string} Returns the empty string.\n * @example\n *\n * _.times(2, _.stubString);\n * // => ['', '']\n */\n function stubString() {\n return '';\n }\n\n /**\n * This method returns `true`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `true`.\n * @example\n *\n * _.times(2, _.stubTrue);\n * // => [true, true]\n */\n function stubTrue() {\n return true;\n }\n\n /**\n * Invokes the iteratee `n` times, returning an array of the results of\n * each invocation. The iteratee is invoked with one argument; (index).\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n * @example\n *\n * _.times(3, String);\n * // => ['0', '1', '2']\n *\n * _.times(4, _.constant(0));\n * // => [0, 0, 0, 0]\n */\n function times(n, iteratee) {\n n = toInteger(n);\n if (n < 1 || n > MAX_SAFE_INTEGER) {\n return [];\n }\n var index = MAX_ARRAY_LENGTH,\n length = nativeMin(n, MAX_ARRAY_LENGTH);\n\n iteratee = getIteratee(iteratee);\n n -= MAX_ARRAY_LENGTH;\n\n var result = baseTimes(length, iteratee);\n while (++index < n) {\n iteratee(index);\n }\n return result;\n }\n\n /**\n * Converts `value` to a property path array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {*} value The value to convert.\n * @returns {Array} Returns the new property path array.\n * @example\n *\n * _.toPath('a.b.c');\n * // => ['a', 'b', 'c']\n *\n * _.toPath('a[0].b.c');\n * // => ['a', '0', 'b', 'c']\n */\n function toPath(value) {\n if (isArray(value)) {\n return arrayMap(value, toKey);\n }\n return isSymbol(value) ? [value] : copyArray(stringToPath(toString(value)));\n }\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 */\n function uniqueId(prefix) {\n var id = ++idCounter;\n return toString(prefix) + id;\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Adds two numbers.\n *\n * @static\n * @memberOf _\n * @since 3.4.0\n * @category Math\n * @param {number} augend The first number in an addition.\n * @param {number} addend The second number in an addition.\n * @returns {number} Returns the total.\n * @example\n *\n * _.add(6, 4);\n * // => 10\n */\n var add = createMathOperation(function(augend, addend) {\n return augend + addend;\n }, 0);\n\n /**\n * Computes `number` rounded up to `precision`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Math\n * @param {number} number The number to round up.\n * @param {number} [precision=0] The precision to round up to.\n * @returns {number} Returns the rounded up number.\n * @example\n *\n * _.ceil(4.006);\n * // => 5\n *\n * _.ceil(6.004, 2);\n * // => 6.01\n *\n * _.ceil(6040, -2);\n * // => 6100\n */\n var ceil = createRound('ceil');\n\n /**\n * Divide two numbers.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Math\n * @param {number} dividend The first number in a division.\n * @param {number} divisor The second number in a division.\n * @returns {number} Returns the quotient.\n * @example\n *\n * _.divide(6, 4);\n * // => 1.5\n */\n var divide = createMathOperation(function(dividend, divisor) {\n return dividend / divisor;\n }, 1);\n\n /**\n * Computes `number` rounded down to `precision`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Math\n * @param {number} number The number to round down.\n * @param {number} [precision=0] The precision to round down to.\n * @returns {number} Returns the rounded down number.\n * @example\n *\n * _.floor(4.006);\n * // => 4\n *\n * _.floor(0.046, 2);\n * // => 0.04\n *\n * _.floor(4060, -2);\n * // => 4000\n */\n var floor = createRound('floor');\n\n /**\n * Computes the maximum value of `array`. If `array` is empty or falsey,\n * `undefined` is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {*} Returns the maximum value.\n * @example\n *\n * _.max([4, 2, 8, 6]);\n * // => 8\n *\n * _.max([]);\n * // => undefined\n */\n function max(array) {\n return (array && array.length)\n ? baseExtremum(array, identity, baseGt)\n : undefined;\n }\n\n /**\n * This method is like `_.max` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * the value is ranked. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {*} Returns the maximum value.\n * @example\n *\n * var objects = [{ 'n': 1 }, { 'n': 2 }];\n *\n * _.maxBy(objects, function(o) { return o.n; });\n * // => { 'n': 2 }\n *\n * // The `_.property` iteratee shorthand.\n * _.maxBy(objects, 'n');\n * // => { 'n': 2 }\n */\n function maxBy(array, iteratee) {\n return (array && array.length)\n ? baseExtremum(array, getIteratee(iteratee, 2), baseGt)\n : undefined;\n }\n\n /**\n * Computes the mean of the values in `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {number} Returns the mean.\n * @example\n *\n * _.mean([4, 2, 8, 6]);\n * // => 5\n */\n function mean(array) {\n return baseMean(array, identity);\n }\n\n /**\n * This method is like `_.mean` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the value to be averaged.\n * The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the mean.\n * @example\n *\n * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];\n *\n * _.meanBy(objects, function(o) { return o.n; });\n * // => 5\n *\n * // The `_.property` iteratee shorthand.\n * _.meanBy(objects, 'n');\n * // => 5\n */\n function meanBy(array, iteratee) {\n return baseMean(array, getIteratee(iteratee, 2));\n }\n\n /**\n * Computes the minimum value of `array`. If `array` is empty or falsey,\n * `undefined` is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {*} Returns the minimum value.\n * @example\n *\n * _.min([4, 2, 8, 6]);\n * // => 2\n *\n * _.min([]);\n * // => undefined\n */\n function min(array) {\n return (array && array.length)\n ? baseExtremum(array, identity, baseLt)\n : undefined;\n }\n\n /**\n * This method is like `_.min` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * the value is ranked. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {*} Returns the minimum value.\n * @example\n *\n * var objects = [{ 'n': 1 }, { 'n': 2 }];\n *\n * _.minBy(objects, function(o) { return o.n; });\n * // => { 'n': 1 }\n *\n * // The `_.property` iteratee shorthand.\n * _.minBy(objects, 'n');\n * // => { 'n': 1 }\n */\n function minBy(array, iteratee) {\n return (array && array.length)\n ? baseExtremum(array, getIteratee(iteratee, 2), baseLt)\n : undefined;\n }\n\n /**\n * Multiply two numbers.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Math\n * @param {number} multiplier The first number in a multiplication.\n * @param {number} multiplicand The second number in a multiplication.\n * @returns {number} Returns the product.\n * @example\n *\n * _.multiply(6, 4);\n * // => 24\n */\n var multiply = createMathOperation(function(multiplier, multiplicand) {\n return multiplier * multiplicand;\n }, 1);\n\n /**\n * Computes `number` rounded to `precision`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Math\n * @param {number} number The number to round.\n * @param {number} [precision=0] The precision to round to.\n * @returns {number} Returns the rounded number.\n * @example\n *\n * _.round(4.006);\n * // => 4\n *\n * _.round(4.006, 2);\n * // => 4.01\n *\n * _.round(4060, -2);\n * // => 4100\n */\n var round = createRound('round');\n\n /**\n * Subtract two numbers.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {number} minuend The first number in a subtraction.\n * @param {number} subtrahend The second number in a subtraction.\n * @returns {number} Returns the difference.\n * @example\n *\n * _.subtract(6, 4);\n * // => 2\n */\n var subtract = createMathOperation(function(minuend, subtrahend) {\n return minuend - subtrahend;\n }, 0);\n\n /**\n * Computes the sum of the values in `array`.\n *\n * @static\n * @memberOf _\n * @since 3.4.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {number} Returns the sum.\n * @example\n *\n * _.sum([4, 2, 8, 6]);\n * // => 20\n */\n function sum(array) {\n return (array && array.length)\n ? baseSum(array, identity)\n : 0;\n }\n\n /**\n * This method is like `_.sum` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the value to be summed.\n * The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the sum.\n * @example\n *\n * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];\n *\n * _.sumBy(objects, function(o) { return o.n; });\n * // => 20\n *\n * // The `_.property` iteratee shorthand.\n * _.sumBy(objects, 'n');\n * // => 20\n */\n function sumBy(array, iteratee) {\n return (array && array.length)\n ? baseSum(array, getIteratee(iteratee, 2))\n : 0;\n }\n\n /*------------------------------------------------------------------------*/\n\n // Add methods that return wrapped values in chain sequences.\n lodash.after = after;\n lodash.ary = ary;\n lodash.assign = assign;\n lodash.assignIn = assignIn;\n lodash.assignInWith = assignInWith;\n lodash.assignWith = assignWith;\n lodash.at = at;\n lodash.before = before;\n lodash.bind = bind;\n lodash.bindAll = bindAll;\n lodash.bindKey = bindKey;\n lodash.castArray = castArray;\n lodash.chain = chain;\n lodash.chunk = chunk;\n lodash.compact = compact;\n lodash.concat = concat;\n lodash.cond = cond;\n lodash.conforms = conforms;\n lodash.constant = constant;\n lodash.countBy = countBy;\n lodash.create = create;\n lodash.curry = curry;\n lodash.curryRight = curryRight;\n lodash.debounce = debounce;\n lodash.defaults = defaults;\n lodash.defaultsDeep = defaultsDeep;\n lodash.defer = defer;\n lodash.delay = delay;\n lodash.difference = difference;\n lodash.differenceBy = differenceBy;\n lodash.differenceWith = differenceWith;\n lodash.drop = drop;\n lodash.dropRight = dropRight;\n lodash.dropRightWhile = dropRightWhile;\n lodash.dropWhile = dropWhile;\n lodash.fill = fill;\n lodash.filter = filter;\n lodash.flatMap = flatMap;\n lodash.flatMapDeep = flatMapDeep;\n lodash.flatMapDepth = flatMapDepth;\n lodash.flatten = flatten;\n lodash.flattenDeep = flattenDeep;\n lodash.flattenDepth = flattenDepth;\n lodash.flip = flip;\n lodash.flow = flow;\n lodash.flowRight = flowRight;\n lodash.fromPairs = fromPairs;\n lodash.functions = functions;\n lodash.functionsIn = functionsIn;\n lodash.groupBy = groupBy;\n lodash.initial = initial;\n lodash.intersection = intersection;\n lodash.intersectionBy = intersectionBy;\n lodash.intersectionWith = intersectionWith;\n lodash.invert = invert;\n lodash.invertBy = invertBy;\n lodash.invokeMap = invokeMap;\n lodash.iteratee = iteratee;\n lodash.keyBy = keyBy;\n lodash.keys = keys;\n lodash.keysIn = keysIn;\n lodash.map = map;\n lodash.mapKeys = mapKeys;\n lodash.mapValues = mapValues;\n lodash.matches = matches;\n lodash.matchesProperty = matchesProperty;\n lodash.memoize = memoize;\n lodash.merge = merge;\n lodash.mergeWith = mergeWith;\n lodash.method = method;\n lodash.methodOf = methodOf;\n lodash.mixin = mixin;\n lodash.negate = negate;\n lodash.nthArg = nthArg;\n lodash.omit = omit;\n lodash.omitBy = omitBy;\n lodash.once = once;\n lodash.orderBy = orderBy;\n lodash.over = over;\n lodash.overArgs = overArgs;\n lodash.overEvery = overEvery;\n lodash.overSome = overSome;\n lodash.partial = partial;\n lodash.partialRight = partialRight;\n lodash.partition = partition;\n lodash.pick = pick;\n lodash.pickBy = pickBy;\n lodash.property = property;\n lodash.propertyOf = propertyOf;\n lodash.pull = pull;\n lodash.pullAll = pullAll;\n lodash.pullAllBy = pullAllBy;\n lodash.pullAllWith = pullAllWith;\n lodash.pullAt = pullAt;\n lodash.range = range;\n lodash.rangeRight = rangeRight;\n lodash.rearg = rearg;\n lodash.reject = reject;\n lodash.remove = remove;\n lodash.rest = rest;\n lodash.reverse = reverse;\n lodash.sampleSize = sampleSize;\n lodash.set = set;\n lodash.setWith = setWith;\n lodash.shuffle = shuffle;\n lodash.slice = slice;\n lodash.sortBy = sortBy;\n lodash.sortedUniq = sortedUniq;\n lodash.sortedUniqBy = sortedUniqBy;\n lodash.split = split;\n lodash.spread = spread;\n lodash.tail = tail;\n lodash.take = take;\n lodash.takeRight = takeRight;\n lodash.takeRightWhile = takeRightWhile;\n lodash.takeWhile = takeWhile;\n lodash.tap = tap;\n lodash.throttle = throttle;\n lodash.thru = thru;\n lodash.toArray = toArray;\n lodash.toPairs = toPairs;\n lodash.toPairsIn = toPairsIn;\n lodash.toPath = toPath;\n lodash.toPlainObject = toPlainObject;\n lodash.transform = transform;\n lodash.unary = unary;\n lodash.union = union;\n lodash.unionBy = unionBy;\n lodash.unionWith = unionWith;\n lodash.uniq = uniq;\n lodash.uniqBy = uniqBy;\n lodash.uniqWith = uniqWith;\n lodash.unset = unset;\n lodash.unzip = unzip;\n lodash.unzipWith = unzipWith;\n lodash.update = update;\n lodash.updateWith = updateWith;\n lodash.values = values;\n lodash.valuesIn = valuesIn;\n lodash.without = without;\n lodash.words = words;\n lodash.wrap = wrap;\n lodash.xor = xor;\n lodash.xorBy = xorBy;\n lodash.xorWith = xorWith;\n lodash.zip = zip;\n lodash.zipObject = zipObject;\n lodash.zipObjectDeep = zipObjectDeep;\n lodash.zipWith = zipWith;\n\n // Add aliases.\n lodash.entries = toPairs;\n lodash.entriesIn = toPairsIn;\n lodash.extend = assignIn;\n lodash.extendWith = assignInWith;\n\n // Add methods to `lodash.prototype`.\n mixin(lodash, lodash);\n\n /*------------------------------------------------------------------------*/\n\n // Add methods that return unwrapped values in chain sequences.\n lodash.add = add;\n lodash.attempt = attempt;\n lodash.camelCase = camelCase;\n lodash.capitalize = capitalize;\n lodash.ceil = ceil;\n lodash.clamp = clamp;\n lodash.clone = clone;\n lodash.cloneDeep = cloneDeep;\n lodash.cloneDeepWith = cloneDeepWith;\n lodash.cloneWith = cloneWith;\n lodash.conformsTo = conformsTo;\n lodash.deburr = deburr;\n lodash.defaultTo = defaultTo;\n lodash.divide = divide;\n lodash.endsWith = endsWith;\n lodash.eq = eq;\n lodash.escape = escape;\n lodash.escapeRegExp = escapeRegExp;\n lodash.every = every;\n lodash.find = find;\n lodash.findIndex = findIndex;\n lodash.findKey = findKey;\n lodash.findLast = findLast;\n lodash.findLastIndex = findLastIndex;\n lodash.findLastKey = findLastKey;\n lodash.floor = floor;\n lodash.forEach = forEach;\n lodash.forEachRight = forEachRight;\n lodash.forIn = forIn;\n lodash.forInRight = forInRight;\n lodash.forOwn = forOwn;\n lodash.forOwnRight = forOwnRight;\n lodash.get = get;\n lodash.gt = gt;\n lodash.gte = gte;\n lodash.has = has;\n lodash.hasIn = hasIn;\n lodash.head = head;\n lodash.identity = identity;\n lodash.includes = includes;\n lodash.indexOf = indexOf;\n lodash.inRange = inRange;\n lodash.invoke = invoke;\n lodash.isArguments = isArguments;\n lodash.isArray = isArray;\n lodash.isArrayBuffer = isArrayBuffer;\n lodash.isArrayLike = isArrayLike;\n lodash.isArrayLikeObject = isArrayLikeObject;\n lodash.isBoolean = isBoolean;\n lodash.isBuffer = isBuffer;\n lodash.isDate = isDate;\n lodash.isElement = isElement;\n lodash.isEmpty = isEmpty;\n lodash.isEqual = isEqual;\n lodash.isEqualWith = isEqualWith;\n lodash.isError = isError;\n lodash.isFinite = isFinite;\n lodash.isFunction = isFunction;\n lodash.isInteger = isInteger;\n lodash.isLength = isLength;\n lodash.isMap = isMap;\n lodash.isMatch = isMatch;\n lodash.isMatchWith = isMatchWith;\n lodash.isNaN = isNaN;\n lodash.isNative = isNative;\n lodash.isNil = isNil;\n lodash.isNull = isNull;\n lodash.isNumber = isNumber;\n lodash.isObject = isObject;\n lodash.isObjectLike = isObjectLike;\n lodash.isPlainObject = isPlainObject;\n lodash.isRegExp = isRegExp;\n lodash.isSafeInteger = isSafeInteger;\n lodash.isSet = isSet;\n lodash.isString = isString;\n lodash.isSymbol = isSymbol;\n lodash.isTypedArray = isTypedArray;\n lodash.isUndefined = isUndefined;\n lodash.isWeakMap = isWeakMap;\n lodash.isWeakSet = isWeakSet;\n lodash.join = join;\n lodash.kebabCase = kebabCase;\n lodash.last = last;\n lodash.lastIndexOf = lastIndexOf;\n lodash.lowerCase = lowerCase;\n lodash.lowerFirst = lowerFirst;\n lodash.lt = lt;\n lodash.lte = lte;\n lodash.max = max;\n lodash.maxBy = maxBy;\n lodash.mean = mean;\n lodash.meanBy = meanBy;\n lodash.min = min;\n lodash.minBy = minBy;\n lodash.stubArray = stubArray;\n lodash.stubFalse = stubFalse;\n lodash.stubObject = stubObject;\n lodash.stubString = stubString;\n lodash.stubTrue = stubTrue;\n lodash.multiply = multiply;\n lodash.nth = nth;\n lodash.noConflict = noConflict;\n lodash.noop = noop;\n lodash.now = now;\n lodash.pad = pad;\n lodash.padEnd = padEnd;\n lodash.padStart = padStart;\n lodash.parseInt = parseInt;\n lodash.random = random;\n lodash.reduce = reduce;\n lodash.reduceRight = reduceRight;\n lodash.repeat = repeat;\n lodash.replace = replace;\n lodash.result = result;\n lodash.round = round;\n lodash.runInContext = runInContext;\n lodash.sample = sample;\n lodash.size = size;\n lodash.snakeCase = snakeCase;\n lodash.some = some;\n lodash.sortedIndex = sortedIndex;\n lodash.sortedIndexBy = sortedIndexBy;\n lodash.sortedIndexOf = sortedIndexOf;\n lodash.sortedLastIndex = sortedLastIndex;\n lodash.sortedLastIndexBy = sortedLastIndexBy;\n lodash.sortedLastIndexOf = sortedLastIndexOf;\n lodash.startCase = startCase;\n lodash.startsWith = startsWith;\n lodash.subtract = subtract;\n lodash.sum = sum;\n lodash.sumBy = sumBy;\n lodash.template = template;\n lodash.times = times;\n lodash.toFinite = toFinite;\n lodash.toInteger = toInteger;\n lodash.toLength = toLength;\n lodash.toLower = toLower;\n lodash.toNumber = toNumber;\n lodash.toSafeInteger = toSafeInteger;\n lodash.toString = toString;\n lodash.toUpper = toUpper;\n lodash.trim = trim;\n lodash.trimEnd = trimEnd;\n lodash.trimStart = trimStart;\n lodash.truncate = truncate;\n lodash.unescape = unescape;\n lodash.uniqueId = uniqueId;\n lodash.upperCase = upperCase;\n lodash.upperFirst = upperFirst;\n\n // Add aliases.\n lodash.each = forEach;\n lodash.eachRight = forEachRight;\n lodash.first = head;\n\n mixin(lodash, (function() {\n var source = {};\n baseForOwn(lodash, function(func, methodName) {\n if (!hasOwnProperty.call(lodash.prototype, methodName)) {\n source[methodName] = func;\n }\n });\n return source;\n }()), { 'chain': false });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * The semantic version number.\n *\n * @static\n * @memberOf _\n * @type {string}\n */\n lodash.VERSION = VERSION;\n\n // Assign default placeholders.\n arrayEach(['bind', 'bindKey', 'curry', 'curryRight', 'partial', 'partialRight'], function(methodName) {\n lodash[methodName].placeholder = lodash;\n });\n\n // Add `LazyWrapper` methods for `_.drop` and `_.take` variants.\n arrayEach(['drop', 'take'], function(methodName, index) {\n LazyWrapper.prototype[methodName] = function(n) {\n n = n === undefined ? 1 : nativeMax(toInteger(n), 0);\n\n var result = (this.__filtered__ && !index)\n ? new LazyWrapper(this)\n : this.clone();\n\n if (result.__filtered__) {\n result.__takeCount__ = nativeMin(n, result.__takeCount__);\n } else {\n result.__views__.push({\n 'size': nativeMin(n, MAX_ARRAY_LENGTH),\n 'type': methodName + (result.__dir__ < 0 ? 'Right' : '')\n });\n }\n return result;\n };\n\n LazyWrapper.prototype[methodName + 'Right'] = function(n) {\n return this.reverse()[methodName](n).reverse();\n };\n });\n\n // Add `LazyWrapper` methods that accept an `iteratee` value.\n arrayEach(['filter', 'map', 'takeWhile'], function(methodName, index) {\n var type = index + 1,\n isFilter = type == LAZY_FILTER_FLAG || type == LAZY_WHILE_FLAG;\n\n LazyWrapper.prototype[methodName] = function(iteratee) {\n var result = this.clone();\n result.__iteratees__.push({\n 'iteratee': getIteratee(iteratee, 3),\n 'type': type\n });\n result.__filtered__ = result.__filtered__ || isFilter;\n return result;\n };\n });\n\n // Add `LazyWrapper` methods for `_.head` and `_.last`.\n arrayEach(['head', 'last'], function(methodName, index) {\n var takeName = 'take' + (index ? 'Right' : '');\n\n LazyWrapper.prototype[methodName] = function() {\n return this[takeName](1).value()[0];\n };\n });\n\n // Add `LazyWrapper` methods for `_.initial` and `_.tail`.\n arrayEach(['initial', 'tail'], function(methodName, index) {\n var dropName = 'drop' + (index ? '' : 'Right');\n\n LazyWrapper.prototype[methodName] = function() {\n return this.__filtered__ ? new LazyWrapper(this) : this[dropName](1);\n };\n });\n\n LazyWrapper.prototype.compact = function() {\n return this.filter(identity);\n };\n\n LazyWrapper.prototype.find = function(predicate) {\n return this.filter(predicate).head();\n };\n\n LazyWrapper.prototype.findLast = function(predicate) {\n return this.reverse().find(predicate);\n };\n\n LazyWrapper.prototype.invokeMap = baseRest(function(path, args) {\n if (typeof path == 'function') {\n return new LazyWrapper(this);\n }\n return this.map(function(value) {\n return baseInvoke(value, path, args);\n });\n });\n\n LazyWrapper.prototype.reject = function(predicate) {\n return this.filter(negate(getIteratee(predicate)));\n };\n\n LazyWrapper.prototype.slice = function(start, end) {\n start = toInteger(start);\n\n var result = this;\n if (result.__filtered__ && (start > 0 || end < 0)) {\n return new LazyWrapper(result);\n }\n if (start < 0) {\n result = result.takeRight(-start);\n } else if (start) {\n result = result.drop(start);\n }\n if (end !== undefined) {\n end = toInteger(end);\n result = end < 0 ? result.dropRight(-end) : result.take(end - start);\n }\n return result;\n };\n\n LazyWrapper.prototype.takeRightWhile = function(predicate) {\n return this.reverse().takeWhile(predicate).reverse();\n };\n\n LazyWrapper.prototype.toArray = function() {\n return this.take(MAX_ARRAY_LENGTH);\n };\n\n // Add `LazyWrapper` methods to `lodash.prototype`.\n baseForOwn(LazyWrapper.prototype, function(func, methodName) {\n var checkIteratee = /^(?:filter|find|map|reject)|While$/.test(methodName),\n isTaker = /^(?:head|last)$/.test(methodName),\n lodashFunc = lodash[isTaker ? ('take' + (methodName == 'last' ? 'Right' : '')) : methodName],\n retUnwrapped = isTaker || /^find/.test(methodName);\n\n if (!lodashFunc) {\n return;\n }\n lodash.prototype[methodName] = function() {\n var value = this.__wrapped__,\n args = isTaker ? [1] : arguments,\n isLazy = value instanceof LazyWrapper,\n iteratee = args[0],\n useLazy = isLazy || isArray(value);\n\n var interceptor = function(value) {\n var result = lodashFunc.apply(lodash, arrayPush([value], args));\n return (isTaker && chainAll) ? result[0] : result;\n };\n\n if (useLazy && checkIteratee && typeof iteratee == 'function' && iteratee.length != 1) {\n // Avoid lazy use if the iteratee has a \"length\" value other than `1`.\n isLazy = useLazy = false;\n }\n var chainAll = this.__chain__,\n isHybrid = !!this.__actions__.length,\n isUnwrapped = retUnwrapped && !chainAll,\n onlyLazy = isLazy && !isHybrid;\n\n if (!retUnwrapped && useLazy) {\n value = onlyLazy ? value : new LazyWrapper(this);\n var result = func.apply(value, args);\n result.__actions__.push({ 'func': thru, 'args': [interceptor], 'thisArg': undefined });\n return new LodashWrapper(result, chainAll);\n }\n if (isUnwrapped && onlyLazy) {\n return func.apply(this, args);\n }\n result = this.thru(interceptor);\n return isUnwrapped ? (isTaker ? result.value()[0] : result.value()) : result;\n };\n });\n\n // Add `Array` methods to `lodash.prototype`.\n arrayEach(['pop', 'push', 'shift', 'sort', 'splice', 'unshift'], function(methodName) {\n var func = arrayProto[methodName],\n chainName = /^(?:push|sort|unshift)$/.test(methodName) ? 'tap' : 'thru',\n retUnwrapped = /^(?:pop|shift)$/.test(methodName);\n\n lodash.prototype[methodName] = function() {\n var args = arguments;\n if (retUnwrapped && !this.__chain__) {\n var value = this.value();\n return func.apply(isArray(value) ? value : [], args);\n }\n return this[chainName](function(value) {\n return func.apply(isArray(value) ? value : [], args);\n });\n };\n });\n\n // Map minified method names to their real names.\n baseForOwn(LazyWrapper.prototype, function(func, methodName) {\n var lodashFunc = lodash[methodName];\n if (lodashFunc) {\n var key = lodashFunc.name + '';\n if (!hasOwnProperty.call(realNames, key)) {\n realNames[key] = [];\n }\n realNames[key].push({ 'name': methodName, 'func': lodashFunc });\n }\n });\n\n realNames[createHybrid(undefined, WRAP_BIND_KEY_FLAG).name] = [{\n 'name': 'wrapper',\n 'func': undefined\n }];\n\n // Add methods to `LazyWrapper`.\n LazyWrapper.prototype.clone = lazyClone;\n LazyWrapper.prototype.reverse = lazyReverse;\n LazyWrapper.prototype.value = lazyValue;\n\n // Add chain sequence methods to the `lodash` wrapper.\n lodash.prototype.at = wrapperAt;\n lodash.prototype.chain = wrapperChain;\n lodash.prototype.commit = wrapperCommit;\n lodash.prototype.next = wrapperNext;\n lodash.prototype.plant = wrapperPlant;\n lodash.prototype.reverse = wrapperReverse;\n lodash.prototype.toJSON = lodash.prototype.valueOf = lodash.prototype.value = wrapperValue;\n\n // Add lazy aliases.\n lodash.prototype.first = lodash.prototype.head;\n\n if (symIterator) {\n lodash.prototype[symIterator] = wrapperToIterator;\n }\n return lodash;\n });\n\n /*--------------------------------------------------------------------------*/\n\n // Export lodash.\n var _ = runInContext();\n\n // Some AMD build optimizers, like r.js, check for condition patterns like:\n if (typeof define == 'function' && typeof define.amd == 'object' && define.amd) {\n // Expose Lodash on the global object to prevent errors when Lodash is\n // loaded by a script tag in the presence of an AMD loader.\n // See http://requirejs.org/docs/errors.html#mismatch for more details.\n // Use `_.noConflict` to remove Lodash from the global object.\n root._ = _;\n\n // Define as an anonymous module so, through path mapping, it can be\n // referenced as the \"underscore\" module.\n define(function() {\n return _;\n });\n }\n // Check for `exports` after `define` in case a build optimizer adds it.\n else if (freeModule) {\n // Export for Node.js.\n (freeModule.exports = _)._ = _;\n // Export for CommonJS support.\n freeExports._ = _;\n }\n else {\n // Export to the global object.\n root._ = _;\n }\n}.call(this));\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nvar _a;\r\n;\r\nvar UNDEFINED = \"undefined\";\r\n/**\r\n * Constant string defined to support minimization\r\n * @ignore\r\n */\r\nvar Constructor = 'constructor';\r\n/**\r\n * Constant string defined to support minimization\r\n * @ignore\r\n */\r\nvar Prototype = 'prototype';\r\n/**\r\n * Constant string defined to support minimization\r\n * @ignore\r\n */\r\nvar strFunction = 'function';\r\n/**\r\n * Used to define the name of the instance function lookup table\r\n * @ignore\r\n */\r\nvar DynInstFuncTable = '_dynInstFuncs';\r\n/**\r\n * Name used to tag the dynamic prototype function\r\n * @ignore\r\n */\r\nvar DynProxyTag = '_isDynProxy';\r\n/**\r\n * Name added to a prototype to define the dynamic prototype \"class\" name used to lookup the function table\r\n * @ignore\r\n */\r\nvar DynClassName = '_dynClass';\r\n/**\r\n * Prefix added to the classname to avoid any name clashes with other instance level properties\r\n * @ignore\r\n */\r\nvar DynClassNamePrefix = '_dynCls$';\r\n/**\r\n * A tag which is used to check if we have already to attempted to set the instance function if one is not present\r\n * @ignore\r\n */\r\nvar DynInstChkTag = '_dynInstChk';\r\n/**\r\n * A tag which is used to check if we are allows to try and set an instance function is one is not present. Using the same\r\n * tag name as the function level but a different const name for readability only.\r\n */\r\nvar DynAllowInstChkTag = DynInstChkTag;\r\n/**\r\n * The global (imported) instances where the global performance options are stored\r\n */\r\nvar DynProtoDefaultOptions = '_dfOpts';\r\n/**\r\n * Value used as the name of a class when it cannot be determined\r\n * @ignore\r\n */\r\nvar UnknownValue = '_unknown_';\r\n/**\r\n * Constant string defined to support minimization\r\n * @ignore\r\n */\r\nvar str__Proto = \"__proto__\";\r\n/**\r\n * The polyfill version of __proto__ so that it doesn't cause issues for anyone not expecting it to exist\r\n */\r\nvar DynProtoBaseProto = \"_dyn\" + str__Proto;\r\n/**\r\n * Runtime Global holder for dynamicProto settings\r\n */\r\nvar DynProtoGlobalSettings = \"__dynProto$Gbl\";\r\n/**\r\n * Track the current prototype for IE8 as you can't look back to get the prototype\r\n */\r\nvar DynProtoCurrent = \"_dynInstProto\";\r\n/**\r\n * Constant string defined to support minimization\r\n * @ignore\r\n */\r\nvar strUseBaseInst = 'useBaseInst';\r\n/**\r\n * Constant string defined to support minimization\r\n * @ignore\r\n */\r\nvar strSetInstFuncs = 'setInstFuncs';\r\nvar Obj = Object;\r\n/**\r\n * Pre-lookup to check if we are running on a modern browser (i.e. not IE8)\r\n * @ignore\r\n */\r\nvar _objGetPrototypeOf = Obj[\"getPrototypeOf\"];\r\n/**\r\n * Pre-lookup to check for the existence of this function\r\n */\r\nvar _objGetOwnProps = Obj[\"getOwnPropertyNames\"];\r\n/**\r\n * Gets the runtime global reference\r\n * @returns\r\n */\r\nfunction _getGlobal() {\r\n var result;\r\n if (typeof globalThis !== UNDEFINED) {\r\n result = globalThis;\r\n }\r\n if (!result && typeof self !== UNDEFINED) {\r\n result = self;\r\n }\r\n if (!result && typeof window !== UNDEFINED) {\r\n result = window;\r\n }\r\n if (!result && typeof global !== UNDEFINED) {\r\n result = global;\r\n }\r\n return result || {};\r\n}\r\n// Since 1.1.7 moving these to the runtime global to work around mixed version and module issues\r\n// See Issue https://github.com/microsoft/DynamicProto-JS/issues/57 for details\r\nvar _gbl = _getGlobal();\r\nvar _gblInst = _gbl[DynProtoGlobalSettings] || (_gbl[DynProtoGlobalSettings] = {\r\n o: (_a = {},\r\n _a[strSetInstFuncs] = true,\r\n _a[strUseBaseInst] = true,\r\n _a),\r\n n: 1000 // Start new global index @ 1000 so we \"fix\" some cases when mixed with 1.1.6 or earlier\r\n});\r\n/**\r\n * Helper to check if the object contains a property of the name\r\n * @ignore\r\n */\r\nfunction _hasOwnProperty(obj, prop) {\r\n return obj && Obj[Prototype].hasOwnProperty.call(obj, prop);\r\n}\r\n/**\r\n * Helper used to check whether the target is an Object prototype or Array prototype\r\n * @ignore\r\n */\r\nfunction _isObjectOrArrayPrototype(target) {\r\n return target && (target === Obj[Prototype] || target === Array[Prototype]);\r\n}\r\n/**\r\n * Helper used to check whether the target is an Object prototype, Array prototype or Function prototype\r\n * @ignore\r\n */\r\nfunction _isObjectArrayOrFunctionPrototype(target) {\r\n return _isObjectOrArrayPrototype(target) || target === Function[Prototype];\r\n}\r\n/**\r\n * Helper used to get the prototype of the target object as getPrototypeOf is not available in an ES3 environment.\r\n * @ignore\r\n */\r\nfunction _getObjProto(target) {\r\n var newProto;\r\n if (target) {\r\n // This method doesn't exist in older browsers (e.g. IE8)\r\n if (_objGetPrototypeOf) {\r\n return _objGetPrototypeOf(target);\r\n }\r\n var curProto = target[str__Proto] || target[Prototype] || (target[Constructor] ? target[Constructor][Prototype] : null);\r\n // Using the pre-calculated value as IE8 doesn't support looking up the prototype of a prototype and thus fails for more than 1 base class\r\n newProto = target[DynProtoBaseProto] || curProto;\r\n if (!_hasOwnProperty(target, DynProtoBaseProto)) {\r\n // As this prototype doesn't have this property then this is from an inherited class so newProto is the base to return so save it\r\n // so we can look it up value (which for a multiple hierarchy dynamicProto will be the base class)\r\n delete target[DynProtoCurrent]; // Delete any current value allocated to this instance so we pick up the value from prototype hierarchy\r\n newProto = target[DynProtoBaseProto] = target[DynProtoCurrent] || target[DynProtoBaseProto];\r\n target[DynProtoCurrent] = curProto;\r\n }\r\n }\r\n return newProto;\r\n}\r\n/**\r\n * Helper to get the properties of an object, including none enumerable ones as functions on a prototype in ES6\r\n * are not enumerable.\r\n * @param target\r\n */\r\nfunction _forEachProp(target, func) {\r\n var props = [];\r\n if (_objGetOwnProps) {\r\n props = _objGetOwnProps(target);\r\n }\r\n else {\r\n for (var name_1 in target) {\r\n if (typeof name_1 === \"string\" && _hasOwnProperty(target, name_1)) {\r\n props.push(name_1);\r\n }\r\n }\r\n }\r\n if (props && props.length > 0) {\r\n for (var lp = 0; lp < props.length; lp++) {\r\n func(props[lp]);\r\n }\r\n }\r\n}\r\n/**\r\n * Helper function to check whether the provided function name is a potential candidate for dynamic\r\n * callback and prototype generation.\r\n * @param target The target object, may be a prototype or class object\r\n * @param funcName The function name\r\n * @param skipOwn Skips the check for own property\r\n * @ignore\r\n */\r\nfunction _isDynamicCandidate(target, funcName, skipOwn) {\r\n return (funcName !== Constructor && typeof target[funcName] === strFunction && (skipOwn || _hasOwnProperty(target, funcName)) && funcName !== str__Proto && funcName !== Prototype);\r\n}\r\n/**\r\n * Helper to throw a TypeError exception\r\n * @param message the message\r\n * @ignore\r\n */\r\nfunction _throwTypeError(message) {\r\n throw new TypeError(\"DynamicProto: \" + message);\r\n}\r\nfunction _newObject() {\r\n return Object.create ? Object.create(null) : {};\r\n}\r\n/**\r\n * Returns a collection of the instance functions that are defined directly on the thisTarget object, it does\r\n * not return any inherited functions\r\n * @param thisTarget The object to get the instance functions from\r\n * @ignore\r\n */\r\nfunction _getInstanceFuncs(thisTarget) {\r\n // Get the base proto\r\n var instFuncs = _newObject();\r\n // Save any existing instance functions\r\n _forEachProp(thisTarget, function (name) {\r\n // Don't include any dynamic prototype instances - as we only want the real functions\r\n if (!instFuncs[name] && _isDynamicCandidate(thisTarget, name, false)) {\r\n // Create an instance callback for passing the base function to the caller\r\n instFuncs[name] = thisTarget[name];\r\n }\r\n });\r\n return instFuncs;\r\n}\r\n/**\r\n * Returns whether the value is included in the array\r\n * @param values The array of values\r\n * @param value The value\r\n */\r\nfunction _hasVisited(values, value) {\r\n for (var lp = values.length - 1; lp >= 0; lp--) {\r\n if (values[lp] === value) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n}\r\n/**\r\n * Returns an object that contains callback functions for all \"base/super\" functions, this is used to \"save\"\r\n * enabling calling super.xxx() functions without requiring that the base \"class\" has defined a prototype references\r\n * @param target The current instance\r\n * @ignore\r\n */\r\nfunction _getBaseFuncs(classProto, thisTarget, instFuncs, useBaseInst) {\r\n function _instFuncProxy(target, funcHost, funcName) {\r\n var theFunc = funcHost[funcName];\r\n if (theFunc[DynProxyTag] && useBaseInst) {\r\n // grab and reuse the hosted looking function (if available) otherwise the original passed function\r\n var instFuncTable = target[DynInstFuncTable] || {};\r\n if (instFuncTable[DynAllowInstChkTag] !== false) {\r\n theFunc = (instFuncTable[funcHost[DynClassName]] || {})[funcName] || theFunc;\r\n }\r\n }\r\n return function () {\r\n // eslint-disable-next-line prefer-rest-params\r\n return theFunc.apply(target, arguments);\r\n };\r\n }\r\n // Start creating a new baseFuncs by creating proxies for the instance functions (as they may get replaced)\r\n var baseFuncs = _newObject();\r\n _forEachProp(instFuncs, function (name) {\r\n // Create an instance callback for passing the base function to the caller\r\n baseFuncs[name] = _instFuncProxy(thisTarget, instFuncs, name);\r\n });\r\n // Get the base prototype functions\r\n var baseProto = _getObjProto(classProto);\r\n var visited = [];\r\n // Don't include base object functions for Object, Array or Function\r\n while (baseProto && !_isObjectArrayOrFunctionPrototype(baseProto) && !_hasVisited(visited, baseProto)) {\r\n // look for prototype functions\r\n _forEachProp(baseProto, function (name) {\r\n // Don't include any dynamic prototype instances - as we only want the real functions\r\n // For IE 7/8 the prototype lookup doesn't provide the full chain so we need to bypass the \r\n // hasOwnProperty check we get all of the methods, main difference is that IE7/8 doesn't return\r\n // the Object prototype methods while bypassing the check\r\n if (!baseFuncs[name] && _isDynamicCandidate(baseProto, name, !_objGetPrototypeOf)) {\r\n // Create an instance callback for passing the base function to the caller\r\n baseFuncs[name] = _instFuncProxy(thisTarget, baseProto, name);\r\n }\r\n });\r\n // We need to find all possible functions that might be overloaded by walking the entire prototype chain\r\n // This avoids the caller from needing to check whether it's direct base class implements the function or not\r\n // by walking the entire chain it simplifies the usage and issues from upgrading any of the base classes.\r\n visited.push(baseProto);\r\n baseProto = _getObjProto(baseProto);\r\n }\r\n return baseFuncs;\r\n}\r\nfunction _getInstFunc(target, funcName, proto, currentDynProtoProxy) {\r\n var instFunc = null;\r\n // We need to check whether the class name is defined directly on this prototype otherwise\r\n // it will walk the proto chain and return any parent proto classname.\r\n if (target && _hasOwnProperty(proto, DynClassName)) {\r\n var instFuncTable = target[DynInstFuncTable] || _newObject();\r\n instFunc = (instFuncTable[proto[DynClassName]] || _newObject())[funcName];\r\n if (!instFunc) {\r\n // Avoid stack overflow from recursive calling the same function\r\n _throwTypeError(\"Missing [\" + funcName + \"] \" + strFunction);\r\n }\r\n // We have the instance function, lets check it we can speed up further calls\r\n // by adding the instance function back directly on the instance (avoiding the dynamic func lookup)\r\n if (!instFunc[DynInstChkTag] && instFuncTable[DynAllowInstChkTag] !== false) {\r\n // If the instance already has an instance function we can't replace it\r\n var canAddInst = !_hasOwnProperty(target, funcName);\r\n // Get current prototype\r\n var objProto = _getObjProto(target);\r\n var visited = [];\r\n // Lookup the function starting at the top (instance level prototype) and traverse down, if the first matching function\r\n // if nothing is found or if the first hit is a dynamic proto instance then we can safely add an instance shortcut\r\n while (canAddInst && objProto && !_isObjectArrayOrFunctionPrototype(objProto) && !_hasVisited(visited, objProto)) {\r\n var protoFunc = objProto[funcName];\r\n if (protoFunc) {\r\n canAddInst = (protoFunc === currentDynProtoProxy);\r\n break;\r\n }\r\n // We need to find all possible initial functions to ensure that we don't bypass a valid override function\r\n visited.push(objProto);\r\n objProto = _getObjProto(objProto);\r\n }\r\n try {\r\n if (canAddInst) {\r\n // This instance doesn't have an instance func and the class hierarchy does have a higher level prototype version\r\n // so it's safe to directly assign for any subsequent calls (for better performance)\r\n target[funcName] = instFunc;\r\n }\r\n // Block further attempts to set the instance function for any\r\n instFunc[DynInstChkTag] = 1;\r\n }\r\n catch (e) {\r\n // Don't crash if the object is readonly or the runtime doesn't allow changing this\r\n // And set a flag so we don't try again for any function\r\n instFuncTable[DynAllowInstChkTag] = false;\r\n }\r\n }\r\n }\r\n return instFunc;\r\n}\r\nfunction _getProtoFunc(funcName, proto, currentDynProtoProxy) {\r\n var protoFunc = proto[funcName];\r\n // Check that the prototype function is not a self reference -- try to avoid stack overflow!\r\n if (protoFunc === currentDynProtoProxy) {\r\n // It is so lookup the base prototype\r\n protoFunc = _getObjProto(proto)[funcName];\r\n }\r\n if (typeof protoFunc !== strFunction) {\r\n _throwTypeError(\"[\" + funcName + \"] is not a \" + strFunction);\r\n }\r\n return protoFunc;\r\n}\r\n/**\r\n * Add the required dynamic prototype methods to the the class prototype\r\n * @param proto - The class prototype\r\n * @param className - The instance classname\r\n * @param target - The target instance\r\n * @param baseInstFuncs - The base instance functions\r\n * @param setInstanceFunc - Flag to allow prototype function to reset the instance function if one does not exist\r\n * @ignore\r\n */\r\nfunction _populatePrototype(proto, className, target, baseInstFuncs, setInstanceFunc) {\r\n function _createDynamicPrototype(proto, funcName) {\r\n var dynProtoProxy = function () {\r\n // Use the instance or prototype function\r\n var instFunc = _getInstFunc(this, funcName, proto, dynProtoProxy) || _getProtoFunc(funcName, proto, dynProtoProxy);\r\n // eslint-disable-next-line prefer-rest-params\r\n return instFunc.apply(this, arguments);\r\n };\r\n // Tag this function as a proxy to support replacing dynamic proxy elements (primary use case is for unit testing\r\n // via which can dynamically replace the prototype function reference)\r\n dynProtoProxy[DynProxyTag] = 1;\r\n return dynProtoProxy;\r\n }\r\n if (!_isObjectOrArrayPrototype(proto)) {\r\n var instFuncTable = target[DynInstFuncTable] = target[DynInstFuncTable] || _newObject();\r\n if (!_isObjectOrArrayPrototype(instFuncTable)) {\r\n var instFuncs_1 = instFuncTable[className] = (instFuncTable[className] || _newObject()); // fetch and assign if as it may not exist yet\r\n // Set whether we are allow to lookup instances, if someone has set to false then do not re-enable\r\n if (instFuncTable[DynAllowInstChkTag] !== false) {\r\n instFuncTable[DynAllowInstChkTag] = !!setInstanceFunc;\r\n }\r\n if (!_isObjectOrArrayPrototype(instFuncs_1)) {\r\n _forEachProp(target, function (name) {\r\n // Only add overridden functions\r\n if (_isDynamicCandidate(target, name, false) && target[name] !== baseInstFuncs[name]) {\r\n // Save the instance Function to the lookup table and remove it from the instance as it's not a dynamic proto function\r\n instFuncs_1[name] = target[name];\r\n delete target[name];\r\n // Add a dynamic proto if one doesn't exist or if a prototype function exists and it's not a dynamic one\r\n if (!_hasOwnProperty(proto, name) || (proto[name] && !proto[name][DynProxyTag])) {\r\n proto[name] = _createDynamicPrototype(proto, name);\r\n }\r\n }\r\n });\r\n }\r\n }\r\n }\r\n}\r\n/**\r\n * Checks whether the passed prototype object appears to be correct by walking the prototype hierarchy of the instance\r\n * @param classProto The class prototype instance\r\n * @param thisTarget The current instance that will be checked whether the passed prototype instance is in the hierarchy\r\n * @ignore\r\n */\r\nfunction _checkPrototype(classProto, thisTarget) {\r\n // This method doesn't existing in older browsers (e.g. IE8)\r\n if (_objGetPrototypeOf) {\r\n // As this is primarily a coding time check, don't bother checking if running in IE8 or lower\r\n var visited = [];\r\n var thisProto = _getObjProto(thisTarget);\r\n while (thisProto && !_isObjectArrayOrFunctionPrototype(thisProto) && !_hasVisited(visited, thisProto)) {\r\n if (thisProto === classProto) {\r\n return true;\r\n }\r\n // This avoids the caller from needing to check whether it's direct base class implements the function or not\r\n // by walking the entire chain it simplifies the usage and issues from upgrading any of the base classes.\r\n visited.push(thisProto);\r\n thisProto = _getObjProto(thisProto);\r\n }\r\n return false;\r\n }\r\n // If objGetPrototypeOf doesn't exist then just assume everything is ok.\r\n return true;\r\n}\r\n/**\r\n * Gets the current prototype name using the ES6 name if available otherwise falling back to a use unknown as the name.\r\n * It's not critical for this to return a name, it's used to decorate the generated unique name for easier debugging only.\r\n * @param target\r\n * @param unknownValue\r\n * @ignore\r\n */\r\nfunction _getObjName(target, unknownValue) {\r\n if (_hasOwnProperty(target, Prototype)) {\r\n // Look like a prototype\r\n return target.name || unknownValue || UnknownValue;\r\n }\r\n return (((target || {})[Constructor]) || {}).name || unknownValue || UnknownValue;\r\n}\r\n/**\r\n * Helper function when creating dynamic (inline) functions for classes, this helper performs the following tasks :-\r\n * - Saves references to all defined base class functions\r\n * - Calls the delegateFunc with the current target (this) and a base object reference that can be used to call all \"super\" functions.\r\n * - Will populate the class prototype for all overridden functions to support class extension that call the prototype instance.\r\n * Callers should use this helper when declaring all function within the constructor of a class, as mentioned above the delegateFunc is\r\n * passed both the target \"this\" and an object that can be used to call any base (super) functions, using this based object in place of\r\n * super.XXX() (which gets expanded to _super.prototype.XXX()) provides a better minification outcome and also ensures the correct \"this\"\r\n * context is maintained as TypeScript creates incorrect references using super.XXXX() for dynamically defined functions i.e. Functions\r\n * defined in the constructor or some other function (rather than declared as complete typescript functions).\r\n * ### Usage\r\n * ```typescript\r\n * import dynamicProto from \"@microsoft/dynamicproto-js\";\r\n * class ExampleClass extends BaseClass {\r\n * constructor() {\r\n * dynamicProto(ExampleClass, this, (_self, base) => {\r\n * // This will define a function that will be converted to a prototype function\r\n * _self.newFunc = () => {\r\n * // Access any \"this\" instance property\r\n * if (_self.someProperty) {\r\n * ...\r\n * }\r\n * }\r\n * // This will define a function that will be converted to a prototype function\r\n * _self.myFunction = () => {\r\n * // Access any \"this\" instance property\r\n * if (_self.someProperty) {\r\n * // Call the base version of the function that we are overriding\r\n * base.myFunction();\r\n * }\r\n * ...\r\n * }\r\n * _self.initialize = () => {\r\n * ...\r\n * }\r\n * // Warnings: While the following will work as _self is simply a reference to\r\n * // this, if anyone overrides myFunction() the overridden will be called first\r\n * // as the normal JavaScript method resolution will occur and the defined\r\n * // _self.initialize() function is actually gets removed from the instance and\r\n * // a proxy prototype version is created to reference the created method.\r\n * _self.initialize();\r\n * });\r\n * }\r\n * }\r\n * ```\r\n * @typeparam DPType This is the generic type of the class, used to keep intellisense valid\r\n * @typeparam DPCls The type that contains the prototype of the current class\r\n * @param theClass - This is the current class instance which contains the prototype for the current class\r\n * @param target - The current \"this\" (target) reference, when the class has been extended this.prototype will not be the 'theClass' value.\r\n * @param delegateFunc - The callback function (closure) that will create the dynamic function\r\n * @param options - Additional options to configure how the dynamic prototype operates\r\n */\r\nexport default function dynamicProto(theClass, target, delegateFunc, options) {\r\n // Make sure that the passed theClass argument looks correct\r\n if (!_hasOwnProperty(theClass, Prototype)) {\r\n _throwTypeError(\"theClass is an invalid class definition.\");\r\n }\r\n // Quick check to make sure that the passed theClass argument looks correct (this is a common copy/paste error)\r\n var classProto = theClass[Prototype];\r\n if (!_checkPrototype(classProto, target)) {\r\n _throwTypeError(\"[\" + _getObjName(theClass) + \"] not in hierarchy of [\" + _getObjName(target) + \"]\");\r\n }\r\n var className = null;\r\n if (_hasOwnProperty(classProto, DynClassName)) {\r\n // Only grab the class name if it's defined on this prototype (i.e. don't walk the prototype chain)\r\n className = classProto[DynClassName];\r\n }\r\n else {\r\n // As not all browser support name on the prototype creating a unique dynamic one if we have not already\r\n // assigned one, so we can use a simple string as the lookup rather than an object for the dynamic instance\r\n // function table lookup.\r\n className = DynClassNamePrefix + _getObjName(theClass, \"_\") + \"$\" + _gblInst.n;\r\n _gblInst.n++;\r\n classProto[DynClassName] = className;\r\n }\r\n var perfOptions = dynamicProto[DynProtoDefaultOptions];\r\n var useBaseInst = !!perfOptions[strUseBaseInst];\r\n if (useBaseInst && options && options[strUseBaseInst] !== undefined) {\r\n useBaseInst = !!options[strUseBaseInst];\r\n }\r\n // Get the current instance functions\r\n var instFuncs = _getInstanceFuncs(target);\r\n // Get all of the functions for any base instance (before they are potentially overridden)\r\n var baseFuncs = _getBaseFuncs(classProto, target, instFuncs, useBaseInst);\r\n // Execute the delegate passing in both the current target \"this\" and \"base\" function references\r\n // Note casting the same type as we don't actually have the base class here and this will provide some intellisense support\r\n delegateFunc(target, baseFuncs);\r\n // Don't allow setting instance functions for older IE instances\r\n var setInstanceFunc = !!_objGetPrototypeOf && !!perfOptions[strSetInstFuncs];\r\n if (setInstanceFunc && options) {\r\n setInstanceFunc = !!options[strSetInstFuncs];\r\n }\r\n // Populate the Prototype for any overridden instance functions\r\n _populatePrototype(classProto, className, target, instFuncs, setInstanceFunc !== false);\r\n}\r\n/**\r\n * Exposes the default global options to allow global configuration, if the global values are disabled these will override\r\n * any passed values. This is primarily exposed to support unit-testing without the need for individual classes to expose\r\n * their internal usage of dynamic proto.\r\n */\r\ndynamicProto[DynProtoDefaultOptions] = _gblInst.o;\r\n//# sourceMappingURL=DynamicProto.js.map","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : String(i); }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nimport isNil from 'lodash/isNil';\nimport { isValidElement } from 'react';\nimport isFunction from 'lodash/isFunction';\nimport { getPercentValue } from './DataUtils';\nimport { parseScale, checkDomainOfScale, getTicksOfScale } from './ChartUtils';\nexport var RADIAN = Math.PI / 180;\nexport var degreeToRadian = function degreeToRadian(angle) {\n return angle * Math.PI / 180;\n};\nexport var radianToDegree = function radianToDegree(angleInRadian) {\n return angleInRadian * 180 / Math.PI;\n};\nexport var polarToCartesian = function polarToCartesian(cx, cy, radius, angle) {\n return {\n x: cx + Math.cos(-RADIAN * angle) * radius,\n y: cy + Math.sin(-RADIAN * angle) * radius\n };\n};\nexport var getMaxRadius = function getMaxRadius(width, height) {\n var offset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n };\n return Math.min(Math.abs(width - (offset.left || 0) - (offset.right || 0)), Math.abs(height - (offset.top || 0) - (offset.bottom || 0))) / 2;\n};\n\n/**\n * Calculate the scale function, position, width, height of axes\n * @param {Object} props Latest props\n * @param {Object} axisMap The configuration of axes\n * @param {Object} offset The offset of main part in the svg element\n * @param {Object} axisType The type of axes, radius-axis or angle-axis\n * @param {String} chartName The name of chart\n * @return {Object} Configuration\n */\nexport var formatAxisMap = function formatAxisMap(props, axisMap, offset, axisType, chartName) {\n var width = props.width,\n height = props.height;\n var startAngle = props.startAngle,\n endAngle = props.endAngle;\n var cx = getPercentValue(props.cx, width, width / 2);\n var cy = getPercentValue(props.cy, height, height / 2);\n var maxRadius = getMaxRadius(width, height, offset);\n var innerRadius = getPercentValue(props.innerRadius, maxRadius, 0);\n var outerRadius = getPercentValue(props.outerRadius, maxRadius, maxRadius * 0.8);\n var ids = Object.keys(axisMap);\n return ids.reduce(function (result, id) {\n var axis = axisMap[id];\n var domain = axis.domain,\n reversed = axis.reversed;\n var range;\n if (isNil(axis.range)) {\n if (axisType === 'angleAxis') {\n range = [startAngle, endAngle];\n } else if (axisType === 'radiusAxis') {\n range = [innerRadius, outerRadius];\n }\n if (reversed) {\n range = [range[1], range[0]];\n }\n } else {\n range = axis.range;\n var _range = range;\n var _range2 = _slicedToArray(_range, 2);\n startAngle = _range2[0];\n endAngle = _range2[1];\n }\n var _parseScale = parseScale(axis, chartName),\n realScaleType = _parseScale.realScaleType,\n scale = _parseScale.scale;\n scale.domain(domain).range(range);\n checkDomainOfScale(scale);\n var ticks = getTicksOfScale(scale, _objectSpread(_objectSpread({}, axis), {}, {\n realScaleType: realScaleType\n }));\n var finalAxis = _objectSpread(_objectSpread(_objectSpread({}, axis), ticks), {}, {\n range: range,\n radius: outerRadius,\n realScaleType: realScaleType,\n scale: scale,\n cx: cx,\n cy: cy,\n innerRadius: innerRadius,\n outerRadius: outerRadius,\n startAngle: startAngle,\n endAngle: endAngle\n });\n return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, id, finalAxis));\n }, {});\n};\nexport var distanceBetweenPoints = function distanceBetweenPoints(point, anotherPoint) {\n var x1 = point.x,\n y1 = point.y;\n var x2 = anotherPoint.x,\n y2 = anotherPoint.y;\n return Math.sqrt(Math.pow(x1 - x2, 2) + Math.pow(y1 - y2, 2));\n};\nexport var getAngleOfPoint = function getAngleOfPoint(_ref, _ref2) {\n var x = _ref.x,\n y = _ref.y;\n var cx = _ref2.cx,\n cy = _ref2.cy;\n var radius = distanceBetweenPoints({\n x: x,\n y: y\n }, {\n x: cx,\n y: cy\n });\n if (radius <= 0) {\n return {\n radius: radius\n };\n }\n var cos = (x - cx) / radius;\n var angleInRadian = Math.acos(cos);\n if (y > cy) {\n angleInRadian = 2 * Math.PI - angleInRadian;\n }\n return {\n radius: radius,\n angle: radianToDegree(angleInRadian),\n angleInRadian: angleInRadian\n };\n};\nexport var formatAngleOfSector = function formatAngleOfSector(_ref3) {\n var startAngle = _ref3.startAngle,\n endAngle = _ref3.endAngle;\n var startCnt = Math.floor(startAngle / 360);\n var endCnt = Math.floor(endAngle / 360);\n var min = Math.min(startCnt, endCnt);\n return {\n startAngle: startAngle - min * 360,\n endAngle: endAngle - min * 360\n };\n};\nvar reverseFormatAngleOfSetor = function reverseFormatAngleOfSetor(angle, _ref4) {\n var startAngle = _ref4.startAngle,\n endAngle = _ref4.endAngle;\n var startCnt = Math.floor(startAngle / 360);\n var endCnt = Math.floor(endAngle / 360);\n var min = Math.min(startCnt, endCnt);\n return angle + min * 360;\n};\nexport var inRangeOfSector = function inRangeOfSector(_ref5, sector) {\n var x = _ref5.x,\n y = _ref5.y;\n var _getAngleOfPoint = getAngleOfPoint({\n x: x,\n y: y\n }, sector),\n radius = _getAngleOfPoint.radius,\n angle = _getAngleOfPoint.angle;\n var innerRadius = sector.innerRadius,\n outerRadius = sector.outerRadius;\n if (radius < innerRadius || radius > outerRadius) {\n return false;\n }\n if (radius === 0) {\n return true;\n }\n var _formatAngleOfSector = formatAngleOfSector(sector),\n startAngle = _formatAngleOfSector.startAngle,\n endAngle = _formatAngleOfSector.endAngle;\n var formatAngle = angle;\n var inRange;\n if (startAngle <= endAngle) {\n while (formatAngle > endAngle) {\n formatAngle -= 360;\n }\n while (formatAngle < startAngle) {\n formatAngle += 360;\n }\n inRange = formatAngle >= startAngle && formatAngle <= endAngle;\n } else {\n while (formatAngle > startAngle) {\n formatAngle -= 360;\n }\n while (formatAngle < endAngle) {\n formatAngle += 360;\n }\n inRange = formatAngle >= endAngle && formatAngle <= startAngle;\n }\n if (inRange) {\n return _objectSpread(_objectSpread({}, sector), {}, {\n radius: radius,\n angle: reverseFormatAngleOfSetor(formatAngle, sector)\n });\n }\n return null;\n};\nexport var getTickClassName = function getTickClassName(tick) {\n return ! /*#__PURE__*/isValidElement(tick) && !isFunction(tick) && typeof tick !== 'boolean' ? tick.className : '';\n};","var _excluded = [\"children\", \"className\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport React from 'react';\nimport clsx from 'clsx';\nimport { filterProps } from '../util/ReactUtils';\nexport var Layer = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var children = props.children,\n className = props.className,\n others = _objectWithoutProperties(props, _excluded);\n var layerClass = clsx('recharts-layer', className);\n return /*#__PURE__*/React.createElement(\"g\", _extends({\n className: layerClass\n }, filterProps(others, true), {\n ref: ref\n }), children);\n});","const errors = {\n\t0: \"Illegal state\",\n\t1: \"Immer drafts cannot have computed properties\",\n\t2: \"This object has been frozen and should not be mutated\",\n\t3(data: any) {\n\t\treturn (\n\t\t\t\"Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? \" +\n\t\t\tdata\n\t\t)\n\t},\n\t4: \"An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.\",\n\t5: \"Immer forbids circular references\",\n\t6: \"The first or second argument to `produce` must be a function\",\n\t7: \"The third argument to `produce` must be a function or undefined\",\n\t8: \"First argument to `createDraft` must be a plain object, an array, or an immerable object\",\n\t9: \"First argument to `finishDraft` must be a draft returned by `createDraft`\",\n\t10: \"The given draft is already finalized\",\n\t11: \"Object.defineProperty() cannot be used on an Immer draft\",\n\t12: \"Object.setPrototypeOf() cannot be used on an Immer draft\",\n\t13: \"Immer only supports deleting array indices\",\n\t14: \"Immer only supports setting array indices and the 'length' property\",\n\t15(path: string) {\n\t\treturn \"Cannot apply patch, path doesn't resolve: \" + path\n\t},\n\t16: 'Sets cannot have \"replace\" patches.',\n\t17(op: string) {\n\t\treturn \"Unsupported patch operation: \" + op\n\t},\n\t18(plugin: string) {\n\t\treturn `The plugin for '${plugin}' has not been loaded into Immer. To enable the plugin, import and call \\`enable${plugin}()\\` when initializing your application.`\n\t},\n\t20: \"Cannot use proxies if Proxy, Proxy.revocable or Reflect are not available\",\n\t21(thing: string) {\n\t\treturn `produce can only be called on things that are draftable: plain objects, arrays, Map, Set or classes that are marked with '[immerable]: true'. Got '${thing}'`\n\t},\n\t22(thing: string) {\n\t\treturn `'current' expects a draft, got: ${thing}`\n\t},\n\t23(thing: string) {\n\t\treturn `'original' expects a draft, got: ${thing}`\n\t},\n\t24: \"Patching reserved attributes like __proto__, prototype and constructor is not allowed\"\n} as const\n\nexport function die(error: keyof typeof errors, ...args: any[]): never {\n\tif (__DEV__) {\n\t\tconst e = errors[error]\n\t\tconst msg = !e\n\t\t\t? \"unknown error nr: \" + error\n\t\t\t: typeof e === \"function\"\n\t\t\t? e.apply(null, args as any)\n\t\t\t: e\n\t\tthrow new Error(`[Immer] ${msg}`)\n\t}\n\tthrow new Error(\n\t\t`[Immer] minified error nr: ${error}${\n\t\t\targs.length ? \" \" + args.map(s => `'${s}'`).join(\",\") : \"\"\n\t\t}. Find the full error at: https://bit.ly/3cXEKWf`\n\t)\n}\n","import {\n\tDRAFT_STATE,\n\tDRAFTABLE,\n\thasSet,\n\tObjectish,\n\tDrafted,\n\tAnyObject,\n\tAnyMap,\n\tAnySet,\n\tImmerState,\n\thasMap,\n\tArchtype,\n\tdie\n} from \"../internal\"\n\n/** Returns true if the given value is an Immer draft */\n/*#__PURE__*/\nexport function isDraft(value: any): boolean {\n\treturn !!value && !!value[DRAFT_STATE]\n}\n\n/** Returns true if the given value can be drafted by Immer */\n/*#__PURE__*/\nexport function isDraftable(value: any): boolean {\n\tif (!value) return false\n\treturn (\n\t\tisPlainObject(value) ||\n\t\tArray.isArray(value) ||\n\t\t!!value[DRAFTABLE] ||\n\t\t!!value.constructor[DRAFTABLE] ||\n\t\tisMap(value) ||\n\t\tisSet(value)\n\t)\n}\n\nconst objectCtorString = Object.prototype.constructor.toString()\n/*#__PURE__*/\nexport function isPlainObject(value: any): boolean {\n\tif (!value || typeof value !== \"object\") return false\n\tconst proto = Object.getPrototypeOf(value)\n\tif (proto === null) {\n\t\treturn true\n\t}\n\tconst Ctor =\n\t\tObject.hasOwnProperty.call(proto, \"constructor\") && proto.constructor\n\n\tif (Ctor === Object) return true\n\n\treturn (\n\t\ttypeof Ctor == \"function\" &&\n\t\tFunction.toString.call(Ctor) === objectCtorString\n\t)\n}\n\n/** Get the underlying object that is represented by the given draft */\n/*#__PURE__*/\nexport function original<T>(value: T): T | undefined\nexport function original(value: Drafted<any>): any {\n\tif (!isDraft(value)) die(23, value)\n\treturn value[DRAFT_STATE].base_\n}\n\n/*#__PURE__*/\nexport const ownKeys: (target: AnyObject) => PropertyKey[] =\n\ttypeof Reflect !== \"undefined\" && Reflect.ownKeys\n\t\t? Reflect.ownKeys\n\t\t: typeof Object.getOwnPropertySymbols !== \"undefined\"\n\t\t? obj =>\n\t\t\t\tObject.getOwnPropertyNames(obj).concat(\n\t\t\t\t\tObject.getOwnPropertySymbols(obj) as any\n\t\t\t\t)\n\t\t: /* istanbul ignore next */ Object.getOwnPropertyNames\n\nexport const getOwnPropertyDescriptors =\n\tObject.getOwnPropertyDescriptors ||\n\tfunction getOwnPropertyDescriptors(target: any) {\n\t\t// Polyfill needed for Hermes and IE, see https://github.com/facebook/hermes/issues/274\n\t\tconst res: any = {}\n\t\townKeys(target).forEach(key => {\n\t\t\tres[key] = Object.getOwnPropertyDescriptor(target, key)\n\t\t})\n\t\treturn res\n\t}\n\nexport function each<T extends Objectish>(\n\tobj: T,\n\titer: (key: string | number, value: any, source: T) => void,\n\tenumerableOnly?: boolean\n): void\nexport function each(obj: any, iter: any, enumerableOnly = false) {\n\tif (getArchtype(obj) === Archtype.Object) {\n\t\t;(enumerableOnly ? Object.keys : ownKeys)(obj).forEach(key => {\n\t\t\tif (!enumerableOnly || typeof key !== \"symbol\") iter(key, obj[key], obj)\n\t\t})\n\t} else {\n\t\tobj.forEach((entry: any, index: any) => iter(index, entry, obj))\n\t}\n}\n\n/*#__PURE__*/\nexport function getArchtype(thing: any): Archtype {\n\t/* istanbul ignore next */\n\tconst state: undefined | ImmerState = thing[DRAFT_STATE]\n\treturn state\n\t\t? state.type_ > 3\n\t\t\t? state.type_ - 4 // cause Object and Array map back from 4 and 5\n\t\t\t: (state.type_ as any) // others are the same\n\t\t: Array.isArray(thing)\n\t\t? Archtype.Array\n\t\t: isMap(thing)\n\t\t? Archtype.Map\n\t\t: isSet(thing)\n\t\t? Archtype.Set\n\t\t: Archtype.Object\n}\n\n/*#__PURE__*/\nexport function has(thing: any, prop: PropertyKey): boolean {\n\treturn getArchtype(thing) === Archtype.Map\n\t\t? thing.has(prop)\n\t\t: Object.prototype.hasOwnProperty.call(thing, prop)\n}\n\n/*#__PURE__*/\nexport function get(thing: AnyMap | AnyObject, prop: PropertyKey): any {\n\t// @ts-ignore\n\treturn getArchtype(thing) === Archtype.Map ? thing.get(prop) : thing[prop]\n}\n\n/*#__PURE__*/\nexport function set(thing: any, propOrOldValue: PropertyKey, value: any) {\n\tconst t = getArchtype(thing)\n\tif (t === Archtype.Map) thing.set(propOrOldValue, value)\n\telse if (t === Archtype.Set) {\n\t\tthing.delete(propOrOldValue)\n\t\tthing.add(value)\n\t} else thing[propOrOldValue] = value\n}\n\n/*#__PURE__*/\nexport function is(x: any, y: any): boolean {\n\t// From: https://github.com/facebook/fbjs/blob/c69904a511b900266935168223063dd8772dfc40/packages/fbjs/src/core/shallowEqual.js\n\tif (x === y) {\n\t\treturn x !== 0 || 1 / x === 1 / y\n\t} else {\n\t\treturn x !== x && y !== y\n\t}\n}\n\n/*#__PURE__*/\nexport function isMap(target: any): target is AnyMap {\n\treturn hasMap && target instanceof Map\n}\n\n/*#__PURE__*/\nexport function isSet(target: any): target is AnySet {\n\treturn hasSet && target instanceof Set\n}\n/*#__PURE__*/\nexport function latest(state: ImmerState): any {\n\treturn state.copy_ || state.base_\n}\n\n/*#__PURE__*/\nexport function shallowCopy(base: any) {\n\tif (Array.isArray(base)) return Array.prototype.slice.call(base)\n\tconst descriptors = getOwnPropertyDescriptors(base)\n\tdelete descriptors[DRAFT_STATE as any]\n\tlet keys = ownKeys(descriptors)\n\tfor (let i = 0; i < keys.length; i++) {\n\t\tconst key: any = keys[i]\n\t\tconst desc = descriptors[key]\n\t\tif (desc.writable === false) {\n\t\t\tdesc.writable = true\n\t\t\tdesc.configurable = true\n\t\t}\n\t\t// like object.assign, we will read any _own_, get/set accessors. This helps in dealing\n\t\t// with libraries that trap values, like mobx or vue\n\t\t// unlike object.assign, non-enumerables will be copied as well\n\t\tif (desc.get || desc.set)\n\t\t\tdescriptors[key] = {\n\t\t\t\tconfigurable: true,\n\t\t\t\twritable: true, // could live with !!desc.set as well here...\n\t\t\t\tenumerable: desc.enumerable,\n\t\t\t\tvalue: base[key]\n\t\t\t}\n\t}\n\treturn Object.create(Object.getPrototypeOf(base), descriptors)\n}\n\n/**\n * Freezes draftable objects. Returns the original object.\n * By default freezes shallowly, but if the second argument is `true` it will freeze recursively.\n *\n * @param obj\n * @param deep\n */\nexport function freeze<T>(obj: T, deep?: boolean): T\nexport function freeze<T>(obj: any, deep: boolean = false): T {\n\tif (isFrozen(obj) || isDraft(obj) || !isDraftable(obj)) return obj\n\tif (getArchtype(obj) > 1 /* Map or Set */) {\n\t\tobj.set = obj.add = obj.clear = obj.delete = dontMutateFrozenCollections as any\n\t}\n\tObject.freeze(obj)\n\tif (deep) each(obj, (key, value) => freeze(value, true), true)\n\treturn obj\n}\n\nfunction dontMutateFrozenCollections() {\n\tdie(2)\n}\n\nexport function isFrozen(obj: any): boolean {\n\tif (obj == null || typeof obj !== \"object\") return true\n\t// See #600, IE dies on non-objects in Object.isFrozen\n\treturn Object.isFrozen(obj)\n}\n","import {\n\tImmerState,\n\tPatch,\n\tImmerScope,\n\tDrafted,\n\tAnyObject,\n\tImmerBaseState,\n\tAnyMap,\n\tAnySet,\n\tProxyType,\n\tdie\n} from \"../internal\"\n\n/** Plugin utilities */\nconst plugins: {\n\tPatches?: {\n\t\tgeneratePatches_(\n\t\t\tstate: ImmerState,\n\t\t\tbasePath: PatchPath,\n\t\t\tpatches: Patch[],\n\t\t\tinversePatches: Patch[]\n\t\t): void\n\t\tgenerateReplacementPatches_(\n\t\t\trootState: ImmerState,\n\t\t\treplacement: any,\n\t\t\tpatches: Patch[],\n\t\t\tinversePatches: Patch[]\n\t\t): void\n\t\tapplyPatches_<T>(draft: T, patches: Patch[]): T\n\t}\n\tES5?: {\n\t\twillFinalizeES5_(scope: ImmerScope, result: any, isReplaced: boolean): void\n\t\tcreateES5Proxy_<T>(\n\t\t\tbase: T,\n\t\t\tparent?: ImmerState\n\t\t): Drafted<T, ES5ObjectState | ES5ArrayState>\n\t\thasChanges_(state: ES5ArrayState | ES5ObjectState): boolean\n\t}\n\tMapSet?: {\n\t\tproxyMap_<T extends AnyMap>(target: T, parent?: ImmerState): T\n\t\tproxySet_<T extends AnySet>(target: T, parent?: ImmerState): T\n\t}\n} = {}\n\ntype Plugins = typeof plugins\n\nexport function getPlugin<K extends keyof Plugins>(\n\tpluginKey: K\n): Exclude<Plugins[K], undefined> {\n\tconst plugin = plugins[pluginKey]\n\tif (!plugin) {\n\t\tdie(18, pluginKey)\n\t}\n\t// @ts-ignore\n\treturn plugin\n}\n\nexport function loadPlugin<K extends keyof Plugins>(\n\tpluginKey: K,\n\timplementation: Plugins[K]\n): void {\n\tif (!plugins[pluginKey]) plugins[pluginKey] = implementation\n}\n\n/** ES5 Plugin */\n\ninterface ES5BaseState extends ImmerBaseState {\n\tassigned_: {[key: string]: any}\n\tparent_?: ImmerState\n\trevoked_: boolean\n}\n\nexport interface ES5ObjectState extends ES5BaseState {\n\ttype_: ProxyType.ES5Object\n\tdraft_: Drafted<AnyObject, ES5ObjectState>\n\tbase_: AnyObject\n\tcopy_: AnyObject | null\n}\n\nexport interface ES5ArrayState extends ES5BaseState {\n\ttype_: ProxyType.ES5Array\n\tdraft_: Drafted<AnyObject, ES5ArrayState>\n\tbase_: any\n\tcopy_: any\n}\n\n/** Map / Set plugin */\n\nexport interface MapState extends ImmerBaseState {\n\ttype_: ProxyType.Map\n\tcopy_: AnyMap | undefined\n\tassigned_: Map<any, boolean> | undefined\n\tbase_: AnyMap\n\trevoked_: boolean\n\tdraft_: Drafted<AnyMap, MapState>\n}\n\nexport interface SetState extends ImmerBaseState {\n\ttype_: ProxyType.Set\n\tcopy_: AnySet | undefined\n\tbase_: AnySet\n\tdrafts_: Map<any, Drafted> // maps the original value to the draft value in the new set\n\trevoked_: boolean\n\tdraft_: Drafted<AnySet, SetState>\n}\n\n/** Patches plugin */\n\nexport type PatchPath = (string | number)[]\n","import {\n\tPatch,\n\tPatchListener,\n\tDrafted,\n\tImmer,\n\tDRAFT_STATE,\n\tImmerState,\n\tProxyType,\n\tgetPlugin\n} from \"../internal\"\nimport {die} from \"../utils/errors\"\n\n/** Each scope represents a `produce` call. */\n\nexport interface ImmerScope {\n\tpatches_?: Patch[]\n\tinversePatches_?: Patch[]\n\tcanAutoFreeze_: boolean\n\tdrafts_: any[]\n\tparent_?: ImmerScope\n\tpatchListener_?: PatchListener\n\timmer_: Immer\n\tunfinalizedDrafts_: number\n}\n\nlet currentScope: ImmerScope | undefined\n\nexport function getCurrentScope() {\n\tif (__DEV__ && !currentScope) die(0)\n\treturn currentScope!\n}\n\nfunction createScope(\n\tparent_: ImmerScope | undefined,\n\timmer_: Immer\n): ImmerScope {\n\treturn {\n\t\tdrafts_: [],\n\t\tparent_,\n\t\timmer_,\n\t\t// Whenever the modified draft contains a draft from another scope, we\n\t\t// need to prevent auto-freezing so the unowned draft can be finalized.\n\t\tcanAutoFreeze_: true,\n\t\tunfinalizedDrafts_: 0\n\t}\n}\n\nexport function usePatchesInScope(\n\tscope: ImmerScope,\n\tpatchListener?: PatchListener\n) {\n\tif (patchListener) {\n\t\tgetPlugin(\"Patches\") // assert we have the plugin\n\t\tscope.patches_ = []\n\t\tscope.inversePatches_ = []\n\t\tscope.patchListener_ = patchListener\n\t}\n}\n\nexport function revokeScope(scope: ImmerScope) {\n\tleaveScope(scope)\n\tscope.drafts_.forEach(revokeDraft)\n\t// @ts-ignore\n\tscope.drafts_ = null\n}\n\nexport function leaveScope(scope: ImmerScope) {\n\tif (scope === currentScope) {\n\t\tcurrentScope = scope.parent_\n\t}\n}\n\nexport function enterScope(immer: Immer) {\n\treturn (currentScope = createScope(currentScope, immer))\n}\n\nfunction revokeDraft(draft: Drafted) {\n\tconst state: ImmerState = draft[DRAFT_STATE]\n\tif (\n\t\tstate.type_ === ProxyType.ProxyObject ||\n\t\tstate.type_ === ProxyType.ProxyArray\n\t)\n\t\tstate.revoke_()\n\telse state.revoked_ = true\n}\n","import {\n\tImmerScope,\n\tDRAFT_STATE,\n\tisDraftable,\n\tNOTHING,\n\tPatchPath,\n\teach,\n\thas,\n\tfreeze,\n\tImmerState,\n\tisDraft,\n\tSetState,\n\tset,\n\tProxyType,\n\tgetPlugin,\n\tdie,\n\trevokeScope,\n\tisFrozen,\n\tshallowCopy\n} from \"../internal\"\n\nexport function processResult(result: any, scope: ImmerScope) {\n\tscope.unfinalizedDrafts_ = scope.drafts_.length\n\tconst baseDraft = scope.drafts_![0]\n\tconst isReplaced = result !== undefined && result !== baseDraft\n\tif (!scope.immer_.useProxies_)\n\t\tgetPlugin(\"ES5\").willFinalizeES5_(scope, result, isReplaced)\n\tif (isReplaced) {\n\t\tif (baseDraft[DRAFT_STATE].modified_) {\n\t\t\trevokeScope(scope)\n\t\t\tdie(4)\n\t\t}\n\t\tif (isDraftable(result)) {\n\t\t\t// Finalize the result in case it contains (or is) a subset of the draft.\n\t\t\tresult = finalize(scope, result)\n\t\t\tif (!scope.parent_) maybeFreeze(scope, result)\n\t\t}\n\t\tif (scope.patches_) {\n\t\t\tgetPlugin(\"Patches\").generateReplacementPatches_(\n\t\t\t\tbaseDraft[DRAFT_STATE],\n\t\t\t\tresult,\n\t\t\t\tscope.patches_,\n\t\t\t\tscope.inversePatches_!\n\t\t\t)\n\t\t}\n\t} else {\n\t\t// Finalize the base draft.\n\t\tresult = finalize(scope, baseDraft, [])\n\t}\n\trevokeScope(scope)\n\tif (scope.patches_) {\n\t\tscope.patchListener_!(scope.patches_, scope.inversePatches_!)\n\t}\n\treturn result !== NOTHING ? result : undefined\n}\n\nfunction finalize(rootScope: ImmerScope, value: any, path?: PatchPath) {\n\t// Don't recurse in tho recursive data structures\n\tif (isFrozen(value)) return value\n\n\tconst state: ImmerState = value[DRAFT_STATE]\n\t// A plain object, might need freezing, might contain drafts\n\tif (!state) {\n\t\teach(\n\t\t\tvalue,\n\t\t\t(key, childValue) =>\n\t\t\t\tfinalizeProperty(rootScope, state, value, key, childValue, path),\n\t\t\ttrue // See #590, don't recurse into non-enumarable of non drafted objects\n\t\t)\n\t\treturn value\n\t}\n\t// Never finalize drafts owned by another scope.\n\tif (state.scope_ !== rootScope) return value\n\t// Unmodified draft, return the (frozen) original\n\tif (!state.modified_) {\n\t\tmaybeFreeze(rootScope, state.base_, true)\n\t\treturn state.base_\n\t}\n\t// Not finalized yet, let's do that now\n\tif (!state.finalized_) {\n\t\tstate.finalized_ = true\n\t\tstate.scope_.unfinalizedDrafts_--\n\t\tconst result =\n\t\t\t// For ES5, create a good copy from the draft first, with added keys and without deleted keys.\n\t\t\tstate.type_ === ProxyType.ES5Object || state.type_ === ProxyType.ES5Array\n\t\t\t\t? (state.copy_ = shallowCopy(state.draft_))\n\t\t\t\t: state.copy_\n\t\t// Finalize all children of the copy\n\t\t// For sets we clone before iterating, otherwise we can get in endless loop due to modifying during iteration, see #628\n\t\t// Although the original test case doesn't seem valid anyway, so if this in the way we can turn the next line\n\t\t// back to each(result, ....)\n\t\teach(\n\t\t\tstate.type_ === ProxyType.Set ? new Set(result) : result,\n\t\t\t(key, childValue) =>\n\t\t\t\tfinalizeProperty(rootScope, state, result, key, childValue, path)\n\t\t)\n\t\t// everything inside is frozen, we can freeze here\n\t\tmaybeFreeze(rootScope, result, false)\n\t\t// first time finalizing, let's create those patches\n\t\tif (path && rootScope.patches_) {\n\t\t\tgetPlugin(\"Patches\").generatePatches_(\n\t\t\t\tstate,\n\t\t\t\tpath,\n\t\t\t\trootScope.patches_,\n\t\t\t\trootScope.inversePatches_!\n\t\t\t)\n\t\t}\n\t}\n\treturn state.copy_\n}\n\nfunction finalizeProperty(\n\trootScope: ImmerScope,\n\tparentState: undefined | ImmerState,\n\ttargetObject: any,\n\tprop: string | number,\n\tchildValue: any,\n\trootPath?: PatchPath\n) {\n\tif (__DEV__ && childValue === targetObject) die(5)\n\tif (isDraft(childValue)) {\n\t\tconst path =\n\t\t\trootPath &&\n\t\t\tparentState &&\n\t\t\tparentState!.type_ !== ProxyType.Set && // Set objects are atomic since they have no keys.\n\t\t\t!has((parentState as Exclude<ImmerState, SetState>).assigned_!, prop) // Skip deep patches for assigned keys.\n\t\t\t\t? rootPath!.concat(prop)\n\t\t\t\t: undefined\n\t\t// Drafts owned by `scope` are finalized here.\n\t\tconst res = finalize(rootScope, childValue, path)\n\t\tset(targetObject, prop, res)\n\t\t// Drafts from another scope must prevented to be frozen\n\t\t// if we got a draft back from finalize, we're in a nested produce and shouldn't freeze\n\t\tif (isDraft(res)) {\n\t\t\trootScope.canAutoFreeze_ = false\n\t\t} else return\n\t}\n\t// Search new objects for unfinalized drafts. Frozen objects should never contain drafts.\n\tif (isDraftable(childValue) && !isFrozen(childValue)) {\n\t\tif (!rootScope.immer_.autoFreeze_ && rootScope.unfinalizedDrafts_ < 1) {\n\t\t\t// optimization: if an object is not a draft, and we don't have to\n\t\t\t// deepfreeze everything, and we are sure that no drafts are left in the remaining object\n\t\t\t// cause we saw and finalized all drafts already; we can stop visiting the rest of the tree.\n\t\t\t// This benefits especially adding large data tree's without further processing.\n\t\t\t// See add-data.js perf test\n\t\t\treturn\n\t\t}\n\t\tfinalize(rootScope, childValue)\n\t\t// immer deep freezes plain objects, so if there is no parent state, we freeze as well\n\t\tif (!parentState || !parentState.scope_.parent_)\n\t\t\tmaybeFreeze(rootScope, childValue)\n\t}\n}\n\nfunction maybeFreeze(scope: ImmerScope, value: any, deep = false) {\n\tif (scope.immer_.autoFreeze_ && scope.canAutoFreeze_) {\n\t\tfreeze(value, deep)\n\t}\n}\n","import {\n\teach,\n\thas,\n\tis,\n\tisDraftable,\n\tshallowCopy,\n\tlatest,\n\tImmerBaseState,\n\tImmerState,\n\tDrafted,\n\tAnyObject,\n\tAnyArray,\n\tObjectish,\n\tgetCurrentScope,\n\tDRAFT_STATE,\n\tdie,\n\tcreateProxy,\n\tProxyType\n} from \"../internal\"\n\ninterface ProxyBaseState extends ImmerBaseState {\n\tassigned_: {\n\t\t[property: string]: boolean\n\t}\n\tparent_?: ImmerState\n\trevoke_(): void\n}\n\nexport interface ProxyObjectState extends ProxyBaseState {\n\ttype_: ProxyType.ProxyObject\n\tbase_: any\n\tcopy_: any\n\tdraft_: Drafted<AnyObject, ProxyObjectState>\n}\n\nexport interface ProxyArrayState extends ProxyBaseState {\n\ttype_: ProxyType.ProxyArray\n\tbase_: AnyArray\n\tcopy_: AnyArray | null\n\tdraft_: Drafted<AnyArray, ProxyArrayState>\n}\n\ntype ProxyState = ProxyObjectState | ProxyArrayState\n\n/**\n * Returns a new draft of the `base` object.\n *\n * The second argument is the parent draft-state (used internally).\n */\nexport function createProxyProxy<T extends Objectish>(\n\tbase: T,\n\tparent?: ImmerState\n): Drafted<T, ProxyState> {\n\tconst isArray = Array.isArray(base)\n\tconst state: ProxyState = {\n\t\ttype_: isArray ? ProxyType.ProxyArray : (ProxyType.ProxyObject as any),\n\t\t// Track which produce call this is associated with.\n\t\tscope_: parent ? parent.scope_ : getCurrentScope()!,\n\t\t// True for both shallow and deep changes.\n\t\tmodified_: false,\n\t\t// Used during finalization.\n\t\tfinalized_: false,\n\t\t// Track which properties have been assigned (true) or deleted (false).\n\t\tassigned_: {},\n\t\t// The parent draft state.\n\t\tparent_: parent,\n\t\t// The base state.\n\t\tbase_: base,\n\t\t// The base proxy.\n\t\tdraft_: null as any, // set below\n\t\t// The base copy with any updated values.\n\t\tcopy_: null,\n\t\t// Called by the `produce` function.\n\t\trevoke_: null as any,\n\t\tisManual_: false\n\t}\n\n\t// the traps must target something, a bit like the 'real' base.\n\t// but also, we need to be able to determine from the target what the relevant state is\n\t// (to avoid creating traps per instance to capture the state in closure,\n\t// and to avoid creating weird hidden properties as well)\n\t// So the trick is to use 'state' as the actual 'target'! (and make sure we intercept everything)\n\t// Note that in the case of an array, we put the state in an array to have better Reflect defaults ootb\n\tlet target: T = state as any\n\tlet traps: ProxyHandler<object | Array<any>> = objectTraps\n\tif (isArray) {\n\t\ttarget = [state] as any\n\t\ttraps = arrayTraps\n\t}\n\n\tconst {revoke, proxy} = Proxy.revocable(target, traps)\n\tstate.draft_ = proxy as any\n\tstate.revoke_ = revoke\n\treturn proxy as any\n}\n\n/**\n * Object drafts\n */\nexport const objectTraps: ProxyHandler<ProxyState> = {\n\tget(state, prop) {\n\t\tif (prop === DRAFT_STATE) return state\n\n\t\tconst source = latest(state)\n\t\tif (!has(source, prop)) {\n\t\t\t// non-existing or non-own property...\n\t\t\treturn readPropFromProto(state, source, prop)\n\t\t}\n\t\tconst value = source[prop]\n\t\tif (state.finalized_ || !isDraftable(value)) {\n\t\t\treturn value\n\t\t}\n\t\t// Check for existing draft in modified state.\n\t\t// Assigned values are never drafted. This catches any drafts we created, too.\n\t\tif (value === peek(state.base_, prop)) {\n\t\t\tprepareCopy(state)\n\t\t\treturn (state.copy_![prop as any] = createProxy(\n\t\t\t\tstate.scope_.immer_,\n\t\t\t\tvalue,\n\t\t\t\tstate\n\t\t\t))\n\t\t}\n\t\treturn value\n\t},\n\thas(state, prop) {\n\t\treturn prop in latest(state)\n\t},\n\townKeys(state) {\n\t\treturn Reflect.ownKeys(latest(state))\n\t},\n\tset(\n\t\tstate: ProxyObjectState,\n\t\tprop: string /* strictly not, but helps TS */,\n\t\tvalue\n\t) {\n\t\tconst desc = getDescriptorFromProto(latest(state), prop)\n\t\tif (desc?.set) {\n\t\t\t// special case: if this write is captured by a setter, we have\n\t\t\t// to trigger it with the correct context\n\t\t\tdesc.set.call(state.draft_, value)\n\t\t\treturn true\n\t\t}\n\t\tif (!state.modified_) {\n\t\t\t// the last check is because we need to be able to distinguish setting a non-existing to undefined (which is a change)\n\t\t\t// from setting an existing property with value undefined to undefined (which is not a change)\n\t\t\tconst current = peek(latest(state), prop)\n\t\t\t// special case, if we assigning the original value to a draft, we can ignore the assignment\n\t\t\tconst currentState: ProxyObjectState = current?.[DRAFT_STATE]\n\t\t\tif (currentState && currentState.base_ === value) {\n\t\t\t\tstate.copy_![prop] = value\n\t\t\t\tstate.assigned_[prop] = false\n\t\t\t\treturn true\n\t\t\t}\n\t\t\tif (is(value, current) && (value !== undefined || has(state.base_, prop)))\n\t\t\t\treturn true\n\t\t\tprepareCopy(state)\n\t\t\tmarkChanged(state)\n\t\t}\n\n\t\tif (\n\t\t\tstate.copy_![prop] === value &&\n\t\t\t// special case: NaN\n\t\t\ttypeof value !== \"number\" &&\n\t\t\t// special case: handle new props with value 'undefined'\n\t\t\t(value !== undefined || prop in state.copy_)\n\t\t)\n\t\t\treturn true\n\n\t\t// @ts-ignore\n\t\tstate.copy_![prop] = value\n\t\tstate.assigned_[prop] = true\n\t\treturn true\n\t},\n\tdeleteProperty(state, prop: string) {\n\t\t// The `undefined` check is a fast path for pre-existing keys.\n\t\tif (peek(state.base_, prop) !== undefined || prop in state.base_) {\n\t\t\tstate.assigned_[prop] = false\n\t\t\tprepareCopy(state)\n\t\t\tmarkChanged(state)\n\t\t} else {\n\t\t\t// if an originally not assigned property was deleted\n\t\t\tdelete state.assigned_[prop]\n\t\t}\n\t\t// @ts-ignore\n\t\tif (state.copy_) delete state.copy_[prop]\n\t\treturn true\n\t},\n\t// Note: We never coerce `desc.value` into an Immer draft, because we can't make\n\t// the same guarantee in ES5 mode.\n\tgetOwnPropertyDescriptor(state, prop) {\n\t\tconst owner = latest(state)\n\t\tconst desc = Reflect.getOwnPropertyDescriptor(owner, prop)\n\t\tif (!desc) return desc\n\t\treturn {\n\t\t\twritable: true,\n\t\t\tconfigurable: state.type_ !== ProxyType.ProxyArray || prop !== \"length\",\n\t\t\tenumerable: desc.enumerable,\n\t\t\tvalue: owner[prop]\n\t\t}\n\t},\n\tdefineProperty() {\n\t\tdie(11)\n\t},\n\tgetPrototypeOf(state) {\n\t\treturn Object.getPrototypeOf(state.base_)\n\t},\n\tsetPrototypeOf() {\n\t\tdie(12)\n\t}\n}\n\n/**\n * Array drafts\n */\n\nconst arrayTraps: ProxyHandler<[ProxyArrayState]> = {}\neach(objectTraps, (key, fn) => {\n\t// @ts-ignore\n\tarrayTraps[key] = function() {\n\t\targuments[0] = arguments[0][0]\n\t\treturn fn.apply(this, arguments)\n\t}\n})\narrayTraps.deleteProperty = function(state, prop) {\n\tif (__DEV__ && isNaN(parseInt(prop as any))) die(13)\n\treturn objectTraps.deleteProperty!.call(this, state[0], prop)\n}\narrayTraps.set = function(state, prop, value) {\n\tif (__DEV__ && prop !== \"length\" && isNaN(parseInt(prop as any))) die(14)\n\treturn objectTraps.set!.call(this, state[0], prop, value, state[0])\n}\n\n// Access a property without creating an Immer draft.\nfunction peek(draft: Drafted, prop: PropertyKey) {\n\tconst state = draft[DRAFT_STATE]\n\tconst source = state ? latest(state) : draft\n\treturn source[prop]\n}\n\nfunction readPropFromProto(state: ImmerState, source: any, prop: PropertyKey) {\n\tconst desc = getDescriptorFromProto(source, prop)\n\treturn desc\n\t\t? `value` in desc\n\t\t\t? desc.value\n\t\t\t: // This is a very special case, if the prop is a getter defined by the\n\t\t\t // prototype, we should invoke it with the draft as context!\n\t\t\t desc.get?.call(state.draft_)\n\t\t: undefined\n}\n\nfunction getDescriptorFromProto(\n\tsource: any,\n\tprop: PropertyKey\n): PropertyDescriptor | undefined {\n\t// 'in' checks proto!\n\tif (!(prop in source)) return undefined\n\tlet proto = Object.getPrototypeOf(source)\n\twhile (proto) {\n\t\tconst desc = Object.getOwnPropertyDescriptor(proto, prop)\n\t\tif (desc) return desc\n\t\tproto = Object.getPrototypeOf(proto)\n\t}\n\treturn undefined\n}\n\nexport function markChanged(state: ImmerState) {\n\tif (!state.modified_) {\n\t\tstate.modified_ = true\n\t\tif (state.parent_) {\n\t\t\tmarkChanged(state.parent_)\n\t\t}\n\t}\n}\n\nexport function prepareCopy(state: {base_: any; copy_: any}) {\n\tif (!state.copy_) {\n\t\tstate.copy_ = shallowCopy(state.base_)\n\t}\n}\n","import {\n\tIProduceWithPatches,\n\tIProduce,\n\tImmerState,\n\tDrafted,\n\tisDraftable,\n\tprocessResult,\n\tPatch,\n\tObjectish,\n\tDRAFT_STATE,\n\tDraft,\n\tPatchListener,\n\tisDraft,\n\tisMap,\n\tisSet,\n\tcreateProxyProxy,\n\tgetPlugin,\n\tdie,\n\thasProxies,\n\tenterScope,\n\trevokeScope,\n\tleaveScope,\n\tusePatchesInScope,\n\tgetCurrentScope,\n\tNOTHING,\n\tfreeze,\n\tcurrent\n} from \"../internal\"\n\ninterface ProducersFns {\n\tproduce: IProduce\n\tproduceWithPatches: IProduceWithPatches\n}\n\nexport class Immer implements ProducersFns {\n\tuseProxies_: boolean = hasProxies\n\n\tautoFreeze_: boolean = true\n\n\tconstructor(config?: {useProxies?: boolean; autoFreeze?: boolean}) {\n\t\tif (typeof config?.useProxies === \"boolean\")\n\t\t\tthis.setUseProxies(config!.useProxies)\n\t\tif (typeof config?.autoFreeze === \"boolean\")\n\t\t\tthis.setAutoFreeze(config!.autoFreeze)\n\t}\n\n\t/**\n\t * The `produce` function takes a value and a \"recipe function\" (whose\n\t * return value often depends on the base state). The recipe function is\n\t * free to mutate its first argument however it wants. All mutations are\n\t * only ever applied to a __copy__ of the base state.\n\t *\n\t * Pass only a function to create a \"curried producer\" which relieves you\n\t * from passing the recipe function every time.\n\t *\n\t * Only plain objects and arrays are made mutable. All other objects are\n\t * considered uncopyable.\n\t *\n\t * Note: This function is __bound__ to its `Immer` instance.\n\t *\n\t * @param {any} base - the initial state\n\t * @param {Function} producer - function that receives a proxy of the base state as first argument and which can be freely modified\n\t * @param {Function} patchListener - optional function that will be called with all the patches produced here\n\t * @returns {any} a new state, or the initial state if nothing was modified\n\t */\n\tproduce: IProduce = (base: any, recipe?: any, patchListener?: any) => {\n\t\t// curried invocation\n\t\tif (typeof base === \"function\" && typeof recipe !== \"function\") {\n\t\t\tconst defaultBase = recipe\n\t\t\trecipe = base\n\n\t\t\tconst self = this\n\t\t\treturn function curriedProduce(\n\t\t\t\tthis: any,\n\t\t\t\tbase = defaultBase,\n\t\t\t\t...args: any[]\n\t\t\t) {\n\t\t\t\treturn self.produce(base, (draft: Drafted) => recipe.call(this, draft, ...args)) // prettier-ignore\n\t\t\t}\n\t\t}\n\n\t\tif (typeof recipe !== \"function\") die(6)\n\t\tif (patchListener !== undefined && typeof patchListener !== \"function\")\n\t\t\tdie(7)\n\n\t\tlet result\n\n\t\t// Only plain objects, arrays, and \"immerable classes\" are drafted.\n\t\tif (isDraftable(base)) {\n\t\t\tconst scope = enterScope(this)\n\t\t\tconst proxy = createProxy(this, base, undefined)\n\t\t\tlet hasError = true\n\t\t\ttry {\n\t\t\t\tresult = recipe(proxy)\n\t\t\t\thasError = false\n\t\t\t} finally {\n\t\t\t\t// finally instead of catch + rethrow better preserves original stack\n\t\t\t\tif (hasError) revokeScope(scope)\n\t\t\t\telse leaveScope(scope)\n\t\t\t}\n\t\t\tif (typeof Promise !== \"undefined\" && result instanceof Promise) {\n\t\t\t\treturn result.then(\n\t\t\t\t\tresult => {\n\t\t\t\t\t\tusePatchesInScope(scope, patchListener)\n\t\t\t\t\t\treturn processResult(result, scope)\n\t\t\t\t\t},\n\t\t\t\t\terror => {\n\t\t\t\t\t\trevokeScope(scope)\n\t\t\t\t\t\tthrow error\n\t\t\t\t\t}\n\t\t\t\t)\n\t\t\t}\n\t\t\tusePatchesInScope(scope, patchListener)\n\t\t\treturn processResult(result, scope)\n\t\t} else if (!base || typeof base !== \"object\") {\n\t\t\tresult = recipe(base)\n\t\t\tif (result === NOTHING) return undefined\n\t\t\tif (result === undefined) result = base\n\t\t\tif (this.autoFreeze_) freeze(result, true)\n\t\t\treturn result\n\t\t} else die(21, base)\n\t}\n\n\tproduceWithPatches: IProduceWithPatches = (\n\t\targ1: any,\n\t\targ2?: any,\n\t\targ3?: any\n\t): any => {\n\t\tif (typeof arg1 === \"function\") {\n\t\t\treturn (state: any, ...args: any[]) =>\n\t\t\t\tthis.produceWithPatches(state, (draft: any) => arg1(draft, ...args))\n\t\t}\n\n\t\tlet patches: Patch[], inversePatches: Patch[]\n\t\tconst nextState = this.produce(arg1, arg2, (p: Patch[], ip: Patch[]) => {\n\t\t\tpatches = p\n\t\t\tinversePatches = ip\n\t\t})\n\t\treturn [nextState, patches!, inversePatches!]\n\t}\n\n\tcreateDraft<T extends Objectish>(base: T): Draft<T> {\n\t\tif (!isDraftable(base)) die(8)\n\t\tif (isDraft(base)) base = current(base)\n\t\tconst scope = enterScope(this)\n\t\tconst proxy = createProxy(this, base, undefined)\n\t\tproxy[DRAFT_STATE].isManual_ = true\n\t\tleaveScope(scope)\n\t\treturn proxy as any\n\t}\n\n\tfinishDraft<D extends Draft<any>>(\n\t\tdraft: D,\n\t\tpatchListener?: PatchListener\n\t): D extends Draft<infer T> ? T : never {\n\t\tconst state: ImmerState = draft && (draft as any)[DRAFT_STATE]\n\t\tif (__DEV__) {\n\t\t\tif (!state || !state.isManual_) die(9)\n\t\t\tif (state.finalized_) die(10)\n\t\t}\n\t\tconst {scope_: scope} = state\n\t\tusePatchesInScope(scope, patchListener)\n\t\treturn processResult(undefined, scope)\n\t}\n\n\t/**\n\t * Pass true to automatically freeze all copies created by Immer.\n\t *\n\t * By default, auto-freezing is enabled.\n\t */\n\tsetAutoFreeze(value: boolean) {\n\t\tthis.autoFreeze_ = value\n\t}\n\n\t/**\n\t * Pass true to use the ES2015 `Proxy` class when creating drafts, which is\n\t * always faster than using ES5 proxies.\n\t *\n\t * By default, feature detection is used, so calling this is rarely necessary.\n\t */\n\tsetUseProxies(value: boolean) {\n\t\tif (value && !hasProxies) {\n\t\t\tdie(20)\n\t\t}\n\t\tthis.useProxies_ = value\n\t}\n\n\tapplyPatches<T extends Objectish>(base: T, patches: Patch[]): T {\n\t\t// If a patch replaces the entire state, take that replacement as base\n\t\t// before applying patches\n\t\tlet i: number\n\t\tfor (i = patches.length - 1; i >= 0; i--) {\n\t\t\tconst patch = patches[i]\n\t\t\tif (patch.path.length === 0 && patch.op === \"replace\") {\n\t\t\t\tbase = patch.value\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\n\t\tconst applyPatchesImpl = getPlugin(\"Patches\").applyPatches_\n\t\tif (isDraft(base)) {\n\t\t\t// N.B: never hits if some patch a replacement, patches are never drafts\n\t\t\treturn applyPatchesImpl(base, patches) as any\n\t\t}\n\t\t// Otherwise, produce a copy of the base state.\n\t\treturn this.produce(base, (draft: Drafted) =>\n\t\t\tapplyPatchesImpl(draft, patches.slice(i + 1))\n\t\t) as any\n\t}\n}\n\nexport function createProxy<T extends Objectish>(\n\timmer: Immer,\n\tvalue: T,\n\tparent?: ImmerState\n): Drafted<T, ImmerState> {\n\t// precondition: createProxy should be guarded by isDraftable, so we know we can safely draft\n\tconst draft: Drafted = isMap(value)\n\t\t? getPlugin(\"MapSet\").proxyMap_(value, parent)\n\t\t: isSet(value)\n\t\t? getPlugin(\"MapSet\").proxySet_(value, parent)\n\t\t: immer.useProxies_\n\t\t? createProxyProxy(value, parent)\n\t\t: getPlugin(\"ES5\").createES5Proxy_(value, parent)\n\n\tconst scope = parent ? parent.scope_ : getCurrentScope()\n\tscope.drafts_.push(draft)\n\treturn draft\n}\n","import {\n\tdie,\n\tisDraft,\n\tshallowCopy,\n\teach,\n\tDRAFT_STATE,\n\tget,\n\tset,\n\tImmerState,\n\tisDraftable,\n\tArchtype,\n\tgetArchtype,\n\tgetPlugin\n} from \"../internal\"\n\n/** Takes a snapshot of the current state of a draft and finalizes it (but without freezing). This is a great utility to print the current state during debugging (no Proxies in the way). The output of current can also be safely leaked outside the producer. */\nexport function current<T>(value: T): T\nexport function current(value: any): any {\n\tif (!isDraft(value)) die(22, value)\n\treturn currentImpl(value)\n}\n\nfunction currentImpl(value: any): any {\n\tif (!isDraftable(value)) return value\n\tconst state: ImmerState | undefined = value[DRAFT_STATE]\n\tlet copy: any\n\tconst archType = getArchtype(value)\n\tif (state) {\n\t\tif (\n\t\t\t!state.modified_ &&\n\t\t\t(state.type_ < 4 || !getPlugin(\"ES5\").hasChanges_(state as any))\n\t\t)\n\t\t\treturn state.base_\n\t\t// Optimization: avoid generating new drafts during copying\n\t\tstate.finalized_ = true\n\t\tcopy = copyHelper(value, archType)\n\t\tstate.finalized_ = false\n\t} else {\n\t\tcopy = copyHelper(value, archType)\n\t}\n\n\teach(copy, (key, childValue) => {\n\t\tif (state && get(state.base_, key) === childValue) return // no need to copy or search in something that didn't change\n\t\tset(copy, key, currentImpl(childValue))\n\t})\n\t// In the future, we might consider freezing here, based on the current settings\n\treturn archType === Archtype.Set ? new Set(copy) : copy\n}\n\nfunction copyHelper(value: any, archType: number): any {\n\t// creates a shallow copy, even if it is a map or set\n\tswitch (archType) {\n\t\tcase Archtype.Map:\n\t\t\treturn new Map(value)\n\t\tcase Archtype.Set:\n\t\t\t// Set will be cloned as array temporarily, so that we can replace individual items\n\t\t\treturn Array.from(value)\n\t}\n\treturn shallowCopy(value)\n}\n","import {\n\tImmerState,\n\tDrafted,\n\tES5ArrayState,\n\tES5ObjectState,\n\teach,\n\thas,\n\tisDraft,\n\tlatest,\n\tDRAFT_STATE,\n\tis,\n\tloadPlugin,\n\tImmerScope,\n\tProxyType,\n\tgetCurrentScope,\n\tdie,\n\tmarkChanged,\n\tobjectTraps,\n\townKeys,\n\tgetOwnPropertyDescriptors\n} from \"../internal\"\n\ntype ES5State = ES5ArrayState | ES5ObjectState\n\nexport function enableES5() {\n\tfunction willFinalizeES5_(\n\t\tscope: ImmerScope,\n\t\tresult: any,\n\t\tisReplaced: boolean\n\t) {\n\t\tif (!isReplaced) {\n\t\t\tif (scope.patches_) {\n\t\t\t\tmarkChangesRecursively(scope.drafts_![0])\n\t\t\t}\n\t\t\t// This is faster when we don't care about which attributes changed.\n\t\t\tmarkChangesSweep(scope.drafts_)\n\t\t}\n\t\t// When a child draft is returned, look for changes.\n\t\telse if (\n\t\t\tisDraft(result) &&\n\t\t\t(result[DRAFT_STATE] as ES5State).scope_ === scope\n\t\t) {\n\t\t\tmarkChangesSweep(scope.drafts_)\n\t\t}\n\t}\n\n\tfunction createES5Draft(isArray: boolean, base: any) {\n\t\tif (isArray) {\n\t\t\tconst draft = new Array(base.length)\n\t\t\tfor (let i = 0; i < base.length; i++)\n\t\t\t\tObject.defineProperty(draft, \"\" + i, proxyProperty(i, true))\n\t\t\treturn draft\n\t\t} else {\n\t\t\tconst descriptors = getOwnPropertyDescriptors(base)\n\t\t\tdelete descriptors[DRAFT_STATE as any]\n\t\t\tconst keys = ownKeys(descriptors)\n\t\t\tfor (let i = 0; i < keys.length; i++) {\n\t\t\t\tconst key: any = keys[i]\n\t\t\t\tdescriptors[key] = proxyProperty(\n\t\t\t\t\tkey,\n\t\t\t\t\tisArray || !!descriptors[key].enumerable\n\t\t\t\t)\n\t\t\t}\n\t\t\treturn Object.create(Object.getPrototypeOf(base), descriptors)\n\t\t}\n\t}\n\n\tfunction createES5Proxy_<T>(\n\t\tbase: T,\n\t\tparent?: ImmerState\n\t): Drafted<T, ES5ObjectState | ES5ArrayState> {\n\t\tconst isArray = Array.isArray(base)\n\t\tconst draft = createES5Draft(isArray, base)\n\n\t\tconst state: ES5ObjectState | ES5ArrayState = {\n\t\t\ttype_: isArray ? ProxyType.ES5Array : (ProxyType.ES5Object as any),\n\t\t\tscope_: parent ? parent.scope_ : getCurrentScope(),\n\t\t\tmodified_: false,\n\t\t\tfinalized_: false,\n\t\t\tassigned_: {},\n\t\t\tparent_: parent,\n\t\t\t// base is the object we are drafting\n\t\t\tbase_: base,\n\t\t\t// draft is the draft object itself, that traps all reads and reads from either the base (if unmodified) or copy (if modified)\n\t\t\tdraft_: draft,\n\t\t\tcopy_: null,\n\t\t\trevoked_: false,\n\t\t\tisManual_: false\n\t\t}\n\n\t\tObject.defineProperty(draft, DRAFT_STATE, {\n\t\t\tvalue: state,\n\t\t\t// enumerable: false <- the default\n\t\t\twritable: true\n\t\t})\n\t\treturn draft\n\t}\n\n\t// property descriptors are recycled to make sure we don't create a get and set closure per property,\n\t// but share them all instead\n\tconst descriptors: {[prop: string]: PropertyDescriptor} = {}\n\n\tfunction proxyProperty(\n\t\tprop: string | number,\n\t\tenumerable: boolean\n\t): PropertyDescriptor {\n\t\tlet desc = descriptors[prop]\n\t\tif (desc) {\n\t\t\tdesc.enumerable = enumerable\n\t\t} else {\n\t\t\tdescriptors[prop] = desc = {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable,\n\t\t\t\tget(this: any) {\n\t\t\t\t\tconst state = this[DRAFT_STATE]\n\t\t\t\t\tif (__DEV__) assertUnrevoked(state)\n\t\t\t\t\t// @ts-ignore\n\t\t\t\t\treturn objectTraps.get(state, prop)\n\t\t\t\t},\n\t\t\t\tset(this: any, value) {\n\t\t\t\t\tconst state = this[DRAFT_STATE]\n\t\t\t\t\tif (__DEV__) assertUnrevoked(state)\n\t\t\t\t\t// @ts-ignore\n\t\t\t\t\tobjectTraps.set(state, prop, value)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn desc\n\t}\n\n\t// This looks expensive, but only proxies are visited, and only objects without known changes are scanned.\n\tfunction markChangesSweep(drafts: Drafted<any, ImmerState>[]) {\n\t\t// The natural order of drafts in the `scope` array is based on when they\n\t\t// were accessed. By processing drafts in reverse natural order, we have a\n\t\t// better chance of processing leaf nodes first. When a leaf node is known to\n\t\t// have changed, we can avoid any traversal of its ancestor nodes.\n\t\tfor (let i = drafts.length - 1; i >= 0; i--) {\n\t\t\tconst state: ES5State = drafts[i][DRAFT_STATE]\n\t\t\tif (!state.modified_) {\n\t\t\t\tswitch (state.type_) {\n\t\t\t\t\tcase ProxyType.ES5Array:\n\t\t\t\t\t\tif (hasArrayChanges(state)) markChanged(state)\n\t\t\t\t\t\tbreak\n\t\t\t\t\tcase ProxyType.ES5Object:\n\t\t\t\t\t\tif (hasObjectChanges(state)) markChanged(state)\n\t\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction markChangesRecursively(object: any) {\n\t\tif (!object || typeof object !== \"object\") return\n\t\tconst state: ES5State | undefined = object[DRAFT_STATE]\n\t\tif (!state) return\n\t\tconst {base_, draft_, assigned_, type_} = state\n\t\tif (type_ === ProxyType.ES5Object) {\n\t\t\t// Look for added keys.\n\t\t\t// probably there is a faster way to detect changes, as sweep + recurse seems to do some\n\t\t\t// unnecessary work.\n\t\t\t// also: probably we can store the information we detect here, to speed up tree finalization!\n\t\t\teach(draft_, key => {\n\t\t\t\tif ((key as any) === DRAFT_STATE) return\n\t\t\t\t// The `undefined` check is a fast path for pre-existing keys.\n\t\t\t\tif ((base_ as any)[key] === undefined && !has(base_, key)) {\n\t\t\t\t\tassigned_[key] = true\n\t\t\t\t\tmarkChanged(state)\n\t\t\t\t} else if (!assigned_[key]) {\n\t\t\t\t\t// Only untouched properties trigger recursion.\n\t\t\t\t\tmarkChangesRecursively(draft_[key])\n\t\t\t\t}\n\t\t\t})\n\t\t\t// Look for removed keys.\n\t\t\teach(base_, key => {\n\t\t\t\t// The `undefined` check is a fast path for pre-existing keys.\n\t\t\t\tif (draft_[key] === undefined && !has(draft_, key)) {\n\t\t\t\t\tassigned_[key] = false\n\t\t\t\t\tmarkChanged(state)\n\t\t\t\t}\n\t\t\t})\n\t\t} else if (type_ === ProxyType.ES5Array) {\n\t\t\tif (hasArrayChanges(state as ES5ArrayState)) {\n\t\t\t\tmarkChanged(state)\n\t\t\t\tassigned_.length = true\n\t\t\t}\n\n\t\t\tif (draft_.length < base_.length) {\n\t\t\t\tfor (let i = draft_.length; i < base_.length; i++) assigned_[i] = false\n\t\t\t} else {\n\t\t\t\tfor (let i = base_.length; i < draft_.length; i++) assigned_[i] = true\n\t\t\t}\n\n\t\t\t// Minimum count is enough, the other parts has been processed.\n\t\t\tconst min = Math.min(draft_.length, base_.length)\n\n\t\t\tfor (let i = 0; i < min; i++) {\n\t\t\t\t// Only untouched indices trigger recursion.\n\t\t\t\tif (assigned_[i] === undefined) markChangesRecursively(draft_[i])\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction hasObjectChanges(state: ES5ObjectState) {\n\t\tconst {base_, draft_} = state\n\n\t\t// Search for added keys and changed keys. Start at the back, because\n\t\t// non-numeric keys are ordered by time of definition on the object.\n\t\tconst keys = ownKeys(draft_)\n\t\tfor (let i = keys.length - 1; i >= 0; i--) {\n\t\t\tconst key: any = keys[i]\n\t\t\tif (key === DRAFT_STATE) continue\n\t\t\tconst baseValue = base_[key]\n\t\t\t// The `undefined` check is a fast path for pre-existing keys.\n\t\t\tif (baseValue === undefined && !has(base_, key)) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\t// Once a base key is deleted, future changes go undetected, because its\n\t\t\t// descriptor is erased. This branch detects any missed changes.\n\t\t\telse {\n\t\t\t\tconst value = draft_[key]\n\t\t\t\tconst state: ImmerState = value && value[DRAFT_STATE]\n\t\t\t\tif (state ? state.base_ !== baseValue : !is(value, baseValue)) {\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// At this point, no keys were added or changed.\n\t\t// Compare key count to determine if keys were deleted.\n\t\tconst baseIsDraft = !!base_[DRAFT_STATE as any]\n\t\treturn keys.length !== ownKeys(base_).length + (baseIsDraft ? 0 : 1) // + 1 to correct for DRAFT_STATE\n\t}\n\n\tfunction hasArrayChanges(state: ES5ArrayState) {\n\t\tconst {draft_} = state\n\t\tif (draft_.length !== state.base_.length) return true\n\t\t// See #116\n\t\t// If we first shorten the length, our array interceptors will be removed.\n\t\t// If after that new items are added, result in the same original length,\n\t\t// those last items will have no intercepting property.\n\t\t// So if there is no own descriptor on the last position, we know that items were removed and added\n\t\t// N.B.: splice, unshift, etc only shift values around, but not prop descriptors, so we only have to check\n\t\t// the last one\n\t\tconst descriptor = Object.getOwnPropertyDescriptor(\n\t\t\tdraft_,\n\t\t\tdraft_.length - 1\n\t\t)\n\t\t// descriptor can be null, but only for newly created sparse arrays, eg. new Array(10)\n\t\tif (descriptor && !descriptor.get) return true\n\t\t// For all other cases, we don't have to compare, as they would have been picked up by the index setters\n\t\treturn false\n\t}\n\n\tfunction hasChanges_(state: ES5State) {\n\t\treturn state.type_ === ProxyType.ES5Object\n\t\t\t? hasObjectChanges(state)\n\t\t\t: hasArrayChanges(state)\n\t}\n\n\tfunction assertUnrevoked(state: any /*ES5State | MapState | SetState*/) {\n\t\tif (state.revoked_) die(3, JSON.stringify(latest(state)))\n\t}\n\n\tloadPlugin(\"ES5\", {\n\t\tcreateES5Proxy_,\n\t\twillFinalizeES5_,\n\t\thasChanges_\n\t})\n}\n","import {immerable} from \"../immer\"\nimport {\n\tImmerState,\n\tPatch,\n\tSetState,\n\tES5ArrayState,\n\tProxyArrayState,\n\tMapState,\n\tES5ObjectState,\n\tProxyObjectState,\n\tPatchPath,\n\tget,\n\teach,\n\thas,\n\tgetArchtype,\n\tisSet,\n\tisMap,\n\tloadPlugin,\n\tProxyType,\n\tArchtype,\n\tdie,\n\tisDraft,\n\tisDraftable,\n\tNOTHING\n} from \"../internal\"\n\nexport function enablePatches() {\n\tconst REPLACE = \"replace\"\n\tconst ADD = \"add\"\n\tconst REMOVE = \"remove\"\n\n\tfunction generatePatches_(\n\t\tstate: ImmerState,\n\t\tbasePath: PatchPath,\n\t\tpatches: Patch[],\n\t\tinversePatches: Patch[]\n\t): void {\n\t\tswitch (state.type_) {\n\t\t\tcase ProxyType.ProxyObject:\n\t\t\tcase ProxyType.ES5Object:\n\t\t\tcase ProxyType.Map:\n\t\t\t\treturn generatePatchesFromAssigned(\n\t\t\t\t\tstate,\n\t\t\t\t\tbasePath,\n\t\t\t\t\tpatches,\n\t\t\t\t\tinversePatches\n\t\t\t\t)\n\t\t\tcase ProxyType.ES5Array:\n\t\t\tcase ProxyType.ProxyArray:\n\t\t\t\treturn generateArrayPatches(state, basePath, patches, inversePatches)\n\t\t\tcase ProxyType.Set:\n\t\t\t\treturn generateSetPatches(\n\t\t\t\t\t(state as any) as SetState,\n\t\t\t\t\tbasePath,\n\t\t\t\t\tpatches,\n\t\t\t\t\tinversePatches\n\t\t\t\t)\n\t\t}\n\t}\n\n\tfunction generateArrayPatches(\n\t\tstate: ES5ArrayState | ProxyArrayState,\n\t\tbasePath: PatchPath,\n\t\tpatches: Patch[],\n\t\tinversePatches: Patch[]\n\t) {\n\t\tlet {base_, assigned_} = state\n\t\tlet copy_ = state.copy_!\n\n\t\t// Reduce complexity by ensuring `base` is never longer.\n\t\tif (copy_.length < base_.length) {\n\t\t\t// @ts-ignore\n\t\t\t;[base_, copy_] = [copy_, base_]\n\t\t\t;[patches, inversePatches] = [inversePatches, patches]\n\t\t}\n\n\t\t// Process replaced indices.\n\t\tfor (let i = 0; i < base_.length; i++) {\n\t\t\tif (assigned_[i] && copy_[i] !== base_[i]) {\n\t\t\t\tconst path = basePath.concat([i])\n\t\t\t\tpatches.push({\n\t\t\t\t\top: REPLACE,\n\t\t\t\t\tpath,\n\t\t\t\t\t// Need to maybe clone it, as it can in fact be the original value\n\t\t\t\t\t// due to the base/copy inversion at the start of this function\n\t\t\t\t\tvalue: clonePatchValueIfNeeded(copy_[i])\n\t\t\t\t})\n\t\t\t\tinversePatches.push({\n\t\t\t\t\top: REPLACE,\n\t\t\t\t\tpath,\n\t\t\t\t\tvalue: clonePatchValueIfNeeded(base_[i])\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\n\t\t// Process added indices.\n\t\tfor (let i = base_.length; i < copy_.length; i++) {\n\t\t\tconst path = basePath.concat([i])\n\t\t\tpatches.push({\n\t\t\t\top: ADD,\n\t\t\t\tpath,\n\t\t\t\t// Need to maybe clone it, as it can in fact be the original value\n\t\t\t\t// due to the base/copy inversion at the start of this function\n\t\t\t\tvalue: clonePatchValueIfNeeded(copy_[i])\n\t\t\t})\n\t\t}\n\t\tif (base_.length < copy_.length) {\n\t\t\tinversePatches.push({\n\t\t\t\top: REPLACE,\n\t\t\t\tpath: basePath.concat([\"length\"]),\n\t\t\t\tvalue: base_.length\n\t\t\t})\n\t\t}\n\t}\n\n\t// This is used for both Map objects and normal objects.\n\tfunction generatePatchesFromAssigned(\n\t\tstate: MapState | ES5ObjectState | ProxyObjectState,\n\t\tbasePath: PatchPath,\n\t\tpatches: Patch[],\n\t\tinversePatches: Patch[]\n\t) {\n\t\tconst {base_, copy_} = state\n\t\teach(state.assigned_!, (key, assignedValue) => {\n\t\t\tconst origValue = get(base_, key)\n\t\t\tconst value = get(copy_!, key)\n\t\t\tconst op = !assignedValue ? REMOVE : has(base_, key) ? REPLACE : ADD\n\t\t\tif (origValue === value && op === REPLACE) return\n\t\t\tconst path = basePath.concat(key as any)\n\t\t\tpatches.push(op === REMOVE ? {op, path} : {op, path, value})\n\t\t\tinversePatches.push(\n\t\t\t\top === ADD\n\t\t\t\t\t? {op: REMOVE, path}\n\t\t\t\t\t: op === REMOVE\n\t\t\t\t\t? {op: ADD, path, value: clonePatchValueIfNeeded(origValue)}\n\t\t\t\t\t: {op: REPLACE, path, value: clonePatchValueIfNeeded(origValue)}\n\t\t\t)\n\t\t})\n\t}\n\n\tfunction generateSetPatches(\n\t\tstate: SetState,\n\t\tbasePath: PatchPath,\n\t\tpatches: Patch[],\n\t\tinversePatches: Patch[]\n\t) {\n\t\tlet {base_, copy_} = state\n\n\t\tlet i = 0\n\t\tbase_.forEach((value: any) => {\n\t\t\tif (!copy_!.has(value)) {\n\t\t\t\tconst path = basePath.concat([i])\n\t\t\t\tpatches.push({\n\t\t\t\t\top: REMOVE,\n\t\t\t\t\tpath,\n\t\t\t\t\tvalue\n\t\t\t\t})\n\t\t\t\tinversePatches.unshift({\n\t\t\t\t\top: ADD,\n\t\t\t\t\tpath,\n\t\t\t\t\tvalue\n\t\t\t\t})\n\t\t\t}\n\t\t\ti++\n\t\t})\n\t\ti = 0\n\t\tcopy_!.forEach((value: any) => {\n\t\t\tif (!base_.has(value)) {\n\t\t\t\tconst path = basePath.concat([i])\n\t\t\t\tpatches.push({\n\t\t\t\t\top: ADD,\n\t\t\t\t\tpath,\n\t\t\t\t\tvalue\n\t\t\t\t})\n\t\t\t\tinversePatches.unshift({\n\t\t\t\t\top: REMOVE,\n\t\t\t\t\tpath,\n\t\t\t\t\tvalue\n\t\t\t\t})\n\t\t\t}\n\t\t\ti++\n\t\t})\n\t}\n\n\tfunction generateReplacementPatches_(\n\t\trootState: ImmerState,\n\t\treplacement: any,\n\t\tpatches: Patch[],\n\t\tinversePatches: Patch[]\n\t): void {\n\t\tpatches.push({\n\t\t\top: REPLACE,\n\t\t\tpath: [],\n\t\t\tvalue: replacement === NOTHING ? undefined : replacement\n\t\t})\n\t\tinversePatches.push({\n\t\t\top: REPLACE,\n\t\t\tpath: [],\n\t\t\tvalue: rootState.base_\n\t\t})\n\t}\n\n\tfunction applyPatches_<T>(draft: T, patches: Patch[]): T {\n\t\tpatches.forEach(patch => {\n\t\t\tconst {path, op} = patch\n\n\t\t\tlet base: any = draft\n\t\t\tfor (let i = 0; i < path.length - 1; i++) {\n\t\t\t\tconst parentType = getArchtype(base)\n\t\t\t\tconst p = \"\" + path[i]\n\t\t\t\t// See #738, avoid prototype pollution\n\t\t\t\tif (\n\t\t\t\t\t(parentType === Archtype.Object || parentType === Archtype.Array) &&\n\t\t\t\t\t(p === \"__proto__\" || p === \"constructor\")\n\t\t\t\t)\n\t\t\t\t\tdie(24)\n\t\t\t\tif (typeof base === \"function\" && p === \"prototype\") die(24)\n\t\t\t\tbase = get(base, p)\n\t\t\t\tif (typeof base !== \"object\") die(15, path.join(\"/\"))\n\t\t\t}\n\n\t\t\tconst type = getArchtype(base)\n\t\t\tconst value = deepClonePatchValue(patch.value) // used to clone patch to ensure original patch is not modified, see #411\n\t\t\tconst key = path[path.length - 1]\n\t\t\tswitch (op) {\n\t\t\t\tcase REPLACE:\n\t\t\t\t\tswitch (type) {\n\t\t\t\t\t\tcase Archtype.Map:\n\t\t\t\t\t\t\treturn base.set(key, value)\n\t\t\t\t\t\t/* istanbul ignore next */\n\t\t\t\t\t\tcase Archtype.Set:\n\t\t\t\t\t\t\tdie(16)\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t// if value is an object, then it's assigned by reference\n\t\t\t\t\t\t\t// in the following add or remove ops, the value field inside the patch will also be modifyed\n\t\t\t\t\t\t\t// so we use value from the cloned patch\n\t\t\t\t\t\t\t// @ts-ignore\n\t\t\t\t\t\t\treturn (base[key] = value)\n\t\t\t\t\t}\n\t\t\t\tcase ADD:\n\t\t\t\t\tswitch (type) {\n\t\t\t\t\t\tcase Archtype.Array:\n\t\t\t\t\t\t\treturn base.splice(key as any, 0, value)\n\t\t\t\t\t\tcase Archtype.Map:\n\t\t\t\t\t\t\treturn base.set(key, value)\n\t\t\t\t\t\tcase Archtype.Set:\n\t\t\t\t\t\t\treturn base.add(value)\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\treturn (base[key] = value)\n\t\t\t\t\t}\n\t\t\t\tcase REMOVE:\n\t\t\t\t\tswitch (type) {\n\t\t\t\t\t\tcase Archtype.Array:\n\t\t\t\t\t\t\treturn base.splice(key as any, 1)\n\t\t\t\t\t\tcase Archtype.Map:\n\t\t\t\t\t\t\treturn base.delete(key)\n\t\t\t\t\t\tcase Archtype.Set:\n\t\t\t\t\t\t\treturn base.delete(patch.value)\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\treturn delete base[key]\n\t\t\t\t\t}\n\t\t\t\tdefault:\n\t\t\t\t\tdie(17, op)\n\t\t\t}\n\t\t})\n\n\t\treturn draft\n\t}\n\n\t// optimize: this is quite a performance hit, can we detect intelligently when it is needed?\n\t// E.g. auto-draft when new objects from outside are assigned and modified?\n\t// (See failing test when deepClone just returns obj)\n\tfunction deepClonePatchValue<T>(obj: T): T\n\tfunction deepClonePatchValue(obj: any) {\n\t\tif (!isDraftable(obj)) return obj\n\t\tif (Array.isArray(obj)) return obj.map(deepClonePatchValue)\n\t\tif (isMap(obj))\n\t\t\treturn new Map(\n\t\t\t\tArray.from(obj.entries()).map(([k, v]) => [k, deepClonePatchValue(v)])\n\t\t\t)\n\t\tif (isSet(obj)) return new Set(Array.from(obj).map(deepClonePatchValue))\n\t\tconst cloned = Object.create(Object.getPrototypeOf(obj))\n\t\tfor (const key in obj) cloned[key] = deepClonePatchValue(obj[key])\n\t\tif (has(obj, immerable)) cloned[immerable] = obj[immerable]\n\t\treturn cloned\n\t}\n\n\tfunction clonePatchValueIfNeeded<T>(obj: T): T {\n\t\tif (isDraft(obj)) {\n\t\t\treturn deepClonePatchValue(obj)\n\t\t} else return obj\n\t}\n\n\tloadPlugin(\"Patches\", {\n\t\tapplyPatches_,\n\t\tgeneratePatches_,\n\t\tgenerateReplacementPatches_\n\t})\n}\n","import {\n\tIProduce,\n\tIProduceWithPatches,\n\tImmer,\n\tDraft,\n\tImmutable\n} from \"./internal\"\n\nexport {\n\tDraft,\n\tImmutable,\n\tPatch,\n\tPatchListener,\n\toriginal,\n\tcurrent,\n\tisDraft,\n\tisDraftable,\n\tNOTHING as nothing,\n\tDRAFTABLE as immerable,\n\tfreeze\n} from \"./internal\"\n\nconst immer = new Immer()\n\n/**\n * The `produce` function takes a value and a \"recipe function\" (whose\n * return value often depends on the base state). The recipe function is\n * free to mutate its first argument however it wants. All mutations are\n * only ever applied to a __copy__ of the base state.\n *\n * Pass only a function to create a \"curried producer\" which relieves you\n * from passing the recipe function every time.\n *\n * Only plain objects and arrays are made mutable. All other objects are\n * considered uncopyable.\n *\n * Note: This function is __bound__ to its `Immer` instance.\n *\n * @param {any} base - the initial state\n * @param {Function} producer - function that receives a proxy of the base state as first argument and which can be freely modified\n * @param {Function} patchListener - optional function that will be called with all the patches produced here\n * @returns {any} a new state, or the initial state if nothing was modified\n */\nexport const produce: IProduce = immer.produce\nexport default produce\n\n/**\n * Like `produce`, but `produceWithPatches` always returns a tuple\n * [nextState, patches, inversePatches] (instead of just the next state)\n */\nexport const produceWithPatches: IProduceWithPatches = immer.produceWithPatches.bind(\n\timmer\n)\n\n/**\n * Pass true to automatically freeze all copies created by Immer.\n *\n * Always freeze by default, even in production mode\n */\nexport const setAutoFreeze = immer.setAutoFreeze.bind(immer)\n\n/**\n * Pass true to use the ES2015 `Proxy` class when creating drafts, which is\n * always faster than using ES5 proxies.\n *\n * By default, feature detection is used, so calling this is rarely necessary.\n */\nexport const setUseProxies = immer.setUseProxies.bind(immer)\n\n/**\n * Apply an array of Immer patches to the first argument.\n *\n * This function is a producer, which means copy-on-write is in effect.\n */\nexport const applyPatches = immer.applyPatches.bind(immer)\n\n/**\n * Create an Immer draft from the given base state, which may be a draft itself.\n * The draft can be modified until you finalize it with the `finishDraft` function.\n */\nexport const createDraft = immer.createDraft.bind(immer)\n\n/**\n * Finalize an Immer draft from a `createDraft` call, returning the base state\n * (if no changes were made) or a modified copy. The draft must *not* be\n * mutated afterwards.\n *\n * Pass a function as the 2nd argument to generate Immer patches based on the\n * changes that were made.\n */\nexport const finishDraft = immer.finishDraft.bind(immer)\n\n/**\n * This function is actually a no-op, but can be used to cast an immutable type\n * to an draft type and make TypeScript happy\n *\n * @param value\n */\nexport function castDraft<T>(value: T): Draft<T> {\n\treturn value as any\n}\n\n/**\n * This function is actually a no-op, but can be used to cast a mutable type\n * to an immutable type and make TypeScript happy\n * @param value\n */\nexport function castImmutable<T>(value: T): Immutable<T> {\n\treturn value as any\n}\n\nexport {Immer}\n\nexport {enableES5} from \"./plugins/es5\"\nexport {enablePatches} from \"./plugins/patches\"\nexport {enableMapSet} from \"./plugins/mapset\"\nexport {enableAllPlugins} from \"./plugins/all\"\n","// Should be no imports here!\n\n// Some things that should be evaluated before all else...\n\n// We only want to know if non-polyfilled symbols are available\nconst hasSymbol =\n\ttypeof Symbol !== \"undefined\" && typeof Symbol(\"x\") === \"symbol\"\nexport const hasMap = typeof Map !== \"undefined\"\nexport const hasSet = typeof Set !== \"undefined\"\nexport const hasProxies =\n\ttypeof Proxy !== \"undefined\" &&\n\ttypeof Proxy.revocable !== \"undefined\" &&\n\ttypeof Reflect !== \"undefined\"\n\n/**\n * The sentinel value returned by producers to replace the draft with undefined.\n */\nexport const NOTHING: Nothing = hasSymbol\n\t? Symbol.for(\"immer-nothing\")\n\t: ({[\"immer-nothing\"]: true} as any)\n\n/**\n * To let Immer treat your class instances as plain immutable objects\n * (albeit with a custom prototype), you must define either an instance property\n * or a static property on each of your custom classes.\n *\n * Otherwise, your class instance will never be drafted, which means it won't be\n * safe to mutate in a produce callback.\n */\nexport const DRAFTABLE: unique symbol = hasSymbol\n\t? Symbol.for(\"immer-draftable\")\n\t: (\"__$immer_draftable\" as any)\n\nexport const DRAFT_STATE: unique symbol = hasSymbol\n\t? Symbol.for(\"immer-state\")\n\t: (\"__$immer_state\" as any)\n\n// Even a polyfilled Symbol might provide Symbol.iterator\nexport const iteratorSymbol: typeof Symbol.iterator =\n\t(typeof Symbol != \"undefined\" && Symbol.iterator) || (\"@@iterator\" as any)\n\n/** Use a class type for `nothing` so its type is unique */\nexport class Nothing {\n\t// This lets us do `Exclude<T, Nothing>`\n\t// @ts-ignore\n\tprivate _!: unique symbol\n}\n","\n// `victory-vendor/d3-shape` (CommonJS)\n// See upstream license: https://github.com/d3/d3-shape/blob/main/LICENSE\n//\n// This file only exists for tooling that doesn't work yet with package.json:exports\n// by proxying through the CommonJS version.\nmodule.exports = require(\"./lib/d3-shape\");\n","import * as React from 'react';\nimport { BaseButton, Button } from '../../Button';\nimport { ITheme, IStyle } from '../../Styling';\nimport { IRefObject, IStyleFunctionOrObject } from '../../Utilities';\nimport { IIconProps } from '../../Icon';\n\n/**\n * {@docCategory MessageBar}\n */\nexport interface IMessageBar {}\n\n/**\n * {@docCategory MessageBar}\n */\nexport interface IMessageBarProps extends React.HTMLAttributes<HTMLElement> {\n /**\n * Optional callback to access the IMessageBar interface. Use this instead of ref for accessing\n * the public methods and properties of the component.\n */\n componentRef?: IRefObject<IMessageBar>;\n\n /**\n * The type of MessageBar to render.\n * @defaultvalue MessageBarType.info\n */\n messageBarType?: MessageBarType;\n\n /**\n * The actions you want to show on the other side.\n */\n actions?: JSX.Element;\n\n /**\n * A description of the message bar for the benefit of screen readers.\n * @deprecated Use native prop `aria-label` instead.\n */\n ariaLabel?: string;\n\n /**\n * Whether the message bar has a dismiss button and its callback.\n * If null, we don't show a dismiss button.\n * @defaultvalue null\n */\n // eslint-disable-next-line deprecation/deprecation\n onDismiss?: (ev?: React.MouseEvent<HTMLElement | BaseButton | Button>) => any;\n\n /**\n * Determines if the message bar is multi lined.\n * If false, and the text overflows over buttons or to another line, it is clipped.\n * @defaultvalue true\n */\n isMultiline?: boolean;\n\n /**\n * Aria label on dismiss button if onDismiss is defined.\n */\n dismissButtonAriaLabel?: string;\n\n /**\n * Determines if the message bar text is truncated.\n * If true, a button will render to toggle between a single line view and multiline view.\n * This prop is for single line message bars with no buttons only in a limited space scenario.\n * @defaultvalue false\n */\n truncated?: boolean;\n\n /**\n * Aria label on overflow button if truncated is defined.\n */\n overflowButtonAriaLabel?: string;\n\n /**\n * Additional CSS class(es) to apply to the MessageBar.\n */\n className?: string;\n\n /**\n * Theme (provided through customization.)\n */\n theme?: ITheme;\n\n /**\n * Call to provide customized styling that will layer on top of the variant rules.\n */\n styles?: IStyleFunctionOrObject<IMessageBarStyleProps, IMessageBarStyles>;\n\n /**\n * Custom icon prop to replace the dismiss icon.\n * If unset, default will be the Fabric Clear icon.\n */\n dismissIconProps?: IIconProps;\n\n /**\n * Custom icon prop to replace the message bar icon.\n * If unset, default will be the icon set by messageBarType.\n */\n messageBarIconProps?: IIconProps;\n}\n\n/**\n * {@docCategory MessageBar}\n */\nexport interface IMessageBarStyleProps {\n /**\n * Theme (provided through customization).\n */\n theme: ITheme;\n\n /**\n * Additional CSS class(es).\n */\n className?: string;\n\n /**\n * Type of the MessageBar.\n */\n messageBarType?: MessageBarType;\n\n /**\n * Whether the MessageBar contains a dismiss button.\n */\n onDismiss?: boolean;\n\n /**\n * Whether the text is truncated.\n */\n truncated?: boolean;\n\n /**\n * Whether the MessageBar is rendered in multi line (as opposed to single line) mode.\n */\n isMultiline?: boolean;\n\n /**\n * Whether the single line MessageBar is being expanded.\n */\n expandSingleLine?: boolean;\n\n /**\n * Whether the MessageBar contains any action elements.\n */\n actions?: boolean;\n}\n\n/**\n * {@docCategory MessageBar}\n */\nexport interface IMessageBarStyles {\n /**\n * Style set for the root element.\n */\n root?: IStyle;\n\n /**\n * Style set for the element containing the icon, text, and optional dismiss button.\n */\n content?: IStyle;\n\n /**\n * Style set for the element containing the icon.\n */\n iconContainer?: IStyle;\n\n /**\n * Style set for the icon.\n */\n icon?: IStyle;\n\n /**\n * Style set for the element containing the text.\n */\n text?: IStyle;\n\n /**\n * Style set for the text.\n */\n innerText?: IStyle;\n\n /**\n * Style set for the optional dismiss button.\n */\n dismissal?: IStyle;\n\n /**\n * Style set for the icon used to expand and collapse the MessageBar.\n */\n expand?: IStyle;\n\n /**\n * Style set for the element containing the dismiss button.\n */\n dismissSingleLine?: IStyle;\n\n /**\n * Style set for the element containing the expand icon.\n */\n expandSingleLine?: IStyle;\n\n /**\n * Style set for the optional element containing the action elements.\n */\n actions?: IStyle;\n}\n\n/**\n * {@docCategory MessageBar}\n */\nexport enum MessageBarType {\n /** Info styled MessageBar */\n info = 0,\n /** Error styled MessageBar */\n error = 1,\n /** Blocked styled MessageBar */\n blocked = 2,\n /** SevereWarning styled MessageBar */\n severeWarning = 3,\n /** Success styled MessageBar */\n success = 4,\n /** Warning styled MessageBar */\n warning = 5,\n}\n","var createSymbol = function createSymbol(name) {\n return \"@@redux-saga/\" + name;\n};\n\nvar CANCEL =\n/*#__PURE__*/\ncreateSymbol('CANCEL_PROMISE');\nvar CHANNEL_END_TYPE =\n/*#__PURE__*/\ncreateSymbol('CHANNEL_END');\nvar IO =\n/*#__PURE__*/\ncreateSymbol('IO');\nvar MATCH =\n/*#__PURE__*/\ncreateSymbol('MATCH');\nvar MULTICAST =\n/*#__PURE__*/\ncreateSymbol('MULTICAST');\nvar SAGA_ACTION =\n/*#__PURE__*/\ncreateSymbol('SAGA_ACTION');\nvar SELF_CANCELLATION =\n/*#__PURE__*/\ncreateSymbol('SELF_CANCELLATION');\nvar TASK =\n/*#__PURE__*/\ncreateSymbol('TASK');\nvar TASK_CANCEL =\n/*#__PURE__*/\ncreateSymbol('TASK_CANCEL');\nvar TERMINATE =\n/*#__PURE__*/\ncreateSymbol('TERMINATE');\nvar SAGA_LOCATION =\n/*#__PURE__*/\ncreateSymbol('LOCATION');\n\nexport { CANCEL, CHANNEL_END_TYPE, IO, MATCH, MULTICAST, SAGA_ACTION, SAGA_LOCATION, SELF_CANCELLATION, TASK, TASK_CANCEL, TERMINATE };\n","export const DirectionalHint = {\n /**\n * Appear above the target element, with the left edges of the callout and target aligning.\n */\n topLeftEdge: 0 as 0,\n\n /**\n * Appear above the target element, with the centers of the callout and target aligning.\n */\n topCenter: 1 as 1,\n\n /**\n * Appear above the target element, with the right edges of the callout and target aligning.\n */\n topRightEdge: 2 as 2,\n\n /**\n * Appear above the target element, aligning with the target element such that the callout tends toward\n * the center of the screen.\n */\n topAutoEdge: 3 as 3,\n\n /**\n * Appear below the target element, with the left edges of the callout and target aligning.\n */\n bottomLeftEdge: 4 as 4,\n\n /**\n * Appear below the target element, with the centers of the callout and target aligning.\n */\n bottomCenter: 5 as 5,\n\n /**\n * Appear below the target element, with the right edges of the callout and target aligning.\n */\n bottomRightEdge: 6 as 6,\n\n /**\n * Appear below the target element, aligning with the target element such that the callout tends toward\n * the center of the screen.\n */\n bottomAutoEdge: 7 as 7,\n\n /**\n * Appear to the left of the target element, with the top edges of the callout and target aligning.\n */\n leftTopEdge: 8 as 8,\n\n /**\n * Appear to the left of the target element, with the centers of the callout and target aligning.\n */\n leftCenter: 9 as 9,\n\n /**\n * Appear to the left of the target element, with the bottom edges of the callout and target aligning.\n */\n leftBottomEdge: 10 as 10,\n\n /**\n * Appear to the right of the target element, with the top edges of the callout and target aligning.\n */\n rightTopEdge: 11 as 11,\n\n /**\n * Appear to the right of the target element, with the centers of the callout and target aligning.\n */\n rightCenter: 12 as 12,\n\n /**\n * Appear to the right of the target element, with the bottom edges of the callout and target aligning.\n */\n rightBottomEdge: 13 as 13,\n};\n\nexport type DirectionalHint = typeof DirectionalHint[keyof typeof DirectionalHint];\n","/*! decimal.js-light v2.5.1 https://github.com/MikeMcl/decimal.js-light/LICENCE */\r\n;(function (globalScope) {\r\n 'use strict';\r\n\r\n\r\n /*\r\n * decimal.js-light v2.5.1\r\n * An arbitrary-precision Decimal type for JavaScript.\r\n * https://github.com/MikeMcl/decimal.js-light\r\n * Copyright (c) 2020 Michael Mclaughlin <M8ch88l@gmail.com>\r\n * MIT Expat Licence\r\n */\r\n\r\n\r\n // ----------------------------------- EDITABLE DEFAULTS ------------------------------------ //\r\n\r\n\r\n // The limit on the value of `precision`, and on the value of the first argument to\r\n // `toDecimalPlaces`, `toExponential`, `toFixed`, `toPrecision` and `toSignificantDigits`.\r\n var MAX_DIGITS = 1e9, // 0 to 1e9\r\n\r\n\r\n // The initial configuration properties of the Decimal constructor.\r\n Decimal = {\r\n\r\n // These values must be integers within the stated ranges (inclusive).\r\n // Most of these values can be changed during run-time using `Decimal.config`.\r\n\r\n // The maximum number of significant digits of the result of a calculation or base conversion.\r\n // E.g. `Decimal.config({ precision: 20 });`\r\n precision: 20, // 1 to MAX_DIGITS\r\n\r\n // The rounding mode used by default by `toInteger`, `toDecimalPlaces`, `toExponential`,\r\n // `toFixed`, `toPrecision` and `toSignificantDigits`.\r\n //\r\n // ROUND_UP 0 Away from zero.\r\n // ROUND_DOWN 1 Towards zero.\r\n // ROUND_CEIL 2 Towards +Infinity.\r\n // ROUND_FLOOR 3 Towards -Infinity.\r\n // ROUND_HALF_UP 4 Towards nearest neighbour. If equidistant, up.\r\n // ROUND_HALF_DOWN 5 Towards nearest neighbour. If equidistant, down.\r\n // ROUND_HALF_EVEN 6 Towards nearest neighbour. If equidistant, towards even neighbour.\r\n // ROUND_HALF_CEIL 7 Towards nearest neighbour. If equidistant, towards +Infinity.\r\n // ROUND_HALF_FLOOR 8 Towards nearest neighbour. If equidistant, towards -Infinity.\r\n //\r\n // E.g.\r\n // `Decimal.rounding = 4;`\r\n // `Decimal.rounding = Decimal.ROUND_HALF_UP;`\r\n rounding: 4, // 0 to 8\r\n\r\n // The exponent value at and beneath which `toString` returns exponential notation.\r\n // JavaScript numbers: -7\r\n toExpNeg: -7, // 0 to -MAX_E\r\n\r\n // The exponent value at and above which `toString` returns exponential notation.\r\n // JavaScript numbers: 21\r\n toExpPos: 21, // 0 to MAX_E\r\n\r\n // The natural logarithm of 10.\r\n // 115 digits\r\n LN10: '2.302585092994045684017991454684364207601101488628772976033327900967572609677352480235997205089598298341967784042286'\r\n },\r\n\r\n\r\n // ----------------------------------- END OF EDITABLE DEFAULTS ------------------------------- //\r\n\r\n\r\n external = true,\r\n\r\n decimalError = '[DecimalError] ',\r\n invalidArgument = decimalError + 'Invalid argument: ',\r\n exponentOutOfRange = decimalError + 'Exponent out of range: ',\r\n\r\n mathfloor = Math.floor,\r\n mathpow = Math.pow,\r\n\r\n isDecimal = /^(\\d+(\\.\\d*)?|\\.\\d+)(e[+-]?\\d+)?$/i,\r\n\r\n ONE,\r\n BASE = 1e7,\r\n LOG_BASE = 7,\r\n MAX_SAFE_INTEGER = 9007199254740991,\r\n MAX_E = mathfloor(MAX_SAFE_INTEGER / LOG_BASE), // 1286742750677284\r\n\r\n // Decimal.prototype object\r\n P = {};\r\n\r\n\r\n // Decimal prototype methods\r\n\r\n\r\n /*\r\n * absoluteValue abs\r\n * comparedTo cmp\r\n * decimalPlaces dp\r\n * dividedBy div\r\n * dividedToIntegerBy idiv\r\n * equals eq\r\n * exponent\r\n * greaterThan gt\r\n * greaterThanOrEqualTo gte\r\n * isInteger isint\r\n * isNegative isneg\r\n * isPositive ispos\r\n * isZero\r\n * lessThan lt\r\n * lessThanOrEqualTo lte\r\n * logarithm log\r\n * minus sub\r\n * modulo mod\r\n * naturalExponential exp\r\n * naturalLogarithm ln\r\n * negated neg\r\n * plus add\r\n * precision sd\r\n * squareRoot sqrt\r\n * times mul\r\n * toDecimalPlaces todp\r\n * toExponential\r\n * toFixed\r\n * toInteger toint\r\n * toNumber\r\n * toPower pow\r\n * toPrecision\r\n * toSignificantDigits tosd\r\n * toString\r\n * valueOf val\r\n */\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the absolute value of this Decimal.\r\n *\r\n */\r\n P.absoluteValue = P.abs = function () {\r\n var x = new this.constructor(this);\r\n if (x.s) x.s = 1;\r\n return x;\r\n };\r\n\r\n\r\n /*\r\n * Return\r\n * 1 if the value of this Decimal is greater than the value of `y`,\r\n * -1 if the value of this Decimal is less than the value of `y`,\r\n * 0 if they have the same value\r\n *\r\n */\r\n P.comparedTo = P.cmp = function (y) {\r\n var i, j, xdL, ydL,\r\n x = this;\r\n\r\n y = new x.constructor(y);\r\n\r\n // Signs differ?\r\n if (x.s !== y.s) return x.s || -y.s;\r\n\r\n // Compare exponents.\r\n if (x.e !== y.e) return x.e > y.e ^ x.s < 0 ? 1 : -1;\r\n\r\n xdL = x.d.length;\r\n ydL = y.d.length;\r\n\r\n // Compare digit by digit.\r\n for (i = 0, j = xdL < ydL ? xdL : ydL; i < j; ++i) {\r\n if (x.d[i] !== y.d[i]) return x.d[i] > y.d[i] ^ x.s < 0 ? 1 : -1;\r\n }\r\n\r\n // Compare lengths.\r\n return xdL === ydL ? 0 : xdL > ydL ^ x.s < 0 ? 1 : -1;\r\n };\r\n\r\n\r\n /*\r\n * Return the number of decimal places of the value of this Decimal.\r\n *\r\n */\r\n P.decimalPlaces = P.dp = function () {\r\n var x = this,\r\n w = x.d.length - 1,\r\n dp = (w - x.e) * LOG_BASE;\r\n\r\n // Subtract the number of trailing zeros of the last word.\r\n w = x.d[w];\r\n if (w) for (; w % 10 == 0; w /= 10) dp--;\r\n\r\n return dp < 0 ? 0 : dp;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal divided by `y`, truncated to\r\n * `precision` significant digits.\r\n *\r\n */\r\n P.dividedBy = P.div = function (y) {\r\n return divide(this, new this.constructor(y));\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the integer part of dividing the value of this Decimal\r\n * by the value of `y`, truncated to `precision` significant digits.\r\n *\r\n */\r\n P.dividedToIntegerBy = P.idiv = function (y) {\r\n var x = this,\r\n Ctor = x.constructor;\r\n return round(divide(x, new Ctor(y), 0, 1), Ctor.precision);\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is equal to the value of `y`, otherwise return false.\r\n *\r\n */\r\n P.equals = P.eq = function (y) {\r\n return !this.cmp(y);\r\n };\r\n\r\n\r\n /*\r\n * Return the (base 10) exponent value of this Decimal (this.e is the base 10000000 exponent).\r\n *\r\n */\r\n P.exponent = function () {\r\n return getBase10Exponent(this);\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is greater than the value of `y`, otherwise return\r\n * false.\r\n *\r\n */\r\n P.greaterThan = P.gt = function (y) {\r\n return this.cmp(y) > 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is greater than or equal to the value of `y`,\r\n * otherwise return false.\r\n *\r\n */\r\n P.greaterThanOrEqualTo = P.gte = function (y) {\r\n return this.cmp(y) >= 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is an integer, otherwise return false.\r\n *\r\n */\r\n P.isInteger = P.isint = function () {\r\n return this.e > this.d.length - 2;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is negative, otherwise return false.\r\n *\r\n */\r\n P.isNegative = P.isneg = function () {\r\n return this.s < 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is positive, otherwise return false.\r\n *\r\n */\r\n P.isPositive = P.ispos = function () {\r\n return this.s > 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is 0, otherwise return false.\r\n *\r\n */\r\n P.isZero = function () {\r\n return this.s === 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is less than `y`, otherwise return false.\r\n *\r\n */\r\n P.lessThan = P.lt = function (y) {\r\n return this.cmp(y) < 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is less than or equal to `y`, otherwise return false.\r\n *\r\n */\r\n P.lessThanOrEqualTo = P.lte = function (y) {\r\n return this.cmp(y) < 1;\r\n };\r\n\r\n\r\n /*\r\n * Return the logarithm of the value of this Decimal to the specified base, truncated to\r\n * `precision` significant digits.\r\n *\r\n * If no base is specified, return log[10](x).\r\n *\r\n * log[base](x) = ln(x) / ln(base)\r\n *\r\n * The maximum error of the result is 1 ulp (unit in the last place).\r\n *\r\n * [base] {number|string|Decimal} The base of the logarithm.\r\n *\r\n */\r\n P.logarithm = P.log = function (base) {\r\n var r,\r\n x = this,\r\n Ctor = x.constructor,\r\n pr = Ctor.precision,\r\n wpr = pr + 5;\r\n\r\n // Default base is 10.\r\n if (base === void 0) {\r\n base = new Ctor(10);\r\n } else {\r\n base = new Ctor(base);\r\n\r\n // log[-b](x) = NaN\r\n // log[0](x) = NaN\r\n // log[1](x) = NaN\r\n if (base.s < 1 || base.eq(ONE)) throw Error(decimalError + 'NaN');\r\n }\r\n\r\n // log[b](-x) = NaN\r\n // log[b](0) = -Infinity\r\n if (x.s < 1) throw Error(decimalError + (x.s ? 'NaN' : '-Infinity'));\r\n\r\n // log[b](1) = 0\r\n if (x.eq(ONE)) return new Ctor(0);\r\n\r\n external = false;\r\n r = divide(ln(x, wpr), ln(base, wpr), wpr);\r\n external = true;\r\n\r\n return round(r, pr);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal minus `y`, truncated to\r\n * `precision` significant digits.\r\n *\r\n */\r\n P.minus = P.sub = function (y) {\r\n var x = this;\r\n y = new x.constructor(y);\r\n return x.s == y.s ? subtract(x, y) : add(x, (y.s = -y.s, y));\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal modulo `y`, truncated to\r\n * `precision` significant digits.\r\n *\r\n */\r\n P.modulo = P.mod = function (y) {\r\n var q,\r\n x = this,\r\n Ctor = x.constructor,\r\n pr = Ctor.precision;\r\n\r\n y = new Ctor(y);\r\n\r\n // x % 0 = NaN\r\n if (!y.s) throw Error(decimalError + 'NaN');\r\n\r\n // Return x if x is 0.\r\n if (!x.s) return round(new Ctor(x), pr);\r\n\r\n // Prevent rounding of intermediate calculations.\r\n external = false;\r\n q = divide(x, y, 0, 1).times(y);\r\n external = true;\r\n\r\n return x.minus(q);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the natural exponential of the value of this Decimal,\r\n * i.e. the base e raised to the power the value of this Decimal, truncated to `precision`\r\n * significant digits.\r\n *\r\n */\r\n P.naturalExponential = P.exp = function () {\r\n return exp(this);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the natural logarithm of the value of this Decimal,\r\n * truncated to `precision` significant digits.\r\n *\r\n */\r\n P.naturalLogarithm = P.ln = function () {\r\n return ln(this);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal negated, i.e. as if multiplied by\r\n * -1.\r\n *\r\n */\r\n P.negated = P.neg = function () {\r\n var x = new this.constructor(this);\r\n x.s = -x.s || 0;\r\n return x;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal plus `y`, truncated to\r\n * `precision` significant digits.\r\n *\r\n */\r\n P.plus = P.add = function (y) {\r\n var x = this;\r\n y = new x.constructor(y);\r\n return x.s == y.s ? add(x, y) : subtract(x, (y.s = -y.s, y));\r\n };\r\n\r\n\r\n /*\r\n * Return the number of significant digits of the value of this Decimal.\r\n *\r\n * [z] {boolean|number} Whether to count integer-part trailing zeros: true, false, 1 or 0.\r\n *\r\n */\r\n P.precision = P.sd = function (z) {\r\n var e, sd, w,\r\n x = this;\r\n\r\n if (z !== void 0 && z !== !!z && z !== 1 && z !== 0) throw Error(invalidArgument + z);\r\n\r\n e = getBase10Exponent(x) + 1;\r\n w = x.d.length - 1;\r\n sd = w * LOG_BASE + 1;\r\n w = x.d[w];\r\n\r\n // If non-zero...\r\n if (w) {\r\n\r\n // Subtract the number of trailing zeros of the last word.\r\n for (; w % 10 == 0; w /= 10) sd--;\r\n\r\n // Add the number of digits of the first word.\r\n for (w = x.d[0]; w >= 10; w /= 10) sd++;\r\n }\r\n\r\n return z && e > sd ? e : sd;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the square root of this Decimal, truncated to `precision`\r\n * significant digits.\r\n *\r\n */\r\n P.squareRoot = P.sqrt = function () {\r\n var e, n, pr, r, s, t, wpr,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n // Negative or zero?\r\n if (x.s < 1) {\r\n if (!x.s) return new Ctor(0);\r\n\r\n // sqrt(-x) = NaN\r\n throw Error(decimalError + 'NaN');\r\n }\r\n\r\n e = getBase10Exponent(x);\r\n external = false;\r\n\r\n // Initial estimate.\r\n s = Math.sqrt(+x);\r\n\r\n // Math.sqrt underflow/overflow?\r\n // Pass x to Math.sqrt as integer, then adjust the exponent of the result.\r\n if (s == 0 || s == 1 / 0) {\r\n n = digitsToString(x.d);\r\n if ((n.length + e) % 2 == 0) n += '0';\r\n s = Math.sqrt(n);\r\n e = mathfloor((e + 1) / 2) - (e < 0 || e % 2);\r\n\r\n if (s == 1 / 0) {\r\n n = '5e' + e;\r\n } else {\r\n n = s.toExponential();\r\n n = n.slice(0, n.indexOf('e') + 1) + e;\r\n }\r\n\r\n r = new Ctor(n);\r\n } else {\r\n r = new Ctor(s.toString());\r\n }\r\n\r\n pr = Ctor.precision;\r\n s = wpr = pr + 3;\r\n\r\n // Newton-Raphson iteration.\r\n for (;;) {\r\n t = r;\r\n r = t.plus(divide(x, t, wpr + 2)).times(0.5);\r\n\r\n if (digitsToString(t.d).slice(0, wpr) === (n = digitsToString(r.d)).slice(0, wpr)) {\r\n n = n.slice(wpr - 3, wpr + 1);\r\n\r\n // The 4th rounding digit may be in error by -1 so if the 4 rounding digits are 9999 or\r\n // 4999, i.e. approaching a rounding boundary, continue the iteration.\r\n if (s == wpr && n == '4999') {\r\n\r\n // On the first iteration only, check to see if rounding up gives the exact result as the\r\n // nines may infinitely repeat.\r\n round(t, pr + 1, 0);\r\n\r\n if (t.times(t).eq(x)) {\r\n r = t;\r\n break;\r\n }\r\n } else if (n != '9999') {\r\n break;\r\n }\r\n\r\n wpr += 4;\r\n }\r\n }\r\n\r\n external = true;\r\n\r\n return round(r, pr);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal times `y`, truncated to\r\n * `precision` significant digits.\r\n *\r\n */\r\n P.times = P.mul = function (y) {\r\n var carry, e, i, k, r, rL, t, xdL, ydL,\r\n x = this,\r\n Ctor = x.constructor,\r\n xd = x.d,\r\n yd = (y = new Ctor(y)).d;\r\n\r\n // Return 0 if either is 0.\r\n if (!x.s || !y.s) return new Ctor(0);\r\n\r\n y.s *= x.s;\r\n e = x.e + y.e;\r\n xdL = xd.length;\r\n ydL = yd.length;\r\n\r\n // Ensure xd points to the longer array.\r\n if (xdL < ydL) {\r\n r = xd;\r\n xd = yd;\r\n yd = r;\r\n rL = xdL;\r\n xdL = ydL;\r\n ydL = rL;\r\n }\r\n\r\n // Initialise the result array with zeros.\r\n r = [];\r\n rL = xdL + ydL;\r\n for (i = rL; i--;) r.push(0);\r\n\r\n // Multiply!\r\n for (i = ydL; --i >= 0;) {\r\n carry = 0;\r\n for (k = xdL + i; k > i;) {\r\n t = r[k] + yd[i] * xd[k - i - 1] + carry;\r\n r[k--] = t % BASE | 0;\r\n carry = t / BASE | 0;\r\n }\r\n\r\n r[k] = (r[k] + carry) % BASE | 0;\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (; !r[--rL];) r.pop();\r\n\r\n if (carry) ++e;\r\n else r.shift();\r\n\r\n y.d = r;\r\n y.e = e;\r\n\r\n return external ? round(y, Ctor.precision) : y;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a maximum of `dp`\r\n * decimal places using rounding mode `rm` or `rounding` if `rm` is omitted.\r\n *\r\n * If `dp` is omitted, return a new Decimal whose value is the value of this Decimal.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\n P.toDecimalPlaces = P.todp = function (dp, rm) {\r\n var x = this,\r\n Ctor = x.constructor;\r\n\r\n x = new Ctor(x);\r\n if (dp === void 0) return x;\r\n\r\n checkInt32(dp, 0, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n\r\n return round(x, dp + getBase10Exponent(x) + 1, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this Decimal in exponential notation rounded to\r\n * `dp` fixed decimal places using rounding mode `rounding`.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\n P.toExponential = function (dp, rm) {\r\n var str,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (dp === void 0) {\r\n str = toString(x, true);\r\n } else {\r\n checkInt32(dp, 0, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n\r\n x = round(new Ctor(x), dp + 1, rm);\r\n str = toString(x, true, dp + 1);\r\n }\r\n\r\n return str;\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this Decimal in normal (fixed-point) notation to\r\n * `dp` fixed decimal places and rounded using rounding mode `rm` or `rounding` if `rm` is\r\n * omitted.\r\n *\r\n * As with JavaScript numbers, (-0).toFixed(0) is '0', but e.g. (-0.00001).toFixed(0) is '-0'.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * (-0).toFixed(0) is '0', but (-0.1).toFixed(0) is '-0'.\r\n * (-0).toFixed(1) is '0.0', but (-0.01).toFixed(1) is '-0.0'.\r\n * (-0).toFixed(3) is '0.000'.\r\n * (-0.5).toFixed(0) is '-0'.\r\n *\r\n */\r\n P.toFixed = function (dp, rm) {\r\n var str, y,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (dp === void 0) return toString(x);\r\n\r\n checkInt32(dp, 0, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n\r\n y = round(new Ctor(x), dp + getBase10Exponent(x) + 1, rm);\r\n str = toString(y.abs(), false, dp + getBase10Exponent(y) + 1);\r\n\r\n // To determine whether to add the minus sign look at the value before it was rounded,\r\n // i.e. look at `x` rather than `y`.\r\n return x.isneg() && !x.isZero() ? '-' + str : str;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a whole number using\r\n * rounding mode `rounding`.\r\n *\r\n */\r\n P.toInteger = P.toint = function () {\r\n var x = this,\r\n Ctor = x.constructor;\r\n return round(new Ctor(x), getBase10Exponent(x) + 1, Ctor.rounding);\r\n };\r\n\r\n\r\n /*\r\n * Return the value of this Decimal converted to a number primitive.\r\n *\r\n */\r\n P.toNumber = function () {\r\n return +this;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal raised to the power `y`,\r\n * truncated to `precision` significant digits.\r\n *\r\n * For non-integer or very large exponents pow(x, y) is calculated using\r\n *\r\n * x^y = exp(y*ln(x))\r\n *\r\n * The maximum error is 1 ulp (unit in last place).\r\n *\r\n * y {number|string|Decimal} The power to which to raise this Decimal.\r\n *\r\n */\r\n P.toPower = P.pow = function (y) {\r\n var e, k, pr, r, sign, yIsInt,\r\n x = this,\r\n Ctor = x.constructor,\r\n guard = 12,\r\n yn = +(y = new Ctor(y));\r\n\r\n // pow(x, 0) = 1\r\n if (!y.s) return new Ctor(ONE);\r\n\r\n x = new Ctor(x);\r\n\r\n // pow(0, y > 0) = 0\r\n // pow(0, y < 0) = Infinity\r\n if (!x.s) {\r\n if (y.s < 1) throw Error(decimalError + 'Infinity');\r\n return x;\r\n }\r\n\r\n // pow(1, y) = 1\r\n if (x.eq(ONE)) return x;\r\n\r\n pr = Ctor.precision;\r\n\r\n // pow(x, 1) = x\r\n if (y.eq(ONE)) return round(x, pr);\r\n\r\n e = y.e;\r\n k = y.d.length - 1;\r\n yIsInt = e >= k;\r\n sign = x.s;\r\n\r\n if (!yIsInt) {\r\n\r\n // pow(x < 0, y non-integer) = NaN\r\n if (sign < 0) throw Error(decimalError + 'NaN');\r\n\r\n // If y is a small integer use the 'exponentiation by squaring' algorithm.\r\n } else if ((k = yn < 0 ? -yn : yn) <= MAX_SAFE_INTEGER) {\r\n r = new Ctor(ONE);\r\n\r\n // Max k of 9007199254740991 takes 53 loop iterations.\r\n // Maximum digits array length; leaves [28, 34] guard digits.\r\n e = Math.ceil(pr / LOG_BASE + 4);\r\n\r\n external = false;\r\n\r\n for (;;) {\r\n if (k % 2) {\r\n r = r.times(x);\r\n truncate(r.d, e);\r\n }\r\n\r\n k = mathfloor(k / 2);\r\n if (k === 0) break;\r\n\r\n x = x.times(x);\r\n truncate(x.d, e);\r\n }\r\n\r\n external = true;\r\n\r\n return y.s < 0 ? new Ctor(ONE).div(r) : round(r, pr);\r\n }\r\n\r\n // Result is negative if x is negative and the last digit of integer y is odd.\r\n sign = sign < 0 && y.d[Math.max(e, k)] & 1 ? -1 : 1;\r\n\r\n x.s = 1;\r\n external = false;\r\n r = y.times(ln(x, pr + guard));\r\n external = true;\r\n r = exp(r);\r\n r.s = sign;\r\n\r\n return r;\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this Decimal rounded to `sd` significant digits\r\n * using rounding mode `rounding`.\r\n *\r\n * Return exponential notation if `sd` is less than the number of digits necessary to represent\r\n * the integer part of the value in normal notation.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\n P.toPrecision = function (sd, rm) {\r\n var e, str,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (sd === void 0) {\r\n e = getBase10Exponent(x);\r\n str = toString(x, e <= Ctor.toExpNeg || e >= Ctor.toExpPos);\r\n } else {\r\n checkInt32(sd, 1, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n\r\n x = round(new Ctor(x), sd, rm);\r\n e = getBase10Exponent(x);\r\n str = toString(x, sd <= e || e <= Ctor.toExpNeg, sd);\r\n }\r\n\r\n return str;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a maximum of `sd`\r\n * significant digits using rounding mode `rm`, or to `precision` and `rounding` respectively if\r\n * omitted.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\n P.toSignificantDigits = P.tosd = function (sd, rm) {\r\n var x = this,\r\n Ctor = x.constructor;\r\n\r\n if (sd === void 0) {\r\n sd = Ctor.precision;\r\n rm = Ctor.rounding;\r\n } else {\r\n checkInt32(sd, 1, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n }\r\n\r\n return round(new Ctor(x), sd, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this Decimal.\r\n *\r\n * Return exponential notation if this Decimal has a positive exponent equal to or greater than\r\n * `toExpPos`, or a negative exponent equal to or less than `toExpNeg`.\r\n *\r\n */\r\n P.toString = P.valueOf = P.val = P.toJSON = function () {\r\n var x = this,\r\n e = getBase10Exponent(x),\r\n Ctor = x.constructor;\r\n\r\n return toString(x, e <= Ctor.toExpNeg || e >= Ctor.toExpPos);\r\n };\r\n\r\n\r\n // Helper functions for Decimal.prototype (P) and/or Decimal methods, and their callers.\r\n\r\n\r\n /*\r\n * add P.minus, P.plus\r\n * checkInt32 P.todp, P.toExponential, P.toFixed, P.toPrecision, P.tosd\r\n * digitsToString P.log, P.sqrt, P.pow, toString, exp, ln\r\n * divide P.div, P.idiv, P.log, P.mod, P.sqrt, exp, ln\r\n * exp P.exp, P.pow\r\n * getBase10Exponent P.exponent, P.sd, P.toint, P.sqrt, P.todp, P.toFixed, P.toPrecision,\r\n * P.toString, divide, round, toString, exp, ln\r\n * getLn10 P.log, ln\r\n * getZeroString digitsToString, toString\r\n * ln P.log, P.ln, P.pow, exp\r\n * parseDecimal Decimal\r\n * round P.abs, P.idiv, P.log, P.minus, P.mod, P.neg, P.plus, P.toint, P.sqrt,\r\n * P.times, P.todp, P.toExponential, P.toFixed, P.pow, P.toPrecision, P.tosd,\r\n * divide, getLn10, exp, ln\r\n * subtract P.minus, P.plus\r\n * toString P.toExponential, P.toFixed, P.toPrecision, P.toString, P.valueOf\r\n * truncate P.pow\r\n *\r\n * Throws: P.log, P.mod, P.sd, P.sqrt, P.pow, checkInt32, divide, round,\r\n * getLn10, exp, ln, parseDecimal, Decimal, config\r\n */\r\n\r\n\r\n function add(x, y) {\r\n var carry, d, e, i, k, len, xd, yd,\r\n Ctor = x.constructor,\r\n pr = Ctor.precision;\r\n\r\n // If either is zero...\r\n if (!x.s || !y.s) {\r\n\r\n // Return x if y is zero.\r\n // Return y if y is non-zero.\r\n if (!y.s) y = new Ctor(x);\r\n return external ? round(y, pr) : y;\r\n }\r\n\r\n xd = x.d;\r\n yd = y.d;\r\n\r\n // x and y are finite, non-zero numbers with the same sign.\r\n\r\n k = x.e;\r\n e = y.e;\r\n xd = xd.slice();\r\n i = k - e;\r\n\r\n // If base 1e7 exponents differ...\r\n if (i) {\r\n if (i < 0) {\r\n d = xd;\r\n i = -i;\r\n len = yd.length;\r\n } else {\r\n d = yd;\r\n e = k;\r\n len = xd.length;\r\n }\r\n\r\n // Limit number of zeros prepended to max(ceil(pr / LOG_BASE), len) + 1.\r\n k = Math.ceil(pr / LOG_BASE);\r\n len = k > len ? k + 1 : len + 1;\r\n\r\n if (i > len) {\r\n i = len;\r\n d.length = 1;\r\n }\r\n\r\n // Prepend zeros to equalise exponents. Note: Faster to use reverse then do unshifts.\r\n d.reverse();\r\n for (; i--;) d.push(0);\r\n d.reverse();\r\n }\r\n\r\n len = xd.length;\r\n i = yd.length;\r\n\r\n // If yd is longer than xd, swap xd and yd so xd points to the longer array.\r\n if (len - i < 0) {\r\n i = len;\r\n d = yd;\r\n yd = xd;\r\n xd = d;\r\n }\r\n\r\n // Only start adding at yd.length - 1 as the further digits of xd can be left as they are.\r\n for (carry = 0; i;) {\r\n carry = (xd[--i] = xd[i] + yd[i] + carry) / BASE | 0;\r\n xd[i] %= BASE;\r\n }\r\n\r\n if (carry) {\r\n xd.unshift(carry);\r\n ++e;\r\n }\r\n\r\n // Remove trailing zeros.\r\n // No need to check for zero, as +x + +y != 0 && -x + -y != 0\r\n for (len = xd.length; xd[--len] == 0;) xd.pop();\r\n\r\n y.d = xd;\r\n y.e = e;\r\n\r\n return external ? round(y, pr) : y;\r\n }\r\n\r\n\r\n function checkInt32(i, min, max) {\r\n if (i !== ~~i || i < min || i > max) {\r\n throw Error(invalidArgument + i);\r\n }\r\n }\r\n\r\n\r\n function digitsToString(d) {\r\n var i, k, ws,\r\n indexOfLastWord = d.length - 1,\r\n str = '',\r\n w = d[0];\r\n\r\n if (indexOfLastWord > 0) {\r\n str += w;\r\n for (i = 1; i < indexOfLastWord; i++) {\r\n ws = d[i] + '';\r\n k = LOG_BASE - ws.length;\r\n if (k) str += getZeroString(k);\r\n str += ws;\r\n }\r\n\r\n w = d[i];\r\n ws = w + '';\r\n k = LOG_BASE - ws.length;\r\n if (k) str += getZeroString(k);\r\n } else if (w === 0) {\r\n return '0';\r\n }\r\n\r\n // Remove trailing zeros of last w.\r\n for (; w % 10 === 0;) w /= 10;\r\n\r\n return str + w;\r\n }\r\n\r\n\r\n var divide = (function () {\r\n\r\n // Assumes non-zero x and k, and hence non-zero result.\r\n function multiplyInteger(x, k) {\r\n var temp,\r\n carry = 0,\r\n i = x.length;\r\n\r\n for (x = x.slice(); i--;) {\r\n temp = x[i] * k + carry;\r\n x[i] = temp % BASE | 0;\r\n carry = temp / BASE | 0;\r\n }\r\n\r\n if (carry) x.unshift(carry);\r\n\r\n return x;\r\n }\r\n\r\n function compare(a, b, aL, bL) {\r\n var i, r;\r\n\r\n if (aL != bL) {\r\n r = aL > bL ? 1 : -1;\r\n } else {\r\n for (i = r = 0; i < aL; i++) {\r\n if (a[i] != b[i]) {\r\n r = a[i] > b[i] ? 1 : -1;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n return r;\r\n }\r\n\r\n function subtract(a, b, aL) {\r\n var i = 0;\r\n\r\n // Subtract b from a.\r\n for (; aL--;) {\r\n a[aL] -= i;\r\n i = a[aL] < b[aL] ? 1 : 0;\r\n a[aL] = i * BASE + a[aL] - b[aL];\r\n }\r\n\r\n // Remove leading zeros.\r\n for (; !a[0] && a.length > 1;) a.shift();\r\n }\r\n\r\n return function (x, y, pr, dp) {\r\n var cmp, e, i, k, prod, prodL, q, qd, rem, remL, rem0, sd, t, xi, xL, yd0, yL, yz,\r\n Ctor = x.constructor,\r\n sign = x.s == y.s ? 1 : -1,\r\n xd = x.d,\r\n yd = y.d;\r\n\r\n // Either 0?\r\n if (!x.s) return new Ctor(x);\r\n if (!y.s) throw Error(decimalError + 'Division by zero');\r\n\r\n e = x.e - y.e;\r\n yL = yd.length;\r\n xL = xd.length;\r\n q = new Ctor(sign);\r\n qd = q.d = [];\r\n\r\n // Result exponent may be one less than e.\r\n for (i = 0; yd[i] == (xd[i] || 0); ) ++i;\r\n if (yd[i] > (xd[i] || 0)) --e;\r\n\r\n if (pr == null) {\r\n sd = pr = Ctor.precision;\r\n } else if (dp) {\r\n sd = pr + (getBase10Exponent(x) - getBase10Exponent(y)) + 1;\r\n } else {\r\n sd = pr;\r\n }\r\n\r\n if (sd < 0) return new Ctor(0);\r\n\r\n // Convert precision in number of base 10 digits to base 1e7 digits.\r\n sd = sd / LOG_BASE + 2 | 0;\r\n i = 0;\r\n\r\n // divisor < 1e7\r\n if (yL == 1) {\r\n k = 0;\r\n yd = yd[0];\r\n sd++;\r\n\r\n // k is the carry.\r\n for (; (i < xL || k) && sd--; i++) {\r\n t = k * BASE + (xd[i] || 0);\r\n qd[i] = t / yd | 0;\r\n k = t % yd | 0;\r\n }\r\n\r\n // divisor >= 1e7\r\n } else {\r\n\r\n // Normalise xd and yd so highest order digit of yd is >= BASE/2\r\n k = BASE / (yd[0] + 1) | 0;\r\n\r\n if (k > 1) {\r\n yd = multiplyInteger(yd, k);\r\n xd = multiplyInteger(xd, k);\r\n yL = yd.length;\r\n xL = xd.length;\r\n }\r\n\r\n xi = yL;\r\n rem = xd.slice(0, yL);\r\n remL = rem.length;\r\n\r\n // Add zeros to make remainder as long as divisor.\r\n for (; remL < yL;) rem[remL++] = 0;\r\n\r\n yz = yd.slice();\r\n yz.unshift(0);\r\n yd0 = yd[0];\r\n\r\n if (yd[1] >= BASE / 2) ++yd0;\r\n\r\n do {\r\n k = 0;\r\n\r\n // Compare divisor and remainder.\r\n cmp = compare(yd, rem, yL, remL);\r\n\r\n // If divisor < remainder.\r\n if (cmp < 0) {\r\n\r\n // Calculate trial digit, k.\r\n rem0 = rem[0];\r\n if (yL != remL) rem0 = rem0 * BASE + (rem[1] || 0);\r\n\r\n // k will be how many times the divisor goes into the current remainder.\r\n k = rem0 / yd0 | 0;\r\n\r\n // Algorithm:\r\n // 1. product = divisor * trial digit (k)\r\n // 2. if product > remainder: product -= divisor, k--\r\n // 3. remainder -= product\r\n // 4. if product was < remainder at 2:\r\n // 5. compare new remainder and divisor\r\n // 6. If remainder > divisor: remainder -= divisor, k++\r\n\r\n if (k > 1) {\r\n if (k >= BASE) k = BASE - 1;\r\n\r\n // product = divisor * trial digit.\r\n prod = multiplyInteger(yd, k);\r\n prodL = prod.length;\r\n remL = rem.length;\r\n\r\n // Compare product and remainder.\r\n cmp = compare(prod, rem, prodL, remL);\r\n\r\n // product > remainder.\r\n if (cmp == 1) {\r\n k--;\r\n\r\n // Subtract divisor from product.\r\n subtract(prod, yL < prodL ? yz : yd, prodL);\r\n }\r\n } else {\r\n\r\n // cmp is -1.\r\n // If k is 0, there is no need to compare yd and rem again below, so change cmp to 1\r\n // to avoid it. If k is 1 there is a need to compare yd and rem again below.\r\n if (k == 0) cmp = k = 1;\r\n prod = yd.slice();\r\n }\r\n\r\n prodL = prod.length;\r\n if (prodL < remL) prod.unshift(0);\r\n\r\n // Subtract product from remainder.\r\n subtract(rem, prod, remL);\r\n\r\n // If product was < previous remainder.\r\n if (cmp == -1) {\r\n remL = rem.length;\r\n\r\n // Compare divisor and new remainder.\r\n cmp = compare(yd, rem, yL, remL);\r\n\r\n // If divisor < new remainder, subtract divisor from remainder.\r\n if (cmp < 1) {\r\n k++;\r\n\r\n // Subtract divisor from remainder.\r\n subtract(rem, yL < remL ? yz : yd, remL);\r\n }\r\n }\r\n\r\n remL = rem.length;\r\n } else if (cmp === 0) {\r\n k++;\r\n rem = [0];\r\n } // if cmp === 1, k will be 0\r\n\r\n // Add the next digit, k, to the result array.\r\n qd[i++] = k;\r\n\r\n // Update the remainder.\r\n if (cmp && rem[0]) {\r\n rem[remL++] = xd[xi] || 0;\r\n } else {\r\n rem = [xd[xi]];\r\n remL = 1;\r\n }\r\n\r\n } while ((xi++ < xL || rem[0] !== void 0) && sd--);\r\n }\r\n\r\n // Leading zero?\r\n if (!qd[0]) qd.shift();\r\n\r\n q.e = e;\r\n\r\n return round(q, dp ? pr + getBase10Exponent(q) + 1 : pr);\r\n };\r\n })();\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the natural exponential of `x` truncated to `sd`\r\n * significant digits.\r\n *\r\n * Taylor/Maclaurin series.\r\n *\r\n * exp(x) = x^0/0! + x^1/1! + x^2/2! + x^3/3! + ...\r\n *\r\n * Argument reduction:\r\n * Repeat x = x / 32, k += 5, until |x| < 0.1\r\n * exp(x) = exp(x / 2^k)^(2^k)\r\n *\r\n * Previously, the argument was initially reduced by\r\n * exp(x) = exp(r) * 10^k where r = x - k * ln10, k = floor(x / ln10)\r\n * to first put r in the range [0, ln10], before dividing by 32 until |x| < 0.1, but this was\r\n * found to be slower than just dividing repeatedly by 32 as above.\r\n *\r\n * (Math object integer min/max: Math.exp(709) = 8.2e+307, Math.exp(-745) = 5e-324)\r\n *\r\n * exp(x) is non-terminating for any finite, non-zero x.\r\n *\r\n */\r\n function exp(x, sd) {\r\n var denominator, guard, pow, sum, t, wpr,\r\n i = 0,\r\n k = 0,\r\n Ctor = x.constructor,\r\n pr = Ctor.precision;\r\n\r\n if (getBase10Exponent(x) > 16) throw Error(exponentOutOfRange + getBase10Exponent(x));\r\n\r\n // exp(0) = 1\r\n if (!x.s) return new Ctor(ONE);\r\n\r\n if (sd == null) {\r\n external = false;\r\n wpr = pr;\r\n } else {\r\n wpr = sd;\r\n }\r\n\r\n t = new Ctor(0.03125);\r\n\r\n while (x.abs().gte(0.1)) {\r\n x = x.times(t); // x = x / 2^5\r\n k += 5;\r\n }\r\n\r\n // Estimate the precision increase necessary to ensure the first 4 rounding digits are correct.\r\n guard = Math.log(mathpow(2, k)) / Math.LN10 * 2 + 5 | 0;\r\n wpr += guard;\r\n denominator = pow = sum = new Ctor(ONE);\r\n Ctor.precision = wpr;\r\n\r\n for (;;) {\r\n pow = round(pow.times(x), wpr);\r\n denominator = denominator.times(++i);\r\n t = sum.plus(divide(pow, denominator, wpr));\r\n\r\n if (digitsToString(t.d).slice(0, wpr) === digitsToString(sum.d).slice(0, wpr)) {\r\n while (k--) sum = round(sum.times(sum), wpr);\r\n Ctor.precision = pr;\r\n return sd == null ? (external = true, round(sum, pr)) : sum;\r\n }\r\n\r\n sum = t;\r\n }\r\n }\r\n\r\n\r\n // Calculate the base 10 exponent from the base 1e7 exponent.\r\n function getBase10Exponent(x) {\r\n var e = x.e * LOG_BASE,\r\n w = x.d[0];\r\n\r\n // Add the number of digits of the first word of the digits array.\r\n for (; w >= 10; w /= 10) e++;\r\n return e;\r\n }\r\n\r\n\r\n function getLn10(Ctor, sd, pr) {\r\n\r\n if (sd > Ctor.LN10.sd()) {\r\n\r\n\r\n // Reset global state in case the exception is caught.\r\n external = true;\r\n if (pr) Ctor.precision = pr;\r\n throw Error(decimalError + 'LN10 precision limit exceeded');\r\n }\r\n\r\n return round(new Ctor(Ctor.LN10), sd);\r\n }\r\n\r\n\r\n function getZeroString(k) {\r\n var zs = '';\r\n for (; k--;) zs += '0';\r\n return zs;\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the natural logarithm of `x` truncated to `sd` significant\r\n * digits.\r\n *\r\n * ln(n) is non-terminating (n != 1)\r\n *\r\n */\r\n function ln(y, sd) {\r\n var c, c0, denominator, e, numerator, sum, t, wpr, x2,\r\n n = 1,\r\n guard = 10,\r\n x = y,\r\n xd = x.d,\r\n Ctor = x.constructor,\r\n pr = Ctor.precision;\r\n\r\n // ln(-x) = NaN\r\n // ln(0) = -Infinity\r\n if (x.s < 1) throw Error(decimalError + (x.s ? 'NaN' : '-Infinity'));\r\n\r\n // ln(1) = 0\r\n if (x.eq(ONE)) return new Ctor(0);\r\n\r\n if (sd == null) {\r\n external = false;\r\n wpr = pr;\r\n } else {\r\n wpr = sd;\r\n }\r\n\r\n if (x.eq(10)) {\r\n if (sd == null) external = true;\r\n return getLn10(Ctor, wpr);\r\n }\r\n\r\n wpr += guard;\r\n Ctor.precision = wpr;\r\n c = digitsToString(xd);\r\n c0 = c.charAt(0);\r\n e = getBase10Exponent(x);\r\n\r\n if (Math.abs(e) < 1.5e15) {\r\n\r\n // Argument reduction.\r\n // The series converges faster the closer the argument is to 1, so using\r\n // ln(a^b) = b * ln(a), ln(a) = ln(a^b) / b\r\n // multiply the argument by itself until the leading digits of the significand are 7, 8, 9,\r\n // 10, 11, 12 or 13, recording the number of multiplications so the sum of the series can\r\n // later be divided by this number, then separate out the power of 10 using\r\n // ln(a*10^b) = ln(a) + b*ln(10).\r\n\r\n // max n is 21 (gives 0.9, 1.0 or 1.1) (9e15 / 21 = 4.2e14).\r\n //while (c0 < 9 && c0 != 1 || c0 == 1 && c.charAt(1) > 1) {\r\n // max n is 6 (gives 0.7 - 1.3)\r\n while (c0 < 7 && c0 != 1 || c0 == 1 && c.charAt(1) > 3) {\r\n x = x.times(y);\r\n c = digitsToString(x.d);\r\n c0 = c.charAt(0);\r\n n++;\r\n }\r\n\r\n e = getBase10Exponent(x);\r\n\r\n if (c0 > 1) {\r\n x = new Ctor('0.' + c);\r\n e++;\r\n } else {\r\n x = new Ctor(c0 + '.' + c.slice(1));\r\n }\r\n } else {\r\n\r\n // The argument reduction method above may result in overflow if the argument y is a massive\r\n // number with exponent >= 1500000000000000 (9e15 / 6 = 1.5e15), so instead recall this\r\n // function using ln(x*10^e) = ln(x) + e*ln(10).\r\n t = getLn10(Ctor, wpr + 2, pr).times(e + '');\r\n x = ln(new Ctor(c0 + '.' + c.slice(1)), wpr - guard).plus(t);\r\n\r\n Ctor.precision = pr;\r\n return sd == null ? (external = true, round(x, pr)) : x;\r\n }\r\n\r\n // x is reduced to a value near 1.\r\n\r\n // Taylor series.\r\n // ln(y) = ln((1 + x)/(1 - x)) = 2(x + x^3/3 + x^5/5 + x^7/7 + ...)\r\n // where x = (y - 1)/(y + 1) (|x| < 1)\r\n sum = numerator = x = divide(x.minus(ONE), x.plus(ONE), wpr);\r\n x2 = round(x.times(x), wpr);\r\n denominator = 3;\r\n\r\n for (;;) {\r\n numerator = round(numerator.times(x2), wpr);\r\n t = sum.plus(divide(numerator, new Ctor(denominator), wpr));\r\n\r\n if (digitsToString(t.d).slice(0, wpr) === digitsToString(sum.d).slice(0, wpr)) {\r\n sum = sum.times(2);\r\n\r\n // Reverse the argument reduction.\r\n if (e !== 0) sum = sum.plus(getLn10(Ctor, wpr + 2, pr).times(e + ''));\r\n sum = divide(sum, new Ctor(n), wpr);\r\n\r\n Ctor.precision = pr;\r\n return sd == null ? (external = true, round(sum, pr)) : sum;\r\n }\r\n\r\n sum = t;\r\n denominator += 2;\r\n }\r\n }\r\n\r\n\r\n /*\r\n * Parse the value of a new Decimal `x` from string `str`.\r\n */\r\n function parseDecimal(x, str) {\r\n var e, i, len;\r\n\r\n // Decimal point?\r\n if ((e = str.indexOf('.')) > -1) str = str.replace('.', '');\r\n\r\n // Exponential form?\r\n if ((i = str.search(/e/i)) > 0) {\r\n\r\n // Determine exponent.\r\n if (e < 0) e = i;\r\n e += +str.slice(i + 1);\r\n str = str.substring(0, i);\r\n } else if (e < 0) {\r\n\r\n // Integer.\r\n e = str.length;\r\n }\r\n\r\n // Determine leading zeros.\r\n for (i = 0; str.charCodeAt(i) === 48;) ++i;\r\n\r\n // Determine trailing zeros.\r\n for (len = str.length; str.charCodeAt(len - 1) === 48;) --len;\r\n str = str.slice(i, len);\r\n\r\n if (str) {\r\n len -= i;\r\n e = e - i - 1;\r\n x.e = mathfloor(e / LOG_BASE);\r\n x.d = [];\r\n\r\n // Transform base\r\n\r\n // e is the base 10 exponent.\r\n // i is where to slice str to get the first word of the digits array.\r\n i = (e + 1) % LOG_BASE;\r\n if (e < 0) i += LOG_BASE;\r\n\r\n if (i < len) {\r\n if (i) x.d.push(+str.slice(0, i));\r\n for (len -= LOG_BASE; i < len;) x.d.push(+str.slice(i, i += LOG_BASE));\r\n str = str.slice(i);\r\n i = LOG_BASE - str.length;\r\n } else {\r\n i -= len;\r\n }\r\n\r\n for (; i--;) str += '0';\r\n x.d.push(+str);\r\n\r\n if (external && (x.e > MAX_E || x.e < -MAX_E)) throw Error(exponentOutOfRange + e);\r\n } else {\r\n\r\n // Zero.\r\n x.s = 0;\r\n x.e = 0;\r\n x.d = [0];\r\n }\r\n\r\n return x;\r\n }\r\n\r\n\r\n /*\r\n * Round `x` to `sd` significant digits, using rounding mode `rm` if present (truncate otherwise).\r\n */\r\n function round(x, sd, rm) {\r\n var i, j, k, n, rd, doRound, w, xdi,\r\n xd = x.d;\r\n\r\n // rd: the rounding digit, i.e. the digit after the digit that may be rounded up.\r\n // w: the word of xd which contains the rounding digit, a base 1e7 number.\r\n // xdi: the index of w within xd.\r\n // n: the number of digits of w.\r\n // i: what would be the index of rd within w if all the numbers were 7 digits long (i.e. if\r\n // they had leading zeros)\r\n // j: if > 0, the actual index of rd within w (if < 0, rd is a leading zero).\r\n\r\n // Get the length of the first word of the digits array xd.\r\n for (n = 1, k = xd[0]; k >= 10; k /= 10) n++;\r\n i = sd - n;\r\n\r\n // Is the rounding digit in the first word of xd?\r\n if (i < 0) {\r\n i += LOG_BASE;\r\n j = sd;\r\n w = xd[xdi = 0];\r\n } else {\r\n xdi = Math.ceil((i + 1) / LOG_BASE);\r\n k = xd.length;\r\n if (xdi >= k) return x;\r\n w = k = xd[xdi];\r\n\r\n // Get the number of digits of w.\r\n for (n = 1; k >= 10; k /= 10) n++;\r\n\r\n // Get the index of rd within w.\r\n i %= LOG_BASE;\r\n\r\n // Get the index of rd within w, adjusted for leading zeros.\r\n // The number of leading zeros of w is given by LOG_BASE - n.\r\n j = i - LOG_BASE + n;\r\n }\r\n\r\n if (rm !== void 0) {\r\n k = mathpow(10, n - j - 1);\r\n\r\n // Get the rounding digit at index j of w.\r\n rd = w / k % 10 | 0;\r\n\r\n // Are there any non-zero digits after the rounding digit?\r\n doRound = sd < 0 || xd[xdi + 1] !== void 0 || w % k;\r\n\r\n // The expression `w % mathpow(10, n - j - 1)` returns all the digits of w to the right of the\r\n // digit at (left-to-right) index j, e.g. if w is 908714 and j is 2, the expression will give\r\n // 714.\r\n\r\n doRound = rm < 4\r\n ? (rd || doRound) && (rm == 0 || rm == (x.s < 0 ? 3 : 2))\r\n : rd > 5 || rd == 5 && (rm == 4 || doRound || rm == 6 &&\r\n\r\n // Check whether the digit to the left of the rounding digit is odd.\r\n ((i > 0 ? j > 0 ? w / mathpow(10, n - j) : 0 : xd[xdi - 1]) % 10) & 1 ||\r\n rm == (x.s < 0 ? 8 : 7));\r\n }\r\n\r\n if (sd < 1 || !xd[0]) {\r\n if (doRound) {\r\n k = getBase10Exponent(x);\r\n xd.length = 1;\r\n\r\n // Convert sd to decimal places.\r\n sd = sd - k - 1;\r\n\r\n // 1, 0.1, 0.01, 0.001, 0.0001 etc.\r\n xd[0] = mathpow(10, (LOG_BASE - sd % LOG_BASE) % LOG_BASE);\r\n x.e = mathfloor(-sd / LOG_BASE) || 0;\r\n } else {\r\n xd.length = 1;\r\n\r\n // Zero.\r\n xd[0] = x.e = x.s = 0;\r\n }\r\n\r\n return x;\r\n }\r\n\r\n // Remove excess digits.\r\n if (i == 0) {\r\n xd.length = xdi;\r\n k = 1;\r\n xdi--;\r\n } else {\r\n xd.length = xdi + 1;\r\n k = mathpow(10, LOG_BASE - i);\r\n\r\n // E.g. 56700 becomes 56000 if 7 is the rounding digit.\r\n // j > 0 means i > number of leading zeros of w.\r\n xd[xdi] = j > 0 ? (w / mathpow(10, n - j) % mathpow(10, j) | 0) * k : 0;\r\n }\r\n\r\n if (doRound) {\r\n for (;;) {\r\n\r\n // Is the digit to be rounded up in the first word of xd?\r\n if (xdi == 0) {\r\n if ((xd[0] += k) == BASE) {\r\n xd[0] = 1;\r\n ++x.e;\r\n }\r\n\r\n break;\r\n } else {\r\n xd[xdi] += k;\r\n if (xd[xdi] != BASE) break;\r\n xd[xdi--] = 0;\r\n k = 1;\r\n }\r\n }\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (i = xd.length; xd[--i] === 0;) xd.pop();\r\n\r\n if (external && (x.e > MAX_E || x.e < -MAX_E)) {\r\n throw Error(exponentOutOfRange + getBase10Exponent(x));\r\n }\r\n\r\n return x;\r\n }\r\n\r\n\r\n function subtract(x, y) {\r\n var d, e, i, j, k, len, xd, xe, xLTy, yd,\r\n Ctor = x.constructor,\r\n pr = Ctor.precision;\r\n\r\n // Return y negated if x is zero.\r\n // Return x if y is zero and x is non-zero.\r\n if (!x.s || !y.s) {\r\n if (y.s) y.s = -y.s;\r\n else y = new Ctor(x);\r\n return external ? round(y, pr) : y;\r\n }\r\n\r\n xd = x.d;\r\n yd = y.d;\r\n\r\n // x and y are non-zero numbers with the same sign.\r\n\r\n e = y.e;\r\n xe = x.e;\r\n xd = xd.slice();\r\n k = xe - e;\r\n\r\n // If exponents differ...\r\n if (k) {\r\n xLTy = k < 0;\r\n\r\n if (xLTy) {\r\n d = xd;\r\n k = -k;\r\n len = yd.length;\r\n } else {\r\n d = yd;\r\n e = xe;\r\n len = xd.length;\r\n }\r\n\r\n // Numbers with massively different exponents would result in a very high number of zeros\r\n // needing to be prepended, but this can be avoided while still ensuring correct rounding by\r\n // limiting the number of zeros to `Math.ceil(pr / LOG_BASE) + 2`.\r\n i = Math.max(Math.ceil(pr / LOG_BASE), len) + 2;\r\n\r\n if (k > i) {\r\n k = i;\r\n d.length = 1;\r\n }\r\n\r\n // Prepend zeros to equalise exponents.\r\n d.reverse();\r\n for (i = k; i--;) d.push(0);\r\n d.reverse();\r\n\r\n // Base 1e7 exponents equal.\r\n } else {\r\n\r\n // Check digits to determine which is the bigger number.\r\n\r\n i = xd.length;\r\n len = yd.length;\r\n xLTy = i < len;\r\n if (xLTy) len = i;\r\n\r\n for (i = 0; i < len; i++) {\r\n if (xd[i] != yd[i]) {\r\n xLTy = xd[i] < yd[i];\r\n break;\r\n }\r\n }\r\n\r\n k = 0;\r\n }\r\n\r\n if (xLTy) {\r\n d = xd;\r\n xd = yd;\r\n yd = d;\r\n y.s = -y.s;\r\n }\r\n\r\n len = xd.length;\r\n\r\n // Append zeros to xd if shorter.\r\n // Don't add zeros to yd if shorter as subtraction only needs to start at yd length.\r\n for (i = yd.length - len; i > 0; --i) xd[len++] = 0;\r\n\r\n // Subtract yd from xd.\r\n for (i = yd.length; i > k;) {\r\n if (xd[--i] < yd[i]) {\r\n for (j = i; j && xd[--j] === 0;) xd[j] = BASE - 1;\r\n --xd[j];\r\n xd[i] += BASE;\r\n }\r\n\r\n xd[i] -= yd[i];\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (; xd[--len] === 0;) xd.pop();\r\n\r\n // Remove leading zeros and adjust exponent accordingly.\r\n for (; xd[0] === 0; xd.shift()) --e;\r\n\r\n // Zero?\r\n if (!xd[0]) return new Ctor(0);\r\n\r\n y.d = xd;\r\n y.e = e;\r\n\r\n //return external && xd.length >= pr / LOG_BASE ? round(y, pr) : y;\r\n return external ? round(y, pr) : y;\r\n }\r\n\r\n\r\n function toString(x, isExp, sd) {\r\n var k,\r\n e = getBase10Exponent(x),\r\n str = digitsToString(x.d),\r\n len = str.length;\r\n\r\n if (isExp) {\r\n if (sd && (k = sd - len) > 0) {\r\n str = str.charAt(0) + '.' + str.slice(1) + getZeroString(k);\r\n } else if (len > 1) {\r\n str = str.charAt(0) + '.' + str.slice(1);\r\n }\r\n\r\n str = str + (e < 0 ? 'e' : 'e+') + e;\r\n } else if (e < 0) {\r\n str = '0.' + getZeroString(-e - 1) + str;\r\n if (sd && (k = sd - len) > 0) str += getZeroString(k);\r\n } else if (e >= len) {\r\n str += getZeroString(e + 1 - len);\r\n if (sd && (k = sd - e - 1) > 0) str = str + '.' + getZeroString(k);\r\n } else {\r\n if ((k = e + 1) < len) str = str.slice(0, k) + '.' + str.slice(k);\r\n if (sd && (k = sd - len) > 0) {\r\n if (e + 1 === len) str += '.';\r\n str += getZeroString(k);\r\n }\r\n }\r\n\r\n return x.s < 0 ? '-' + str : str;\r\n }\r\n\r\n\r\n // Does not strip trailing zeros.\r\n function truncate(arr, len) {\r\n if (arr.length > len) {\r\n arr.length = len;\r\n return true;\r\n }\r\n }\r\n\r\n\r\n // Decimal methods\r\n\r\n\r\n /*\r\n * clone\r\n * config/set\r\n */\r\n\r\n\r\n /*\r\n * Create and return a Decimal constructor with the same configuration properties as this Decimal\r\n * constructor.\r\n *\r\n */\r\n function clone(obj) {\r\n var i, p, ps;\r\n\r\n /*\r\n * The Decimal constructor and exported function.\r\n * Return a new Decimal instance.\r\n *\r\n * value {number|string|Decimal} A numeric value.\r\n *\r\n */\r\n function Decimal(value) {\r\n var x = this;\r\n\r\n // Decimal called without new.\r\n if (!(x instanceof Decimal)) return new Decimal(value);\r\n\r\n // Retain a reference to this Decimal constructor, and shadow Decimal.prototype.constructor\r\n // which points to Object.\r\n x.constructor = Decimal;\r\n\r\n // Duplicate.\r\n if (value instanceof Decimal) {\r\n x.s = value.s;\r\n x.e = value.e;\r\n x.d = (value = value.d) ? value.slice() : value;\r\n return;\r\n }\r\n\r\n if (typeof value === 'number') {\r\n\r\n // Reject Infinity/NaN.\r\n if (value * 0 !== 0) {\r\n throw Error(invalidArgument + value);\r\n }\r\n\r\n if (value > 0) {\r\n x.s = 1;\r\n } else if (value < 0) {\r\n value = -value;\r\n x.s = -1;\r\n } else {\r\n x.s = 0;\r\n x.e = 0;\r\n x.d = [0];\r\n return;\r\n }\r\n\r\n // Fast path for small integers.\r\n if (value === ~~value && value < 1e7) {\r\n x.e = 0;\r\n x.d = [value];\r\n return;\r\n }\r\n\r\n return parseDecimal(x, value.toString());\r\n } else if (typeof value !== 'string') {\r\n throw Error(invalidArgument + value);\r\n }\r\n\r\n // Minus sign?\r\n if (value.charCodeAt(0) === 45) {\r\n value = value.slice(1);\r\n x.s = -1;\r\n } else {\r\n x.s = 1;\r\n }\r\n\r\n if (isDecimal.test(value)) parseDecimal(x, value);\r\n else throw Error(invalidArgument + value);\r\n }\r\n\r\n Decimal.prototype = P;\r\n\r\n Decimal.ROUND_UP = 0;\r\n Decimal.ROUND_DOWN = 1;\r\n Decimal.ROUND_CEIL = 2;\r\n Decimal.ROUND_FLOOR = 3;\r\n Decimal.ROUND_HALF_UP = 4;\r\n Decimal.ROUND_HALF_DOWN = 5;\r\n Decimal.ROUND_HALF_EVEN = 6;\r\n Decimal.ROUND_HALF_CEIL = 7;\r\n Decimal.ROUND_HALF_FLOOR = 8;\r\n\r\n Decimal.clone = clone;\r\n Decimal.config = Decimal.set = config;\r\n\r\n if (obj === void 0) obj = {};\r\n if (obj) {\r\n ps = ['precision', 'rounding', 'toExpNeg', 'toExpPos', 'LN10'];\r\n for (i = 0; i < ps.length;) if (!obj.hasOwnProperty(p = ps[i++])) obj[p] = this[p];\r\n }\r\n\r\n Decimal.config(obj);\r\n\r\n return Decimal;\r\n }\r\n\r\n\r\n /*\r\n * Configure global settings for a Decimal constructor.\r\n *\r\n * `obj` is an object with one or more of the following properties,\r\n *\r\n * precision {number}\r\n * rounding {number}\r\n * toExpNeg {number}\r\n * toExpPos {number}\r\n *\r\n * E.g. Decimal.config({ precision: 20, rounding: 4 })\r\n *\r\n */\r\n function config(obj) {\r\n if (!obj || typeof obj !== 'object') {\r\n throw Error(decimalError + 'Object expected');\r\n }\r\n var i, p, v,\r\n ps = [\r\n 'precision', 1, MAX_DIGITS,\r\n 'rounding', 0, 8,\r\n 'toExpNeg', -1 / 0, 0,\r\n 'toExpPos', 0, 1 / 0\r\n ];\r\n\r\n for (i = 0; i < ps.length; i += 3) {\r\n if ((v = obj[p = ps[i]]) !== void 0) {\r\n if (mathfloor(v) === v && v >= ps[i + 1] && v <= ps[i + 2]) this[p] = v;\r\n else throw Error(invalidArgument + p + ': ' + v);\r\n }\r\n }\r\n\r\n if ((v = obj[p = 'LN10']) !== void 0) {\r\n if (v == Math.LN10) this[p] = new this(v);\r\n else throw Error(invalidArgument + p + ': ' + v);\r\n }\r\n\r\n return this;\r\n }\r\n\r\n\r\n // Create and configure initial Decimal constructor.\r\n Decimal = clone(Decimal);\r\n\r\n Decimal['default'] = Decimal.Decimal = Decimal;\r\n\r\n // Internal constant.\r\n ONE = new Decimal(1);\r\n\r\n\r\n // Export.\r\n\r\n\r\n // AMD.\r\n if (typeof define == 'function' && define.amd) {\r\n define(function () {\r\n return Decimal;\r\n });\r\n\r\n // Node and other environments that support module.exports.\r\n } else if (typeof module != 'undefined' && module.exports) {\r\n module.exports = Decimal;\r\n\r\n // Browser.\r\n } else {\r\n if (!globalScope) {\r\n globalScope = typeof self != 'undefined' && self && self.self == self\r\n ? self : Function('return this')();\r\n }\r\n\r\n globalScope.Decimal = Decimal;\r\n }\r\n})(this);\r\n","/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = '';\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (arg) {\n\t\t\t\tclasses = appendClass(classes, parseValue(arg));\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction parseValue (arg) {\n\t\tif (typeof arg === 'string' || typeof arg === 'number') {\n\t\t\treturn arg;\n\t\t}\n\n\t\tif (typeof arg !== 'object') {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (Array.isArray(arg)) {\n\t\t\treturn classNames.apply(null, arg);\n\t\t}\n\n\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\treturn arg.toString();\n\t\t}\n\n\t\tvar classes = '';\n\n\t\tfor (var key in arg) {\n\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\tclasses = appendClass(classes, key);\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction appendClass (value, newClass) {\n\t\tif (!newClass) {\n\t\t\treturn value;\n\t\t}\n\t\n\t\tif (value) {\n\t\t\treturn value + ' ' + newClass;\n\t\t}\n\t\n\t\treturn value + newClass;\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","import * as React from 'react';\nimport { DetailsListBase } from './DetailsList.base';\nimport { ISelection, SelectionMode, ISelectionZoneProps } from '../../utilities/selection/index';\nimport { IRefObject, IBaseProps, IRenderFunction, IStyleFunctionOrObject, IComponentAs } from '../../Utilities';\nimport { IDragDropEvents, IDragDropContext, IDragDropHelper, IDragDropOptions } from './../../utilities/dragdrop/index';\nimport { IGroup, IGroupRenderProps, IGroupDividerProps, IGroupedListProps } from '../GroupedList/index';\nimport { IDetailsRowProps, IDetailsRowBaseProps } from '../DetailsList/DetailsRow';\nimport { IDetailsHeaderProps, IDetailsHeaderBaseProps } from './DetailsHeader';\nimport { IDetailsFooterProps, IDetailsFooterBaseProps } from './DetailsFooter.types';\nimport { IWithViewportProps, IViewport } from '../../utilities/decorators/withViewport';\nimport { IList, IListProps, ScrollToMode } from '../List/index';\nimport { ITheme, IStyle } from '../../Styling';\nimport { ICellStyleProps, IDetailsItemProps } from './DetailsRow.types';\nimport { IDetailsCheckboxProps } from './DetailsRowCheck.types';\nimport {\n IDetailsColumnStyleProps,\n IDetailsColumnProps,\n IDetailsColumnStyles,\n IDetailsColumnFilterIconProps,\n} from './DetailsColumn.types';\n\nexport {\n IDetailsHeaderProps,\n IDetailsRowBaseProps,\n IDetailsHeaderBaseProps,\n IDetailsFooterBaseProps,\n IDragDropContext,\n IDragDropEvents,\n IDragDropHelper,\n IDragDropOptions,\n IViewport,\n IWithViewportProps,\n};\n\n/**\n * {@docCategory DetailsList}\n */\nexport interface IDetailsList extends IList {\n /**\n * Ensures that the list content is updated. Call this in cases where the list prop updates don't change, but the list\n * still needs to be re-evaluated. For example, if a sizer bar is adjusted and causes the list width to change,\n * you can call this to force a re-evaluation. Be aware that this can be an expensive operation and should be\n * done sparingly.\n */\n forceUpdate: () => void;\n\n /**\n * Scroll to and focus the item at the given index. focusIndex will call scrollToIndex on the specified index.\n *\n * @param index - Index of item to scroll to\n * @param forceIntoFirstElement - If true, focus will be set to the first focusable child element of the item rather\n * than the item itself.\n * @param measureItem - Optional callback to measure the height of an individual item\n * @param scrollToMode - Optional setting to determine where in the window the item should be scrolled to\n * when focused.\n */\n focusIndex: (\n index: number,\n forceIntoFirstElement?: boolean,\n measureItem?: (itemIndex: number) => number,\n scrollToMode?: ScrollToMode,\n ) => void;\n\n /**\n * Get the start index of the page that is currently in view\n */\n getStartItemIndexInView: () => number;\n}\n\n/**\n * {@docCategory DetailsList}\n */\nexport interface IDetailsListProps extends IBaseProps<IDetailsList>, IWithViewportProps {\n /** Theme provided by a higher-order component. */\n theme?: ITheme;\n\n /** Custom overrides to the themed or default styles. */\n styles?: IStyleFunctionOrObject<IDetailsListStyleProps, IDetailsListStyles>;\n\n /**\n * Callback to access the IDetailsList interface. Use this instead of ref for accessing\n * the public methods and properties of the component.\n */\n componentRef?: IRefObject<IDetailsList>;\n\n /** A key that uniquely identifies the given items. If provided, the selection will be reset when the key changes. */\n setKey?: string;\n\n /** The items to render. */\n items: any[];\n\n /** Set this to true to indicate that the items being displayed are placeholder data. */\n isPlaceholderData?: boolean;\n\n /** Properties to pass through to the List components being rendered. */\n listProps?: IListProps;\n\n /** Default index to set focus to once the items have rendered and the index exists. */\n initialFocusedIndex?: number;\n\n /** Class name to add to the root element. */\n className?: string;\n\n /** Grouping instructions. */\n groups?: IGroup[];\n\n /** Override properties to render groups. */\n groupProps?: IDetailsGroupRenderProps;\n\n /** Override for the indent width used for group nesting. */\n indentWidth?: number;\n\n /** Selection model to track selection state. */\n selection?: ISelection;\n\n /** Controls how/if the details list manages selection. Options include none, single, multiple */\n selectionMode?: SelectionMode;\n\n /**\n * By default, selection is cleared when clicking on an empty (non-focusable) section of the screen.\n * Setting this value to true overrides that behavior and maintains selection.\n * @defaultvalue false\n **/\n selectionPreservedOnEmptyClick?: boolean;\n\n /**\n * Additional props to pass through to the SelectionZone created by default.\n */\n selectionZoneProps?: ISelectionZoneProps;\n\n /** Controls how the columns are adjusted. */\n layoutMode?: DetailsListLayoutMode;\n\n /**\n * Controls the visibility of selection check box.\n * @defaultvalue CheckboxVisibility.onHover\n */\n checkboxVisibility?: CheckboxVisibility;\n\n /**\n * Controls the visibility of the header.\n * @defaultvalue true\n */\n isHeaderVisible?: boolean;\n\n /** column defitions. If none are provided, default columns will be created based on the items' properties. */\n columns?: IColumn[];\n\n /** Controls how the list contrains overflow. */\n constrainMode?: ConstrainMode;\n\n /** Event names and corresponding callbacks that will be registered to rendered row elements. */\n rowElementEventMap?: { eventName: string; callback: (context: IDragDropContext, event?: any) => void }[];\n\n /** Callback for when the list has been updated. Useful for telemetry tracking externally. */\n onDidUpdate?: (detailsList?: DetailsListBase) => void;\n\n /**\n * Callback for when a given row has been mounted. Useful for identifying when a row has been rendered on the page.\n */\n onRowDidMount?: (item?: any, index?: number) => void;\n\n /**\n * Callback for when a given row has been unmounted.\n * Useful for identifying when a row has been removed from the page.\n */\n onRowWillUnmount?: (item?: any, index?: number) => void;\n\n /** Callback for when the user clicks on the column header. */\n onColumnHeaderClick?: (ev?: React.MouseEvent<HTMLElement>, column?: IColumn) => void;\n\n /** Callback for when the user asks for a contextual menu (usually via right click) from a column header. */\n onColumnHeaderContextMenu?: (column?: IColumn, ev?: React.MouseEvent<HTMLElement>) => void;\n\n /** Callback fired on column resize */\n onColumnResize?: (column?: IColumn, newWidth?: number, columnIndex?: number) => void;\n\n /** Callback for when a given row has been invoked (by pressing enter while it is selected.) */\n onItemInvoked?: (item?: any, index?: number, ev?: Event) => void;\n\n /**\n * Callback for when the context menu of an item has been accessed.\n * If undefined or false is returned, `ev.preventDefault()` will be called.\n */\n onItemContextMenu?: (item?: any, index?: number, ev?: Event) => void | boolean;\n\n /**\n * Callback to override the default row rendering.\n */\n onRenderRow?: IRenderFunction<IDetailsRowProps>;\n\n /**\n * If provided, will be the \"default\" item column renderer method.\n * This affects cells within the rows, not the rows themselves.\n * If a column definition provides its own `onRender` method, that will be used instead of this.\n */\n onRenderItemColumn?: (item?: any, index?: number, column?: IColumn) => React.ReactNode;\n\n /**\n * If provided, will be the \"default\" item column cell value return.\n * A column's `getValueKey` can override `getCellValueKey`.\n */\n getCellValueKey?: (item?: any, index?: number, column?: IColumn) => string;\n\n /** Map of callback functions related to row drag and drop functionality. */\n dragDropEvents?: IDragDropEvents;\n\n /** Callback for what to render when the item is missing. */\n onRenderMissingItem?: (index?: number, rowProps?: IDetailsRowProps) => React.ReactNode;\n\n /** An override to render the details header. */\n onRenderDetailsHeader?: IRenderFunction<IDetailsHeaderProps>;\n\n /** An override to render the details footer. */\n onRenderDetailsFooter?: IRenderFunction<IDetailsFooterProps>;\n\n /** If provided, can be used to render a custom checkbox. */\n onRenderCheckbox?: IRenderFunction<IDetailsListCheckboxProps>;\n\n /** Viewport info, provided by the `withViewport` decorator. */\n viewport?: IViewport;\n\n /**\n * Callback for when an item in the list becomes active by clicking anywhere inside the row or navigating to it\n * with the keyboard.\n */\n onActiveItemChanged?: (item?: any, index?: number, ev?: React.FocusEvent<HTMLElement>) => void;\n\n /** Accessible label for the list header. */\n ariaLabelForListHeader?: string;\n\n /** Accessible label for the select all checkbox. */\n ariaLabelForSelectAllCheckbox?: string;\n\n /** Accessible label for the name of the selection column. */\n ariaLabelForSelectionColumn?: string;\n\n /** Callback to get the aria-label string for a given item. */\n getRowAriaLabel?: (item: any) => string;\n\n /** Callback to get the aria-describedby IDs (space-separated strings) of elements that describe the item. */\n getRowAriaDescribedBy?: (item: any) => string;\n\n /**\n * Callback to get the item key, to be used in the selection and on render.\n * Must be provided if sorting or filtering is enabled.\n */\n getKey?: (item: any, index?: number) => string;\n\n /** Accessible label describing or summarizing the list. */\n ariaLabel?: string;\n\n /** Accessible label for the row check button, e.g. \"select row\" */\n checkButtonAriaLabel?: string;\n\n /** Accessible label for the group header check button, e.g. \"select section\". */\n checkButtonGroupAriaLabel?: string;\n\n /** Accessible label for the grid within the list. */\n ariaLabelForGrid?: string;\n\n /** An optional margin for proportional columns, to e.g. account for scrollbars when laying out width. */\n flexMargin?: number;\n\n /**\n * Whether the role `application` should be applied to the list.\n * @defaultvalue false\n */\n shouldApplyApplicationRole?: boolean;\n\n /**\n * The minimum mouse move distance to interpret the action as drag event.\n * @defaultvalue 5\n */\n minimumPixelsForDrag?: number;\n\n /**\n * Whether to render in compact mode.\n * @defaultvalue false\n */\n compact?: boolean;\n\n /**\n * Whether to enable render page caching. This is an experimental performance optimization that is off by default.\n * @defaultvalue false\n */\n usePageCache?: boolean;\n\n /**\n * Callback to determine whether the list should be rendered in full, or virtualized.\n *\n * Virtualization will add and remove pages of items as the user scrolls them into the visible range.\n * This benefits larger list scenarios by reducing the DOM on the screen, but can negatively affect performance\n * for smaller lists.\n *\n * The default implementation will virtualize when this callback is not provided.\n */\n onShouldVirtualize?: (props: IListProps) => boolean;\n\n /** Class name to add to the cell of a checkbox. */\n checkboxCellClassName?: string;\n\n /** Whether the selection zone should enter modal state on touch. */\n enterModalSelectionOnTouch?: boolean;\n\n /** Options for column reordering using drag and drop. */\n columnReorderOptions?: IColumnReorderOptions;\n\n /** Callback to override default group height calculation used by list virtualization. */\n getGroupHeight?: IGroupedListProps['getGroupHeight'];\n\n /**\n * Whether to re-render a row only when props changed. Might cause regression when depending on external updates.\n * @defaultvalue false\n */\n useReducedRowRenderer?: boolean;\n\n /**\n * Props impacting the render style of cells. Since these have an impact on calculated column widths, they are\n * handled separately from normal theme styling, but they are passed to the styling system.\n */\n cellStyleProps?: ICellStyleProps;\n\n /** Whether to disable the built-in SelectionZone, so the host component can provide its own. */\n disableSelectionZone?: boolean;\n\n /**\n * Determines if an item is selected on focus.\n *\n * @defaultvalue true\n */\n isSelectedOnFocus?: boolean;\n\n /** Whether to animate updates */\n enableUpdateAnimations?: boolean;\n\n /**\n * Whether to use fast icon and check components. The icons can't be targeted by customization\n * but are still customizable via class names.\n * @defaultvalue true\n */\n useFastIcons?: boolean;\n\n /** Role for the list. */\n role?: string;\n}\n\n/**\n * {@docCategory DetailsList}\n */\nexport interface IColumn {\n /** A unique key for identifying the column. */\n key: string;\n\n /** Name to render on the column header. */\n name: string;\n\n /**\n * The field to pull the text value from for the column.\n * Can be unset if a custom `onRender` method is provided.\n */\n fieldName?: string;\n\n /**\n * If specified, the width of the column is a portion of the available space equal to this value divided by the sum\n * of all proportional column widths in the list. For example, if there is a list with two proportional columns that\n * have widths of 1 and 3, they will respectively occupy (1/4) = 25% and (3/4) = 75% of the remaining space. Note that\n * this relies on viewport measures and will not work well with skipViewportMeasures.\n */\n flexGrow?: number;\n\n /** Class name to apply to the column cell within each row. */\n className?: string;\n\n /** Custom overrides to the themed or default styles. */\n styles?: IStyleFunctionOrObject<IDetailsColumnStyleProps, IDetailsColumnStyles>;\n\n /** Minimum width for the column. */\n minWidth: number;\n\n /**\n * If specified, the width of the column is a portion of the available space equal to this value divided by the sum\n * of all proportional column widths in the list. For example, if there is a list with two proportional columns that\n * have widths of 1 and 3, they will respectively occupy (1/4) = 25% and (2/4) = 75% of the remaining space. Note that\n * this relies on viewport measures and will not work well with skipViewportMeasures.\n */\n targetWidthProportion?: number;\n\n /**\n * Accessible label for the column. The column name will still be used as the primary label,\n * but this text (if specified) will be read after the column name.\n */\n ariaLabel?: string;\n\n /** Whether the column is a header for the given row. There should be only one column with this set to true. */\n isRowHeader?: boolean;\n\n /** Maximum width for the column, if stretching is allowed in justified scenarios. */\n maxWidth?: number;\n\n /**\n * Defines how the column's header should render.\n * @defaultvalue ColumnActionsMode.clickable\n */\n columnActionsMode?: ColumnActionsMode;\n\n /** Custom icon to use in the column header. */\n iconName?: string;\n\n /**\n * Whether only the icon should be displayed in the column header.\n * If true, the column name and dropdown chevron will not be displayed.\n */\n isIconOnly?: boolean;\n\n /** Class name for the icon within the header. */\n iconClassName?: string;\n\n /**\n * If true, allow the column to be collapsed when rendered in justified layout.\n * @deprecated Use `isCollapsible`\n */\n isCollapsable?: boolean;\n\n /** If true, allow the column to be collapsed when rendered in justified layout. */\n isCollapsible?: boolean;\n\n /** Determines if the column is currently sorted. Renders a sort arrow in the column header. */\n isSorted?: boolean;\n\n /** Determines if the sort arrow is pointed down (descending) or up. */\n isSortedDescending?: boolean;\n\n /** Determines if the column can be resized. */\n isResizable?: boolean;\n\n /** Determines if the column can render multi-line text. */\n isMultiline?: boolean;\n\n /** Custom renderer for cell content, instead of the default text rendering. */\n onRender?: (item?: any, index?: number, column?: IColumn) => any;\n\n /** Custom override for the parent list's `getCellValueKey`. */\n getValueKey?: (item?: any, index?: number, column?: IColumn) => string;\n\n /** Custom renderer for column header divider. */\n onRenderDivider?: IRenderFunction<IDetailsColumnProps>;\n\n /** Custom renderer for filter icon. */\n onRenderFilterIcon?: IRenderFunction<IDetailsColumnFilterIconProps>;\n\n /** Custom renderer for column header content, instead of the default text rendering. */\n onRenderHeader?: IRenderFunction<IDetailsColumnProps>;\n\n /** Whether the list is filtered by this column. If true, shows a filter icon next to this column's name. */\n isFiltered?: boolean;\n\n /** Callback for when the user clicks on the column header. */\n onColumnClick?: (ev: React.MouseEvent<HTMLElement>, column: IColumn) => void;\n\n /** Callback for when the user opens the column header context menu. */\n onColumnContextMenu?: (column?: IColumn, ev?: React.MouseEvent<HTMLElement>) => void;\n\n /**\n * Callback for when the column is resized (`width` is the current width).\n *\n * Prefer this over `DetailsList`'s `onColumnResize` if you require the `IColumn` to report its width\n * after every resize event. Consider debouncing the callback if resize events occur frequently.\n */\n onColumnResize?: (width?: number) => void;\n\n /** Whether the list is grouped by this column. If true, shows a grouped icon next to this column's name. */\n isGrouped?: boolean;\n\n /** Arbitrary data passthrough which can be used by the caller. */\n data?: any;\n\n /** Internal only value. */\n calculatedWidth?: number;\n\n /**\n * Internal only value.\n * Remembers the actual width of the column in any case.\n * `calculatedWidth` is only saved when it's defined by user, not for justified calculations.\n */\n currentWidth?: number;\n\n /** Class name to apply to the column header cell. */\n headerClassName?: string;\n\n /** If true, add additional LTR padding-right to column and cells. */\n isPadded?: boolean;\n\n /**\n * Accessible label for indicating that the list is sorted by this column in ascending order.\n * This will be read after the main column header label.\n */\n sortAscendingAriaLabel?: string;\n\n /**\n * Accessible label for indicating that the list is sorted by this column in descending order.\n * This will be read after the main column header label.\n */\n sortDescendingAriaLabel?: string;\n\n /** Accessible label for the status of this column when grouped. */\n groupAriaLabel?: string;\n\n /** Accessible label for the status of this column when filtered. */\n filterAriaLabel?: string;\n\n /** Whether a dropdown menu is open so that the appropriate ARIA attributes are rendered. */\n isMenuOpen?: boolean;\n}\n\n/**\n * Enum to describe how a particular column header behaves.\n * This is used to to specify the property `IColumn.columnActionsMode`.\n * If `IColumn.columnActionsMode` is undefined, it's equivalent to `ColumnActionsMode.clickable`.\n * {@docCategory DetailsList}\n */\nexport enum ColumnActionsMode {\n /** Renders the column header as disabled. */\n disabled = 0,\n\n /** Renders the column header as clickable. Default value. */\n clickable = 1,\n\n /** Renders the column header as clickable and displays the dropdown chevron. */\n hasDropdown = 2,\n}\n\n/**\n * {@docCategory DetailsList}\n */\nexport enum ConstrainMode {\n /** Lets the content grow which allows the page to manage scrolling. */\n unconstrained = 0,\n\n /** Constrains the list to the given layout space. */\n horizontalConstrained = 1,\n}\n\n/**\n * {@docCategory DetailsList}\n */\nexport interface IColumnReorderOptions {\n /**\n * Specifies the number fixed columns from left\n * @defaultvalue 0\n */\n frozenColumnCountFromStart?: number;\n\n /**\n * Specifies the number fixed columns from right\n * @defaultvalue 0\n */\n frozenColumnCountFromEnd?: number;\n\n /**\n * Callback to handle when dragging on this column's DetailsHeader has started.\n */\n onColumnDragStart?: (dragStarted: boolean) => void;\n\n /**\n * Callback to handle column reordering.\n * `draggedIndex` is the source column index, which should be placed at `targetIndex`.\n * @deprecated Use `onColumnDrop` instead.\n */\n handleColumnReorder?: (draggedIndex: number, targetIndex: number) => void;\n\n /**\n * Callback to handle column reordering.\n * `draggedIndex` is the source column index, which should be placed at `targetIndex`.\n */\n onColumnDrop?: (dragDropDetails: IColumnDragDropDetails) => void;\n\n /**\n * Callback to handle when dragging on this column's DetailsHeader has finished.\n */\n onDragEnd?: (columnDropLocationDetails: ColumnDragEndLocation) => void;\n}\n\n/**\n * {@docCategory DetailsList}\n */\nexport interface IColumnDragDropDetails {\n /**\n * Specifies the source column index\n * @defaultvalue -1\n */\n draggedIndex: number;\n\n /**\n * Specifies the target column index\n * @defaultvalue -1\n */\n targetIndex: number;\n}\n\n/**\n * Enum to describe where the column has been dropped, after starting the drag\n * {@docCategory DetailsList}\n */\nexport enum ColumnDragEndLocation {\n /** Drag ended outside of current list */\n outside = 0,\n\n /** Drag ended within current list */\n surface = 1,\n\n /** Drag ended on header */\n header = 2,\n}\n\n/**\n * {@docCategory DetailsList}\n */\nexport enum DetailsListLayoutMode {\n /**\n * Lets the user resize columns and makes not attempt to fit them.\n */\n fixedColumns = 0,\n\n /**\n * Manages which columns are visible, tries to size them according to their min/max rules and drops\n * off columns that can't fit and have isCollapsible set.\n */\n justified = 1,\n}\n\n/**\n * {@docCategory DetailsList}\n */\nexport enum CheckboxVisibility {\n /** Visible on hover. */\n onHover = 0,\n\n /** Visible always. */\n always = 1,\n\n /** Hide checkboxes. */\n hidden = 2,\n}\n\n/**\n * {@docCategory DetailsList}\n */\nexport type IDetailsListStyleProps = Required<Pick<IDetailsListProps, 'theme'>> &\n Pick<IDetailsListProps, 'className'> & {\n /** Whether the list is horizontally constrained */\n isHorizontalConstrained?: boolean;\n\n /** Whether the list is in compact mode */\n compact?: boolean;\n\n /** Whether the list is fixed in size */\n isFixed?: boolean;\n };\n\n/**\n * {@docCategory DetailsList}\n */\nexport interface IDetailsListStyles {\n root: IStyle;\n focusZone: IStyle;\n headerWrapper: IStyle;\n contentWrapper: IStyle;\n}\n\n/**\n * {@docCategory DetailsList}\n */\nexport interface IDetailsGroupRenderProps extends IGroupRenderProps {\n onRenderFooter?: IRenderFunction<IDetailsGroupDividerProps>;\n onRenderHeader?: IRenderFunction<IDetailsGroupDividerProps>;\n groupedListAs?: IComponentAs<IGroupedListProps>;\n}\n\n/**\n * {@docCategory DetailsList}\n */\nexport interface IDetailsGroupDividerProps extends IGroupDividerProps, IDetailsItemProps {}\n\nexport interface IDetailsListCheckboxProps extends IDetailsCheckboxProps {}\n","import { _isSSR } from './setSSR';\n\nlet _window: Window | undefined = undefined;\n\n// Note: Accessing \"window\" in IE11 is somewhat expensive, and calling \"typeof window\"\n// hits a memory leak, whereas aliasing it and calling \"typeof _window\" does not.\n// Caching the window value at the file scope lets us minimize the impact.\ntry {\n _window = window;\n} catch (e) {\n /* no-op */\n}\n\n/**\n * Helper to get the window object. The helper will make sure to use a cached variable\n * of \"window\", to avoid overhead and memory leaks in IE11. Note that in popup scenarios the\n * window object won't match the \"global\" window object, and for these scenarios, you should\n * pass in an element hosted within the popup.\n *\n * @public\n */\nexport function getWindow(rootElement?: Element | null): Window | undefined {\n if (_isSSR || typeof _window === 'undefined') {\n return undefined;\n } else {\n const el = rootElement as Element;\n\n return el && el.ownerDocument && el.ownerDocument.defaultView ? el.ownerDocument.defaultView : _window;\n }\n}\n","/**\n * Adapted from React: https://github.com/facebook/react/blob/master/packages/shared/formatProdErrorMessage.js\n *\n * Do not require this module directly! Use normal throw error calls. These messages will be replaced with error codes\n * during build.\n * @param {number} code\n */\nexport function formatProdErrorMessage(code: number) {\n return `Minified Redux error #${code}; visit https://redux.js.org/Errors?code=${code} for the full message or ` + 'use the non-minified dev environment for full errors. ';\n}","declare global {\n interface SymbolConstructor {\n readonly observable: symbol;\n }\n}\nconst $$observable = /* #__PURE__ */(() => typeof Symbol === 'function' && Symbol.observable || '@@observable')();\nexport default $$observable;","/**\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 */\n\nconst randomString = () => Math.random().toString(36).substring(7).split('').join('.');\nconst ActionTypes = {\n INIT: `@@redux/INIT${/* #__PURE__ */randomString()}`,\n REPLACE: `@@redux/REPLACE${/* #__PURE__ */randomString()}`,\n PROBE_UNKNOWN_ACTION: () => `@@redux/PROBE_UNKNOWN_ACTION${randomString()}`\n};\nexport default ActionTypes;","import { formatProdErrorMessage as _formatProdErrorMessage13 } from \"src/utils/formatProdErrorMessage\";\nimport { formatProdErrorMessage as _formatProdErrorMessage12 } from \"src/utils/formatProdErrorMessage\";\nimport { formatProdErrorMessage as _formatProdErrorMessage11 } from \"src/utils/formatProdErrorMessage\";\nimport { formatProdErrorMessage as _formatProdErrorMessage10 } from \"src/utils/formatProdErrorMessage\";\nimport { formatProdErrorMessage as _formatProdErrorMessage9 } from \"src/utils/formatProdErrorMessage\";\nimport { formatProdErrorMessage as _formatProdErrorMessage8 } from \"src/utils/formatProdErrorMessage\";\nimport { formatProdErrorMessage as _formatProdErrorMessage7 } from \"src/utils/formatProdErrorMessage\";\nimport { formatProdErrorMessage as _formatProdErrorMessage6 } from \"src/utils/formatProdErrorMessage\";\nimport { formatProdErrorMessage as _formatProdErrorMessage5 } from \"src/utils/formatProdErrorMessage\";\nimport { formatProdErrorMessage as _formatProdErrorMessage4 } from \"src/utils/formatProdErrorMessage\";\nimport { formatProdErrorMessage as _formatProdErrorMessage3 } from \"src/utils/formatProdErrorMessage\";\nimport { formatProdErrorMessage as _formatProdErrorMessage2 } from \"src/utils/formatProdErrorMessage\";\nimport { formatProdErrorMessage as _formatProdErrorMessage } from \"src/utils/formatProdErrorMessage\";\nimport $$observable from './utils/symbol-observable';\nimport { Store, StoreEnhancer, Dispatch, Observer, ListenerCallback, UnknownIfNonSpecific } from './types/store';\nimport { Action } from './types/actions';\nimport { Reducer } from './types/reducers';\nimport ActionTypes from './utils/actionTypes';\nimport isPlainObject from './utils/isPlainObject';\nimport { kindOf } from './utils/kindOf';\n\n/**\n * @deprecated\n *\n * **We recommend using the `configureStore` method\n * of the `@reduxjs/toolkit` package**, which replaces `createStore`.\n *\n * Redux Toolkit is our recommended approach for writing Redux logic today,\n * including store setup, reducers, data fetching, and more.\n *\n * **For more details, please read this Redux docs page:**\n * **https://redux.js.org/introduction/why-rtk-is-redux-today**\n *\n * `configureStore` from Redux Toolkit is an improved version of `createStore` that\n * simplifies setup and helps avoid common bugs.\n *\n * You should not be using the `redux` core package by itself today, except for learning purposes.\n * The `createStore` method from the core `redux` package will not be removed, but we encourage\n * all users to migrate to using Redux Toolkit for all Redux code.\n *\n * If you want to use `createStore` without this visual deprecation warning, use\n * the `legacy_createStore` import instead:\n *\n * `import { legacy_createStore as createStore} from 'redux'`\n *\n */\nexport function createStore<S, A extends Action, Ext extends {} = {}, StateExt extends {} = {}>(reducer: Reducer<S, A>, enhancer?: StoreEnhancer<Ext, StateExt>): Store<S, A, UnknownIfNonSpecific<StateExt>> & Ext;\n/**\n * @deprecated\n *\n * **We recommend using the `configureStore` method\n * of the `@reduxjs/toolkit` package**, which replaces `createStore`.\n *\n * Redux Toolkit is our recommended approach for writing Redux logic today,\n * including store setup, reducers, data fetching, and more.\n *\n * **For more details, please read this Redux docs page:**\n * **https://redux.js.org/introduction/why-rtk-is-redux-today**\n *\n * `configureStore` from Redux Toolkit is an improved version of `createStore` that\n * simplifies setup and helps avoid common bugs.\n *\n * You should not be using the `redux` core package by itself today, except for learning purposes.\n * The `createStore` method from the core `redux` package will not be removed, but we encourage\n * all users to migrate to using Redux Toolkit for all Redux code.\n *\n * If you want to use `createStore` without this visual deprecation warning, use\n * the `legacy_createStore` import instead:\n *\n * `import { legacy_createStore as createStore} from 'redux'`\n *\n */\nexport function createStore<S, A extends Action, Ext extends {} = {}, StateExt extends {} = {}, PreloadedState = S>(reducer: Reducer<S, A, PreloadedState>, preloadedState?: PreloadedState | undefined, enhancer?: StoreEnhancer<Ext, StateExt>): Store<S, A, UnknownIfNonSpecific<StateExt>> & Ext;\nexport function createStore<S, A extends Action, Ext extends {} = {}, StateExt extends {} = {}, PreloadedState = S>(reducer: Reducer<S, A, PreloadedState>, preloadedState?: PreloadedState | StoreEnhancer<Ext, StateExt> | undefined, enhancer?: StoreEnhancer<Ext, StateExt>): Store<S, A, UnknownIfNonSpecific<StateExt>> & Ext {\n if (typeof reducer !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage(2) : `Expected the root reducer to be a function. Instead, received: '${kindOf(reducer)}'`);\n }\n if (typeof preloadedState === 'function' && typeof enhancer === 'function' || typeof enhancer === 'function' && typeof arguments[3] === 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage2(0) : 'It looks like you are passing several store enhancers to ' + 'createStore(). This is not supported. Instead, compose them ' + 'together to a single function. See https://redux.js.org/tutorials/fundamentals/part-4-store#creating-a-store-with-enhancers for an example.');\n }\n if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') {\n enhancer = (preloadedState as StoreEnhancer<Ext, StateExt>);\n preloadedState = undefined;\n }\n if (typeof enhancer !== 'undefined') {\n if (typeof enhancer !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage3(1) : `Expected the enhancer to be a function. Instead, received: '${kindOf(enhancer)}'`);\n }\n return enhancer(createStore)(reducer, (preloadedState as PreloadedState | undefined));\n }\n let currentReducer = reducer;\n let currentState: S | PreloadedState | undefined = (preloadedState as PreloadedState | undefined);\n let currentListeners: Map<number, ListenerCallback> | null = new Map();\n let nextListeners = currentListeners;\n let listenerIdCounter = 0;\n let isDispatching = false;\n\n /**\n * This makes a shallow copy of currentListeners so we can use\n * nextListeners as a temporary list while dispatching.\n *\n * This prevents any bugs around consumers calling\n * subscribe/unsubscribe in the middle of a dispatch.\n */\n function ensureCanMutateNextListeners() {\n if (nextListeners === currentListeners) {\n nextListeners = new Map();\n currentListeners.forEach((listener, key) => {\n nextListeners.set(key, listener);\n });\n }\n }\n\n /**\n * Reads the state tree managed by the store.\n *\n * @returns The current state tree of your application.\n */\n function getState(): S {\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage4(3) : 'You may not call store.getState() while the reducer is executing. ' + 'The reducer has already received the state as an argument. ' + 'Pass it down from the top reducer instead of reading it from the store.');\n }\n return (currentState as S);\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 listener A callback to be invoked on every dispatch.\n * @returns A function to remove this change listener.\n */\n function subscribe(listener: () => void) {\n if (typeof listener !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage5(4) : `Expected the listener to be a function. Instead, received: '${kindOf(listener)}'`);\n }\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage6(5) : 'You may not call store.subscribe() while the reducer is executing. ' + 'If you would like to be notified after the store has been updated, subscribe from a ' + 'component and invoke store.getState() in the callback to access the latest state. ' + 'See https://redux.js.org/api/store#subscribelistener for more details.');\n }\n let isSubscribed = true;\n ensureCanMutateNextListeners();\n const listenerId = listenerIdCounter++;\n nextListeners.set(listenerId, listener);\n return function unsubscribe() {\n if (!isSubscribed) {\n return;\n }\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage7(6) : 'You may not unsubscribe from a store listener while the reducer is executing. ' + 'See https://redux.js.org/api/store#subscribelistener for more details.');\n }\n isSubscribed = false;\n ensureCanMutateNextListeners();\n nextListeners.delete(listenerId);\n currentListeners = null;\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 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 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: A) {\n if (!isPlainObject(action)) {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage8(7) : `Actions must be plain objects. Instead, the actual type was: '${kindOf(action)}'. You may need to add middleware to your store setup to handle dispatching other values, such as 'redux-thunk' to handle dispatching functions. See https://redux.js.org/tutorials/fundamentals/part-4-store#middleware and https://redux.js.org/tutorials/fundamentals/part-6-async-logic#using-the-redux-thunk-middleware for examples.`);\n }\n if (typeof action.type === 'undefined') {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage9(8) : 'Actions may not have an undefined \"type\" property. You may have misspelled an action type string constant.');\n }\n if (typeof action.type !== 'string') {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage10(17) : `Action \"type\" property must be a string. Instead, the actual type was: '${kindOf(action.type)}'. Value was: '${action.type}' (stringified)`);\n }\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage11(9) : 'Reducers may not dispatch actions.');\n }\n try {\n isDispatching = true;\n currentState = currentReducer(currentState, action);\n } finally {\n isDispatching = false;\n }\n const listeners = currentListeners = nextListeners;\n listeners.forEach(listener => {\n listener();\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 nextReducer The reducer for the store to use instead.\n */\n function replaceReducer(nextReducer: Reducer<S, A>): void {\n if (typeof nextReducer !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage12(10) : `Expected the nextReducer to be a function. Instead, received: '${kindOf(nextReducer)}`);\n }\n currentReducer = ((nextReducer as unknown) as Reducer<S, A, PreloadedState>);\n\n // This action has a similar effect to ActionTypes.INIT.\n // Any reducers that existed in both the new and old rootReducer\n // will receive the previous state. This effectively populates\n // the new state tree with any relevant data from the old one.\n dispatch(({\n type: ActionTypes.REPLACE\n } as A));\n }\n\n /**\n * Interoperability point for observable/reactive libraries.\n * @returns 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 const outerSubscribe = subscribe;\n return {\n /**\n * The minimal observable subscription method.\n * @param observer Any object that can be used as an observer.\n * The observer object should have a `next` method.\n * @returns 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(observer: unknown) {\n if (typeof observer !== 'object' || observer === null) {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage13(11) : `Expected the observer to be an object. Instead, received: '${kindOf(observer)}'`);\n }\n function observeState() {\n const observerAsObserver = (observer as Observer<S>);\n if (observerAsObserver.next) {\n observerAsObserver.next(getState());\n }\n }\n observeState();\n const unsubscribe = outerSubscribe(observeState);\n return {\n unsubscribe\n };\n },\n [$$observable]() {\n return this;\n }\n };\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(({\n type: ActionTypes.INIT\n } as A));\n const store = (({\n dispatch: (dispatch as Dispatch<A>),\n subscribe,\n getState,\n replaceReducer,\n [$$observable]: observable\n } as unknown) as Store<S, A, StateExt> & Ext);\n return store;\n}\n\n/**\n * Creates a Redux store that holds the state tree.\n *\n * **We recommend using `configureStore` from the\n * `@reduxjs/toolkit` package**, which replaces `createStore`:\n * **https://redux.js.org/introduction/why-rtk-is-redux-today**\n *\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 */\nexport function legacy_createStore<S, A extends Action, Ext extends {} = {}, StateExt extends {} = {}>(reducer: Reducer<S, A>, enhancer?: StoreEnhancer<Ext, StateExt>): Store<S, A, UnknownIfNonSpecific<StateExt>> & Ext;\n/**\n * Creates a Redux store that holds the state tree.\n *\n * **We recommend using `configureStore` from the\n * `@reduxjs/toolkit` package**, which replaces `createStore`:\n * **https://redux.js.org/introduction/why-rtk-is-redux-today**\n *\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 */\nexport function legacy_createStore<S, A extends Action, Ext extends {} = {}, StateExt extends {} = {}, PreloadedState = S>(reducer: Reducer<S, A, PreloadedState>, preloadedState?: PreloadedState | undefined, enhancer?: StoreEnhancer<Ext, StateExt>): Store<S, A, UnknownIfNonSpecific<StateExt>> & Ext;\nexport function legacy_createStore<S, A extends Action, Ext extends {} = {}, StateExt extends {} = {}, PreloadedState = S>(reducer: Reducer<S, A>, preloadedState?: PreloadedState | StoreEnhancer<Ext, StateExt> | undefined, enhancer?: StoreEnhancer<Ext, StateExt>): Store<S, A, UnknownIfNonSpecific<StateExt>> & Ext {\n return createStore(reducer, (preloadedState as any), enhancer);\n}","import { formatProdErrorMessage as _formatProdErrorMessage3 } from \"src/utils/formatProdErrorMessage\";\nimport { formatProdErrorMessage as _formatProdErrorMessage2 } from \"src/utils/formatProdErrorMessage\";\nimport { formatProdErrorMessage as _formatProdErrorMessage } from \"src/utils/formatProdErrorMessage\";\nimport { Action } from './types/actions';\nimport { ActionFromReducersMapObject, PreloadedStateShapeFromReducersMapObject, Reducer, StateFromReducersMapObject } from './types/reducers';\nimport ActionTypes from './utils/actionTypes';\nimport isPlainObject from './utils/isPlainObject';\nimport warning from './utils/warning';\nimport { kindOf } from './utils/kindOf';\nfunction getUnexpectedStateShapeWarningMessage(inputState: object, reducers: {\n [key: string]: Reducer<any, any, any>;\n}, action: Action, unexpectedKeyCache: {\n [key: string]: true;\n}) {\n const reducerKeys = Object.keys(reducers);\n const argumentName = action && action.type === ActionTypes.INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer';\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 if (!isPlainObject(inputState)) {\n return `The ${argumentName} has unexpected type of \"${kindOf(inputState)}\". Expected argument to be an object with the following ` + `keys: \"${reducerKeys.join('\", \"')}\"`;\n }\n const unexpectedKeys = Object.keys(inputState).filter(key => !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key]);\n unexpectedKeys.forEach(key => {\n unexpectedKeyCache[key] = true;\n });\n if (action && action.type === ActionTypes.REPLACE) return;\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}\nfunction assertReducerShape(reducers: {\n [key: string]: Reducer<any, any, any>;\n}) {\n Object.keys(reducers).forEach(key => {\n const reducer = reducers[key];\n const initialState = reducer(undefined, {\n type: ActionTypes.INIT\n });\n if (typeof initialState === 'undefined') {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage(12) : `The slice reducer for key \"${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 if (typeof reducer(undefined, {\n type: ActionTypes.PROBE_UNKNOWN_ACTION()\n }) === 'undefined') {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage2(13) : `The slice reducer for key \"${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 * @template S Combined state object type.\n *\n * @param reducers An object whose values correspond to different reducer\n * functions that need to be combined into one. One handy way to obtain it\n * is to use `import * as reducers` syntax. The reducers may never\n * return undefined for any action. Instead, they should return their\n * initial state if the state passed to them was undefined, and the current\n * state for any unrecognized action.\n *\n * @returns A reducer function that invokes every reducer inside the passed\n * object, and builds a state object with the same shape.\n */\nexport default function combineReducers<M>(reducers: M): M[keyof M] extends Reducer<any, any, any> | undefined ? Reducer<StateFromReducersMapObject<M>, ActionFromReducersMapObject<M>, Partial<PreloadedStateShapeFromReducersMapObject<M>>> : never;\nexport default function combineReducers(reducers: {\n [key: string]: Reducer<any, any, any>;\n}) {\n const reducerKeys = Object.keys(reducers);\n const finalReducers: {\n [key: string]: Reducer<any, any, any>;\n } = {};\n for (let i = 0; i < reducerKeys.length; i++) {\n const key = reducerKeys[i];\n if (process.env.NODE_ENV !== 'production') {\n if (typeof reducers[key] === 'undefined') {\n warning(`No reducer provided for key \"${key}\"`);\n }\n }\n if (typeof reducers[key] === 'function') {\n finalReducers[key] = reducers[key];\n }\n }\n const finalReducerKeys = Object.keys(finalReducers);\n\n // This is used to make sure we don't warn about the same\n // keys multiple times.\n let unexpectedKeyCache: {\n [key: string]: true;\n };\n if (process.env.NODE_ENV !== 'production') {\n unexpectedKeyCache = {};\n }\n let shapeAssertionError: unknown;\n try {\n assertReducerShape(finalReducers);\n } catch (e) {\n shapeAssertionError = e;\n }\n return function combination(state: StateFromReducersMapObject<typeof reducers> = {}, action: Action) {\n if (shapeAssertionError) {\n throw shapeAssertionError;\n }\n if (process.env.NODE_ENV !== 'production') {\n const warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache);\n if (warningMessage) {\n warning(warningMessage);\n }\n }\n let hasChanged = false;\n const nextState: StateFromReducersMapObject<typeof reducers> = {};\n for (let i = 0; i < finalReducerKeys.length; i++) {\n const key = finalReducerKeys[i];\n const reducer = finalReducers[key];\n const previousStateForKey = state[key];\n const nextStateForKey = reducer(previousStateForKey, action);\n if (typeof nextStateForKey === 'undefined') {\n const actionType = action && action.type;\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage3(14) : `When called with an action of type ${actionType ? `\"${String(actionType)}\"` : '(unknown type)'}, the slice reducer for key \"${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 nextState[key] = nextStateForKey;\n hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n }\n hasChanged = hasChanged || finalReducerKeys.length !== Object.keys(state).length;\n return hasChanged ? nextState : state;\n };\n}","type Func<T extends any[], R> = (...a: T) => R;\n\n/**\n * Composes single-argument functions from right to left. The rightmost\n * function can take multiple arguments as it provides the signature for the\n * resulting composite function.\n *\n * @param funcs The functions to compose.\n * @returns A function obtained by composing the argument functions from right\n * to left. For example, `compose(f, g, h)` is identical to doing\n * `(...args) => f(g(h(...args)))`.\n */\nexport default function compose(): <R>(a: R) => R;\nexport default function compose<F extends Function>(f: F): F;\n\n/* two functions */\nexport default function compose<A, T extends any[], R>(f1: (a: A) => R, f2: Func<T, A>): Func<T, R>;\n\n/* three functions */\nexport default function compose<A, B, T extends any[], R>(f1: (b: B) => R, f2: (a: A) => B, f3: Func<T, A>): Func<T, R>;\n\n/* four functions */\nexport default function compose<A, B, C, T extends any[], R>(f1: (c: C) => R, f2: (b: B) => C, f3: (a: A) => B, f4: Func<T, A>): Func<T, R>;\n\n/* rest */\nexport default function compose<R>(f1: (a: any) => R, ...funcs: Function[]): (...args: any[]) => R;\nexport default function compose<R>(...funcs: Function[]): (...args: any[]) => R;\nexport default function compose(...funcs: Function[]) {\n if (funcs.length === 0) {\n // infer the argument type so it is usable in inference down the line\n return <T,>(arg: T) => arg;\n }\n if (funcs.length === 1) {\n return funcs[0];\n }\n return funcs.reduce((a, b) => (...args: any) => a(b(...args)));\n}","import { formatProdErrorMessage as _formatProdErrorMessage } from \"src/utils/formatProdErrorMessage\";\nimport compose from './compose';\nimport { Middleware, MiddlewareAPI } from './types/middleware';\nimport { StoreEnhancer, Dispatch } from './types/store';\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 middlewares The middleware chain to be applied.\n * @returns A store enhancer applying the middleware.\n *\n * @template Ext Dispatch signature added by a middleware.\n * @template S The type of the state supported by a middleware.\n */\nexport default function applyMiddleware(): StoreEnhancer;\nexport default function applyMiddleware<Ext1, S>(middleware1: Middleware<Ext1, S, any>): StoreEnhancer<{\n dispatch: Ext1;\n}>;\nexport default function applyMiddleware<Ext1, Ext2, S>(middleware1: Middleware<Ext1, S, any>, middleware2: Middleware<Ext2, S, any>): StoreEnhancer<{\n dispatch: Ext1 & Ext2;\n}>;\nexport default function applyMiddleware<Ext1, Ext2, Ext3, S>(middleware1: Middleware<Ext1, S, any>, middleware2: Middleware<Ext2, S, any>, middleware3: Middleware<Ext3, S, any>): StoreEnhancer<{\n dispatch: Ext1 & Ext2 & Ext3;\n}>;\nexport default function applyMiddleware<Ext1, Ext2, Ext3, Ext4, S>(middleware1: Middleware<Ext1, S, any>, middleware2: Middleware<Ext2, S, any>, middleware3: Middleware<Ext3, S, any>, middleware4: Middleware<Ext4, S, any>): StoreEnhancer<{\n dispatch: Ext1 & Ext2 & Ext3 & Ext4;\n}>;\nexport default function applyMiddleware<Ext1, Ext2, Ext3, Ext4, Ext5, S>(middleware1: Middleware<Ext1, S, any>, middleware2: Middleware<Ext2, S, any>, middleware3: Middleware<Ext3, S, any>, middleware4: Middleware<Ext4, S, any>, middleware5: Middleware<Ext5, S, any>): StoreEnhancer<{\n dispatch: Ext1 & Ext2 & Ext3 & Ext4 & Ext5;\n}>;\nexport default function applyMiddleware<Ext, S = any>(...middlewares: Middleware<any, S, any>[]): StoreEnhancer<{\n dispatch: Ext;\n}>;\nexport default function applyMiddleware(...middlewares: Middleware[]): StoreEnhancer<any> {\n return createStore => (reducer, preloadedState) => {\n const store = createStore(reducer, preloadedState);\n let dispatch: Dispatch = () => {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage(15) : 'Dispatching while constructing your middleware is not allowed. ' + 'Other middleware would not be applied to this dispatch.');\n };\n const middlewareAPI: MiddlewareAPI = {\n getState: store.getState,\n dispatch: (action, ...args) => dispatch(action, ...args)\n };\n const chain = middlewares.map(middleware => middleware(middlewareAPI));\n dispatch = compose<typeof dispatch>(...chain)(store.dispatch);\n return {\n ...store,\n dispatch\n };\n };\n}","import { Action } from '../types/actions';\nimport isPlainObject from './isPlainObject';\nexport default function isAction(action: unknown): action is Action<string> {\n return isPlainObject(action) && 'type' in action && typeof (action as Record<'type', unknown>).type === 'string';\n}","const toObjectMap = (...items: (string[] | Record<string, number>)[]) => {\n const result: Record<string, number> = {};\n\n for (const item of items) {\n const keys = Array.isArray(item) ? item : Object.keys(item);\n\n for (const key of keys) {\n result[key] = 1;\n }\n }\n\n return result;\n};\n\n/**\n * An array of events that are allowed on every html element type.\n *\n * @public\n */\nexport const baseElementEvents = toObjectMap([\n 'onCopy',\n 'onCut',\n 'onPaste',\n 'onCompositionEnd',\n 'onCompositionStart',\n 'onCompositionUpdate',\n 'onFocus',\n 'onFocusCapture',\n 'onBlur',\n 'onBlurCapture',\n 'onChange',\n 'onInput',\n 'onSubmit',\n 'onLoad',\n 'onError',\n 'onKeyDown',\n 'onKeyDownCapture',\n 'onKeyPress',\n 'onKeyUp',\n 'onAbort',\n 'onCanPlay',\n 'onCanPlayThrough',\n 'onDurationChange',\n 'onEmptied',\n 'onEncrypted',\n 'onEnded',\n 'onLoadedData',\n 'onLoadedMetadata',\n 'onLoadStart',\n 'onPause',\n 'onPlay',\n 'onPlaying',\n 'onProgress',\n 'onRateChange',\n 'onSeeked',\n 'onSeeking',\n 'onStalled',\n 'onSuspend',\n 'onTimeUpdate',\n 'onVolumeChange',\n 'onWaiting',\n 'onClick',\n 'onClickCapture',\n 'onContextMenu',\n 'onDoubleClick',\n 'onDrag',\n 'onDragEnd',\n 'onDragEnter',\n 'onDragExit',\n 'onDragLeave',\n 'onDragOver',\n 'onDragStart',\n 'onDrop',\n 'onMouseDown',\n 'onMouseDownCapture',\n 'onMouseEnter',\n 'onMouseLeave',\n 'onMouseMove',\n 'onMouseOut',\n 'onMouseOver',\n 'onMouseUp',\n 'onMouseUpCapture',\n 'onSelect',\n 'onTouchCancel',\n 'onTouchEnd',\n 'onTouchMove',\n 'onTouchStart',\n 'onScroll',\n 'onWheel',\n 'onPointerCancel',\n 'onPointerDown',\n 'onPointerEnter',\n 'onPointerLeave',\n 'onPointerMove',\n 'onPointerOut',\n 'onPointerOver',\n 'onPointerUp',\n 'onGotPointerCapture',\n 'onLostPointerCapture',\n]);\n\n/**\n * An array of element attributes which are allowed on every html element type.\n *\n * @public\n */\nexport const baseElementProperties = toObjectMap([\n 'accessKey', // global\n 'children', // global\n 'className', // global\n 'contentEditable', // global\n 'dir', // global\n 'draggable', // global\n 'hidden', // global\n 'htmlFor', // global\n 'id', // global\n 'lang', // global\n 'ref', // global\n 'role', // global\n 'style', // global\n 'tabIndex', // global\n 'title', // global\n 'translate', // global\n 'spellCheck', // global\n 'name', // global\n]);\n\n/**\n * An array of HTML element properties and events.\n *\n * @public\n */\nexport const htmlElementProperties = toObjectMap(baseElementProperties, baseElementEvents);\n\n/**\n * An array of LABEL tag properties and events.\n *\n * @public\n */\nexport const labelProperties = toObjectMap(htmlElementProperties, [\n 'form', // button, fieldset, input, label, meter, object, output, select, textarea\n]);\n\n/**\n * An array of AUDIO tag properties and events.\n\n * @public\n */\nexport const audioProperties = toObjectMap(htmlElementProperties, [\n 'height', // canvas, embed, iframe, img, input, object, video\n 'loop', // audio, video\n 'muted', // audio, video\n 'preload', // audio, video\n 'src', // audio, embed, iframe, img, input, script, source, track, video\n 'width', // canvas, embed, iframe, img, input, object, video\n]);\n\n/**\n * An array of VIDEO tag properties and events.\n *\n * @public\n */\nexport const videoProperties = toObjectMap(audioProperties, [\n 'poster', // video\n]);\n\n/**\n * An array of OL tag properties and events.\n *\n * @public\n */\nexport const olProperties = toObjectMap(htmlElementProperties, [\n 'start', // ol\n]);\n\n/**\n * An array of LI tag properties and events.\n *\n * @public\n */\nexport const liProperties = toObjectMap(htmlElementProperties, [\n 'value', // button, input, li, option, meter, progress, param\n]);\n\n/**\n * An array of A tag properties and events.\n *\n * @public\n */\nexport const anchorProperties = toObjectMap(htmlElementProperties, [\n 'download', // a, area\n 'href', // a, area, base, link\n 'hrefLang', // a, area, link\n 'media', // a, area, link, source, style\n 'rel', // a, area, link\n 'target', // a, area, base, form\n 'type', // a, button, input, link, menu, object, script, source, style\n]);\n\n/**\n * An array of BUTTON tag properties and events.\n *\n * @public\n */\nexport const buttonProperties = toObjectMap(htmlElementProperties, [\n 'autoFocus', // button, input, select, textarea\n 'disabled', // button, fieldset, input, optgroup, option, select, textarea\n 'form', // button, fieldset, input, label, meter, object, output, select, textarea\n 'formAction', // input, button\n 'formEncType', // input, button\n 'formMethod', // input, button\n 'formNoValidate', // input, button\n 'formTarget', // input, button\n 'type', // a, button, input, link, menu, object, script, source, style\n 'value', // button, input, li, option, meter, progress, param,\n]);\n\n/**\n * An array of INPUT tag properties and events.\n *\n * @public\n */\nexport const inputProperties = toObjectMap(buttonProperties, [\n 'accept', // input\n 'alt', // area, img, input\n 'autoCapitalize', // input, textarea\n 'autoComplete', // form, input\n 'checked', // input\n 'dirname', // input, textarea\n 'form', // button, fieldset, input, label, meter, object, output, select, textarea\n 'height', // canvas, embed, iframe, img, input, object, video\n 'inputMode', // input\n 'list', // input\n 'max', // input, meter\n 'maxLength', // input, textarea\n 'min', // input, meter\n 'multiple', // input, select\n 'pattern', // input\n 'placeholder', // input, textarea\n 'readOnly', // input, textarea\n 'required', // input, select, textarea\n 'src', // audio, embed, iframe, img, input, script, source, track, video\n 'step', // input\n 'size', // input\n 'type', // a, button, input, link, menu, object, script, source, style\n 'value', // button, input, li, option, meter, progress, param\n 'width', // canvas, embed, iframe, img, input, object, video\n]);\n\n/**\n * An array of TEXTAREA tag properties and events.\n *\n * @public\n */\nexport const textAreaProperties = toObjectMap(buttonProperties, [\n 'autoCapitalize', // input, textarea\n 'cols', // textarea\n 'dirname', // input, textarea\n 'form', // button, fieldset, input, label, meter, object, output, select, textarea\n 'maxLength', // input, textarea\n 'placeholder', // input, textarea\n 'readOnly', // input, textarea\n 'required', // input, select, textarea\n 'rows', // textarea\n 'wrap', // textarea\n]);\n\n/**\n * An array of SELECT tag properties and events.\n *\n * @public\n */\nexport const selectProperties = toObjectMap(buttonProperties, [\n 'form', // button, fieldset, input, label, meter, object, output, select, textarea\n 'multiple', // input, select\n 'required', // input, select, textarea\n]);\n\nexport const optionProperties = toObjectMap(htmlElementProperties, [\n 'selected', // option\n 'value', // button, input, li, option, meter, progress, param\n]);\n\n/**\n * An array of TABLE tag properties and events.\n *\n * @public\n */\nexport const tableProperties = toObjectMap(htmlElementProperties, [\n 'cellPadding', // table\n 'cellSpacing', // table\n]);\n\n/**\n * An array of TR tag properties and events.\n *\n * @public\n */\nexport const trProperties = htmlElementProperties;\n\n/**\n * An array of TH tag properties and events.\n *\n * @public\n */\nexport const thProperties = toObjectMap(htmlElementProperties, [\n 'rowSpan', // td, th\n 'scope', // th\n]);\n\n/**\n * An array of TD tag properties and events.\n *\n * @public\n */\nexport const tdProperties = toObjectMap(htmlElementProperties, [\n 'colSpan', // td\n 'headers', // td\n 'rowSpan', // td, th\n 'scope', // th\n]);\n\nexport const colGroupProperties = toObjectMap(htmlElementProperties, [\n 'span', // col, colgroup\n]);\n\nexport const colProperties = toObjectMap(htmlElementProperties, [\n 'span', // col, colgroup\n]);\n\n/**\n * An array of FORM tag properties and events.\n *\n * @public\n */\nexport const formProperties = toObjectMap(htmlElementProperties, [\n 'acceptCharset', // form\n 'action', // form\n 'encType', // form\n 'encType', // form\n 'method', // form\n 'noValidate', // form\n 'target', // form\n]);\n\n/**\n * An array of IFRAME tag properties and events.\n *\n * @public\n */\nexport const iframeProperties = toObjectMap(htmlElementProperties, [\n 'allow', // iframe\n 'allowFullScreen', // iframe\n 'allowPaymentRequest', // iframe\n 'allowTransparency', // iframe\n 'csp', // iframe\n 'height', // canvas, embed, iframe, img, input, object, video\n 'importance', // iframe\n 'referrerPolicy', // iframe\n 'sandbox', // iframe\n 'src', // audio, embed, iframe, img, input, script, source, track, video\n 'srcDoc', // iframe\n 'width', // canvas, embed, iframe, img, input, object, video,\n]);\n\n/**\n * An array of IMAGE tag properties and events.\n *\n * @public\n */\nexport const imgProperties = toObjectMap(htmlElementProperties, [\n 'alt', // area, img, input\n 'crossOrigin', // img\n 'height', // canvas, embed, iframe, img, input, object, video\n 'src', // audio, embed, iframe, img, input, script, source, track, video\n 'srcSet', // img, source\n 'useMap', // img, object,\n 'width', // canvas, embed, iframe, img, input, object, video\n]);\n\n/**\n * @deprecated Use imgProperties for img elements.\n */\nexport const imageProperties = imgProperties;\n\n/**\n * An array of DIV tag properties and events.\n *\n * @public\n */\nexport const divProperties = htmlElementProperties;\n\n/**\n * Gets native supported props for an html element provided the allowance set. Use one of the property\n * sets defined (divProperties, buttonPropertes, etc) to filter out supported properties from a given\n * props set. Note that all data- and aria- prefixed attributes will be allowed.\n * NOTE: getNativeProps should always be applied first when adding props to a react component. The\n * non-native props should be applied second. This will prevent getNativeProps from overriding your custom props.\n * For example, if props passed to getNativeProps has an onClick function and getNativeProps is added to\n * the component after an onClick function is added, then the getNativeProps onClick will override it.\n *\n * @public\n * @param props - The unfiltered input props\n * @param allowedPropsNames - The array or record of allowed prop names.\n * @returns The filtered props\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function getNativeProps<T extends Record<string, any>>(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n props: Record<string, any>,\n allowedPropNames: string[] | Record<string, number>,\n excludedPropNames?: string[],\n): T {\n // It'd be great to properly type this while allowing 'aria-` and 'data-' attributes like TypeScript does for\n // JSX attributes, but that ability is hardcoded into the TS compiler with no analog in TypeScript typings.\n // Then we'd be able to enforce props extends native props (including aria- and data- attributes), and then\n // return native props.\n // We should be able to do this once this PR is merged: https://github.com/microsoft/TypeScript/pull/26797\n\n const isArray = Array.isArray(allowedPropNames);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const result: Record<string, any> = {};\n const keys = Object.keys(props);\n\n for (const key of keys) {\n const isNativeProp =\n (!isArray && (allowedPropNames as Record<string, number>)[key]) ||\n (isArray && (allowedPropNames as string[]).indexOf(key) >= 0) ||\n key.indexOf('data-') === 0 ||\n key.indexOf('aria-') === 0;\n\n if (isNativeProp && (!excludedPropNames || excludedPropNames?.indexOf(key) === -1)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n result[key] = props![key] as any;\n }\n }\n\n return result as T;\n}\n","function _classCallCheck(a, n) {\n if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\");\n}\nexport { _classCallCheck as default };","import setPrototypeOf from \"./setPrototypeOf.js\";\nfunction _inherits(t, e) {\n if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\");\n t.prototype = Object.create(e && e.prototype, {\n constructor: {\n value: t,\n writable: !0,\n configurable: !0\n }\n }), Object.defineProperty(t, \"prototype\", {\n writable: !1\n }), e && setPrototypeOf(t, e);\n}\nexport { _inherits as default };","import _typeof from \"./typeof.js\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nfunction _possibleConstructorReturn(t, e) {\n if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e;\n if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\");\n return assertThisInitialized(t);\n}\nexport { _possibleConstructorReturn as default };","function _getPrototypeOf(t) {\n return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) {\n return t.__proto__ || Object.getPrototypeOf(t);\n }, _getPrototypeOf(t);\n}\nexport { _getPrototypeOf as default };","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\n\n/* eslint react/prop-types: 0 */\nimport React from 'react';\nimport classNames from 'classnames';\n\nvar Pager = function Pager(props) {\n var _classNames;\n\n var prefixCls = \"\".concat(props.rootPrefixCls, \"-item\");\n var cls = classNames(prefixCls, \"\".concat(prefixCls, \"-\").concat(props.page), (_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-active\"), props.active), _defineProperty(_classNames, props.className, !!props.className), _defineProperty(_classNames, \"\".concat(prefixCls, \"-disabled\"), !props.page), _classNames));\n\n var handleClick = function handleClick() {\n props.onClick(props.page);\n };\n\n var handleKeyPress = function handleKeyPress(e) {\n props.onKeyPress(e, props.onClick, props.page);\n };\n\n return /*#__PURE__*/React.createElement(\"li\", {\n title: props.showTitle ? props.page : null,\n className: cls,\n onClick: handleClick,\n onKeyPress: handleKeyPress,\n tabIndex: \"0\"\n }, props.itemRender(props.page, 'page', /*#__PURE__*/React.createElement(\"a\", {\n rel: \"nofollow\"\n }, props.page)));\n};\n\nexport default Pager;","export default {\n ZERO: 48,\n NINE: 57,\n NUMPAD_ZERO: 96,\n NUMPAD_NINE: 105,\n BACKSPACE: 8,\n DELETE: 46,\n ENTER: 13,\n ARROW_UP: 38,\n ARROW_DOWN: 40\n};","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/esm/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/esm/getPrototypeOf\";\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\n/* eslint react/prop-types: 0 */\nimport React from 'react';\nimport KEYCODE from './KeyCode';\n\nvar Options = /*#__PURE__*/function (_React$Component) {\n _inherits(Options, _React$Component);\n\n var _super = _createSuper(Options);\n\n function Options() {\n var _this;\n\n _classCallCheck(this, Options);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n _this.state = {\n goInputText: ''\n };\n\n _this.buildOptionText = function (value) {\n return \"\".concat(value, \" \").concat(_this.props.locale.items_per_page);\n };\n\n _this.changeSize = function (value) {\n _this.props.changeSize(Number(value));\n };\n\n _this.handleChange = function (e) {\n _this.setState({\n goInputText: e.target.value\n });\n };\n\n _this.handleBlur = function (e) {\n var _this$props = _this.props,\n goButton = _this$props.goButton,\n quickGo = _this$props.quickGo,\n rootPrefixCls = _this$props.rootPrefixCls;\n\n if (goButton) {\n return;\n }\n\n if (e.relatedTarget && (e.relatedTarget.className.indexOf(\"\".concat(rootPrefixCls, \"-prev\")) >= 0 || e.relatedTarget.className.indexOf(\"\".concat(rootPrefixCls, \"-next\")) >= 0)) {\n return;\n }\n\n quickGo(_this.getValidValue());\n };\n\n _this.go = function (e) {\n var goInputText = _this.state.goInputText;\n\n if (goInputText === '') {\n return;\n }\n\n if (e.keyCode === KEYCODE.ENTER || e.type === 'click') {\n _this.setState({\n goInputText: ''\n });\n\n _this.props.quickGo(_this.getValidValue());\n }\n };\n\n return _this;\n }\n\n _createClass(Options, [{\n key: \"getValidValue\",\n value: function getValidValue() {\n var _this$state = this.state,\n goInputText = _this$state.goInputText,\n current = _this$state.current; // eslint-disable-next-line no-restricted-globals\n\n return !goInputText || isNaN(goInputText) ? current : Number(goInputText);\n }\n }, {\n key: \"getPageSizeOptions\",\n value: function getPageSizeOptions() {\n var _this$props2 = this.props,\n pageSize = _this$props2.pageSize,\n pageSizeOptions = _this$props2.pageSizeOptions;\n\n if (pageSizeOptions.some(function (option) {\n return option.toString() === pageSize.toString();\n })) {\n return pageSizeOptions;\n }\n\n return pageSizeOptions.concat([pageSize.toString()]).sort(function (a, b) {\n // eslint-disable-next-line no-restricted-globals\n var numberA = isNaN(Number(a)) ? 0 : Number(a); // eslint-disable-next-line no-restricted-globals\n\n var numberB = isNaN(Number(b)) ? 0 : Number(b);\n return numberA - numberB;\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var _this$props3 = this.props,\n pageSize = _this$props3.pageSize,\n locale = _this$props3.locale,\n rootPrefixCls = _this$props3.rootPrefixCls,\n changeSize = _this$props3.changeSize,\n quickGo = _this$props3.quickGo,\n goButton = _this$props3.goButton,\n selectComponentClass = _this$props3.selectComponentClass,\n buildOptionText = _this$props3.buildOptionText,\n selectPrefixCls = _this$props3.selectPrefixCls,\n disabled = _this$props3.disabled;\n var goInputText = this.state.goInputText;\n var prefixCls = \"\".concat(rootPrefixCls, \"-options\");\n var Select = selectComponentClass;\n var changeSelect = null;\n var goInput = null;\n var gotoButton = null;\n\n if (!changeSize && !quickGo) {\n return null;\n }\n\n var pageSizeOptions = this.getPageSizeOptions();\n\n if (changeSize && Select) {\n var options = pageSizeOptions.map(function (opt, i) {\n return /*#__PURE__*/React.createElement(Select.Option, {\n key: i,\n value: opt\n }, (buildOptionText || _this2.buildOptionText)(opt));\n });\n changeSelect = /*#__PURE__*/React.createElement(Select, {\n disabled: disabled,\n prefixCls: selectPrefixCls,\n showSearch: false,\n className: \"\".concat(prefixCls, \"-size-changer\"),\n optionLabelProp: \"children\",\n dropdownMatchSelectWidth: false,\n value: (pageSize || pageSizeOptions[0]).toString(),\n onChange: this.changeSize,\n getPopupContainer: function getPopupContainer(triggerNode) {\n return triggerNode.parentNode;\n }\n }, options);\n }\n\n if (quickGo) {\n if (goButton) {\n gotoButton = typeof goButton === 'boolean' ? /*#__PURE__*/React.createElement(\"button\", {\n type: \"button\",\n onClick: this.go,\n onKeyUp: this.go,\n disabled: disabled,\n className: \"\".concat(prefixCls, \"-quick-jumper-button\")\n }, locale.jump_to_confirm) : /*#__PURE__*/React.createElement(\"span\", {\n onClick: this.go,\n onKeyUp: this.go\n }, goButton);\n }\n\n goInput = /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-quick-jumper\")\n }, locale.jump_to, /*#__PURE__*/React.createElement(\"input\", {\n disabled: disabled,\n type: \"text\",\n value: goInputText,\n onChange: this.handleChange,\n onKeyUp: this.go,\n onBlur: this.handleBlur\n }), locale.page, gotoButton);\n }\n\n return /*#__PURE__*/React.createElement(\"li\", {\n className: \"\".concat(prefixCls)\n }, changeSelect, goInput);\n }\n }]);\n\n return Options;\n}(React.Component);\n\nOptions.defaultProps = {\n pageSizeOptions: ['10', '20', '50', '100']\n};\nexport default Options;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/esm/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/esm/getPrototypeOf\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\n/* eslint react/prop-types: 0 */\nimport React, { cloneElement, isValidElement } from 'react';\nimport classNames from 'classnames';\nimport Pager from './Pager';\nimport Options from './Options';\nimport KEYCODE from './KeyCode';\nimport LOCALE from './locale/zh_CN';\n\nfunction noop() {}\n\nfunction isInteger(value) {\n return (// eslint-disable-next-line no-restricted-globals\n typeof value === 'number' && isFinite(value) && Math.floor(value) === value\n );\n}\n\nfunction defaultItemRender(page, type, element) {\n return element;\n}\n\nfunction calculatePage(p, state, props) {\n var pageSize = typeof p === 'undefined' ? state.pageSize : p;\n return Math.floor((props.total - 1) / pageSize) + 1;\n}\n\nvar Pagination = /*#__PURE__*/function (_React$Component) {\n _inherits(Pagination, _React$Component);\n\n var _super = _createSuper(Pagination);\n\n function Pagination(props) {\n var _this;\n\n _classCallCheck(this, Pagination);\n\n _this = _super.call(this, props);\n\n _this.getJumpPrevPage = function () {\n return Math.max(1, _this.state.current - (_this.props.showLessItems ? 3 : 5));\n };\n\n _this.getJumpNextPage = function () {\n return Math.min(calculatePage(undefined, _this.state, _this.props), _this.state.current + (_this.props.showLessItems ? 3 : 5));\n };\n\n _this.getItemIcon = function (icon, label) {\n var prefixCls = _this.props.prefixCls;\n var iconNode = icon || /*#__PURE__*/React.createElement(\"button\", {\n type: \"button\",\n \"aria-label\": label,\n className: \"\".concat(prefixCls, \"-item-link\")\n });\n\n if (typeof icon === 'function') {\n iconNode = React.createElement(icon, _objectSpread({}, _this.props));\n }\n\n return iconNode;\n };\n\n _this.savePaginationNode = function (node) {\n _this.paginationNode = node;\n };\n\n _this.isValid = function (page) {\n return isInteger(page) && page !== _this.state.current;\n };\n\n _this.shouldDisplayQuickJumper = function () {\n var _this$props = _this.props,\n showQuickJumper = _this$props.showQuickJumper,\n pageSize = _this$props.pageSize,\n total = _this$props.total;\n\n if (total <= pageSize) {\n return false;\n }\n\n return showQuickJumper;\n };\n\n _this.handleKeyDown = function (e) {\n if (e.keyCode === KEYCODE.ARROW_UP || e.keyCode === KEYCODE.ARROW_DOWN) {\n e.preventDefault();\n }\n };\n\n _this.handleKeyUp = function (e) {\n var value = _this.getValidValue(e);\n\n var currentInputValue = _this.state.currentInputValue;\n\n if (value !== currentInputValue) {\n _this.setState({\n currentInputValue: value\n });\n }\n\n if (e.keyCode === KEYCODE.ENTER) {\n _this.handleChange(value);\n } else if (e.keyCode === KEYCODE.ARROW_UP) {\n _this.handleChange(value - 1);\n } else if (e.keyCode === KEYCODE.ARROW_DOWN) {\n _this.handleChange(value + 1);\n }\n };\n\n _this.changePageSize = function (size) {\n var current = _this.state.current;\n var newCurrent = calculatePage(size, _this.state, _this.props);\n current = current > newCurrent ? newCurrent : current; // fix the issue:\n // Once 'total' is 0, 'current' in 'onShowSizeChange' is 0, which is not correct.\n\n if (newCurrent === 0) {\n // eslint-disable-next-line prefer-destructuring\n current = _this.state.current;\n }\n\n if (typeof size === 'number') {\n if (!('pageSize' in _this.props)) {\n _this.setState({\n pageSize: size\n });\n }\n\n if (!('current' in _this.props)) {\n _this.setState({\n current: current,\n currentInputValue: current\n });\n }\n }\n\n _this.props.onShowSizeChange(current, size);\n\n if ('onChange' in _this.props && _this.props.onChange) {\n _this.props.onChange(current, size);\n }\n };\n\n _this.handleChange = function (p) {\n var disabled = _this.props.disabled;\n var page = p;\n\n if (_this.isValid(page) && !disabled) {\n var currentPage = calculatePage(undefined, _this.state, _this.props);\n\n if (page > currentPage) {\n page = currentPage;\n } else if (page < 1) {\n page = 1;\n }\n\n if (!('current' in _this.props)) {\n _this.setState({\n current: page,\n currentInputValue: page\n });\n }\n\n var pageSize = _this.state.pageSize;\n\n _this.props.onChange(page, pageSize);\n\n return page;\n }\n\n return _this.state.current;\n };\n\n _this.prev = function () {\n if (_this.hasPrev()) {\n _this.handleChange(_this.state.current - 1);\n }\n };\n\n _this.next = function () {\n if (_this.hasNext()) {\n _this.handleChange(_this.state.current + 1);\n }\n };\n\n _this.jumpPrev = function () {\n _this.handleChange(_this.getJumpPrevPage());\n };\n\n _this.jumpNext = function () {\n _this.handleChange(_this.getJumpNextPage());\n };\n\n _this.hasPrev = function () {\n return _this.state.current > 1;\n };\n\n _this.hasNext = function () {\n return _this.state.current < calculatePage(undefined, _this.state, _this.props);\n };\n\n _this.runIfEnter = function (event, callback) {\n if (event.key === 'Enter' || event.charCode === 13) {\n for (var _len = arguments.length, restParams = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n restParams[_key - 2] = arguments[_key];\n }\n\n callback.apply(void 0, restParams);\n }\n };\n\n _this.runIfEnterPrev = function (e) {\n _this.runIfEnter(e, _this.prev);\n };\n\n _this.runIfEnterNext = function (e) {\n _this.runIfEnter(e, _this.next);\n };\n\n _this.runIfEnterJumpPrev = function (e) {\n _this.runIfEnter(e, _this.jumpPrev);\n };\n\n _this.runIfEnterJumpNext = function (e) {\n _this.runIfEnter(e, _this.jumpNext);\n };\n\n _this.handleGoTO = function (e) {\n if (e.keyCode === KEYCODE.ENTER || e.type === 'click') {\n _this.handleChange(_this.state.currentInputValue);\n }\n };\n\n var hasOnChange = props.onChange !== noop;\n var hasCurrent = ('current' in props);\n\n if (hasCurrent && !hasOnChange) {\n // eslint-disable-next-line no-console\n console.warn('Warning: You provided a `current` prop to a Pagination component without an `onChange` handler. This will render a read-only component.');\n }\n\n var _current = props.defaultCurrent;\n\n if ('current' in props) {\n // eslint-disable-next-line prefer-destructuring\n _current = props.current;\n }\n\n var _pageSize = props.defaultPageSize;\n\n if ('pageSize' in props) {\n // eslint-disable-next-line prefer-destructuring\n _pageSize = props.pageSize;\n }\n\n _current = Math.min(_current, calculatePage(_pageSize, undefined, props));\n _this.state = {\n current: _current,\n currentInputValue: _current,\n pageSize: _pageSize\n };\n return _this;\n }\n\n _createClass(Pagination, [{\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps, prevState) {\n // When current page change, fix focused style of prev item\n // A hacky solution of https://github.com/ant-design/ant-design/issues/8948\n var prefixCls = this.props.prefixCls;\n\n if (prevState.current !== this.state.current && this.paginationNode) {\n var lastCurrentNode = this.paginationNode.querySelector(\".\".concat(prefixCls, \"-item-\").concat(prevState.current));\n\n if (lastCurrentNode && document.activeElement === lastCurrentNode) {\n lastCurrentNode.blur();\n }\n }\n }\n }, {\n key: \"getValidValue\",\n value: function getValidValue(e) {\n var inputValue = e.target.value;\n var allPages = calculatePage(undefined, this.state, this.props);\n var currentInputValue = this.state.currentInputValue;\n var value;\n\n if (inputValue === '') {\n value = inputValue; // eslint-disable-next-line no-restricted-globals\n } else if (isNaN(Number(inputValue))) {\n value = currentInputValue;\n } else if (inputValue >= allPages) {\n value = allPages;\n } else {\n value = Number(inputValue);\n }\n\n return value;\n }\n }, {\n key: \"getShowSizeChanger\",\n value: function getShowSizeChanger() {\n var _this$props2 = this.props,\n showSizeChanger = _this$props2.showSizeChanger,\n total = _this$props2.total,\n totalBoundaryShowSizeChanger = _this$props2.totalBoundaryShowSizeChanger;\n\n if (typeof showSizeChanger !== 'undefined') {\n return showSizeChanger;\n }\n\n return total > totalBoundaryShowSizeChanger;\n }\n }, {\n key: \"renderPrev\",\n value: function renderPrev(prevPage) {\n var _this$props3 = this.props,\n prevIcon = _this$props3.prevIcon,\n itemRender = _this$props3.itemRender;\n var prevButton = itemRender(prevPage, 'prev', this.getItemIcon(prevIcon, 'prev page'));\n var disabled = !this.hasPrev();\n return isValidElement(prevButton) ? cloneElement(prevButton, {\n disabled: disabled\n }) : prevButton;\n }\n }, {\n key: \"renderNext\",\n value: function renderNext(nextPage) {\n var _this$props4 = this.props,\n nextIcon = _this$props4.nextIcon,\n itemRender = _this$props4.itemRender;\n var nextButton = itemRender(nextPage, 'next', this.getItemIcon(nextIcon, 'next page'));\n var disabled = !this.hasNext();\n return isValidElement(nextButton) ? cloneElement(nextButton, {\n disabled: disabled\n }) : nextButton;\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var _this$props5 = this.props,\n prefixCls = _this$props5.prefixCls,\n className = _this$props5.className,\n style = _this$props5.style,\n disabled = _this$props5.disabled,\n hideOnSinglePage = _this$props5.hideOnSinglePage,\n total = _this$props5.total,\n locale = _this$props5.locale,\n showQuickJumper = _this$props5.showQuickJumper,\n showLessItems = _this$props5.showLessItems,\n showTitle = _this$props5.showTitle,\n showTotal = _this$props5.showTotal,\n simple = _this$props5.simple,\n itemRender = _this$props5.itemRender,\n showPrevNextJumpers = _this$props5.showPrevNextJumpers,\n jumpPrevIcon = _this$props5.jumpPrevIcon,\n jumpNextIcon = _this$props5.jumpNextIcon,\n selectComponentClass = _this$props5.selectComponentClass,\n selectPrefixCls = _this$props5.selectPrefixCls,\n pageSizeOptions = _this$props5.pageSizeOptions;\n var _this$state = this.state,\n current = _this$state.current,\n pageSize = _this$state.pageSize,\n currentInputValue = _this$state.currentInputValue; // When hideOnSinglePage is true and there is only 1 page, hide the pager\n\n if (hideOnSinglePage === true && total <= pageSize) {\n return null;\n }\n\n var allPages = calculatePage(undefined, this.state, this.props);\n var pagerList = [];\n var jumpPrev = null;\n var jumpNext = null;\n var firstPager = null;\n var lastPager = null;\n var gotoButton = null;\n var goButton = showQuickJumper && showQuickJumper.goButton;\n var pageBufferSize = showLessItems ? 1 : 2;\n var prevPage = current - 1 > 0 ? current - 1 : 0;\n var nextPage = current + 1 < allPages ? current + 1 : allPages;\n var dataOrAriaAttributeProps = Object.keys(this.props).reduce(function (prev, key) {\n if (key.substr(0, 5) === 'data-' || key.substr(0, 5) === 'aria-' || key === 'role') {\n // eslint-disable-next-line no-param-reassign\n prev[key] = _this2.props[key];\n }\n\n return prev;\n }, {});\n\n if (simple) {\n if (goButton) {\n if (typeof goButton === 'boolean') {\n gotoButton = /*#__PURE__*/React.createElement(\"button\", {\n type: \"button\",\n onClick: this.handleGoTO,\n onKeyUp: this.handleGoTO\n }, locale.jump_to_confirm);\n } else {\n gotoButton = /*#__PURE__*/React.createElement(\"span\", {\n onClick: this.handleGoTO,\n onKeyUp: this.handleGoTO\n }, goButton);\n }\n\n gotoButton = /*#__PURE__*/React.createElement(\"li\", {\n title: showTitle ? \"\".concat(locale.jump_to).concat(current, \"/\").concat(allPages) : null,\n className: \"\".concat(prefixCls, \"-simple-pager\")\n }, gotoButton);\n }\n\n return /*#__PURE__*/React.createElement(\"ul\", _extends({\n className: classNames(prefixCls, \"\".concat(prefixCls, \"-simple\"), _defineProperty({}, \"\".concat(prefixCls, \"-disabled\"), disabled), className),\n style: style,\n ref: this.savePaginationNode\n }, dataOrAriaAttributeProps), /*#__PURE__*/React.createElement(\"li\", {\n title: showTitle ? locale.prev_page : null,\n onClick: this.prev,\n tabIndex: this.hasPrev() ? 0 : null,\n onKeyPress: this.runIfEnterPrev,\n className: classNames(\"\".concat(prefixCls, \"-prev\"), _defineProperty({}, \"\".concat(prefixCls, \"-disabled\"), !this.hasPrev())),\n \"aria-disabled\": !this.hasPrev()\n }, this.renderPrev(prevPage)), /*#__PURE__*/React.createElement(\"li\", {\n title: showTitle ? \"\".concat(current, \"/\").concat(allPages) : null,\n className: \"\".concat(prefixCls, \"-simple-pager\")\n }, /*#__PURE__*/React.createElement(\"input\", {\n type: \"text\",\n value: currentInputValue,\n disabled: disabled,\n onKeyDown: this.handleKeyDown,\n onKeyUp: this.handleKeyUp,\n onChange: this.handleKeyUp,\n size: \"3\"\n }), /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-slash\")\n }, \"/\"), allPages), /*#__PURE__*/React.createElement(\"li\", {\n title: showTitle ? locale.next_page : null,\n onClick: this.next,\n tabIndex: this.hasPrev() ? 0 : null,\n onKeyPress: this.runIfEnterNext,\n className: classNames(\"\".concat(prefixCls, \"-next\"), _defineProperty({}, \"\".concat(prefixCls, \"-disabled\"), !this.hasNext())),\n \"aria-disabled\": !this.hasNext()\n }, this.renderNext(nextPage)), gotoButton);\n }\n\n if (allPages <= 3 + pageBufferSize * 2) {\n var pagerProps = {\n locale: locale,\n rootPrefixCls: prefixCls,\n onClick: this.handleChange,\n onKeyPress: this.runIfEnter,\n showTitle: showTitle,\n itemRender: itemRender\n };\n\n if (!allPages) {\n pagerList.push( /*#__PURE__*/React.createElement(Pager, _extends({}, pagerProps, {\n key: \"noPager\",\n page: allPages,\n className: \"\".concat(prefixCls, \"-disabled\")\n })));\n }\n\n for (var i = 1; i <= allPages; i += 1) {\n var active = current === i;\n pagerList.push( /*#__PURE__*/React.createElement(Pager, _extends({}, pagerProps, {\n key: i,\n page: i,\n active: active\n })));\n }\n } else {\n var prevItemTitle = showLessItems ? locale.prev_3 : locale.prev_5;\n var nextItemTitle = showLessItems ? locale.next_3 : locale.next_5;\n\n if (showPrevNextJumpers) {\n jumpPrev = /*#__PURE__*/React.createElement(\"li\", {\n title: showTitle ? prevItemTitle : null,\n key: \"prev\",\n onClick: this.jumpPrev,\n tabIndex: \"0\",\n onKeyPress: this.runIfEnterJumpPrev,\n className: classNames(\"\".concat(prefixCls, \"-jump-prev\"), _defineProperty({}, \"\".concat(prefixCls, \"-jump-prev-custom-icon\"), !!jumpPrevIcon))\n }, itemRender(this.getJumpPrevPage(), 'jump-prev', this.getItemIcon(jumpPrevIcon)));\n jumpNext = /*#__PURE__*/React.createElement(\"li\", {\n title: showTitle ? nextItemTitle : null,\n key: \"next\",\n tabIndex: \"0\",\n onClick: this.jumpNext,\n onKeyPress: this.runIfEnterJumpNext,\n className: classNames(\"\".concat(prefixCls, \"-jump-next\"), _defineProperty({}, \"\".concat(prefixCls, \"-jump-next-custom-icon\"), !!jumpNextIcon))\n }, itemRender(this.getJumpNextPage(), 'jump-next', this.getItemIcon(jumpNextIcon)));\n }\n\n lastPager = /*#__PURE__*/React.createElement(Pager, {\n locale: locale,\n last: true,\n rootPrefixCls: prefixCls,\n onClick: this.handleChange,\n onKeyPress: this.runIfEnter,\n key: allPages,\n page: allPages,\n active: false,\n showTitle: showTitle,\n itemRender: itemRender\n });\n firstPager = /*#__PURE__*/React.createElement(Pager, {\n locale: locale,\n rootPrefixCls: prefixCls,\n onClick: this.handleChange,\n onKeyPress: this.runIfEnter,\n key: 1,\n page: 1,\n active: false,\n showTitle: showTitle,\n itemRender: itemRender\n });\n var left = Math.max(1, current - pageBufferSize);\n var right = Math.min(current + pageBufferSize, allPages);\n\n if (current - 1 <= pageBufferSize) {\n right = 1 + pageBufferSize * 2;\n }\n\n if (allPages - current <= pageBufferSize) {\n left = allPages - pageBufferSize * 2;\n }\n\n for (var _i = left; _i <= right; _i += 1) {\n var _active = current === _i;\n\n pagerList.push( /*#__PURE__*/React.createElement(Pager, {\n locale: locale,\n rootPrefixCls: prefixCls,\n onClick: this.handleChange,\n onKeyPress: this.runIfEnter,\n key: _i,\n page: _i,\n active: _active,\n showTitle: showTitle,\n itemRender: itemRender\n }));\n }\n\n if (current - 1 >= pageBufferSize * 2 && current !== 1 + 2) {\n pagerList[0] = cloneElement(pagerList[0], {\n className: \"\".concat(prefixCls, \"-item-after-jump-prev\")\n });\n pagerList.unshift(jumpPrev);\n }\n\n if (allPages - current >= pageBufferSize * 2 && current !== allPages - 2) {\n pagerList[pagerList.length - 1] = cloneElement(pagerList[pagerList.length - 1], {\n className: \"\".concat(prefixCls, \"-item-before-jump-next\")\n });\n pagerList.push(jumpNext);\n }\n\n if (left !== 1) {\n pagerList.unshift(firstPager);\n }\n\n if (right !== allPages) {\n pagerList.push(lastPager);\n }\n }\n\n var totalText = null;\n\n if (showTotal) {\n totalText = /*#__PURE__*/React.createElement(\"li\", {\n className: \"\".concat(prefixCls, \"-total-text\")\n }, showTotal(total, [total === 0 ? 0 : (current - 1) * pageSize + 1, current * pageSize > total ? total : current * pageSize]));\n }\n\n var prevDisabled = !this.hasPrev() || !allPages;\n var nextDisabled = !this.hasNext() || !allPages;\n return /*#__PURE__*/React.createElement(\"ul\", _extends({\n className: classNames(prefixCls, className, _defineProperty({}, \"\".concat(prefixCls, \"-disabled\"), disabled)),\n style: style,\n unselectable: \"unselectable\",\n ref: this.savePaginationNode\n }, dataOrAriaAttributeProps), totalText, /*#__PURE__*/React.createElement(\"li\", {\n title: showTitle ? locale.prev_page : null,\n onClick: this.prev,\n tabIndex: prevDisabled ? null : 0,\n onKeyPress: this.runIfEnterPrev,\n className: classNames(\"\".concat(prefixCls, \"-prev\"), _defineProperty({}, \"\".concat(prefixCls, \"-disabled\"), prevDisabled)),\n \"aria-disabled\": prevDisabled\n }, this.renderPrev(prevPage)), pagerList, /*#__PURE__*/React.createElement(\"li\", {\n title: showTitle ? locale.next_page : null,\n onClick: this.next,\n tabIndex: nextDisabled ? null : 0,\n onKeyPress: this.runIfEnterNext,\n className: classNames(\"\".concat(prefixCls, \"-next\"), _defineProperty({}, \"\".concat(prefixCls, \"-disabled\"), nextDisabled)),\n \"aria-disabled\": nextDisabled\n }, this.renderNext(nextPage)), /*#__PURE__*/React.createElement(Options, {\n disabled: disabled,\n locale: locale,\n rootPrefixCls: prefixCls,\n selectComponentClass: selectComponentClass,\n selectPrefixCls: selectPrefixCls,\n changeSize: this.getShowSizeChanger() ? this.changePageSize : null,\n current: current,\n pageSize: pageSize,\n pageSizeOptions: pageSizeOptions,\n quickGo: this.shouldDisplayQuickJumper() ? this.handleChange : null,\n goButton: goButton\n }));\n }\n }], [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(props, prevState) {\n var newState = {};\n\n if ('current' in props) {\n newState.current = props.current;\n\n if (props.current !== prevState.current) {\n newState.currentInputValue = newState.current;\n }\n }\n\n if ('pageSize' in props && props.pageSize !== prevState.pageSize) {\n var current = prevState.current;\n var newCurrent = calculatePage(props.pageSize, prevState, props);\n current = current > newCurrent ? newCurrent : current;\n\n if (!('current' in props)) {\n newState.current = current;\n newState.currentInputValue = current;\n }\n\n newState.pageSize = props.pageSize;\n }\n\n return newState;\n }\n }]);\n\n return Pagination;\n}(React.Component);\n\nPagination.defaultProps = {\n defaultCurrent: 1,\n total: 0,\n defaultPageSize: 10,\n onChange: noop,\n className: '',\n selectPrefixCls: 'rc-select',\n prefixCls: 'rc-pagination',\n selectComponentClass: null,\n hideOnSinglePage: false,\n showPrevNextJumpers: true,\n showQuickJumper: false,\n showLessItems: false,\n showTitle: true,\n onShowSizeChange: noop,\n locale: LOCALE,\n style: {},\n itemRender: defaultItemRender,\n totalBoundaryShowSizeChanger: 50\n};\nexport default Pagination;","export default {\n // Options.jsx\n items_per_page: 'æ¡/页',\n jump_to: '跳至',\n jump_to_confirm: '确定',\n page: '页',\n // Pagination.jsx\n prev_page: '上一页',\n next_page: '下一页',\n prev_5: 'å‘å‰ 5 页',\n next_5: 'å‘åŽ 5 页',\n prev_3: 'å‘å‰ 3 页',\n next_3: 'å‘åŽ 3 页'\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n 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 function __createBinding(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, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = 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\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","import * as React from 'react';\nimport { IStyle, ITheme } from '../../Styling';\nimport { IStyleFunctionOrObject } from '../../Utilities';\n\n/**\n * {@docCategory Image}\n */\nexport interface IImage {}\n\n/**\n * {@docCategory Image}\n */\nexport interface IImageProps extends React.ImgHTMLAttributes<HTMLImageElement> {\n /**\n * Call to provide customized styling that will layer on top of the variant rules\n */\n styles?: IStyleFunctionOrObject<IImageStyleProps, IImageStyles>;\n\n /**\n * Theme provided by HOC.\n */\n theme?: ITheme;\n\n /**\n * Additional css class to apply to the Component\n * @defaultvalue undefined\n */\n className?: string;\n\n /**\n * If true, fades the image in when loaded.\n * @defaultvalue true\n */\n shouldFadeIn?: boolean;\n\n /**\n * If true, the image starts as visible and is hidden on error. Otherwise, the image is hidden until\n * it is successfully loaded. This disables shouldFadeIn.\n * @defaultvalue false;\n */\n shouldStartVisible?: boolean;\n\n /**\n * Used to determine how the image is scaled and cropped to fit the frame.\n *\n * @defaultvalue If both dimensions are provided, then the image is fit using ImageFit.scale.\n * Otherwise, the image won't be scaled or cropped.\n */\n imageFit?: ImageFit;\n\n /**\n * Deprecated at v1.3.6, to replace the src in case of errors, use `onLoadingStateChange` instead and\n * rerender the Image with a difference src.\n * @deprecated Use `onLoadingStateChange` instead and\n * rerender the Image with a difference src.\n */\n errorSrc?: string;\n\n /**\n * If true, the image frame will expand to fill its parent container.\n */\n maximizeFrame?: boolean;\n\n /**\n * Optional callback method for when the image load state has changed.\n * The 'loadState' parameter indicates the current state of the Image.\n */\n onLoadingStateChange?: (loadState: ImageLoadState) => void;\n\n /**\n * Specifies the cover style to be used for this image. If not\n * specified, this will be dynamically calculated based on the\n * aspect ratio for the image.\n */\n coverStyle?: ImageCoverStyle;\n}\n\n/**\n * The possible methods that can be used to fit the image.\n * {@docCategory Image}\n */\nexport enum ImageFit {\n /**\n * The image is not scaled. The image is centered and cropped within the content box.\n */\n center = 0,\n\n /**\n * The image is scaled to maintain its aspect ratio while being fully contained within the frame. The image will\n * be centered horizontally and vertically within the frame. The space in the top and bottom or in the sides of\n * the frame will be empty depending on the difference in aspect ratio between the image and the frame.\n */\n contain = 1,\n\n /**\n * The image is scaled to maintain its aspect ratio while filling the frame. Portions of the image will be cropped\n * from the top and bottom, or the sides, depending on the difference in aspect ratio between the image and the frame.\n */\n cover = 2,\n\n /**\n * Neither the image nor the frame are scaled. If their sizes do not match, the image will either be cropped or the\n * frame will have empty space.\n */\n none = 3,\n\n /**\n * The image will be centered horizontally and vertically within the frame and maintains its aspect ratio. It will\n * behave as ImageFit.center if the image's natural height or width is less than the Image frame's height or width,\n * but if both natural height and width are larger than the frame it will behave as ImageFit.cover.\n */\n centerCover = 4,\n\n /**\n * The image will be centered horizontally and vertically within the frame and maintains its aspect ratio. It will\n * behave as ImageFit.center if the image's natural height and width is less than the Image frame's height and width,\n * but if either natural height or width are larger than the frame it will behave as ImageFit.contain.\n */\n centerContain = 5,\n}\n\n/**\n * The cover style to be used on the image\n * {@docCategory Image}\n */\nexport enum ImageCoverStyle {\n /**\n * The image will be shown at 100% height of container and the width will be scaled accordingly\n */\n landscape = 0,\n\n /**\n * The image will be shown at 100% width of container and the height will be scaled accordingly\n */\n portrait = 1,\n}\n\n/**\n * {@docCategory Image}\n */\nexport enum ImageLoadState {\n /**\n * The image has not yet been loaded, and there is no error yet.\n */\n notLoaded = 0,\n\n /**\n * The image has been loaded successfully.\n */\n loaded = 1,\n\n /**\n * An error has been encountered while loading the image.\n */\n error = 2,\n\n /**\n * Deprecated at v1.3.6, to replace the src in case of errors, use `onLoadingStateChange` instead\n * and rerender the Image with a difference src.\n * @deprecated Use `onLoadingStateChange` instead\n * and rerender the Image with a difference src.\n */\n errorLoaded = 3,\n}\n\n/**\n * {@docCategory Image}\n */\nexport interface IImageStyleProps {\n /**\n * Accept theme prop.\n */\n theme: ITheme;\n\n /**\n * Accept custom classNames\n */\n className?: string;\n\n /**\n * If true, the image frame will expand to fill its parent container.\n */\n maximizeFrame?: boolean;\n\n /**\n * If true, the image is loaded\n */\n isLoaded?: boolean;\n\n /**\n * If true, fades the image in when loaded.\n * @defaultvalue true\n */\n shouldFadeIn?: boolean;\n\n /**\n * If true, the image starts as visible and is hidden on error. Otherwise, the image is hidden until\n * it is successfully loaded. This disables shouldFadeIn.\n * @defaultvalue false;\n */\n shouldStartVisible?: boolean;\n\n /**\n * If true the image is coverStyle landscape instead of portrait\n */\n isLandscape?: boolean;\n\n /**\n * ImageFit booleans for center, cover, contain, centerContain, centerCover, none\n */\n isCenter?: boolean;\n isContain?: boolean;\n isCover?: boolean;\n isCenterContain?: boolean;\n isCenterCover?: boolean;\n isNone?: boolean;\n\n /**\n * if true image load is in error\n */\n isError?: boolean;\n\n /**\n * if true, imageFit is undefined\n */\n isNotImageFit?: boolean;\n\n /**\n * Image width value\n */\n width?: number | string;\n\n /**\n * Image height value\n */\n height?: number | string;\n}\n\n/**\n * {@docCategory Image}\n */\nexport interface IImageStyles {\n /**\n * Style set for the root div element.\n */\n root: IStyle;\n /**\n * Style set for the img element.\n */\n image: IStyle;\n}\n","/**\n * Simulated enum for keycodes. These will get inlined by uglify when used much like an enum\n *\n * @public\n * {@docCategory KeyCodes}\n */\nexport const KeyCodes = {\n backspace: 8 as 8,\n tab: 9 as 9,\n enter: 13 as 13,\n shift: 16 as 16,\n ctrl: 17 as 17,\n alt: 18 as 18,\n pauseBreak: 19 as 19,\n capslock: 20 as 20,\n escape: 27 as 27,\n space: 32 as 32,\n pageUp: 33 as 33,\n pageDown: 34 as 34,\n end: 35 as 35,\n home: 36 as 36,\n left: 37 as 37,\n up: 38 as 38,\n right: 39 as 39,\n down: 40 as 40,\n insert: 45 as 45,\n del: 46 as 46,\n zero: 48 as 48,\n one: 49 as 49,\n two: 50 as 50,\n three: 51 as 51,\n four: 52 as 52,\n five: 53 as 53,\n six: 54 as 54,\n seven: 55 as 55,\n eight: 56 as 56,\n nine: 57 as 57,\n a: 65 as 65,\n b: 66 as 66,\n c: 67 as 67,\n d: 68 as 68,\n e: 69 as 69,\n f: 70 as 70,\n g: 71 as 71,\n h: 72 as 72,\n i: 73 as 73,\n j: 74 as 74,\n k: 75 as 75,\n l: 76 as 76,\n m: 77 as 77,\n n: 78 as 78,\n o: 79 as 79,\n p: 80 as 80,\n q: 81 as 81,\n r: 82 as 82,\n s: 83 as 83,\n t: 84 as 84,\n u: 85 as 85,\n v: 86 as 86,\n w: 87 as 87,\n x: 88 as 88,\n y: 89 as 89,\n z: 90 as 90,\n leftWindow: 91 as 91,\n rightWindow: 92 as 92,\n select: 93 as 93,\n /* eslint-disable @typescript-eslint/naming-convention */\n zero_numpad: 96 as 96,\n one_numpad: 97 as 97,\n two_numpad: 98 as 98,\n three_numpad: 99 as 99,\n four_numpad: 100 as 100,\n five_numpad: 101 as 101,\n six_numpad: 102 as 102,\n seven_numpad: 103 as 103,\n eight_numpad: 104 as 104,\n nine_numpad: 105 as 105,\n /* eslint-enable @typescript-eslint/naming-convention */\n multiply: 106 as 106,\n add: 107 as 107,\n subtract: 109 as 109,\n decimalPoint: 110 as 110,\n divide: 111 as 111,\n f1: 112 as 112,\n f2: 113 as 113,\n f3: 114 as 114,\n f4: 115 as 115,\n f5: 116 as 116,\n f6: 117 as 117,\n f7: 118 as 118,\n f8: 119 as 119,\n f9: 120 as 120,\n f10: 121 as 121,\n f11: 122 as 122,\n f12: 123 as 123,\n numlock: 144 as 144,\n scrollLock: 145 as 145,\n semicolon: 186 as 186,\n equalSign: 187 as 187,\n comma: 188 as 188,\n dash: 189 as 189,\n period: 190 as 190,\n forwardSlash: 191 as 191,\n graveAccent: 192 as 192,\n openBracket: 219 as 219,\n backSlash: 220 as 220,\n closeBracket: 221 as 221,\n singleQuote: 222 as 222,\n};\nexport type KeyCodes = number;\n","import {\n get, FieldError, ResolverOptions, Ref, FieldErrors\n} from 'react-hook-form';\n\nconst setCustomValidity = (ref: Ref, fieldPath: string, errors: FieldErrors) => {\n if (ref && 'reportValidity' in ref) {\n const error = get(errors, fieldPath) as FieldError | undefined;\n ref.setCustomValidity((error && error.message) || '');\n\n ref.reportValidity();\n }\n};\n\n// Native validation (web only)\nexport const validateFieldsNatively = <TFieldValues>(\n errors: FieldErrors,\n options: ResolverOptions<TFieldValues>,\n): void => {\n\n\n for (const fieldPath in options.fields) {\n const field = options.fields[fieldPath];\n if (field && field.ref && 'reportValidity' in field.ref) {\n setCustomValidity(field.ref, fieldPath, errors)\n } else if (field.refs) {\n field.refs.forEach((ref: HTMLInputElement) => setCustomValidity(ref, fieldPath, errors))\n }\n }\n};\n","import {\n set,\n get,\n FieldErrors,\n Field,\n ResolverOptions,\n} from 'react-hook-form';\nimport { validateFieldsNatively } from './validateFieldsNatively';\n\nexport const toNestError = <TFieldValues>(\n errors: FieldErrors,\n options: ResolverOptions<TFieldValues>,\n): FieldErrors<TFieldValues> => {\n options.shouldUseNativeValidation && validateFieldsNatively(errors, options);\n\n const fieldErrors = {} as FieldErrors<TFieldValues>;\n for (const path in errors) {\n const field = get(options.fields, path) as Field['_f'] | undefined;\n\n set(\n fieldErrors,\n path,\n Object.assign(errors[path], { ref: field && field.ref }),\n );\n }\n\n return fieldErrors;\n};\n","import * as Yup from 'yup';\nimport { toNestError, validateFieldsNatively } from '@hookform/resolvers';\nimport { appendErrors, FieldError } from 'react-hook-form';\nimport { Resolver } from './types';\n\n/**\n * Why `path!` ? because it could be `undefined` in some case\n * https://github.com/jquense/yup#validationerrorerrors-string--arraystring-value-any-path-string\n */\nconst parseErrorSchema = (\n error: Yup.ValidationError,\n validateAllFieldCriteria: boolean,\n) => {\n return (error.inner || []).reduce<Record<string, FieldError>>(\n (previous, error) => {\n if (!previous[error.path!]) {\n previous[error.path!] = { message: error.message, type: error.type! };\n }\n\n if (validateAllFieldCriteria) {\n const types = previous[error.path!].types;\n const messages = types && types[error.type!];\n\n previous[error.path!] = appendErrors(\n error.path!,\n validateAllFieldCriteria,\n previous,\n error.type!,\n messages\n ? ([] as string[]).concat(messages as string[], error.message)\n : error.message,\n ) as FieldError;\n }\n\n return previous;\n },\n {},\n );\n};\n\nexport const yupResolver: Resolver =\n (schema, schemaOptions = {}, resolverOptions = {}) =>\n async (values, context, options) => {\n try {\n if (schemaOptions.context && process.env.NODE_ENV === 'development') {\n // eslint-disable-next-line no-console\n console.warn(\n \"You should not used the yup options context. Please, use the 'useForm' context object instead\",\n );\n }\n\n const result = await schema[\n resolverOptions.mode === 'sync' ? 'validateSync' : 'validate'\n ](\n values,\n Object.assign({ abortEarly: false }, schemaOptions, { context }),\n );\n\n options.shouldUseNativeValidation && validateFieldsNatively({}, options);\n\n return {\n values: resolverOptions.rawValues ? values : result,\n errors: {},\n };\n } catch (e: any) {\n if (!e.inner) {\n throw e;\n }\n\n return {\n values: {},\n errors: toNestError(\n parseErrorSchema(\n e,\n !options.shouldUseNativeValidation &&\n options.criteriaMode === 'all',\n ),\n options,\n ),\n };\n }\n };\n","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nimport { isValidElement } from 'react';\nimport isObject from 'lodash/isObject';\n\n/**\n * Determines how values are stacked:\n *\n * - `none` is the default, it adds values on top of each other. No smarts. Negative values will overlap.\n * - `expand` make it so that the values always add up to 1 - so the chart will look like a rectangle.\n * - `wiggle` and `silhouette` tries to keep the chart centered.\n * - `sign` stacks positive values above zero and negative values below zero. Similar to `none` but handles negatives.\n * - `positive` ignores all negative values, and then behaves like \\`none\\`.\n *\n * Also see https://d3js.org/d3-shape/stack#stack-offsets\n * (note that the `diverging` offset in d3 is named `sign` in recharts)\n */\n\n//\n// Event Handler Types -- Copied from @types/react/index.d.ts and adapted for Props.\n//\n\nvar SVGContainerPropKeys = ['viewBox', 'children'];\nexport var SVGElementPropKeys = ['aria-activedescendant', 'aria-atomic', 'aria-autocomplete', 'aria-busy', 'aria-checked', 'aria-colcount', 'aria-colindex', 'aria-colspan', 'aria-controls', 'aria-current', 'aria-describedby', 'aria-details', 'aria-disabled', 'aria-errormessage', 'aria-expanded', 'aria-flowto', 'aria-haspopup', 'aria-hidden', 'aria-invalid', 'aria-keyshortcuts', 'aria-label', 'aria-labelledby', 'aria-level', 'aria-live', 'aria-modal', 'aria-multiline', 'aria-multiselectable', 'aria-orientation', 'aria-owns', 'aria-placeholder', 'aria-posinset', 'aria-pressed', 'aria-readonly', 'aria-relevant', 'aria-required', 'aria-roledescription', 'aria-rowcount', 'aria-rowindex', 'aria-rowspan', 'aria-selected', 'aria-setsize', 'aria-sort', 'aria-valuemax', 'aria-valuemin', 'aria-valuenow', 'aria-valuetext', 'className', 'color', 'height', 'id', 'lang', 'max', 'media', 'method', 'min', 'name', 'style',\n/*\n * removed 'type' SVGElementPropKey because we do not currently use any SVG elements\n * that can use it and it conflicts with the recharts prop 'type'\n * https://github.com/recharts/recharts/pull/3327\n * https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/type\n */\n// 'type',\n'target', 'width', 'role', 'tabIndex', 'accentHeight', 'accumulate', 'additive', 'alignmentBaseline', 'allowReorder', 'alphabetic', 'amplitude', 'arabicForm', 'ascent', 'attributeName', 'attributeType', 'autoReverse', 'azimuth', 'baseFrequency', 'baselineShift', 'baseProfile', 'bbox', 'begin', 'bias', 'by', 'calcMode', 'capHeight', 'clip', 'clipPath', 'clipPathUnits', 'clipRule', 'colorInterpolation', 'colorInterpolationFilters', 'colorProfile', 'colorRendering', 'contentScriptType', 'contentStyleType', 'cursor', 'cx', 'cy', 'd', 'decelerate', 'descent', 'diffuseConstant', 'direction', 'display', 'divisor', 'dominantBaseline', 'dur', 'dx', 'dy', 'edgeMode', 'elevation', 'enableBackground', 'end', 'exponent', 'externalResourcesRequired', 'fill', 'fillOpacity', 'fillRule', 'filter', 'filterRes', 'filterUnits', 'floodColor', 'floodOpacity', 'focusable', 'fontFamily', 'fontSize', 'fontSizeAdjust', 'fontStretch', 'fontStyle', 'fontVariant', 'fontWeight', 'format', 'from', 'fx', 'fy', 'g1', 'g2', 'glyphName', 'glyphOrientationHorizontal', 'glyphOrientationVertical', 'glyphRef', 'gradientTransform', 'gradientUnits', 'hanging', 'horizAdvX', 'horizOriginX', 'href', 'ideographic', 'imageRendering', 'in2', 'in', 'intercept', 'k1', 'k2', 'k3', 'k4', 'k', 'kernelMatrix', 'kernelUnitLength', 'kerning', 'keyPoints', 'keySplines', 'keyTimes', 'lengthAdjust', 'letterSpacing', 'lightingColor', 'limitingConeAngle', 'local', 'markerEnd', 'markerHeight', 'markerMid', 'markerStart', 'markerUnits', 'markerWidth', 'mask', 'maskContentUnits', 'maskUnits', 'mathematical', 'mode', 'numOctaves', 'offset', 'opacity', 'operator', 'order', 'orient', 'orientation', 'origin', 'overflow', 'overlinePosition', 'overlineThickness', 'paintOrder', 'panose1', 'pathLength', 'patternContentUnits', 'patternTransform', 'patternUnits', 'pointerEvents', 'pointsAtX', 'pointsAtY', 'pointsAtZ', 'preserveAlpha', 'preserveAspectRatio', 'primitiveUnits', 'r', 'radius', 'refX', 'refY', 'renderingIntent', 'repeatCount', 'repeatDur', 'requiredExtensions', 'requiredFeatures', 'restart', 'result', 'rotate', 'rx', 'ry', 'seed', 'shapeRendering', 'slope', 'spacing', 'specularConstant', 'specularExponent', 'speed', 'spreadMethod', 'startOffset', 'stdDeviation', 'stemh', 'stemv', 'stitchTiles', 'stopColor', 'stopOpacity', 'strikethroughPosition', 'strikethroughThickness', 'string', 'stroke', 'strokeDasharray', 'strokeDashoffset', 'strokeLinecap', 'strokeLinejoin', 'strokeMiterlimit', 'strokeOpacity', 'strokeWidth', 'surfaceScale', 'systemLanguage', 'tableValues', 'targetX', 'targetY', 'textAnchor', 'textDecoration', 'textLength', 'textRendering', 'to', 'transform', 'u1', 'u2', 'underlinePosition', 'underlineThickness', 'unicode', 'unicodeBidi', 'unicodeRange', 'unitsPerEm', 'vAlphabetic', 'values', 'vectorEffect', 'version', 'vertAdvY', 'vertOriginX', 'vertOriginY', 'vHanging', 'vIdeographic', 'viewTarget', 'visibility', 'vMathematical', 'widths', 'wordSpacing', 'writingMode', 'x1', 'x2', 'x', 'xChannelSelector', 'xHeight', 'xlinkActuate', 'xlinkArcrole', 'xlinkHref', 'xlinkRole', 'xlinkShow', 'xlinkTitle', 'xlinkType', 'xmlBase', 'xmlLang', 'xmlns', 'xmlnsXlink', 'xmlSpace', 'y1', 'y2', 'y', 'yChannelSelector', 'z', 'zoomAndPan', 'ref', 'key', 'angle'];\nvar PolyElementKeys = ['points', 'pathLength'];\n\n/** svg element types that have specific attribute filtration requirements */\n\n/** map of svg element types to unique svg attributes that belong to that element */\nexport var FilteredElementKeyMap = {\n svg: SVGContainerPropKeys,\n polygon: PolyElementKeys,\n polyline: PolyElementKeys\n};\nexport var EventKeys = ['dangerouslySetInnerHTML', 'onCopy', 'onCopyCapture', 'onCut', 'onCutCapture', 'onPaste', 'onPasteCapture', 'onCompositionEnd', 'onCompositionEndCapture', 'onCompositionStart', 'onCompositionStartCapture', 'onCompositionUpdate', 'onCompositionUpdateCapture', 'onFocus', 'onFocusCapture', 'onBlur', 'onBlurCapture', 'onChange', 'onChangeCapture', 'onBeforeInput', 'onBeforeInputCapture', 'onInput', 'onInputCapture', 'onReset', 'onResetCapture', 'onSubmit', 'onSubmitCapture', 'onInvalid', 'onInvalidCapture', 'onLoad', 'onLoadCapture', 'onError', 'onErrorCapture', 'onKeyDown', 'onKeyDownCapture', 'onKeyPress', 'onKeyPressCapture', 'onKeyUp', 'onKeyUpCapture', 'onAbort', 'onAbortCapture', 'onCanPlay', 'onCanPlayCapture', 'onCanPlayThrough', 'onCanPlayThroughCapture', 'onDurationChange', 'onDurationChangeCapture', 'onEmptied', 'onEmptiedCapture', 'onEncrypted', 'onEncryptedCapture', 'onEnded', 'onEndedCapture', 'onLoadedData', 'onLoadedDataCapture', 'onLoadedMetadata', 'onLoadedMetadataCapture', 'onLoadStart', 'onLoadStartCapture', 'onPause', 'onPauseCapture', 'onPlay', 'onPlayCapture', 'onPlaying', 'onPlayingCapture', 'onProgress', 'onProgressCapture', 'onRateChange', 'onRateChangeCapture', 'onSeeked', 'onSeekedCapture', 'onSeeking', 'onSeekingCapture', 'onStalled', 'onStalledCapture', 'onSuspend', 'onSuspendCapture', 'onTimeUpdate', 'onTimeUpdateCapture', 'onVolumeChange', 'onVolumeChangeCapture', 'onWaiting', 'onWaitingCapture', 'onAuxClick', 'onAuxClickCapture', 'onClick', 'onClickCapture', 'onContextMenu', 'onContextMenuCapture', 'onDoubleClick', 'onDoubleClickCapture', 'onDrag', 'onDragCapture', 'onDragEnd', 'onDragEndCapture', 'onDragEnter', 'onDragEnterCapture', 'onDragExit', 'onDragExitCapture', 'onDragLeave', 'onDragLeaveCapture', 'onDragOver', 'onDragOverCapture', 'onDragStart', 'onDragStartCapture', 'onDrop', 'onDropCapture', 'onMouseDown', 'onMouseDownCapture', 'onMouseEnter', 'onMouseLeave', 'onMouseMove', 'onMouseMoveCapture', 'onMouseOut', 'onMouseOutCapture', 'onMouseOver', 'onMouseOverCapture', 'onMouseUp', 'onMouseUpCapture', 'onSelect', 'onSelectCapture', 'onTouchCancel', 'onTouchCancelCapture', 'onTouchEnd', 'onTouchEndCapture', 'onTouchMove', 'onTouchMoveCapture', 'onTouchStart', 'onTouchStartCapture', 'onPointerDown', 'onPointerDownCapture', 'onPointerMove', 'onPointerMoveCapture', 'onPointerUp', 'onPointerUpCapture', 'onPointerCancel', 'onPointerCancelCapture', 'onPointerEnter', 'onPointerEnterCapture', 'onPointerLeave', 'onPointerLeaveCapture', 'onPointerOver', 'onPointerOverCapture', 'onPointerOut', 'onPointerOutCapture', 'onGotPointerCapture', 'onGotPointerCaptureCapture', 'onLostPointerCapture', 'onLostPointerCaptureCapture', 'onScroll', 'onScrollCapture', 'onWheel', 'onWheelCapture', 'onAnimationStart', 'onAnimationStartCapture', 'onAnimationEnd', 'onAnimationEndCapture', 'onAnimationIteration', 'onAnimationIterationCapture', 'onTransitionEnd', 'onTransitionEndCapture'];\n\n/** The type of easing function to use for animations */\n\n/** Specifies the duration of animation, the unit of this option is ms. */\n\n/** the offset of a chart, which define the blank space all around */\n\n/**\n * The domain of axis.\n * This is the definition\n *\n * Numeric domain is always defined by an array of exactly two values, for the min and the max of the axis.\n * Categorical domain is defined as array of all possible values.\n *\n * Can be specified in many ways:\n * - array of numbers\n * - with special strings like 'dataMin' and 'dataMax'\n * - with special string math like 'dataMin - 100'\n * - with keyword 'auto'\n * - or a function\n * - array of functions\n * - or a combination of the above\n */\n\n/**\n * NumberDomain is an evaluated {@link AxisDomain}.\n * Unlike {@link AxisDomain}, it has no variety - it's a tuple of two number.\n * This is after all the keywords and functions were evaluated and what is left is [min, max].\n *\n * Know that the min, max values are not guaranteed to be nice numbers - values like -Infinity or NaN are possible.\n *\n * There are also `category` axes that have different things than numbers in their domain.\n */\n\n/** The props definition of base axis */\n\n/** Defines how ticks are placed and whether / how tick collisions are handled.\n * 'preserveStart' keeps the left tick on collision and ensures that the first tick is always shown.\n * 'preserveEnd' keeps the right tick on collision and ensures that the last tick is always shown.\n * 'preserveStartEnd' keeps the left tick on collision and ensures that the first and last ticks are always shown.\n * 'equidistantPreserveStart' selects a number N such that every nTh tick will be shown without collision.\n */\n\nexport var adaptEventHandlers = function adaptEventHandlers(props, newHandler) {\n if (!props || typeof props === 'function' || typeof props === 'boolean') {\n return null;\n }\n var inputProps = props;\n if ( /*#__PURE__*/isValidElement(props)) {\n inputProps = props.props;\n }\n if (!isObject(inputProps)) {\n return null;\n }\n var out = {};\n Object.keys(inputProps).forEach(function (key) {\n if (EventKeys.includes(key)) {\n out[key] = newHandler || function (e) {\n return inputProps[key](inputProps, e);\n };\n }\n });\n return out;\n};\nvar getEventHandlerOfChild = function getEventHandlerOfChild(originalHandler, data, index) {\n return function (e) {\n originalHandler(data, index, e);\n return null;\n };\n};\nexport var adaptEventsOfChild = function adaptEventsOfChild(props, data, index) {\n if (!isObject(props) || _typeof(props) !== 'object') {\n return null;\n }\n var out = null;\n Object.keys(props).forEach(function (key) {\n var item = props[key];\n if (EventKeys.includes(key) && typeof item === 'function') {\n if (!out) out = {};\n out[key] = getEventHandlerOfChild(item, data, index);\n }\n });\n return out;\n};","/**\n * {@docCategory Selection}\n */\nexport interface IObjectWithKey {\n key?: string | number;\n}\n\nexport const SELECTION_CHANGE = 'change';\nexport const SELECTION_ITEMS_CHANGE = 'items-change';\n\n/**\n * {@docCategory Selection}\n */\nexport enum SelectionMode {\n none = 0,\n single = 1,\n multiple = 2,\n}\n\n/**\n * {@docCategory Selection}\n */\nexport interface ISelection<TItem = IObjectWithKey> {\n count: number;\n mode: SelectionMode;\n\n canSelectItem: (item: TItem, index?: number) => boolean;\n\n // Obesrvable methods.\n setChangeEvents(isEnabled: boolean, suppressChange?: boolean): void;\n\n // Initialization methods.\n\n setItems(items: TItem[], shouldClear: boolean): void;\n getItems(): TItem[];\n\n // Item utility methods.\n getItemIndex?(key: string): number;\n\n // Read selection methods.\n\n getSelection(): TItem[];\n getSelectedIndices(): number[];\n getSelectedCount(): number;\n isRangeSelected(fromIndex: number, count: number): boolean;\n\n isAllSelected(): boolean;\n isKeySelected(key: string): boolean;\n isIndexSelected(index: number): boolean;\n\n isModal?(): boolean;\n\n // Write selection methods.\n\n setAllSelected(isAllSelected: boolean): void;\n setKeySelected(key: string, isSelected: boolean, shouldAnchor: boolean): void;\n setIndexSelected(index: number, isSelected: boolean, shouldAnchor: boolean): void;\n setRangeSelected?(fromIndex: number, count: number, isSelected: boolean, shouldAnchor: boolean): void;\n\n setModal?(isModal: boolean): void; // TODO make non-optional on next breaking change\n\n // Write range selection methods.\n\n selectToKey(key: string, clearSelection?: boolean): void;\n selectToIndex(index: number, clearSelection?: boolean): void;\n selectToRange?(index: number, count: number, clearSelection?: boolean): void;\n\n // Toggle helpers.\n\n toggleAllSelected(): void;\n toggleKeySelected(key: string): void;\n toggleIndexSelected(index: number): void;\n toggleRangeSelected(fromIndex: number, count: number): void;\n}\n\n/**\n * {@docCategory Selection}\n */\nexport enum SelectionDirection {\n horizontal = 0,\n vertical = 1,\n}\n","var isProduction = process.env.NODE_ENV === 'production';\nvar prefix = 'Invariant failed';\nfunction invariant(condition, message) {\n if (condition) {\n return;\n }\n if (isProduction) {\n throw new Error(prefix);\n }\n var provided = typeof message === 'function' ? message() : message;\n var value = provided ? \"\".concat(prefix, \": \").concat(provided) : prefix;\n throw new Error(value);\n}\n\nexport { invariant as default };\n","import { IDetailsRowStyleProps, IDetailsRowStyles, ICellStyleProps } from './DetailsRow.types';\nimport {\n AnimationClassNames,\n AnimationStyles,\n HighContrastSelector,\n IStyle,\n getFocusStyle,\n getGlobalClassNames,\n FontWeights,\n getHighContrastNoAdjustStyle,\n} from '../../Styling';\nimport { IsFocusVisibleClassName } from '../../Utilities';\n\nexport const DetailsRowGlobalClassNames = {\n root: 'ms-DetailsRow',\n // TODO: in Fabric 7.0 lowercase the 'Compact' for consistency across other components.\n compact: 'ms-DetailsList--Compact',\n cell: 'ms-DetailsRow-cell',\n cellAnimation: 'ms-DetailsRow-cellAnimation',\n cellCheck: 'ms-DetailsRow-cellCheck',\n check: 'ms-DetailsRow-check',\n cellMeasurer: 'ms-DetailsRow-cellMeasurer',\n listCellFirstChild: 'ms-List-cell:first-child',\n isContentUnselectable: 'is-contentUnselectable',\n isSelected: 'is-selected',\n isCheckVisible: 'is-check-visible',\n isRowHeader: 'is-row-header',\n fields: 'ms-DetailsRow-fields',\n};\nconst IsFocusableSelector = \"[data-is-focusable='true']\";\n\nexport const DEFAULT_CELL_STYLE_PROPS: ICellStyleProps = {\n cellLeftPadding: 12,\n cellRightPadding: 8,\n cellExtraRightPadding: 24,\n};\n\n// Source of default row heights to share.\nexport const DEFAULT_ROW_HEIGHTS = {\n rowHeight: 42,\n compactRowHeight: 32,\n};\n\n// Constant values\nconst values = {\n ...DEFAULT_ROW_HEIGHTS,\n rowVerticalPadding: 11,\n compactRowVerticalPadding: 6,\n};\n\nexport const getDetailsRowStyles = (props: IDetailsRowStyleProps): IDetailsRowStyles => {\n const {\n theme,\n isSelected,\n canSelect,\n droppingClassName,\n anySelected,\n isCheckVisible,\n checkboxCellClassName,\n compact,\n className,\n cellStyleProps = DEFAULT_CELL_STYLE_PROPS,\n enableUpdateAnimations,\n disabled,\n } = props;\n\n const { palette, fonts } = theme;\n const {\n neutralPrimary,\n white,\n neutralSecondary,\n neutralLighter,\n neutralLight,\n neutralDark,\n neutralQuaternaryAlt,\n } = palette;\n const { focusBorder } = theme.semanticColors;\n\n const classNames = getGlobalClassNames(DetailsRowGlobalClassNames, theme);\n\n const colors = {\n // Default\n defaultHeaderText: neutralPrimary,\n defaultMetaText: neutralSecondary,\n defaultBackground: white,\n\n // Default Hover\n defaultHoverHeaderText: neutralDark,\n defaultHoverMetaText: neutralPrimary,\n defaultHoverBackground: neutralLighter,\n\n // Selected\n selectedHeaderText: neutralDark,\n selectedMetaText: neutralPrimary,\n selectedBackground: neutralLight,\n\n // Selected Hover\n selectedHoverHeaderText: neutralDark,\n selectedHoverMetaText: neutralPrimary,\n selectedHoverBackground: neutralQuaternaryAlt,\n\n // Focus\n focusHeaderText: neutralDark,\n focusMetaText: neutralPrimary,\n focusBackground: neutralLight,\n focusHoverBackground: neutralQuaternaryAlt,\n };\n\n const rowHighContrastFocus = {\n top: 2,\n right: 2,\n bottom: 2,\n left: 2,\n };\n\n // Selected row styles\n const selectedStyles: IStyle = [\n getFocusStyle(theme, {\n inset: -1,\n borderColor: focusBorder,\n outlineColor: white,\n highContrastStyle: rowHighContrastFocus,\n }),\n classNames.isSelected,\n {\n color: colors.selectedMetaText,\n background: colors.selectedBackground,\n borderBottom: `1px solid ${white}`,\n selectors: {\n '&:before': {\n position: 'absolute',\n display: 'block',\n top: -1,\n height: 1,\n bottom: 0,\n left: 0,\n right: 0,\n content: '',\n borderTop: `1px solid ${white}`,\n },\n\n // Selected State hover\n '&:hover': {\n background: colors.selectedHoverBackground,\n color: colors.selectedHoverMetaText,\n selectors: {\n // Selected State hover meta cell\n [`.${classNames.cell} ${HighContrastSelector}`]: {\n color: 'HighlightText',\n selectors: {\n '> a': {\n color: 'HighlightText',\n },\n },\n },\n\n // Selected State hover Header cell\n [`.${classNames.isRowHeader}`]: {\n color: colors.selectedHoverHeaderText,\n selectors: {\n [HighContrastSelector]: {\n color: 'HighlightText',\n },\n },\n },\n\n // Ensure high-contrast mode overrides default hover background\n [HighContrastSelector]: {\n background: 'Highlight',\n },\n },\n },\n\n // Focus state\n '&:focus': {\n background: colors.focusBackground,\n selectors: {\n // Selected State hover meta cell\n [`.${classNames.cell}`]: {\n color: colors.focusMetaText,\n selectors: {\n [HighContrastSelector]: {\n color: 'HighlightText',\n selectors: {\n '> a': {\n color: 'HighlightText',\n },\n },\n },\n },\n },\n\n // Row header cell\n [`.${classNames.isRowHeader}`]: {\n color: colors.focusHeaderText,\n selectors: {\n [HighContrastSelector]: {\n color: 'HighlightText',\n },\n },\n },\n\n // Ensure high-contrast mode overrides default focus background\n [HighContrastSelector]: {\n background: 'Highlight',\n },\n },\n },\n\n [HighContrastSelector]: {\n background: 'Highlight',\n color: 'HighlightText',\n ...getHighContrastNoAdjustStyle(),\n selectors: {\n a: {\n color: 'HighlightText',\n },\n },\n },\n\n // Focus and hover state\n '&:focus:hover': {\n background: colors.focusHoverBackground,\n },\n },\n },\n ];\n\n const cannotSelectStyles: IStyle = [\n classNames.isContentUnselectable,\n {\n userSelect: 'none',\n cursor: 'default',\n },\n ];\n\n const rootCompactStyles: IStyle = {\n minHeight: values.compactRowHeight,\n border: 0,\n };\n\n const cellCompactStyles: IStyle = {\n minHeight: values.compactRowHeight,\n paddingTop: values.compactRowVerticalPadding,\n paddingBottom: values.compactRowVerticalPadding,\n paddingLeft: `${cellStyleProps.cellLeftPadding}px`,\n };\n\n const defaultCellStyles: IStyle = [\n getFocusStyle(theme, { inset: -1 }),\n classNames.cell,\n {\n display: 'inline-block',\n position: 'relative',\n boxSizing: 'border-box',\n minHeight: values.rowHeight,\n verticalAlign: 'top',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n paddingTop: values.rowVerticalPadding,\n paddingBottom: values.rowVerticalPadding,\n paddingLeft: `${cellStyleProps.cellLeftPadding}px`,\n selectors: {\n '& > button': {\n maxWidth: '100%',\n },\n\n [IsFocusableSelector]: getFocusStyle(theme, { inset: -1, borderColor: neutralSecondary, outlineColor: white }),\n },\n },\n\n isSelected && {\n selectors: {\n [HighContrastSelector]: {\n background: 'Highlight',\n color: 'HighlightText',\n ...getHighContrastNoAdjustStyle(),\n selectors: {\n a: {\n color: 'HighlightText',\n },\n },\n },\n },\n },\n\n compact && cellCompactStyles,\n disabled && { opacity: 0.5 },\n ];\n\n return {\n root: [\n classNames.root,\n AnimationClassNames.fadeIn400,\n droppingClassName,\n theme.fonts.small,\n isCheckVisible && classNames.isCheckVisible,\n getFocusStyle(theme, { borderColor: focusBorder, outlineColor: white }),\n {\n borderBottom: `1px solid ${neutralLighter}`,\n background: colors.defaultBackground,\n color: colors.defaultMetaText,\n // This ensures that the row always tries to consume is minimum width and does not compress.\n display: 'inline-flex',\n minWidth: '100%',\n minHeight: values.rowHeight,\n whiteSpace: 'nowrap',\n padding: 0,\n boxSizing: 'border-box',\n verticalAlign: 'top',\n textAlign: 'left',\n selectors: {\n [`.${classNames.listCellFirstChild} &:before`]: {\n display: 'none',\n },\n\n '&:hover': {\n background: colors.defaultHoverBackground,\n color: colors.defaultHoverMetaText,\n selectors: {\n [`.${classNames.isRowHeader}`]: {\n color: colors.defaultHoverHeaderText,\n },\n },\n },\n\n [`&:hover .${classNames.check}`]: {\n opacity: 1,\n },\n\n [`.${IsFocusVisibleClassName} &:focus .${classNames.check}`]: {\n opacity: 1,\n },\n },\n },\n isSelected && selectedStyles,\n !canSelect && cannotSelectStyles,\n compact && rootCompactStyles,\n className,\n ],\n\n cellUnpadded: {\n paddingRight: `${cellStyleProps.cellRightPadding}px`,\n },\n\n cellPadded: {\n paddingRight: `${cellStyleProps.cellExtraRightPadding + cellStyleProps.cellRightPadding}px`,\n selectors: {\n [`&.${classNames.cellCheck}`]: {\n paddingRight: 0,\n },\n },\n },\n\n cell: defaultCellStyles,\n cellAnimation: enableUpdateAnimations && AnimationStyles.slideLeftIn40,\n cellMeasurer: [\n classNames.cellMeasurer,\n {\n overflow: 'visible',\n whiteSpace: 'nowrap',\n },\n ],\n checkCell: [\n defaultCellStyles,\n classNames.cellCheck,\n checkboxCellClassName,\n {\n padding: 0,\n // Ensure that the check cell covers the top border of the cell.\n // This ensures the click target does not leave a spot which would\n // cause other items to be deselected.\n paddingTop: 1,\n marginTop: -1,\n flexShrink: 0,\n },\n ],\n checkCover: {\n position: 'absolute',\n top: -1,\n left: 0,\n bottom: 0,\n right: 0,\n display: anySelected ? 'block' : 'none',\n },\n fields: [\n classNames.fields,\n {\n display: 'flex',\n alignItems: 'stretch',\n },\n ],\n isRowHeader: [\n classNames.isRowHeader,\n {\n color: colors.defaultHeaderText,\n fontSize: fonts.medium.fontSize,\n },\n isSelected && {\n color: colors.selectedHeaderText,\n fontWeight: FontWeights.semibold,\n selectors: {\n [HighContrastSelector]: {\n color: 'HighlightText',\n },\n },\n },\n ],\n isMultiline: [\n defaultCellStyles,\n {\n whiteSpace: 'normal',\n wordBreak: 'break-word',\n textOverflow: 'clip',\n },\n ],\n check: [classNames.check],\n };\n};\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","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 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 { memoizeFunction } from '../../Utilities';\nimport { ITheme, mergeStyleSets } from '../../Styling';\nimport { IButtonStyles } from './Button.types';\nimport { getGlobalClassNames } from '../../Styling';\n\nexport interface IButtonClassNames {\n root?: string;\n flexContainer?: string;\n textContainer?: string;\n icon?: string;\n label?: string;\n menuIcon?: string;\n description?: string;\n screenReaderText?: string;\n}\n\nexport const ButtonGlobalClassNames = {\n msButton: 'ms-Button',\n msButtonHasMenu: 'ms-Button--hasMenu',\n msButtonIcon: 'ms-Button-icon',\n msButtonMenuIcon: 'ms-Button-menuIcon',\n msButtonLabel: 'ms-Button-label',\n msButtonDescription: 'ms-Button-description',\n msButtonScreenReaderText: 'ms-Button-screenReaderText',\n msButtonFlexContainer: 'ms-Button-flexContainer',\n msButtonTextContainer: 'ms-Button-textContainer',\n};\n\nexport const getBaseButtonClassNames = memoizeFunction(\n (\n theme: ITheme,\n styles: IButtonStyles,\n className: string,\n variantClassName: string,\n iconClassName: string | undefined,\n menuIconClassName: string | undefined,\n disabled: boolean,\n hasMenu: boolean,\n checked: boolean,\n expanded: boolean,\n isSplit: boolean | undefined,\n ): IButtonClassNames => {\n const classNames = getGlobalClassNames(ButtonGlobalClassNames, theme || {});\n\n const isExpanded = expanded && !isSplit;\n return mergeStyleSets({\n root: [\n classNames.msButton,\n styles.root,\n variantClassName,\n checked && ['is-checked', styles.rootChecked],\n isExpanded && [\n 'is-expanded',\n styles.rootExpanded,\n {\n selectors: {\n [`:hover .${classNames.msButtonIcon}`]: styles.iconExpandedHovered,\n // menuIcon falls back to rootExpandedHovered to support original behavior\n [`:hover .${classNames.msButtonMenuIcon}`]: styles.menuIconExpandedHovered || styles.rootExpandedHovered,\n ':hover': styles.rootExpandedHovered,\n },\n },\n ],\n hasMenu && [ButtonGlobalClassNames.msButtonHasMenu, styles.rootHasMenu],\n disabled && ['is-disabled', styles.rootDisabled],\n !disabled &&\n !isExpanded &&\n !checked && {\n selectors: {\n ':hover': styles.rootHovered,\n [`:hover .${classNames.msButtonLabel}`]: styles.labelHovered,\n [`:hover .${classNames.msButtonIcon}`]: styles.iconHovered,\n [`:hover .${classNames.msButtonDescription}`]: styles.descriptionHovered,\n [`:hover .${classNames.msButtonMenuIcon}`]: styles.menuIconHovered,\n ':focus': styles.rootFocused,\n ':active': styles.rootPressed,\n [`:active .${classNames.msButtonIcon}`]: styles.iconPressed,\n [`:active .${classNames.msButtonDescription}`]: styles.descriptionPressed,\n [`:active .${classNames.msButtonMenuIcon}`]: styles.menuIconPressed,\n },\n },\n disabled && checked && [styles.rootCheckedDisabled],\n !disabled &&\n checked && {\n selectors: {\n ':hover': styles.rootCheckedHovered,\n ':active': styles.rootCheckedPressed,\n },\n },\n className,\n ],\n flexContainer: [classNames.msButtonFlexContainer, styles.flexContainer],\n textContainer: [classNames.msButtonTextContainer, styles.textContainer],\n icon: [\n classNames.msButtonIcon,\n iconClassName,\n styles.icon,\n isExpanded && styles.iconExpanded,\n checked && styles.iconChecked,\n disabled && styles.iconDisabled,\n ],\n label: [classNames.msButtonLabel, styles.label, checked && styles.labelChecked, disabled && styles.labelDisabled],\n menuIcon: [\n classNames.msButtonMenuIcon,\n menuIconClassName,\n styles.menuIcon,\n checked && styles.menuIconChecked,\n disabled && !isSplit && styles.menuIconDisabled,\n !disabled &&\n !isExpanded &&\n !checked && {\n selectors: {\n ':hover': styles.menuIconHovered,\n ':active': styles.menuIconPressed,\n },\n },\n isExpanded && ['is-expanded', styles.menuIconExpanded],\n ],\n description: [\n classNames.msButtonDescription,\n styles.description,\n checked && styles.descriptionChecked,\n disabled && styles.descriptionDisabled,\n ],\n screenReaderText: [classNames.msButtonScreenReaderText, styles.screenReaderText],\n });\n },\n);\n","var arrayMap = require('./_arrayMap'),\n baseIteratee = require('./_baseIteratee'),\n baseMap = require('./_baseMap'),\n isArray = require('./isArray');\n\n/**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\nfunction map(collection, iteratee) {\n var func = isArray(collection) ? arrayMap : baseMap;\n return func(collection, baseIteratee(iteratee, 3));\n}\n\nmodule.exports = map;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport React, { useContext, useMemo } from 'react';\nvar ThemeContext = /*#__PURE__*/React.createContext({});\nvar Consumer = ThemeContext.Consumer,\n Provider = ThemeContext.Provider;\n\nfunction ThemeProvider(_ref) {\n var prefixes = _ref.prefixes,\n children = _ref.children;\n var copiedPrefixes = useMemo(function () {\n return _extends({}, prefixes);\n }, [prefixes]);\n return /*#__PURE__*/React.createElement(Provider, {\n value: copiedPrefixes\n }, children);\n}\n\nexport function useBootstrapPrefix(prefix, defaultPrefix) {\n var prefixes = useContext(ThemeContext);\n return prefix || prefixes[defaultPrefix] || defaultPrefix;\n}\n\nfunction createBootstrapComponent(Component, opts) {\n if (typeof opts === 'string') opts = {\n prefix: opts\n };\n var isClassy = Component.prototype && Component.prototype.isReactComponent; // If it's a functional component make sure we don't break it with a ref\n\n var _opts = opts,\n prefix = _opts.prefix,\n _opts$forwardRefAs = _opts.forwardRefAs,\n forwardRefAs = _opts$forwardRefAs === void 0 ? isClassy ? 'ref' : 'innerRef' : _opts$forwardRefAs;\n var Wrapped = /*#__PURE__*/React.forwardRef(function (_ref2, ref) {\n var props = _extends({}, _ref2);\n\n props[forwardRefAs] = ref;\n var bsPrefix = useBootstrapPrefix(props.bsPrefix, prefix);\n return /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n bsPrefix: bsPrefix\n }));\n });\n Wrapped.displayName = \"Bootstrap(\" + (Component.displayName || Component.name) + \")\";\n return Wrapped;\n}\n\nexport { createBootstrapComponent, Consumer as ThemeConsumer };\nexport default ThemeProvider;","import * as React from 'react';\nimport { IGroupSpacerProps } from './GroupSpacer.types';\n\nexport const SPACER_WIDTH = 36;\n\nexport const GroupSpacer: React.FunctionComponent<IGroupSpacerProps> = props => {\n const { count, indentWidth = SPACER_WIDTH, role = 'presentation' } = props;\n const width = count * indentWidth;\n\n return count > 0 ? (\n <span className={'ms-GroupSpacer'} style={{ display: 'inline-block', width }} role={role} />\n ) : null;\n};\n","import setPrototypeOf from \"./setPrototypeOf.js\";\nfunction _inheritsLoose(t, o) {\n t.prototype = Object.create(o.prototype), t.prototype.constructor = t, setPrototypeOf(t, o);\n}\nexport { _inheritsLoose as default };","import * as React from 'react';\nimport { IFocusTrapZoneProps } from '../../FocusTrapZone';\nimport { ILayerProps } from '../../Layer';\nimport { IOverlayProps } from '../../Overlay';\nimport { IStyle, ITheme } from '../../Styling';\nimport { IRefObject, IRenderFunction, IStyleFunctionOrObject } from '../../Utilities';\nimport { IButtonStyles } from '../Button/Button.types';\nimport { PanelBase } from './Panel.base';\nimport { IPopupProps } from '../../Popup';\n\n/**\n * {@docCategory Panel}\n */\nexport interface IPanel {\n /**\n * Forces the panel to open.\n */\n open: () => void;\n\n /**\n * Forces the panel to dismiss.\n */\n dismiss: (ev?: React.KeyboardEvent<HTMLElement>) => void;\n}\n\n/**\n * {@docCategory Panel}\n */\nexport interface IPanelProps extends React.HTMLAttributes<PanelBase> {\n /**\n * Optional callback to access the IPanel interface. Use this instead of ref for accessing\n * the public methods and properties of the component.\n */\n componentRef?: IRefObject<IPanel>;\n\n /**\n * Whether the panel is displayed.\n * If true, will cause panel to stay open even if dismissed.\n * If false, will cause panel to stay hidden.\n * If undefined, will allow the panel to control its own visility through open/dismiss methods.\n * @defaultvalue undefined\n */\n isOpen?: boolean;\n\n /**\n * Has the close button visible.\n * @defaultvalue true\n */\n hasCloseButton?: boolean;\n\n /**\n * Whether the panel can be light dismissed.\n * @defaultvalue false\n */\n isLightDismiss?: boolean;\n\n /**\n * Whether the panel is hidden on dismiss, instead of destroyed in the DOM.\n * Protects the contents from being destroyed when the panel is dismissed.\n * @defaultvalue false\n */\n isHiddenOnDismiss?: boolean;\n\n /**\n * Whether the panel uses a modal overlay or not\n * @defaultvalue true\n */\n isBlocking?: boolean;\n\n /**\n * Determines if content should stretch to fill available space putting footer at the bottom of the page\n * @defaultvalue false\n */\n isFooterAtBottom?: boolean;\n\n /**\n * Header text for the Panel.\n * @defaultvalue \"\"\n */\n headerText?: string;\n\n /**\n * The props for header text container.\n */\n headerTextProps?: React.HTMLAttributes<HTMLDivElement>;\n\n /**\n * A callback function for when the Panel is opened, before the animation completes.\n */\n onOpen?: () => void;\n\n /**\n * A callback function for when the Panel is opened, after the animation completes.\n */\n onOpened?: () => void;\n\n /**\n * A callback function for when the panel is closed, before the animation completes.\n * If the panel should NOT be dismissed based on some keyboard event, then simply call ev.preventDefault() on it\n */\n onDismiss?: (ev?: React.SyntheticEvent<HTMLElement>) => void;\n\n /**\n * A callback function which is called **after** the Panel is dismissed and the animation is complete.\n * (If you need to update the Panel's `isOpen` prop in response to a dismiss event, use `onDismiss` instead.)\n */\n onDismissed?: () => void;\n\n /**\n * Call to provide customized styling that will layer on top of the variant rules.\n */\n styles?: IStyleFunctionOrObject<IPanelStyleProps, IPanelStyles>;\n\n /**\n * Theme provided by High-Order Component.\n */\n theme?: ITheme;\n\n /**\n * Additional css class to apply to the Panel\n * @defaultvalue undefined\n */\n className?: string;\n\n /**\n * Type of the panel.\n * @defaultvalue PanelType.smallFixedFar\n */\n type?: PanelType;\n\n /**\n * Custom panel width, used only when `type` is set to `PanelType.custom`.\n */\n customWidth?: string;\n\n /**\n * Aria label on close button\n */\n closeButtonAriaLabel?: string;\n\n /**\n * Optional parameter to provider the class name for header text\n */\n headerClassName?: string;\n\n /**\n * Sets the HTMLElement to focus on when exiting the FocusTrapZone.\n * @defaultvalue The element.target that triggered the Panel.\n */\n elementToFocusOnDismiss?: HTMLElement;\n\n /**\n * Indicates if this Panel will ignore keeping track of HTMLElement that activated the Zone.\n * Deprecated, use `focusTrapZoneProps`.\n * @defaultvalue false\n * @deprecated Use `focusTrapZoneProps`.\n */\n ignoreExternalFocusing?: boolean;\n\n /**\n * Indicates whether Panel should force focus inside the focus trap zone.\n * If not explicitly specified, behavior aligns with FocusTrapZone's default behavior.\n * Deprecated, use `focusTrapZoneProps`.\n * @deprecated Use `focusTrapZoneProps`.\n */\n forceFocusInsideTrap?: boolean;\n\n /**\n * Indicates the selector for first focusable item.\n * Deprecated, use `focusTrapZoneProps`.\n * @deprecated Use `focusTrapZoneProps`.\n */\n firstFocusableSelector?: string;\n\n /**\n * Optional props to pass to the FocusTrapZone component to manage focus in the panel.\n */\n focusTrapZoneProps?: IFocusTrapZoneProps;\n\n /**\n * Optional props to pass to the Layer component hosting the panel.\n */\n layerProps?: ILayerProps;\n\n /**\n * Optional props to pass to the Overlay component that the panel uses.\n */\n overlayProps?: IOverlayProps;\n\n /**\n * Optional props to pass the Popup component that the panel uses.\n */\n popupProps?: IPopupProps;\n\n /**\n * Optional custom function to handle clicks outside the panel in lightdismiss mode\n */\n onLightDismissClick?: () => void;\n\n /**\n * Optional custom function to handle clicks outside this component\n */\n onOuterClick?: (ev?: React.MouseEvent<HTMLDivElement>) => void;\n\n /**\n * Optional custom renderer navigation region. Replaces the region that contains the close button.\n */\n onRenderNavigation?: IRenderFunction<IPanelProps>;\n\n /**\n * Optional custom renderer for content in the navigation region. Replaces current close button.\n */\n onRenderNavigationContent?: IRenderFunction<IPanelProps>;\n\n /**\n * Optional custom renderer for header region. Replaces current title\n */\n onRenderHeader?: IPanelHeaderRenderer;\n\n /**\n * Optional custom renderer for body region. Replaces any children passed into the component.\n */\n onRenderBody?: IRenderFunction<IPanelProps>;\n\n /**\n * Optional custom renderer for footer region. Replaces sticky footer.\n */\n onRenderFooter?: IRenderFunction<IPanelProps>;\n\n /**\n * Custom renderer for content in the sticky footer\n */\n onRenderFooterContent?: IRenderFunction<IPanelProps>;\n\n /**\n * Deprecated property. Serves no function.\n * @deprecated Serves no function.\n */\n componentId?: string;\n\n /**\n * Allow body scroll on content and overlay on touch devices. Changing after mounting has no effect.\n * @defaultvalue false\n */\n allowTouchBodyScroll?: boolean;\n}\n\n/**\n * Renderer function which takes an additional parameter, the ID to use for the element containing\n * the panel's title. This allows the `aria-labelledby` for the panel popup to work correctly.\n * Note that if `headerTextId` is provided, it **must** be used on an element, or screen readers\n * will be confused by the reference to a nonexistent ID.\n * {@docCategory Panel}\n */\nexport interface IPanelHeaderRenderer extends IRenderFunction<IPanelProps> {\n /**\n * @param props - Props given to the panel\n * @param defaultRender - Default header renderer. If using this renderer in code that does not\n * assign `headerTextId` to an element elsewhere, it **must** be passed to this function.\n * @param headerTextId - If provided, this **must** be used as the ID of an element containing the\n * panel's title, because the panel popup uses this ID as its aria-labelledby.\n */\n (props?: IPanelProps, defaultRender?: IPanelHeaderRenderer, headerTextId?: string | undefined): JSX.Element | null;\n}\n\n/**\n * {@docCategory Panel}\n */\nexport enum PanelType {\n /**\n * Renders the Panel with a `fluid` (full screen) width.\n * Recommended for use on small screen breakpoints.\n * - Small (320-479): full screen width, 16px left/right padding\n * - Medium (480-639): full screen width, 16px left/right padding\n * - Large (640-1023): full screen width, 32px left/right padding\n * - XLarge (1024-1365): full screen width, 32px left/right padding\n * - XXLarge (1366-up): full screen width, 40px left/right padding\n */\n smallFluid = 0,\n\n /**\n * Renders the Panel in fixed-width `small` size, anchored to the far side (right in LTR mode).\n * - Small (320-479): adapts to `PanelType.smallFluid` at this breakpoint\n * - Medium (480-639): 340px width, 16px left/right padding\n * - Large (640-1023): 340px width, 32px left/right padding\n * - XLarge (1024-1365): 340px width, 32px left/right padding\n * - XXLarge (1366-up): 340px width, 40px left/right padding\n */\n smallFixedFar = 1,\n\n /**\n * Renders the Panel in fixed-width `small` size, anchored to the near side (left in LTR mode).\n * - Small (320-479): 272px width, 16px left/right padding\n * - Medium (480-639): 272px width, 16px left/right padding\n * - Large (640-1023): 272px width, 32px left/right padding\n * - XLarge (1024-1365): 272px width, 32px left/right padding\n * - XXLarge (1366-up): 272px width, 40px left/right padding\n */\n smallFixedNear = 2,\n\n /**\n * Renders the Panel in `medium` size, anchored to the far side (right in LTR mode).\n * - Small (320-479): adapts to `PanelType.smallFluid` at this breakpoint\n * - Medium (480-639): adapts to `PanelType.smallFixedFar` at this breakpoint\n * - Large (640-1023): 592px width, 32px left/right padding\n * - XLarge (1024-1365): 644px width, 32px left/right padding\n * - XXLarge (1366-up): 644px width, 40px left/right padding\n */\n medium = 3,\n\n /**\n * Renders the Panel in `large` size, anchored to the far side (right in LTR mode).\n * - Small (320-479): adapts to `PanelType.smallFluid` at this breakpoint\n * - Medium (480-639): adapts to `PanelType.smallFixedFar` at this breakpoint\n * - Large (640-1023): adapts to `PanelType.medium` at this breakpoint\n * - XLarge (1024-1365): 48px fixed left margin, fluid width, 32px left/right padding\n * - XXLarge (1366-up): 428px fixed left margin, fluid width, 40px left/right padding\n */\n large = 4,\n\n /**\n * Renders the Panel in `large` size, anchored to the far side (right in LTR mode), with a fixed width at\n * XX-Large breakpoint.\n * - Small (320-479): adapts to `PanelType.smallFluid` at this breakpoint\n * - Medium (480-639): adapts to `PanelType.smallFixedFar` at this breakpoint\n * - Large (640-1023): adapts to `PanelType.medium` at this breakpoint\n * - XLarge (1024-1365): 48px fixed left margin, fluid width, 32px left/right padding\n * - XXLarge (1366-up): 940px width, 40px left/right padding\n */\n largeFixed = 5,\n\n /**\n * Renders the Panel in `extra large` size, anchored to the far side (right in LTR mode).\n * - Small (320-479): adapts to `PanelType.smallFluid` at this breakpoint\n * - Medium (480-639): adapts to `PanelType.smallFixedFar` at this breakpoint\n * - Large (640-1023): adapts to `PanelType.medium` at this breakpoint\n * - XLarge (1024-1365): adapts to `PanelType.large` at this breakpoint\n * - XXLarge (1366-1919): 176px fixed left margin, fluid width, 40px left/right padding\n * - XXXLarge (1920-up): 176px fixed left margin, fluid width, 40px left/right padding\n */\n extraLarge = 6,\n\n /**\n * Renders the Panel in `custom` size using `customWidth`, anchored to the far side (right in LTR mode).\n * - Has a fixed width provided by the `customWidth` prop\n * - When screen width reaches the `customWidth` value it will behave like a fluid width Panel\n * taking up 100% of the viewport width\n */\n custom = 7,\n\n /**\n * Renders the Panel in `custom` size using `customWidth`, anchored to the near side (left in LTR mode).\n * - Has a fixed width provided by the `customWidth` prop\n * - When screen width reaches the `customWidth` value it will behave like a fluid width Panel\n * taking up 100% of the viewport width\n */\n customNear = 8,\n}\n\n/**\n * {@docCategory Panel}\n */\nexport interface IPanelStyleProps {\n /**\n * Theme provided by High-Order Component.\n */\n theme: ITheme;\n\n /**\n * Accept custom classNames\n */\n className?: string;\n\n /**\n * Is Panel open\n */\n isOpen?: boolean;\n\n /**\n * Is animation currently running\n */\n isAnimating?: boolean;\n\n /**\n * Is panel on right side\n */\n isOnRightSide?: boolean;\n\n /**\n * Is panel hidden on dismiss\n */\n isHiddenOnDismiss?: boolean;\n\n /**\n * Classname for FocusTrapZone element\n */\n focusTrapZoneClassName?: string;\n\n /**\n * Determines if content should stretch to fill available space putting footer at the bottom of the page\n */\n isFooterAtBottom?: boolean;\n\n /**\n * Based on state value setting footer to sticky or not\n */\n isFooterSticky?: boolean;\n\n /**\n * Panel has close button\n */\n hasCloseButton?: boolean;\n\n /**\n * Type of the panel.\n */\n type?: PanelType;\n\n /**\n * Optional parameter to provider the class name for header text\n */\n headerClassName?: string;\n\n /**\n * Determines where the header is rendered based on whether the user\n * has passed in a custom onRenderNavigation or onRenderNavigationContent render callback\n */\n hasCustomNavigation?: boolean;\n}\n\nexport interface IPanelSubComponentStyles {\n /**\n * Styling for close button child component.\n */\n closeButton: Partial<IButtonStyles>;\n}\n\n/**\n * {@docCategory Panel}\n */\nexport interface IPanelStyles {\n /**\n * Style for the root element.\n */\n root: IStyle;\n\n /**\n * Style for the overlay element.\n */\n overlay: IStyle;\n\n /**\n * Style for the hidden element.\n */\n hiddenPanel: IStyle;\n\n /**\n * Style for the main section element.\n */\n main: IStyle;\n\n /**\n * Style for the navigation container element.\n */\n commands: IStyle;\n\n /**\n * Style for the Body and Footer container element.\n */\n contentInner: IStyle;\n\n /**\n * Style for the scrollable content area container element.\n */\n scrollableContent: IStyle;\n\n /**\n * Style for the close button container element.\n */\n navigation: IStyle;\n\n /**\n * Style for the close button IconButton element.\n * @deprecated Use `subComponentStyles.closeButton` instead.\n */\n closeButton?: IStyle;\n\n /**\n * Style for the header container div element.\n */\n header: IStyle;\n\n /**\n * Style for the header text div element.\n */\n headerText: IStyle;\n\n /**\n * Style for the body div element.\n */\n content: IStyle;\n\n /**\n * Style for the footer div element.\n */\n footer: IStyle;\n\n /**\n * Style for the inner footer div element.\n */\n footerInner: IStyle;\n\n /**\n * Styling for subcomponents.\n */\n subComponentStyles: IPanelSubComponentStyles;\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","import { _isSSR } from './setSSR';\n\n/**\n * Helper to get the document object. Note that in popup window cases, document\n * might be the wrong document, which is why we look at ownerDocument for the\n * truth. Also note that the SSR flag is used to test ssr scenarios even if\n * document is defined (from JSDOM for example.)\n *\n * @public\n */\nexport function getDocument(rootElement?: HTMLElement | null): Document | undefined {\n if (_isSSR || typeof document === 'undefined') {\n return undefined;\n } else {\n const el = rootElement as Element;\n\n return el && el.ownerDocument ? el.ownerDocument : document;\n }\n}\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.abs = void 0;\nexports.acos = acos;\nexports.asin = asin;\nexports.tau = exports.sqrt = exports.sin = exports.pi = exports.min = exports.max = exports.halfPi = exports.epsilon = exports.cos = exports.atan2 = void 0;\nconst abs = Math.abs;\nexports.abs = abs;\nconst atan2 = Math.atan2;\nexports.atan2 = atan2;\nconst cos = Math.cos;\nexports.cos = cos;\nconst max = Math.max;\nexports.max = max;\nconst min = Math.min;\nexports.min = min;\nconst sin = Math.sin;\nexports.sin = sin;\nconst sqrt = Math.sqrt;\nexports.sqrt = sqrt;\nconst epsilon = 1e-12;\nexports.epsilon = epsilon;\nconst pi = Math.PI;\nexports.pi = pi;\nconst halfPi = pi / 2;\nexports.halfPi = halfPi;\nconst tau = 2 * pi;\nexports.tau = tau;\n\nfunction acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nfunction asin(x) {\n return x >= 1 ? halfPi : x <= -1 ? -halfPi : Math.asin(x);\n}","import memoize from 'lodash/memoize';\n/**\n * This is memoized because the viewBox is unlikely to change often\n * - but because it is computed from offset, any change to it would re-render all children.\n *\n * And because we have many readers of the viewBox, and update it only rarely,\n * then let's optimize with memoization.\n */\nexport var calculateViewBox = memoize(function (offset) {\n return {\n x: offset.left,\n y: offset.top,\n width: offset.width,\n height: offset.height\n };\n}, function (offset) {\n return ['l', offset.left, 't', offset.top, 'w', offset.width, 'h', offset.height].join('');\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nimport React, { createContext, useContext } from 'react';\nimport invariant from 'tiny-invariant';\nimport find from 'lodash/find';\nimport every from 'lodash/every';\nimport { calculateViewBox } from '../util/calculateViewBox';\nimport { getAnyElementOfObject } from '../util/DataUtils';\nexport var XAxisContext = /*#__PURE__*/createContext(undefined);\nexport var YAxisContext = /*#__PURE__*/createContext(undefined);\nexport var ViewBoxContext = /*#__PURE__*/createContext(undefined);\nexport var OffsetContext = /*#__PURE__*/createContext({});\nexport var ClipPathIdContext = /*#__PURE__*/createContext(undefined);\nexport var ChartHeightContext = /*#__PURE__*/createContext(0);\nexport var ChartWidthContext = /*#__PURE__*/createContext(0);\n\n/**\n * Will add all the properties required to render all individual Recharts components into a React Context.\n *\n * If you want to read these properties, see the collection of hooks exported from this file.\n *\n * @param {object} props CategoricalChartState, plus children\n * @returns {ReactElement} React Context Provider\n */\nexport var ChartLayoutContextProvider = function ChartLayoutContextProvider(props) {\n var _props$state = props.state,\n xAxisMap = _props$state.xAxisMap,\n yAxisMap = _props$state.yAxisMap,\n offset = _props$state.offset,\n clipPathId = props.clipPathId,\n children = props.children,\n width = props.width,\n height = props.height;\n\n /**\n * Perhaps we should compute this property when reading? Let's see what is more often used\n */\n var viewBox = calculateViewBox(offset);\n\n /*\n * This pretends to be a single context but actually is split into multiple smaller ones.\n * Why?\n * Because one React Context only allows to set one value.\n * But we need to set multiple values.\n * If we do that with one context, then we force re-render on components that might not even be interested\n * in the part of the state that has changed.\n *\n * By splitting into smaller contexts, we allow each components to be optimized and only re-render when its dependencies change.\n *\n * To actually achieve the optimal re-render, it is necessary to use React.memo().\n * See the test file for details.\n */\n return /*#__PURE__*/React.createElement(XAxisContext.Provider, {\n value: xAxisMap\n }, /*#__PURE__*/React.createElement(YAxisContext.Provider, {\n value: yAxisMap\n }, /*#__PURE__*/React.createElement(OffsetContext.Provider, {\n value: offset\n }, /*#__PURE__*/React.createElement(ViewBoxContext.Provider, {\n value: viewBox\n }, /*#__PURE__*/React.createElement(ClipPathIdContext.Provider, {\n value: clipPathId\n }, /*#__PURE__*/React.createElement(ChartHeightContext.Provider, {\n value: height\n }, /*#__PURE__*/React.createElement(ChartWidthContext.Provider, {\n value: width\n }, children)))))));\n};\nexport var useClipPathId = function useClipPathId() {\n return useContext(ClipPathIdContext);\n};\nfunction getKeysForDebug(object) {\n var keys = Object.keys(object);\n if (keys.length === 0) {\n return 'There are no available ids.';\n }\n return \"Available ids are: \".concat(keys, \".\");\n}\n\n/**\n * This either finds and returns Axis by the specified ID, or throws an exception if an axis with this ID does not exist.\n *\n * @param xAxisId identifier of the axis - it's either autogenerated ('0'), or passed via `id` prop as <XAxis id='foo' />\n * @returns axis configuration object\n * @throws Error if no axis with this ID exists\n */\nexport var useXAxisOrThrow = function useXAxisOrThrow(xAxisId) {\n var xAxisMap = useContext(XAxisContext);\n !(xAxisMap != null) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Could not find Recharts context; are you sure this is rendered inside a Recharts wrapper component?') : invariant(false) : void 0;\n var xAxis = xAxisMap[xAxisId];\n !(xAxis != null) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Could not find xAxis by id \\\"\".concat(xAxisId, \"\\\" [\").concat(_typeof(xAxisId), \"]. \").concat(getKeysForDebug(xAxisMap))) : invariant(false) : void 0;\n return xAxis;\n};\n\n/**\n * This will find an arbitrary first XAxis. If there's exactly one it always returns that one\n * - but if there are multiple then it can return any of those.\n *\n * If you want specific XAxis out of multiple then prefer using useXAxisOrThrow\n *\n * @returns X axisOptions, or undefined - if there are no X axes\n */\nexport var useArbitraryXAxis = function useArbitraryXAxis() {\n var xAxisMap = useContext(XAxisContext);\n return getAnyElementOfObject(xAxisMap);\n};\n\n/**\n * This will find an arbitrary first YAxis. If there's exactly one it always returns that one\n * - but if there are multiple then it can return any of those.\n *\n * If you want specific YAxis out of multiple then prefer using useXAxisOrThrow\n *\n * @returns Y axisOptions, or undefined - if there are no Y axes\n */\nexport var useArbitraryYAxis = function useArbitraryYAxis() {\n var yAxisMap = useContext(YAxisContext);\n return getAnyElementOfObject(yAxisMap);\n};\n\n/**\n * This hooks will:\n * 1st attempt to find an YAxis that has all elements in its domain finite\n * If no such axis exists, it will return an arbitrary YAxis\n * if there are no Y axes then it returns undefined\n *\n * @returns Either Y axisOptions, or undefined if there are no Y axes\n */\nexport var useYAxisWithFiniteDomainOrRandom = function useYAxisWithFiniteDomainOrRandom() {\n var yAxisMap = useContext(YAxisContext);\n var yAxisWithFiniteDomain = find(yAxisMap, function (axis) {\n return every(axis.domain, Number.isFinite);\n });\n return yAxisWithFiniteDomain || getAnyElementOfObject(yAxisMap);\n};\n\n/**\n * This either finds and returns Axis by the specified ID, or throws an exception if an axis with this ID does not exist.\n *\n * @param yAxisId identifier of the axis - it's either autogenerated ('0'), or passed via `id` prop as <YAxis id='foo' />\n * @returns axis configuration object\n * @throws Error if no axis with this ID exists\n */\nexport var useYAxisOrThrow = function useYAxisOrThrow(yAxisId) {\n var yAxisMap = useContext(YAxisContext);\n !(yAxisMap != null) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Could not find Recharts context; are you sure this is rendered inside a Recharts wrapper component?') : invariant(false) : void 0;\n var yAxis = yAxisMap[yAxisId];\n !(yAxis != null) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Could not find yAxis by id \\\"\".concat(yAxisId, \"\\\" [\").concat(_typeof(yAxisId), \"]. \").concat(getKeysForDebug(yAxisMap))) : invariant(false) : void 0;\n return yAxis;\n};\nexport var useViewBox = function useViewBox() {\n var viewBox = useContext(ViewBoxContext);\n return viewBox;\n};\nexport var useOffset = function useOffset() {\n return useContext(OffsetContext);\n};\nexport var useChartWidth = function useChartWidth() {\n return useContext(ChartWidthContext);\n};\nexport var useChartHeight = function useChartHeight() {\n return useContext(ChartHeightContext);\n};","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperty(e, r, t) {\n return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n value: t,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : e[r] = t, e;\n}\nexport { _defineProperty as default };","export const KTP_PREFIX = 'ktp';\nexport const KTP_SEPARATOR = '-';\nexport const KTP_FULL_PREFIX = KTP_PREFIX + KTP_SEPARATOR;\nexport const DATAKTP_TARGET = 'data-ktp-target';\nexport const DATAKTP_EXECUTE_TARGET = 'data-ktp-execute-target';\nexport const DATAKTP_ARIA_TARGET = 'data-ktp-aria-target';\nexport const KTP_LAYER_ID = 'ktp-layer-id';\nexport const KTP_ARIA_SEPARATOR = ', ';\n\n// Events\nexport namespace KeytipEvents {\n export const KEYTIP_ADDED = 'keytipAdded';\n export const KEYTIP_REMOVED = 'keytipRemoved';\n export const KEYTIP_UPDATED = 'keytipUpdated';\n export const PERSISTED_KEYTIP_ADDED = 'persistedKeytipAdded';\n export const PERSISTED_KEYTIP_REMOVED = 'persistedKeytipRemoved';\n export const PERSISTED_KEYTIP_EXECUTE = 'persistedKeytipExecute';\n export const ENTER_KEYTIP_MODE = 'enterKeytipMode';\n export const EXIT_KEYTIP_MODE = 'exitKeytipMode';\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = merge;\nfunction merge() {\n var obj = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var defaults = arguments.length > 1 ? arguments[1] : undefined;\n for (var key in defaults) {\n if (typeof obj[key] === 'undefined') {\n obj[key] = defaults[key];\n }\n }\n return obj;\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.initInterpolator = initInterpolator;\nexports.initRange = initRange;\n\nfunction initRange(domain, range) {\n switch (arguments.length) {\n case 0:\n break;\n\n case 1:\n this.range(domain);\n break;\n\n default:\n this.range(range).domain(domain);\n break;\n }\n\n return this;\n}\n\nfunction initInterpolator(domain, interpolator) {\n switch (arguments.length) {\n case 0:\n break;\n\n case 1:\n {\n if (typeof domain === \"function\") this.interpolator(domain);else this.range(domain);\n break;\n }\n\n default:\n {\n this.domain(domain);\n if (typeof interpolator === \"function\") this.interpolator(interpolator);else this.range(interpolator);\n break;\n }\n }\n\n return this;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = newInterval;\nvar t0 = new Date(),\n t1 = new Date();\n\nfunction newInterval(floori, offseti, count, field) {\n function interval(date) {\n return floori(date = arguments.length === 0 ? new Date() : new Date(+date)), date;\n }\n\n interval.floor = function (date) {\n return floori(date = new Date(+date)), date;\n };\n\n interval.ceil = function (date) {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = function (date) {\n var d0 = interval(date),\n d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = function (date, step) {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = function (start, stop, step) {\n var range = [],\n previous;\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n\n do range.push(previous = new Date(+start)), offseti(start, step), floori(start); while (previous < start && start < stop);\n\n return range;\n };\n\n interval.filter = function (test) {\n return newInterval(function (date) {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, function (date, step) {\n if (date >= date) {\n if (step < 0) while (++step <= 0) {\n while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n\n } else while (--step >= 0) {\n while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n\n }\n }\n });\n };\n\n if (count) {\n interval.count = function (start, end) {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = function (step) {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null : !(step > 1) ? interval : interval.filter(field ? function (d) {\n return field(d) % step === 0;\n } : function (d) {\n return interval.count(0, d) % step === 0;\n });\n };\n }\n\n return interval;\n}","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nvar _excluded = [\"offset\"];\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : String(i); }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React, { cloneElement, isValidElement, createElement } from 'react';\nimport isNil from 'lodash/isNil';\nimport isFunction from 'lodash/isFunction';\nimport isObject from 'lodash/isObject';\nimport clsx from 'clsx';\nimport { Text } from './Text';\nimport { findAllByType, filterProps } from '../util/ReactUtils';\nimport { isNumOrStr, isNumber, isPercent, getPercentValue, uniqueId, mathSign } from '../util/DataUtils';\nimport { polarToCartesian } from '../util/PolarUtils';\nvar getLabel = function getLabel(props) {\n var value = props.value,\n formatter = props.formatter;\n var label = isNil(props.children) ? value : props.children;\n if (isFunction(formatter)) {\n return formatter(label);\n }\n return label;\n};\nvar getDeltaAngle = function getDeltaAngle(startAngle, endAngle) {\n var sign = mathSign(endAngle - startAngle);\n var deltaAngle = Math.min(Math.abs(endAngle - startAngle), 360);\n return sign * deltaAngle;\n};\nvar renderRadialLabel = function renderRadialLabel(labelProps, label, attrs) {\n var position = labelProps.position,\n viewBox = labelProps.viewBox,\n offset = labelProps.offset,\n className = labelProps.className;\n var _ref = viewBox,\n cx = _ref.cx,\n cy = _ref.cy,\n innerRadius = _ref.innerRadius,\n outerRadius = _ref.outerRadius,\n startAngle = _ref.startAngle,\n endAngle = _ref.endAngle,\n clockWise = _ref.clockWise;\n var radius = (innerRadius + outerRadius) / 2;\n var deltaAngle = getDeltaAngle(startAngle, endAngle);\n var sign = deltaAngle >= 0 ? 1 : -1;\n var labelAngle, direction;\n if (position === 'insideStart') {\n labelAngle = startAngle + sign * offset;\n direction = clockWise;\n } else if (position === 'insideEnd') {\n labelAngle = endAngle - sign * offset;\n direction = !clockWise;\n } else if (position === 'end') {\n labelAngle = endAngle + sign * offset;\n direction = clockWise;\n }\n direction = deltaAngle <= 0 ? direction : !direction;\n var startPoint = polarToCartesian(cx, cy, radius, labelAngle);\n var endPoint = polarToCartesian(cx, cy, radius, labelAngle + (direction ? 1 : -1) * 359);\n var path = \"M\".concat(startPoint.x, \",\").concat(startPoint.y, \"\\n A\").concat(radius, \",\").concat(radius, \",0,1,\").concat(direction ? 0 : 1, \",\\n \").concat(endPoint.x, \",\").concat(endPoint.y);\n var id = isNil(labelProps.id) ? uniqueId('recharts-radial-line-') : labelProps.id;\n return /*#__PURE__*/React.createElement(\"text\", _extends({}, attrs, {\n dominantBaseline: \"central\",\n className: clsx('recharts-radial-bar-label', className)\n }), /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"path\", {\n id: id,\n d: path\n })), /*#__PURE__*/React.createElement(\"textPath\", {\n xlinkHref: \"#\".concat(id)\n }, label));\n};\nvar getAttrsOfPolarLabel = function getAttrsOfPolarLabel(props) {\n var viewBox = props.viewBox,\n offset = props.offset,\n position = props.position;\n var _ref2 = viewBox,\n cx = _ref2.cx,\n cy = _ref2.cy,\n innerRadius = _ref2.innerRadius,\n outerRadius = _ref2.outerRadius,\n startAngle = _ref2.startAngle,\n endAngle = _ref2.endAngle;\n var midAngle = (startAngle + endAngle) / 2;\n if (position === 'outside') {\n var _polarToCartesian = polarToCartesian(cx, cy, outerRadius + offset, midAngle),\n _x = _polarToCartesian.x,\n _y = _polarToCartesian.y;\n return {\n x: _x,\n y: _y,\n textAnchor: _x >= cx ? 'start' : 'end',\n verticalAnchor: 'middle'\n };\n }\n if (position === 'center') {\n return {\n x: cx,\n y: cy,\n textAnchor: 'middle',\n verticalAnchor: 'middle'\n };\n }\n if (position === 'centerTop') {\n return {\n x: cx,\n y: cy,\n textAnchor: 'middle',\n verticalAnchor: 'start'\n };\n }\n if (position === 'centerBottom') {\n return {\n x: cx,\n y: cy,\n textAnchor: 'middle',\n verticalAnchor: 'end'\n };\n }\n var r = (innerRadius + outerRadius) / 2;\n var _polarToCartesian2 = polarToCartesian(cx, cy, r, midAngle),\n x = _polarToCartesian2.x,\n y = _polarToCartesian2.y;\n return {\n x: x,\n y: y,\n textAnchor: 'middle',\n verticalAnchor: 'middle'\n };\n};\nvar getAttrsOfCartesianLabel = function getAttrsOfCartesianLabel(props) {\n var viewBox = props.viewBox,\n parentViewBox = props.parentViewBox,\n offset = props.offset,\n position = props.position;\n var _ref3 = viewBox,\n x = _ref3.x,\n y = _ref3.y,\n width = _ref3.width,\n height = _ref3.height;\n\n // Define vertical offsets and position inverts based on the value being positive or negative\n var verticalSign = height >= 0 ? 1 : -1;\n var verticalOffset = verticalSign * offset;\n var verticalEnd = verticalSign > 0 ? 'end' : 'start';\n var verticalStart = verticalSign > 0 ? 'start' : 'end';\n\n // Define horizontal offsets and position inverts based on the value being positive or negative\n var horizontalSign = width >= 0 ? 1 : -1;\n var horizontalOffset = horizontalSign * offset;\n var horizontalEnd = horizontalSign > 0 ? 'end' : 'start';\n var horizontalStart = horizontalSign > 0 ? 'start' : 'end';\n if (position === 'top') {\n var attrs = {\n x: x + width / 2,\n y: y - verticalSign * offset,\n textAnchor: 'middle',\n verticalAnchor: verticalEnd\n };\n return _objectSpread(_objectSpread({}, attrs), parentViewBox ? {\n height: Math.max(y - parentViewBox.y, 0),\n width: width\n } : {});\n }\n if (position === 'bottom') {\n var _attrs = {\n x: x + width / 2,\n y: y + height + verticalOffset,\n textAnchor: 'middle',\n verticalAnchor: verticalStart\n };\n return _objectSpread(_objectSpread({}, _attrs), parentViewBox ? {\n height: Math.max(parentViewBox.y + parentViewBox.height - (y + height), 0),\n width: width\n } : {});\n }\n if (position === 'left') {\n var _attrs2 = {\n x: x - horizontalOffset,\n y: y + height / 2,\n textAnchor: horizontalEnd,\n verticalAnchor: 'middle'\n };\n return _objectSpread(_objectSpread({}, _attrs2), parentViewBox ? {\n width: Math.max(_attrs2.x - parentViewBox.x, 0),\n height: height\n } : {});\n }\n if (position === 'right') {\n var _attrs3 = {\n x: x + width + horizontalOffset,\n y: y + height / 2,\n textAnchor: horizontalStart,\n verticalAnchor: 'middle'\n };\n return _objectSpread(_objectSpread({}, _attrs3), parentViewBox ? {\n width: Math.max(parentViewBox.x + parentViewBox.width - _attrs3.x, 0),\n height: height\n } : {});\n }\n var sizeAttrs = parentViewBox ? {\n width: width,\n height: height\n } : {};\n if (position === 'insideLeft') {\n return _objectSpread({\n x: x + horizontalOffset,\n y: y + height / 2,\n textAnchor: horizontalStart,\n verticalAnchor: 'middle'\n }, sizeAttrs);\n }\n if (position === 'insideRight') {\n return _objectSpread({\n x: x + width - horizontalOffset,\n y: y + height / 2,\n textAnchor: horizontalEnd,\n verticalAnchor: 'middle'\n }, sizeAttrs);\n }\n if (position === 'insideTop') {\n return _objectSpread({\n x: x + width / 2,\n y: y + verticalOffset,\n textAnchor: 'middle',\n verticalAnchor: verticalStart\n }, sizeAttrs);\n }\n if (position === 'insideBottom') {\n return _objectSpread({\n x: x + width / 2,\n y: y + height - verticalOffset,\n textAnchor: 'middle',\n verticalAnchor: verticalEnd\n }, sizeAttrs);\n }\n if (position === 'insideTopLeft') {\n return _objectSpread({\n x: x + horizontalOffset,\n y: y + verticalOffset,\n textAnchor: horizontalStart,\n verticalAnchor: verticalStart\n }, sizeAttrs);\n }\n if (position === 'insideTopRight') {\n return _objectSpread({\n x: x + width - horizontalOffset,\n y: y + verticalOffset,\n textAnchor: horizontalEnd,\n verticalAnchor: verticalStart\n }, sizeAttrs);\n }\n if (position === 'insideBottomLeft') {\n return _objectSpread({\n x: x + horizontalOffset,\n y: y + height - verticalOffset,\n textAnchor: horizontalStart,\n verticalAnchor: verticalEnd\n }, sizeAttrs);\n }\n if (position === 'insideBottomRight') {\n return _objectSpread({\n x: x + width - horizontalOffset,\n y: y + height - verticalOffset,\n textAnchor: horizontalEnd,\n verticalAnchor: verticalEnd\n }, sizeAttrs);\n }\n if (isObject(position) && (isNumber(position.x) || isPercent(position.x)) && (isNumber(position.y) || isPercent(position.y))) {\n return _objectSpread({\n x: x + getPercentValue(position.x, width),\n y: y + getPercentValue(position.y, height),\n textAnchor: 'end',\n verticalAnchor: 'end'\n }, sizeAttrs);\n }\n return _objectSpread({\n x: x + width / 2,\n y: y + height / 2,\n textAnchor: 'middle',\n verticalAnchor: 'middle'\n }, sizeAttrs);\n};\nvar isPolar = function isPolar(viewBox) {\n return 'cx' in viewBox && isNumber(viewBox.cx);\n};\nexport function Label(_ref4) {\n var _ref4$offset = _ref4.offset,\n offset = _ref4$offset === void 0 ? 5 : _ref4$offset,\n restProps = _objectWithoutProperties(_ref4, _excluded);\n var props = _objectSpread({\n offset: offset\n }, restProps);\n var viewBox = props.viewBox,\n position = props.position,\n value = props.value,\n children = props.children,\n content = props.content,\n _props$className = props.className,\n className = _props$className === void 0 ? '' : _props$className,\n textBreakAll = props.textBreakAll;\n if (!viewBox || isNil(value) && isNil(children) && ! /*#__PURE__*/isValidElement(content) && !isFunction(content)) {\n return null;\n }\n if ( /*#__PURE__*/isValidElement(content)) {\n return /*#__PURE__*/cloneElement(content, props);\n }\n var label;\n if (isFunction(content)) {\n label = /*#__PURE__*/createElement(content, props);\n if ( /*#__PURE__*/isValidElement(label)) {\n return label;\n }\n } else {\n label = getLabel(props);\n }\n var isPolarLabel = isPolar(viewBox);\n var attrs = filterProps(props, true);\n if (isPolarLabel && (position === 'insideStart' || position === 'insideEnd' || position === 'end')) {\n return renderRadialLabel(props, label, attrs);\n }\n var positionAttrs = isPolarLabel ? getAttrsOfPolarLabel(props) : getAttrsOfCartesianLabel(props);\n return /*#__PURE__*/React.createElement(Text, _extends({\n className: clsx('recharts-label', className)\n }, attrs, positionAttrs, {\n breakAll: textBreakAll\n }), label);\n}\nLabel.displayName = 'Label';\nvar parseViewBox = function parseViewBox(props) {\n var cx = props.cx,\n cy = props.cy,\n angle = props.angle,\n startAngle = props.startAngle,\n endAngle = props.endAngle,\n r = props.r,\n radius = props.radius,\n innerRadius = props.innerRadius,\n outerRadius = props.outerRadius,\n x = props.x,\n y = props.y,\n top = props.top,\n left = props.left,\n width = props.width,\n height = props.height,\n clockWise = props.clockWise,\n labelViewBox = props.labelViewBox;\n if (labelViewBox) {\n return labelViewBox;\n }\n if (isNumber(width) && isNumber(height)) {\n if (isNumber(x) && isNumber(y)) {\n return {\n x: x,\n y: y,\n width: width,\n height: height\n };\n }\n if (isNumber(top) && isNumber(left)) {\n return {\n x: top,\n y: left,\n width: width,\n height: height\n };\n }\n }\n if (isNumber(x) && isNumber(y)) {\n return {\n x: x,\n y: y,\n width: 0,\n height: 0\n };\n }\n if (isNumber(cx) && isNumber(cy)) {\n return {\n cx: cx,\n cy: cy,\n startAngle: startAngle || angle || 0,\n endAngle: endAngle || angle || 0,\n innerRadius: innerRadius || 0,\n outerRadius: outerRadius || radius || r || 0,\n clockWise: clockWise\n };\n }\n if (props.viewBox) {\n return props.viewBox;\n }\n return {};\n};\nvar parseLabel = function parseLabel(label, viewBox) {\n if (!label) {\n return null;\n }\n if (label === true) {\n return /*#__PURE__*/React.createElement(Label, {\n key: \"label-implicit\",\n viewBox: viewBox\n });\n }\n if (isNumOrStr(label)) {\n return /*#__PURE__*/React.createElement(Label, {\n key: \"label-implicit\",\n viewBox: viewBox,\n value: label\n });\n }\n if ( /*#__PURE__*/isValidElement(label)) {\n if (label.type === Label) {\n return /*#__PURE__*/cloneElement(label, {\n key: 'label-implicit',\n viewBox: viewBox\n });\n }\n return /*#__PURE__*/React.createElement(Label, {\n key: \"label-implicit\",\n content: label,\n viewBox: viewBox\n });\n }\n if (isFunction(label)) {\n return /*#__PURE__*/React.createElement(Label, {\n key: \"label-implicit\",\n content: label,\n viewBox: viewBox\n });\n }\n if (isObject(label)) {\n return /*#__PURE__*/React.createElement(Label, _extends({\n viewBox: viewBox\n }, label, {\n key: \"label-implicit\"\n }));\n }\n return null;\n};\nvar renderCallByParent = function renderCallByParent(parentProps, viewBox) {\n var checkPropsLabel = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n if (!parentProps || !parentProps.children && checkPropsLabel && !parentProps.label) {\n return null;\n }\n var children = parentProps.children;\n var parentViewBox = parseViewBox(parentProps);\n var explicitChildren = findAllByType(children, Label).map(function (child, index) {\n return /*#__PURE__*/cloneElement(child, {\n viewBox: viewBox || parentViewBox,\n // eslint-disable-next-line react/no-array-index-key\n key: \"label-\".concat(index)\n });\n });\n if (!checkPropsLabel) {\n return explicitChildren;\n }\n var implicitLabel = parseLabel(parentProps.label, viewBox || parentViewBox);\n return [implicitLabel].concat(_toConsumableArray(explicitChildren));\n};\nLabel.parseViewBox = parseViewBox;\nLabel.renderCallByParent = renderCallByParent;","/**\n * The days of the week\n * {@docCategory DayOfWeek}\n */\nexport enum DayOfWeek {\n Sunday = 0,\n Monday = 1,\n Tuesday = 2,\n Wednesday = 3,\n Thursday = 4,\n Friday = 5,\n Saturday = 6,\n}\n\n/**\n * The months\n * {@docCategory MonthOfYear}\n */\nexport enum MonthOfYear {\n January = 0,\n February = 1,\n March = 2,\n April = 3,\n May = 4,\n June = 5,\n July = 6,\n August = 7,\n September = 8,\n October = 9,\n November = 10,\n December = 11,\n}\n\n/**\n * First week of the year settings types\n * {@docCategory FirstWeekOfYear}\n */\nexport enum FirstWeekOfYear {\n FirstDay = 0,\n FirstFullWeek = 1,\n FirstFourDayWeek = 2,\n}\n\n/**\n * The supported date range types\n * {@docCategory DateRangeType}\n */\nexport enum DateRangeType {\n Day = 0,\n Week = 1,\n Month = 2,\n WorkWeek = 3,\n}\n\nexport const DAYS_IN_WEEK = 7;\n","// Original source:\r\n// - https://github.com/simonihmig/tracked-redux/blob/master/packages/tracked-redux/src/-private/proxy.ts\r\n\r\nimport type { Node, Tag } from './tracking'\r\nimport {\r\n consumeCollection,\r\n consumeTag,\r\n createTag,\r\n dirtyCollection,\r\n dirtyTag\r\n} from './tracking'\r\n\r\nexport const REDUX_PROXY_LABEL = Symbol()\r\n\r\nlet nextId = 0\r\n\r\nconst proto = Object.getPrototypeOf({})\r\n\r\nclass ObjectTreeNode<T extends Record<string, unknown>> implements Node<T> {\r\n proxy: T = new Proxy(this, objectProxyHandler) as unknown as T\r\n tag = createTag()\r\n tags = {} as Record<string, Tag>\r\n children = {} as Record<string, Node>\r\n collectionTag = null\r\n id = nextId++\r\n\r\n constructor(public value: T) {\r\n this.value = value\r\n this.tag.value = value\r\n }\r\n}\r\n\r\nconst objectProxyHandler = {\r\n get(node: Node, key: string | symbol): unknown {\r\n function calculateResult() {\r\n const { value } = node\r\n\r\n const childValue = Reflect.get(value, key)\r\n\r\n if (typeof key === 'symbol') {\r\n return childValue\r\n }\r\n\r\n if (key in proto) {\r\n return childValue\r\n }\r\n\r\n if (typeof childValue === 'object' && childValue !== null) {\r\n let childNode = node.children[key]\r\n\r\n if (childNode === undefined) {\r\n childNode = node.children[key] = createNode(childValue)\r\n }\r\n\r\n if (childNode.tag) {\r\n consumeTag(childNode.tag)\r\n }\r\n\r\n return childNode.proxy\r\n } else {\r\n let tag = node.tags[key]\r\n\r\n if (tag === undefined) {\r\n tag = node.tags[key] = createTag()\r\n tag.value = childValue\r\n }\r\n\r\n consumeTag(tag)\r\n\r\n return childValue\r\n }\r\n }\r\n const res = calculateResult()\r\n return res\r\n },\r\n\r\n ownKeys(node: Node): ArrayLike<string | symbol> {\r\n consumeCollection(node)\r\n return Reflect.ownKeys(node.value)\r\n },\r\n\r\n getOwnPropertyDescriptor(\r\n node: Node,\r\n prop: string | symbol\r\n ): PropertyDescriptor | undefined {\r\n return Reflect.getOwnPropertyDescriptor(node.value, prop)\r\n },\r\n\r\n has(node: Node, prop: string | symbol): boolean {\r\n return Reflect.has(node.value, prop)\r\n }\r\n}\r\n\r\nclass ArrayTreeNode<T extends Array<unknown>> implements Node<T> {\r\n proxy: T = new Proxy([this], arrayProxyHandler) as unknown as T\r\n tag = createTag()\r\n tags = {}\r\n children = {}\r\n collectionTag = null\r\n id = nextId++\r\n\r\n constructor(public value: T) {\r\n this.value = value\r\n this.tag.value = value\r\n }\r\n}\r\n\r\nconst arrayProxyHandler = {\r\n get([node]: [Node], key: string | symbol): unknown {\r\n if (key === 'length') {\r\n consumeCollection(node)\r\n }\r\n\r\n return objectProxyHandler.get(node, key)\r\n },\r\n\r\n ownKeys([node]: [Node]): ArrayLike<string | symbol> {\r\n return objectProxyHandler.ownKeys(node)\r\n },\r\n\r\n getOwnPropertyDescriptor(\r\n [node]: [Node],\r\n prop: string | symbol\r\n ): PropertyDescriptor | undefined {\r\n return objectProxyHandler.getOwnPropertyDescriptor(node, prop)\r\n },\r\n\r\n has([node]: [Node], prop: string | symbol): boolean {\r\n return objectProxyHandler.has(node, prop)\r\n }\r\n}\r\n\r\nexport function createNode<T extends Array<unknown> | Record<string, unknown>>(\r\n value: T\r\n): Node<T> {\r\n if (Array.isArray(value)) {\r\n return new ArrayTreeNode(value)\r\n }\r\n\r\n return new ObjectTreeNode(value) as Node<T>\r\n}\r\n\r\nconst keysMap = new WeakMap<\r\n Array<unknown> | Record<string, unknown>,\r\n Set<string>\r\n>()\r\n\r\nexport function updateNode<T extends Array<unknown> | Record<string, unknown>>(\r\n node: Node<T>,\r\n newValue: T\r\n): void {\r\n const { value, tags, children } = node\r\n\r\n node.value = newValue\r\n\r\n if (\r\n Array.isArray(value) &&\r\n Array.isArray(newValue) &&\r\n value.length !== newValue.length\r\n ) {\r\n dirtyCollection(node)\r\n } else {\r\n if (value !== newValue) {\r\n let oldKeysSize = 0\r\n let newKeysSize = 0\r\n let anyKeysAdded = false\r\n\r\n for (const _key in value) {\r\n oldKeysSize++\r\n }\r\n\r\n for (const key in newValue) {\r\n newKeysSize++\r\n if (!(key in value)) {\r\n anyKeysAdded = true\r\n break\r\n }\r\n }\r\n\r\n const isDifferent = anyKeysAdded || oldKeysSize !== newKeysSize\r\n\r\n if (isDifferent) {\r\n dirtyCollection(node)\r\n }\r\n }\r\n }\r\n\r\n for (const key in tags) {\r\n const childValue = (value as Record<string, unknown>)[key]\r\n const newChildValue = (newValue as Record<string, unknown>)[key]\r\n\r\n if (childValue !== newChildValue) {\r\n dirtyCollection(node)\r\n dirtyTag(tags[key], newChildValue)\r\n }\r\n\r\n if (typeof newChildValue === 'object' && newChildValue !== null) {\r\n delete tags[key]\r\n }\r\n }\r\n\r\n for (const key in children) {\r\n const childNode = children[key]\r\n const newChildValue = (newValue as Record<string, unknown>)[key]\r\n\r\n const childValue = childNode.value\r\n\r\n if (childValue === newChildValue) {\r\n continue\r\n } else if (typeof newChildValue === 'object' && newChildValue !== null) {\r\n updateNode(childNode, newChildValue as Record<string, unknown>)\r\n } else {\r\n deleteNode(childNode)\r\n delete children[key]\r\n }\r\n }\r\n}\r\n\r\nfunction deleteNode(node: Node): void {\r\n if (node.tag) {\r\n dirtyTag(node.tag, null)\r\n }\r\n dirtyCollection(node)\r\n for (const key in node.tags) {\r\n dirtyTag(node.tags[key], null)\r\n }\r\n for (const key in node.children) {\r\n deleteNode(node.children[key])\r\n }\r\n}\r\n","// Original source:\r\n// - https://github.com/facebook/react/blob/0b974418c9a56f6c560298560265dcf4b65784bc/packages/react/src/ReactCache.js\r\n\r\nimport type {\r\n AnyFunction,\r\n DefaultMemoizeFields,\r\n EqualityFn,\r\n Simplify\r\n} from './types'\r\n\r\nclass StrongRef<T> {\r\n constructor(private value: T) {}\r\n deref() {\r\n return this.value\r\n }\r\n}\r\n\r\nconst Ref =\r\n typeof WeakRef !== 'undefined'\r\n ? WeakRef\r\n : (StrongRef as unknown as typeof WeakRef)\r\n\r\nconst UNTERMINATED = 0\r\nconst TERMINATED = 1\r\n\r\ninterface UnterminatedCacheNode<T> {\r\n /**\r\n * Status, represents whether the cached computation returned a value or threw an error.\r\n */\r\n s: 0\r\n /**\r\n * Value, either the cached result or an error, depending on status.\r\n */\r\n v: void\r\n /**\r\n * Object cache, a `WeakMap` where non-primitive arguments are stored.\r\n */\r\n o: null | WeakMap<Function | Object, CacheNode<T>>\r\n /**\r\n * Primitive cache, a regular Map where primitive arguments are stored.\r\n */\r\n p: null | Map<string | number | null | void | symbol | boolean, CacheNode<T>>\r\n}\r\n\r\ninterface TerminatedCacheNode<T> {\r\n /**\r\n * Status, represents whether the cached computation returned a value or threw an error.\r\n */\r\n s: 1\r\n /**\r\n * Value, either the cached result or an error, depending on status.\r\n */\r\n v: T\r\n /**\r\n * Object cache, a `WeakMap` where non-primitive arguments are stored.\r\n */\r\n o: null | WeakMap<Function | Object, CacheNode<T>>\r\n /**\r\n * Primitive cache, a regular `Map` where primitive arguments are stored.\r\n */\r\n p: null | Map<string | number | null | void | symbol | boolean, CacheNode<T>>\r\n}\r\n\r\ntype CacheNode<T> = TerminatedCacheNode<T> | UnterminatedCacheNode<T>\r\n\r\nfunction createCacheNode<T>(): CacheNode<T> {\r\n return {\r\n s: UNTERMINATED,\r\n v: undefined,\r\n o: null,\r\n p: null\r\n }\r\n}\r\n\r\n/**\r\n * Configuration options for a memoization function utilizing `WeakMap` for\r\n * its caching mechanism.\r\n *\r\n * @template Result - The type of the return value of the memoized function.\r\n *\r\n * @since 5.0.0\r\n * @public\r\n */\r\nexport interface WeakMapMemoizeOptions<Result = any> {\r\n /**\r\n * If provided, used to compare a newly generated output value against previous values in the cache.\r\n * If a match is found, the old value is returned. This addresses the common\r\n * ```ts\r\n * todos.map(todo => todo.id)\r\n * ```\r\n * use case, where an update to another field in the original data causes a recalculation\r\n * due to changed references, but the output is still effectively the same.\r\n *\r\n * @since 5.0.0\r\n */\r\n resultEqualityCheck?: EqualityFn<Result>\r\n}\r\n\r\n/**\r\n * Creates a tree of `WeakMap`-based cache nodes based on the identity of the\r\n * arguments it's been called with (in this case, the extracted values from your input selectors).\r\n * This allows `weakMapMemoize` to have an effectively infinite cache size.\r\n * Cache results will be kept in memory as long as references to the arguments still exist,\r\n * and then cleared out as the arguments are garbage-collected.\r\n *\r\n * __Design Tradeoffs for `weakMapMemoize`:__\r\n * - Pros:\r\n * - It has an effectively infinite cache size, but you have no control over\r\n * how long values are kept in cache as it's based on garbage collection and `WeakMap`s.\r\n * - Cons:\r\n * - There's currently no way to alter the argument comparisons.\r\n * They're based on strict reference equality.\r\n * - It's roughly the same speed as `lruMemoize`, although likely a fraction slower.\r\n *\r\n * __Use Cases for `weakMapMemoize`:__\r\n * - This memoizer is likely best used for cases where you need to call the\r\n * same selector instance with many different arguments, such as a single\r\n * selector instance that is used in a list item component and called with\r\n * item IDs like:\r\n * ```ts\r\n * useSelector(state => selectSomeData(state, props.category))\r\n * ```\r\n * @param func - The function to be memoized.\r\n * @returns A memoized function with a `.clearCache()` method attached.\r\n *\r\n * @example\r\n * <caption>Using `createSelector`</caption>\r\n * ```ts\r\n * import { createSelector, weakMapMemoize } from 'reselect'\r\n *\r\n * interface RootState {\r\n * items: { id: number; category: string; name: string }[]\r\n * }\r\n *\r\n * const selectItemsByCategory = createSelector(\r\n * [\r\n * (state: RootState) => state.items,\r\n * (state: RootState, category: string) => category\r\n * ],\r\n * (items, category) => items.filter(item => item.category === category),\r\n * {\r\n * memoize: weakMapMemoize,\r\n * argsMemoize: weakMapMemoize\r\n * }\r\n * )\r\n * ```\r\n *\r\n * @example\r\n * <caption>Using `createSelectorCreator`</caption>\r\n * ```ts\r\n * import { createSelectorCreator, weakMapMemoize } from 'reselect'\r\n *\r\n * const createSelectorWeakMap = createSelectorCreator({ memoize: weakMapMemoize, argsMemoize: weakMapMemoize })\r\n *\r\n * const selectItemsByCategory = createSelectorWeakMap(\r\n * [\r\n * (state: RootState) => state.items,\r\n * (state: RootState, category: string) => category\r\n * ],\r\n * (items, category) => items.filter(item => item.category === category)\r\n * )\r\n * ```\r\n *\r\n * @template Func - The type of the function that is memoized.\r\n *\r\n * @see {@link https://reselect.js.org/api/weakMapMemoize `weakMapMemoize`}\r\n *\r\n * @since 5.0.0\r\n * @public\r\n * @experimental\r\n */\r\nexport function weakMapMemoize<Func extends AnyFunction>(\r\n func: Func,\r\n options: WeakMapMemoizeOptions<ReturnType<Func>> = {}\r\n) {\r\n let fnNode = createCacheNode()\r\n const { resultEqualityCheck } = options\r\n\r\n let lastResult: WeakRef<object> | undefined\r\n\r\n let resultsCount = 0\r\n\r\n function memoized() {\r\n let cacheNode = fnNode\r\n const { length } = arguments\r\n for (let i = 0, l = length; i < l; i++) {\r\n const arg = arguments[i]\r\n if (\r\n typeof arg === 'function' ||\r\n (typeof arg === 'object' && arg !== null)\r\n ) {\r\n // Objects go into a WeakMap\r\n let objectCache = cacheNode.o\r\n if (objectCache === null) {\r\n cacheNode.o = objectCache = new WeakMap()\r\n }\r\n const objectNode = objectCache.get(arg)\r\n if (objectNode === undefined) {\r\n cacheNode = createCacheNode()\r\n objectCache.set(arg, cacheNode)\r\n } else {\r\n cacheNode = objectNode\r\n }\r\n } else {\r\n // Primitives go into a regular Map\r\n let primitiveCache = cacheNode.p\r\n if (primitiveCache === null) {\r\n cacheNode.p = primitiveCache = new Map()\r\n }\r\n const primitiveNode = primitiveCache.get(arg)\r\n if (primitiveNode === undefined) {\r\n cacheNode = createCacheNode()\r\n primitiveCache.set(arg, cacheNode)\r\n } else {\r\n cacheNode = primitiveNode\r\n }\r\n }\r\n }\r\n\r\n const terminatedNode = cacheNode as unknown as TerminatedCacheNode<any>\r\n\r\n let result\r\n\r\n if (cacheNode.s === TERMINATED) {\r\n result = cacheNode.v\r\n } else {\r\n // Allow errors to propagate\r\n result = func.apply(null, arguments as unknown as any[])\r\n resultsCount++\r\n\r\n if (resultEqualityCheck) {\r\n const lastResultValue = lastResult?.deref?.() ?? lastResult\r\n\r\n if (\r\n lastResultValue != null &&\r\n resultEqualityCheck(lastResultValue as ReturnType<Func>, result)\r\n ) {\r\n result = lastResultValue\r\n\r\n resultsCount !== 0 && resultsCount--\r\n }\r\n\r\n const needsWeakRef =\r\n (typeof result === 'object' && result !== null) ||\r\n typeof result === 'function'\r\n\r\n lastResult = needsWeakRef ? new Ref(result) : result\r\n }\r\n }\r\n\r\n terminatedNode.s = TERMINATED\r\n\r\n terminatedNode.v = result\r\n return result\r\n }\r\n\r\n memoized.clearCache = () => {\r\n fnNode = createCacheNode()\r\n memoized.resetResultsCount()\r\n }\r\n\r\n memoized.resultsCount = () => resultsCount\r\n\r\n memoized.resetResultsCount = () => {\r\n resultsCount = 0\r\n }\r\n\r\n return memoized as Func & Simplify<DefaultMemoizeFields>\r\n}\r\n","import { weakMapMemoize } from './weakMapMemoize'\r\n\r\nimport type {\r\n Combiner,\r\n CreateSelectorOptions,\r\n DropFirstParameter,\r\n ExtractMemoizerFields,\r\n GetParamsFromSelectors,\r\n GetStateFromSelectors,\r\n InterruptRecursion,\r\n OutputSelector,\r\n Selector,\r\n SelectorArray,\r\n SetRequired,\r\n Simplify,\r\n UnknownMemoizer\r\n} from './types'\r\n\r\nimport {\r\n assertIsFunction,\r\n collectInputSelectorResults,\r\n ensureIsArray,\r\n getDependencies,\r\n getDevModeChecksExecutionInfo\r\n} from './utils'\r\n\r\n/**\r\n * An instance of `createSelector`, customized with a given memoize implementation.\r\n *\r\n * @template MemoizeFunction - The type of the memoize function that is used to memoize the `resultFunc` inside `createSelector` (e.g., `lruMemoize` or `weakMapMemoize`).\r\n * @template ArgsMemoizeFunction - The type of the optional memoize function that is used to memoize the arguments passed into the output selector generated by `createSelector` (e.g., `lruMemoize` or `weakMapMemoize`). If none is explicitly provided, `weakMapMemoize` will be used.\r\n * @template StateType - The type of state that the selectors created with this selector creator will operate on.\r\n *\r\n * @public\r\n */\r\nexport interface CreateSelectorFunction<\r\n MemoizeFunction extends UnknownMemoizer = typeof weakMapMemoize,\r\n ArgsMemoizeFunction extends UnknownMemoizer = typeof weakMapMemoize,\r\n StateType = any\r\n> {\r\n /**\r\n * Creates a memoized selector function.\r\n *\r\n * @param createSelectorArgs - An arbitrary number of input selectors as separate inline arguments and a `combiner` function.\r\n * @returns A memoized output selector.\r\n *\r\n * @template InputSelectors - The type of the input selectors as an array.\r\n * @template Result - The return type of the `combiner` as well as the output selector.\r\n * @template OverrideMemoizeFunction - The type of the optional `memoize` function that could be passed into the options object to override the original `memoize` function that was initially passed into `createSelectorCreator`.\r\n * @template OverrideArgsMemoizeFunction - The type of the optional `argsMemoize` function that could be passed into the options object to override the original `argsMemoize` function that was initially passed into `createSelectorCreator`.\r\n *\r\n * @see {@link https://reselect.js.org/api/createselector `createSelector`}\r\n */\r\n <InputSelectors extends SelectorArray<StateType>, Result>(\r\n ...createSelectorArgs: [\r\n ...inputSelectors: InputSelectors,\r\n combiner: Combiner<InputSelectors, Result>\r\n ]\r\n ): OutputSelector<\r\n InputSelectors,\r\n Result,\r\n MemoizeFunction,\r\n ArgsMemoizeFunction\r\n > &\r\n InterruptRecursion\r\n\r\n /**\r\n * Creates a memoized selector function.\r\n *\r\n * @param createSelectorArgs - An arbitrary number of input selectors as separate inline arguments, a `combiner` function and an `options` object.\r\n * @returns A memoized output selector.\r\n *\r\n * @template InputSelectors - The type of the input selectors as an array.\r\n * @template Result - The return type of the `combiner` as well as the output selector.\r\n * @template OverrideMemoizeFunction - The type of the optional `memoize` function that could be passed into the options object to override the original `memoize` function that was initially passed into `createSelectorCreator`.\r\n * @template OverrideArgsMemoizeFunction - The type of the optional `argsMemoize` function that could be passed into the options object to override the original `argsMemoize` function that was initially passed into `createSelectorCreator`.\r\n *\r\n * @see {@link https://reselect.js.org/api/createselector `createSelector`}\r\n */\r\n <\r\n InputSelectors extends SelectorArray<StateType>,\r\n Result,\r\n OverrideMemoizeFunction extends UnknownMemoizer = MemoizeFunction,\r\n OverrideArgsMemoizeFunction extends UnknownMemoizer = ArgsMemoizeFunction\r\n >(\r\n ...createSelectorArgs: [\r\n ...inputSelectors: InputSelectors,\r\n combiner: Combiner<InputSelectors, Result>,\r\n createSelectorOptions: Simplify<\r\n CreateSelectorOptions<\r\n MemoizeFunction,\r\n ArgsMemoizeFunction,\r\n OverrideMemoizeFunction,\r\n OverrideArgsMemoizeFunction\r\n >\r\n >\r\n ]\r\n ): OutputSelector<\r\n InputSelectors,\r\n Result,\r\n OverrideMemoizeFunction,\r\n OverrideArgsMemoizeFunction\r\n > &\r\n InterruptRecursion\r\n\r\n /**\r\n * Creates a memoized selector function.\r\n *\r\n * @param inputSelectors - An array of input selectors.\r\n * @param combiner - A function that Combines the input selectors and returns an output selector. Otherwise known as the result function.\r\n * @param createSelectorOptions - An optional options object that allows for further customization per selector.\r\n * @returns A memoized output selector.\r\n *\r\n * @template InputSelectors - The type of the input selectors array.\r\n * @template Result - The return type of the `combiner` as well as the output selector.\r\n * @template OverrideMemoizeFunction - The type of the optional `memoize` function that could be passed into the options object to override the original `memoize` function that was initially passed into `createSelectorCreator`.\r\n * @template OverrideArgsMemoizeFunction - The type of the optional `argsMemoize` function that could be passed into the options object to override the original `argsMemoize` function that was initially passed into `createSelectorCreator`.\r\n *\r\n * @see {@link https://reselect.js.org/api/createselector `createSelector`}\r\n */\r\n <\r\n InputSelectors extends SelectorArray<StateType>,\r\n Result,\r\n OverrideMemoizeFunction extends UnknownMemoizer = MemoizeFunction,\r\n OverrideArgsMemoizeFunction extends UnknownMemoizer = ArgsMemoizeFunction\r\n >(\r\n inputSelectors: [...InputSelectors],\r\n combiner: Combiner<InputSelectors, Result>,\r\n createSelectorOptions?: Simplify<\r\n CreateSelectorOptions<\r\n MemoizeFunction,\r\n ArgsMemoizeFunction,\r\n OverrideMemoizeFunction,\r\n OverrideArgsMemoizeFunction\r\n >\r\n >\r\n ): OutputSelector<\r\n InputSelectors,\r\n Result,\r\n OverrideMemoizeFunction,\r\n OverrideArgsMemoizeFunction\r\n > &\r\n InterruptRecursion\r\n\r\n /**\r\n * Creates a \"pre-typed\" version of {@linkcode createSelector createSelector}\r\n * where the `state` type is predefined.\r\n *\r\n * This allows you to set the `state` type once, eliminating the need to\r\n * specify it with every {@linkcode createSelector createSelector} call.\r\n *\r\n * @returns A pre-typed `createSelector` with the state type already defined.\r\n *\r\n * @example\r\n * ```ts\r\n * import { createSelector } from 'reselect'\r\n *\r\n * export interface RootState {\r\n * todos: { id: number; completed: boolean }[]\r\n * alerts: { id: number; read: boolean }[]\r\n * }\r\n *\r\n * export const createAppSelector = createSelector.withTypes<RootState>()\r\n *\r\n * const selectTodoIds = createAppSelector(\r\n * [\r\n * // Type of `state` is set to `RootState`, no need to manually set the type\r\n * state => state.todos\r\n * ],\r\n * todos => todos.map(({ id }) => id)\r\n * )\r\n * ```\r\n * @template OverrideStateType - The specific type of state used by all selectors created with this selector creator.\r\n *\r\n * @see {@link https://reselect.js.org/api/createselector#defining-a-pre-typed-createselector `createSelector.withTypes`}\r\n *\r\n * @since 5.1.0\r\n */\r\n withTypes: <OverrideStateType extends StateType>() => CreateSelectorFunction<\r\n MemoizeFunction,\r\n ArgsMemoizeFunction,\r\n OverrideStateType\r\n >\r\n}\r\n\r\n/**\r\n * Creates a selector creator function with the specified memoization function\r\n * and options for customizing memoization behavior.\r\n *\r\n * @param options - An options object containing the `memoize` function responsible for memoizing the `resultFunc` inside `createSelector` (e.g., `lruMemoize` or `weakMapMemoize`). It also provides additional options for customizing memoization. While the `memoize` property is mandatory, the rest are optional.\r\n * @returns A customized `createSelector` function.\r\n *\r\n * @example\r\n * ```ts\r\n * const customCreateSelector = createSelectorCreator({\r\n * memoize: customMemoize, // Function to be used to memoize `resultFunc`\r\n * memoizeOptions: [memoizeOption1, memoizeOption2], // Options passed to `customMemoize` as the second argument onwards\r\n * argsMemoize: customArgsMemoize, // Function to be used to memoize the selector's arguments\r\n * argsMemoizeOptions: [argsMemoizeOption1, argsMemoizeOption2] // Options passed to `customArgsMemoize` as the second argument onwards\r\n * })\r\n *\r\n * const customSelector = customCreateSelector(\r\n * [inputSelector1, inputSelector2],\r\n * resultFunc // `resultFunc` will be passed as the first argument to `customMemoize`\r\n * )\r\n *\r\n * customSelector(\r\n * ...selectorArgs // Will be memoized by `customArgsMemoize`\r\n * )\r\n * ```\r\n *\r\n * @template MemoizeFunction - The type of the memoize function that is used to memoize the `resultFunc` inside `createSelector` (e.g., `lruMemoize` or `weakMapMemoize`).\r\n * @template ArgsMemoizeFunction - The type of the optional memoize function that is used to memoize the arguments passed into the output selector generated by `createSelector` (e.g., `lruMemoize` or `weakMapMemoize`). If none is explicitly provided, `weakMapMemoize` will be used.\r\n *\r\n * @see {@link https://reselect.js.org/api/createSelectorCreator#using-options-since-500 `createSelectorCreator`}\r\n *\r\n * @since 5.0.0\r\n * @public\r\n */\r\nexport function createSelectorCreator<\r\n MemoizeFunction extends UnknownMemoizer,\r\n ArgsMemoizeFunction extends UnknownMemoizer = typeof weakMapMemoize\r\n>(\r\n options: Simplify<\r\n SetRequired<\r\n CreateSelectorOptions<\r\n typeof weakMapMemoize,\r\n typeof weakMapMemoize,\r\n MemoizeFunction,\r\n ArgsMemoizeFunction\r\n >,\r\n 'memoize'\r\n >\r\n >\r\n): CreateSelectorFunction<MemoizeFunction, ArgsMemoizeFunction>\r\n\r\n/**\r\n * Creates a selector creator function with the specified memoization function\r\n * and options for customizing memoization behavior.\r\n *\r\n * @param memoize - The `memoize` function responsible for memoizing the `resultFunc` inside `createSelector` (e.g., `lruMemoize` or `weakMapMemoize`).\r\n * @param memoizeOptionsFromArgs - Optional configuration options for the memoization function. These options are then passed to the memoize function as the second argument onwards.\r\n * @returns A customized `createSelector` function.\r\n *\r\n * @example\r\n * ```ts\r\n * const customCreateSelector = createSelectorCreator(customMemoize, // Function to be used to memoize `resultFunc`\r\n * option1, // Will be passed as second argument to `customMemoize`\r\n * option2, // Will be passed as third argument to `customMemoize`\r\n * option3 // Will be passed as fourth argument to `customMemoize`\r\n * )\r\n *\r\n * const customSelector = customCreateSelector(\r\n * [inputSelector1, inputSelector2],\r\n * resultFunc // `resultFunc` will be passed as the first argument to `customMemoize`\r\n * )\r\n * ```\r\n *\r\n * @template MemoizeFunction - The type of the memoize function that is used to memoize the `resultFunc` inside `createSelector` (e.g., `lruMemoize` or `weakMapMemoize`).\r\n *\r\n * @see {@link https://reselect.js.org/api/createSelectorCreator#using-memoize-and-memoizeoptions `createSelectorCreator`}\r\n *\r\n * @public\r\n */\r\nexport function createSelectorCreator<MemoizeFunction extends UnknownMemoizer>(\r\n memoize: MemoizeFunction,\r\n ...memoizeOptionsFromArgs: DropFirstParameter<MemoizeFunction>\r\n): CreateSelectorFunction<MemoizeFunction>\r\n\r\n/**\r\n * Creates a selector creator function with the specified memoization\r\n * function and options for customizing memoization behavior.\r\n *\r\n * @param memoizeOrOptions - Either A `memoize` function or an `options` object containing the `memoize` function.\r\n * @param memoizeOptionsFromArgs - Optional configuration options for the memoization function. These options are then passed to the memoize function as the second argument onwards.\r\n * @returns A customized `createSelector` function.\r\n *\r\n * @template MemoizeFunction - The type of the memoize function that is used to memoize the `resultFunc` inside `createSelector` (e.g., `lruMemoize` or `weakMapMemoize`).\r\n * @template ArgsMemoizeFunction - The type of the optional memoize function that is used to memoize the arguments passed into the output selector generated by `createSelector` (e.g., `lruMemoize` or `weakMapMemoize`). If none is explicitly provided, `weakMapMemoize` will be used.\r\n * @template MemoizeOrOptions - The type of the first argument. It can either be a `memoize` function or an `options` object containing the `memoize` function.\r\n */\r\nexport function createSelectorCreator<\r\n MemoizeFunction extends UnknownMemoizer,\r\n ArgsMemoizeFunction extends UnknownMemoizer,\r\n MemoizeOrOptions extends\r\n | MemoizeFunction\r\n | SetRequired<\r\n CreateSelectorOptions<MemoizeFunction, ArgsMemoizeFunction>,\r\n 'memoize'\r\n >\r\n>(\r\n memoizeOrOptions: MemoizeOrOptions,\r\n ...memoizeOptionsFromArgs: MemoizeOrOptions extends SetRequired<\r\n CreateSelectorOptions<MemoizeFunction, ArgsMemoizeFunction>,\r\n 'memoize'\r\n >\r\n ? never\r\n : DropFirstParameter<MemoizeFunction>\r\n) {\r\n /** options initially passed into `createSelectorCreator`. */\r\n const createSelectorCreatorOptions: SetRequired<\r\n CreateSelectorOptions<MemoizeFunction, ArgsMemoizeFunction>,\r\n 'memoize'\r\n > = typeof memoizeOrOptions === 'function'\r\n ? {\r\n memoize: memoizeOrOptions as MemoizeFunction,\r\n memoizeOptions: memoizeOptionsFromArgs\r\n }\r\n : memoizeOrOptions\r\n\r\n const createSelector = <\r\n InputSelectors extends SelectorArray,\r\n Result,\r\n OverrideMemoizeFunction extends UnknownMemoizer = MemoizeFunction,\r\n OverrideArgsMemoizeFunction extends UnknownMemoizer = ArgsMemoizeFunction\r\n >(\r\n ...createSelectorArgs: [\r\n ...inputSelectors: [...InputSelectors],\r\n combiner: Combiner<InputSelectors, Result>,\r\n createSelectorOptions?: CreateSelectorOptions<\r\n MemoizeFunction,\r\n ArgsMemoizeFunction,\r\n OverrideMemoizeFunction,\r\n OverrideArgsMemoizeFunction\r\n >\r\n ]\r\n ) => {\r\n let recomputations = 0\r\n let dependencyRecomputations = 0\r\n let lastResult: Result\r\n\r\n // Due to the intricacies of rest params, we can't do an optional arg after `...createSelectorArgs`.\r\n // So, start by declaring the default value here.\r\n // (And yes, the words 'memoize' and 'options' appear too many times in this next sequence.)\r\n let directlyPassedOptions: CreateSelectorOptions<\r\n MemoizeFunction,\r\n ArgsMemoizeFunction,\r\n OverrideMemoizeFunction,\r\n OverrideArgsMemoizeFunction\r\n > = {}\r\n\r\n // Normally, the result func or \"combiner\" is the last arg\r\n let resultFunc = createSelectorArgs.pop() as\r\n | Combiner<InputSelectors, Result>\r\n | CreateSelectorOptions<\r\n MemoizeFunction,\r\n ArgsMemoizeFunction,\r\n OverrideMemoizeFunction,\r\n OverrideArgsMemoizeFunction\r\n >\r\n\r\n // If the result func is actually an _object_, assume it's our options object\r\n if (typeof resultFunc === 'object') {\r\n directlyPassedOptions = resultFunc\r\n // and pop the real result func off\r\n resultFunc = createSelectorArgs.pop() as Combiner<InputSelectors, Result>\r\n }\r\n\r\n assertIsFunction(\r\n resultFunc,\r\n `createSelector expects an output function after the inputs, but received: [${typeof resultFunc}]`\r\n )\r\n\r\n // Determine which set of options we're using. Prefer options passed directly,\r\n // but fall back to options given to `createSelectorCreator`.\r\n const combinedOptions = {\r\n ...createSelectorCreatorOptions,\r\n ...directlyPassedOptions\r\n }\r\n\r\n const {\r\n memoize,\r\n memoizeOptions = [],\r\n argsMemoize = weakMapMemoize,\r\n argsMemoizeOptions = [],\r\n devModeChecks = {}\r\n } = combinedOptions\r\n\r\n // Simplifying assumption: it's unlikely that the first options arg of the provided memoizer\r\n // is an array. In most libs I've looked at, it's an equality function or options object.\r\n // Based on that, if `memoizeOptions` _is_ an array, we assume it's a full\r\n // user-provided array of options. Otherwise, it must be just the _first_ arg, and so\r\n // we wrap it in an array so we can apply it.\r\n const finalMemoizeOptions = ensureIsArray(memoizeOptions)\r\n const finalArgsMemoizeOptions = ensureIsArray(argsMemoizeOptions)\r\n const dependencies = getDependencies(createSelectorArgs) as InputSelectors\r\n\r\n const memoizedResultFunc = memoize(function recomputationWrapper() {\r\n recomputations++\r\n // apply arguments instead of spreading for performance.\r\n // @ts-ignore\r\n return (resultFunc as Combiner<InputSelectors, Result>).apply(\r\n null,\r\n arguments as unknown as Parameters<Combiner<InputSelectors, Result>>\r\n )\r\n }, ...finalMemoizeOptions) as Combiner<InputSelectors, Result> &\r\n ExtractMemoizerFields<OverrideMemoizeFunction>\r\n\r\n let firstRun = true\r\n\r\n // If a selector is called with the exact same arguments we don't need to traverse our dependencies again.\r\n const selector = argsMemoize(function dependenciesChecker() {\r\n dependencyRecomputations++\r\n /** Return values of input selectors which the `resultFunc` takes as arguments. */\r\n const inputSelectorResults = collectInputSelectorResults(\r\n dependencies,\r\n arguments\r\n )\r\n\r\n // apply arguments instead of spreading for performance.\r\n // @ts-ignore\r\n lastResult = memoizedResultFunc.apply(null, inputSelectorResults)\r\n\r\n if (process.env.NODE_ENV !== 'production') {\r\n const { identityFunctionCheck, inputStabilityCheck } =\r\n getDevModeChecksExecutionInfo(firstRun, devModeChecks)\r\n if (identityFunctionCheck.shouldRun) {\r\n identityFunctionCheck.run(\r\n resultFunc as Combiner<InputSelectors, Result>,\r\n inputSelectorResults,\r\n lastResult\r\n )\r\n }\r\n\r\n if (inputStabilityCheck.shouldRun) {\r\n // make a second copy of the params, to check if we got the same results\r\n const inputSelectorResultsCopy = collectInputSelectorResults(\r\n dependencies,\r\n arguments\r\n )\r\n\r\n inputStabilityCheck.run(\r\n { inputSelectorResults, inputSelectorResultsCopy },\r\n { memoize, memoizeOptions: finalMemoizeOptions },\r\n arguments\r\n )\r\n }\r\n\r\n if (firstRun) firstRun = false\r\n }\r\n\r\n return lastResult\r\n }, ...finalArgsMemoizeOptions) as unknown as Selector<\r\n GetStateFromSelectors<InputSelectors>,\r\n Result,\r\n GetParamsFromSelectors<InputSelectors>\r\n > &\r\n ExtractMemoizerFields<OverrideArgsMemoizeFunction>\r\n\r\n return Object.assign(selector, {\r\n resultFunc,\r\n memoizedResultFunc,\r\n dependencies,\r\n dependencyRecomputations: () => dependencyRecomputations,\r\n resetDependencyRecomputations: () => {\r\n dependencyRecomputations = 0\r\n },\r\n lastResult: () => lastResult,\r\n recomputations: () => recomputations,\r\n resetRecomputations: () => {\r\n recomputations = 0\r\n },\r\n memoize,\r\n argsMemoize\r\n }) as OutputSelector<\r\n InputSelectors,\r\n Result,\r\n OverrideMemoizeFunction,\r\n OverrideArgsMemoizeFunction\r\n >\r\n }\r\n\r\n Object.assign(createSelector, {\r\n withTypes: () => createSelector\r\n })\r\n\r\n return createSelector as CreateSelectorFunction<\r\n MemoizeFunction,\r\n ArgsMemoizeFunction\r\n >\r\n}\r\n\r\n/**\r\n * Accepts one or more \"input selectors\" (either as separate arguments or a single array),\r\n * a single \"result function\" / \"combiner\", and an optional options object, and\r\n * generates a memoized selector function.\r\n *\r\n * @see {@link https://reselect.js.org/api/createSelector `createSelector`}\r\n *\r\n * @public\r\n */\r\nexport const createSelector =\r\n /* #__PURE__ */ createSelectorCreator(weakMapMemoize)\r\n","import { createSelector } from './createSelectorCreator'\r\n\r\nimport type { CreateSelectorFunction } from './createSelectorCreator'\r\nimport type {\r\n InterruptRecursion,\r\n ObjectValuesToTuple,\r\n OutputSelector,\r\n Selector,\r\n Simplify,\r\n UnknownMemoizer\r\n} from './types'\r\nimport { assertIsObject } from './utils'\r\nimport type { weakMapMemoize } from './weakMapMemoize'\r\n\r\n/**\r\n * Represents a mapping of selectors to their return types.\r\n *\r\n * @template TObject - An object type where each property is a selector function.\r\n *\r\n * @public\r\n */\r\nexport type SelectorResultsMap<TObject extends SelectorsObject> = {\r\n [Key in keyof TObject]: ReturnType<TObject[Key]>\r\n}\r\n\r\n/**\r\n * Represents a mapping of selectors for each key in a given root state.\r\n *\r\n * This type is a utility that takes a root state object type and\r\n * generates a corresponding set of selectors. Each selector is associated\r\n * with a key in the root state, allowing for the selection\r\n * of specific parts of the state.\r\n *\r\n * @template RootState - The type of the root state object.\r\n *\r\n * @since 5.0.0\r\n * @public\r\n */\r\nexport type RootStateSelectors<RootState = any> = {\r\n [Key in keyof RootState]: Selector<RootState, RootState[Key], []>\r\n}\r\n\r\n/**\r\n * @deprecated Please use {@linkcode StructuredSelectorCreator.withTypes createStructuredSelector.withTypes<RootState>()} instead. This type will be removed in the future.\r\n * @template RootState - The type of the root state object.\r\n *\r\n * @since 5.0.0\r\n * @public\r\n */\r\nexport type TypedStructuredSelectorCreator<RootState = any> =\r\n /**\r\n * A convenience function that simplifies returning an object\r\n * made up of selector results.\r\n *\r\n * @param inputSelectorsObject - A key value pair consisting of input selectors.\r\n * @param selectorCreator - A custom selector creator function. It defaults to `createSelector`.\r\n * @returns A memoized structured selector.\r\n *\r\n * @example\r\n * <caption>Modern Use Case</caption>\r\n * ```ts\r\n * import { createSelector, createStructuredSelector } from 'reselect'\r\n *\r\n * interface RootState {\r\n * todos: {\r\n * id: number\r\n * completed: boolean\r\n * title: string\r\n * description: string\r\n * }[]\r\n * alerts: { id: number; read: boolean }[]\r\n * }\r\n *\r\n * // This:\r\n * const structuredSelector = createStructuredSelector(\r\n * {\r\n * todos: (state: RootState) => state.todos,\r\n * alerts: (state: RootState) => state.alerts,\r\n * todoById: (state: RootState, id: number) => state.todos[id]\r\n * },\r\n * createSelector\r\n * )\r\n *\r\n * // Is essentially the same as this:\r\n * const selector = createSelector(\r\n * [\r\n * (state: RootState) => state.todos,\r\n * (state: RootState) => state.alerts,\r\n * (state: RootState, id: number) => state.todos[id]\r\n * ],\r\n * (todos, alerts, todoById) => {\r\n * return {\r\n * todos,\r\n * alerts,\r\n * todoById\r\n * }\r\n * }\r\n * )\r\n * ```\r\n *\r\n * @example\r\n * <caption>In your component:</caption>\r\n * ```tsx\r\n * import type { RootState } from 'createStructuredSelector/modernUseCase'\r\n * import { structuredSelector } from 'createStructuredSelector/modernUseCase'\r\n * import type { FC } from 'react'\r\n * import { useSelector } from 'react-redux'\r\n *\r\n * interface Props {\r\n * id: number\r\n * }\r\n *\r\n * const MyComponent: FC<Props> = ({ id }) => {\r\n * const { todos, alerts, todoById } = useSelector((state: RootState) =>\r\n * structuredSelector(state, id)\r\n * )\r\n *\r\n * return (\r\n * <div>\r\n * Next to do is:\r\n * <h2>{todoById.title}</h2>\r\n * <p>Description: {todoById.description}</p>\r\n * <ul>\r\n * <h3>All other to dos:</h3>\r\n * {todos.map(todo => (\r\n * <li key={todo.id}>{todo.title}</li>\r\n * ))}\r\n * </ul>\r\n * </div>\r\n * )\r\n * }\r\n * ```\r\n *\r\n * @example\r\n * <caption>Simple Use Case</caption>\r\n * ```ts\r\n * const selectA = state => state.a\r\n * const selectB = state => state.b\r\n *\r\n * // The result function in the following selector\r\n * // is simply building an object from the input selectors\r\n * const structuredSelector = createSelector(selectA, selectB, (a, b) => ({\r\n * a,\r\n * b\r\n * }))\r\n *\r\n * const result = structuredSelector({ a: 1, b: 2 }) // will produce { x: 1, y: 2 }\r\n * ```\r\n *\r\n * @template InputSelectorsObject - The shape of the input selectors object.\r\n * @template MemoizeFunction - The type of the memoize function that is used to create the structured selector. It defaults to `weakMapMemoize`.\r\n * @template ArgsMemoizeFunction - The type of the of the memoize function that is used to memoize the arguments passed into the generated structured selector. It defaults to `weakMapMemoize`.\r\n *\r\n * @see {@link https://reselect.js.org/api/createStructuredSelector `createStructuredSelector`}\r\n */\r\n <\r\n InputSelectorsObject extends RootStateSelectors<RootState> = RootStateSelectors<RootState>,\r\n MemoizeFunction extends UnknownMemoizer = typeof weakMapMemoize,\r\n ArgsMemoizeFunction extends UnknownMemoizer = typeof weakMapMemoize\r\n >(\r\n inputSelectorsObject: InputSelectorsObject,\r\n selectorCreator?: CreateSelectorFunction<\r\n MemoizeFunction,\r\n ArgsMemoizeFunction\r\n >\r\n ) => OutputSelector<\r\n ObjectValuesToTuple<InputSelectorsObject>,\r\n Simplify<SelectorResultsMap<InputSelectorsObject>>,\r\n MemoizeFunction,\r\n ArgsMemoizeFunction\r\n > &\r\n InterruptRecursion\r\n\r\n/**\r\n * Represents an object where each property is a selector function.\r\n *\r\n * @template StateType - The type of state that all the selectors operate on.\r\n *\r\n * @public\r\n */\r\nexport type SelectorsObject<StateType = any> = Record<\r\n string,\r\n Selector<StateType>\r\n>\r\n\r\n/**\r\n * It provides a way to create structured selectors.\r\n * The structured selector can take multiple input selectors\r\n * and map their output to an object with specific keys.\r\n *\r\n * @template StateType - The type of state that the structured selectors created with this structured selector creator will operate on.\r\n *\r\n * @see {@link https://reselect.js.org/api/createStructuredSelector `createStructuredSelector`}\r\n *\r\n * @public\r\n */\r\nexport interface StructuredSelectorCreator<StateType = any> {\r\n /**\r\n * A convenience function that simplifies returning an object\r\n * made up of selector results.\r\n *\r\n * @param inputSelectorsObject - A key value pair consisting of input selectors.\r\n * @param selectorCreator - A custom selector creator function. It defaults to `createSelector`.\r\n * @returns A memoized structured selector.\r\n *\r\n * @example\r\n * <caption>Modern Use Case</caption>\r\n * ```ts\r\n * import { createSelector, createStructuredSelector } from 'reselect'\r\n *\r\n * interface RootState {\r\n * todos: {\r\n * id: number\r\n * completed: boolean\r\n * title: string\r\n * description: string\r\n * }[]\r\n * alerts: { id: number; read: boolean }[]\r\n * }\r\n *\r\n * // This:\r\n * const structuredSelector = createStructuredSelector(\r\n * {\r\n * todos: (state: RootState) => state.todos,\r\n * alerts: (state: RootState) => state.alerts,\r\n * todoById: (state: RootState, id: number) => state.todos[id]\r\n * },\r\n * createSelector\r\n * )\r\n *\r\n * // Is essentially the same as this:\r\n * const selector = createSelector(\r\n * [\r\n * (state: RootState) => state.todos,\r\n * (state: RootState) => state.alerts,\r\n * (state: RootState, id: number) => state.todos[id]\r\n * ],\r\n * (todos, alerts, todoById) => {\r\n * return {\r\n * todos,\r\n * alerts,\r\n * todoById\r\n * }\r\n * }\r\n * )\r\n * ```\r\n *\r\n * @example\r\n * <caption>In your component:</caption>\r\n * ```tsx\r\n * import type { RootState } from 'createStructuredSelector/modernUseCase'\r\n * import { structuredSelector } from 'createStructuredSelector/modernUseCase'\r\n * import type { FC } from 'react'\r\n * import { useSelector } from 'react-redux'\r\n *\r\n * interface Props {\r\n * id: number\r\n * }\r\n *\r\n * const MyComponent: FC<Props> = ({ id }) => {\r\n * const { todos, alerts, todoById } = useSelector((state: RootState) =>\r\n * structuredSelector(state, id)\r\n * )\r\n *\r\n * return (\r\n * <div>\r\n * Next to do is:\r\n * <h2>{todoById.title}</h2>\r\n * <p>Description: {todoById.description}</p>\r\n * <ul>\r\n * <h3>All other to dos:</h3>\r\n * {todos.map(todo => (\r\n * <li key={todo.id}>{todo.title}</li>\r\n * ))}\r\n * </ul>\r\n * </div>\r\n * )\r\n * }\r\n * ```\r\n *\r\n * @example\r\n * <caption>Simple Use Case</caption>\r\n * ```ts\r\n * const selectA = state => state.a\r\n * const selectB = state => state.b\r\n *\r\n * // The result function in the following selector\r\n * // is simply building an object from the input selectors\r\n * const structuredSelector = createSelector(selectA, selectB, (a, b) => ({\r\n * a,\r\n * b\r\n * }))\r\n *\r\n * const result = structuredSelector({ a: 1, b: 2 }) // will produce { x: 1, y: 2 }\r\n * ```\r\n *\r\n * @template InputSelectorsObject - The shape of the input selectors object.\r\n * @template MemoizeFunction - The type of the memoize function that is used to create the structured selector. It defaults to `weakMapMemoize`.\r\n * @template ArgsMemoizeFunction - The type of the of the memoize function that is used to memoize the arguments passed into the generated structured selector. It defaults to `weakMapMemoize`.\r\n *\r\n * @see {@link https://reselect.js.org/api/createStructuredSelector `createStructuredSelector`}\r\n */\r\n <\r\n InputSelectorsObject extends SelectorsObject<StateType>,\r\n MemoizeFunction extends UnknownMemoizer = typeof weakMapMemoize,\r\n ArgsMemoizeFunction extends UnknownMemoizer = typeof weakMapMemoize\r\n >(\r\n inputSelectorsObject: InputSelectorsObject,\r\n selectorCreator?: CreateSelectorFunction<\r\n MemoizeFunction,\r\n ArgsMemoizeFunction\r\n >\r\n ): OutputSelector<\r\n ObjectValuesToTuple<InputSelectorsObject>,\r\n Simplify<SelectorResultsMap<InputSelectorsObject>>,\r\n MemoizeFunction,\r\n ArgsMemoizeFunction\r\n > &\r\n InterruptRecursion\r\n\r\n /**\r\n * Creates a \"pre-typed\" version of\r\n * {@linkcode createStructuredSelector createStructuredSelector}\r\n * where the `state` type is predefined.\r\n *\r\n * This allows you to set the `state` type once, eliminating the need to\r\n * specify it with every\r\n * {@linkcode createStructuredSelector createStructuredSelector} call.\r\n *\r\n * @returns A pre-typed `createStructuredSelector` with the state type already defined.\r\n *\r\n * @example\r\n * ```ts\r\n * import { createStructuredSelector } from 'reselect'\r\n *\r\n * export interface RootState {\r\n * todos: { id: number; completed: boolean }[]\r\n * alerts: { id: number; read: boolean }[]\r\n * }\r\n *\r\n * export const createStructuredAppSelector =\r\n * createStructuredSelector.withTypes<RootState>()\r\n *\r\n * const structuredAppSelector = createStructuredAppSelector({\r\n * // Type of `state` is set to `RootState`, no need to manually set the type\r\n * todos: state => state.todos,\r\n * alerts: state => state.alerts,\r\n * todoById: (state, id: number) => state.todos[id]\r\n * })\r\n *\r\n * ```\r\n * @template OverrideStateType - The specific type of state used by all structured selectors created with this structured selector creator.\r\n *\r\n * @see {@link https://reselect.js.org/api/createstructuredselector#defining-a-pre-typed-createstructuredselector `createSelector.withTypes`}\r\n *\r\n * @since 5.1.0\r\n */\r\n withTypes: <\r\n OverrideStateType extends StateType\r\n >() => StructuredSelectorCreator<OverrideStateType>\r\n}\r\n\r\n/**\r\n * A convenience function that simplifies returning an object\r\n * made up of selector results.\r\n *\r\n * @param inputSelectorsObject - A key value pair consisting of input selectors.\r\n * @param selectorCreator - A custom selector creator function. It defaults to `createSelector`.\r\n * @returns A memoized structured selector.\r\n *\r\n * @example\r\n * <caption>Modern Use Case</caption>\r\n * ```ts\r\n * import { createSelector, createStructuredSelector } from 'reselect'\r\n *\r\n * interface RootState {\r\n * todos: {\r\n * id: number\r\n * completed: boolean\r\n * title: string\r\n * description: string\r\n * }[]\r\n * alerts: { id: number; read: boolean }[]\r\n * }\r\n *\r\n * // This:\r\n * const structuredSelector = createStructuredSelector(\r\n * {\r\n * todos: (state: RootState) => state.todos,\r\n * alerts: (state: RootState) => state.alerts,\r\n * todoById: (state: RootState, id: number) => state.todos[id]\r\n * },\r\n * createSelector\r\n * )\r\n *\r\n * // Is essentially the same as this:\r\n * const selector = createSelector(\r\n * [\r\n * (state: RootState) => state.todos,\r\n * (state: RootState) => state.alerts,\r\n * (state: RootState, id: number) => state.todos[id]\r\n * ],\r\n * (todos, alerts, todoById) => {\r\n * return {\r\n * todos,\r\n * alerts,\r\n * todoById\r\n * }\r\n * }\r\n * )\r\n * ```\r\n *\r\n * @see {@link https://reselect.js.org/api/createStructuredSelector `createStructuredSelector`}\r\n *\r\n * @public\r\n */\r\nexport const createStructuredSelector: StructuredSelectorCreator =\r\n Object.assign(\r\n <\r\n InputSelectorsObject extends SelectorsObject,\r\n MemoizeFunction extends UnknownMemoizer = typeof weakMapMemoize,\r\n ArgsMemoizeFunction extends UnknownMemoizer = typeof weakMapMemoize\r\n >(\r\n inputSelectorsObject: InputSelectorsObject,\r\n selectorCreator: CreateSelectorFunction<\r\n MemoizeFunction,\r\n ArgsMemoizeFunction\r\n > = createSelector as CreateSelectorFunction<\r\n MemoizeFunction,\r\n ArgsMemoizeFunction\r\n >\r\n ) => {\r\n assertIsObject(\r\n inputSelectorsObject,\r\n 'createStructuredSelector expects first argument to be an object ' +\r\n `where each property is a selector, instead received a ${typeof inputSelectorsObject}`\r\n )\r\n const inputSelectorKeys = Object.keys(inputSelectorsObject)\r\n const dependencies = inputSelectorKeys.map(\r\n key => inputSelectorsObject[key]\r\n )\r\n const structuredSelector = selectorCreator(\r\n dependencies,\r\n (...inputSelectorResults: any[]) => {\r\n return inputSelectorResults.reduce((composition, value, index) => {\r\n composition[inputSelectorKeys[index]] = value\r\n return composition\r\n }, {})\r\n }\r\n )\r\n return structuredSelector\r\n },\r\n { withTypes: () => createStructuredSelector }\r\n ) as StructuredSelectorCreator\r\n","import { IStyle } from './IStyle';\n\nexport const InjectionMode = {\n /**\n * Avoids style injection, use getRules() to read the styles.\n */\n none: 0 as 0,\n\n /**\n * Inserts rules using the insertRule api.\n */\n insertNode: 1 as 1,\n\n /**\n * Appends rules using appendChild.\n */\n appendChild: 2 as 2,\n};\n\nexport type InjectionMode = typeof InjectionMode[keyof typeof InjectionMode];\n\n/**\n * CSP settings for the stylesheet\n */\nexport interface ICSPSettings {\n /**\n * Nonce to inject into script tag\n */\n nonce?: string;\n}\n\n/**\n * Stylesheet config.\n *\n * @public\n */\nexport interface IStyleSheetConfig {\n /**\n * Injection mode for how rules are inserted.\n */\n injectionMode?: InjectionMode;\n\n /**\n * Default 'displayName' to use for a className.\n * @defaultvalue 'css'\n */\n defaultPrefix?: string;\n\n /**\n * Defines the default direction of rules for auto-rtlifying things.\n * While typically this is represented as a DIR attribute in the markup,\n * the DIR is not enough to control whether padding goes on the left or\n * right. Use this to set the default direction when rules are registered.\n */\n rtl?: boolean;\n\n /**\n * Default 'namespace' to attach before the className.\n */\n namespace?: string;\n\n /**\n * CSP settings\n */\n cspSettings?: ICSPSettings;\n\n /**\n * Callback executed when a rule is inserted.\n */\n onInsertRule?: (rule: string) => void;\n\n /**\n * Initial value for classnames cache. Key is serialized css rules associated with a classname.\n */\n classNameCache?: { [key: string]: string };\n}\n\nconst STYLESHEET_SETTING = '__stylesheet__';\n/**\n * MSIE 11 doesn't cascade styles based on DOM ordering, but rather on the order that each style node\n * is created. As such, to maintain consistent priority, IE11 should reuse a single style node.\n */\nconst REUSE_STYLE_NODE = typeof navigator !== 'undefined' && /rv:11.0/.test(navigator.userAgent);\n\nlet _global: { [key: string]: any } = {};\n\n// Grab window.\ntry {\n _global = window;\n} catch {\n /* leave as blank object */\n}\n\nlet _stylesheet: Stylesheet;\n\n/**\n * Represents the state of styles registered in the page. Abstracts\n * the surface for adding styles to the stylesheet, exposes helpers\n * for reading the styles registered in server rendered scenarios.\n *\n * @public\n */\nexport class Stylesheet {\n private _lastStyleElement?: HTMLStyleElement;\n private _styleElement?: HTMLStyleElement;\n private _rules: string[] = [];\n private _preservedRules: string[] = [];\n private _config: IStyleSheetConfig;\n private _rulesToInsert: string[] = [];\n private _counter = 0;\n private _keyToClassName: { [key: string]: string } = {};\n private _onResetCallbacks: (() => void)[] = [];\n\n private _classNameToArgs: { [key: string]: { args: any; rules: string[] } } = {};\n\n /**\n * Gets the singleton instance.\n */\n public static getInstance(): Stylesheet {\n _stylesheet = _global[STYLESHEET_SETTING] as Stylesheet;\n\n if (!_stylesheet || (_stylesheet._lastStyleElement && _stylesheet._lastStyleElement.ownerDocument !== document)) {\n const fabricConfig = _global?.FabricConfig || {};\n\n _stylesheet = _global[STYLESHEET_SETTING] = new Stylesheet(fabricConfig.mergeStyles);\n }\n\n return _stylesheet;\n }\n\n constructor(config?: IStyleSheetConfig) {\n this._config = {\n injectionMode: InjectionMode.insertNode,\n defaultPrefix: 'css',\n namespace: undefined,\n cspSettings: undefined,\n ...config,\n };\n\n this._keyToClassName = this._config.classNameCache || {};\n }\n\n /**\n * Configures the stylesheet.\n */\n public setConfig(config?: IStyleSheetConfig): void {\n this._config = {\n ...this._config,\n ...config,\n };\n }\n\n /**\n * Configures a reset callback.\n *\n * @param callback - A callback which will be called when the Stylesheet is reset.\n */\n public onReset(callback: () => void): void {\n this._onResetCallbacks.push(callback);\n }\n\n /**\n * Generates a unique classname.\n *\n * @param displayName - Optional value to use as a prefix.\n */\n public getClassName(displayName?: string): string {\n const { namespace } = this._config;\n const prefix = displayName || this._config.defaultPrefix;\n\n return `${namespace ? namespace + '-' : ''}${prefix}-${this._counter++}`;\n }\n\n /**\n * Used internally to cache information about a class which was\n * registered with the stylesheet.\n */\n public cacheClassName(className: string, key: string, args: IStyle[], rules: string[]): void {\n this._keyToClassName[key] = className;\n this._classNameToArgs[className] = {\n args,\n rules,\n };\n }\n\n /**\n * Gets the appropriate classname given a key which was previously\n * registered using cacheClassName.\n */\n public classNameFromKey(key: string): string | undefined {\n return this._keyToClassName[key];\n }\n\n /**\n * Gets all classnames cache with the stylesheet.\n */\n public getClassNameCache(): { [key: string]: string } {\n return this._keyToClassName;\n }\n\n /**\n * Gets the arguments associated with a given classname which was\n * previously registered using cacheClassName.\n */\n public argsFromClassName(className: string): IStyle[] | undefined {\n const entry = this._classNameToArgs[className];\n\n return entry && entry.args;\n }\n\n /**\n * Gets the arguments associated with a given classname which was\n * previously registered using cacheClassName.\n */\n public insertedRulesFromClassName(className: string): string[] | undefined {\n const entry = this._classNameToArgs[className];\n\n return entry && entry.rules;\n }\n\n /**\n * Inserts a css rule into the stylesheet.\n * @param preserve - Preserves the rule beyond a reset boundary.\n */\n public insertRule(rule: string, preserve?: boolean): void {\n const { injectionMode } = this._config;\n const element = injectionMode !== InjectionMode.none ? this._getStyleElement() : undefined;\n\n if (preserve) {\n this._preservedRules.push(rule);\n }\n\n if (element) {\n switch (this._config.injectionMode) {\n case InjectionMode.insertNode:\n const { sheet } = element!;\n\n try {\n (sheet as CSSStyleSheet).insertRule(rule, (sheet as CSSStyleSheet).cssRules.length);\n } catch (e) {\n // The browser will throw exceptions on unsupported rules (such as a moz prefix in webkit.)\n // We need to swallow the exceptions for this scenario, otherwise we'd need to filter\n // which could be slower and bulkier.\n }\n break;\n\n case InjectionMode.appendChild:\n element.appendChild(document.createTextNode(rule));\n break;\n }\n } else {\n this._rules.push(rule);\n }\n\n if (this._config.onInsertRule) {\n this._config.onInsertRule(rule);\n }\n }\n\n /**\n * Gets all rules registered with the stylesheet; only valid when\n * using InsertionMode.none.\n */\n public getRules(includePreservedRules?: boolean): string {\n return (\n (includePreservedRules ? this._preservedRules.join('') : '') + this._rules.join('') + this._rulesToInsert.join('')\n );\n }\n\n /**\n * Resets the internal state of the stylesheet. Only used in server\n * rendered scenarios where we're using InsertionMode.none.\n */\n public reset(): void {\n this._rules = [];\n this._rulesToInsert = [];\n this._counter = 0;\n this._classNameToArgs = {};\n this._keyToClassName = {};\n\n this._onResetCallbacks.forEach((callback: () => void) => callback());\n }\n\n // Forces the regeneration of incoming styles without totally resetting the stylesheet.\n public resetKeys(): void {\n this._keyToClassName = {};\n }\n\n private _getStyleElement(): HTMLStyleElement | undefined {\n if (!this._styleElement && typeof document !== 'undefined') {\n this._styleElement = this._createStyleElement();\n\n if (!REUSE_STYLE_NODE) {\n // Reset the style element on the next frame.\n window.requestAnimationFrame(() => {\n this._styleElement = undefined;\n });\n }\n }\n return this._styleElement;\n }\n\n private _createStyleElement(): HTMLStyleElement {\n const head: HTMLHeadElement = document.head;\n const styleElement = document.createElement('style');\n let nodeToInsertBefore: Node | null = null;\n\n styleElement.setAttribute('data-merge-styles', 'true');\n\n const { cspSettings } = this._config;\n if (cspSettings) {\n if (cspSettings.nonce) {\n styleElement.setAttribute('nonce', cspSettings.nonce);\n }\n }\n if (this._lastStyleElement) {\n // If the `nextElementSibling` is null, then the insertBefore will act as a regular append.\n // https://developer.mozilla.org/en-US/docs/Web/API/Node/insertBefore#Syntax\n nodeToInsertBefore = this._lastStyleElement.nextElementSibling;\n } else {\n const placeholderStyleTag: Element | null = this._findPlaceholderStyleTag();\n\n if (placeholderStyleTag) {\n nodeToInsertBefore = placeholderStyleTag.nextElementSibling;\n } else {\n nodeToInsertBefore = head.childNodes[0];\n }\n }\n\n head!.insertBefore(styleElement, head!.contains(nodeToInsertBefore) ? nodeToInsertBefore : null);\n this._lastStyleElement = styleElement;\n\n return styleElement;\n }\n\n private _findPlaceholderStyleTag(): Element | null {\n const head: HTMLHeadElement = document.head;\n if (head) {\n return head.querySelector('style[data-merge-styles]');\n }\n return null;\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n 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 function __createBinding(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, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = 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\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","import { Stylesheet } from '@uifabric/merge-styles';\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\ndeclare class WeakMap {\n public get(key: any): any;\n public set(key: any, value: any): void;\n public has(key: any): boolean;\n}\n\nlet _initializedStylesheetResets = false;\nlet _resetCounter = 0;\nconst _emptyObject = { empty: true };\nconst _dictionary: any = {};\nlet _weakMap = typeof WeakMap === 'undefined' ? null : WeakMap;\n\ninterface IMemoizeNode {\n map: WeakMap | null;\n value?: any;\n}\n\n/**\n * Test utility for providing a custom weakmap.\n *\n * @internal\n * */\nexport function setMemoizeWeakMap(weakMap: any): void {\n _weakMap = weakMap;\n}\n\n/**\n * Reset memoizations.\n */\nexport function resetMemoizations(): void {\n _resetCounter++;\n}\n\n/**\n * Memoize decorator to be used on class methods. WARNING: the `this` reference\n * will be inaccessible within a memoized method, given that a cached method's `this`\n * would not be instance-specific.\n *\n * @public\n */\nexport function memoize<T extends Function>(\n target: any,\n key: string,\n descriptor: TypedPropertyDescriptor<T>,\n): {\n configurable: boolean;\n get(): T;\n} {\n // We bind to \"null\" to prevent people from inadvertently pulling values from \"this\",\n // rather than passing them in as input values which can be memoized.\n let fn = memoizeFunction(descriptor.value && descriptor.value.bind(null));\n\n return {\n configurable: true,\n get(): T {\n return fn;\n },\n };\n}\n\n/**\n * Memoizes a function; when you pass in the same parameters multiple times, it returns a cached result.\n * Be careful when passing in objects, you need to pass in the same INSTANCE for caching to work. Otherwise\n * it will grow the cache unnecessarily. Also avoid using default values that evaluate functions; passing in\n * undefined for a value and relying on a default function will execute it the first time, but will not\n * re-evaluate subsequent times which may have been unexpected.\n *\n * By default, the cache will reset after 100 permutations, to avoid abuse cases where the function is\n * unintendedly called with unique objects. Without a reset, the cache could grow infinitely, so we safeguard\n * by resetting. To override this behavior, pass a value of 0 to the maxCacheSize parameter.\n *\n * @public\n * @param cb - The function to memoize.\n * @param maxCacheSize - Max results to cache. If the cache exceeds this value, it will reset on the next call.\n * @param ignoreNullOrUndefinedResult - Flag to decide whether to cache callback result if it is undefined/null.\n * If the flag is set to true, the callback result is recomputed every time till the callback result is\n * not undefined/null for the first time, and then the non-undefined/null version gets cached.\n * @returns A memoized version of the function.\n */\nexport function memoizeFunction<T extends (...args: any[]) => RetType, RetType>(\n cb: T,\n maxCacheSize: number = 100,\n ignoreNullOrUndefinedResult: boolean = false,\n): T {\n // Avoid breaking scenarios which don't have weak map.\n if (!_weakMap) {\n return cb;\n }\n\n if (!_initializedStylesheetResets) {\n const stylesheet = Stylesheet.getInstance();\n\n if (stylesheet && stylesheet.onReset) {\n Stylesheet.getInstance().onReset(resetMemoizations);\n }\n _initializedStylesheetResets = true;\n }\n\n let rootNode: any;\n let cacheSize = 0;\n let localResetCounter = _resetCounter;\n\n return function memoizedFunction(...args: any[]): RetType {\n let currentNode: any = rootNode;\n\n if (\n rootNode === undefined ||\n localResetCounter !== _resetCounter ||\n (maxCacheSize > 0 && cacheSize > maxCacheSize)\n ) {\n rootNode = _createNode();\n cacheSize = 0;\n localResetCounter = _resetCounter;\n }\n\n currentNode = rootNode;\n\n // Traverse the tree until we find the match.\n for (let i = 0; i < args.length; i++) {\n let arg = _normalizeArg(args[i]);\n\n if (!currentNode.map.has(arg)) {\n currentNode.map.set(arg, _createNode());\n }\n\n currentNode = currentNode.map.get(arg);\n }\n\n if (!currentNode.hasOwnProperty('value')) {\n currentNode.value = cb(...args);\n cacheSize++;\n }\n\n if (ignoreNullOrUndefinedResult && (currentNode.value === null || currentNode.value === undefined)) {\n currentNode.value = cb(...args);\n }\n\n return currentNode.value;\n } as any;\n}\n\n/**\n * Creates a memoizer for a single-value function, backed by a WeakMap.\n * With a WeakMap, the memoized values are only kept as long as the source objects,\n * ensuring that there is no memory leak.\n *\n * This function assumes that the input values passed to the wrapped function will be\n * `function` or `object` types. To memoize functions which accept other inputs, use\n * `memoizeFunction`, which memoizes against arbitrary inputs using a lookup cache.\n *\n * @public\n */\nexport function createMemoizer<F extends (input: any) => any>(getValue: F): F {\n if (!_weakMap) {\n // Without a `WeakMap` implementation, memoization is not possible.\n return getValue;\n }\n\n const cache = new _weakMap();\n\n function memoizedGetValue(input: any): any {\n if (!input || (typeof input !== 'function' && typeof input !== 'object')) {\n // A WeakMap can only be used to test against reference values, i.e. 'function' and 'object'.\n // All other inputs cannot be memoized against in this manner.\n return getValue(input);\n }\n\n if (cache.has(input)) {\n return cache.get(input)!;\n }\n\n const value = getValue(input);\n\n cache.set(input, value);\n\n return value;\n }\n\n return memoizedGetValue as F;\n}\n\nfunction _normalizeArg(val: null | undefined): { empty: boolean } | any;\nfunction _normalizeArg(val: object): any;\nfunction _normalizeArg(val: any): any {\n if (!val) {\n return _emptyObject;\n } else if (typeof val === 'object' || typeof val === 'function') {\n return val;\n } else if (!_dictionary[val]) {\n _dictionary[val] = { val };\n }\n\n return _dictionary[val];\n}\n\nfunction _createNode(): IMemoizeNode {\n return {\n map: _weakMap ? new _weakMap() : null,\n };\n}\n","function isAbsolute(pathname) {\n return pathname.charAt(0) === '/';\n}\n\n// About 1.5x faster than the two-arg version of Array#splice()\nfunction spliceOne(list, index) {\n for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1) {\n list[i] = list[k];\n }\n\n list.pop();\n}\n\n// This implementation is based heavily on node's url.parse\nfunction resolvePathname(to, from) {\n if (from === undefined) from = '';\n\n var toParts = (to && to.split('/')) || [];\n var fromParts = (from && from.split('/')) || [];\n\n var isToAbs = to && isAbsolute(to);\n var isFromAbs = from && isAbsolute(from);\n var mustEndAbs = isToAbs || isFromAbs;\n\n if (to && isAbsolute(to)) {\n // to is absolute\n fromParts = toParts;\n } else if (toParts.length) {\n // to is relative, drop the filename\n fromParts.pop();\n fromParts = fromParts.concat(toParts);\n }\n\n if (!fromParts.length) return '/';\n\n var hasTrailingSlash;\n if (fromParts.length) {\n var last = fromParts[fromParts.length - 1];\n hasTrailingSlash = last === '.' || last === '..' || last === '';\n } else {\n hasTrailingSlash = false;\n }\n\n var up = 0;\n for (var i = fromParts.length; i >= 0; i--) {\n var part = fromParts[i];\n\n if (part === '.') {\n spliceOne(fromParts, i);\n } else if (part === '..') {\n spliceOne(fromParts, i);\n up++;\n } else if (up) {\n spliceOne(fromParts, i);\n up--;\n }\n }\n\n if (!mustEndAbs) for (; up--; up) fromParts.unshift('..');\n\n if (\n mustEndAbs &&\n fromParts[0] !== '' &&\n (!fromParts[0] || !isAbsolute(fromParts[0]))\n )\n fromParts.unshift('');\n\n var result = fromParts.join('/');\n\n if (hasTrailingSlash && result.substr(-1) !== '/') result += '/';\n\n return result;\n}\n\nexport default resolvePathname;\n","function valueOf(obj) {\n return obj.valueOf ? obj.valueOf() : Object.prototype.valueOf.call(obj);\n}\n\nfunction valueEqual(a, b) {\n // Test for strict equality first.\n if (a === b) return true;\n\n // Otherwise, if either of them == null they are not equal.\n if (a == null || b == null) return false;\n\n if (Array.isArray(a)) {\n return (\n Array.isArray(b) &&\n a.length === b.length &&\n a.every(function(item, index) {\n return valueEqual(item, b[index]);\n })\n );\n }\n\n if (typeof a === 'object' || typeof b === 'object') {\n var aValue = valueOf(a);\n var bValue = valueOf(b);\n\n if (aValue !== a || bValue !== b) return valueEqual(aValue, bValue);\n\n return Object.keys(Object.assign({}, a, b)).every(function(key) {\n return valueEqual(a[key], b[key]);\n });\n }\n\n return false;\n}\n\nexport default valueEqual;\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport resolvePathname from 'resolve-pathname';\nimport valueEqual from 'value-equal';\nimport warning from 'tiny-warning';\nimport invariant from 'tiny-invariant';\n\nfunction addLeadingSlash(path) {\n return path.charAt(0) === '/' ? path : '/' + path;\n}\nfunction stripLeadingSlash(path) {\n return path.charAt(0) === '/' ? path.substr(1) : path;\n}\nfunction hasBasename(path, prefix) {\n return path.toLowerCase().indexOf(prefix.toLowerCase()) === 0 && '/?#'.indexOf(path.charAt(prefix.length)) !== -1;\n}\nfunction stripBasename(path, prefix) {\n return hasBasename(path, prefix) ? path.substr(prefix.length) : path;\n}\nfunction stripTrailingSlash(path) {\n return path.charAt(path.length - 1) === '/' ? path.slice(0, -1) : path;\n}\nfunction parsePath(path) {\n var pathname = path || '/';\n var search = '';\n var hash = '';\n var hashIndex = pathname.indexOf('#');\n\n if (hashIndex !== -1) {\n hash = pathname.substr(hashIndex);\n pathname = pathname.substr(0, hashIndex);\n }\n\n var searchIndex = pathname.indexOf('?');\n\n if (searchIndex !== -1) {\n search = pathname.substr(searchIndex);\n pathname = pathname.substr(0, searchIndex);\n }\n\n return {\n pathname: pathname,\n search: search === '?' ? '' : search,\n hash: hash === '#' ? '' : hash\n };\n}\nfunction createPath(location) {\n var pathname = location.pathname,\n search = location.search,\n hash = location.hash;\n var path = pathname || '/';\n if (search && search !== '?') path += search.charAt(0) === '?' ? search : \"?\" + search;\n if (hash && hash !== '#') path += hash.charAt(0) === '#' ? hash : \"#\" + hash;\n return path;\n}\n\nfunction createLocation(path, state, key, currentLocation) {\n var location;\n\n if (typeof path === 'string') {\n // Two-arg form: push(path, state)\n location = parsePath(path);\n location.state = state;\n } else {\n // One-arg form: push(location)\n location = _extends({}, path);\n if (location.pathname === undefined) location.pathname = '';\n\n if (location.search) {\n if (location.search.charAt(0) !== '?') location.search = '?' + location.search;\n } else {\n location.search = '';\n }\n\n if (location.hash) {\n if (location.hash.charAt(0) !== '#') location.hash = '#' + location.hash;\n } else {\n location.hash = '';\n }\n\n if (state !== undefined && location.state === undefined) location.state = state;\n }\n\n try {\n location.pathname = decodeURI(location.pathname);\n } catch (e) {\n if (e instanceof URIError) {\n throw new URIError('Pathname \"' + location.pathname + '\" could not be decoded. ' + 'This is likely caused by an invalid percent-encoding.');\n } else {\n throw e;\n }\n }\n\n if (key) location.key = key;\n\n if (currentLocation) {\n // Resolve incomplete/relative pathname relative to current location.\n if (!location.pathname) {\n location.pathname = currentLocation.pathname;\n } else if (location.pathname.charAt(0) !== '/') {\n location.pathname = resolvePathname(location.pathname, currentLocation.pathname);\n }\n } else {\n // When there is no prior location and pathname is empty, set it to /\n if (!location.pathname) {\n location.pathname = '/';\n }\n }\n\n return location;\n}\nfunction locationsAreEqual(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash && a.key === b.key && valueEqual(a.state, b.state);\n}\n\nfunction createTransitionManager() {\n var prompt = null;\n\n function setPrompt(nextPrompt) {\n process.env.NODE_ENV !== \"production\" ? warning(prompt == null, 'A history supports only one prompt at a time') : void 0;\n prompt = nextPrompt;\n return function () {\n if (prompt === nextPrompt) prompt = null;\n };\n }\n\n function confirmTransitionTo(location, action, getUserConfirmation, callback) {\n // TODO: If another transition starts while we're still confirming\n // the previous one, we may end up in a weird state. Figure out the\n // best way to handle this.\n if (prompt != null) {\n var result = typeof prompt === 'function' ? prompt(location, action) : prompt;\n\n if (typeof result === 'string') {\n if (typeof getUserConfirmation === 'function') {\n getUserConfirmation(result, callback);\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'A history needs a getUserConfirmation function in order to use a prompt message') : void 0;\n callback(true);\n }\n } else {\n // Return false from a transition hook to cancel the transition.\n callback(result !== false);\n }\n } else {\n callback(true);\n }\n }\n\n var listeners = [];\n\n function appendListener(fn) {\n var isActive = true;\n\n function listener() {\n if (isActive) fn.apply(void 0, arguments);\n }\n\n listeners.push(listener);\n return function () {\n isActive = false;\n listeners = listeners.filter(function (item) {\n return item !== listener;\n });\n };\n }\n\n function notifyListeners() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n listeners.forEach(function (listener) {\n return listener.apply(void 0, args);\n });\n }\n\n return {\n setPrompt: setPrompt,\n confirmTransitionTo: confirmTransitionTo,\n appendListener: appendListener,\n notifyListeners: notifyListeners\n };\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nfunction getConfirmation(message, callback) {\n callback(window.confirm(message)); // eslint-disable-line no-alert\n}\n/**\n * Returns true if the HTML5 history API is supported. Taken from Modernizr.\n *\n * https://github.com/Modernizr/Modernizr/blob/master/LICENSE\n * https://github.com/Modernizr/Modernizr/blob/master/feature-detects/history.js\n * changed to avoid false negatives for Windows Phones: https://github.com/reactjs/react-router/issues/586\n */\n\nfunction supportsHistory() {\n var ua = window.navigator.userAgent;\n if ((ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) && ua.indexOf('Mobile Safari') !== -1 && ua.indexOf('Chrome') === -1 && ua.indexOf('Windows Phone') === -1) return false;\n return window.history && 'pushState' in window.history;\n}\n/**\n * Returns true if browser fires popstate on hash change.\n * IE10 and IE11 do not.\n */\n\nfunction supportsPopStateOnHashChange() {\n return window.navigator.userAgent.indexOf('Trident') === -1;\n}\n/**\n * Returns false if using go(n) with hash history causes a full page reload.\n */\n\nfunction supportsGoWithoutReloadUsingHash() {\n return window.navigator.userAgent.indexOf('Firefox') === -1;\n}\n/**\n * Returns true if a given popstate event is an extraneous WebKit event.\n * Accounts for the fact that Chrome on iOS fires real popstate events\n * containing undefined state when pressing the back button.\n */\n\nfunction isExtraneousPopstateEvent(event) {\n return event.state === undefined && navigator.userAgent.indexOf('CriOS') === -1;\n}\n\nvar PopStateEvent = 'popstate';\nvar HashChangeEvent = 'hashchange';\n\nfunction getHistoryState() {\n try {\n return window.history.state || {};\n } catch (e) {\n // IE 11 sometimes throws when accessing window.history.state\n // See https://github.com/ReactTraining/history/pull/289\n return {};\n }\n}\n/**\n * Creates a history object that uses the HTML5 history API including\n * pushState, replaceState, and the popstate event.\n */\n\n\nfunction createBrowserHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Browser history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canUseHistory = supportsHistory();\n var needsHashChangeListener = !supportsPopStateOnHashChange();\n var _props = props,\n _props$forceRefresh = _props.forceRefresh,\n forceRefresh = _props$forceRefresh === void 0 ? false : _props$forceRefresh,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n\n function getDOMLocation(historyState) {\n var _ref = historyState || {},\n key = _ref.key,\n state = _ref.state;\n\n var _window$location = window.location,\n pathname = _window$location.pathname,\n search = _window$location.search,\n hash = _window$location.hash;\n var path = pathname + search + hash;\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path, state, key);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function handlePopState(event) {\n // Ignore extraneous popstate events in WebKit.\n if (isExtraneousPopstateEvent(event)) return;\n handlePop(getDOMLocation(event.state));\n }\n\n function handleHashChange() {\n handlePop(getDOMLocation(getHistoryState()));\n }\n\n var forceNextPop = false;\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of keys we've seen in sessionStorage.\n // Instead, we just default to 0 for keys we don't know.\n\n var toIndex = allKeys.indexOf(toLocation.key);\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allKeys.indexOf(fromLocation.key);\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n }\n\n var initialLocation = getDOMLocation(getHistoryState());\n var allKeys = [initialLocation.key]; // Public interface\n\n function createHref(location) {\n return basename + createPath(location);\n }\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.pushState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.href = href;\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n var nextKeys = allKeys.slice(0, prevIndex + 1);\n nextKeys.push(location.key);\n allKeys = nextKeys;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot push state in browsers that do not support HTML5 history') : void 0;\n window.location.href = href;\n }\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.replaceState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.replace(href);\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n if (prevIndex !== -1) allKeys[prevIndex] = location.key;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot replace state in browsers that do not support HTML5 history') : void 0;\n window.location.replace(href);\n }\n });\n }\n\n function go(n) {\n globalHistory.go(n);\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.addEventListener(HashChangeEvent, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.removeEventListener(HashChangeEvent, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\n\nvar HashChangeEvent$1 = 'hashchange';\nvar HashPathCoders = {\n hashbang: {\n encodePath: function encodePath(path) {\n return path.charAt(0) === '!' ? path : '!/' + stripLeadingSlash(path);\n },\n decodePath: function decodePath(path) {\n return path.charAt(0) === '!' ? path.substr(1) : path;\n }\n },\n noslash: {\n encodePath: stripLeadingSlash,\n decodePath: addLeadingSlash\n },\n slash: {\n encodePath: addLeadingSlash,\n decodePath: addLeadingSlash\n }\n};\n\nfunction stripHash(url) {\n var hashIndex = url.indexOf('#');\n return hashIndex === -1 ? url : url.slice(0, hashIndex);\n}\n\nfunction getHashPath() {\n // We can't use window.location.hash here because it's not\n // consistent across browsers - Firefox will pre-decode it!\n var href = window.location.href;\n var hashIndex = href.indexOf('#');\n return hashIndex === -1 ? '' : href.substring(hashIndex + 1);\n}\n\nfunction pushHashPath(path) {\n window.location.hash = path;\n}\n\nfunction replaceHashPath(path) {\n window.location.replace(stripHash(window.location.href) + '#' + path);\n}\n\nfunction createHashHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Hash history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canGoWithoutReload = supportsGoWithoutReloadUsingHash();\n var _props = props,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$hashType = _props.hashType,\n hashType = _props$hashType === void 0 ? 'slash' : _props$hashType;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n var _HashPathCoders$hashT = HashPathCoders[hashType],\n encodePath = _HashPathCoders$hashT.encodePath,\n decodePath = _HashPathCoders$hashT.decodePath;\n\n function getDOMLocation() {\n var path = decodePath(getHashPath());\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n var forceNextPop = false;\n var ignorePath = null;\n\n function locationsAreEqual$$1(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash;\n }\n\n function handleHashChange() {\n var path = getHashPath();\n var encodedPath = encodePath(path);\n\n if (path !== encodedPath) {\n // Ensure we always have a properly-encoded hash.\n replaceHashPath(encodedPath);\n } else {\n var location = getDOMLocation();\n var prevLocation = history.location;\n if (!forceNextPop && locationsAreEqual$$1(prevLocation, location)) return; // A hashchange doesn't always == location change.\n\n if (ignorePath === createPath(location)) return; // Ignore this change; we already setState in push/replace.\n\n ignorePath = null;\n handlePop(location);\n }\n }\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of paths we've seen in sessionStorage.\n // Instead, we just default to 0 for paths we don't know.\n\n var toIndex = allPaths.lastIndexOf(createPath(toLocation));\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allPaths.lastIndexOf(createPath(fromLocation));\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n } // Ensure the hash is encoded properly before doing anything else.\n\n\n var path = getHashPath();\n var encodedPath = encodePath(path);\n if (path !== encodedPath) replaceHashPath(encodedPath);\n var initialLocation = getDOMLocation();\n var allPaths = [createPath(initialLocation)]; // Public interface\n\n function createHref(location) {\n var baseTag = document.querySelector('base');\n var href = '';\n\n if (baseTag && baseTag.getAttribute('href')) {\n href = stripHash(window.location.href);\n }\n\n return href + '#' + encodePath(basename + createPath(location));\n }\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot push state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a PUSH, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n pushHashPath(encodedPath);\n var prevIndex = allPaths.lastIndexOf(createPath(history.location));\n var nextPaths = allPaths.slice(0, prevIndex + 1);\n nextPaths.push(path);\n allPaths = nextPaths;\n setState({\n action: action,\n location: location\n });\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'Hash history cannot PUSH the same path; a new entry will not be added to the history stack') : void 0;\n setState();\n }\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot replace state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a REPLACE, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n replaceHashPath(encodedPath);\n }\n\n var prevIndex = allPaths.indexOf(createPath(history.location));\n if (prevIndex !== -1) allPaths[prevIndex] = path;\n setState({\n action: action,\n location: location\n });\n });\n }\n\n function go(n) {\n process.env.NODE_ENV !== \"production\" ? warning(canGoWithoutReload, 'Hash history go(n) causes a full page reload in this browser') : void 0;\n globalHistory.go(n);\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(HashChangeEvent$1, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(HashChangeEvent$1, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\n\nfunction clamp(n, lowerBound, upperBound) {\n return Math.min(Math.max(n, lowerBound), upperBound);\n}\n/**\n * Creates a history object that stores locations in memory.\n */\n\n\nfunction createMemoryHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n var _props = props,\n getUserConfirmation = _props.getUserConfirmation,\n _props$initialEntries = _props.initialEntries,\n initialEntries = _props$initialEntries === void 0 ? ['/'] : _props$initialEntries,\n _props$initialIndex = _props.initialIndex,\n initialIndex = _props$initialIndex === void 0 ? 0 : _props$initialIndex,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = history.entries.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var index = clamp(initialIndex, 0, initialEntries.length - 1);\n var entries = initialEntries.map(function (entry) {\n return typeof entry === 'string' ? createLocation(entry, undefined, createKey()) : createLocation(entry, undefined, entry.key || createKey());\n }); // Public interface\n\n var createHref = createPath;\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var prevIndex = history.index;\n var nextIndex = prevIndex + 1;\n var nextEntries = history.entries.slice(0);\n\n if (nextEntries.length > nextIndex) {\n nextEntries.splice(nextIndex, nextEntries.length - nextIndex, location);\n } else {\n nextEntries.push(location);\n }\n\n setState({\n action: action,\n location: location,\n index: nextIndex,\n entries: nextEntries\n });\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n history.entries[history.index] = location;\n setState({\n action: action,\n location: location\n });\n });\n }\n\n function go(n) {\n var nextIndex = clamp(history.index + n, 0, history.entries.length - 1);\n var action = 'POP';\n var location = history.entries[nextIndex];\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location,\n index: nextIndex\n });\n } else {\n // Mimic the behavior of DOM histories by\n // causing a render after a cancelled POP.\n setState();\n }\n });\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n function canGo(n) {\n var nextIndex = history.index + n;\n return nextIndex >= 0 && nextIndex < history.entries.length;\n }\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n return transitionManager.setPrompt(prompt);\n }\n\n function listen(listener) {\n return transitionManager.appendListener(listener);\n }\n\n var history = {\n length: entries.length,\n action: 'POP',\n location: entries[index],\n index: index,\n entries: entries,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n canGo: canGo,\n block: block,\n listen: listen\n };\n return history;\n}\n\nexport { createBrowserHistory, createHashHistory, createMemoryHistory, createLocation, locationsAreEqual, parsePath, createPath };\n","import { getVirtualParent } from './getVirtualParent';\n/**\n * Gets the element which is the parent of a given element.\n * If `allowVirtuaParents` is `true`, this method prefers the virtual parent over\n * real DOM parent when present.\n *\n * @public\n */\nexport function getParent(child: HTMLElement, allowVirtualParents: boolean = true): HTMLElement | null {\n return (\n child &&\n ((allowVirtualParents && getVirtualParent(child)) || (child.parentNode && (child.parentNode as HTMLElement)))\n );\n}\n","import { isVirtualElement } from './isVirtualElement';\n/**\n * Gets the virtual parent given the child element, if it exists.\n *\n * @public\n */\nexport function getVirtualParent(child: HTMLElement): HTMLElement | undefined {\n let parent: HTMLElement | undefined;\n if (child && isVirtualElement(child)) {\n parent = child._virtual.parent;\n }\n return parent;\n}\n","import { IVirtualElement } from './IVirtualElement';\n/**\n * Determines whether or not an element has the virtual hierarchy extension.\n *\n * @public\n */\nexport function isVirtualElement(element: HTMLElement | IVirtualElement): element is IVirtualElement {\n return element && !!(<IVirtualElement>element)._virtual;\n}\n","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : String(i); }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nvar MULTIPLY_OR_DIVIDE_REGEX = /(-?\\d+(?:\\.\\d+)?[a-zA-Z%]*)([*/])(-?\\d+(?:\\.\\d+)?[a-zA-Z%]*)/;\nvar ADD_OR_SUBTRACT_REGEX = /(-?\\d+(?:\\.\\d+)?[a-zA-Z%]*)([+-])(-?\\d+(?:\\.\\d+)?[a-zA-Z%]*)/;\nvar CSS_LENGTH_UNIT_REGEX = /^px|cm|vh|vw|em|rem|%|mm|in|pt|pc|ex|ch|vmin|vmax|Q$/;\nvar NUM_SPLIT_REGEX = /(-?\\d+(?:\\.\\d+)?)([a-zA-Z%]+)?/;\nvar CONVERSION_RATES = {\n cm: 96 / 2.54,\n mm: 96 / 25.4,\n pt: 96 / 72,\n pc: 96 / 6,\n \"in\": 96,\n Q: 96 / (2.54 * 40),\n px: 1\n};\nvar FIXED_CSS_LENGTH_UNITS = Object.keys(CONVERSION_RATES);\nvar STR_NAN = 'NaN';\nfunction convertToPx(value, unit) {\n return value * CONVERSION_RATES[unit];\n}\nvar DecimalCSS = /*#__PURE__*/function () {\n function DecimalCSS(num, unit) {\n _classCallCheck(this, DecimalCSS);\n this.num = num;\n this.unit = unit;\n this.num = num;\n this.unit = unit;\n if (Number.isNaN(num)) {\n this.unit = '';\n }\n if (unit !== '' && !CSS_LENGTH_UNIT_REGEX.test(unit)) {\n this.num = NaN;\n this.unit = '';\n }\n if (FIXED_CSS_LENGTH_UNITS.includes(unit)) {\n this.num = convertToPx(num, unit);\n this.unit = 'px';\n }\n }\n _createClass(DecimalCSS, [{\n key: \"add\",\n value: function add(other) {\n if (this.unit !== other.unit) {\n return new DecimalCSS(NaN, '');\n }\n return new DecimalCSS(this.num + other.num, this.unit);\n }\n }, {\n key: \"subtract\",\n value: function subtract(other) {\n if (this.unit !== other.unit) {\n return new DecimalCSS(NaN, '');\n }\n return new DecimalCSS(this.num - other.num, this.unit);\n }\n }, {\n key: \"multiply\",\n value: function multiply(other) {\n if (this.unit !== '' && other.unit !== '' && this.unit !== other.unit) {\n return new DecimalCSS(NaN, '');\n }\n return new DecimalCSS(this.num * other.num, this.unit || other.unit);\n }\n }, {\n key: \"divide\",\n value: function divide(other) {\n if (this.unit !== '' && other.unit !== '' && this.unit !== other.unit) {\n return new DecimalCSS(NaN, '');\n }\n return new DecimalCSS(this.num / other.num, this.unit || other.unit);\n }\n }, {\n key: \"toString\",\n value: function toString() {\n return \"\".concat(this.num).concat(this.unit);\n }\n }, {\n key: \"isNaN\",\n value: function isNaN() {\n return Number.isNaN(this.num);\n }\n }], [{\n key: \"parse\",\n value: function parse(str) {\n var _NUM_SPLIT_REGEX$exec;\n var _ref = (_NUM_SPLIT_REGEX$exec = NUM_SPLIT_REGEX.exec(str)) !== null && _NUM_SPLIT_REGEX$exec !== void 0 ? _NUM_SPLIT_REGEX$exec : [],\n _ref2 = _slicedToArray(_ref, 3),\n numStr = _ref2[1],\n unit = _ref2[2];\n return new DecimalCSS(parseFloat(numStr), unit !== null && unit !== void 0 ? unit : '');\n }\n }]);\n return DecimalCSS;\n}();\nfunction calculateArithmetic(expr) {\n if (expr.includes(STR_NAN)) {\n return STR_NAN;\n }\n var newExpr = expr;\n while (newExpr.includes('*') || newExpr.includes('/')) {\n var _MULTIPLY_OR_DIVIDE_R;\n var _ref3 = (_MULTIPLY_OR_DIVIDE_R = MULTIPLY_OR_DIVIDE_REGEX.exec(newExpr)) !== null && _MULTIPLY_OR_DIVIDE_R !== void 0 ? _MULTIPLY_OR_DIVIDE_R : [],\n _ref4 = _slicedToArray(_ref3, 4),\n leftOperand = _ref4[1],\n operator = _ref4[2],\n rightOperand = _ref4[3];\n var lTs = DecimalCSS.parse(leftOperand !== null && leftOperand !== void 0 ? leftOperand : '');\n var rTs = DecimalCSS.parse(rightOperand !== null && rightOperand !== void 0 ? rightOperand : '');\n var result = operator === '*' ? lTs.multiply(rTs) : lTs.divide(rTs);\n if (result.isNaN()) {\n return STR_NAN;\n }\n newExpr = newExpr.replace(MULTIPLY_OR_DIVIDE_REGEX, result.toString());\n }\n while (newExpr.includes('+') || /.-\\d+(?:\\.\\d+)?/.test(newExpr)) {\n var _ADD_OR_SUBTRACT_REGE;\n var _ref5 = (_ADD_OR_SUBTRACT_REGE = ADD_OR_SUBTRACT_REGEX.exec(newExpr)) !== null && _ADD_OR_SUBTRACT_REGE !== void 0 ? _ADD_OR_SUBTRACT_REGE : [],\n _ref6 = _slicedToArray(_ref5, 4),\n _leftOperand = _ref6[1],\n _operator = _ref6[2],\n _rightOperand = _ref6[3];\n var _lTs = DecimalCSS.parse(_leftOperand !== null && _leftOperand !== void 0 ? _leftOperand : '');\n var _rTs = DecimalCSS.parse(_rightOperand !== null && _rightOperand !== void 0 ? _rightOperand : '');\n var _result = _operator === '+' ? _lTs.add(_rTs) : _lTs.subtract(_rTs);\n if (_result.isNaN()) {\n return STR_NAN;\n }\n newExpr = newExpr.replace(ADD_OR_SUBTRACT_REGEX, _result.toString());\n }\n return newExpr;\n}\nvar PARENTHESES_REGEX = /\\(([^()]*)\\)/;\nfunction calculateParentheses(expr) {\n var newExpr = expr;\n while (newExpr.includes('(')) {\n var _PARENTHESES_REGEX$ex = PARENTHESES_REGEX.exec(newExpr),\n _PARENTHESES_REGEX$ex2 = _slicedToArray(_PARENTHESES_REGEX$ex, 2),\n parentheticalExpression = _PARENTHESES_REGEX$ex2[1];\n newExpr = newExpr.replace(PARENTHESES_REGEX, calculateArithmetic(parentheticalExpression));\n }\n return newExpr;\n}\nfunction evaluateExpression(expression) {\n var newExpr = expression.replace(/\\s+/g, '');\n newExpr = calculateParentheses(newExpr);\n newExpr = calculateArithmetic(newExpr);\n return newExpr;\n}\nexport function safeEvaluateExpression(expression) {\n try {\n return evaluateExpression(expression);\n } catch (e) {\n /* istanbul ignore next */\n return STR_NAN;\n }\n}\nexport function reduceCSSCalc(expression) {\n var result = safeEvaluateExpression(expression.slice(5, -1));\n if (result === STR_NAN) {\n // notify the user\n return '';\n }\n return result;\n}","var _excluded = [\"x\", \"y\", \"lineHeight\", \"capHeight\", \"scaleToFit\", \"textAnchor\", \"verticalAnchor\", \"fill\"],\n _excluded2 = [\"dx\", \"dy\", \"angle\", \"className\", \"breakAll\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nimport React, { useMemo } from 'react';\nimport isNil from 'lodash/isNil';\nimport clsx from 'clsx';\nimport { isNumber, isNumOrStr } from '../util/DataUtils';\nimport { Global } from '../util/Global';\nimport { filterProps } from '../util/ReactUtils';\nimport { getStringSize } from '../util/DOMUtils';\nimport { reduceCSSCalc } from '../util/ReduceCSSCalc';\nvar BREAKING_SPACES = /[ \\f\\n\\r\\t\\v\\u2028\\u2029]+/;\nvar calculateWordWidths = function calculateWordWidths(_ref) {\n var children = _ref.children,\n breakAll = _ref.breakAll,\n style = _ref.style;\n try {\n var words = [];\n if (!isNil(children)) {\n if (breakAll) {\n words = children.toString().split('');\n } else {\n words = children.toString().split(BREAKING_SPACES);\n }\n }\n var wordsWithComputedWidth = words.map(function (word) {\n return {\n word: word,\n width: getStringSize(word, style).width\n };\n });\n var spaceWidth = breakAll ? 0 : getStringSize(\"\\xA0\", style).width;\n return {\n wordsWithComputedWidth: wordsWithComputedWidth,\n spaceWidth: spaceWidth\n };\n } catch (e) {\n return null;\n }\n};\nvar calculateWordsByLines = function calculateWordsByLines(_ref2, initialWordsWithComputedWith, spaceWidth, lineWidth, scaleToFit) {\n var maxLines = _ref2.maxLines,\n children = _ref2.children,\n style = _ref2.style,\n breakAll = _ref2.breakAll;\n var shouldLimitLines = isNumber(maxLines);\n var text = children;\n var calculate = function calculate() {\n var words = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n return words.reduce(function (result, _ref3) {\n var word = _ref3.word,\n width = _ref3.width;\n var currentLine = result[result.length - 1];\n if (currentLine && (lineWidth == null || scaleToFit || currentLine.width + width + spaceWidth < Number(lineWidth))) {\n // Word can be added to an existing line\n currentLine.words.push(word);\n currentLine.width += width + spaceWidth;\n } else {\n // Add first word to line or word is too long to scaleToFit on existing line\n var newLine = {\n words: [word],\n width: width\n };\n result.push(newLine);\n }\n return result;\n }, []);\n };\n var originalResult = calculate(initialWordsWithComputedWith);\n var findLongestLine = function findLongestLine(words) {\n return words.reduce(function (a, b) {\n return a.width > b.width ? a : b;\n });\n };\n if (!shouldLimitLines) {\n return originalResult;\n }\n var suffix = '…';\n var checkOverflow = function checkOverflow(index) {\n var tempText = text.slice(0, index);\n var words = calculateWordWidths({\n breakAll: breakAll,\n style: style,\n children: tempText + suffix\n }).wordsWithComputedWidth;\n var result = calculate(words);\n var doesOverflow = result.length > maxLines || findLongestLine(result).width > Number(lineWidth);\n return [doesOverflow, result];\n };\n var start = 0;\n var end = text.length - 1;\n var iterations = 0;\n var trimmedResult;\n while (start <= end && iterations <= text.length - 1) {\n var middle = Math.floor((start + end) / 2);\n var prev = middle - 1;\n var _checkOverflow = checkOverflow(prev),\n _checkOverflow2 = _slicedToArray(_checkOverflow, 2),\n doesPrevOverflow = _checkOverflow2[0],\n result = _checkOverflow2[1];\n var _checkOverflow3 = checkOverflow(middle),\n _checkOverflow4 = _slicedToArray(_checkOverflow3, 1),\n doesMiddleOverflow = _checkOverflow4[0];\n if (!doesPrevOverflow && !doesMiddleOverflow) {\n start = middle + 1;\n }\n if (doesPrevOverflow && doesMiddleOverflow) {\n end = middle - 1;\n }\n if (!doesPrevOverflow && doesMiddleOverflow) {\n trimmedResult = result;\n break;\n }\n iterations++;\n }\n\n // Fallback to originalResult (result without trimming) if we cannot find the\n // where to trim. This should not happen :tm:\n return trimmedResult || originalResult;\n};\nvar getWordsWithoutCalculate = function getWordsWithoutCalculate(children) {\n var words = !isNil(children) ? children.toString().split(BREAKING_SPACES) : [];\n return [{\n words: words\n }];\n};\nvar getWordsByLines = function getWordsByLines(_ref4) {\n var width = _ref4.width,\n scaleToFit = _ref4.scaleToFit,\n children = _ref4.children,\n style = _ref4.style,\n breakAll = _ref4.breakAll,\n maxLines = _ref4.maxLines;\n // Only perform calculations if using features that require them (multiline, scaleToFit)\n if ((width || scaleToFit) && !Global.isSsr) {\n var wordsWithComputedWidth, spaceWidth;\n var wordWidths = calculateWordWidths({\n breakAll: breakAll,\n children: children,\n style: style\n });\n if (wordWidths) {\n var wcw = wordWidths.wordsWithComputedWidth,\n sw = wordWidths.spaceWidth;\n wordsWithComputedWidth = wcw;\n spaceWidth = sw;\n } else {\n return getWordsWithoutCalculate(children);\n }\n return calculateWordsByLines({\n breakAll: breakAll,\n children: children,\n maxLines: maxLines,\n style: style\n }, wordsWithComputedWidth, spaceWidth, width, scaleToFit);\n }\n return getWordsWithoutCalculate(children);\n};\nvar DEFAULT_FILL = '#808080';\nexport var Text = function Text(_ref5) {\n var _ref5$x = _ref5.x,\n propsX = _ref5$x === void 0 ? 0 : _ref5$x,\n _ref5$y = _ref5.y,\n propsY = _ref5$y === void 0 ? 0 : _ref5$y,\n _ref5$lineHeight = _ref5.lineHeight,\n lineHeight = _ref5$lineHeight === void 0 ? '1em' : _ref5$lineHeight,\n _ref5$capHeight = _ref5.capHeight,\n capHeight = _ref5$capHeight === void 0 ? '0.71em' : _ref5$capHeight,\n _ref5$scaleToFit = _ref5.scaleToFit,\n scaleToFit = _ref5$scaleToFit === void 0 ? false : _ref5$scaleToFit,\n _ref5$textAnchor = _ref5.textAnchor,\n textAnchor = _ref5$textAnchor === void 0 ? 'start' : _ref5$textAnchor,\n _ref5$verticalAnchor = _ref5.verticalAnchor,\n verticalAnchor = _ref5$verticalAnchor === void 0 ? 'end' : _ref5$verticalAnchor,\n _ref5$fill = _ref5.fill,\n fill = _ref5$fill === void 0 ? DEFAULT_FILL : _ref5$fill,\n props = _objectWithoutProperties(_ref5, _excluded);\n var wordsByLines = useMemo(function () {\n return getWordsByLines({\n breakAll: props.breakAll,\n children: props.children,\n maxLines: props.maxLines,\n scaleToFit: scaleToFit,\n style: props.style,\n width: props.width\n });\n }, [props.breakAll, props.children, props.maxLines, scaleToFit, props.style, props.width]);\n var dx = props.dx,\n dy = props.dy,\n angle = props.angle,\n className = props.className,\n breakAll = props.breakAll,\n textProps = _objectWithoutProperties(props, _excluded2);\n if (!isNumOrStr(propsX) || !isNumOrStr(propsY)) {\n return null;\n }\n var x = propsX + (isNumber(dx) ? dx : 0);\n var y = propsY + (isNumber(dy) ? dy : 0);\n var startDy;\n switch (verticalAnchor) {\n case 'start':\n startDy = reduceCSSCalc(\"calc(\".concat(capHeight, \")\"));\n break;\n case 'middle':\n startDy = reduceCSSCalc(\"calc(\".concat((wordsByLines.length - 1) / 2, \" * -\").concat(lineHeight, \" + (\").concat(capHeight, \" / 2))\"));\n break;\n default:\n startDy = reduceCSSCalc(\"calc(\".concat(wordsByLines.length - 1, \" * -\").concat(lineHeight, \")\"));\n break;\n }\n var transforms = [];\n if (scaleToFit) {\n var lineWidth = wordsByLines[0].width;\n var width = props.width;\n transforms.push(\"scale(\".concat((isNumber(width) ? width / lineWidth : 1) / lineWidth, \")\"));\n }\n if (angle) {\n transforms.push(\"rotate(\".concat(angle, \", \").concat(x, \", \").concat(y, \")\"));\n }\n if (transforms.length) {\n textProps.transform = transforms.join(' ');\n }\n return /*#__PURE__*/React.createElement(\"text\", _extends({}, filterProps(textProps, true), {\n x: x,\n y: y,\n className: clsx('recharts-text', className),\n textAnchor: textAnchor,\n fill: fill.includes('url') ? DEFAULT_FILL : fill\n }), wordsByLines.map(function (line, index) {\n var words = line.words.join(breakAll ? '' : ' ');\n return /*#__PURE__*/React.createElement(\"tspan\", {\n x: x,\n dy: index === 0 ? startDy : lineHeight,\n key: words\n }, words);\n }));\n};","import type { SerializedError } from '@reduxjs/toolkit';\nimport type { BaseQueryError } from '../baseQueryTypes';\nimport type { QueryDefinition, MutationDefinition, EndpointDefinitions, BaseEndpointDefinition, ResultTypeFrom, QueryArgFrom } from '../endpointDefinitions';\nimport type { Id, WithRequiredProp } from '../tsHelpers';\nexport type QueryCacheKey = string & {\n _type: 'queryCacheKey';\n};\nexport type QuerySubstateIdentifier = {\n queryCacheKey: QueryCacheKey;\n};\nexport type MutationSubstateIdentifier = {\n requestId: string;\n fixedCacheKey?: string;\n} | {\n requestId?: string;\n fixedCacheKey: string;\n};\nexport type RefetchConfigOptions = {\n refetchOnMountOrArgChange: boolean | number;\n refetchOnReconnect: boolean;\n refetchOnFocus: boolean;\n};\n\n/**\n * Strings describing the query state at any given time.\n */\nexport enum QueryStatus {\n uninitialized = 'uninitialized',\n pending = 'pending',\n fulfilled = 'fulfilled',\n rejected = 'rejected',\n}\nexport type RequestStatusFlags = {\n status: QueryStatus.uninitialized;\n isUninitialized: true;\n isLoading: false;\n isSuccess: false;\n isError: false;\n} | {\n status: QueryStatus.pending;\n isUninitialized: false;\n isLoading: true;\n isSuccess: false;\n isError: false;\n} | {\n status: QueryStatus.fulfilled;\n isUninitialized: false;\n isLoading: false;\n isSuccess: true;\n isError: false;\n} | {\n status: QueryStatus.rejected;\n isUninitialized: false;\n isLoading: false;\n isSuccess: false;\n isError: true;\n};\nexport function getRequestStatusFlags(status: QueryStatus): RequestStatusFlags {\n return ({\n status,\n isUninitialized: status === QueryStatus.uninitialized,\n isLoading: status === QueryStatus.pending,\n isSuccess: status === QueryStatus.fulfilled,\n isError: status === QueryStatus.rejected\n } as any);\n}\n\n/**\n * @public\n */\nexport type SubscriptionOptions = {\n /**\n * How frequently to automatically re-fetch data (in milliseconds). Defaults to `0` (off).\n */\n pollingInterval?: number;\n /**\n * Defaults to 'false'. This setting allows you to control whether RTK Query will continue polling if the window is not focused.\n *\n * If pollingInterval is not set or set to 0, this **will not be evaluated** until pollingInterval is greater than 0.\n *\n * Note: requires [`setupListeners`](./setupListeners) to have been called.\n */\n skipPollingIfUnfocused?: boolean;\n /**\n * Defaults to `false`. This setting allows you to control whether RTK Query will try to refetch all subscribed queries after regaining a network connection.\n *\n * If you specify this option alongside `skip: true`, this **will not be evaluated** until `skip` is false.\n *\n * Note: requires [`setupListeners`](./setupListeners) to have been called.\n */\n refetchOnReconnect?: boolean;\n /**\n * Defaults to `false`. This setting allows you to control whether RTK Query will try to refetch all subscribed queries after the application window regains focus.\n *\n * If you specify this option alongside `skip: true`, this **will not be evaluated** until `skip` is false.\n *\n * Note: requires [`setupListeners`](./setupListeners) to have been called.\n */\n refetchOnFocus?: boolean;\n};\nexport type Subscribers = {\n [requestId: string]: SubscriptionOptions;\n};\nexport type QueryKeys<Definitions extends EndpointDefinitions> = { [K in keyof Definitions]: Definitions[K] extends QueryDefinition<any, any, any, any> ? K : never }[keyof Definitions];\nexport type MutationKeys<Definitions extends EndpointDefinitions> = { [K in keyof Definitions]: Definitions[K] extends MutationDefinition<any, any, any, any> ? K : never }[keyof Definitions];\ntype BaseQuerySubState<D extends BaseEndpointDefinition<any, any, any>> = {\n /**\n * The argument originally passed into the hook or `initiate` action call\n */\n originalArgs: QueryArgFrom<D>;\n /**\n * A unique ID associated with the request\n */\n requestId: string;\n /**\n * The received data from the query\n */\n data?: ResultTypeFrom<D>;\n /**\n * The received error if applicable\n */\n error?: SerializedError | (D extends QueryDefinition<any, infer BaseQuery, any, any> ? BaseQueryError<BaseQuery> : never);\n /**\n * The name of the endpoint associated with the query\n */\n endpointName: string;\n /**\n * Time that the latest query started\n */\n startedTimeStamp: number;\n /**\n * Time that the latest query was fulfilled\n */\n fulfilledTimeStamp?: number;\n};\nexport type QuerySubState<D extends BaseEndpointDefinition<any, any, any>> = Id<({\n status: QueryStatus.fulfilled;\n} & WithRequiredProp<BaseQuerySubState<D>, 'data' | 'fulfilledTimeStamp'> & {\n error: undefined;\n}) | ({\n status: QueryStatus.pending;\n} & BaseQuerySubState<D>) | ({\n status: QueryStatus.rejected;\n} & WithRequiredProp<BaseQuerySubState<D>, 'error'>) | {\n status: QueryStatus.uninitialized;\n originalArgs?: undefined;\n data?: undefined;\n error?: undefined;\n requestId?: undefined;\n endpointName?: string;\n startedTimeStamp?: undefined;\n fulfilledTimeStamp?: undefined;\n}>;\ntype BaseMutationSubState<D extends BaseEndpointDefinition<any, any, any>> = {\n requestId: string;\n data?: ResultTypeFrom<D>;\n error?: SerializedError | (D extends MutationDefinition<any, infer BaseQuery, any, any> ? BaseQueryError<BaseQuery> : never);\n endpointName: string;\n startedTimeStamp: number;\n fulfilledTimeStamp?: number;\n};\nexport type MutationSubState<D extends BaseEndpointDefinition<any, any, any>> = (({\n status: QueryStatus.fulfilled;\n} & WithRequiredProp<BaseMutationSubState<D>, 'data' | 'fulfilledTimeStamp'>) & {\n error: undefined;\n}) | (({\n status: QueryStatus.pending;\n} & BaseMutationSubState<D>) & {\n data?: undefined;\n}) | ({\n status: QueryStatus.rejected;\n} & WithRequiredProp<BaseMutationSubState<D>, 'error'>) | {\n requestId?: undefined;\n status: QueryStatus.uninitialized;\n data?: undefined;\n error?: undefined;\n endpointName?: string;\n startedTimeStamp?: undefined;\n fulfilledTimeStamp?: undefined;\n};\nexport type CombinedState<D extends EndpointDefinitions, E extends string, ReducerPath extends string> = {\n queries: QueryState<D>;\n mutations: MutationState<D>;\n provided: InvalidationState<E>;\n subscriptions: SubscriptionState;\n config: ConfigState<ReducerPath>;\n};\nexport type InvalidationState<TagTypes extends string> = { [_ in TagTypes]: {\n [id: string]: Array<QueryCacheKey>;\n [id: number]: Array<QueryCacheKey>;\n} };\nexport type QueryState<D extends EndpointDefinitions> = {\n [queryCacheKey: string]: QuerySubState<D[string]> | undefined;\n};\nexport type SubscriptionState = {\n [queryCacheKey: string]: Subscribers | undefined;\n};\nexport type ConfigState<ReducerPath> = RefetchConfigOptions & {\n reducerPath: ReducerPath;\n online: boolean;\n focused: boolean;\n middlewareRegistered: boolean | 'conflict';\n} & ModifiableConfigState;\nexport type ModifiableConfigState = {\n keepUnusedDataFor: number;\n invalidationBehavior: 'delayed' | 'immediately';\n} & RefetchConfigOptions;\nexport type MutationState<D extends EndpointDefinitions> = {\n [requestId: string]: MutationSubState<D[string]> | undefined;\n};\nexport type RootState<Definitions extends EndpointDefinitions, TagTypes extends string, ReducerPath extends string> = { [P in ReducerPath]: CombinedState<Definitions, TagTypes, P> };","import { isPlainObject as _iPO } from '../core/rtkImports';\n\n// remove type guard\nconst isPlainObject: (_: any) => boolean = _iPO;\nexport function copyWithStructuralSharing<T>(oldObj: any, newObj: T): T;\nexport function copyWithStructuralSharing(oldObj: any, newObj: any): any {\n if (oldObj === newObj || !(isPlainObject(oldObj) && isPlainObject(newObj) || Array.isArray(oldObj) && Array.isArray(newObj))) {\n return newObj;\n }\n const newKeys = Object.keys(newObj);\n const oldKeys = Object.keys(oldObj);\n let isSameObject = newKeys.length === oldKeys.length;\n const mergeObj: any = Array.isArray(newObj) ? [] : {};\n for (const key of newKeys) {\n mergeObj[key] = copyWithStructuralSharing(oldObj[key], newObj[key]);\n if (isSameObject) isSameObject = oldObj[key] === mergeObj[key];\n }\n return isSameObject ? oldObj : mergeObj;\n}","// Fast method for counting an object's keys\n// without resorting to `Object.keys(obj).length\n// Will this make a big difference in perf? Probably not\n// But we can save a few allocations.\n\nexport function countObjectKeys(obj: Record<any, any>) {\n let count = 0;\n for (const _key in obj) {\n count++;\n }\n return count;\n}","/**\r\n * Alternative to `Array.flat(1)`\r\n * @param arr An array like [1,2,3,[1,2]]\r\n * @link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/flat\r\n */\nexport const flatten = (arr: readonly any[]) => [].concat(...arr);","export function isNotNullish<T>(v: T | null | undefined): v is T {\n return v != null;\n}","import { isAbsoluteUrl } from './isAbsoluteUrl';\nconst withoutTrailingSlash = (url: string) => url.replace(/\\/$/, '');\nconst withoutLeadingSlash = (url: string) => url.replace(/^\\//, '');\nexport function joinUrls(base: string | undefined, url: string | undefined): string {\n if (!base) {\n return url!;\n }\n if (!url) {\n return base;\n }\n if (isAbsoluteUrl(url)) {\n return url;\n }\n const delimiter = base.endsWith('/') || !url.startsWith('?') ? '/' : '';\n base = withoutTrailingSlash(base);\n url = withoutLeadingSlash(url);\n return `${base}${delimiter}${url}`;\n}","/**\r\n * If either :// or // is present consider it to be an absolute url\r\n *\r\n * @param url string\r\n */\n\nexport function isAbsoluteUrl(url: string) {\n return new RegExp(`(^|:)//`).test(url);\n}","import { joinUrls } from './utils';\nimport { isPlainObject } from './core/rtkImports';\nimport type { BaseQueryApi, BaseQueryFn } from './baseQueryTypes';\nimport type { MaybePromise, Override } from './tsHelpers';\nexport type ResponseHandler = 'content-type' | 'json' | 'text' | ((response: Response) => Promise<any>);\ntype CustomRequestInit = Override<RequestInit, {\n headers?: Headers | string[][] | Record<string, string | undefined> | undefined;\n}>;\nexport interface FetchArgs extends CustomRequestInit {\n url: string;\n params?: Record<string, any>;\n body?: any;\n responseHandler?: ResponseHandler;\n validateStatus?: (response: Response, body: any) => boolean;\n /**\n * A number in milliseconds that represents that maximum time a request can take before timing out.\n */\n timeout?: number;\n}\n\n/**\n * A mini-wrapper that passes arguments straight through to\n * {@link [fetch](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API)}.\n * Avoids storing `fetch` in a closure, in order to permit mocking/monkey-patching.\n */\nconst defaultFetchFn: typeof fetch = (...args) => fetch(...args);\nconst defaultValidateStatus = (response: Response) => response.status >= 200 && response.status <= 299;\nconst defaultIsJsonContentType = (headers: Headers) => /*applicat*/ /ion\\/(vnd\\.api\\+)?json/.test(headers.get('content-type') || '');\nexport type FetchBaseQueryError = {\n /**\n * * `number`:\n * HTTP status code\n */\n status: number;\n data: unknown;\n} | {\n /**\n * * `\"FETCH_ERROR\"`:\n * An error that occurred during execution of `fetch` or the `fetchFn` callback option\n **/\n status: 'FETCH_ERROR';\n data?: undefined;\n error: string;\n} | {\n /**\n * * `\"PARSING_ERROR\"`:\n * An error happened during parsing.\n * Most likely a non-JSON-response was returned with the default `responseHandler` \"JSON\",\n * or an error occurred while executing a custom `responseHandler`.\n **/\n status: 'PARSING_ERROR';\n originalStatus: number;\n data: string;\n error: string;\n} | {\n /**\n * * `\"TIMEOUT_ERROR\"`:\n * Request timed out\n **/\n status: 'TIMEOUT_ERROR';\n data?: undefined;\n error: string;\n} | {\n /**\n * * `\"CUSTOM_ERROR\"`:\n * A custom error type that you can return from your `queryFn` where another error might not make sense.\n **/\n status: 'CUSTOM_ERROR';\n data?: unknown;\n error: string;\n};\nfunction stripUndefined(obj: any) {\n if (!isPlainObject(obj)) {\n return obj;\n }\n const copy: Record<string, any> = {\n ...obj\n };\n for (const [k, v] of Object.entries(copy)) {\n if (v === undefined) delete copy[k];\n }\n return copy;\n}\nexport type FetchBaseQueryArgs = {\n baseUrl?: string;\n prepareHeaders?: (headers: Headers, api: Pick<BaseQueryApi, 'getState' | 'extra' | 'endpoint' | 'type' | 'forced'>) => MaybePromise<Headers | void>;\n fetchFn?: (input: RequestInfo, init?: RequestInit | undefined) => Promise<Response>;\n paramsSerializer?: (params: Record<string, any>) => string;\n /**\n * By default, we only check for 'application/json' and 'application/vnd.api+json' as the content-types for json. If you need to support another format, you can pass\n * in a predicate function for your given api to get the same automatic stringifying behavior\n * @example\n * ```ts\n * const isJsonContentType = (headers: Headers) => [\"application/vnd.api+json\", \"application/json\", \"application/vnd.hal+json\"].includes(headers.get(\"content-type\")?.trim());\n * ```\n */\n isJsonContentType?: (headers: Headers) => boolean;\n /**\n * Defaults to `application/json`;\n */\n jsonContentType?: string;\n\n /**\n * Custom replacer function used when calling `JSON.stringify()`;\n */\n jsonReplacer?: (this: any, key: string, value: any) => any;\n} & RequestInit & Pick<FetchArgs, 'responseHandler' | 'validateStatus' | 'timeout'>;\nexport type FetchBaseQueryMeta = {\n request: Request;\n response?: Response;\n};\n\n/**\n * This is a very small wrapper around fetch that aims to simplify requests.\n *\n * @example\n * ```ts\n * const baseQuery = fetchBaseQuery({\n * baseUrl: 'https://api.your-really-great-app.com/v1/',\n * prepareHeaders: (headers, { getState }) => {\n * const token = (getState() as RootState).auth.token;\n * // If we have a token set in state, let's assume that we should be passing it.\n * if (token) {\n * headers.set('authorization', `Bearer ${token}`);\n * }\n * return headers;\n * },\n * })\n * ```\n *\n * @param {string} baseUrl\n * The base URL for an API service.\n * Typically in the format of https://example.com/\n *\n * @param {(headers: Headers, api: { getState: () => unknown; extra: unknown; endpoint: string; type: 'query' | 'mutation'; forced: boolean; }) => Headers} prepareHeaders\n * An optional function that can be used to inject headers on requests.\n * Provides a Headers object, as well as most of the `BaseQueryApi` (`dispatch` is not available).\n * Useful for setting authentication or headers that need to be set conditionally.\n *\n * @link https://developer.mozilla.org/en-US/docs/Web/API/Headers\n *\n * @param {(input: RequestInfo, init?: RequestInit | undefined) => Promise<Response>} fetchFn\n * Accepts a custom `fetch` function if you do not want to use the default on the window.\n * Useful in SSR environments if you need to use a library such as `isomorphic-fetch` or `cross-fetch`\n *\n * @param {(params: Record<string, unknown>) => string} paramsSerializer\n * An optional function that can be used to stringify querystring parameters.\n *\n * @param {(headers: Headers) => boolean} isJsonContentType\n * An optional predicate function to determine if `JSON.stringify()` should be called on the `body` arg of `FetchArgs`\n *\n * @param {string} jsonContentType Used when automatically setting the content-type header for a request with a jsonifiable body that does not have an explicit content-type header. Defaults to `application/json`.\n *\n * @param {(this: any, key: string, value: any) => any} jsonReplacer Custom replacer function used when calling `JSON.stringify()`.\n *\n * @param {number} timeout\n * A number in milliseconds that represents the maximum time a request can take before timing out.\n */\nexport function fetchBaseQuery({\n baseUrl,\n prepareHeaders = x => x,\n fetchFn = defaultFetchFn,\n paramsSerializer,\n isJsonContentType = defaultIsJsonContentType,\n jsonContentType = 'application/json',\n jsonReplacer,\n timeout: defaultTimeout,\n responseHandler: globalResponseHandler,\n validateStatus: globalValidateStatus,\n ...baseFetchOptions\n}: FetchBaseQueryArgs = {}): BaseQueryFn<string | FetchArgs, unknown, FetchBaseQueryError, {}, FetchBaseQueryMeta> {\n if (typeof fetch === 'undefined' && fetchFn === defaultFetchFn) {\n console.warn('Warning: `fetch` is not available. Please supply a custom `fetchFn` property to use `fetchBaseQuery` on SSR environments.');\n }\n return async (arg, api) => {\n const {\n getState,\n extra,\n endpoint,\n forced,\n type\n } = api;\n let meta: FetchBaseQueryMeta | undefined;\n let {\n url,\n headers = new Headers(baseFetchOptions.headers),\n params = undefined,\n responseHandler = globalResponseHandler ?? ('json' as const),\n validateStatus = globalValidateStatus ?? defaultValidateStatus,\n timeout = defaultTimeout,\n ...rest\n } = typeof arg == 'string' ? {\n url: arg\n } : arg;\n let abortController: AbortController | undefined,\n signal = api.signal;\n if (timeout) {\n abortController = new AbortController();\n api.signal.addEventListener('abort', abortController.abort);\n signal = abortController.signal;\n }\n let config: RequestInit = {\n ...baseFetchOptions,\n signal,\n ...rest\n };\n headers = new Headers(stripUndefined(headers));\n config.headers = (await prepareHeaders(headers, {\n getState,\n extra,\n endpoint,\n forced,\n type\n })) || headers;\n\n // Only set the content-type to json if appropriate. Will not be true for FormData, ArrayBuffer, Blob, etc.\n const isJsonifiable = (body: any) => typeof body === 'object' && (isPlainObject(body) || Array.isArray(body) || typeof body.toJSON === 'function');\n if (!config.headers.has('content-type') && isJsonifiable(config.body)) {\n config.headers.set('content-type', jsonContentType);\n }\n if (isJsonifiable(config.body) && isJsonContentType(config.headers)) {\n config.body = JSON.stringify(config.body, jsonReplacer);\n }\n if (params) {\n const divider = ~url.indexOf('?') ? '&' : '?';\n const query = paramsSerializer ? paramsSerializer(params) : new URLSearchParams(stripUndefined(params));\n url += divider + query;\n }\n url = joinUrls(baseUrl, url);\n const request = new Request(url, config);\n const requestClone = new Request(url, config);\n meta = {\n request: requestClone\n };\n let response,\n timedOut = false,\n timeoutId = abortController && setTimeout(() => {\n timedOut = true;\n abortController!.abort();\n }, timeout);\n try {\n response = await fetchFn(request);\n } catch (e) {\n return {\n error: {\n status: timedOut ? 'TIMEOUT_ERROR' : 'FETCH_ERROR',\n error: String(e)\n },\n meta\n };\n } finally {\n if (timeoutId) clearTimeout(timeoutId);\n abortController?.signal.removeEventListener('abort', abortController.abort);\n }\n const responseClone = response.clone();\n meta.response = responseClone;\n let resultData: any;\n let responseText: string = '';\n try {\n let handleResponseError;\n await Promise.all([handleResponse(response, responseHandler).then(r => resultData = r, e => handleResponseError = e),\n // see https://github.com/node-fetch/node-fetch/issues/665#issuecomment-538995182\n // we *have* to \"use up\" both streams at the same time or they will stop running in node-fetch scenarios\n responseClone.text().then(r => responseText = r, () => {})]);\n if (handleResponseError) throw handleResponseError;\n } catch (e) {\n return {\n error: {\n status: 'PARSING_ERROR',\n originalStatus: response.status,\n data: responseText,\n error: String(e)\n },\n meta\n };\n }\n return validateStatus(response, resultData) ? {\n data: resultData,\n meta\n } : {\n error: {\n status: response.status,\n data: resultData\n },\n meta\n };\n };\n async function handleResponse(response: Response, responseHandler: ResponseHandler) {\n if (typeof responseHandler === 'function') {\n return responseHandler(response);\n }\n if (responseHandler === 'content-type') {\n responseHandler = isJsonContentType(response.headers) ? 'json' : 'text';\n }\n if (responseHandler === 'json') {\n const text = await response.text();\n return text.length ? JSON.parse(text) : null;\n }\n return response.text();\n }\n}","export class HandledError {\n constructor(public readonly value: any, public readonly meta: any = undefined) {}\n}","import type { BaseQueryApi, BaseQueryArg, BaseQueryEnhancer, BaseQueryError, BaseQueryExtraOptions, BaseQueryFn } from './baseQueryTypes';\nimport type { FetchBaseQueryError } from './fetchBaseQuery';\nimport { HandledError } from './HandledError';\n\n/**\n * Exponential backoff based on the attempt number.\n *\n * @remarks\n * 1. 600ms * random(0.4, 1.4)\n * 2. 1200ms * random(0.4, 1.4)\n * 3. 2400ms * random(0.4, 1.4)\n * 4. 4800ms * random(0.4, 1.4)\n * 5. 9600ms * random(0.4, 1.4)\n *\n * @param attempt - Current attempt\n * @param maxRetries - Maximum number of retries\n */\nasync function defaultBackoff(attempt: number = 0, maxRetries: number = 5) {\n const attempts = Math.min(attempt, maxRetries);\n const timeout = ~~((Math.random() + 0.4) * (300 << attempts)); // Force a positive int in the case we make this an option\n await new Promise(resolve => setTimeout((res: any) => resolve(res), timeout));\n}\ntype RetryConditionFunction = (error: BaseQueryError<BaseQueryFn>, args: BaseQueryArg<BaseQueryFn>, extraArgs: {\n attempt: number;\n baseQueryApi: BaseQueryApi;\n extraOptions: BaseQueryExtraOptions<BaseQueryFn> & RetryOptions;\n}) => boolean;\nexport type RetryOptions = {\n /**\n * Function used to determine delay between retries\n */\n backoff?: (attempt: number, maxRetries: number) => Promise<void>;\n} & ({\n /**\n * How many times the query will be retried (default: 5)\n */\n maxRetries?: number;\n retryCondition?: undefined;\n} | {\n /**\n * Callback to determine if a retry should be attempted.\n * Return `true` for another retry and `false` to quit trying prematurely.\n */\n retryCondition?: RetryConditionFunction;\n maxRetries?: undefined;\n});\nfunction fail(e: any): never {\n throw Object.assign(new HandledError({\n error: e\n }), {\n throwImmediately: true\n });\n}\nconst EMPTY_OPTIONS = {};\nconst retryWithBackoff: BaseQueryEnhancer<unknown, RetryOptions, RetryOptions | void> = (baseQuery, defaultOptions) => async (args, api, extraOptions) => {\n // We need to figure out `maxRetries` before we define `defaultRetryCondition.\n // This is probably goofy, but ought to work.\n // Put our defaults in one array, filter out undefineds, grab the last value.\n const possibleMaxRetries: number[] = [5, ((defaultOptions as any) || EMPTY_OPTIONS).maxRetries, ((extraOptions as any) || EMPTY_OPTIONS).maxRetries].filter(x => x !== undefined);\n const [maxRetries] = possibleMaxRetries.slice(-1);\n const defaultRetryCondition: RetryConditionFunction = (_, __, {\n attempt\n }) => attempt <= maxRetries;\n const options: {\n maxRetries: number;\n backoff: typeof defaultBackoff;\n retryCondition: typeof defaultRetryCondition;\n } = {\n maxRetries,\n backoff: defaultBackoff,\n retryCondition: defaultRetryCondition,\n ...defaultOptions,\n ...extraOptions\n };\n let retry = 0;\n while (true) {\n try {\n const result = await baseQuery(args, api, extraOptions);\n // baseQueries _should_ return an error property, so we should check for that and throw it to continue retrying\n if (result.error) {\n throw new HandledError(result);\n }\n return result;\n } catch (e: any) {\n retry++;\n if (e.throwImmediately) {\n if (e instanceof HandledError) {\n return e.value;\n }\n\n // We don't know what this is, so we have to rethrow it\n throw e;\n }\n if (e instanceof HandledError && !options.retryCondition((e.value.error as FetchBaseQueryError), args, {\n attempt: retry,\n baseQueryApi: api,\n extraOptions\n })) {\n return e.value;\n }\n await options.backoff(retry, options.maxRetries);\n }\n }\n};\n\n/**\n * A utility that can wrap `baseQuery` in the API definition to provide retries with a basic exponential backoff.\n *\n * @example\n *\n * ```ts\n * // codeblock-meta title=\"Retry every request 5 times by default\"\n * import { createApi, fetchBaseQuery, retry } from '@reduxjs/toolkit/query/react'\n * interface Post {\n * id: number\n * name: string\n * }\n * type PostsResponse = Post[]\n *\n * // maxRetries: 5 is the default, and can be omitted. Shown for documentation purposes.\n * const staggeredBaseQuery = retry(fetchBaseQuery({ baseUrl: '/' }), { maxRetries: 5 });\n * export const api = createApi({\n * baseQuery: staggeredBaseQuery,\n * endpoints: (build) => ({\n * getPosts: build.query<PostsResponse, void>({\n * query: () => ({ url: 'posts' }),\n * }),\n * getPost: build.query<PostsResponse, string>({\n * query: (id) => ({ url: `post/${id}` }),\n * extraOptions: { maxRetries: 8 }, // You can override the retry behavior on each endpoint\n * }),\n * }),\n * });\n *\n * export const { useGetPostsQuery, useGetPostQuery } = api;\n * ```\n */\nexport const retry = /* @__PURE__ */Object.assign(retryWithBackoff, {\n fail\n});","import type { ThunkDispatch, ActionCreatorWithoutPayload // Workaround for API-Extractor\n} from '@reduxjs/toolkit';\nimport { createAction } from './rtkImports';\nexport const onFocus = /* @__PURE__ */createAction('__rtkq/focused');\nexport const onFocusLost = /* @__PURE__ */createAction('__rtkq/unfocused');\nexport const onOnline = /* @__PURE__ */createAction('__rtkq/online');\nexport const onOffline = /* @__PURE__ */createAction('__rtkq/offline');\nlet initialized = false;\n\n/**\n * A utility used to enable `refetchOnMount` and `refetchOnReconnect` behaviors.\n * It requires the dispatch method from your store.\n * Calling `setupListeners(store.dispatch)` will configure listeners with the recommended defaults,\n * but you have the option of providing a callback for more granular control.\n *\n * @example\n * ```ts\n * setupListeners(store.dispatch)\n * ```\n *\n * @param dispatch - The dispatch method from your store\n * @param customHandler - An optional callback for more granular control over listener behavior\n * @returns Return value of the handler.\n * The default handler returns an `unsubscribe` method that can be called to remove the listeners.\n */\nexport function setupListeners(dispatch: ThunkDispatch<any, any, any>, customHandler?: (dispatch: ThunkDispatch<any, any, any>, actions: {\n onFocus: typeof onFocus;\n onFocusLost: typeof onFocusLost;\n onOnline: typeof onOnline;\n onOffline: typeof onOffline;\n}) => () => void) {\n function defaultHandler() {\n const handleFocus = () => dispatch(onFocus());\n const handleFocusLost = () => dispatch(onFocusLost());\n const handleOnline = () => dispatch(onOnline());\n const handleOffline = () => dispatch(onOffline());\n const handleVisibilityChange = () => {\n if (window.document.visibilityState === 'visible') {\n handleFocus();\n } else {\n handleFocusLost();\n }\n };\n if (!initialized) {\n if (typeof window !== 'undefined' && window.addEventListener) {\n // Handle focus events\n window.addEventListener('visibilitychange', handleVisibilityChange, false);\n window.addEventListener('focus', handleFocus, false);\n\n // Handle connection events\n window.addEventListener('online', handleOnline, false);\n window.addEventListener('offline', handleOffline, false);\n initialized = true;\n }\n }\n const unsubscribe = () => {\n window.removeEventListener('focus', handleFocus);\n window.removeEventListener('visibilitychange', handleVisibilityChange);\n window.removeEventListener('online', handleOnline);\n window.removeEventListener('offline', handleOffline);\n initialized = false;\n };\n return unsubscribe;\n }\n return customHandler ? customHandler(dispatch, {\n onFocus,\n onFocusLost,\n onOffline,\n onOnline\n }) : defaultHandler();\n}","import type { Api } from '@reduxjs/toolkit/query';\nimport type { BaseQueryApi, BaseQueryArg, BaseQueryError, BaseQueryExtraOptions, BaseQueryFn, BaseQueryMeta, BaseQueryResult, QueryReturnValue } from './baseQueryTypes';\nimport type { QuerySubState, RootState } from './core';\nimport type { CacheCollectionQueryExtraOptions } from './core/buildMiddleware/cacheCollection';\nimport type { CacheLifecycleMutationExtraOptions, CacheLifecycleQueryExtraOptions } from './core/buildMiddleware/cacheLifecycle';\nimport type { QueryLifecycleMutationExtraOptions, QueryLifecycleQueryExtraOptions } from './core/buildMiddleware/queryLifecycle';\nimport type { SerializeQueryArgs } from './defaultSerializeQueryArgs';\nimport type { NEVER } from './fakeBaseQuery';\nimport type { CastAny, HasRequiredProps, MaybePromise, NonUndefined, OmitFromUnion, UnwrapPromise } from './tsHelpers';\nconst resultType = /* @__PURE__ */Symbol();\nconst baseQuery = /* @__PURE__ */Symbol();\ntype EndpointDefinitionWithQuery<QueryArg, BaseQuery extends BaseQueryFn, ResultType> = {\n /**\n * `query` can be a function that returns either a `string` or an `object` which is passed to your `baseQuery`. If you are using [fetchBaseQuery](./fetchBaseQuery), this can return either a `string` or an `object` of properties in `FetchArgs`. If you use your own custom [`baseQuery`](../../rtk-query/usage/customizing-queries), you can customize this behavior to your liking.\n *\n * @example\n *\n * ```ts\n * // codeblock-meta title=\"query example\"\n *\n * import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react'\n * interface Post {\n * id: number\n * name: string\n * }\n * type PostsResponse = Post[]\n *\n * const api = createApi({\n * baseQuery: fetchBaseQuery({ baseUrl: '/' }),\n * tagTypes: ['Post'],\n * endpoints: (build) => ({\n * getPosts: build.query<PostsResponse, void>({\n * // highlight-start\n * query: () => 'posts',\n * // highlight-end\n * }),\n * addPost: build.mutation<Post, Partial<Post>>({\n * // highlight-start\n * query: (body) => ({\n * url: `posts`,\n * method: 'POST',\n * body,\n * }),\n * // highlight-end\n * invalidatesTags: [{ type: 'Post', id: 'LIST' }],\n * }),\n * })\n * })\n * ```\n */\n query(arg: QueryArg): BaseQueryArg<BaseQuery>;\n queryFn?: never;\n /**\n * A function to manipulate the data returned by a query or mutation.\n */\n transformResponse?(baseQueryReturnValue: BaseQueryResult<BaseQuery>, meta: BaseQueryMeta<BaseQuery>, arg: QueryArg): ResultType | Promise<ResultType>;\n /**\n * A function to manipulate the data returned by a failed query or mutation.\n */\n transformErrorResponse?(baseQueryReturnValue: BaseQueryError<BaseQuery>, meta: BaseQueryMeta<BaseQuery>, arg: QueryArg): unknown;\n /**\n * Defaults to `true`.\n *\n * Most apps should leave this setting on. The only time it can be a performance issue\n * is if an API returns extremely large amounts of data (e.g. 10,000 rows per request) and\n * you're unable to paginate it.\n *\n * For details of how this works, please see the below. When it is set to `false`,\n * every request will cause subscribed components to rerender, even when the data has not changed.\n *\n * @see https://redux-toolkit.js.org/api/other-exports#copywithstructuralsharing\n */\n structuralSharing?: boolean;\n};\ntype EndpointDefinitionWithQueryFn<QueryArg, BaseQuery extends BaseQueryFn, ResultType> = {\n /**\n * Can be used in place of `query` as an inline function that bypasses `baseQuery` completely for the endpoint.\n *\n * @example\n * ```ts\n * // codeblock-meta title=\"Basic queryFn example\"\n *\n * import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react'\n * interface Post {\n * id: number\n * name: string\n * }\n * type PostsResponse = Post[]\n *\n * const api = createApi({\n * baseQuery: fetchBaseQuery({ baseUrl: '/' }),\n * endpoints: (build) => ({\n * getPosts: build.query<PostsResponse, void>({\n * query: () => 'posts',\n * }),\n * flipCoin: build.query<'heads' | 'tails', void>({\n * // highlight-start\n * queryFn(arg, queryApi, extraOptions, baseQuery) {\n * const randomVal = Math.random()\n * if (randomVal < 0.45) {\n * return { data: 'heads' }\n * }\n * if (randomVal < 0.9) {\n * return { data: 'tails' }\n * }\n * return { error: { status: 500, statusText: 'Internal Server Error', data: \"Coin landed on its edge!\" } }\n * }\n * // highlight-end\n * })\n * })\n * })\n * ```\n */\n queryFn(arg: QueryArg, api: BaseQueryApi, extraOptions: BaseQueryExtraOptions<BaseQuery>, baseQuery: (arg: Parameters<BaseQuery>[0]) => ReturnType<BaseQuery>): MaybePromise<QueryReturnValue<ResultType, BaseQueryError<BaseQuery>, BaseQueryMeta<BaseQuery>>>;\n query?: never;\n transformResponse?: never;\n transformErrorResponse?: never;\n /**\n * Defaults to `true`.\n *\n * Most apps should leave this setting on. The only time it can be a performance issue\n * is if an API returns extremely large amounts of data (e.g. 10,000 rows per request) and\n * you're unable to paginate it.\n *\n * For details of how this works, please see the below. When it is set to `false`,\n * every request will cause subscribed components to rerender, even when the data has not changed.\n *\n * @see https://redux-toolkit.js.org/api/other-exports#copywithstructuralsharing\n */\n structuralSharing?: boolean;\n};\ntype BaseEndpointTypes<QueryArg, BaseQuery extends BaseQueryFn, ResultType> = {\n QueryArg: QueryArg;\n BaseQuery: BaseQuery;\n ResultType: ResultType;\n};\nexport type BaseEndpointDefinition<QueryArg, BaseQuery extends BaseQueryFn, ResultType> = (([CastAny<BaseQueryResult<BaseQuery>, {}>] extends [NEVER] ? never : EndpointDefinitionWithQuery<QueryArg, BaseQuery, ResultType>) | EndpointDefinitionWithQueryFn<QueryArg, BaseQuery, ResultType>) & {\n /* phantom type */\n [resultType]?: ResultType;\n /* phantom type */\n [baseQuery]?: BaseQuery;\n} & HasRequiredProps<BaseQueryExtraOptions<BaseQuery>, {\n extraOptions: BaseQueryExtraOptions<BaseQuery>;\n}, {\n extraOptions?: BaseQueryExtraOptions<BaseQuery>;\n}>;\nexport enum DefinitionType {\n query = 'query',\n mutation = 'mutation',\n}\nexport type GetResultDescriptionFn<TagTypes extends string, ResultType, QueryArg, ErrorType, MetaType> = (result: ResultType | undefined, error: ErrorType | undefined, arg: QueryArg, meta: MetaType) => ReadonlyArray<TagDescription<TagTypes>>;\nexport type FullTagDescription<TagType> = {\n type: TagType;\n id?: number | string;\n};\nexport type TagDescription<TagType> = TagType | FullTagDescription<TagType>;\nexport type ResultDescription<TagTypes extends string, ResultType, QueryArg, ErrorType, MetaType> = ReadonlyArray<TagDescription<TagTypes>> | GetResultDescriptionFn<TagTypes, ResultType, QueryArg, ErrorType, MetaType>;\ntype QueryTypes<QueryArg, BaseQuery extends BaseQueryFn, TagTypes extends string, ResultType, ReducerPath extends string = string> = BaseEndpointTypes<QueryArg, BaseQuery, ResultType> & {\n /**\n * The endpoint definition type. To be used with some internal generic types.\n * @example\n * ```ts\n * const useMyWrappedHook: UseQuery<typeof api.endpoints.query.Types.QueryDefinition> = ...\n * ```\n */\n QueryDefinition: QueryDefinition<QueryArg, BaseQuery, TagTypes, ResultType, ReducerPath>;\n TagTypes: TagTypes;\n ReducerPath: ReducerPath;\n};\n\n/**\n * @public\n */\nexport interface QueryExtraOptions<TagTypes extends string, ResultType, QueryArg, BaseQuery extends BaseQueryFn, ReducerPath extends string = string> extends CacheLifecycleQueryExtraOptions<ResultType, QueryArg, BaseQuery, ReducerPath>, QueryLifecycleQueryExtraOptions<ResultType, QueryArg, BaseQuery, ReducerPath>, CacheCollectionQueryExtraOptions {\n type: DefinitionType.query;\n\n /**\n * Used by `query` endpoints. Determines which 'tag' is attached to the cached data returned by the query.\n * Expects an array of tag type strings, an array of objects of tag types with ids, or a function that returns such an array.\n * 1. `['Post']` - equivalent to `2`\n * 2. `[{ type: 'Post' }]` - equivalent to `1`\n * 3. `[{ type: 'Post', id: 1 }]`\n * 4. `(result, error, arg) => ['Post']` - equivalent to `5`\n * 5. `(result, error, arg) => [{ type: 'Post' }]` - equivalent to `4`\n * 6. `(result, error, arg) => [{ type: 'Post', id: 1 }]`\n *\n * @example\n *\n * ```ts\n * // codeblock-meta title=\"providesTags example\"\n *\n * import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react'\n * interface Post {\n * id: number\n * name: string\n * }\n * type PostsResponse = Post[]\n *\n * const api = createApi({\n * baseQuery: fetchBaseQuery({ baseUrl: '/' }),\n * tagTypes: ['Posts'],\n * endpoints: (build) => ({\n * getPosts: build.query<PostsResponse, void>({\n * query: () => 'posts',\n * // highlight-start\n * providesTags: (result) =>\n * result\n * ? [\n * ...result.map(({ id }) => ({ type: 'Posts' as const, id })),\n * { type: 'Posts', id: 'LIST' },\n * ]\n * : [{ type: 'Posts', id: 'LIST' }],\n * // highlight-end\n * })\n * })\n * })\n * ```\n */\n providesTags?: ResultDescription<TagTypes, ResultType, QueryArg, BaseQueryError<BaseQuery>, BaseQueryMeta<BaseQuery>>;\n /**\n * Not to be used. A query should not invalidate tags in the cache.\n */\n invalidatesTags?: never;\n\n /**\n * Can be provided to return a custom cache key value based on the query arguments.\n *\n * This is primarily intended for cases where a non-serializable value is passed as part of the query arg object and should be excluded from the cache key. It may also be used for cases where an endpoint should only have a single cache entry, such as an infinite loading / pagination implementation.\n *\n * Unlike the `createApi` version which can _only_ return a string, this per-endpoint option can also return an an object, number, or boolean. If it returns a string, that value will be used as the cache key directly. If it returns an object / number / boolean, that value will be passed to the built-in `defaultSerializeQueryArgs`. This simplifies the use case of stripping out args you don't want included in the cache key.\n *\n *\n * @example\n *\n * ```ts\n * // codeblock-meta title=\"serializeQueryArgs : exclude value\"\n *\n * import { createApi, fetchBaseQuery, defaultSerializeQueryArgs } from '@reduxjs/toolkit/query/react'\n * interface Post {\n * id: number\n * name: string\n * }\n *\n * interface MyApiClient {\n * fetchPost: (id: string) => Promise<Post>\n * }\n *\n * createApi({\n * baseQuery: fetchBaseQuery({ baseUrl: '/' }),\n * endpoints: (build) => ({\n * // Example: an endpoint with an API client passed in as an argument,\n * // but only the item ID should be used as the cache key\n * getPost: build.query<Post, { id: string; client: MyApiClient }>({\n * queryFn: async ({ id, client }) => {\n * const post = await client.fetchPost(id)\n * return { data: post }\n * },\n * // highlight-start\n * serializeQueryArgs: ({ queryArgs, endpointDefinition, endpointName }) => {\n * const { id } = queryArgs\n * // This can return a string, an object, a number, or a boolean.\n * // If it returns an object, number or boolean, that value\n * // will be serialized automatically via `defaultSerializeQueryArgs`\n * return { id } // omit `client` from the cache key\n *\n * // Alternately, you can use `defaultSerializeQueryArgs` yourself:\n * // return defaultSerializeQueryArgs({\n * // endpointName,\n * // queryArgs: { id },\n * // endpointDefinition\n * // })\n * // Or create and return a string yourself:\n * // return `getPost(${id})`\n * },\n * // highlight-end\n * }),\n * }),\n *})\n * ```\n */\n serializeQueryArgs?: SerializeQueryArgs<QueryArg, string | number | boolean | Record<any, any>>;\n\n /**\n * Can be provided to merge an incoming response value into the current cache data.\n * If supplied, no automatic structural sharing will be applied - it's up to\n * you to update the cache appropriately.\n *\n * Since RTKQ normally replaces cache entries with the new response, you will usually\n * need to use this with the `serializeQueryArgs` or `forceRefetch` options to keep\n * an existing cache entry so that it can be updated.\n *\n * Since this is wrapped with Immer, you may either mutate the `currentCacheValue` directly,\n * or return a new value, but _not_ both at once.\n *\n * Will only be called if the existing `currentCacheData` is _not_ `undefined` - on first response,\n * the cache entry will just save the response data directly.\n *\n * Useful if you don't want a new request to completely override the current cache value,\n * maybe because you have manually updated it from another source and don't want those\n * updates to get lost.\n *\n *\n * @example\n *\n * ```ts\n * // codeblock-meta title=\"merge: pagination\"\n *\n * import { createApi, fetchBaseQuery, defaultSerializeQueryArgs } from '@reduxjs/toolkit/query/react'\n * interface Post {\n * id: number\n * name: string\n * }\n *\n * createApi({\n * baseQuery: fetchBaseQuery({ baseUrl: '/' }),\n * endpoints: (build) => ({\n * listItems: build.query<string[], number>({\n * query: (pageNumber) => `/listItems?page=${pageNumber}`,\n * // Only have one cache entry because the arg always maps to one string\n * serializeQueryArgs: ({ endpointName }) => {\n * return endpointName\n * },\n * // Always merge incoming data to the cache entry\n * merge: (currentCache, newItems) => {\n * currentCache.push(...newItems)\n * },\n * // Refetch when the page arg changes\n * forceRefetch({ currentArg, previousArg }) {\n * return currentArg !== previousArg\n * },\n * }),\n * }),\n *})\n * ```\n */\n merge?(currentCacheData: ResultType, responseData: ResultType, otherArgs: {\n arg: QueryArg;\n baseQueryMeta: BaseQueryMeta<BaseQuery>;\n requestId: string;\n fulfilledTimeStamp: number;\n }): ResultType | void;\n\n /**\n * Check to see if the endpoint should force a refetch in cases where it normally wouldn't.\n * This is primarily useful for \"infinite scroll\" / pagination use cases where\n * RTKQ is keeping a single cache entry that is added to over time, in combination\n * with `serializeQueryArgs` returning a fixed cache key and a `merge` callback\n * set to add incoming data to the cache entry each time.\n *\n * @example\n *\n * ```ts\n * // codeblock-meta title=\"forceRefresh: pagination\"\n *\n * import { createApi, fetchBaseQuery, defaultSerializeQueryArgs } from '@reduxjs/toolkit/query/react'\n * interface Post {\n * id: number\n * name: string\n * }\n *\n * createApi({\n * baseQuery: fetchBaseQuery({ baseUrl: '/' }),\n * endpoints: (build) => ({\n * listItems: build.query<string[], number>({\n * query: (pageNumber) => `/listItems?page=${pageNumber}`,\n * // Only have one cache entry because the arg always maps to one string\n * serializeQueryArgs: ({ endpointName }) => {\n * return endpointName\n * },\n * // Always merge incoming data to the cache entry\n * merge: (currentCache, newItems) => {\n * currentCache.push(...newItems)\n * },\n * // Refetch when the page arg changes\n * forceRefetch({ currentArg, previousArg }) {\n * return currentArg !== previousArg\n * },\n * }),\n * }),\n *})\n * ```\n */\n forceRefetch?(params: {\n currentArg: QueryArg | undefined;\n previousArg: QueryArg | undefined;\n state: RootState<any, any, string>;\n endpointState?: QuerySubState<any>;\n }): boolean;\n\n /**\n * All of these are `undefined` at runtime, purely to be used in TypeScript declarations!\n */\n Types?: QueryTypes<QueryArg, BaseQuery, TagTypes, ResultType, ReducerPath>;\n}\nexport type QueryDefinition<QueryArg, BaseQuery extends BaseQueryFn, TagTypes extends string, ResultType, ReducerPath extends string = string> = BaseEndpointDefinition<QueryArg, BaseQuery, ResultType> & QueryExtraOptions<TagTypes, ResultType, QueryArg, BaseQuery, ReducerPath>;\ntype MutationTypes<QueryArg, BaseQuery extends BaseQueryFn, TagTypes extends string, ResultType, ReducerPath extends string = string> = BaseEndpointTypes<QueryArg, BaseQuery, ResultType> & {\n /**\n * The endpoint definition type. To be used with some internal generic types.\n * @example\n * ```ts\n * const useMyWrappedHook: UseMutation<typeof api.endpoints.query.Types.MutationDefinition> = ...\n * ```\n */\n MutationDefinition: MutationDefinition<QueryArg, BaseQuery, TagTypes, ResultType, ReducerPath>;\n TagTypes: TagTypes;\n ReducerPath: ReducerPath;\n};\n\n/**\n * @public\n */\nexport interface MutationExtraOptions<TagTypes extends string, ResultType, QueryArg, BaseQuery extends BaseQueryFn, ReducerPath extends string = string> extends CacheLifecycleMutationExtraOptions<ResultType, QueryArg, BaseQuery, ReducerPath>, QueryLifecycleMutationExtraOptions<ResultType, QueryArg, BaseQuery, ReducerPath> {\n type: DefinitionType.mutation;\n\n /**\n * Used by `mutation` endpoints. Determines which cached data should be either re-fetched or removed from the cache.\n * Expects the same shapes as `providesTags`.\n *\n * @example\n *\n * ```ts\n * // codeblock-meta title=\"invalidatesTags example\"\n * import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react'\n * interface Post {\n * id: number\n * name: string\n * }\n * type PostsResponse = Post[]\n *\n * const api = createApi({\n * baseQuery: fetchBaseQuery({ baseUrl: '/' }),\n * tagTypes: ['Posts'],\n * endpoints: (build) => ({\n * getPosts: build.query<PostsResponse, void>({\n * query: () => 'posts',\n * providesTags: (result) =>\n * result\n * ? [\n * ...result.map(({ id }) => ({ type: 'Posts' as const, id })),\n * { type: 'Posts', id: 'LIST' },\n * ]\n * : [{ type: 'Posts', id: 'LIST' }],\n * }),\n * addPost: build.mutation<Post, Partial<Post>>({\n * query(body) {\n * return {\n * url: `posts`,\n * method: 'POST',\n * body,\n * }\n * },\n * // highlight-start\n * invalidatesTags: [{ type: 'Posts', id: 'LIST' }],\n * // highlight-end\n * }),\n * })\n * })\n * ```\n */\n invalidatesTags?: ResultDescription<TagTypes, ResultType, QueryArg, BaseQueryError<BaseQuery>, BaseQueryMeta<BaseQuery>>;\n /**\n * Not to be used. A mutation should not provide tags to the cache.\n */\n providesTags?: never;\n\n /**\n * All of these are `undefined` at runtime, purely to be used in TypeScript declarations!\n */\n Types?: MutationTypes<QueryArg, BaseQuery, TagTypes, ResultType, ReducerPath>;\n}\nexport type MutationDefinition<QueryArg, BaseQuery extends BaseQueryFn, TagTypes extends string, ResultType, ReducerPath extends string = string> = BaseEndpointDefinition<QueryArg, BaseQuery, ResultType> & MutationExtraOptions<TagTypes, ResultType, QueryArg, BaseQuery, ReducerPath>;\nexport type EndpointDefinition<QueryArg, BaseQuery extends BaseQueryFn, TagTypes extends string, ResultType, ReducerPath extends string = string> = QueryDefinition<QueryArg, BaseQuery, TagTypes, ResultType, ReducerPath> | MutationDefinition<QueryArg, BaseQuery, TagTypes, ResultType, ReducerPath>;\nexport type EndpointDefinitions = Record<string, EndpointDefinition<any, any, any, any>>;\nexport function isQueryDefinition(e: EndpointDefinition<any, any, any, any>): e is QueryDefinition<any, any, any, any> {\n return e.type === DefinitionType.query;\n}\nexport function isMutationDefinition(e: EndpointDefinition<any, any, any, any>): e is MutationDefinition<any, any, any, any> {\n return e.type === DefinitionType.mutation;\n}\nexport type EndpointBuilder<BaseQuery extends BaseQueryFn, TagTypes extends string, ReducerPath extends string> = {\n /**\n * An endpoint definition that retrieves data, and may provide tags to the cache.\n *\n * @example\n * ```js\n * // codeblock-meta title=\"Example of all query endpoint options\"\n * const api = createApi({\n * baseQuery,\n * endpoints: (build) => ({\n * getPost: build.query({\n * query: (id) => ({ url: `post/${id}` }),\n * // Pick out data and prevent nested properties in a hook or selector\n * transformResponse: (response) => response.data,\n * // Pick out error and prevent nested properties in a hook or selector\n * transformErrorResponse: (response) => response.error,\n * // `result` is the server response\n * providesTags: (result, error, id) => [{ type: 'Post', id }],\n * // trigger side effects or optimistic updates\n * onQueryStarted(id, { dispatch, getState, extra, requestId, queryFulfilled, getCacheEntry, updateCachedData }) {},\n * // handle subscriptions etc\n * onCacheEntryAdded(id, { dispatch, getState, extra, requestId, cacheEntryRemoved, cacheDataLoaded, getCacheEntry, updateCachedData }) {},\n * }),\n * }),\n *});\n *```\n */\n query<ResultType, QueryArg>(definition: OmitFromUnion<QueryDefinition<QueryArg, BaseQuery, TagTypes, ResultType, ReducerPath>, 'type'>): QueryDefinition<QueryArg, BaseQuery, TagTypes, ResultType, ReducerPath>;\n /**\n * An endpoint definition that alters data on the server or will possibly invalidate the cache.\n *\n * @example\n * ```js\n * // codeblock-meta title=\"Example of all mutation endpoint options\"\n * const api = createApi({\n * baseQuery,\n * endpoints: (build) => ({\n * updatePost: build.mutation({\n * query: ({ id, ...patch }) => ({ url: `post/${id}`, method: 'PATCH', body: patch }),\n * // Pick out data and prevent nested properties in a hook or selector\n * transformResponse: (response) => response.data,\n * // Pick out error and prevent nested properties in a hook or selector\n * transformErrorResponse: (response) => response.error,\n * // `result` is the server response\n * invalidatesTags: (result, error, id) => [{ type: 'Post', id }],\n * // trigger side effects or optimistic updates\n * onQueryStarted(id, { dispatch, getState, extra, requestId, queryFulfilled, getCacheEntry }) {},\n * // handle subscriptions etc\n * onCacheEntryAdded(id, { dispatch, getState, extra, requestId, cacheEntryRemoved, cacheDataLoaded, getCacheEntry }) {},\n * }),\n * }),\n * });\n * ```\n */\n mutation<ResultType, QueryArg>(definition: OmitFromUnion<MutationDefinition<QueryArg, BaseQuery, TagTypes, ResultType, ReducerPath>, 'type'>): MutationDefinition<QueryArg, BaseQuery, TagTypes, ResultType, ReducerPath>;\n};\nexport type AssertTagTypes = <T extends FullTagDescription<string>>(t: T) => T;\nexport function calculateProvidedBy<ResultType, QueryArg, ErrorType, MetaType>(description: ResultDescription<string, ResultType, QueryArg, ErrorType, MetaType> | undefined, result: ResultType | undefined, error: ErrorType | undefined, queryArg: QueryArg, meta: MetaType | undefined, assertTagTypes: AssertTagTypes): readonly FullTagDescription<string>[] {\n if (isFunction(description)) {\n return description((result as ResultType), (error as undefined), queryArg, (meta as MetaType)).map(expandTagDescription).map(assertTagTypes);\n }\n if (Array.isArray(description)) {\n return description.map(expandTagDescription).map(assertTagTypes);\n }\n return [];\n}\nfunction isFunction<T>(t: T): t is Extract<T, Function> {\n return typeof t === 'function';\n}\nexport function expandTagDescription(description: TagDescription<string>): FullTagDescription<string> {\n return typeof description === 'string' ? {\n type: description\n } : description;\n}\nexport type QueryArgFrom<D extends BaseEndpointDefinition<any, any, any>> = D extends BaseEndpointDefinition<infer QA, any, any> ? QA : unknown;\nexport type ResultTypeFrom<D extends BaseEndpointDefinition<any, any, any>> = D extends BaseEndpointDefinition<any, any, infer RT> ? RT : unknown;\nexport type ReducerPathFrom<D extends EndpointDefinition<any, any, any, any, any>> = D extends EndpointDefinition<any, any, any, any, infer RP> ? RP : unknown;\nexport type TagTypesFrom<D extends EndpointDefinition<any, any, any, any>> = D extends EndpointDefinition<any, any, infer RP, any> ? RP : unknown;\nexport type TagTypesFromApi<T> = T extends Api<any, any, any, infer TagTypes> ? TagTypes : never;\nexport type DefinitionsFromApi<T> = T extends Api<any, infer Definitions, any, any> ? Definitions : never;\nexport type TransformedResponse<NewDefinitions extends EndpointDefinitions, K, ResultType> = K extends keyof NewDefinitions ? NewDefinitions[K]['transformResponse'] extends undefined ? ResultType : UnwrapPromise<ReturnType<NonUndefined<NewDefinitions[K]['transformResponse']>>> : ResultType;\nexport type OverrideResultType<Definition, NewResultType> = Definition extends QueryDefinition<infer QueryArg, infer BaseQuery, infer TagTypes, any, infer ReducerPath> ? QueryDefinition<QueryArg, BaseQuery, TagTypes, NewResultType, ReducerPath> : Definition extends MutationDefinition<infer QueryArg, infer BaseQuery, infer TagTypes, any, infer ReducerPath> ? MutationDefinition<QueryArg, BaseQuery, TagTypes, NewResultType, ReducerPath> : never;\nexport type UpdateDefinitions<Definitions extends EndpointDefinitions, NewTagTypes extends string, NewDefinitions extends EndpointDefinitions> = { [K in keyof Definitions]: Definitions[K] extends QueryDefinition<infer QueryArg, infer BaseQuery, any, infer ResultType, infer ReducerPath> ? QueryDefinition<QueryArg, BaseQuery, NewTagTypes, TransformedResponse<NewDefinitions, K, ResultType>, ReducerPath> : Definitions[K] extends MutationDefinition<infer QueryArg, infer BaseQuery, any, infer ResultType, infer ReducerPath> ? MutationDefinition<QueryArg, BaseQuery, NewTagTypes, TransformedResponse<NewDefinitions, K, ResultType>, ReducerPath> : never };","import type { Middleware, StoreEnhancer } from 'redux';\nimport type { Tuple } from './utils';\nexport function safeAssign<T extends object>(target: T, ...args: Array<Partial<NoInfer<T>>>) {\n Object.assign(target, ...args);\n}\n\n/**\n * return True if T is `any`, otherwise return False\n * taken from https://github.com/joonhocho/tsdef\n *\n * @internal\n */\nexport type IsAny<T, True, False = never> =\n// test if we are going the left AND right path in the condition\ntrue | false extends (T extends never ? true : false) ? True : False;\nexport type CastAny<T, CastTo> = IsAny<T, CastTo, T>;\n\n/**\n * return True if T is `unknown`, otherwise return False\n * taken from https://github.com/joonhocho/tsdef\n *\n * @internal\n */\nexport type IsUnknown<T, True, False = never> = unknown extends T ? IsAny<T, False, True> : False;\nexport type FallbackIfUnknown<T, Fallback> = IsUnknown<T, Fallback, T>;\n\n/**\n * @internal\n */\nexport type IfMaybeUndefined<P, True, False> = [undefined] extends [P] ? True : False;\n\n/**\n * @internal\n */\nexport type IfVoid<P, True, False> = [void] extends [P] ? True : False;\n\n/**\n * @internal\n */\nexport type IsEmptyObj<T, True, False = never> = T extends any ? keyof T extends never ? IsUnknown<T, False, IfMaybeUndefined<T, False, IfVoid<T, False, True>>> : False : never;\n\n/**\n * returns True if TS version is above 3.5, False if below.\n * uses feature detection to detect TS version >= 3.5\n * * versions below 3.5 will return `{}` for unresolvable interference\n * * versions above will return `unknown`\n *\n * @internal\n */\nexport type AtLeastTS35<True, False> = [True, False][IsUnknown<ReturnType<<T>() => T>, 0, 1>];\n\n/**\n * @internal\n */\nexport type IsUnknownOrNonInferrable<T, True, False> = AtLeastTS35<IsUnknown<T, True, False>, IsEmptyObj<T, True, IsUnknown<T, True, False>>>;\n\n/**\n * Convert a Union type `(A|B)` to an intersection type `(A&B)`\n */\nexport type UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends (k: infer I) => void ? I : never;\n\n// Appears to have a convenient side effect of ignoring `never` even if that's not what you specified\nexport type ExcludeFromTuple<T, E, Acc extends unknown[] = []> = T extends [infer Head, ...infer Tail] ? ExcludeFromTuple<Tail, E, [...Acc, ...([Head] extends [E] ? [] : [Head])]> : Acc;\ntype ExtractDispatchFromMiddlewareTuple<MiddlewareTuple extends readonly any[], Acc extends {}> = MiddlewareTuple extends [infer Head, ...infer Tail] ? ExtractDispatchFromMiddlewareTuple<Tail, Acc & (Head extends Middleware<infer D> ? IsAny<D, {}, D> : {})> : Acc;\nexport type ExtractDispatchExtensions<M> = M extends Tuple<infer MiddlewareTuple> ? ExtractDispatchFromMiddlewareTuple<MiddlewareTuple, {}> : M extends ReadonlyArray<Middleware> ? ExtractDispatchFromMiddlewareTuple<[...M], {}> : never;\ntype ExtractStoreExtensionsFromEnhancerTuple<EnhancerTuple extends readonly any[], Acc extends {}> = EnhancerTuple extends [infer Head, ...infer Tail] ? ExtractStoreExtensionsFromEnhancerTuple<Tail, Acc & (Head extends StoreEnhancer<infer Ext> ? IsAny<Ext, {}, Ext> : {})> : Acc;\nexport type ExtractStoreExtensions<E> = E extends Tuple<infer EnhancerTuple> ? ExtractStoreExtensionsFromEnhancerTuple<EnhancerTuple, {}> : E extends ReadonlyArray<StoreEnhancer> ? UnionToIntersection<E[number] extends StoreEnhancer<infer Ext> ? Ext extends {} ? IsAny<Ext, {}, Ext> : {} : {}> : never;\ntype ExtractStateExtensionsFromEnhancerTuple<EnhancerTuple extends readonly any[], Acc extends {}> = EnhancerTuple extends [infer Head, ...infer Tail] ? ExtractStateExtensionsFromEnhancerTuple<Tail, Acc & (Head extends StoreEnhancer<any, infer StateExt> ? IsAny<StateExt, {}, StateExt> : {})> : Acc;\nexport type ExtractStateExtensions<E> = E extends Tuple<infer EnhancerTuple> ? ExtractStateExtensionsFromEnhancerTuple<EnhancerTuple, {}> : E extends ReadonlyArray<StoreEnhancer> ? UnionToIntersection<E[number] extends StoreEnhancer<any, infer StateExt> ? StateExt extends {} ? IsAny<StateExt, {}, StateExt> : {} : {}> : never;\n\n/**\n * Helper type. Passes T out again, but boxes it in a way that it cannot\n * \"widen\" the type by accident if it is a generic that should be inferred\n * from elsewhere.\n *\n * @internal\n */\nexport type NoInfer<T> = [T][T extends any ? 0 : never];\nexport type NonUndefined<T> = T extends undefined ? never : T;\nexport type WithRequiredProp<T, K extends keyof T> = Omit<T, K> & Required<Pick<T, K>>;\nexport type WithOptionalProp<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>;\nexport interface TypeGuard<T> {\n (value: any): value is T;\n}\nexport interface HasMatchFunction<T> {\n match: TypeGuard<T>;\n}\nexport const hasMatchFunction = <T,>(v: Matcher<T>): v is HasMatchFunction<T> => {\n return v && typeof (v as HasMatchFunction<T>).match === 'function';\n};\n\n/** @public */\nexport type Matcher<T> = HasMatchFunction<T> | TypeGuard<T>;\n\n/** @public */\nexport type ActionFromMatcher<M extends Matcher<any>> = M extends Matcher<infer T> ? T : never;\nexport type Id<T> = { [K in keyof T]: T[K] } & {};\nexport type Tail<T extends any[]> = T extends [any, ...infer Tail] ? Tail : never;\nexport type UnknownIfNonSpecific<T> = {} extends T ? unknown : T;\n\n/**\n * A Promise that will never reject.\n * @see https://github.com/reduxjs/redux-toolkit/issues/4101\n */\nexport type SafePromise<T> = Promise<T> & {\n __linterBrands: 'SafePromise';\n};\n\n/**\n * Properly wraps a Promise as a {@link SafePromise} with .catch(fallback).\n */\nexport function asSafePromise<Resolved, Rejected>(promise: Promise<Resolved>, fallback: (error: unknown) => Rejected) {\n return (promise.catch(fallback) as SafePromise<Resolved | Rejected>);\n}","import { formatProdErrorMessage as _formatProdErrorMessage } from \"@reduxjs/toolkit\";\nimport type { SerializedError, ThunkAction, UnknownAction } from '@reduxjs/toolkit';\nimport type { Dispatch } from 'redux';\nimport type { SafePromise } from '../../tsHelpers';\nimport { asSafePromise } from '../../tsHelpers';\nimport type { Api, ApiContext } from '../apiTypes';\nimport type { BaseQueryError, QueryReturnValue } from '../baseQueryTypes';\nimport type { InternalSerializeQueryArgs } from '../defaultSerializeQueryArgs';\nimport type { EndpointDefinitions, MutationDefinition, QueryArgFrom, QueryDefinition, ResultTypeFrom } from '../endpointDefinitions';\nimport { countObjectKeys, isNotNullish } from '../utils';\nimport type { SubscriptionOptions } from './apiState';\nimport type { QueryResultSelectorResult } from './buildSelectors';\nimport type { MutationThunk, QueryThunk, QueryThunkArg } from './buildThunks';\nimport type { ApiEndpointQuery } from './module';\nexport type BuildInitiateApiEndpointQuery<Definition extends QueryDefinition<any, any, any, any, any>> = {\n initiate: StartQueryActionCreator<Definition>;\n};\nexport type BuildInitiateApiEndpointMutation<Definition extends MutationDefinition<any, any, any, any, any>> = {\n initiate: StartMutationActionCreator<Definition>;\n};\nexport const forceQueryFnSymbol = Symbol('forceQueryFn');\nexport const isUpsertQuery = (arg: QueryThunkArg) => typeof arg[forceQueryFnSymbol] === 'function';\nexport type StartQueryActionCreatorOptions = {\n subscribe?: boolean;\n forceRefetch?: boolean | number;\n subscriptionOptions?: SubscriptionOptions;\n [forceQueryFnSymbol]?: () => QueryReturnValue;\n};\ntype StartQueryActionCreator<D extends QueryDefinition<any, any, any, any, any>> = (arg: QueryArgFrom<D>, options?: StartQueryActionCreatorOptions) => ThunkAction<QueryActionCreatorResult<D>, any, any, UnknownAction>;\nexport type QueryActionCreatorResult<D extends QueryDefinition<any, any, any, any>> = SafePromise<QueryResultSelectorResult<D>> & {\n arg: QueryArgFrom<D>;\n requestId: string;\n subscriptionOptions: SubscriptionOptions | undefined;\n abort(): void;\n unwrap(): Promise<ResultTypeFrom<D>>;\n unsubscribe(): void;\n refetch(): QueryActionCreatorResult<D>;\n updateSubscriptionOptions(options: SubscriptionOptions): void;\n queryCacheKey: string;\n};\ntype StartMutationActionCreator<D extends MutationDefinition<any, any, any, any>> = (arg: QueryArgFrom<D>, options?: {\n /**\n * If this mutation should be tracked in the store.\n * If you just want to manually trigger this mutation using `dispatch` and don't care about the\n * result, state & potential errors being held in store, you can set this to false.\n * (defaults to `true`)\n */\n track?: boolean;\n fixedCacheKey?: string;\n}) => ThunkAction<MutationActionCreatorResult<D>, any, any, UnknownAction>;\nexport type MutationActionCreatorResult<D extends MutationDefinition<any, any, any, any>> = SafePromise<{\n data: ResultTypeFrom<D>;\n error?: undefined;\n} | {\n data?: undefined;\n error: Exclude<BaseQueryError<D extends MutationDefinition<any, infer BaseQuery, any, any> ? BaseQuery : never>, undefined> | SerializedError;\n}> & {\n /** @internal */\n arg: {\n /**\n * The name of the given endpoint for the mutation\n */\n endpointName: string;\n /**\n * The original arguments supplied to the mutation call\n */\n originalArgs: QueryArgFrom<D>;\n /**\n * Whether the mutation is being tracked in the store.\n */\n track?: boolean;\n fixedCacheKey?: string;\n };\n /**\n * A unique string generated for the request sequence\n */\n requestId: string;\n\n /**\n * A method to cancel the mutation promise. Note that this is not intended to prevent the mutation\n * that was fired off from reaching the server, but only to assist in handling the response.\n *\n * Calling `abort()` prior to the promise resolving will force it to reach the error state with\n * the serialized error:\n * `{ name: 'AbortError', message: 'Aborted' }`\n *\n * @example\n * ```ts\n * const [updateUser] = useUpdateUserMutation();\n *\n * useEffect(() => {\n * const promise = updateUser(id);\n * promise\n * .unwrap()\n * .catch((err) => {\n * if (err.name === 'AbortError') return;\n * // else handle the unexpected error\n * })\n *\n * return () => {\n * promise.abort();\n * }\n * }, [id, updateUser])\n * ```\n */\n abort(): void;\n /**\n * Unwraps a mutation call to provide the raw response/error.\n *\n * @remarks\n * If you need to access the error or success payload immediately after a mutation, you can chain .unwrap().\n *\n * @example\n * ```ts\n * // codeblock-meta title=\"Using .unwrap\"\n * addPost({ id: 1, name: 'Example' })\n * .unwrap()\n * .then((payload) => console.log('fulfilled', payload))\n * .catch((error) => console.error('rejected', error));\n * ```\n *\n * @example\n * ```ts\n * // codeblock-meta title=\"Using .unwrap with async await\"\n * try {\n * const payload = await addPost({ id: 1, name: 'Example' }).unwrap();\n * console.log('fulfilled', payload)\n * } catch (error) {\n * console.error('rejected', error);\n * }\n * ```\n */\n unwrap(): Promise<ResultTypeFrom<D>>;\n /**\n * A method to manually unsubscribe from the mutation call, meaning it will be removed from cache after the usual caching grace period.\n The value returned by the hook will reset to `isUninitialized` afterwards.\n */\n reset(): void;\n};\nexport function buildInitiate({\n serializeQueryArgs,\n queryThunk,\n mutationThunk,\n api,\n context\n}: {\n serializeQueryArgs: InternalSerializeQueryArgs;\n queryThunk: QueryThunk;\n mutationThunk: MutationThunk;\n api: Api<any, EndpointDefinitions, any, any>;\n context: ApiContext<EndpointDefinitions>;\n}) {\n const runningQueries: Map<Dispatch, Record<string, QueryActionCreatorResult<any> | undefined>> = new Map();\n const runningMutations: Map<Dispatch, Record<string, MutationActionCreatorResult<any> | undefined>> = new Map();\n const {\n unsubscribeQueryResult,\n removeMutationResult,\n updateSubscriptionOptions\n } = api.internalActions;\n return {\n buildInitiateQuery,\n buildInitiateMutation,\n getRunningQueryThunk,\n getRunningMutationThunk,\n getRunningQueriesThunk,\n getRunningMutationsThunk\n };\n function getRunningQueryThunk(endpointName: string, queryArgs: any) {\n return (dispatch: Dispatch) => {\n const endpointDefinition = context.endpointDefinitions[endpointName];\n const queryCacheKey = serializeQueryArgs({\n queryArgs,\n endpointDefinition,\n endpointName\n });\n return (runningQueries.get(dispatch)?.[queryCacheKey] as QueryActionCreatorResult<never> | undefined);\n };\n }\n function getRunningMutationThunk(\n /**\n * this is only here to allow TS to infer the result type by input value\n * we could use it to validate the result, but it's probably not necessary\n */\n _endpointName: string, fixedCacheKeyOrRequestId: string) {\n return (dispatch: Dispatch) => {\n return (runningMutations.get(dispatch)?.[fixedCacheKeyOrRequestId] as MutationActionCreatorResult<never> | undefined);\n };\n }\n function getRunningQueriesThunk() {\n return (dispatch: Dispatch) => Object.values(runningQueries.get(dispatch) || {}).filter(isNotNullish);\n }\n function getRunningMutationsThunk() {\n return (dispatch: Dispatch) => Object.values(runningMutations.get(dispatch) || {}).filter(isNotNullish);\n }\n function middlewareWarning(dispatch: Dispatch) {\n if (process.env.NODE_ENV !== 'production') {\n if ((middlewareWarning as any).triggered) return;\n const returnedValue = dispatch(api.internalActions.internal_getRTKQSubscriptions());\n (middlewareWarning as any).triggered = true;\n\n // The RTKQ middleware should return the internal state object,\n // but it should _not_ be the action object.\n if (typeof returnedValue !== 'object' || typeof returnedValue?.type === 'string') {\n // Otherwise, must not have been added\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage(34) : `Warning: Middleware for RTK-Query API at reducerPath \"${api.reducerPath}\" has not been added to the store.\nYou must add the middleware for RTK-Query to function correctly!`);\n }\n }\n }\n function buildInitiateQuery(endpointName: string, endpointDefinition: QueryDefinition<any, any, any, any>) {\n const queryAction: StartQueryActionCreator<any> = (arg, {\n subscribe = true,\n forceRefetch,\n subscriptionOptions,\n [forceQueryFnSymbol]: forceQueryFn,\n ...rest\n } = {}) => (dispatch, getState) => {\n const queryCacheKey = serializeQueryArgs({\n queryArgs: arg,\n endpointDefinition,\n endpointName\n });\n const thunk = queryThunk({\n ...rest,\n type: 'query',\n subscribe,\n forceRefetch: forceRefetch,\n subscriptionOptions,\n endpointName,\n originalArgs: arg,\n queryCacheKey,\n [forceQueryFnSymbol]: forceQueryFn\n });\n const selector = (api.endpoints[endpointName] as ApiEndpointQuery<any, any>).select(arg);\n const thunkResult = dispatch(thunk);\n const stateAfter = selector(getState());\n middlewareWarning(dispatch);\n const {\n requestId,\n abort\n } = thunkResult;\n const skippedSynchronously = stateAfter.requestId !== requestId;\n const runningQuery = runningQueries.get(dispatch)?.[queryCacheKey];\n const selectFromState = () => selector(getState());\n const statePromise: QueryActionCreatorResult<any> = Object.assign(((forceQueryFn ?\n // a query has been forced (upsertQueryData)\n // -> we want to resolve it once data has been written with the data that will be written\n thunkResult.then(selectFromState) : skippedSynchronously && !runningQuery ?\n // a query has been skipped due to a condition and we do not have any currently running query\n // -> we want to resolve it immediately with the current data\n Promise.resolve(stateAfter) :\n // query just started or one is already in flight\n // -> wait for the running query, then resolve with data from after that\n Promise.all([runningQuery, thunkResult]).then(selectFromState)) as SafePromise<any>), {\n arg,\n requestId,\n subscriptionOptions,\n queryCacheKey,\n abort,\n async unwrap() {\n const result = await statePromise;\n if (result.isError) {\n throw result.error;\n }\n return result.data;\n },\n refetch: () => dispatch(queryAction(arg, {\n subscribe: false,\n forceRefetch: true\n })),\n unsubscribe() {\n if (subscribe) dispatch(unsubscribeQueryResult({\n queryCacheKey,\n requestId\n }));\n },\n updateSubscriptionOptions(options: SubscriptionOptions) {\n statePromise.subscriptionOptions = options;\n dispatch(updateSubscriptionOptions({\n endpointName,\n requestId,\n queryCacheKey,\n options\n }));\n }\n });\n if (!runningQuery && !skippedSynchronously && !forceQueryFn) {\n const running = runningQueries.get(dispatch) || {};\n running[queryCacheKey] = statePromise;\n runningQueries.set(dispatch, running);\n statePromise.then(() => {\n delete running[queryCacheKey];\n if (!countObjectKeys(running)) {\n runningQueries.delete(dispatch);\n }\n });\n }\n return statePromise;\n };\n return queryAction;\n }\n function buildInitiateMutation(endpointName: string): StartMutationActionCreator<any> {\n return (arg, {\n track = true,\n fixedCacheKey\n } = {}) => (dispatch, getState) => {\n const thunk = mutationThunk({\n type: 'mutation',\n endpointName,\n originalArgs: arg,\n track,\n fixedCacheKey\n });\n const thunkResult = dispatch(thunk);\n middlewareWarning(dispatch);\n const {\n requestId,\n abort,\n unwrap\n } = thunkResult;\n const returnValuePromise = asSafePromise(thunkResult.unwrap().then(data => ({\n data\n })), error => ({\n error\n }));\n const reset = () => {\n dispatch(removeMutationResult({\n requestId,\n fixedCacheKey\n }));\n };\n const ret = Object.assign(returnValuePromise, {\n arg: thunkResult.arg,\n requestId,\n abort,\n unwrap,\n reset\n });\n const running = runningMutations.get(dispatch) || {};\n runningMutations.set(dispatch, running);\n running[requestId] = ret;\n ret.then(() => {\n delete running[requestId];\n if (!countObjectKeys(running)) {\n runningMutations.delete(dispatch);\n }\n });\n if (fixedCacheKey) {\n running[fixedCacheKey] = ret;\n ret.then(() => {\n if (running[fixedCacheKey] === ret) {\n delete running[fixedCacheKey];\n if (!countObjectKeys(running)) {\n runningMutations.delete(dispatch);\n }\n }\n });\n }\n return ret;\n };\n }\n}","import type { AsyncThunk, AsyncThunkPayloadCreator, Draft, ThunkAction, ThunkDispatch, UnknownAction } from '@reduxjs/toolkit';\nimport type { Patch } from 'immer';\nimport { isDraftable, produceWithPatches } from 'immer';\nimport type { Api, ApiContext } from '../apiTypes';\nimport type { BaseQueryError, BaseQueryFn, QueryReturnValue } from '../baseQueryTypes';\nimport type { InternalSerializeQueryArgs } from '../defaultSerializeQueryArgs';\nimport type { AssertTagTypes, EndpointDefinition, EndpointDefinitions, MutationDefinition, QueryArgFrom, QueryDefinition, ResultTypeFrom } from '../endpointDefinitions';\nimport { calculateProvidedBy, isQueryDefinition } from '../endpointDefinitions';\nimport { HandledError } from '../HandledError';\nimport type { UnwrapPromise } from '../tsHelpers';\nimport type { QueryKeys, QuerySubstateIdentifier, RootState } from './apiState';\nimport { QueryStatus } from './apiState';\nimport type { QueryActionCreatorResult, StartQueryActionCreatorOptions } from './buildInitiate';\nimport { forceQueryFnSymbol, isUpsertQuery } from './buildInitiate';\nimport type { ApiEndpointQuery, PrefetchOptions } from './module';\nimport { createAsyncThunk, isAllOf, isFulfilled, isPending, isRejected, isRejectedWithValue, SHOULD_AUTOBATCH } from './rtkImports';\nexport type BuildThunksApiEndpointQuery<Definition extends QueryDefinition<any, any, any, any, any>> = Matchers<QueryThunk, Definition>;\nexport type BuildThunksApiEndpointMutation<Definition extends MutationDefinition<any, any, any, any, any>> = Matchers<MutationThunk, Definition>;\ntype EndpointThunk<Thunk extends QueryThunk | MutationThunk, Definition extends EndpointDefinition<any, any, any, any>> = Definition extends EndpointDefinition<infer QueryArg, infer BaseQueryFn, any, infer ResultType> ? Thunk extends AsyncThunk<unknown, infer ATArg, infer ATConfig> ? AsyncThunk<ResultType, ATArg & {\n originalArgs: QueryArg;\n}, ATConfig & {\n rejectValue: BaseQueryError<BaseQueryFn>;\n}> : never : never;\nexport type PendingAction<Thunk extends QueryThunk | MutationThunk, Definition extends EndpointDefinition<any, any, any, any>> = ReturnType<EndpointThunk<Thunk, Definition>['pending']>;\nexport type FulfilledAction<Thunk extends QueryThunk | MutationThunk, Definition extends EndpointDefinition<any, any, any, any>> = ReturnType<EndpointThunk<Thunk, Definition>['fulfilled']>;\nexport type RejectedAction<Thunk extends QueryThunk | MutationThunk, Definition extends EndpointDefinition<any, any, any, any>> = ReturnType<EndpointThunk<Thunk, Definition>['rejected']>;\nexport type Matcher<M> = (value: any) => value is M;\nexport interface Matchers<Thunk extends QueryThunk | MutationThunk, Definition extends EndpointDefinition<any, any, any, any>> {\n matchPending: Matcher<PendingAction<Thunk, Definition>>;\n matchFulfilled: Matcher<FulfilledAction<Thunk, Definition>>;\n matchRejected: Matcher<RejectedAction<Thunk, Definition>>;\n}\nexport type QueryThunkArg = QuerySubstateIdentifier & StartQueryActionCreatorOptions & {\n type: 'query';\n originalArgs: unknown;\n endpointName: string;\n};\ntype MutationThunkArg = {\n type: 'mutation';\n originalArgs: unknown;\n endpointName: string;\n track?: boolean;\n fixedCacheKey?: string;\n};\nexport type ThunkResult = unknown;\nexport type ThunkApiMetaConfig = {\n pendingMeta: {\n startedTimeStamp: number;\n [SHOULD_AUTOBATCH]: true;\n };\n fulfilledMeta: {\n fulfilledTimeStamp: number;\n baseQueryMeta: unknown;\n [SHOULD_AUTOBATCH]: true;\n };\n rejectedMeta: {\n baseQueryMeta: unknown;\n [SHOULD_AUTOBATCH]: true;\n };\n};\nexport type QueryThunk = AsyncThunk<ThunkResult, QueryThunkArg, ThunkApiMetaConfig>;\nexport type MutationThunk = AsyncThunk<ThunkResult, MutationThunkArg, ThunkApiMetaConfig>;\nfunction defaultTransformResponse(baseQueryReturnValue: unknown) {\n return baseQueryReturnValue;\n}\nexport type MaybeDrafted<T> = T | Draft<T>;\nexport type Recipe<T> = (data: MaybeDrafted<T>) => void | MaybeDrafted<T>;\nexport type UpsertRecipe<T> = (data: MaybeDrafted<T> | undefined) => void | MaybeDrafted<T>;\nexport type PatchQueryDataThunk<Definitions extends EndpointDefinitions, PartialState> = <EndpointName extends QueryKeys<Definitions>>(endpointName: EndpointName, args: QueryArgFrom<Definitions[EndpointName]>, patches: readonly Patch[], updateProvided?: boolean) => ThunkAction<void, PartialState, any, UnknownAction>;\nexport type UpdateQueryDataThunk<Definitions extends EndpointDefinitions, PartialState> = <EndpointName extends QueryKeys<Definitions>>(endpointName: EndpointName, args: QueryArgFrom<Definitions[EndpointName]>, updateRecipe: Recipe<ResultTypeFrom<Definitions[EndpointName]>>, updateProvided?: boolean) => ThunkAction<PatchCollection, PartialState, any, UnknownAction>;\nexport type UpsertQueryDataThunk<Definitions extends EndpointDefinitions, PartialState> = <EndpointName extends QueryKeys<Definitions>>(endpointName: EndpointName, args: QueryArgFrom<Definitions[EndpointName]>, value: ResultTypeFrom<Definitions[EndpointName]>) => ThunkAction<QueryActionCreatorResult<Definitions[EndpointName] extends QueryDefinition<any, any, any, any> ? Definitions[EndpointName] : never>, PartialState, any, UnknownAction>;\n\n/**\n * An object returned from dispatching a `api.util.updateQueryData` call.\n */\nexport type PatchCollection = {\n /**\n * An `immer` Patch describing the cache update.\n */\n patches: Patch[];\n /**\n * An `immer` Patch to revert the cache update.\n */\n inversePatches: Patch[];\n /**\n * A function that will undo the cache update.\n */\n undo: () => void;\n};\nexport function buildThunks<BaseQuery extends BaseQueryFn, ReducerPath extends string, Definitions extends EndpointDefinitions>({\n reducerPath,\n baseQuery,\n context: {\n endpointDefinitions\n },\n serializeQueryArgs,\n api,\n assertTagType\n}: {\n baseQuery: BaseQuery;\n reducerPath: ReducerPath;\n context: ApiContext<Definitions>;\n serializeQueryArgs: InternalSerializeQueryArgs;\n api: Api<BaseQuery, Definitions, ReducerPath, any>;\n assertTagType: AssertTagTypes;\n}) {\n type State = RootState<any, string, ReducerPath>;\n const patchQueryData: PatchQueryDataThunk<EndpointDefinitions, State> = (endpointName, args, patches, updateProvided) => (dispatch, getState) => {\n const endpointDefinition = endpointDefinitions[endpointName];\n const queryCacheKey = serializeQueryArgs({\n queryArgs: args,\n endpointDefinition,\n endpointName\n });\n dispatch(api.internalActions.queryResultPatched({\n queryCacheKey,\n patches\n }));\n if (!updateProvided) {\n return;\n }\n const newValue = api.endpoints[endpointName].select(args)((\n // Work around TS 4.1 mismatch\n getState() as RootState<any, any, any>));\n const providedTags = calculateProvidedBy(endpointDefinition.providesTags, newValue.data, undefined, args, {}, assertTagType);\n dispatch(api.internalActions.updateProvidedBy({\n queryCacheKey,\n providedTags\n }));\n };\n const updateQueryData: UpdateQueryDataThunk<EndpointDefinitions, State> = (endpointName, args, updateRecipe, updateProvided = true) => (dispatch, getState) => {\n const endpointDefinition = api.endpoints[endpointName];\n const currentState = endpointDefinition.select(args)((\n // Work around TS 4.1 mismatch\n getState() as RootState<any, any, any>));\n const ret: PatchCollection = {\n patches: [],\n inversePatches: [],\n undo: () => dispatch(api.util.patchQueryData(endpointName, args, ret.inversePatches, updateProvided))\n };\n if (currentState.status === QueryStatus.uninitialized) {\n return ret;\n }\n let newValue;\n if ('data' in currentState) {\n if (isDraftable(currentState.data)) {\n const [value, patches, inversePatches] = produceWithPatches(currentState.data, updateRecipe);\n ret.patches.push(...patches);\n ret.inversePatches.push(...inversePatches);\n newValue = value;\n } else {\n newValue = updateRecipe(currentState.data);\n ret.patches.push({\n op: 'replace',\n path: [],\n value: newValue\n });\n ret.inversePatches.push({\n op: 'replace',\n path: [],\n value: currentState.data\n });\n }\n }\n if (ret.patches.length === 0) {\n return ret;\n }\n dispatch(api.util.patchQueryData(endpointName, args, ret.patches, updateProvided));\n return ret;\n };\n const upsertQueryData: UpsertQueryDataThunk<Definitions, State> = (endpointName, args, value) => dispatch => {\n return dispatch((api.endpoints[endpointName] as ApiEndpointQuery<QueryDefinition<any, any, any, any, any>, Definitions>).initiate(args, {\n subscribe: false,\n forceRefetch: true,\n [forceQueryFnSymbol]: () => ({\n data: value\n })\n }));\n };\n const executeEndpoint: AsyncThunkPayloadCreator<ThunkResult, QueryThunkArg | MutationThunkArg, ThunkApiMetaConfig & {\n state: RootState<any, string, ReducerPath>;\n }> = async (arg, {\n signal,\n abort,\n rejectWithValue,\n fulfillWithValue,\n dispatch,\n getState,\n extra\n }) => {\n const endpointDefinition = endpointDefinitions[arg.endpointName];\n try {\n let transformResponse: (baseQueryReturnValue: any, meta: any, arg: any) => any = defaultTransformResponse;\n let result: QueryReturnValue;\n const baseQueryApi = {\n signal,\n abort,\n dispatch,\n getState,\n extra,\n endpoint: arg.endpointName,\n type: arg.type,\n forced: arg.type === 'query' ? isForcedQuery(arg, getState()) : undefined,\n queryCacheKey: arg.type === 'query' ? arg.queryCacheKey : undefined\n };\n const forceQueryFn = arg.type === 'query' ? arg[forceQueryFnSymbol] : undefined;\n if (forceQueryFn) {\n result = forceQueryFn();\n } else if (endpointDefinition.query) {\n result = await baseQuery(endpointDefinition.query(arg.originalArgs), baseQueryApi, (endpointDefinition.extraOptions as any));\n if (endpointDefinition.transformResponse) {\n transformResponse = endpointDefinition.transformResponse;\n }\n } else {\n result = await endpointDefinition.queryFn(arg.originalArgs, baseQueryApi, (endpointDefinition.extraOptions as any), arg => baseQuery(arg, baseQueryApi, (endpointDefinition.extraOptions as any)));\n }\n if (typeof process !== 'undefined' && process.env.NODE_ENV === 'development') {\n const what = endpointDefinition.query ? '`baseQuery`' : '`queryFn`';\n let err: undefined | string;\n if (!result) {\n err = `${what} did not return anything.`;\n } else if (typeof result !== 'object') {\n err = `${what} did not return an object.`;\n } else if (result.error && result.data) {\n err = `${what} returned an object containing both \\`error\\` and \\`result\\`.`;\n } else if (result.error === undefined && result.data === undefined) {\n err = `${what} returned an object containing neither a valid \\`error\\` and \\`result\\`. At least one of them should not be \\`undefined\\``;\n } else {\n for (const key of Object.keys(result)) {\n if (key !== 'error' && key !== 'data' && key !== 'meta') {\n err = `The object returned by ${what} has the unknown property ${key}.`;\n break;\n }\n }\n }\n if (err) {\n console.error(`Error encountered handling the endpoint ${arg.endpointName}.\n ${err}\n It needs to return an object with either the shape \\`{ data: <value> }\\` or \\`{ error: <value> }\\` that may contain an optional \\`meta\\` property.\n Object returned was:`, result);\n }\n }\n if (result.error) throw new HandledError(result.error, result.meta);\n return fulfillWithValue(await transformResponse(result.data, result.meta, arg.originalArgs), {\n fulfilledTimeStamp: Date.now(),\n baseQueryMeta: result.meta,\n [SHOULD_AUTOBATCH]: true\n });\n } catch (error) {\n let catchedError = error;\n if (catchedError instanceof HandledError) {\n let transformErrorResponse: (baseQueryReturnValue: any, meta: any, arg: any) => any = defaultTransformResponse;\n if (endpointDefinition.query && endpointDefinition.transformErrorResponse) {\n transformErrorResponse = endpointDefinition.transformErrorResponse;\n }\n try {\n return rejectWithValue(await transformErrorResponse(catchedError.value, catchedError.meta, arg.originalArgs), {\n baseQueryMeta: catchedError.meta,\n [SHOULD_AUTOBATCH]: true\n });\n } catch (e) {\n catchedError = e;\n }\n }\n if (typeof process !== 'undefined' && process.env.NODE_ENV !== 'production') {\n console.error(`An unhandled error occurred processing a request for the endpoint \"${arg.endpointName}\".\nIn the case of an unhandled error, no tags will be \"provided\" or \"invalidated\".`, catchedError);\n } else {\n console.error(catchedError);\n }\n throw catchedError;\n }\n };\n function isForcedQuery(arg: QueryThunkArg, state: RootState<any, string, ReducerPath>) {\n const requestState = state[reducerPath]?.queries?.[arg.queryCacheKey];\n const baseFetchOnMountOrArgChange = state[reducerPath]?.config.refetchOnMountOrArgChange;\n const fulfilledVal = requestState?.fulfilledTimeStamp;\n const refetchVal = arg.forceRefetch ?? (arg.subscribe && baseFetchOnMountOrArgChange);\n if (refetchVal) {\n // Return if it's true or compare the dates because it must be a number\n return refetchVal === true || (Number(new Date()) - Number(fulfilledVal)) / 1000 >= refetchVal;\n }\n return false;\n }\n const queryThunk = createAsyncThunk<ThunkResult, QueryThunkArg, ThunkApiMetaConfig & {\n state: RootState<any, string, ReducerPath>;\n }>(`${reducerPath}/executeQuery`, executeEndpoint, {\n getPendingMeta() {\n return {\n startedTimeStamp: Date.now(),\n [SHOULD_AUTOBATCH]: true\n };\n },\n condition(queryThunkArgs, {\n getState\n }) {\n const state = getState();\n const requestState = state[reducerPath]?.queries?.[queryThunkArgs.queryCacheKey];\n const fulfilledVal = requestState?.fulfilledTimeStamp;\n const currentArg = queryThunkArgs.originalArgs;\n const previousArg = requestState?.originalArgs;\n const endpointDefinition = endpointDefinitions[queryThunkArgs.endpointName];\n\n // Order of these checks matters.\n // In order for `upsertQueryData` to successfully run while an existing request is in flight,\n /// we have to check for that first, otherwise `queryThunk` will bail out and not run at all.\n if (isUpsertQuery(queryThunkArgs)) {\n return true;\n }\n\n // Don't retry a request that's currently in-flight\n if (requestState?.status === 'pending') {\n return false;\n }\n\n // if this is forced, continue\n if (isForcedQuery(queryThunkArgs, state)) {\n return true;\n }\n if (isQueryDefinition(endpointDefinition) && endpointDefinition?.forceRefetch?.({\n currentArg,\n previousArg,\n endpointState: requestState,\n state\n })) {\n return true;\n }\n\n // Pull from the cache unless we explicitly force refetch or qualify based on time\n if (fulfilledVal) {\n // Value is cached and we didn't specify to refresh, skip it.\n return false;\n }\n return true;\n },\n dispatchConditionRejection: true\n });\n const mutationThunk = createAsyncThunk<ThunkResult, MutationThunkArg, ThunkApiMetaConfig & {\n state: RootState<any, string, ReducerPath>;\n }>(`${reducerPath}/executeMutation`, executeEndpoint, {\n getPendingMeta() {\n return {\n startedTimeStamp: Date.now(),\n [SHOULD_AUTOBATCH]: true\n };\n }\n });\n const hasTheForce = (options: any): options is {\n force: boolean;\n } => 'force' in options;\n const hasMaxAge = (options: any): options is {\n ifOlderThan: false | number;\n } => 'ifOlderThan' in options;\n const prefetch = <EndpointName extends QueryKeys<Definitions>,>(endpointName: EndpointName, arg: any, options: PrefetchOptions): ThunkAction<void, any, any, UnknownAction> => (dispatch: ThunkDispatch<any, any, any>, getState: () => any) => {\n const force = hasTheForce(options) && options.force;\n const maxAge = hasMaxAge(options) && options.ifOlderThan;\n const queryAction = (force: boolean = true) => {\n const options = {\n forceRefetch: force,\n isPrefetch: true\n };\n return (api.endpoints[endpointName] as ApiEndpointQuery<any, any>).initiate(arg, options);\n };\n const latestStateValue = (api.endpoints[endpointName] as ApiEndpointQuery<any, any>).select(arg)(getState());\n if (force) {\n dispatch(queryAction());\n } else if (maxAge) {\n const lastFulfilledTs = latestStateValue?.fulfilledTimeStamp;\n if (!lastFulfilledTs) {\n dispatch(queryAction());\n return;\n }\n const shouldRetrigger = (Number(new Date()) - Number(new Date(lastFulfilledTs))) / 1000 >= maxAge;\n if (shouldRetrigger) {\n dispatch(queryAction());\n }\n } else {\n // If prefetching with no options, just let it try\n dispatch(queryAction(false));\n }\n };\n function matchesEndpoint(endpointName: string) {\n return (action: any): action is UnknownAction => action?.meta?.arg?.endpointName === endpointName;\n }\n function buildMatchThunkActions<Thunk extends AsyncThunk<any, QueryThunkArg, ThunkApiMetaConfig> | AsyncThunk<any, MutationThunkArg, ThunkApiMetaConfig>>(thunk: Thunk, endpointName: string) {\n return ({\n matchPending: isAllOf(isPending(thunk), matchesEndpoint(endpointName)),\n matchFulfilled: isAllOf(isFulfilled(thunk), matchesEndpoint(endpointName)),\n matchRejected: isAllOf(isRejected(thunk), matchesEndpoint(endpointName))\n } as Matchers<Thunk, any>);\n }\n return {\n queryThunk,\n mutationThunk,\n prefetch,\n updateQueryData,\n upsertQueryData,\n patchQueryData,\n buildMatchThunkActions\n };\n}\nexport function calculateProvidedByThunk(action: UnwrapPromise<ReturnType<ReturnType<QueryThunk>> | ReturnType<ReturnType<MutationThunk>>>, type: 'providesTags' | 'invalidatesTags', endpointDefinitions: EndpointDefinitions, assertTagType: AssertTagTypes) {\n return calculateProvidedBy(endpointDefinitions[action.meta.arg.endpointName][type], isFulfilled(action) ? action.payload : undefined, isRejectedWithValue(action) ? action.payload : undefined, action.meta.arg.originalArgs, 'baseQueryMeta' in action.meta ? action.meta.baseQueryMeta : undefined, assertTagType);\n}","import type { Action, PayloadAction, UnknownAction } from '@reduxjs/toolkit';\nimport { combineReducers, createAction, createSlice, isAnyOf, isFulfilled, isRejectedWithValue, createNextState, prepareAutoBatched } from './rtkImports';\nimport type { QuerySubstateIdentifier, QuerySubState, MutationSubstateIdentifier, MutationSubState, MutationState, QueryState, InvalidationState, Subscribers, QueryCacheKey, SubscriptionState, ConfigState } from './apiState';\nimport { QueryStatus } from './apiState';\nimport type { MutationThunk, QueryThunk, RejectedAction } from './buildThunks';\nimport { calculateProvidedByThunk } from './buildThunks';\nimport type { AssertTagTypes, EndpointDefinitions, FullTagDescription, QueryDefinition } from '../endpointDefinitions';\nimport type { Patch } from 'immer';\nimport { isDraft } from 'immer';\nimport { applyPatches, original } from 'immer';\nimport { onFocus, onFocusLost, onOffline, onOnline } from './setupListeners';\nimport { isDocumentVisible, isOnline, copyWithStructuralSharing } from '../utils';\nimport type { ApiContext } from '../apiTypes';\nimport { isUpsertQuery } from './buildInitiate';\nfunction updateQuerySubstateIfExists(state: QueryState<any>, queryCacheKey: QueryCacheKey, update: (substate: QuerySubState<any>) => void) {\n const substate = state[queryCacheKey];\n if (substate) {\n update(substate);\n }\n}\nexport function getMutationCacheKey(id: MutationSubstateIdentifier | {\n requestId: string;\n arg: {\n fixedCacheKey?: string | undefined;\n };\n}): string;\nexport function getMutationCacheKey(id: {\n fixedCacheKey?: string;\n requestId?: string;\n}): string | undefined;\nexport function getMutationCacheKey(id: {\n fixedCacheKey?: string;\n requestId?: string;\n} | MutationSubstateIdentifier | {\n requestId: string;\n arg: {\n fixedCacheKey?: string | undefined;\n };\n}): string | undefined {\n return ('arg' in id ? id.arg.fixedCacheKey : id.fixedCacheKey) ?? id.requestId;\n}\nfunction updateMutationSubstateIfExists(state: MutationState<any>, id: MutationSubstateIdentifier | {\n requestId: string;\n arg: {\n fixedCacheKey?: string | undefined;\n };\n}, update: (substate: MutationSubState<any>) => void) {\n const substate = state[getMutationCacheKey(id)];\n if (substate) {\n update(substate);\n }\n}\nconst initialState = ({} as any);\nexport function buildSlice({\n reducerPath,\n queryThunk,\n mutationThunk,\n context: {\n endpointDefinitions: definitions,\n apiUid,\n extractRehydrationInfo,\n hasRehydrationInfo\n },\n assertTagType,\n config\n}: {\n reducerPath: string;\n queryThunk: QueryThunk;\n mutationThunk: MutationThunk;\n context: ApiContext<EndpointDefinitions>;\n assertTagType: AssertTagTypes;\n config: Omit<ConfigState<string>, 'online' | 'focused' | 'middlewareRegistered'>;\n}) {\n const resetApiState = createAction(`${reducerPath}/resetApiState`);\n const querySlice = createSlice({\n name: `${reducerPath}/queries`,\n initialState: (initialState as QueryState<any>),\n reducers: {\n removeQueryResult: {\n reducer(draft, {\n payload: {\n queryCacheKey\n }\n }: PayloadAction<QuerySubstateIdentifier>) {\n delete draft[queryCacheKey];\n },\n prepare: prepareAutoBatched<QuerySubstateIdentifier>()\n },\n queryResultPatched: {\n reducer(draft, {\n payload: {\n queryCacheKey,\n patches\n }\n }: PayloadAction<QuerySubstateIdentifier & {\n patches: readonly Patch[];\n }>) {\n updateQuerySubstateIfExists(draft, queryCacheKey, substate => {\n substate.data = applyPatches((substate.data as any), patches.concat());\n });\n },\n prepare: prepareAutoBatched<QuerySubstateIdentifier & {\n patches: readonly Patch[];\n }>()\n }\n },\n extraReducers(builder) {\n builder.addCase(queryThunk.pending, (draft, {\n meta,\n meta: {\n arg\n }\n }) => {\n const upserting = isUpsertQuery(arg);\n draft[arg.queryCacheKey] ??= {\n status: QueryStatus.uninitialized,\n endpointName: arg.endpointName\n };\n updateQuerySubstateIfExists(draft, arg.queryCacheKey, substate => {\n substate.status = QueryStatus.pending;\n substate.requestId = upserting && substate.requestId ?\n // for `upsertQuery` **updates**, keep the current `requestId`\n substate.requestId :\n // for normal queries or `upsertQuery` **inserts** always update the `requestId`\n meta.requestId;\n if (arg.originalArgs !== undefined) {\n substate.originalArgs = arg.originalArgs;\n }\n substate.startedTimeStamp = meta.startedTimeStamp;\n });\n }).addCase(queryThunk.fulfilled, (draft, {\n meta,\n payload\n }) => {\n updateQuerySubstateIfExists(draft, meta.arg.queryCacheKey, substate => {\n if (substate.requestId !== meta.requestId && !isUpsertQuery(meta.arg)) return;\n const {\n merge\n } = (definitions[meta.arg.endpointName] as QueryDefinition<any, any, any, any>);\n substate.status = QueryStatus.fulfilled;\n if (merge) {\n if (substate.data !== undefined) {\n const {\n fulfilledTimeStamp,\n arg,\n baseQueryMeta,\n requestId\n } = meta;\n // There's existing cache data. Let the user merge it in themselves.\n // We're already inside an Immer-powered reducer, and the user could just mutate `substate.data`\n // themselves inside of `merge()`. But, they might also want to return a new value.\n // Try to let Immer figure that part out, save the result, and assign it to `substate.data`.\n let newData = createNextState(substate.data, draftSubstateData => {\n // As usual with Immer, you can mutate _or_ return inside here, but not both\n return merge(draftSubstateData, payload, {\n arg: arg.originalArgs,\n baseQueryMeta,\n fulfilledTimeStamp,\n requestId\n });\n });\n substate.data = newData;\n } else {\n // Presumably a fresh request. Just cache the response data.\n substate.data = payload;\n }\n } else {\n // Assign or safely update the cache data.\n substate.data = definitions[meta.arg.endpointName].structuralSharing ?? true ? copyWithStructuralSharing(isDraft(substate.data) ? original(substate.data) : substate.data, payload) : payload;\n }\n delete substate.error;\n substate.fulfilledTimeStamp = meta.fulfilledTimeStamp;\n });\n }).addCase(queryThunk.rejected, (draft, {\n meta: {\n condition,\n arg,\n requestId\n },\n error,\n payload\n }) => {\n updateQuerySubstateIfExists(draft, arg.queryCacheKey, substate => {\n if (condition) {\n // request was aborted due to condition (another query already running)\n } else {\n // request failed\n if (substate.requestId !== requestId) return;\n substate.status = QueryStatus.rejected;\n substate.error = ((payload ?? error) as any);\n }\n });\n }).addMatcher(hasRehydrationInfo, (draft, action) => {\n const {\n queries\n } = extractRehydrationInfo(action)!;\n for (const [key, entry] of Object.entries(queries)) {\n if (\n // do not rehydrate entries that were currently in flight.\n entry?.status === QueryStatus.fulfilled || entry?.status === QueryStatus.rejected) {\n draft[key] = entry;\n }\n }\n });\n }\n });\n const mutationSlice = createSlice({\n name: `${reducerPath}/mutations`,\n initialState: (initialState as MutationState<any>),\n reducers: {\n removeMutationResult: {\n reducer(draft, {\n payload\n }: PayloadAction<MutationSubstateIdentifier>) {\n const cacheKey = getMutationCacheKey(payload);\n if (cacheKey in draft) {\n delete draft[cacheKey];\n }\n },\n prepare: prepareAutoBatched<MutationSubstateIdentifier>()\n }\n },\n extraReducers(builder) {\n builder.addCase(mutationThunk.pending, (draft, {\n meta,\n meta: {\n requestId,\n arg,\n startedTimeStamp\n }\n }) => {\n if (!arg.track) return;\n draft[getMutationCacheKey(meta)] = {\n requestId,\n status: QueryStatus.pending,\n endpointName: arg.endpointName,\n startedTimeStamp\n };\n }).addCase(mutationThunk.fulfilled, (draft, {\n payload,\n meta\n }) => {\n if (!meta.arg.track) return;\n updateMutationSubstateIfExists(draft, meta, substate => {\n if (substate.requestId !== meta.requestId) return;\n substate.status = QueryStatus.fulfilled;\n substate.data = payload;\n substate.fulfilledTimeStamp = meta.fulfilledTimeStamp;\n });\n }).addCase(mutationThunk.rejected, (draft, {\n payload,\n error,\n meta\n }) => {\n if (!meta.arg.track) return;\n updateMutationSubstateIfExists(draft, meta, substate => {\n if (substate.requestId !== meta.requestId) return;\n substate.status = QueryStatus.rejected;\n substate.error = ((payload ?? error) as any);\n });\n }).addMatcher(hasRehydrationInfo, (draft, action) => {\n const {\n mutations\n } = extractRehydrationInfo(action)!;\n for (const [key, entry] of Object.entries(mutations)) {\n if (\n // do not rehydrate entries that were currently in flight.\n (entry?.status === QueryStatus.fulfilled || entry?.status === QueryStatus.rejected) &&\n // only rehydrate endpoints that were persisted using a `fixedCacheKey`\n key !== entry?.requestId) {\n draft[key] = entry;\n }\n }\n });\n }\n });\n const invalidationSlice = createSlice({\n name: `${reducerPath}/invalidation`,\n initialState: (initialState as InvalidationState<string>),\n reducers: {\n updateProvidedBy: {\n reducer(draft, action: PayloadAction<{\n queryCacheKey: QueryCacheKey;\n providedTags: readonly FullTagDescription<string>[];\n }>) {\n const {\n queryCacheKey,\n providedTags\n } = action.payload;\n for (const tagTypeSubscriptions of Object.values(draft)) {\n for (const idSubscriptions of Object.values(tagTypeSubscriptions)) {\n const foundAt = idSubscriptions.indexOf(queryCacheKey);\n if (foundAt !== -1) {\n idSubscriptions.splice(foundAt, 1);\n }\n }\n }\n for (const {\n type,\n id\n } of providedTags) {\n const subscribedQueries = (draft[type] ??= {})[id || '__internal_without_id'] ??= [];\n const alreadySubscribed = subscribedQueries.includes(queryCacheKey);\n if (!alreadySubscribed) {\n subscribedQueries.push(queryCacheKey);\n }\n }\n },\n prepare: prepareAutoBatched<{\n queryCacheKey: QueryCacheKey;\n providedTags: readonly FullTagDescription<string>[];\n }>()\n }\n },\n extraReducers(builder) {\n builder.addCase(querySlice.actions.removeQueryResult, (draft, {\n payload: {\n queryCacheKey\n }\n }) => {\n for (const tagTypeSubscriptions of Object.values(draft)) {\n for (const idSubscriptions of Object.values(tagTypeSubscriptions)) {\n const foundAt = idSubscriptions.indexOf(queryCacheKey);\n if (foundAt !== -1) {\n idSubscriptions.splice(foundAt, 1);\n }\n }\n }\n }).addMatcher(hasRehydrationInfo, (draft, action) => {\n const {\n provided\n } = extractRehydrationInfo(action)!;\n for (const [type, incomingTags] of Object.entries(provided)) {\n for (const [id, cacheKeys] of Object.entries(incomingTags)) {\n const subscribedQueries = (draft[type] ??= {})[id || '__internal_without_id'] ??= [];\n for (const queryCacheKey of cacheKeys) {\n const alreadySubscribed = subscribedQueries.includes(queryCacheKey);\n if (!alreadySubscribed) {\n subscribedQueries.push(queryCacheKey);\n }\n }\n }\n }\n }).addMatcher(isAnyOf(isFulfilled(queryThunk), isRejectedWithValue(queryThunk)), (draft, action) => {\n const providedTags = calculateProvidedByThunk(action, 'providesTags', definitions, assertTagType);\n const {\n queryCacheKey\n } = action.meta.arg;\n invalidationSlice.caseReducers.updateProvidedBy(draft, invalidationSlice.actions.updateProvidedBy({\n queryCacheKey,\n providedTags\n }));\n });\n }\n });\n\n // Dummy slice to generate actions\n const subscriptionSlice = createSlice({\n name: `${reducerPath}/subscriptions`,\n initialState: (initialState as SubscriptionState),\n reducers: {\n updateSubscriptionOptions(d, a: PayloadAction<{\n endpointName: string;\n requestId: string;\n options: Subscribers[number];\n } & QuerySubstateIdentifier>) {\n // Dummy\n },\n unsubscribeQueryResult(d, a: PayloadAction<{\n requestId: string;\n } & QuerySubstateIdentifier>) {\n // Dummy\n },\n internal_getRTKQSubscriptions() {}\n }\n });\n const internalSubscriptionsSlice = createSlice({\n name: `${reducerPath}/internalSubscriptions`,\n initialState: (initialState as SubscriptionState),\n reducers: {\n subscriptionsUpdated: {\n reducer(state, action: PayloadAction<Patch[]>) {\n return applyPatches(state, action.payload);\n },\n prepare: prepareAutoBatched<Patch[]>()\n }\n }\n });\n const configSlice = createSlice({\n name: `${reducerPath}/config`,\n initialState: ({\n online: isOnline(),\n focused: isDocumentVisible(),\n middlewareRegistered: false,\n ...config\n } as ConfigState<string>),\n reducers: {\n middlewareRegistered(state, {\n payload\n }: PayloadAction<string>) {\n state.middlewareRegistered = state.middlewareRegistered === 'conflict' || apiUid !== payload ? 'conflict' : true;\n }\n },\n extraReducers: builder => {\n builder.addCase(onOnline, state => {\n state.online = true;\n }).addCase(onOffline, state => {\n state.online = false;\n }).addCase(onFocus, state => {\n state.focused = true;\n }).addCase(onFocusLost, state => {\n state.focused = false;\n })\n // update the state to be a new object to be picked up as a \"state change\"\n // by redux-persist's `autoMergeLevel2`\n .addMatcher(hasRehydrationInfo, draft => ({\n ...draft\n }));\n }\n });\n const combinedReducer = combineReducers({\n queries: querySlice.reducer,\n mutations: mutationSlice.reducer,\n provided: invalidationSlice.reducer,\n subscriptions: internalSubscriptionsSlice.reducer,\n config: configSlice.reducer\n });\n const reducer: typeof combinedReducer = (state, action) => combinedReducer(resetApiState.match(action) ? undefined : state, action);\n const actions = {\n ...configSlice.actions,\n ...querySlice.actions,\n ...subscriptionSlice.actions,\n ...internalSubscriptionsSlice.actions,\n ...mutationSlice.actions,\n ...invalidationSlice.actions,\n resetApiState\n };\n return {\n reducer,\n actions\n };\n}\nexport type SliceActions = ReturnType<typeof buildSlice>['actions'];","/**\n * Assumes a browser is online if `undefined`, otherwise makes a best effort\n * @link https://developer.mozilla.org/en-US/docs/Web/API/NavigatorOnLine/onLine\n */\nexport function isOnline() {\n // We set the default config value in the store, so we'd need to check for this in a SSR env\n return typeof navigator === 'undefined' ? true : navigator.onLine === undefined ? true : navigator.onLine;\n}","/**\r\n * Assumes true for a non-browser env, otherwise makes a best effort\r\n * @link https://developer.mozilla.org/en-US/docs/Web/API/Document/visibilityState\r\n */\nexport function isDocumentVisible(): boolean {\n // `document` may not exist in non-browser envs (like RN)\n if (typeof document === 'undefined') {\n return true;\n }\n // Match true for visible, prerender, undefined\n return document.visibilityState !== 'hidden';\n}","import type { InternalSerializeQueryArgs } from '../defaultSerializeQueryArgs';\nimport type { EndpointDefinitions, MutationDefinition, QueryArgFrom, QueryDefinition, ReducerPathFrom, TagDescription, TagTypesFrom } from '../endpointDefinitions';\nimport { expandTagDescription } from '../endpointDefinitions';\nimport { flatten } from '../utils';\nimport type { MutationSubState, QueryCacheKey, QueryKeys, QueryState, QuerySubState, RequestStatusFlags, RootState as _RootState } from './apiState';\nimport { QueryStatus, getRequestStatusFlags } from './apiState';\nimport { getMutationCacheKey } from './buildSlice';\nimport type { createSelector as _createSelector } from './rtkImports';\nimport { createNextState } from './rtkImports';\nexport type SkipToken = typeof skipToken;\n/**\n * Can be passed into `useQuery`, `useQueryState` or `useQuerySubscription`\n * instead of the query argument to get the same effect as if setting\n * `skip: true` in the query options.\n *\n * Useful for scenarios where a query should be skipped when `arg` is `undefined`\n * and TypeScript complains about it because `arg` is not allowed to be passed\n * in as `undefined`, such as\n *\n * ```ts\n * // codeblock-meta title=\"will error if the query argument is not allowed to be undefined\" no-transpile\n * useSomeQuery(arg, { skip: !!arg })\n * ```\n *\n * ```ts\n * // codeblock-meta title=\"using skipToken instead\" no-transpile\n * useSomeQuery(arg ?? skipToken)\n * ```\n *\n * If passed directly into a query or mutation selector, that selector will always\n * return an uninitialized state.\n */\nexport const skipToken = /* @__PURE__ */Symbol.for('RTKQ/skipToken');\nexport type BuildSelectorsApiEndpointQuery<Definition extends QueryDefinition<any, any, any, any, any>, Definitions extends EndpointDefinitions> = {\n select: QueryResultSelectorFactory<Definition, _RootState<Definitions, TagTypesFrom<Definition>, ReducerPathFrom<Definition>>>;\n};\nexport type BuildSelectorsApiEndpointMutation<Definition extends MutationDefinition<any, any, any, any, any>, Definitions extends EndpointDefinitions> = {\n select: MutationResultSelectorFactory<Definition, _RootState<Definitions, TagTypesFrom<Definition>, ReducerPathFrom<Definition>>>;\n};\ntype QueryResultSelectorFactory<Definition extends QueryDefinition<any, any, any, any>, RootState> = (queryArg: QueryArgFrom<Definition> | SkipToken) => (state: RootState) => QueryResultSelectorResult<Definition>;\nexport type QueryResultSelectorResult<Definition extends QueryDefinition<any, any, any, any>> = QuerySubState<Definition> & RequestStatusFlags;\ntype MutationResultSelectorFactory<Definition extends MutationDefinition<any, any, any, any>, RootState> = (requestId: string | {\n requestId: string | undefined;\n fixedCacheKey: string | undefined;\n} | SkipToken) => (state: RootState) => MutationResultSelectorResult<Definition>;\nexport type MutationResultSelectorResult<Definition extends MutationDefinition<any, any, any, any>> = MutationSubState<Definition> & RequestStatusFlags;\nconst initialSubState: QuerySubState<any> = {\n status: (QueryStatus.uninitialized as const)\n};\n\n// abuse immer to freeze default states\nconst defaultQuerySubState = /* @__PURE__ */createNextState(initialSubState, () => {});\nconst defaultMutationSubState = /* @__PURE__ */createNextState((initialSubState as MutationSubState<any>), () => {});\nexport function buildSelectors<Definitions extends EndpointDefinitions, ReducerPath extends string>({\n serializeQueryArgs,\n reducerPath,\n createSelector\n}: {\n serializeQueryArgs: InternalSerializeQueryArgs;\n reducerPath: ReducerPath;\n createSelector: typeof _createSelector;\n}) {\n type RootState = _RootState<Definitions, string, string>;\n const selectSkippedQuery = (state: RootState) => defaultQuerySubState;\n const selectSkippedMutation = (state: RootState) => defaultMutationSubState;\n return {\n buildQuerySelector,\n buildMutationSelector,\n selectInvalidatedBy,\n selectCachedArgsForQuery\n };\n function withRequestFlags<T extends {\n status: QueryStatus;\n }>(substate: T): T & RequestStatusFlags {\n return {\n ...substate,\n ...getRequestStatusFlags(substate.status)\n };\n }\n function selectInternalState(rootState: RootState) {\n const state = rootState[reducerPath];\n if (process.env.NODE_ENV !== 'production') {\n if (!state) {\n if ((selectInternalState as any).triggered) return state;\n (selectInternalState as any).triggered = true;\n console.error(`Error: No data found at \\`state.${reducerPath}\\`. Did you forget to add the reducer to the store?`);\n }\n }\n return state;\n }\n function buildQuerySelector(endpointName: string, endpointDefinition: QueryDefinition<any, any, any, any>) {\n return (((queryArgs: any) => {\n const serializedArgs = serializeQueryArgs({\n queryArgs,\n endpointDefinition,\n endpointName\n });\n const selectQuerySubstate = (state: RootState) => selectInternalState(state)?.queries?.[serializedArgs] ?? defaultQuerySubState;\n const finalSelectQuerySubState = queryArgs === skipToken ? selectSkippedQuery : selectQuerySubstate;\n return createSelector(finalSelectQuerySubState, withRequestFlags);\n }) as QueryResultSelectorFactory<any, RootState>);\n }\n function buildMutationSelector() {\n return ((id => {\n let mutationId: string | typeof skipToken;\n if (typeof id === 'object') {\n mutationId = getMutationCacheKey(id) ?? skipToken;\n } else {\n mutationId = id;\n }\n const selectMutationSubstate = (state: RootState) => selectInternalState(state)?.mutations?.[(mutationId as string)] ?? defaultMutationSubState;\n const finalSelectMutationSubstate = mutationId === skipToken ? selectSkippedMutation : selectMutationSubstate;\n return createSelector(finalSelectMutationSubstate, withRequestFlags);\n }) as MutationResultSelectorFactory<any, RootState>);\n }\n function selectInvalidatedBy(state: RootState, tags: ReadonlyArray<TagDescription<string>>): Array<{\n endpointName: string;\n originalArgs: any;\n queryCacheKey: QueryCacheKey;\n }> {\n const apiState = state[reducerPath];\n const toInvalidate = new Set<QueryCacheKey>();\n for (const tag of tags.map(expandTagDescription)) {\n const provided = apiState.provided[tag.type];\n if (!provided) {\n continue;\n }\n let invalidateSubscriptions = (tag.id !== undefined ?\n // id given: invalidate all queries that provide this type & id\n provided[tag.id] :\n // no id: invalidate all queries that provide this type\n flatten(Object.values(provided))) ?? [];\n for (const invalidate of invalidateSubscriptions) {\n toInvalidate.add(invalidate);\n }\n }\n return flatten(Array.from(toInvalidate.values()).map(queryCacheKey => {\n const querySubState = apiState.queries[queryCacheKey];\n return querySubState ? [{\n queryCacheKey,\n endpointName: querySubState.endpointName!,\n originalArgs: querySubState.originalArgs\n }] : [];\n }));\n }\n function selectCachedArgsForQuery<QueryName extends QueryKeys<Definitions>>(state: RootState, queryName: QueryName): Array<QueryArgFrom<Definitions[QueryName]>> {\n return Object.values((state[reducerPath].queries as QueryState<any>)).filter((entry): entry is Exclude<QuerySubState<Definitions[QueryName]>, {\n status: QueryStatus.uninitialized;\n }> => entry?.endpointName === queryName && entry.status !== QueryStatus.uninitialized).map(entry => entry.originalArgs);\n }\n}","import type { QueryCacheKey } from './core/apiState';\nimport type { EndpointDefinition } from './endpointDefinitions';\nimport { isPlainObject } from './core/rtkImports';\nconst cache: WeakMap<any, string> | undefined = WeakMap ? new WeakMap() : undefined;\nexport const defaultSerializeQueryArgs: SerializeQueryArgs<any> = ({\n endpointName,\n queryArgs\n}) => {\n let serialized = '';\n const cached = cache?.get(queryArgs);\n if (typeof cached === 'string') {\n serialized = cached;\n } else {\n const stringified = JSON.stringify(queryArgs, (key, value) => {\n // Handle bigints\n value = typeof value === 'bigint' ? {\n $bigint: value.toString()\n } : value;\n // Sort the object keys before stringifying, to prevent useQuery({ a: 1, b: 2 }) having a different cache key than useQuery({ b: 2, a: 1 })\n value = isPlainObject(value) ? Object.keys(value).sort().reduce<any>((acc, key) => {\n acc[key] = (value as any)[key];\n return acc;\n }, {}) : value;\n return value;\n });\n if (isPlainObject(queryArgs)) {\n cache?.set(queryArgs, stringified);\n }\n serialized = stringified;\n }\n return `${endpointName}(${serialized})`;\n};\nexport type SerializeQueryArgs<QueryArgs, ReturnType = string> = (_: {\n queryArgs: QueryArgs;\n endpointDefinition: EndpointDefinition<any, any, any, any>;\n endpointName: string;\n}) => ReturnType;\nexport type InternalSerializeQueryArgs = (_: {\n queryArgs: any;\n endpointDefinition: EndpointDefinition<any, any, any, any>;\n endpointName: string;\n}) => QueryCacheKey;","import { formatProdErrorMessage as _formatProdErrorMessage } from \"@reduxjs/toolkit\";\nimport type { Api, ApiContext, Module, ModuleName } from './apiTypes';\nimport type { CombinedState } from './core/apiState';\nimport type { BaseQueryArg, BaseQueryFn } from './baseQueryTypes';\nimport type { SerializeQueryArgs } from './defaultSerializeQueryArgs';\nimport { defaultSerializeQueryArgs } from './defaultSerializeQueryArgs';\nimport type { EndpointBuilder, EndpointDefinitions } from './endpointDefinitions';\nimport { DefinitionType, isQueryDefinition } from './endpointDefinitions';\nimport { nanoid } from './core/rtkImports';\nimport type { UnknownAction } from '@reduxjs/toolkit';\nimport type { NoInfer } from './tsHelpers';\nimport { weakMapMemoize } from 'reselect';\nexport interface CreateApiOptions<BaseQuery extends BaseQueryFn, Definitions extends EndpointDefinitions, ReducerPath extends string = 'api', TagTypes extends string = never> {\n /**\n * The base query used by each endpoint if no `queryFn` option is specified. RTK Query exports a utility called [fetchBaseQuery](./fetchBaseQuery) as a lightweight wrapper around `fetch` for common use-cases. See [Customizing Queries](../../rtk-query/usage/customizing-queries) if `fetchBaseQuery` does not handle your requirements.\n *\n * @example\n *\n * ```ts\n * import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query'\n *\n * const api = createApi({\n * // highlight-start\n * baseQuery: fetchBaseQuery({ baseUrl: '/' }),\n * // highlight-end\n * endpoints: (build) => ({\n * // ...endpoints\n * }),\n * })\n * ```\n */\n baseQuery: BaseQuery;\n /**\n * An array of string tag type names. Specifying tag types is optional, but you should define them so that they can be used for caching and invalidation. When defining a tag type, you will be able to [provide](../../rtk-query/usage/automated-refetching#providing-tags) them with `providesTags` and [invalidate](../../rtk-query/usage/automated-refetching#invalidating-tags) them with `invalidatesTags` when configuring [endpoints](#endpoints).\n *\n * @example\n *\n * ```ts\n * import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query'\n *\n * const api = createApi({\n * baseQuery: fetchBaseQuery({ baseUrl: '/' }),\n * // highlight-start\n * tagTypes: ['Post', 'User'],\n * // highlight-end\n * endpoints: (build) => ({\n * // ...endpoints\n * }),\n * })\n * ```\n */\n tagTypes?: readonly TagTypes[];\n /**\n * The `reducerPath` is a _unique_ key that your service will be mounted to in your store. If you call `createApi` more than once in your application, you will need to provide a unique value each time. Defaults to `'api'`.\n *\n * @example\n *\n * ```ts\n * // codeblock-meta title=\"apis.js\"\n * import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query';\n *\n * const apiOne = createApi({\n * // highlight-start\n * reducerPath: 'apiOne',\n * // highlight-end\n * baseQuery: fetchBaseQuery({ baseUrl: '/' }),\n * endpoints: (builder) => ({\n * // ...endpoints\n * }),\n * });\n *\n * const apiTwo = createApi({\n * // highlight-start\n * reducerPath: 'apiTwo',\n * // highlight-end\n * baseQuery: fetchBaseQuery({ baseUrl: '/' }),\n * endpoints: (builder) => ({\n * // ...endpoints\n * }),\n * });\n * ```\n */\n reducerPath?: ReducerPath;\n /**\n * Accepts a custom function if you have a need to change the creation of cache keys for any reason.\n */\n serializeQueryArgs?: SerializeQueryArgs<BaseQueryArg<BaseQuery>>;\n /**\n * Endpoints are just a set of operations that you want to perform against your server. You define them as an object using the builder syntax. There are two basic endpoint types: [`query`](../../rtk-query/usage/queries) and [`mutation`](../../rtk-query/usage/mutations).\n */\n endpoints(build: EndpointBuilder<BaseQuery, TagTypes, ReducerPath>): Definitions;\n /**\n * Defaults to `60` _(this value is in seconds)_. This is how long RTK Query will keep your data cached for **after** the last component unsubscribes. For example, if you query an endpoint, then unmount the component, then mount another component that makes the same request within the given time frame, the most recent value will be served from the cache.\n *\n * ```ts\n * // codeblock-meta title=\"keepUnusedDataFor example\"\n *\n * import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react'\n * interface Post {\n * id: number\n * name: string\n * }\n * type PostsResponse = Post[]\n *\n * const api = createApi({\n * baseQuery: fetchBaseQuery({ baseUrl: '/' }),\n * endpoints: (build) => ({\n * getPosts: build.query<PostsResponse, void>({\n * query: () => 'posts',\n * // highlight-start\n * keepUnusedDataFor: 5\n * // highlight-end\n * })\n * })\n * })\n * ```\n */\n keepUnusedDataFor?: number;\n /**\n * Defaults to `false`. This setting allows you to control whether if a cached result is already available RTK Query will only serve a cached result, or if it should `refetch` when set to `true` or if an adequate amount of time has passed since the last successful query result.\n * - `false` - Will not cause a query to be performed _unless_ it does not exist yet.\n * - `true` - Will always refetch when a new subscriber to a query is added. Behaves the same as calling the `refetch` callback or passing `forceRefetch: true` in the action creator.\n * - `number` - **Value is in seconds**. If a number is provided and there is an existing query in the cache, it will compare the current time vs the last fulfilled timestamp, and only refetch if enough time has elapsed.\n *\n * If you specify this option alongside `skip: true`, this **will not be evaluated** until `skip` is false.\n */\n refetchOnMountOrArgChange?: boolean | number;\n /**\n * Defaults to `false`. This setting allows you to control whether RTK Query will try to refetch all subscribed queries after the application window regains focus.\n *\n * If you specify this option alongside `skip: true`, this **will not be evaluated** until `skip` is false.\n *\n * Note: requires [`setupListeners`](./setupListeners) to have been called.\n */\n refetchOnFocus?: boolean;\n /**\n * Defaults to `false`. This setting allows you to control whether RTK Query will try to refetch all subscribed queries after regaining a network connection.\n *\n * If you specify this option alongside `skip: true`, this **will not be evaluated** until `skip` is false.\n *\n * Note: requires [`setupListeners`](./setupListeners) to have been called.\n */\n refetchOnReconnect?: boolean;\n /**\n * Defaults to `'delayed'`. This setting allows you to control when tags are invalidated after a mutation.\n *\n * - `'immediately'`: Queries are invalidated instantly after the mutation finished, even if they are running.\n * If the query provides tags that were invalidated while it ran, it won't be re-fetched.\n * - `'delayed'`: Invalidation only happens after all queries and mutations are settled.\n * This ensures that queries are always invalidated correctly and automatically \"batches\" invalidations of concurrent mutations.\n * Note that if you constantly have some queries (or mutations) running, this can delay tag invalidations indefinitely.\n */\n invalidationBehavior?: 'delayed' | 'immediately';\n /**\n * A function that is passed every dispatched action. If this returns something other than `undefined`,\n * that return value will be used to rehydrate fulfilled & errored queries.\n *\n * @example\n *\n * ```ts\n * // codeblock-meta title=\"next-redux-wrapper rehydration example\"\n * import type { Action, PayloadAction } from '@reduxjs/toolkit'\n * import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react'\n * import { HYDRATE } from 'next-redux-wrapper'\n *\n * type RootState = any; // normally inferred from state\n *\n * function isHydrateAction(action: Action): action is PayloadAction<RootState> {\n * return action.type === HYDRATE\n * }\n *\n * export const api = createApi({\n * baseQuery: fetchBaseQuery({ baseUrl: '/' }),\n * // highlight-start\n * extractRehydrationInfo(action, { reducerPath }): any {\n * if (isHydrateAction(action)) {\n * return action.payload[reducerPath]\n * }\n * },\n * // highlight-end\n * endpoints: (build) => ({\n * // omitted\n * }),\n * })\n * ```\n */\n extractRehydrationInfo?: (action: UnknownAction, {\n reducerPath\n }: {\n reducerPath: ReducerPath;\n }) => undefined | CombinedState<NoInfer<Definitions>, NoInfer<TagTypes>, NoInfer<ReducerPath>>;\n}\nexport type CreateApi<Modules extends ModuleName> = {\n /**\n * Creates a service to use in your application. Contains only the basic redux logic (the core module).\n *\n * @link https://rtk-query-docs.netlify.app/api/createApi\n */\n <BaseQuery extends BaseQueryFn, Definitions extends EndpointDefinitions, ReducerPath extends string = 'api', TagTypes extends string = never>(options: CreateApiOptions<BaseQuery, Definitions, ReducerPath, TagTypes>): Api<BaseQuery, Definitions, ReducerPath, TagTypes, Modules>;\n};\n\n/**\n * Builds a `createApi` method based on the provided `modules`.\n *\n * @link https://rtk-query-docs.netlify.app/concepts/customizing-create-api\n *\n * @example\n * ```ts\n * const MyContext = React.createContext<ReactReduxContextValue | null>(null);\n * const customCreateApi = buildCreateApi(\n * coreModule(),\n * reactHooksModule({\n * hooks: {\n * useDispatch: createDispatchHook(MyContext),\n * useSelector: createSelectorHook(MyContext),\n * useStore: createStoreHook(MyContext)\n * }\n * })\n * );\n * ```\n *\n * @param modules - A variable number of modules that customize how the `createApi` method handles endpoints\n * @returns A `createApi` method using the provided `modules`.\n */\nexport function buildCreateApi<Modules extends [Module<any>, ...Module<any>[]]>(...modules: Modules): CreateApi<Modules[number]['name']> {\n return function baseCreateApi(options) {\n const extractRehydrationInfo = weakMapMemoize((action: UnknownAction) => options.extractRehydrationInfo?.(action, {\n reducerPath: ((options.reducerPath ?? 'api') as any)\n }));\n const optionsWithDefaults: CreateApiOptions<any, any, any, any> = {\n reducerPath: 'api',\n keepUnusedDataFor: 60,\n refetchOnMountOrArgChange: false,\n refetchOnFocus: false,\n refetchOnReconnect: false,\n invalidationBehavior: 'delayed',\n ...options,\n extractRehydrationInfo,\n serializeQueryArgs(queryArgsApi) {\n let finalSerializeQueryArgs = defaultSerializeQueryArgs;\n if ('serializeQueryArgs' in queryArgsApi.endpointDefinition) {\n const endpointSQA = queryArgsApi.endpointDefinition.serializeQueryArgs!;\n finalSerializeQueryArgs = queryArgsApi => {\n const initialResult = endpointSQA(queryArgsApi);\n if (typeof initialResult === 'string') {\n // If the user function returned a string, use it as-is\n return initialResult;\n } else {\n // Assume they returned an object (such as a subset of the original\n // query args) or a primitive, and serialize it ourselves\n return defaultSerializeQueryArgs({\n ...queryArgsApi,\n queryArgs: initialResult\n });\n }\n };\n } else if (options.serializeQueryArgs) {\n finalSerializeQueryArgs = options.serializeQueryArgs;\n }\n return finalSerializeQueryArgs(queryArgsApi);\n },\n tagTypes: [...(options.tagTypes || [])]\n };\n const context: ApiContext<EndpointDefinitions> = {\n endpointDefinitions: {},\n batch(fn) {\n // placeholder \"batch\" method to be overridden by plugins, for example with React.unstable_batchedUpdate\n fn();\n },\n apiUid: nanoid(),\n extractRehydrationInfo,\n hasRehydrationInfo: weakMapMemoize(action => extractRehydrationInfo(action) != null)\n };\n const api = ({\n injectEndpoints,\n enhanceEndpoints({\n addTagTypes,\n endpoints\n }) {\n if (addTagTypes) {\n for (const eT of addTagTypes) {\n if (!optionsWithDefaults.tagTypes!.includes((eT as any))) {\n ;\n (optionsWithDefaults.tagTypes as any[]).push(eT);\n }\n }\n }\n if (endpoints) {\n for (const [endpointName, partialDefinition] of Object.entries(endpoints)) {\n if (typeof partialDefinition === 'function') {\n partialDefinition(context.endpointDefinitions[endpointName]);\n } else {\n Object.assign(context.endpointDefinitions[endpointName] || {}, partialDefinition);\n }\n }\n }\n return api;\n }\n } as Api<BaseQueryFn, {}, string, string, Modules[number]['name']>);\n const initializedModules = modules.map(m => m.init((api as any), (optionsWithDefaults as any), context));\n function injectEndpoints(inject: Parameters<typeof api.injectEndpoints>[0]) {\n const evaluatedEndpoints = inject.endpoints({\n query: x => ({\n ...x,\n type: DefinitionType.query\n } as any),\n mutation: x => ({\n ...x,\n type: DefinitionType.mutation\n } as any)\n });\n for (const [endpointName, definition] of Object.entries(evaluatedEndpoints)) {\n if (inject.overrideExisting !== true && endpointName in context.endpointDefinitions) {\n if (inject.overrideExisting === 'throw') {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage(39) : `called \\`injectEndpoints\\` to override already-existing endpointName ${endpointName} without specifying \\`overrideExisting: true\\``);\n } else if (typeof process !== 'undefined' && process.env.NODE_ENV === 'development') {\n console.error(`called \\`injectEndpoints\\` to override already-existing endpointName ${endpointName} without specifying \\`overrideExisting: true\\``);\n }\n continue;\n }\n context.endpointDefinitions[endpointName] = definition;\n for (const m of initializedModules) {\n m.injectEndpoint(endpointName, definition);\n }\n }\n return (api as any);\n }\n return api.injectEndpoints({\n endpoints: (options.endpoints as any)\n });\n };\n}","export type Id<T> = { [K in keyof T]: T[K] } & {};\nexport type WithRequiredProp<T, K extends keyof T> = Omit<T, K> & Required<Pick<T, K>>;\nexport type Override<T1, T2> = T2 extends any ? Omit<T1, keyof T2> & T2 : never;\nexport function assertCast<T>(v: any): asserts v is T {}\nexport function safeAssign<T extends object>(target: T, ...args: Array<Partial<NoInfer<T>>>): T {\n return Object.assign(target, ...args);\n}\n\n/**\n * Convert a Union type `(A|B)` to an intersection type `(A&B)`\n */\nexport type UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends (k: infer I) => void ? I : never;\nexport type NonOptionalKeys<T> = { [K in keyof T]-?: undefined extends T[K] ? never : K }[keyof T];\nexport type HasRequiredProps<T, True, False> = NonOptionalKeys<T> extends never ? False : True;\nexport type OptionalIfAllPropsOptional<T> = HasRequiredProps<T, T, T | never>;\nexport type NoInfer<T> = [T][T extends any ? 0 : never];\nexport type NonUndefined<T> = T extends undefined ? never : T;\nexport type UnwrapPromise<T> = T extends PromiseLike<infer V> ? V : T;\nexport type MaybePromise<T> = T | PromiseLike<T>;\nexport type OmitFromUnion<T, K extends keyof T> = T extends any ? Omit<T, K> : never;\nexport type IsAny<T, True, False = never> = true | false extends (T extends never ? true : false) ? True : False;\nexport type CastAny<T, CastTo> = IsAny<T, CastTo, T>;","import type { InternalHandlerBuilder, SubscriptionSelectors } from './types';\nimport type { SubscriptionState } from '../apiState';\nimport { produceWithPatches } from 'immer';\nimport type { Action } from '@reduxjs/toolkit';\nimport { countObjectKeys } from '../../utils/countObjectKeys';\nexport const buildBatchedActionsHandler: InternalHandlerBuilder<[actionShouldContinue: boolean, returnValue: SubscriptionSelectors | boolean]> = ({\n api,\n queryThunk,\n internalState\n}) => {\n const subscriptionsPrefix = `${api.reducerPath}/subscriptions`;\n let previousSubscriptions: SubscriptionState = ((null as unknown) as SubscriptionState);\n let updateSyncTimer: ReturnType<typeof window.setTimeout> | null = null;\n const {\n updateSubscriptionOptions,\n unsubscribeQueryResult\n } = api.internalActions;\n\n // Actually intentionally mutate the subscriptions state used in the middleware\n // This is done to speed up perf when loading many components\n const actuallyMutateSubscriptions = (mutableState: SubscriptionState, action: Action) => {\n if (updateSubscriptionOptions.match(action)) {\n const {\n queryCacheKey,\n requestId,\n options\n } = action.payload;\n if (mutableState?.[queryCacheKey]?.[requestId]) {\n mutableState[queryCacheKey]![requestId] = options;\n }\n return true;\n }\n if (unsubscribeQueryResult.match(action)) {\n const {\n queryCacheKey,\n requestId\n } = action.payload;\n if (mutableState[queryCacheKey]) {\n delete mutableState[queryCacheKey]![requestId];\n }\n return true;\n }\n if (api.internalActions.removeQueryResult.match(action)) {\n delete mutableState[action.payload.queryCacheKey];\n return true;\n }\n if (queryThunk.pending.match(action)) {\n const {\n meta: {\n arg,\n requestId\n }\n } = action;\n const substate = mutableState[arg.queryCacheKey] ??= {};\n substate[`${requestId}_running`] = {};\n if (arg.subscribe) {\n substate[requestId] = arg.subscriptionOptions ?? substate[requestId] ?? {};\n }\n return true;\n }\n let mutated = false;\n if (queryThunk.fulfilled.match(action) || queryThunk.rejected.match(action)) {\n const state = mutableState[action.meta.arg.queryCacheKey] || {};\n const key = `${action.meta.requestId}_running`;\n mutated ||= !!state[key];\n delete state[key];\n }\n if (queryThunk.rejected.match(action)) {\n const {\n meta: {\n condition,\n arg,\n requestId\n }\n } = action;\n if (condition && arg.subscribe) {\n const substate = mutableState[arg.queryCacheKey] ??= {};\n substate[requestId] = arg.subscriptionOptions ?? substate[requestId] ?? {};\n mutated = true;\n }\n }\n return mutated;\n };\n const getSubscriptions = () => internalState.currentSubscriptions;\n const getSubscriptionCount = (queryCacheKey: string) => {\n const subscriptions = getSubscriptions();\n const subscriptionsForQueryArg = subscriptions[queryCacheKey] ?? {};\n return countObjectKeys(subscriptionsForQueryArg);\n };\n const isRequestSubscribed = (queryCacheKey: string, requestId: string) => {\n const subscriptions = getSubscriptions();\n return !!subscriptions?.[queryCacheKey]?.[requestId];\n };\n const subscriptionSelectors: SubscriptionSelectors = {\n getSubscriptions,\n getSubscriptionCount,\n isRequestSubscribed\n };\n return (action, mwApi): [actionShouldContinue: boolean, result: SubscriptionSelectors | boolean] => {\n if (!previousSubscriptions) {\n // Initialize it the first time this handler runs\n previousSubscriptions = JSON.parse(JSON.stringify(internalState.currentSubscriptions));\n }\n if (api.util.resetApiState.match(action)) {\n previousSubscriptions = internalState.currentSubscriptions = {};\n updateSyncTimer = null;\n return [true, false];\n }\n\n // Intercept requests by hooks to see if they're subscribed\n // We return the internal state reference so that hooks\n // can do their own checks to see if they're still active.\n // It's stupid and hacky, but it does cut down on some dispatch calls.\n if (api.internalActions.internal_getRTKQSubscriptions.match(action)) {\n return [false, subscriptionSelectors];\n }\n\n // Update subscription data based on this action\n const didMutate = actuallyMutateSubscriptions(internalState.currentSubscriptions, action);\n let actionShouldContinue = true;\n if (didMutate) {\n if (!updateSyncTimer) {\n // We only use the subscription state for the Redux DevTools at this point,\n // as the real data is kept here in the middleware.\n // Given that, we can throttle synchronizing this state significantly to\n // save on overall perf.\n // In 1.9, it was updated in a microtask, but now we do it at most every 500ms.\n updateSyncTimer = setTimeout(() => {\n // Deep clone the current subscription data\n const newSubscriptions: SubscriptionState = JSON.parse(JSON.stringify(internalState.currentSubscriptions));\n // Figure out a smaller diff between original and current\n const [, patches] = produceWithPatches(previousSubscriptions, () => newSubscriptions);\n\n // Sync the store state for visibility\n mwApi.next(api.internalActions.subscriptionsUpdated(patches));\n // Save the cloned state for later reference\n previousSubscriptions = newSubscriptions;\n updateSyncTimer = null;\n }, 500);\n }\n const isSubscriptionSliceAction = typeof action.type == 'string' && !!action.type.startsWith(subscriptionsPrefix);\n const isAdditionalSubscriptionAction = queryThunk.rejected.match(action) && action.meta.condition && !!action.meta.arg.subscribe;\n actionShouldContinue = !isSubscriptionSliceAction && !isAdditionalSubscriptionAction;\n }\n return [actionShouldContinue, false];\n };\n};","import type { QueryDefinition } from '../../endpointDefinitions';\nimport type { ConfigState, QueryCacheKey } from '../apiState';\nimport { isAnyOf } from '../rtkImports';\nimport type { ApiMiddlewareInternalHandler, InternalHandlerBuilder, QueryStateMeta, SubMiddlewareApi, TimeoutId } from './types';\nexport type ReferenceCacheCollection = never;\nfunction isObjectEmpty(obj: Record<any, any>) {\n // Apparently a for..in loop is faster than `Object.keys()` here:\n // https://stackoverflow.com/a/59787784/62937\n for (const k in obj) {\n // If there is at least one key, it's not empty\n return false;\n }\n return true;\n}\nexport type CacheCollectionQueryExtraOptions = {\n /**\n * Overrides the api-wide definition of `keepUnusedDataFor` for this endpoint only. _(This value is in seconds.)_\n *\n * This is how long RTK Query will keep your data cached for **after** the last component unsubscribes. For example, if you query an endpoint, then unmount the component, then mount another component that makes the same request within the given time frame, the most recent value will be served from the cache.\n */\n keepUnusedDataFor?: number;\n};\n\n// Per https://developer.mozilla.org/en-US/docs/Web/API/setTimeout#maximum_delay_value , browsers store\n// `setTimeout()` timer values in a 32-bit int. If we pass a value in that's larger than that,\n// it wraps and ends up executing immediately.\n// Our `keepUnusedDataFor` values are in seconds, so adjust the numbers here accordingly.\nexport const THIRTY_TWO_BIT_MAX_INT = 2_147_483_647;\nexport const THIRTY_TWO_BIT_MAX_TIMER_SECONDS = 2_147_483_647 / 1_000 - 1;\nexport const buildCacheCollectionHandler: InternalHandlerBuilder = ({\n reducerPath,\n api,\n queryThunk,\n context,\n internalState\n}) => {\n const {\n removeQueryResult,\n unsubscribeQueryResult\n } = api.internalActions;\n const canTriggerUnsubscribe = isAnyOf(unsubscribeQueryResult.match, queryThunk.fulfilled, queryThunk.rejected);\n function anySubscriptionsRemainingForKey(queryCacheKey: string) {\n const subscriptions = internalState.currentSubscriptions[queryCacheKey];\n return !!subscriptions && !isObjectEmpty(subscriptions);\n }\n const currentRemovalTimeouts: QueryStateMeta<TimeoutId> = {};\n const handler: ApiMiddlewareInternalHandler = (action, mwApi, internalState) => {\n if (canTriggerUnsubscribe(action)) {\n const state = mwApi.getState()[reducerPath];\n const {\n queryCacheKey\n } = unsubscribeQueryResult.match(action) ? action.payload : action.meta.arg;\n handleUnsubscribe(queryCacheKey, state.queries[queryCacheKey]?.endpointName, mwApi, state.config);\n }\n if (api.util.resetApiState.match(action)) {\n for (const [key, timeout] of Object.entries(currentRemovalTimeouts)) {\n if (timeout) clearTimeout(timeout);\n delete currentRemovalTimeouts[key];\n }\n }\n if (context.hasRehydrationInfo(action)) {\n const state = mwApi.getState()[reducerPath];\n const {\n queries\n } = context.extractRehydrationInfo(action)!;\n for (const [queryCacheKey, queryState] of Object.entries(queries)) {\n // Gotcha:\n // If rehydrating before the endpoint has been injected,the global `keepUnusedDataFor`\n // will be used instead of the endpoint-specific one.\n handleUnsubscribe((queryCacheKey as QueryCacheKey), queryState?.endpointName, mwApi, state.config);\n }\n }\n };\n function handleUnsubscribe(queryCacheKey: QueryCacheKey, endpointName: string | undefined, api: SubMiddlewareApi, config: ConfigState<string>) {\n const endpointDefinition = (context.endpointDefinitions[endpointName!] as QueryDefinition<any, any, any, any>);\n const keepUnusedDataFor = endpointDefinition?.keepUnusedDataFor ?? config.keepUnusedDataFor;\n if (keepUnusedDataFor === Infinity) {\n // Hey, user said keep this forever!\n return;\n }\n // Prevent `setTimeout` timers from overflowing a 32-bit internal int, by\n // clamping the max value to be at most 1000ms less than the 32-bit max.\n // Look, a 24.8-day keepalive ought to be enough for anybody, right? :)\n // Also avoid negative values too.\n const finalKeepUnusedDataFor = Math.max(0, Math.min(keepUnusedDataFor, THIRTY_TWO_BIT_MAX_TIMER_SECONDS));\n if (!anySubscriptionsRemainingForKey(queryCacheKey)) {\n const currentTimeout = currentRemovalTimeouts[queryCacheKey];\n if (currentTimeout) {\n clearTimeout(currentTimeout);\n }\n currentRemovalTimeouts[queryCacheKey] = setTimeout(() => {\n if (!anySubscriptionsRemainingForKey(queryCacheKey)) {\n api.dispatch(removeQueryResult({\n queryCacheKey\n }));\n }\n delete currentRemovalTimeouts![queryCacheKey];\n }, finalKeepUnusedDataFor * 1000);\n }\n }\n return handler;\n};","import type { ThunkDispatch, UnknownAction } from '@reduxjs/toolkit';\nimport type { BaseQueryFn, BaseQueryMeta } from '../../baseQueryTypes';\nimport type { BaseEndpointDefinition } from '../../endpointDefinitions';\nimport { DefinitionType } from '../../endpointDefinitions';\nimport type { RootState } from '../apiState';\nimport type { MutationResultSelectorResult, QueryResultSelectorResult } from '../buildSelectors';\nimport { getMutationCacheKey } from '../buildSlice';\nimport type { PatchCollection, Recipe } from '../buildThunks';\nimport { isAsyncThunkAction, isFulfilled } from '../rtkImports';\nimport type { ApiMiddlewareInternalHandler, InternalHandlerBuilder, PromiseWithKnownReason, SubMiddlewareApi } from './types';\nexport type ReferenceCacheLifecycle = never;\nexport interface QueryBaseLifecycleApi<QueryArg, BaseQuery extends BaseQueryFn, ResultType, ReducerPath extends string = string> extends LifecycleApi<ReducerPath> {\n /**\n * Gets the current value of this cache entry.\n */\n getCacheEntry(): QueryResultSelectorResult<{\n type: DefinitionType.query;\n } & BaseEndpointDefinition<QueryArg, BaseQuery, ResultType>>;\n /**\n * Updates the current cache entry value.\n * For documentation see `api.util.updateQueryData`.\n */\n updateCachedData(updateRecipe: Recipe<ResultType>): PatchCollection;\n}\nexport type MutationBaseLifecycleApi<QueryArg, BaseQuery extends BaseQueryFn, ResultType, ReducerPath extends string = string> = LifecycleApi<ReducerPath> & {\n /**\n * Gets the current value of this cache entry.\n */\n getCacheEntry(): MutationResultSelectorResult<{\n type: DefinitionType.mutation;\n } & BaseEndpointDefinition<QueryArg, BaseQuery, ResultType>>;\n};\ntype LifecycleApi<ReducerPath extends string = string> = {\n /**\n * The dispatch method for the store\n */\n dispatch: ThunkDispatch<any, any, UnknownAction>;\n /**\n * A method to get the current state\n */\n getState(): RootState<any, any, ReducerPath>;\n /**\n * `extra` as provided as `thunk.extraArgument` to the `configureStore` `getDefaultMiddleware` option.\n */\n extra: unknown;\n /**\n * A unique ID generated for the mutation\n */\n requestId: string;\n};\ntype CacheLifecyclePromises<ResultType = unknown, MetaType = unknown> = {\n /**\n * Promise that will resolve with the first value for this cache key.\n * This allows you to `await` until an actual value is in cache.\n *\n * If the cache entry is removed from the cache before any value has ever\n * been resolved, this Promise will reject with\n * `new Error('Promise never resolved before cacheEntryRemoved.')`\n * to prevent memory leaks.\n * You can just re-throw that error (or not handle it at all) -\n * it will be caught outside of `cacheEntryAdded`.\n *\n * If you don't interact with this promise, it will not throw.\n */\n cacheDataLoaded: PromiseWithKnownReason<{\n /**\n * The (transformed) query result.\n */\n data: ResultType;\n /**\n * The `meta` returned by the `baseQuery`\n */\n meta: MetaType;\n }, typeof neverResolvedError>;\n /**\n * Promise that allows you to wait for the point in time when the cache entry\n * has been removed from the cache, by not being used/subscribed to any more\n * in the application for too long or by dispatching `api.util.resetApiState`.\n */\n cacheEntryRemoved: Promise<void>;\n};\nexport interface QueryCacheLifecycleApi<QueryArg, BaseQuery extends BaseQueryFn, ResultType, ReducerPath extends string = string> extends QueryBaseLifecycleApi<QueryArg, BaseQuery, ResultType, ReducerPath>, CacheLifecyclePromises<ResultType, BaseQueryMeta<BaseQuery>> {}\nexport type MutationCacheLifecycleApi<QueryArg, BaseQuery extends BaseQueryFn, ResultType, ReducerPath extends string = string> = MutationBaseLifecycleApi<QueryArg, BaseQuery, ResultType, ReducerPath> & CacheLifecyclePromises<ResultType, BaseQueryMeta<BaseQuery>>;\nexport type CacheLifecycleQueryExtraOptions<ResultType, QueryArg, BaseQuery extends BaseQueryFn, ReducerPath extends string = string> = {\n onCacheEntryAdded?(arg: QueryArg, api: QueryCacheLifecycleApi<QueryArg, BaseQuery, ResultType, ReducerPath>): Promise<void> | void;\n};\nexport type CacheLifecycleMutationExtraOptions<ResultType, QueryArg, BaseQuery extends BaseQueryFn, ReducerPath extends string = string> = {\n onCacheEntryAdded?(arg: QueryArg, api: MutationCacheLifecycleApi<QueryArg, BaseQuery, ResultType, ReducerPath>): Promise<void> | void;\n};\nconst neverResolvedError = (new Error('Promise never resolved before cacheEntryRemoved.') as Error & {\n message: 'Promise never resolved before cacheEntryRemoved.';\n});\nexport const buildCacheLifecycleHandler: InternalHandlerBuilder = ({\n api,\n reducerPath,\n context,\n queryThunk,\n mutationThunk,\n internalState\n}) => {\n const isQueryThunk = isAsyncThunkAction(queryThunk);\n const isMutationThunk = isAsyncThunkAction(mutationThunk);\n const isFulfilledThunk = isFulfilled(queryThunk, mutationThunk);\n type CacheLifecycle = {\n valueResolved?(value: {\n data: unknown;\n meta: unknown;\n }): unknown;\n cacheEntryRemoved(): void;\n };\n const lifecycleMap: Record<string, CacheLifecycle> = {};\n const handler: ApiMiddlewareInternalHandler = (action, mwApi, stateBefore) => {\n const cacheKey = getCacheKey(action);\n if (queryThunk.pending.match(action)) {\n const oldState = stateBefore[reducerPath].queries[cacheKey];\n const state = mwApi.getState()[reducerPath].queries[cacheKey];\n if (!oldState && state) {\n handleNewKey(action.meta.arg.endpointName, action.meta.arg.originalArgs, cacheKey, mwApi, action.meta.requestId);\n }\n } else if (mutationThunk.pending.match(action)) {\n const state = mwApi.getState()[reducerPath].mutations[cacheKey];\n if (state) {\n handleNewKey(action.meta.arg.endpointName, action.meta.arg.originalArgs, cacheKey, mwApi, action.meta.requestId);\n }\n } else if (isFulfilledThunk(action)) {\n const lifecycle = lifecycleMap[cacheKey];\n if (lifecycle?.valueResolved) {\n lifecycle.valueResolved({\n data: action.payload,\n meta: action.meta.baseQueryMeta\n });\n delete lifecycle.valueResolved;\n }\n } else if (api.internalActions.removeQueryResult.match(action) || api.internalActions.removeMutationResult.match(action)) {\n const lifecycle = lifecycleMap[cacheKey];\n if (lifecycle) {\n delete lifecycleMap[cacheKey];\n lifecycle.cacheEntryRemoved();\n }\n } else if (api.util.resetApiState.match(action)) {\n for (const [cacheKey, lifecycle] of Object.entries(lifecycleMap)) {\n delete lifecycleMap[cacheKey];\n lifecycle.cacheEntryRemoved();\n }\n }\n };\n function getCacheKey(action: any) {\n if (isQueryThunk(action)) return action.meta.arg.queryCacheKey;\n if (isMutationThunk(action)) {\n return action.meta.arg.fixedCacheKey ?? action.meta.requestId;\n }\n if (api.internalActions.removeQueryResult.match(action)) return action.payload.queryCacheKey;\n if (api.internalActions.removeMutationResult.match(action)) return getMutationCacheKey(action.payload);\n return '';\n }\n function handleNewKey(endpointName: string, originalArgs: any, queryCacheKey: string, mwApi: SubMiddlewareApi, requestId: string) {\n const endpointDefinition = context.endpointDefinitions[endpointName];\n const onCacheEntryAdded = endpointDefinition?.onCacheEntryAdded;\n if (!onCacheEntryAdded) return;\n const lifecycle = ({} as CacheLifecycle);\n const cacheEntryRemoved = new Promise<void>(resolve => {\n lifecycle.cacheEntryRemoved = resolve;\n });\n const cacheDataLoaded: PromiseWithKnownReason<{\n data: unknown;\n meta: unknown;\n }, typeof neverResolvedError> = Promise.race([new Promise<{\n data: unknown;\n meta: unknown;\n }>(resolve => {\n lifecycle.valueResolved = resolve;\n }), cacheEntryRemoved.then(() => {\n throw neverResolvedError;\n })]);\n // prevent uncaught promise rejections from happening.\n // if the original promise is used in any way, that will create a new promise that will throw again\n cacheDataLoaded.catch(() => {});\n lifecycleMap[queryCacheKey] = lifecycle;\n const selector = (api.endpoints[endpointName] as any).select(endpointDefinition.type === DefinitionType.query ? originalArgs : queryCacheKey);\n const extra = mwApi.dispatch((_, __, extra) => extra);\n const lifecycleApi = {\n ...mwApi,\n getCacheEntry: () => selector(mwApi.getState()),\n requestId,\n extra,\n updateCachedData: ((endpointDefinition.type === DefinitionType.query ? (updateRecipe: Recipe<any>) => mwApi.dispatch(api.util.updateQueryData((endpointName as never), originalArgs, updateRecipe)) : undefined) as any),\n cacheDataLoaded,\n cacheEntryRemoved\n };\n const runningHandler = onCacheEntryAdded(originalArgs, lifecycleApi);\n // if a `neverResolvedError` was thrown, but not handled in the running handler, do not let it leak out further\n Promise.resolve(runningHandler).catch(e => {\n if (e === neverResolvedError) return;\n throw e;\n });\n }\n return handler;\n};","import type { InternalHandlerBuilder } from './types';\nexport const buildDevCheckHandler: InternalHandlerBuilder = ({\n api,\n context: {\n apiUid\n },\n reducerPath\n}) => {\n return (action, mwApi) => {\n if (api.util.resetApiState.match(action)) {\n // dispatch after api reset\n mwApi.dispatch(api.internalActions.middlewareRegistered(apiUid));\n }\n if (typeof process !== 'undefined' && process.env.NODE_ENV === 'development') {\n if (api.internalActions.middlewareRegistered.match(action) && action.payload === apiUid && mwApi.getState()[reducerPath]?.config?.middlewareRegistered === 'conflict') {\n console.warn(`There is a mismatch between slice and middleware for the reducerPath \"${reducerPath}\".\nYou can only have one api per reducer path, this will lead to crashes in various situations!${reducerPath === 'api' ? `\nIf you have multiple apis, you *have* to specify the reducerPath option when using createApi!` : ''}`);\n }\n }\n };\n};","import { isAnyOf, isFulfilled, isRejected, isRejectedWithValue } from '../rtkImports';\nimport type { EndpointDefinitions, FullTagDescription } from '../../endpointDefinitions';\nimport { calculateProvidedBy } from '../../endpointDefinitions';\nimport type { CombinedState, QueryCacheKey } from '../apiState';\nimport { QueryStatus } from '../apiState';\nimport { calculateProvidedByThunk } from '../buildThunks';\nimport type { SubMiddlewareApi, InternalHandlerBuilder, ApiMiddlewareInternalHandler, InternalMiddlewareState } from './types';\nimport { countObjectKeys } from '../../utils/countObjectKeys';\nexport const buildInvalidationByTagsHandler: InternalHandlerBuilder = ({\n reducerPath,\n context,\n context: {\n endpointDefinitions\n },\n mutationThunk,\n queryThunk,\n api,\n assertTagType,\n refetchQuery,\n internalState\n}) => {\n const {\n removeQueryResult\n } = api.internalActions;\n const isThunkActionWithTags = isAnyOf(isFulfilled(mutationThunk), isRejectedWithValue(mutationThunk));\n const isQueryEnd = isAnyOf(isFulfilled(mutationThunk, queryThunk), isRejected(mutationThunk, queryThunk));\n let pendingTagInvalidations: FullTagDescription<string>[] = [];\n const handler: ApiMiddlewareInternalHandler = (action, mwApi) => {\n if (isThunkActionWithTags(action)) {\n invalidateTags(calculateProvidedByThunk(action, 'invalidatesTags', endpointDefinitions, assertTagType), mwApi);\n } else if (isQueryEnd(action)) {\n invalidateTags([], mwApi);\n } else if (api.util.invalidateTags.match(action)) {\n invalidateTags(calculateProvidedBy(action.payload, undefined, undefined, undefined, undefined, assertTagType), mwApi);\n }\n };\n function hasPendingRequests(state: CombinedState<EndpointDefinitions, string, string>) {\n for (const key in state.queries) {\n if (state.queries[key]?.status === QueryStatus.pending) return true;\n }\n for (const key in state.mutations) {\n if (state.mutations[key]?.status === QueryStatus.pending) return true;\n }\n return false;\n }\n function invalidateTags(newTags: readonly FullTagDescription<string>[], mwApi: SubMiddlewareApi) {\n const rootState = mwApi.getState();\n const state = rootState[reducerPath];\n pendingTagInvalidations.push(...newTags);\n if (state.config.invalidationBehavior === 'delayed' && hasPendingRequests(state)) {\n return;\n }\n const tags = pendingTagInvalidations;\n pendingTagInvalidations = [];\n if (tags.length === 0) return;\n const toInvalidate = api.util.selectInvalidatedBy(rootState, tags);\n context.batch(() => {\n const valuesArray = Array.from(toInvalidate.values());\n for (const {\n queryCacheKey\n } of valuesArray) {\n const querySubState = state.queries[queryCacheKey];\n const subscriptionSubState = internalState.currentSubscriptions[queryCacheKey] ?? {};\n if (querySubState) {\n if (countObjectKeys(subscriptionSubState) === 0) {\n mwApi.dispatch(removeQueryResult({\n queryCacheKey: (queryCacheKey as QueryCacheKey)\n }));\n } else if (querySubState.status !== QueryStatus.uninitialized) {\n mwApi.dispatch(refetchQuery(querySubState));\n }\n }\n }\n });\n }\n return handler;\n};","import type { QuerySubstateIdentifier, Subscribers } from '../apiState';\nimport { QueryStatus } from '../apiState';\nimport type { QueryStateMeta, SubMiddlewareApi, TimeoutId, InternalHandlerBuilder, ApiMiddlewareInternalHandler, InternalMiddlewareState } from './types';\nexport const buildPollingHandler: InternalHandlerBuilder = ({\n reducerPath,\n queryThunk,\n api,\n refetchQuery,\n internalState\n}) => {\n const currentPolls: QueryStateMeta<{\n nextPollTimestamp: number;\n timeout?: TimeoutId;\n pollingInterval: number;\n }> = {};\n const handler: ApiMiddlewareInternalHandler = (action, mwApi) => {\n if (api.internalActions.updateSubscriptionOptions.match(action) || api.internalActions.unsubscribeQueryResult.match(action)) {\n updatePollingInterval(action.payload, mwApi);\n }\n if (queryThunk.pending.match(action) || queryThunk.rejected.match(action) && action.meta.condition) {\n updatePollingInterval(action.meta.arg, mwApi);\n }\n if (queryThunk.fulfilled.match(action) || queryThunk.rejected.match(action) && !action.meta.condition) {\n startNextPoll(action.meta.arg, mwApi);\n }\n if (api.util.resetApiState.match(action)) {\n clearPolls();\n }\n };\n function startNextPoll({\n queryCacheKey\n }: QuerySubstateIdentifier, api: SubMiddlewareApi) {\n const state = api.getState()[reducerPath];\n const querySubState = state.queries[queryCacheKey];\n const subscriptions = internalState.currentSubscriptions[queryCacheKey];\n if (!querySubState || querySubState.status === QueryStatus.uninitialized) return;\n const {\n lowestPollingInterval,\n skipPollingIfUnfocused\n } = findLowestPollingInterval(subscriptions);\n if (!Number.isFinite(lowestPollingInterval)) return;\n const currentPoll = currentPolls[queryCacheKey];\n if (currentPoll?.timeout) {\n clearTimeout(currentPoll.timeout);\n currentPoll.timeout = undefined;\n }\n const nextPollTimestamp = Date.now() + lowestPollingInterval;\n currentPolls[queryCacheKey] = {\n nextPollTimestamp,\n pollingInterval: lowestPollingInterval,\n timeout: setTimeout(() => {\n if (state.config.focused || !skipPollingIfUnfocused) {\n api.dispatch(refetchQuery(querySubState));\n }\n startNextPoll({\n queryCacheKey\n }, api);\n }, lowestPollingInterval)\n };\n }\n function updatePollingInterval({\n queryCacheKey\n }: QuerySubstateIdentifier, api: SubMiddlewareApi) {\n const state = api.getState()[reducerPath];\n const querySubState = state.queries[queryCacheKey];\n const subscriptions = internalState.currentSubscriptions[queryCacheKey];\n if (!querySubState || querySubState.status === QueryStatus.uninitialized) {\n return;\n }\n const {\n lowestPollingInterval\n } = findLowestPollingInterval(subscriptions);\n if (!Number.isFinite(lowestPollingInterval)) {\n cleanupPollForKey(queryCacheKey);\n return;\n }\n const currentPoll = currentPolls[queryCacheKey];\n const nextPollTimestamp = Date.now() + lowestPollingInterval;\n if (!currentPoll || nextPollTimestamp < currentPoll.nextPollTimestamp) {\n startNextPoll({\n queryCacheKey\n }, api);\n }\n }\n function cleanupPollForKey(key: string) {\n const existingPoll = currentPolls[key];\n if (existingPoll?.timeout) {\n clearTimeout(existingPoll.timeout);\n }\n delete currentPolls[key];\n }\n function clearPolls() {\n for (const key of Object.keys(currentPolls)) {\n cleanupPollForKey(key);\n }\n }\n function findLowestPollingInterval(subscribers: Subscribers = {}) {\n let skipPollingIfUnfocused: boolean | undefined = false;\n let lowestPollingInterval = Number.POSITIVE_INFINITY;\n for (let key in subscribers) {\n if (!!subscribers[key].pollingInterval) {\n lowestPollingInterval = Math.min(subscribers[key].pollingInterval!, lowestPollingInterval);\n skipPollingIfUnfocused = subscribers[key].skipPollingIfUnfocused || skipPollingIfUnfocused;\n }\n }\n return {\n lowestPollingInterval,\n skipPollingIfUnfocused\n };\n }\n return handler;\n};","import type { BaseQueryError, BaseQueryFn, BaseQueryMeta } from '../../baseQueryTypes';\nimport { DefinitionType } from '../../endpointDefinitions';\nimport type { Recipe } from '../buildThunks';\nimport { isFulfilled, isPending, isRejected } from '../rtkImports';\nimport type { MutationBaseLifecycleApi, QueryBaseLifecycleApi } from './cacheLifecycle';\nimport type { ApiMiddlewareInternalHandler, InternalHandlerBuilder, PromiseConstructorWithKnownReason, PromiseWithKnownReason } from './types';\nexport type ReferenceQueryLifecycle = never;\ntype QueryLifecyclePromises<ResultType, BaseQuery extends BaseQueryFn> = {\n /**\n * Promise that will resolve with the (transformed) query result.\n *\n * If the query fails, this promise will reject with the error.\n *\n * This allows you to `await` for the query to finish.\n *\n * If you don't interact with this promise, it will not throw.\n */\n queryFulfilled: PromiseWithKnownReason<{\n /**\n * The (transformed) query result.\n */\n data: ResultType;\n /**\n * The `meta` returned by the `baseQuery`\n */\n meta: BaseQueryMeta<BaseQuery>;\n }, QueryFulfilledRejectionReason<BaseQuery>>;\n};\ntype QueryFulfilledRejectionReason<BaseQuery extends BaseQueryFn> = {\n error: BaseQueryError<BaseQuery>;\n /**\n * If this is `false`, that means this error was returned from the `baseQuery` or `queryFn` in a controlled manner.\n */\n isUnhandledError: false;\n /**\n * The `meta` returned by the `baseQuery`\n */\n meta: BaseQueryMeta<BaseQuery>;\n} | {\n error: unknown;\n meta?: undefined;\n /**\n * If this is `true`, that means that this error is the result of `baseQueryFn`, `queryFn`, `transformResponse` or `transformErrorResponse` throwing an error instead of handling it properly.\n * There can not be made any assumption about the shape of `error`.\n */\n isUnhandledError: true;\n};\nexport type QueryLifecycleQueryExtraOptions<ResultType, QueryArg, BaseQuery extends BaseQueryFn, ReducerPath extends string = string> = {\n /**\n * A function that is called when the individual query is started. The function is called with a lifecycle api object containing properties such as `queryFulfilled`, allowing code to be run when a query is started, when it succeeds, and when it fails (i.e. throughout the lifecycle of an individual query/mutation call).\n *\n * Can be used to perform side-effects throughout the lifecycle of the query.\n *\n * @example\n * ```ts\n * import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query'\n * import { messageCreated } from './notificationsSlice\n * export interface Post {\n * id: number\n * name: string\n * }\n *\n * const api = createApi({\n * baseQuery: fetchBaseQuery({\n * baseUrl: '/',\n * }),\n * endpoints: (build) => ({\n * getPost: build.query<Post, number>({\n * query: (id) => `post/${id}`,\n * async onQueryStarted(id, { dispatch, queryFulfilled }) {\n * // `onStart` side-effect\n * dispatch(messageCreated('Fetching posts...'))\n * try {\n * const { data } = await queryFulfilled\n * // `onSuccess` side-effect\n * dispatch(messageCreated('Posts received!'))\n * } catch (err) {\n * // `onError` side-effect\n * dispatch(messageCreated('Error fetching posts!'))\n * }\n * }\n * }),\n * }),\n * })\n * ```\n */\n onQueryStarted?(arg: QueryArg, api: QueryLifecycleApi<QueryArg, BaseQuery, ResultType, ReducerPath>): Promise<void> | void;\n};\nexport type QueryLifecycleMutationExtraOptions<ResultType, QueryArg, BaseQuery extends BaseQueryFn, ReducerPath extends string = string> = {\n /**\n * A function that is called when the individual mutation is started. The function is called with a lifecycle api object containing properties such as `queryFulfilled`, allowing code to be run when a query is started, when it succeeds, and when it fails (i.e. throughout the lifecycle of an individual query/mutation call).\n *\n * Can be used for `optimistic updates`.\n *\n * @example\n *\n * ```ts\n * import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query'\n * export interface Post {\n * id: number\n * name: string\n * }\n *\n * const api = createApi({\n * baseQuery: fetchBaseQuery({\n * baseUrl: '/',\n * }),\n * tagTypes: ['Post'],\n * endpoints: (build) => ({\n * getPost: build.query<Post, number>({\n * query: (id) => `post/${id}`,\n * providesTags: ['Post'],\n * }),\n * updatePost: build.mutation<void, Pick<Post, 'id'> & Partial<Post>>({\n * query: ({ id, ...patch }) => ({\n * url: `post/${id}`,\n * method: 'PATCH',\n * body: patch,\n * }),\n * invalidatesTags: ['Post'],\n * async onQueryStarted({ id, ...patch }, { dispatch, queryFulfilled }) {\n * const patchResult = dispatch(\n * api.util.updateQueryData('getPost', id, (draft) => {\n * Object.assign(draft, patch)\n * })\n * )\n * try {\n * await queryFulfilled\n * } catch {\n * patchResult.undo()\n * }\n * },\n * }),\n * }),\n * })\n * ```\n */\n onQueryStarted?(arg: QueryArg, api: MutationLifecycleApi<QueryArg, BaseQuery, ResultType, ReducerPath>): Promise<void> | void;\n};\nexport interface QueryLifecycleApi<QueryArg, BaseQuery extends BaseQueryFn, ResultType, ReducerPath extends string = string> extends QueryBaseLifecycleApi<QueryArg, BaseQuery, ResultType, ReducerPath>, QueryLifecyclePromises<ResultType, BaseQuery> {}\nexport type MutationLifecycleApi<QueryArg, BaseQuery extends BaseQueryFn, ResultType, ReducerPath extends string = string> = MutationBaseLifecycleApi<QueryArg, BaseQuery, ResultType, ReducerPath> & QueryLifecyclePromises<ResultType, BaseQuery>;\nexport const buildQueryLifecycleHandler: InternalHandlerBuilder = ({\n api,\n context,\n queryThunk,\n mutationThunk\n}) => {\n const isPendingThunk = isPending(queryThunk, mutationThunk);\n const isRejectedThunk = isRejected(queryThunk, mutationThunk);\n const isFullfilledThunk = isFulfilled(queryThunk, mutationThunk);\n type CacheLifecycle = {\n resolve(value: {\n data: unknown;\n meta: unknown;\n }): unknown;\n reject(value: QueryFulfilledRejectionReason<any>): unknown;\n };\n const lifecycleMap: Record<string, CacheLifecycle> = {};\n const handler: ApiMiddlewareInternalHandler = (action, mwApi) => {\n if (isPendingThunk(action)) {\n const {\n requestId,\n arg: {\n endpointName,\n originalArgs\n }\n } = action.meta;\n const endpointDefinition = context.endpointDefinitions[endpointName];\n const onQueryStarted = endpointDefinition?.onQueryStarted;\n if (onQueryStarted) {\n const lifecycle = ({} as CacheLifecycle);\n const queryFulfilled = new (Promise as PromiseConstructorWithKnownReason)<{\n data: unknown;\n meta: unknown;\n }, QueryFulfilledRejectionReason<any>>((resolve, reject) => {\n lifecycle.resolve = resolve;\n lifecycle.reject = reject;\n });\n // prevent uncaught promise rejections from happening.\n // if the original promise is used in any way, that will create a new promise that will throw again\n queryFulfilled.catch(() => {});\n lifecycleMap[requestId] = lifecycle;\n const selector = (api.endpoints[endpointName] as any).select(endpointDefinition.type === DefinitionType.query ? originalArgs : requestId);\n const extra = mwApi.dispatch((_, __, extra) => extra);\n const lifecycleApi = {\n ...mwApi,\n getCacheEntry: () => selector(mwApi.getState()),\n requestId,\n extra,\n updateCachedData: ((endpointDefinition.type === DefinitionType.query ? (updateRecipe: Recipe<any>) => mwApi.dispatch(api.util.updateQueryData((endpointName as never), originalArgs, updateRecipe)) : undefined) as any),\n queryFulfilled\n };\n onQueryStarted(originalArgs, lifecycleApi);\n }\n } else if (isFullfilledThunk(action)) {\n const {\n requestId,\n baseQueryMeta\n } = action.meta;\n lifecycleMap[requestId]?.resolve({\n data: action.payload,\n meta: baseQueryMeta\n });\n delete lifecycleMap[requestId];\n } else if (isRejectedThunk(action)) {\n const {\n requestId,\n rejectedWithValue,\n baseQueryMeta\n } = action.meta;\n lifecycleMap[requestId]?.reject({\n error: action.payload ?? action.error,\n isUnhandledError: !rejectedWithValue,\n meta: (baseQueryMeta as any)\n });\n delete lifecycleMap[requestId];\n }\n };\n return handler;\n};","import type { Action, Middleware, ThunkDispatch, UnknownAction } from '@reduxjs/toolkit';\nimport type { EndpointDefinitions, FullTagDescription } from '../../endpointDefinitions';\nimport type { QueryStatus, QuerySubState, RootState } from '../apiState';\nimport type { QueryThunkArg } from '../buildThunks';\nimport { createAction, isAction } from '../rtkImports';\nimport { buildBatchedActionsHandler } from './batchActions';\nimport { buildCacheCollectionHandler } from './cacheCollection';\nimport { buildCacheLifecycleHandler } from './cacheLifecycle';\nimport { buildDevCheckHandler } from './devMiddleware';\nimport { buildInvalidationByTagsHandler } from './invalidationByTags';\nimport { buildPollingHandler } from './polling';\nimport { buildQueryLifecycleHandler } from './queryLifecycle';\nimport type { BuildMiddlewareInput, InternalHandlerBuilder, InternalMiddlewareState } from './types';\nimport { buildWindowEventHandler } from './windowEventHandling';\nimport type { ApiEndpointQuery } from '../module';\nexport type { ReferenceCacheCollection } from './cacheCollection';\nexport type { MutationCacheLifecycleApi, QueryCacheLifecycleApi, ReferenceCacheLifecycle } from './cacheLifecycle';\nexport type { MutationLifecycleApi, QueryLifecycleApi, ReferenceQueryLifecycle } from './queryLifecycle';\nexport type { SubscriptionSelectors } from './types';\nexport function buildMiddleware<Definitions extends EndpointDefinitions, ReducerPath extends string, TagTypes extends string>(input: BuildMiddlewareInput<Definitions, ReducerPath, TagTypes>) {\n const {\n reducerPath,\n queryThunk,\n api,\n context\n } = input;\n const {\n apiUid\n } = context;\n const actions = {\n invalidateTags: createAction<Array<TagTypes | FullTagDescription<TagTypes>>>(`${reducerPath}/invalidateTags`)\n };\n const isThisApiSliceAction = (action: Action) => action.type.startsWith(`${reducerPath}/`);\n const handlerBuilders: InternalHandlerBuilder[] = [buildDevCheckHandler, buildCacheCollectionHandler, buildInvalidationByTagsHandler, buildPollingHandler, buildCacheLifecycleHandler, buildQueryLifecycleHandler];\n const middleware: Middleware<{}, RootState<Definitions, string, ReducerPath>, ThunkDispatch<any, any, UnknownAction>> = mwApi => {\n let initialized = false;\n const internalState: InternalMiddlewareState = {\n currentSubscriptions: {}\n };\n const builderArgs = {\n ...((input as any) as BuildMiddlewareInput<EndpointDefinitions, string, string>),\n internalState,\n refetchQuery,\n isThisApiSliceAction\n };\n const handlers = handlerBuilders.map(build => build(builderArgs));\n const batchedActionsHandler = buildBatchedActionsHandler(builderArgs);\n const windowEventsHandler = buildWindowEventHandler(builderArgs);\n return next => {\n return action => {\n if (!isAction(action)) {\n return next(action);\n }\n if (!initialized) {\n initialized = true;\n // dispatch before any other action\n mwApi.dispatch(api.internalActions.middlewareRegistered(apiUid));\n }\n const mwApiWithNext = {\n ...mwApi,\n next\n };\n const stateBefore = mwApi.getState();\n const [actionShouldContinue, internalProbeResult] = batchedActionsHandler(action, mwApiWithNext, stateBefore);\n let res: any;\n if (actionShouldContinue) {\n res = next(action);\n } else {\n res = internalProbeResult;\n }\n if (!!mwApi.getState()[reducerPath]) {\n // Only run these checks if the middleware is registered okay\n\n // This looks for actions that aren't specific to the API slice\n windowEventsHandler(action, mwApiWithNext, stateBefore);\n if (isThisApiSliceAction(action) || context.hasRehydrationInfo(action)) {\n // Only run these additional checks if the actions are part of the API slice,\n // or the action has hydration-related data\n for (const handler of handlers) {\n handler(action, mwApiWithNext, stateBefore);\n }\n }\n }\n return res;\n };\n };\n };\n return {\n middleware,\n actions\n };\n function refetchQuery(querySubState: Exclude<QuerySubState<any>, {\n status: QueryStatus.uninitialized;\n }>) {\n return (input.api.endpoints[querySubState.endpointName] as ApiEndpointQuery<any, any>).initiate((querySubState.originalArgs as any), {\n subscribe: false,\n forceRefetch: true\n });\n }\n}","import { QueryStatus } from '../apiState';\nimport type { QueryCacheKey } from '../apiState';\nimport { onFocus, onOnline } from '../setupListeners';\nimport type { ApiMiddlewareInternalHandler, InternalHandlerBuilder, SubMiddlewareApi } from './types';\nimport { countObjectKeys } from '../../utils/countObjectKeys';\nexport const buildWindowEventHandler: InternalHandlerBuilder = ({\n reducerPath,\n context,\n api,\n refetchQuery,\n internalState\n}) => {\n const {\n removeQueryResult\n } = api.internalActions;\n const handler: ApiMiddlewareInternalHandler = (action, mwApi) => {\n if (onFocus.match(action)) {\n refetchValidQueries(mwApi, 'refetchOnFocus');\n }\n if (onOnline.match(action)) {\n refetchValidQueries(mwApi, 'refetchOnReconnect');\n }\n };\n function refetchValidQueries(api: SubMiddlewareApi, type: 'refetchOnFocus' | 'refetchOnReconnect') {\n const state = api.getState()[reducerPath];\n const queries = state.queries;\n const subscriptions = internalState.currentSubscriptions;\n context.batch(() => {\n for (const queryCacheKey of Object.keys(subscriptions)) {\n const querySubState = queries[queryCacheKey];\n const subscriptionSubState = subscriptions[queryCacheKey];\n if (!subscriptionSubState || !querySubState) continue;\n const shouldRefetch = Object.values(subscriptionSubState).some(sub => sub[type] === true) || Object.values(subscriptionSubState).every(sub => sub[type] === undefined) && state.config[type];\n if (shouldRefetch) {\n if (countObjectKeys(subscriptionSubState) === 0) {\n api.dispatch(removeQueryResult({\n queryCacheKey: (queryCacheKey as QueryCacheKey)\n }));\n } else if (querySubState.status !== QueryStatus.uninitialized) {\n api.dispatch(refetchQuery(querySubState));\n }\n }\n }\n });\n }\n return handler;\n};","/**\n * Note: this file should import all other files for type discovery and declaration merging\n */\nimport type { ActionCreatorWithPayload, Middleware, Reducer, ThunkAction, ThunkDispatch, UnknownAction } from '@reduxjs/toolkit';\nimport { enablePatches } from 'immer';\nimport type { Api, Module } from '../apiTypes';\nimport type { BaseQueryFn } from '../baseQueryTypes';\nimport type { InternalSerializeQueryArgs } from '../defaultSerializeQueryArgs';\nimport type { AssertTagTypes, EndpointDefinitions, MutationDefinition, QueryArgFrom, QueryDefinition, TagDescription } from '../endpointDefinitions';\nimport { isMutationDefinition, isQueryDefinition } from '../endpointDefinitions';\nimport { assertCast, safeAssign } from '../tsHelpers';\nimport type { CombinedState, MutationKeys, QueryKeys, RootState } from './apiState';\nimport type { BuildInitiateApiEndpointMutation, BuildInitiateApiEndpointQuery, MutationActionCreatorResult, QueryActionCreatorResult } from './buildInitiate';\nimport { buildInitiate } from './buildInitiate';\nimport type { ReferenceCacheCollection, ReferenceCacheLifecycle, ReferenceQueryLifecycle } from './buildMiddleware';\nimport { buildMiddleware } from './buildMiddleware';\nimport type { BuildSelectorsApiEndpointMutation, BuildSelectorsApiEndpointQuery } from './buildSelectors';\nimport { buildSelectors } from './buildSelectors';\nimport type { SliceActions } from './buildSlice';\nimport { buildSlice } from './buildSlice';\nimport type { BuildThunksApiEndpointMutation, BuildThunksApiEndpointQuery, PatchQueryDataThunk, UpdateQueryDataThunk, UpsertQueryDataThunk } from './buildThunks';\nimport { buildThunks } from './buildThunks';\nimport { createSelector as _createSelector } from './rtkImports';\nimport { onFocus, onFocusLost, onOffline, onOnline } from './setupListeners';\n\n/**\n * `ifOlderThan` - (default: `false` | `number`) - _number is value in seconds_\n * - If specified, it will only run the query if the difference between `new Date()` and the last `fulfilledTimeStamp` is greater than the given value\n *\n * @overloadSummary\n * `force`\n * - If `force: true`, it will ignore the `ifOlderThan` value if it is set and the query will be run even if it exists in the cache.\n */\nexport type PrefetchOptions = {\n ifOlderThan?: false | number;\n} | {\n force?: boolean;\n};\nexport const coreModuleName = /* @__PURE__ */Symbol();\nexport type CoreModule = typeof coreModuleName | ReferenceCacheLifecycle | ReferenceQueryLifecycle | ReferenceCacheCollection;\nexport type ThunkWithReturnValue<T> = ThunkAction<T, any, any, UnknownAction>;\nexport interface ApiModules<\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nBaseQuery extends BaseQueryFn, Definitions extends EndpointDefinitions, ReducerPath extends string, TagTypes extends string> {\n [coreModuleName]: {\n /**\n * This api's reducer should be mounted at `store[api.reducerPath]`.\n *\n * @example\n * ```ts\n * configureStore({\n * reducer: {\n * [api.reducerPath]: api.reducer,\n * },\n * middleware: (getDefaultMiddleware) => getDefaultMiddleware().concat(api.middleware),\n * })\n * ```\n */\n reducerPath: ReducerPath;\n /**\n * Internal actions not part of the public API. Note: These are subject to change at any given time.\n */\n internalActions: InternalActions;\n /**\n * A standard redux reducer that enables core functionality. Make sure it's included in your store.\n *\n * @example\n * ```ts\n * configureStore({\n * reducer: {\n * [api.reducerPath]: api.reducer,\n * },\n * middleware: (getDefaultMiddleware) => getDefaultMiddleware().concat(api.middleware),\n * })\n * ```\n */\n reducer: Reducer<CombinedState<Definitions, TagTypes, ReducerPath>, UnknownAction>;\n /**\n * This is a standard redux middleware and is responsible for things like polling, garbage collection and a handful of other things. Make sure it's included in your store.\n *\n * @example\n * ```ts\n * configureStore({\n * reducer: {\n * [api.reducerPath]: api.reducer,\n * },\n * middleware: (getDefaultMiddleware) => getDefaultMiddleware().concat(api.middleware),\n * })\n * ```\n */\n middleware: Middleware<{}, RootState<Definitions, string, ReducerPath>, ThunkDispatch<any, any, UnknownAction>>;\n /**\n * A collection of utility thunks for various situations.\n */\n util: {\n /**\n * A thunk that (if dispatched) will return a specific running query, identified\n * by `endpointName` and `args`.\n * If that query is not running, dispatching the thunk will result in `undefined`.\n *\n * Can be used to await a specific query triggered in any way,\n * including via hook calls or manually dispatching `initiate` actions.\n *\n * See https://redux-toolkit.js.org/rtk-query/usage/server-side-rendering for details.\n */\n getRunningQueryThunk<EndpointName extends QueryKeys<Definitions>>(endpointName: EndpointName, args: QueryArgFrom<Definitions[EndpointName]>): ThunkWithReturnValue<QueryActionCreatorResult<Definitions[EndpointName] & {\n type: 'query';\n }> | undefined>;\n\n /**\n * A thunk that (if dispatched) will return a specific running mutation, identified\n * by `endpointName` and `fixedCacheKey` or `requestId`.\n * If that mutation is not running, dispatching the thunk will result in `undefined`.\n *\n * Can be used to await a specific mutation triggered in any way,\n * including via hook trigger functions or manually dispatching `initiate` actions.\n *\n * See https://redux-toolkit.js.org/rtk-query/usage/server-side-rendering for details.\n */\n getRunningMutationThunk<EndpointName extends MutationKeys<Definitions>>(endpointName: EndpointName, fixedCacheKeyOrRequestId: string): ThunkWithReturnValue<MutationActionCreatorResult<Definitions[EndpointName] & {\n type: 'mutation';\n }> | undefined>;\n\n /**\n * A thunk that (if dispatched) will return all running queries.\n *\n * Useful for SSR scenarios to await all running queries triggered in any way,\n * including via hook calls or manually dispatching `initiate` actions.\n *\n * See https://redux-toolkit.js.org/rtk-query/usage/server-side-rendering for details.\n */\n getRunningQueriesThunk(): ThunkWithReturnValue<Array<QueryActionCreatorResult<any>>>;\n\n /**\n * A thunk that (if dispatched) will return all running mutations.\n *\n * Useful for SSR scenarios to await all running mutations triggered in any way,\n * including via hook calls or manually dispatching `initiate` actions.\n *\n * See https://redux-toolkit.js.org/rtk-query/usage/server-side-rendering for details.\n */\n getRunningMutationsThunk(): ThunkWithReturnValue<Array<MutationActionCreatorResult<any>>>;\n\n /**\n * A Redux thunk that can be used to manually trigger pre-fetching of data.\n *\n * The thunk accepts three arguments: the name of the endpoint we are updating (such as `'getPost'`), the appropriate query arg values to construct the desired cache key, and a set of options used to determine if the data actually should be re-fetched based on cache staleness.\n *\n * React Hooks users will most likely never need to use this directly, as the `usePrefetch` hook will dispatch this thunk internally as needed when you call the prefetching function supplied by the hook.\n *\n * @example\n *\n * ```ts no-transpile\n * dispatch(api.util.prefetch('getPosts', undefined, { force: true }))\n * ```\n */\n prefetch<EndpointName extends QueryKeys<Definitions>>(endpointName: EndpointName, arg: QueryArgFrom<Definitions[EndpointName]>, options: PrefetchOptions): ThunkAction<void, any, any, UnknownAction>;\n /**\n * A Redux thunk action creator that, when dispatched, creates and applies a set of JSON diff/patch objects to the current state. This immediately updates the Redux state with those changes.\n *\n * The thunk action creator accepts three arguments: the name of the endpoint we are updating (such as `'getPost'`), the appropriate query arg values to construct the desired cache key, and an `updateRecipe` callback function. The callback receives an Immer-wrapped `draft` of the current state, and may modify the draft to match the expected results after the mutation completes successfully.\n *\n * The thunk executes _synchronously_, and returns an object containing `{patches: Patch[], inversePatches: Patch[], undo: () => void}`. The `patches` and `inversePatches` are generated using Immer's [`produceWithPatches` method](https://immerjs.github.io/immer/patches).\n *\n * This is typically used as the first step in implementing optimistic updates. The generated `inversePatches` can be used to revert the updates by calling `dispatch(patchQueryData(endpointName, args, inversePatches))`. Alternatively, the `undo` method can be called directly to achieve the same effect.\n *\n * Note that the first two arguments (`endpointName` and `args`) are used to determine which existing cache entry to update. If no existing cache entry is found, the `updateRecipe` callback will not run.\n *\n * @example\n *\n * ```ts\n * const patchCollection = dispatch(\n * api.util.updateQueryData('getPosts', undefined, (draftPosts) => {\n * draftPosts.push({ id: 1, name: 'Teddy' })\n * })\n * )\n * ```\n */\n updateQueryData: UpdateQueryDataThunk<Definitions, RootState<Definitions, string, ReducerPath>>;\n\n /**\n * A Redux thunk action creator that, when dispatched, acts as an artificial API request to upsert a value into the cache.\n *\n * The thunk action creator accepts three arguments: the name of the endpoint we are updating (such as `'getPost'`), the appropriate query arg values to construct the desired cache key, and the data to upsert.\n *\n * If no cache entry for that cache key exists, a cache entry will be created and the data added. If a cache entry already exists, this will _overwrite_ the existing cache entry data.\n *\n * The thunk executes _asynchronously_, and returns a promise that resolves when the store has been updated.\n *\n * If dispatched while an actual request is in progress, both the upsert and request will be handled as soon as they resolve, resulting in a \"last result wins\" update behavior.\n *\n * @example\n *\n * ```ts\n * await dispatch(\n * api.util.upsertQueryData('getPost', {id: 1}, {id: 1, text: \"Hello!\"})\n * )\n * ```\n */\n upsertQueryData: UpsertQueryDataThunk<Definitions, RootState<Definitions, string, ReducerPath>>;\n /**\n * A Redux thunk that applies a JSON diff/patch array to the cached data for a given query result. This immediately updates the Redux state with those changes.\n *\n * The thunk accepts three arguments: the name of the endpoint we are updating (such as `'getPost'`), the appropriate query arg values to construct the desired cache key, and a JSON diff/patch array as produced by Immer's `produceWithPatches`.\n *\n * This is typically used as the second step in implementing optimistic updates. If a request fails, the optimistically-applied changes can be reverted by dispatching `patchQueryData` with the `inversePatches` that were generated by `updateQueryData` earlier.\n *\n * In cases where it is desired to simply revert the previous changes, it may be preferable to call the `undo` method returned from dispatching `updateQueryData` instead.\n *\n * @example\n * ```ts\n * const patchCollection = dispatch(\n * api.util.updateQueryData('getPosts', undefined, (draftPosts) => {\n * draftPosts.push({ id: 1, name: 'Teddy' })\n * })\n * )\n *\n * // later\n * dispatch(\n * api.util.patchQueryData('getPosts', undefined, patchCollection.inversePatches)\n * )\n *\n * // or\n * patchCollection.undo()\n * ```\n */\n patchQueryData: PatchQueryDataThunk<Definitions, RootState<Definitions, string, ReducerPath>>;\n\n /**\n * A Redux action creator that can be dispatched to manually reset the api state completely. This will immediately remove all existing cache entries, and all queries will be considered 'uninitialized'.\n *\n * @example\n *\n * ```ts\n * dispatch(api.util.resetApiState())\n * ```\n */\n resetApiState: SliceActions['resetApiState'];\n /**\n * A Redux action creator that can be used to manually invalidate cache tags for [automated re-fetching](../../usage/automated-refetching.mdx).\n *\n * The action creator accepts one argument: the cache tags to be invalidated. It returns an action with those tags as a payload, and the corresponding `invalidateTags` action type for the api.\n *\n * Dispatching the result of this action creator will [invalidate](../../usage/automated-refetching.mdx#invalidating-cache-data) the given tags, causing queries to automatically re-fetch if they are subscribed to cache data that [provides](../../usage/automated-refetching.mdx#providing-cache-data) the corresponding tags.\n *\n * The array of tags provided to the action creator should be in one of the following formats, where `TagType` is equal to a string provided to the [`tagTypes`](../createApi.mdx#tagtypes) property of the api:\n *\n * - `[TagType]`\n * - `[{ type: TagType }]`\n * - `[{ type: TagType, id: number | string }]`\n *\n * @example\n *\n * ```ts\n * dispatch(api.util.invalidateTags(['Post']))\n * dispatch(api.util.invalidateTags([{ type: 'Post', id: 1 }]))\n * dispatch(\n * api.util.invalidateTags([\n * { type: 'Post', id: 1 },\n * { type: 'Post', id: 'LIST' },\n * ])\n * )\n * ```\n */\n invalidateTags: ActionCreatorWithPayload<Array<TagDescription<TagTypes>>, string>;\n\n /**\n * A function to select all `{ endpointName, originalArgs, queryCacheKey }` combinations that would be invalidated by a specific set of tags.\n *\n * Can be used for mutations that want to do optimistic updates instead of invalidating a set of tags, but don't know exactly what they need to update.\n */\n selectInvalidatedBy: (state: RootState<Definitions, string, ReducerPath>, tags: ReadonlyArray<TagDescription<TagTypes>>) => Array<{\n endpointName: string;\n originalArgs: any;\n queryCacheKey: string;\n }>;\n\n /**\n * A function to select all arguments currently cached for a given endpoint.\n *\n * Can be used for mutations that want to do optimistic updates instead of invalidating a set of tags, but don't know exactly what they need to update.\n */\n selectCachedArgsForQuery: <QueryName extends QueryKeys<Definitions>>(state: RootState<Definitions, string, ReducerPath>, queryName: QueryName) => Array<QueryArgFrom<Definitions[QueryName]>>;\n };\n /**\n * Endpoints based on the input endpoints provided to `createApi`, containing `select` and `action matchers`.\n */\n endpoints: { [K in keyof Definitions]: Definitions[K] extends QueryDefinition<any, any, any, any, any> ? ApiEndpointQuery<Definitions[K], Definitions> : Definitions[K] extends MutationDefinition<any, any, any, any, any> ? ApiEndpointMutation<Definitions[K], Definitions> : never };\n };\n}\nexport interface ApiEndpointQuery<\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nDefinition extends QueryDefinition<any, any, any, any, any>,\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nDefinitions extends EndpointDefinitions> extends BuildThunksApiEndpointQuery<Definition>, BuildInitiateApiEndpointQuery<Definition>, BuildSelectorsApiEndpointQuery<Definition, Definitions> {\n name: string;\n /**\n * All of these are `undefined` at runtime, purely to be used in TypeScript declarations!\n */\n Types: NonNullable<Definition['Types']>;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport interface ApiEndpointMutation<\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nDefinition extends MutationDefinition<any, any, any, any, any>,\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nDefinitions extends EndpointDefinitions> extends BuildThunksApiEndpointMutation<Definition>, BuildInitiateApiEndpointMutation<Definition>, BuildSelectorsApiEndpointMutation<Definition, Definitions> {\n name: string;\n /**\n * All of these are `undefined` at runtime, purely to be used in TypeScript declarations!\n */\n Types: NonNullable<Definition['Types']>;\n}\nexport type ListenerActions = {\n /**\n * Will cause the RTK Query middleware to trigger any refetchOnReconnect-related behavior\n * @link https://rtk-query-docs.netlify.app/api/setupListeners\n */\n onOnline: typeof onOnline;\n onOffline: typeof onOffline;\n /**\n * Will cause the RTK Query middleware to trigger any refetchOnFocus-related behavior\n * @link https://rtk-query-docs.netlify.app/api/setupListeners\n */\n onFocus: typeof onFocus;\n onFocusLost: typeof onFocusLost;\n};\nexport type InternalActions = SliceActions & ListenerActions;\nexport interface CoreModuleOptions {\n /**\n * A selector creator (usually from `reselect`, or matching the same signature)\n */\n createSelector?: typeof _createSelector;\n}\n\n/**\n * Creates a module containing the basic redux logic for use with `buildCreateApi`.\n *\n * @example\n * ```ts\n * const createBaseApi = buildCreateApi(coreModule());\n * ```\n */\nexport const coreModule = ({\n createSelector = _createSelector\n}: CoreModuleOptions = {}): Module<CoreModule> => ({\n name: coreModuleName,\n init(api, {\n baseQuery,\n tagTypes,\n reducerPath,\n serializeQueryArgs,\n keepUnusedDataFor,\n refetchOnMountOrArgChange,\n refetchOnFocus,\n refetchOnReconnect,\n invalidationBehavior\n }, context) {\n enablePatches();\n assertCast<InternalSerializeQueryArgs>(serializeQueryArgs);\n const assertTagType: AssertTagTypes = tag => {\n if (typeof process !== 'undefined' && process.env.NODE_ENV === 'development') {\n if (!tagTypes.includes((tag.type as any))) {\n console.error(`Tag type '${tag.type}' was used, but not specified in \\`tagTypes\\`!`);\n }\n }\n return tag;\n };\n Object.assign(api, {\n reducerPath,\n endpoints: {},\n internalActions: {\n onOnline,\n onOffline,\n onFocus,\n onFocusLost\n },\n util: {}\n });\n const {\n queryThunk,\n mutationThunk,\n patchQueryData,\n updateQueryData,\n upsertQueryData,\n prefetch,\n buildMatchThunkActions\n } = buildThunks({\n baseQuery,\n reducerPath,\n context,\n api,\n serializeQueryArgs,\n assertTagType\n });\n const {\n reducer,\n actions: sliceActions\n } = buildSlice({\n context,\n queryThunk,\n mutationThunk,\n reducerPath,\n assertTagType,\n config: {\n refetchOnFocus,\n refetchOnReconnect,\n refetchOnMountOrArgChange,\n keepUnusedDataFor,\n reducerPath,\n invalidationBehavior\n }\n });\n safeAssign(api.util, {\n patchQueryData,\n updateQueryData,\n upsertQueryData,\n prefetch,\n resetApiState: sliceActions.resetApiState\n });\n safeAssign(api.internalActions, sliceActions);\n const {\n middleware,\n actions: middlewareActions\n } = buildMiddleware({\n reducerPath,\n context,\n queryThunk,\n mutationThunk,\n api,\n assertTagType\n });\n safeAssign(api.util, middlewareActions);\n safeAssign(api, {\n reducer: (reducer as any),\n middleware\n });\n const {\n buildQuerySelector,\n buildMutationSelector,\n selectInvalidatedBy,\n selectCachedArgsForQuery\n } = buildSelectors({\n serializeQueryArgs: (serializeQueryArgs as any),\n reducerPath,\n createSelector\n });\n safeAssign(api.util, {\n selectInvalidatedBy,\n selectCachedArgsForQuery\n });\n const {\n buildInitiateQuery,\n buildInitiateMutation,\n getRunningMutationThunk,\n getRunningMutationsThunk,\n getRunningQueriesThunk,\n getRunningQueryThunk\n } = buildInitiate({\n queryThunk,\n mutationThunk,\n api,\n serializeQueryArgs: (serializeQueryArgs as any),\n context\n });\n safeAssign(api.util, {\n getRunningMutationThunk,\n getRunningMutationsThunk,\n getRunningQueryThunk,\n getRunningQueriesThunk\n });\n return {\n name: coreModuleName,\n injectEndpoint(endpointName, definition) {\n const anyApi = ((api as any) as Api<any, Record<string, any>, string, string, CoreModule>);\n anyApi.endpoints[endpointName] ??= ({} as any);\n if (isQueryDefinition(definition)) {\n safeAssign(anyApi.endpoints[endpointName], {\n name: endpointName,\n select: buildQuerySelector(endpointName, definition),\n initiate: buildInitiateQuery(endpointName, definition)\n }, buildMatchThunkActions(queryThunk, endpointName));\n } else if (isMutationDefinition(definition)) {\n safeAssign(anyApi.endpoints[endpointName], {\n name: endpointName,\n select: buildMutationSelector(),\n initiate: buildInitiateMutation(endpointName)\n }, buildMatchThunkActions(mutationThunk, endpointName));\n }\n }\n };\n }\n});","import { buildCreateApi } from '../createApi';\nimport { coreModule } from './module';\nexport const createApi = /* @__PURE__ */buildCreateApi(coreModule());\nexport { QueryStatus } from './apiState';\nexport type { CombinedState, MutationKeys, QueryCacheKey, QueryKeys, QuerySubState, RootState, SubscriptionOptions } from './apiState';\nexport type { MutationActionCreatorResult, QueryActionCreatorResult, StartQueryActionCreatorOptions } from './buildInitiate';\nexport type { MutationCacheLifecycleApi, MutationLifecycleApi, QueryCacheLifecycleApi, QueryLifecycleApi, SubscriptionSelectors } from './buildMiddleware';\nexport { skipToken } from './buildSelectors';\nexport type { MutationResultSelectorResult, QueryResultSelectorResult, SkipToken } from './buildSelectors';\nexport type { SliceActions } from './buildSlice';\nexport type { PatchQueryDataThunk, UpdateQueryDataThunk, UpsertQueryDataThunk } from './buildThunks';\nexport { coreModuleName } from './module';\nexport type { ApiEndpointMutation, ApiEndpointQuery, CoreModule, InternalActions, PrefetchOptions, ThunkWithReturnValue } from './module';\nexport { setupListeners } from './setupListeners';\nexport { buildCreateApi, coreModule };","import * as React from 'react';\nimport { FocusZone } from './FocusZone';\nimport { IRefObject, Point } from '@uifabric/utilities';\n\n/**\n * FocusZone component class interface.\n * {@docCategory FocusZone}\n */\nexport interface IFocusZone {\n /**\n * Sets focus to the first tabbable item in the zone.\n * @param forceIntoFirstElement - If true, focus will be forced into the first element, even\n * if focus is already in the focus zone.\n * @returns True if focus could be set to an active element, false if no operation was taken.\n */\n focus(forceIntoFirstElement?: boolean): boolean;\n\n /**\n * Sets focus to the last tabbable item in the zone.\n * @returns True if focus could be set to an active element, false if no operation was taken.\n */\n focusLast(): boolean;\n\n /**\n * Sets focus to a specific child element within the zone. This can be used in conjunction with\n * shouldReceiveFocus to create delayed focus scenarios (like animate the scroll position to the correct\n * location and then focus.)\n * @param childElement - The child element within the zone to focus.\n * @param forceAlignment - If true, focus alignment will be set according to the element provided.\n * @returns True if focus could be set to an active element, false if no operation was taken.\n */\n focusElement(childElement?: HTMLElement, forceAlignment?: boolean): boolean;\n\n /**\n * Forces horizontal alignment in the context of vertical arrowing to use specific point as the reference, rather\n * than a center based on the last horizontal motion.\n * @param point - the new reference point.\n */\n setFocusAlignment(point: Point): void;\n}\n\n/**\n * FocusZone component props.\n * {@docCategory FocusZone}\n */\nexport interface IFocusZoneProps extends React.HTMLAttributes<HTMLElement | FocusZone> {\n /**\n * Optional callback to access the IFocusZone interface. Use this instead of ref for accessing\n * the public methods and properties of the component.\n */\n componentRef?: IRefObject<IFocusZone>;\n\n /**\n * Optional callback to access the root DOM element.\n * @deprecated Temporary solution which will be replaced with ref in the V8 release.\n */\n elementRef?: React.Ref<HTMLElement>;\n\n /**\n * Additional class name to provide on the root element, in addition to the ms-FocusZone class.\n */\n className?: string;\n\n /**\n * Defines which arrows to react to.\n * @defaultvalue FocusZoneDirection.bidirectional\n */\n direction?: FocusZoneDirection;\n\n /**\n * Optionally defines the initial tabbable element inside the FocusZone.\n * If a string is passed then it is treated as a selector for identifying the initial tabbable element.\n * If a function is passed then it uses the root element as a parameter to return the initial tabbable element.\n */\n defaultTabbableElement?: string | ((root: HTMLElement) => HTMLElement);\n\n /**\n * Optionally provide a selector for identifying the initial active element.\n * @deprecated Use `defaultTabbableElement` instead.\n */\n defaultActiveElement?: string;\n\n /**\n * Determines if a default tabbable element should be force focused on FocusZone mount.\n * @default false\n */\n shouldFocusOnMount?: boolean;\n\n /**\n * If set, the FocusZone will not be tabbable and keyboard navigation will be disabled.\n * This does not affect disabled attribute of any child.\n */\n disabled?: boolean;\n\n /**\n * Element type the root element will use. Default is \"div\".\n * @deprecated Use 'as' instead.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n elementType?: any /* TODO should be `keyof React.ReactHTML`, tracking with https://github.com/Microsoft/TypeScript/issues/30050 */;\n\n /**\n * A component that should be used as the root element of the FocusZone component.\n */\n as?: React.ElementType;\n\n /**\n * If set, will cycle to the beginning of the targets once the user navigates to the\n * next target while at the end, and to the end when navigate to the previous at the beginning.\n */\n isCircularNavigation?: boolean;\n\n /**\n * If provided, this callback will be executed on keypresses to determine if the user\n * intends to navigate into the inner zone. Returning true will ask the first inner zone to\n * set focus.\n * @deprecated Use `shouldEnterInnerZone` instead.\n */\n isInnerZoneKeystroke?: (ev: React.KeyboardEvent<HTMLElement>) => boolean;\n\n /**\n * Callback function that will be executed on keypresses to determine if the user intends to navigate into\n * the inner (nested) zone. Returning true will ask the first inner zone to set focus.\n */\n shouldEnterInnerZone?: (ev: React.KeyboardEvent<HTMLElement>) => boolean;\n\n /**\n * Sets the aria-labelledby attribute.\n * @deprecated Directly use the `aria-labelledby` attribute instead\n */\n ariaLabelledBy?: string;\n\n /**\n * Sets the aria-describedby attribute.\n * @deprecated Directly use the `aria-describedby` attribute instead\n */\n ariaDescribedBy?: string;\n\n /**\n * Callback for when one of immediate children elements gets active by getting focused\n * or by having one of its respective children elements focused.\n */\n onActiveElementChanged?: (element?: HTMLElement, ev?: React.FocusEvent<HTMLElement>) => void;\n\n /**\n * Deprecated at v1.12.1. DIV props provided to the FocusZone will be mixed into the root element.\n * @deprecated DIV props provided to the FocusZone will be mixed into the root element.\n */\n rootProps?: React.HTMLAttributes<HTMLDivElement>;\n\n /**\n * Callback method for determining if focus should indeed be set on the given element.\n * @param element - The child element within the zone to focus.\n * @returns True if focus should be set to the given element, false to avoid setting focus.\n * @deprecated Use `shouldReceiveFocus` instead.\n */\n onBeforeFocus?: (childElement?: HTMLElement) => boolean;\n\n /**\n * Callback method for determining if focus should indeed be set on the given element.\n * @param element - The child element within the zone to focus.\n * @returns True if focus should be set to the given element, false to avoid setting focus.\n */\n shouldReceiveFocus?: (childElement?: HTMLElement) => boolean;\n\n /** Allows focus to park on root when focus is in the `FocusZone` at render time. */\n allowFocusRoot?: boolean;\n\n /**\n * Allows tab key to be handled to tab through a list of items in the focus zone,\n * an unfortunate side effect is that users will not be able to tab out of the focus zone\n * and have to hit escape or some other key.\n * @deprecated Use `handleTabKey` instead.\n *\n */\n allowTabKey?: boolean;\n\n /**\n * Allows tab key to be handled to tab through a list of items in the focus zone,\n * an unfortunate side effect is that users will not be able to tab out of the focus zone\n * and have to hit escape or some other key.\n */\n handleTabKey?: FocusZoneTabbableElements;\n\n /**\n * If true and FocusZone's root element (container) receives focus, the focus will land either on the\n * defaultTabbableElement (if set) or on the first tabbable element of this FocusZone.\n * Usually a case for nested focus zones, when the nested focus zone's container is a focusable element.\n */\n shouldFocusInnerElementWhenReceivedFocus?: boolean;\n\n /**\n * If true and TAB key is not handled by FocusZone, resets current active element to null value.\n * For example, when roving index is not desirable and focus should always reset to the default tabbable element.\n */\n shouldResetActiveElementWhenTabFromZone?: boolean;\n\n /**\n * Determines whether the FocusZone will walk up the DOM trying to invoke click callbacks on focusable elements on\n * Enter and Space keydowns to ensure accessibility for tags that don't guarantee this behavior.\n * @defaultvalue true\n */\n shouldRaiseClicks?: boolean;\n\n /**\n * A callback method to determine if the input element should lose focus on arrow keys\n * @param inputElement - The input element which is to loose focus.\n * @returns True if input element should loose focus or false otherwise.\n */\n shouldInputLoseFocusOnArrowKey?: (inputElement: HTMLInputElement) => boolean;\n\n /**\n * Determines whether to disable the paging support for Page Up and Page Down keyboard scenarios.\n * @defaultvalue false\n */\n pagingSupportDisabled?: boolean;\n\n /**\n * Determines whether to check for data-no-horizontal-wrap or data-no-vertical-wrap attributes\n * when determining how to move focus\n * @defaultvalue false\n */\n checkForNoWrap?: boolean;\n\n /**\n * Whether the FocusZone should allow focus events to propagate past the FocusZone.\n * @deprecated Use `stopFocusPropagation` instead.\n */\n doNotAllowFocusEventToPropagate?: boolean;\n\n /**\n * Whether the FocusZone should allow focus events to propagate past the FocusZone.\n */\n stopFocusPropagation?: boolean;\n\n /**\n * Callback to notify creators that focus has been set on the FocusZone\n * @deprecated Use `onFocus` instead.\n */\n onFocusNotification?: () => void;\n\n /**\n * Callback called when \"focus\" event triggered in FocusZone.\n * @param event - React's original FocusEvent.\n */\n onFocus?: (event: React.FocusEvent<HTMLElement | FocusZone>) => void;\n\n /**\n * If true, FocusZone prevents the default behavior of Keyboard events when changing focus between elements.\n * @defaultvalue false\n */\n preventDefaultWhenHandled?: boolean;\n\n /**\n * If true, prevents the FocusZone from attempting to restore the focus to the inner element when the focus is on the\n * root element after componentDidUpdate.\n * @defaultvalue false\n */\n preventFocusRestoration?: boolean;\n}\n/**\n * {@docCategory FocusZone}\n */\nexport const FocusZoneTabbableElements = {\n /** Tabbing is not allowed */\n none: 0 as 0,\n\n /** All tabbing action is allowed */\n all: 1 as 1,\n\n /** Tabbing is allowed only on input elements */\n inputOnly: 2 as 2,\n};\n\n/**\n * {@docCategory FocusZone}\n */\nexport type FocusZoneTabbableElements = typeof FocusZoneTabbableElements[keyof typeof FocusZoneTabbableElements];\n\n/**\n * {@docCategory FocusZone}\n */\nexport enum FocusZoneDirection {\n /** Only react to up/down arrows. */\n vertical = 0,\n\n /** Only react to left/right arrows. */\n horizontal = 1,\n\n /** React to all arrows. */\n bidirectional = 2,\n\n /**\n * React to all arrows. Navigate next item in DOM on right/down arrow keys and previous - left/up arrow keys.\n * Right and Left arrow keys are swapped in RTL mode.\n */\n domOrder = 3,\n}\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","var parseIsSsrByDefault = function parseIsSsrByDefault() {\n return !(typeof window !== 'undefined' && window.document && window.document.createElement && window.setTimeout);\n};\nexport var Global = {\n isSsr: parseIsSsrByDefault(),\n get: function get(key) {\n return Global[key];\n },\n set: function set(key, value) {\n if (typeof key === 'string') {\n Global[key] = value;\n } else {\n var keys = Object.keys(key);\n if (keys && keys.length) {\n keys.forEach(function (k) {\n Global[k] = key[k];\n });\n }\n }\n }\n};","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : String(i); }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport mapValues from 'lodash/mapValues';\nimport every from 'lodash/every';\nimport { getTicksOfScale, parseScale, checkDomainOfScale, getBandSizeOfAxis } from './ChartUtils';\nimport { findChildByType } from './ReactUtils';\nimport { getPercentValue } from './DataUtils';\nimport { Bar } from '../cartesian/Bar';\n\n/**\n * Calculate the scale function, position, width, height of axes\n * @param {Object} props Latest props\n * @param {Object} axisMap The configuration of axes\n * @param {Object} offset The offset of main part in the svg element\n * @param {String} axisType The type of axes, x-axis or y-axis\n * @param {String} chartName The name of chart\n * @return {Object} Configuration\n */\nexport var formatAxisMap = function formatAxisMap(props, axisMap, offset, axisType, chartName) {\n var width = props.width,\n height = props.height,\n layout = props.layout,\n children = props.children;\n var ids = Object.keys(axisMap);\n var steps = {\n left: offset.left,\n leftMirror: offset.left,\n right: width - offset.right,\n rightMirror: width - offset.right,\n top: offset.top,\n topMirror: offset.top,\n bottom: height - offset.bottom,\n bottomMirror: height - offset.bottom\n };\n var hasBar = !!findChildByType(children, Bar);\n return ids.reduce(function (result, id) {\n var axis = axisMap[id];\n var orientation = axis.orientation,\n domain = axis.domain,\n _axis$padding = axis.padding,\n padding = _axis$padding === void 0 ? {} : _axis$padding,\n mirror = axis.mirror,\n reversed = axis.reversed;\n var offsetKey = \"\".concat(orientation).concat(mirror ? 'Mirror' : '');\n var calculatedPadding, range, x, y, needSpace;\n if (axis.type === 'number' && (axis.padding === 'gap' || axis.padding === 'no-gap')) {\n var diff = domain[1] - domain[0];\n var smallestDistanceBetweenValues = Infinity;\n var sortedValues = axis.categoricalDomain.sort();\n sortedValues.forEach(function (value, index) {\n if (index > 0) {\n smallestDistanceBetweenValues = Math.min((value || 0) - (sortedValues[index - 1] || 0), smallestDistanceBetweenValues);\n }\n });\n if (Number.isFinite(smallestDistanceBetweenValues)) {\n var smallestDistanceInPercent = smallestDistanceBetweenValues / diff;\n var rangeWidth = axis.layout === 'vertical' ? offset.height : offset.width;\n if (axis.padding === 'gap') {\n calculatedPadding = smallestDistanceInPercent * rangeWidth / 2;\n }\n if (axis.padding === 'no-gap') {\n var gap = getPercentValue(props.barCategoryGap, smallestDistanceInPercent * rangeWidth);\n var halfBand = smallestDistanceInPercent * rangeWidth / 2;\n calculatedPadding = halfBand - gap - (halfBand - gap) / rangeWidth * gap;\n }\n }\n }\n if (axisType === 'xAxis') {\n range = [offset.left + (padding.left || 0) + (calculatedPadding || 0), offset.left + offset.width - (padding.right || 0) - (calculatedPadding || 0)];\n } else if (axisType === 'yAxis') {\n range = layout === 'horizontal' ? [offset.top + offset.height - (padding.bottom || 0), offset.top + (padding.top || 0)] : [offset.top + (padding.top || 0) + (calculatedPadding || 0), offset.top + offset.height - (padding.bottom || 0) - (calculatedPadding || 0)];\n } else {\n range = axis.range;\n }\n if (reversed) {\n range = [range[1], range[0]];\n }\n var _parseScale = parseScale(axis, chartName, hasBar),\n scale = _parseScale.scale,\n realScaleType = _parseScale.realScaleType;\n scale.domain(domain).range(range);\n checkDomainOfScale(scale);\n var ticks = getTicksOfScale(scale, _objectSpread(_objectSpread({}, axis), {}, {\n realScaleType: realScaleType\n }));\n if (axisType === 'xAxis') {\n needSpace = orientation === 'top' && !mirror || orientation === 'bottom' && mirror;\n x = offset.left;\n y = steps[offsetKey] - needSpace * axis.height;\n } else if (axisType === 'yAxis') {\n needSpace = orientation === 'left' && !mirror || orientation === 'right' && mirror;\n x = steps[offsetKey] - needSpace * axis.width;\n y = offset.top;\n }\n var finalAxis = _objectSpread(_objectSpread(_objectSpread({}, axis), ticks), {}, {\n realScaleType: realScaleType,\n x: x,\n y: y,\n scale: scale,\n width: axisType === 'xAxis' ? offset.width : axis.width,\n height: axisType === 'yAxis' ? offset.height : axis.height\n });\n finalAxis.bandSize = getBandSizeOfAxis(finalAxis, ticks);\n if (!axis.hide && axisType === 'xAxis') {\n steps[offsetKey] += (needSpace ? -1 : 1) * finalAxis.height;\n } else if (!axis.hide) {\n steps[offsetKey] += (needSpace ? -1 : 1) * finalAxis.width;\n }\n return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, id, finalAxis));\n }, {});\n};\nexport var rectWithPoints = function rectWithPoints(_ref, _ref2) {\n var x1 = _ref.x,\n y1 = _ref.y;\n var x2 = _ref2.x,\n y2 = _ref2.y;\n return {\n x: Math.min(x1, x2),\n y: Math.min(y1, y2),\n width: Math.abs(x2 - x1),\n height: Math.abs(y2 - y1)\n };\n};\n\n/**\n * Compute the x, y, width, and height of a box from two reference points.\n * @param {Object} coords x1, x2, y1, and y2\n * @return {Object} object\n */\nexport var rectWithCoords = function rectWithCoords(_ref3) {\n var x1 = _ref3.x1,\n y1 = _ref3.y1,\n x2 = _ref3.x2,\n y2 = _ref3.y2;\n return rectWithPoints({\n x: x1,\n y: y1\n }, {\n x: x2,\n y: y2\n });\n};\nexport var ScaleHelper = /*#__PURE__*/function () {\n function ScaleHelper(scale) {\n _classCallCheck(this, ScaleHelper);\n this.scale = scale;\n }\n _createClass(ScaleHelper, [{\n key: \"domain\",\n get: function get() {\n return this.scale.domain;\n }\n }, {\n key: \"range\",\n get: function get() {\n return this.scale.range;\n }\n }, {\n key: \"rangeMin\",\n get: function get() {\n return this.range()[0];\n }\n }, {\n key: \"rangeMax\",\n get: function get() {\n return this.range()[1];\n }\n }, {\n key: \"bandwidth\",\n get: function get() {\n return this.scale.bandwidth;\n }\n }, {\n key: \"apply\",\n value: function apply(value) {\n var _ref4 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n bandAware = _ref4.bandAware,\n position = _ref4.position;\n if (value === undefined) {\n return undefined;\n }\n if (position) {\n switch (position) {\n case 'start':\n {\n return this.scale(value);\n }\n case 'middle':\n {\n var offset = this.bandwidth ? this.bandwidth() / 2 : 0;\n return this.scale(value) + offset;\n }\n case 'end':\n {\n var _offset = this.bandwidth ? this.bandwidth() : 0;\n return this.scale(value) + _offset;\n }\n default:\n {\n return this.scale(value);\n }\n }\n }\n if (bandAware) {\n var _offset2 = this.bandwidth ? this.bandwidth() / 2 : 0;\n return this.scale(value) + _offset2;\n }\n return this.scale(value);\n }\n }, {\n key: \"isInRange\",\n value: function isInRange(value) {\n var range = this.range();\n var first = range[0];\n var last = range[range.length - 1];\n return first <= last ? value >= first && value <= last : value >= last && value <= first;\n }\n }], [{\n key: \"create\",\n value: function create(obj) {\n return new ScaleHelper(obj);\n }\n }]);\n return ScaleHelper;\n}();\n_defineProperty(ScaleHelper, \"EPS\", 1e-4);\nexport var createLabeledScales = function createLabeledScales(options) {\n var scales = Object.keys(options).reduce(function (res, key) {\n return _objectSpread(_objectSpread({}, res), {}, _defineProperty({}, key, ScaleHelper.create(options[key])));\n }, {});\n return _objectSpread(_objectSpread({}, scales), {}, {\n apply: function apply(coord) {\n var _ref5 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n bandAware = _ref5.bandAware,\n position = _ref5.position;\n return mapValues(coord, function (value, label) {\n return scales[label].apply(value, {\n bandAware: bandAware,\n position: position\n });\n });\n },\n isInRange: function isInRange(coord) {\n return every(coord, function (value, label) {\n return scales[label].isInRange(value);\n });\n }\n });\n};\n\n/** Normalizes the angle so that 0 <= angle < 180.\n * @param {number} angle Angle in degrees.\n * @return {number} the normalized angle with a value of at least 0 and never greater or equal to 180. */\nexport function normalizeAngle(angle) {\n return (angle % 180 + 180) % 180;\n}\n\n/** Calculates the width of the largest horizontal line that fits inside a rectangle that is displayed at an angle.\n * @param {Object} size Width and height of the text in a horizontal position.\n * @param {number} angle Angle in degrees in which the text is displayed.\n * @return {number} The width of the largest horizontal line that fits inside a rectangle that is displayed at an angle.\n */\nexport var getAngledRectangleWidth = function getAngledRectangleWidth(_ref6) {\n var width = _ref6.width,\n height = _ref6.height;\n var angle = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n // Ensure angle is >= 0 && < 180\n var normalizedAngle = normalizeAngle(angle);\n var angleRadians = normalizedAngle * Math.PI / 180;\n\n /* Depending on the height and width of the rectangle, we may need to use different formulas to calculate the angled\n * width. This threshold defines when each formula should kick in. */\n var angleThreshold = Math.atan(height / width);\n var angledWidth = angleRadians > angleThreshold && angleRadians < Math.PI - angleThreshold ? height / Math.sin(angleRadians) : width / Math.cos(angleRadians);\n return Math.abs(angledWidth);\n};","var isProduction = process.env.NODE_ENV === 'production';\nfunction warning(condition, message) {\n if (!isProduction) {\n if (condition) {\n return;\n }\n\n var text = \"Warning: \" + message;\n\n if (typeof console !== 'undefined') {\n console.warn(text);\n }\n\n try {\n throw Error(text);\n } catch (x) {}\n }\n}\n\nexport default warning;\n","import { GlobalSettings } from '../GlobalSettings';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type ISettings = { [key: string]: any };\nexport type ISettingsFunction = (settings: ISettings) => ISettings;\n\n/**\n * @deprecated Use ISettings.\n */\nexport type Settings = ISettings;\n\n/**\n * @deprecated Use ISettingsFunction.\n */\nexport type SettingsFunction = ISettingsFunction;\n\nexport interface ICustomizations {\n settings: ISettings;\n scopedSettings: { [key: string]: ISettings };\n inCustomizerContext?: boolean;\n}\n\nconst CustomizationsGlobalKey = 'customizations';\nconst NO_CUSTOMIZATIONS = { settings: {}, scopedSettings: {}, inCustomizerContext: false };\n\nlet _allSettings = GlobalSettings.getValue<ICustomizations>(CustomizationsGlobalKey, {\n settings: {},\n scopedSettings: {},\n inCustomizerContext: false,\n});\n\nlet _events: (() => void)[] = [];\n\nexport class Customizations {\n private static _suppressUpdates: boolean;\n\n public static reset(): void {\n _allSettings.settings = {};\n _allSettings.scopedSettings = {};\n }\n\n /** Apply global Customization settings.\n * @example Customizations.applySettings(\\{ theme: \\{...\\} \\});\n */\n public static applySettings(settings: ISettings): void {\n _allSettings.settings = { ..._allSettings.settings, ...settings };\n Customizations._raiseChange();\n }\n\n /** Apply Customizations to a particular named scope, like a component.\n * @example Customizations.applyScopedSettings('Nav', \\{ styles: () =\\> \\{\\} \\});\n */\n public static applyScopedSettings(scopeName: string, settings: ISettings): void {\n _allSettings.scopedSettings[scopeName] = { ..._allSettings.scopedSettings[scopeName], ...settings };\n Customizations._raiseChange();\n }\n\n public static getSettings(\n properties: string[],\n scopeName?: string,\n localSettings: ICustomizations = NO_CUSTOMIZATIONS,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ): any {\n const settings: ISettings = {};\n const localScopedSettings = (scopeName && localSettings.scopedSettings[scopeName]) || {};\n const globalScopedSettings = (scopeName && _allSettings.scopedSettings[scopeName]) || {};\n\n for (let property of properties) {\n settings[property] =\n localScopedSettings[property] ||\n localSettings.settings[property] ||\n globalScopedSettings[property] ||\n _allSettings.settings[property];\n }\n\n return settings;\n }\n\n /** Used to run some code that sets Customizations without triggering an update until the end.\n * Useful for applying Customizations that don't affect anything currently rendered, or for\n * applying many customizations at once.\n * @param suppressUpdate - Do not raise the change event at the end, preventing all updates\n */\n public static applyBatchedUpdates(code: () => void, suppressUpdate?: boolean): void {\n Customizations._suppressUpdates = true;\n try {\n code();\n } catch {\n /* do nothing */\n }\n Customizations._suppressUpdates = false;\n if (!suppressUpdate) {\n Customizations._raiseChange();\n }\n }\n\n public static observe(onChange: () => void): void {\n _events.push(onChange);\n }\n\n public static unobserve(onChange: () => void): void {\n _events = _events.filter((cb: () => void) => cb !== onChange);\n }\n\n private static _raiseChange(): void {\n if (!Customizations._suppressUpdates) {\n _events.forEach((cb: () => void) => cb());\n }\n }\n}\n","import { assign } from './object';\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\n/**\n * @internal\n */\nexport interface IEventRecord {\n target: any;\n eventName: string;\n parent: any;\n callback: (args?: any) => void;\n elementCallback?: (...args: any[]) => void;\n objectCallback?: (args?: any) => void;\n options?: boolean | AddEventListenerOptions;\n}\n\n/**\n * @internal\n */\nexport interface IEventRecordsByName {\n [eventName: string]: IEventRecordList;\n}\n\n/**\n * @internal\n */\nexport interface IEventRecordList {\n [id: string]: IEventRecord[] | number;\n count: number;\n}\n\n/**\n * @internal\n */\nexport interface IDeclaredEventsByName {\n [eventName: string]: boolean;\n}\n\n/** An instance of EventGroup allows anything with a handle to it to trigger events on it.\n * If the target is an HTMLElement, the event will be attached to the element and can be\n * triggered as usual (like clicking for onClick).\n * The event can be triggered by calling EventGroup.raise() here. If the target is an\n * HTMLElement, the event gets raised and is handled by the browser. Otherwise, it gets\n * handled here in EventGroup, and the handler is called in the context of the parent\n * (which is passed in in the constructor).\n *\n * @public\n * {@docCategory EventGroup}\n */\nexport class EventGroup {\n private static _uniqueId: number = 0;\n private _parent: any;\n private _eventRecords: IEventRecord[];\n private _id: number = EventGroup._uniqueId++;\n private _isDisposed: boolean;\n\n /** For IE8, bubbleEvent is ignored here and must be dealt with by the handler.\n * Events raised here by default have bubbling set to false and cancelable set to true.\n * This applies also to built-in events being raised manually here on HTMLElements,\n * which may lead to unexpected behavior if it differs from the defaults.\n *\n */\n public static raise(target: any, eventName: string, eventArgs?: any, bubbleEvent?: boolean): boolean | undefined {\n let retVal;\n\n if (EventGroup._isElement(target)) {\n if (typeof document !== 'undefined' && document.createEvent) {\n let ev = document.createEvent('HTMLEvents');\n\n ev.initEvent(eventName, bubbleEvent || false, true);\n\n assign(ev, eventArgs);\n\n retVal = target.dispatchEvent(ev);\n } else if (typeof document !== 'undefined' && (document as any).createEventObject) {\n // IE8\n let evObj = (document as any).createEventObject(eventArgs);\n // cannot set cancelBubble on evObj, fireEvent will overwrite it\n target.fireEvent('on' + eventName, evObj);\n }\n } else {\n while (target && retVal !== false) {\n let events = <IEventRecordsByName>target.__events__;\n let eventRecords = events ? events[eventName] : null;\n\n if (eventRecords) {\n for (let id in eventRecords) {\n if (eventRecords.hasOwnProperty(id)) {\n let eventRecordList = <IEventRecord[]>eventRecords[id];\n\n for (let listIndex = 0; retVal !== false && listIndex < eventRecordList.length; listIndex++) {\n let record = eventRecordList[listIndex];\n\n if (record.objectCallback) {\n retVal = record.objectCallback.call(record.parent, eventArgs);\n }\n }\n }\n }\n }\n\n // If the target has a parent, bubble the event up.\n target = bubbleEvent ? target.parent : null;\n }\n }\n\n return retVal;\n }\n\n public static isObserved(target: any, eventName: string): boolean {\n let events = target && <IEventRecordsByName>target.__events__;\n\n return !!events && !!events[eventName];\n }\n\n /** Check to see if the target has declared support of the given event. */\n public static isDeclared(target: any, eventName: string): boolean {\n let declaredEvents = target && <IDeclaredEventsByName>target.__declaredEvents;\n\n return !!declaredEvents && !!declaredEvents[eventName];\n }\n\n public static stopPropagation(event: any): void {\n if (event.stopPropagation) {\n event.stopPropagation();\n } else {\n // IE8\n event.cancelBubble = true;\n }\n }\n\n private static _isElement(target: HTMLElement): boolean {\n return (\n !!target && (!!target.addEventListener || (typeof HTMLElement !== 'undefined' && target instanceof HTMLElement))\n );\n }\n\n /** parent: the context in which events attached to non-HTMLElements are called */\n public constructor(parent: any) {\n this._parent = parent;\n this._eventRecords = [];\n }\n\n public dispose(): void {\n if (!this._isDisposed) {\n this._isDisposed = true;\n\n this.off();\n this._parent = null;\n }\n }\n\n /** On the target, attach a set of events, where the events object is a name to function mapping. */\n public onAll(target: any, events: { [key: string]: (args?: any) => void }, useCapture?: boolean): void {\n for (let eventName in events) {\n if (events.hasOwnProperty(eventName)) {\n this.on(target, eventName, events[eventName], useCapture);\n }\n }\n }\n\n /**\n * On the target, attach an event whose handler will be called in the context of the parent\n * of this instance of EventGroup.\n */\n public on(\n target: any,\n eventName: string,\n callback: (args?: any) => void,\n options?: boolean | AddEventListenerOptions,\n ): void {\n if (eventName.indexOf(',') > -1) {\n let events = eventName.split(/[ ,]+/);\n\n for (let i = 0; i < events.length; i++) {\n this.on(target, events[i], callback, options);\n }\n } else {\n let parent = this._parent;\n let eventRecord: IEventRecord = {\n target: target,\n eventName: eventName,\n parent: parent,\n callback: callback,\n options,\n };\n\n // Initialize and wire up the record on the target, so that it can call the callback if the event fires.\n let events = <IEventRecordsByName>(target.__events__ = target.__events__ || {});\n events[eventName] =\n events[eventName] ||\n <IEventRecordList>{\n count: 0,\n };\n events[eventName][this._id] = events[eventName][this._id] || [];\n (<IEventRecord[]>events[eventName][this._id]).push(eventRecord);\n events[eventName].count++;\n\n if (EventGroup._isElement(target)) {\n let processElementEvent = (...args: any[]) => {\n if (this._isDisposed) {\n return;\n }\n\n let result;\n try {\n result = callback.apply(parent, args);\n if (result === false && args[0]) {\n let e = args[0];\n\n if (e.preventDefault) {\n e.preventDefault();\n }\n\n if (e.stopPropagation) {\n e.stopPropagation();\n }\n\n e.cancelBubble = true;\n }\n } catch (e) {\n // ignore\n }\n\n return result;\n };\n\n eventRecord.elementCallback = processElementEvent;\n\n if (target.addEventListener) {\n (<EventTarget>target).addEventListener(eventName, processElementEvent, options);\n } else if (target.attachEvent) {\n // IE8\n target.attachEvent('on' + eventName, processElementEvent);\n }\n } else {\n let processObjectEvent = (...args: any[]) => {\n if (this._isDisposed) {\n return;\n }\n\n return callback.apply(parent, args);\n };\n\n eventRecord.objectCallback = processObjectEvent;\n }\n\n // Remember the record locally, so that it can be removed.\n this._eventRecords.push(eventRecord);\n }\n }\n\n public off(\n target?: any,\n eventName?: string,\n callback?: (args?: any) => void,\n options?: boolean | AddEventListenerOptions,\n ): void {\n for (let i = 0; i < this._eventRecords.length; i++) {\n let eventRecord = this._eventRecords[i];\n if (\n (!target || target === eventRecord.target) &&\n (!eventName || eventName === eventRecord.eventName) &&\n (!callback || callback === eventRecord.callback) &&\n (typeof options !== 'boolean' || options === eventRecord.options)\n ) {\n let events = <IEventRecordsByName>eventRecord.target.__events__;\n let targetArrayLookup = events[eventRecord.eventName];\n let targetArray = targetArrayLookup ? <IEventRecord[]>targetArrayLookup[this._id] : null;\n\n // We may have already target's entries, so check for null.\n if (targetArray) {\n if (targetArray.length === 1 || !callback) {\n targetArrayLookup.count -= targetArray.length;\n delete events[eventRecord.eventName][this._id];\n } else {\n targetArrayLookup.count--;\n targetArray.splice(targetArray.indexOf(eventRecord), 1);\n }\n\n if (!targetArrayLookup.count) {\n delete events[eventRecord.eventName];\n }\n }\n\n if (eventRecord.elementCallback) {\n if (eventRecord.target.removeEventListener) {\n eventRecord.target.removeEventListener(\n eventRecord.eventName,\n eventRecord.elementCallback,\n eventRecord.options,\n );\n } else if (eventRecord.target.detachEvent) {\n // IE8\n eventRecord.target.detachEvent('on' + eventRecord.eventName, eventRecord.elementCallback);\n }\n }\n\n this._eventRecords.splice(i--, 1);\n }\n }\n }\n\n /** Trigger the given event in the context of this instance of EventGroup. */\n public raise(eventName: string, eventArgs?: any, bubbleEvent?: boolean): boolean | undefined {\n return EventGroup.raise(this._parent, eventName, eventArgs, bubbleEvent);\n }\n\n /** Declare an event as being supported by this instance of EventGroup. */\n public declare(event: string | string[]): void {\n let declaredEvents = (this._parent.__declaredEvents = this._parent.__declaredEvents || {});\n\n if (typeof event === 'string') {\n declaredEvents[event] = true;\n } else {\n for (let i = 0; i < event.length; i++) {\n declaredEvents[event[i]] = true;\n }\n }\n }\n}\n","\n// `victory-vendor/d3-scale` (CommonJS)\n// See upstream license: https://github.com/d3/d3-scale/blob/main/LICENSE\n//\n// This file only exists for tooling that doesn't work yet with package.json:exports\n// by proxying through the CommonJS version.\nmodule.exports = require(\"./lib/d3-scale\");\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"Adder\", {\n enumerable: true,\n get: function () {\n return _fsum.Adder;\n }\n});\nObject.defineProperty(exports, \"InternMap\", {\n enumerable: true,\n get: function () {\n return _index.InternMap;\n }\n});\nObject.defineProperty(exports, \"InternSet\", {\n enumerable: true,\n get: function () {\n return _index.InternSet;\n }\n});\nObject.defineProperty(exports, \"ascending\", {\n enumerable: true,\n get: function () {\n return _ascending.default;\n }\n});\nObject.defineProperty(exports, \"bin\", {\n enumerable: true,\n get: function () {\n return _bin.default;\n }\n});\nObject.defineProperty(exports, \"bisect\", {\n enumerable: true,\n get: function () {\n return _bisect.default;\n }\n});\nObject.defineProperty(exports, \"bisectCenter\", {\n enumerable: true,\n get: function () {\n return _bisect.bisectCenter;\n }\n});\nObject.defineProperty(exports, \"bisectLeft\", {\n enumerable: true,\n get: function () {\n return _bisect.bisectLeft;\n }\n});\nObject.defineProperty(exports, \"bisectRight\", {\n enumerable: true,\n get: function () {\n return _bisect.bisectRight;\n }\n});\nObject.defineProperty(exports, \"bisector\", {\n enumerable: true,\n get: function () {\n return _bisector.default;\n }\n});\nObject.defineProperty(exports, \"count\", {\n enumerable: true,\n get: function () {\n return _count.default;\n }\n});\nObject.defineProperty(exports, \"cross\", {\n enumerable: true,\n get: function () {\n return _cross.default;\n }\n});\nObject.defineProperty(exports, \"cumsum\", {\n enumerable: true,\n get: function () {\n return _cumsum.default;\n }\n});\nObject.defineProperty(exports, \"descending\", {\n enumerable: true,\n get: function () {\n return _descending.default;\n }\n});\nObject.defineProperty(exports, \"deviation\", {\n enumerable: true,\n get: function () {\n return _deviation.default;\n }\n});\nObject.defineProperty(exports, \"difference\", {\n enumerable: true,\n get: function () {\n return _difference.default;\n }\n});\nObject.defineProperty(exports, \"disjoint\", {\n enumerable: true,\n get: function () {\n return _disjoint.default;\n }\n});\nObject.defineProperty(exports, \"every\", {\n enumerable: true,\n get: function () {\n return _every.default;\n }\n});\nObject.defineProperty(exports, \"extent\", {\n enumerable: true,\n get: function () {\n return _extent.default;\n }\n});\nObject.defineProperty(exports, \"fcumsum\", {\n enumerable: true,\n get: function () {\n return _fsum.fcumsum;\n }\n});\nObject.defineProperty(exports, \"filter\", {\n enumerable: true,\n get: function () {\n return _filter.default;\n }\n});\nObject.defineProperty(exports, \"flatGroup\", {\n enumerable: true,\n get: function () {\n return _group.flatGroup;\n }\n});\nObject.defineProperty(exports, \"flatRollup\", {\n enumerable: true,\n get: function () {\n return _group.flatRollup;\n }\n});\nObject.defineProperty(exports, \"fsum\", {\n enumerable: true,\n get: function () {\n return _fsum.fsum;\n }\n});\nObject.defineProperty(exports, \"greatest\", {\n enumerable: true,\n get: function () {\n return _greatest.default;\n }\n});\nObject.defineProperty(exports, \"greatestIndex\", {\n enumerable: true,\n get: function () {\n return _greatestIndex.default;\n }\n});\nObject.defineProperty(exports, \"group\", {\n enumerable: true,\n get: function () {\n return _group.default;\n }\n});\nObject.defineProperty(exports, \"groupSort\", {\n enumerable: true,\n get: function () {\n return _groupSort.default;\n }\n});\nObject.defineProperty(exports, \"groups\", {\n enumerable: true,\n get: function () {\n return _group.groups;\n }\n});\nObject.defineProperty(exports, \"histogram\", {\n enumerable: true,\n get: function () {\n return _bin.default;\n }\n});\nObject.defineProperty(exports, \"index\", {\n enumerable: true,\n get: function () {\n return _group.index;\n }\n});\nObject.defineProperty(exports, \"indexes\", {\n enumerable: true,\n get: function () {\n return _group.indexes;\n }\n});\nObject.defineProperty(exports, \"intersection\", {\n enumerable: true,\n get: function () {\n return _intersection.default;\n }\n});\nObject.defineProperty(exports, \"least\", {\n enumerable: true,\n get: function () {\n return _least.default;\n }\n});\nObject.defineProperty(exports, \"leastIndex\", {\n enumerable: true,\n get: function () {\n return _leastIndex.default;\n }\n});\nObject.defineProperty(exports, \"map\", {\n enumerable: true,\n get: function () {\n return _map.default;\n }\n});\nObject.defineProperty(exports, \"max\", {\n enumerable: true,\n get: function () {\n return _max.default;\n }\n});\nObject.defineProperty(exports, \"maxIndex\", {\n enumerable: true,\n get: function () {\n return _maxIndex.default;\n }\n});\nObject.defineProperty(exports, \"mean\", {\n enumerable: true,\n get: function () {\n return _mean.default;\n }\n});\nObject.defineProperty(exports, \"median\", {\n enumerable: true,\n get: function () {\n return _median.default;\n }\n});\nObject.defineProperty(exports, \"merge\", {\n enumerable: true,\n get: function () {\n return _merge.default;\n }\n});\nObject.defineProperty(exports, \"min\", {\n enumerable: true,\n get: function () {\n return _min.default;\n }\n});\nObject.defineProperty(exports, \"minIndex\", {\n enumerable: true,\n get: function () {\n return _minIndex.default;\n }\n});\nObject.defineProperty(exports, \"mode\", {\n enumerable: true,\n get: function () {\n return _mode.default;\n }\n});\nObject.defineProperty(exports, \"nice\", {\n enumerable: true,\n get: function () {\n return _nice.default;\n }\n});\nObject.defineProperty(exports, \"pairs\", {\n enumerable: true,\n get: function () {\n return _pairs.default;\n }\n});\nObject.defineProperty(exports, \"permute\", {\n enumerable: true,\n get: function () {\n return _permute.default;\n }\n});\nObject.defineProperty(exports, \"quantile\", {\n enumerable: true,\n get: function () {\n return _quantile.default;\n }\n});\nObject.defineProperty(exports, \"quantileSorted\", {\n enumerable: true,\n get: function () {\n return _quantile.quantileSorted;\n }\n});\nObject.defineProperty(exports, \"quickselect\", {\n enumerable: true,\n get: function () {\n return _quickselect.default;\n }\n});\nObject.defineProperty(exports, \"range\", {\n enumerable: true,\n get: function () {\n return _range.default;\n }\n});\nObject.defineProperty(exports, \"rank\", {\n enumerable: true,\n get: function () {\n return _rank.default;\n }\n});\nObject.defineProperty(exports, \"reduce\", {\n enumerable: true,\n get: function () {\n return _reduce.default;\n }\n});\nObject.defineProperty(exports, \"reverse\", {\n enumerable: true,\n get: function () {\n return _reverse.default;\n }\n});\nObject.defineProperty(exports, \"rollup\", {\n enumerable: true,\n get: function () {\n return _group.rollup;\n }\n});\nObject.defineProperty(exports, \"rollups\", {\n enumerable: true,\n get: function () {\n return _group.rollups;\n }\n});\nObject.defineProperty(exports, \"scan\", {\n enumerable: true,\n get: function () {\n return _scan.default;\n }\n});\nObject.defineProperty(exports, \"shuffle\", {\n enumerable: true,\n get: function () {\n return _shuffle.default;\n }\n});\nObject.defineProperty(exports, \"shuffler\", {\n enumerable: true,\n get: function () {\n return _shuffle.shuffler;\n }\n});\nObject.defineProperty(exports, \"some\", {\n enumerable: true,\n get: function () {\n return _some.default;\n }\n});\nObject.defineProperty(exports, \"sort\", {\n enumerable: true,\n get: function () {\n return _sort.default;\n }\n});\nObject.defineProperty(exports, \"subset\", {\n enumerable: true,\n get: function () {\n return _subset.default;\n }\n});\nObject.defineProperty(exports, \"sum\", {\n enumerable: true,\n get: function () {\n return _sum.default;\n }\n});\nObject.defineProperty(exports, \"superset\", {\n enumerable: true,\n get: function () {\n return _superset.default;\n }\n});\nObject.defineProperty(exports, \"thresholdFreedmanDiaconis\", {\n enumerable: true,\n get: function () {\n return _freedmanDiaconis.default;\n }\n});\nObject.defineProperty(exports, \"thresholdScott\", {\n enumerable: true,\n get: function () {\n return _scott.default;\n }\n});\nObject.defineProperty(exports, \"thresholdSturges\", {\n enumerable: true,\n get: function () {\n return _sturges.default;\n }\n});\nObject.defineProperty(exports, \"tickIncrement\", {\n enumerable: true,\n get: function () {\n return _ticks.tickIncrement;\n }\n});\nObject.defineProperty(exports, \"tickStep\", {\n enumerable: true,\n get: function () {\n return _ticks.tickStep;\n }\n});\nObject.defineProperty(exports, \"ticks\", {\n enumerable: true,\n get: function () {\n return _ticks.default;\n }\n});\nObject.defineProperty(exports, \"transpose\", {\n enumerable: true,\n get: function () {\n return _transpose.default;\n }\n});\nObject.defineProperty(exports, \"union\", {\n enumerable: true,\n get: function () {\n return _union.default;\n }\n});\nObject.defineProperty(exports, \"variance\", {\n enumerable: true,\n get: function () {\n return _variance.default;\n }\n});\nObject.defineProperty(exports, \"zip\", {\n enumerable: true,\n get: function () {\n return _zip.default;\n }\n});\n\nvar _bisect = _interopRequireWildcard(require(\"./bisect.js\"));\n\nvar _ascending = _interopRequireDefault(require(\"./ascending.js\"));\n\nvar _bisector = _interopRequireDefault(require(\"./bisector.js\"));\n\nvar _count = _interopRequireDefault(require(\"./count.js\"));\n\nvar _cross = _interopRequireDefault(require(\"./cross.js\"));\n\nvar _cumsum = _interopRequireDefault(require(\"./cumsum.js\"));\n\nvar _descending = _interopRequireDefault(require(\"./descending.js\"));\n\nvar _deviation = _interopRequireDefault(require(\"./deviation.js\"));\n\nvar _extent = _interopRequireDefault(require(\"./extent.js\"));\n\nvar _fsum = require(\"./fsum.js\");\n\nvar _group = _interopRequireWildcard(require(\"./group.js\"));\n\nvar _groupSort = _interopRequireDefault(require(\"./groupSort.js\"));\n\nvar _bin = _interopRequireDefault(require(\"./bin.js\"));\n\nvar _freedmanDiaconis = _interopRequireDefault(require(\"./threshold/freedmanDiaconis.js\"));\n\nvar _scott = _interopRequireDefault(require(\"./threshold/scott.js\"));\n\nvar _sturges = _interopRequireDefault(require(\"./threshold/sturges.js\"));\n\nvar _max = _interopRequireDefault(require(\"./max.js\"));\n\nvar _maxIndex = _interopRequireDefault(require(\"./maxIndex.js\"));\n\nvar _mean = _interopRequireDefault(require(\"./mean.js\"));\n\nvar _median = _interopRequireDefault(require(\"./median.js\"));\n\nvar _merge = _interopRequireDefault(require(\"./merge.js\"));\n\nvar _min = _interopRequireDefault(require(\"./min.js\"));\n\nvar _minIndex = _interopRequireDefault(require(\"./minIndex.js\"));\n\nvar _mode = _interopRequireDefault(require(\"./mode.js\"));\n\nvar _nice = _interopRequireDefault(require(\"./nice.js\"));\n\nvar _pairs = _interopRequireDefault(require(\"./pairs.js\"));\n\nvar _permute = _interopRequireDefault(require(\"./permute.js\"));\n\nvar _quantile = _interopRequireWildcard(require(\"./quantile.js\"));\n\nvar _quickselect = _interopRequireDefault(require(\"./quickselect.js\"));\n\nvar _range = _interopRequireDefault(require(\"./range.js\"));\n\nvar _rank = _interopRequireDefault(require(\"./rank.js\"));\n\nvar _least = _interopRequireDefault(require(\"./least.js\"));\n\nvar _leastIndex = _interopRequireDefault(require(\"./leastIndex.js\"));\n\nvar _greatest = _interopRequireDefault(require(\"./greatest.js\"));\n\nvar _greatestIndex = _interopRequireDefault(require(\"./greatestIndex.js\"));\n\nvar _scan = _interopRequireDefault(require(\"./scan.js\"));\n\nvar _shuffle = _interopRequireWildcard(require(\"./shuffle.js\"));\n\nvar _sum = _interopRequireDefault(require(\"./sum.js\"));\n\nvar _ticks = _interopRequireWildcard(require(\"./ticks.js\"));\n\nvar _transpose = _interopRequireDefault(require(\"./transpose.js\"));\n\nvar _variance = _interopRequireDefault(require(\"./variance.js\"));\n\nvar _zip = _interopRequireDefault(require(\"./zip.js\"));\n\nvar _every = _interopRequireDefault(require(\"./every.js\"));\n\nvar _some = _interopRequireDefault(require(\"./some.js\"));\n\nvar _filter = _interopRequireDefault(require(\"./filter.js\"));\n\nvar _map = _interopRequireDefault(require(\"./map.js\"));\n\nvar _reduce = _interopRequireDefault(require(\"./reduce.js\"));\n\nvar _reverse = _interopRequireDefault(require(\"./reverse.js\"));\n\nvar _sort = _interopRequireDefault(require(\"./sort.js\"));\n\nvar _difference = _interopRequireDefault(require(\"./difference.js\"));\n\nvar _disjoint = _interopRequireDefault(require(\"./disjoint.js\"));\n\nvar _intersection = _interopRequireDefault(require(\"./intersection.js\"));\n\nvar _subset = _interopRequireDefault(require(\"./subset.js\"));\n\nvar _superset = _interopRequireDefault(require(\"./superset.js\"));\n\nvar _union = _interopRequireDefault(require(\"./union.js\"));\n\nvar _index = require(\"../../../lib-vendor/internmap/src/index.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }","'use strict';\n\nfunction checkDCE() {\n /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n if (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n ) {\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n // This branch is unreachable because this function is only called\n // in production, but the condition is true only in development.\n // Therefore if the branch is still here, dead code elimination wasn't\n // properly applied.\n // Don't change the message. React DevTools relies on it. Also make sure\n // this message doesn't occur elsewhere in this function, or it will cause\n // a false positive.\n throw new Error('^_^');\n }\n try {\n // Verify that the code above has been dead code eliminated (DCE'd).\n __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n } catch (err) {\n // DevTools shouldn't crash React, no matter what.\n // We should still report in case we break this code.\n console.error(err);\n }\n}\n\nif (process.env.NODE_ENV === 'production') {\n // DCE check should happen before ReactDOM bundle executes so that\n // DevTools can report bad minification during injection.\n checkDCE();\n module.exports = require('./cjs/react-dom.production.min.js');\n} else {\n module.exports = require('./cjs/react-dom.development.js');\n}\n","/* eslint no-console: 0 */\nvar isDev = process.env.NODE_ENV !== 'production';\nexport var warn = function warn(condition, format) {\n for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n args[_key - 2] = arguments[_key];\n }\n if (isDev && typeof console !== 'undefined' && console.warn) {\n if (format === undefined) {\n console.warn('LogUtils requires an error message argument');\n }\n if (!condition) {\n if (format === undefined) {\n console.warn('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');\n } else {\n var argIndex = 0;\n console.warn(format.replace(/%s/g, function () {\n return args[argIndex++];\n }));\n }\n }\n }\n};","'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n // React v16.11 and below\n if (reactIs.isMemo(component)) {\n return MEMO_STATICS;\n } // React v16.12 and above\n\n\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","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","/**\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","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = ascending;\n\nfunction ascending(a, b) {\n return a == null || b == null ? NaN : a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.durationYear = exports.durationWeek = exports.durationSecond = exports.durationMonth = exports.durationMinute = exports.durationHour = exports.durationDay = void 0;\nconst durationSecond = 1000;\nexports.durationSecond = durationSecond;\nconst durationMinute = durationSecond * 60;\nexports.durationMinute = durationMinute;\nconst durationHour = durationMinute * 60;\nexports.durationHour = durationHour;\nconst durationDay = durationHour * 24;\nexports.durationDay = durationDay;\nconst durationWeek = durationDay * 7;\nexports.durationWeek = durationWeek;\nconst durationMonth = durationDay * 30;\nexports.durationMonth = durationMonth;\nconst durationYear = durationDay * 365;\nexports.durationYear = durationYear;","import { IStyleOptions } from './IStyleOptions';\n\n/**\n * Sets the current RTL value.\n */\nexport function setRTL(isRTL: boolean): void {\n if (_rtl !== isRTL) {\n _rtl = isRTL;\n }\n}\n\n/**\n * Gets the current RTL value.\n */\nexport function getRTL(): boolean {\n if (_rtl === undefined) {\n _rtl =\n typeof document !== 'undefined' &&\n !!document.documentElement &&\n document.documentElement.getAttribute('dir') === 'rtl';\n }\n return _rtl;\n}\n\n// This has been split into 2 lines because it was working in Fabric due to the code being transpiled to es5, so this\n// was converted to var while not working in Fluent that uses babel to transpile the code to be es6-like. Splitting the\n// logic into two lines, however, allows it to work in both scenarios.\nlet _rtl: boolean;\n_rtl = getRTL();\n\nexport function getStyleOptions(): IStyleOptions {\n return {\n rtl: getRTL(),\n };\n}\n","var arrayFilter = require('./_arrayFilter'),\n baseFilter = require('./_baseFilter'),\n baseIteratee = require('./_baseIteratee'),\n isArray = require('./isArray');\n\n/**\n * Iterates over elements of `collection`, returning an array of all elements\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * **Note:** Unlike `_.remove`, this method returns a new array.\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 * @returns {Array} Returns the new filtered array.\n * @see _.reject\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * _.filter(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, { 'age': 36, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.filter(users, 'active');\n * // => objects for ['barney']\n *\n * // Combining several predicates using `_.overEvery` or `_.overSome`.\n * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]]));\n * // => objects for ['fred', 'barney']\n */\nfunction filter(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, baseIteratee(predicate, 3));\n}\n\nmodule.exports = filter;\n","function safeRequestAnimationFrame(callback) {\n if (typeof requestAnimationFrame !== 'undefined') requestAnimationFrame(callback);\n}\nexport default function setRafTimeout(callback) {\n var timeout = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var currTime = -1;\n var shouldUpdate = function shouldUpdate(now) {\n if (currTime < 0) {\n currTime = now;\n }\n if (now - currTime > timeout) {\n callback(now);\n currTime = -1;\n } else {\n safeRequestAnimationFrame(shouldUpdate);\n }\n };\n requestAnimationFrame(shouldUpdate);\n}","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _toArray(arr) { return _arrayWithHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nimport setRafTimeout from './setRafTimeout';\nexport default function createAnimateManager() {\n var currStyle = {};\n var handleChange = function handleChange() {\n return null;\n };\n var shouldStop = false;\n var setStyle = function setStyle(_style) {\n if (shouldStop) {\n return;\n }\n if (Array.isArray(_style)) {\n if (!_style.length) {\n return;\n }\n var styles = _style;\n var _styles = _toArray(styles),\n curr = _styles[0],\n restStyles = _styles.slice(1);\n if (typeof curr === 'number') {\n setRafTimeout(setStyle.bind(null, restStyles), curr);\n return;\n }\n setStyle(curr);\n setRafTimeout(setStyle.bind(null, restStyles));\n return;\n }\n if (_typeof(_style) === 'object') {\n currStyle = _style;\n handleChange(currStyle);\n }\n if (typeof _style === 'function') {\n _style();\n }\n };\n return {\n stop: function stop() {\n shouldStop = true;\n },\n start: function start(style) {\n shouldStop = false;\n setStyle(style);\n },\n subscribe: function subscribe(_handleChange) {\n handleChange = _handleChange;\n return function () {\n handleChange = function handleChange() {\n return null;\n };\n };\n }\n };\n}","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\n/* eslint no-console: 0 */\n\nexport var getIntersectionKeys = function getIntersectionKeys(preObj, nextObj) {\n return [Object.keys(preObj), Object.keys(nextObj)].reduce(function (a, b) {\n return a.filter(function (c) {\n return b.includes(c);\n });\n });\n};\nexport var identity = function identity(param) {\n return param;\n};\n\n/*\n * @description: convert camel case to dash case\n * string => string\n */\nexport var getDashCase = function getDashCase(name) {\n return name.replace(/([A-Z])/g, function (v) {\n return \"-\".concat(v.toLowerCase());\n });\n};\nexport var log = function log() {\n var _console;\n (_console = console).log.apply(_console, arguments);\n};\n\n/*\n * @description: log the value of a varible\n * string => any => any\n */\nexport var debug = function debug(name) {\n return function (item) {\n log(name, item);\n return item;\n };\n};\n\n/*\n * @description: log name, args, return value of a function\n * function => function\n */\nexport var debugf = function debugf(tag, f) {\n return function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n var res = f.apply(void 0, args);\n var name = tag || f.name || 'anonymous function';\n var argNames = \"(\".concat(args.map(JSON.stringify).join(', '), \")\");\n log(\"\".concat(name, \": \").concat(argNames, \" => \").concat(JSON.stringify(res)));\n return res;\n };\n};\n\n/*\n * @description: map object on every element in this object.\n * (function, object) => object\n */\nexport var mapObject = function mapObject(fn, obj) {\n return Object.keys(obj).reduce(function (res, key) {\n return _objectSpread(_objectSpread({}, res), {}, _defineProperty({}, key, fn(key, obj[key])));\n }, {});\n};\nexport var getTransitionVal = function getTransitionVal(props, duration, easing) {\n return props.map(function (prop) {\n return \"\".concat(getDashCase(prop), \" \").concat(duration, \"ms \").concat(easing);\n }).join(',');\n};\nvar isDev = process.env.NODE_ENV !== 'production';\nexport var warn = function warn(condition, format, a, b, c, d, e, f) {\n if (isDev && typeof console !== 'undefined' && console.warn) {\n if (format === undefined) {\n console.warn('LogUtils requires an error message argument');\n }\n if (!condition) {\n if (format === undefined) {\n console.warn('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n console.warn(format.replace(/%s/g, function () {\n return args[argIndex++];\n }));\n }\n }\n }\n};","function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport { warn } from './util';\nvar ACCURACY = 1e-4;\nvar cubicBezierFactor = function cubicBezierFactor(c1, c2) {\n return [0, 3 * c1, 3 * c2 - 6 * c1, 3 * c1 - 3 * c2 + 1];\n};\nvar multyTime = function multyTime(params, t) {\n return params.map(function (param, i) {\n return param * Math.pow(t, i);\n }).reduce(function (pre, curr) {\n return pre + curr;\n });\n};\nvar cubicBezier = function cubicBezier(c1, c2) {\n return function (t) {\n var params = cubicBezierFactor(c1, c2);\n return multyTime(params, t);\n };\n};\nvar derivativeCubicBezier = function derivativeCubicBezier(c1, c2) {\n return function (t) {\n var params = cubicBezierFactor(c1, c2);\n var newParams = [].concat(_toConsumableArray(params.map(function (param, i) {\n return param * i;\n }).slice(1)), [0]);\n return multyTime(newParams, t);\n };\n};\n\n// calculate cubic-bezier using Newton's method\nexport var configBezier = function configBezier() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n var x1 = args[0],\n y1 = args[1],\n x2 = args[2],\n y2 = args[3];\n if (args.length === 1) {\n switch (args[0]) {\n case 'linear':\n x1 = 0.0;\n y1 = 0.0;\n x2 = 1.0;\n y2 = 1.0;\n break;\n case 'ease':\n x1 = 0.25;\n y1 = 0.1;\n x2 = 0.25;\n y2 = 1.0;\n break;\n case 'ease-in':\n x1 = 0.42;\n y1 = 0.0;\n x2 = 1.0;\n y2 = 1.0;\n break;\n case 'ease-out':\n x1 = 0.42;\n y1 = 0.0;\n x2 = 0.58;\n y2 = 1.0;\n break;\n case 'ease-in-out':\n x1 = 0.0;\n y1 = 0.0;\n x2 = 0.58;\n y2 = 1.0;\n break;\n default:\n {\n var easing = args[0].split('(');\n if (easing[0] === 'cubic-bezier' && easing[1].split(')')[0].split(',').length === 4) {\n var _easing$1$split$0$spl = easing[1].split(')')[0].split(',').map(function (x) {\n return parseFloat(x);\n });\n var _easing$1$split$0$spl2 = _slicedToArray(_easing$1$split$0$spl, 4);\n x1 = _easing$1$split$0$spl2[0];\n y1 = _easing$1$split$0$spl2[1];\n x2 = _easing$1$split$0$spl2[2];\n y2 = _easing$1$split$0$spl2[3];\n } else {\n warn(false, '[configBezier]: arguments should be one of ' + \"oneOf 'linear', 'ease', 'ease-in', 'ease-out', \" + \"'ease-in-out','cubic-bezier(x1,y1,x2,y2)', instead received %s\", args);\n }\n }\n }\n }\n warn([x1, x2, y1, y2].every(function (num) {\n return typeof num === 'number' && num >= 0 && num <= 1;\n }), '[configBezier]: arguments should be x1, y1, x2, y2 of [0, 1] instead received %s', args);\n var curveX = cubicBezier(x1, x2);\n var curveY = cubicBezier(y1, y2);\n var derCurveX = derivativeCubicBezier(x1, x2);\n var rangeValue = function rangeValue(value) {\n if (value > 1) {\n return 1;\n }\n if (value < 0) {\n return 0;\n }\n return value;\n };\n var bezier = function bezier(_t) {\n var t = _t > 1 ? 1 : _t;\n var x = t;\n for (var i = 0; i < 8; ++i) {\n var evalT = curveX(x) - t;\n var derVal = derCurveX(x);\n if (Math.abs(evalT - t) < ACCURACY || derVal < ACCURACY) {\n return curveY(x);\n }\n x = rangeValue(x - evalT / derVal);\n }\n return curveY(x);\n };\n bezier.isStepper = false;\n return bezier;\n};\nexport var configSpring = function configSpring() {\n var config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var _config$stiff = config.stiff,\n stiff = _config$stiff === void 0 ? 100 : _config$stiff,\n _config$damping = config.damping,\n damping = _config$damping === void 0 ? 8 : _config$damping,\n _config$dt = config.dt,\n dt = _config$dt === void 0 ? 17 : _config$dt;\n var stepper = function stepper(currX, destX, currV) {\n var FSpring = -(currX - destX) * stiff;\n var FDamping = currV * damping;\n var newV = currV + (FSpring - FDamping) * dt / 1000;\n var newX = currV * dt / 1000 + currX;\n if (Math.abs(newX - destX) < ACCURACY && Math.abs(newV) < ACCURACY) {\n return [destX, 0];\n }\n return [newX, newV];\n };\n stepper.isStepper = true;\n stepper.dt = dt;\n return stepper;\n};\nexport var configEasing = function configEasing() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n var easing = args[0];\n if (typeof easing === 'string') {\n switch (easing) {\n case 'ease':\n case 'ease-in-out':\n case 'ease-out':\n case 'ease-in':\n case 'linear':\n return configBezier(easing);\n case 'spring':\n return configSpring();\n default:\n if (easing.split('(')[0] === 'cubic-bezier') {\n return configBezier(easing);\n }\n warn(false, \"[configEasing]: first argument should be one of 'ease', 'ease-in', \" + \"'ease-out', 'ease-in-out','cubic-bezier(x1,y1,x2,y2)', 'linear' and 'spring', instead received %s\", args);\n }\n }\n if (typeof easing === 'function') {\n return easing;\n }\n warn(false, '[configEasing]: first argument type should be function or string, instead received %s', args);\n return null;\n};","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nimport { getIntersectionKeys, mapObject } from './util';\nvar alpha = function alpha(begin, end, k) {\n return begin + (end - begin) * k;\n};\nvar needContinue = function needContinue(_ref) {\n var from = _ref.from,\n to = _ref.to;\n return from !== to;\n};\n\n/*\n * @description: cal new from value and velocity in each stepper\n * @return: { [styleProperty]: { from, to, velocity } }\n */\nvar calStepperVals = function calStepperVals(easing, preVals, steps) {\n var nextStepVals = mapObject(function (key, val) {\n if (needContinue(val)) {\n var _easing = easing(val.from, val.to, val.velocity),\n _easing2 = _slicedToArray(_easing, 2),\n newX = _easing2[0],\n newV = _easing2[1];\n return _objectSpread(_objectSpread({}, val), {}, {\n from: newX,\n velocity: newV\n });\n }\n return val;\n }, preVals);\n if (steps < 1) {\n return mapObject(function (key, val) {\n if (needContinue(val)) {\n return _objectSpread(_objectSpread({}, val), {}, {\n velocity: alpha(val.velocity, nextStepVals[key].velocity, steps),\n from: alpha(val.from, nextStepVals[key].from, steps)\n });\n }\n return val;\n }, preVals);\n }\n return calStepperVals(easing, nextStepVals, steps - 1);\n};\n\n// configure update function\nexport default (function (from, to, easing, duration, render) {\n var interKeys = getIntersectionKeys(from, to);\n var timingStyle = interKeys.reduce(function (res, key) {\n return _objectSpread(_objectSpread({}, res), {}, _defineProperty({}, key, [from[key], to[key]]));\n }, {});\n var stepperStyle = interKeys.reduce(function (res, key) {\n return _objectSpread(_objectSpread({}, res), {}, _defineProperty({}, key, {\n from: from[key],\n velocity: 0,\n to: to[key]\n }));\n }, {});\n var cafId = -1;\n var preTime;\n var beginTime;\n var update = function update() {\n return null;\n };\n var getCurrStyle = function getCurrStyle() {\n return mapObject(function (key, val) {\n return val.from;\n }, stepperStyle);\n };\n var shouldStopAnimation = function shouldStopAnimation() {\n return !Object.values(stepperStyle).filter(needContinue).length;\n };\n\n // stepper timing function like spring\n var stepperUpdate = function stepperUpdate(now) {\n if (!preTime) {\n preTime = now;\n }\n var deltaTime = now - preTime;\n var steps = deltaTime / easing.dt;\n stepperStyle = calStepperVals(easing, stepperStyle, steps);\n // get union set and add compatible prefix\n render(_objectSpread(_objectSpread(_objectSpread({}, from), to), getCurrStyle(stepperStyle)));\n preTime = now;\n if (!shouldStopAnimation()) {\n cafId = requestAnimationFrame(update);\n }\n };\n\n // t => val timing function like cubic-bezier\n var timingUpdate = function timingUpdate(now) {\n if (!beginTime) {\n beginTime = now;\n }\n var t = (now - beginTime) / duration;\n var currStyle = mapObject(function (key, val) {\n return alpha.apply(void 0, _toConsumableArray(val).concat([easing(t)]));\n }, timingStyle);\n\n // get union set and add compatible prefix\n render(_objectSpread(_objectSpread(_objectSpread({}, from), to), currStyle));\n if (t < 1) {\n cafId = requestAnimationFrame(update);\n } else {\n var finalStyle = mapObject(function (key, val) {\n return alpha.apply(void 0, _toConsumableArray(val).concat([easing(1)]));\n }, timingStyle);\n render(_objectSpread(_objectSpread(_objectSpread({}, from), to), finalStyle));\n }\n };\n update = easing.isStepper ? stepperUpdate : timingUpdate;\n\n // return start animation method\n return function () {\n requestAnimationFrame(update);\n\n // return stop animation method\n return function () {\n cancelAnimationFrame(cafId);\n };\n };\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nvar _excluded = [\"children\", \"begin\", \"duration\", \"attributeName\", \"easing\", \"isActive\", \"steps\", \"from\", \"to\", \"canBegin\", \"onAnimationEnd\", \"shouldReAnimate\", \"onAnimationReStart\"];\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nimport React, { PureComponent, cloneElement, Children } from 'react';\nimport PropTypes from 'prop-types';\nimport { deepEqual } from 'fast-equals';\nimport createAnimateManager from './AnimateManager';\nimport { configEasing } from './easing';\nimport configUpdate from './configUpdate';\nimport { getTransitionVal, identity } from './util';\nvar Animate = /*#__PURE__*/function (_PureComponent) {\n _inherits(Animate, _PureComponent);\n var _super = _createSuper(Animate);\n function Animate(props, context) {\n var _this;\n _classCallCheck(this, Animate);\n _this = _super.call(this, props, context);\n var _this$props = _this.props,\n isActive = _this$props.isActive,\n attributeName = _this$props.attributeName,\n from = _this$props.from,\n to = _this$props.to,\n steps = _this$props.steps,\n children = _this$props.children,\n duration = _this$props.duration;\n _this.handleStyleChange = _this.handleStyleChange.bind(_assertThisInitialized(_this));\n _this.changeStyle = _this.changeStyle.bind(_assertThisInitialized(_this));\n if (!isActive || duration <= 0) {\n _this.state = {\n style: {}\n };\n\n // if children is a function and animation is not active, set style to 'to'\n if (typeof children === 'function') {\n _this.state = {\n style: to\n };\n }\n return _possibleConstructorReturn(_this);\n }\n if (steps && steps.length) {\n _this.state = {\n style: steps[0].style\n };\n } else if (from) {\n if (typeof children === 'function') {\n _this.state = {\n style: from\n };\n return _possibleConstructorReturn(_this);\n }\n _this.state = {\n style: attributeName ? _defineProperty({}, attributeName, from) : from\n };\n } else {\n _this.state = {\n style: {}\n };\n }\n return _this;\n }\n _createClass(Animate, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var _this$props2 = this.props,\n isActive = _this$props2.isActive,\n canBegin = _this$props2.canBegin;\n this.mounted = true;\n if (!isActive || !canBegin) {\n return;\n }\n this.runAnimation(this.props);\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n var _this$props3 = this.props,\n isActive = _this$props3.isActive,\n canBegin = _this$props3.canBegin,\n attributeName = _this$props3.attributeName,\n shouldReAnimate = _this$props3.shouldReAnimate,\n to = _this$props3.to,\n currentFrom = _this$props3.from;\n var style = this.state.style;\n if (!canBegin) {\n return;\n }\n if (!isActive) {\n var newState = {\n style: attributeName ? _defineProperty({}, attributeName, to) : to\n };\n if (this.state && style) {\n if (attributeName && style[attributeName] !== to || !attributeName && style !== to) {\n // eslint-disable-next-line react/no-did-update-set-state\n this.setState(newState);\n }\n }\n return;\n }\n if (deepEqual(prevProps.to, to) && prevProps.canBegin && prevProps.isActive) {\n return;\n }\n var isTriggered = !prevProps.canBegin || !prevProps.isActive;\n if (this.manager) {\n this.manager.stop();\n }\n if (this.stopJSAnimation) {\n this.stopJSAnimation();\n }\n var from = isTriggered || shouldReAnimate ? currentFrom : prevProps.to;\n if (this.state && style) {\n var _newState = {\n style: attributeName ? _defineProperty({}, attributeName, from) : from\n };\n if (attributeName && style[attributeName] !== from || !attributeName && style !== from) {\n // eslint-disable-next-line react/no-did-update-set-state\n this.setState(_newState);\n }\n }\n this.runAnimation(_objectSpread(_objectSpread({}, this.props), {}, {\n from: from,\n begin: 0\n }));\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.mounted = false;\n var onAnimationEnd = this.props.onAnimationEnd;\n if (this.unSubscribe) {\n this.unSubscribe();\n }\n if (this.manager) {\n this.manager.stop();\n this.manager = null;\n }\n if (this.stopJSAnimation) {\n this.stopJSAnimation();\n }\n if (onAnimationEnd) {\n onAnimationEnd();\n }\n }\n }, {\n key: \"handleStyleChange\",\n value: function handleStyleChange(style) {\n this.changeStyle(style);\n }\n }, {\n key: \"changeStyle\",\n value: function changeStyle(style) {\n if (this.mounted) {\n this.setState({\n style: style\n });\n }\n }\n }, {\n key: \"runJSAnimation\",\n value: function runJSAnimation(props) {\n var _this2 = this;\n var from = props.from,\n to = props.to,\n duration = props.duration,\n easing = props.easing,\n begin = props.begin,\n onAnimationEnd = props.onAnimationEnd,\n onAnimationStart = props.onAnimationStart;\n var startAnimation = configUpdate(from, to, configEasing(easing), duration, this.changeStyle);\n var finalStartAnimation = function finalStartAnimation() {\n _this2.stopJSAnimation = startAnimation();\n };\n this.manager.start([onAnimationStart, begin, finalStartAnimation, duration, onAnimationEnd]);\n }\n }, {\n key: \"runStepAnimation\",\n value: function runStepAnimation(props) {\n var _this3 = this;\n var steps = props.steps,\n begin = props.begin,\n onAnimationStart = props.onAnimationStart;\n var _steps$ = steps[0],\n initialStyle = _steps$.style,\n _steps$$duration = _steps$.duration,\n initialTime = _steps$$duration === void 0 ? 0 : _steps$$duration;\n var addStyle = function addStyle(sequence, nextItem, index) {\n if (index === 0) {\n return sequence;\n }\n var duration = nextItem.duration,\n _nextItem$easing = nextItem.easing,\n easing = _nextItem$easing === void 0 ? 'ease' : _nextItem$easing,\n style = nextItem.style,\n nextProperties = nextItem.properties,\n onAnimationEnd = nextItem.onAnimationEnd;\n var preItem = index > 0 ? steps[index - 1] : nextItem;\n var properties = nextProperties || Object.keys(style);\n if (typeof easing === 'function' || easing === 'spring') {\n return [].concat(_toConsumableArray(sequence), [_this3.runJSAnimation.bind(_this3, {\n from: preItem.style,\n to: style,\n duration: duration,\n easing: easing\n }), duration]);\n }\n var transition = getTransitionVal(properties, duration, easing);\n var newStyle = _objectSpread(_objectSpread(_objectSpread({}, preItem.style), style), {}, {\n transition: transition\n });\n return [].concat(_toConsumableArray(sequence), [newStyle, duration, onAnimationEnd]).filter(identity);\n };\n return this.manager.start([onAnimationStart].concat(_toConsumableArray(steps.reduce(addStyle, [initialStyle, Math.max(initialTime, begin)])), [props.onAnimationEnd]));\n }\n }, {\n key: \"runAnimation\",\n value: function runAnimation(props) {\n if (!this.manager) {\n this.manager = createAnimateManager();\n }\n var begin = props.begin,\n duration = props.duration,\n attributeName = props.attributeName,\n propsTo = props.to,\n easing = props.easing,\n onAnimationStart = props.onAnimationStart,\n onAnimationEnd = props.onAnimationEnd,\n steps = props.steps,\n children = props.children;\n var manager = this.manager;\n this.unSubscribe = manager.subscribe(this.handleStyleChange);\n if (typeof easing === 'function' || typeof children === 'function' || easing === 'spring') {\n this.runJSAnimation(props);\n return;\n }\n if (steps.length > 1) {\n this.runStepAnimation(props);\n return;\n }\n var to = attributeName ? _defineProperty({}, attributeName, propsTo) : propsTo;\n var transition = getTransitionVal(Object.keys(to), duration, easing);\n manager.start([onAnimationStart, begin, _objectSpread(_objectSpread({}, to), {}, {\n transition: transition\n }), duration, onAnimationEnd]);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props4 = this.props,\n children = _this$props4.children,\n begin = _this$props4.begin,\n duration = _this$props4.duration,\n attributeName = _this$props4.attributeName,\n easing = _this$props4.easing,\n isActive = _this$props4.isActive,\n steps = _this$props4.steps,\n from = _this$props4.from,\n to = _this$props4.to,\n canBegin = _this$props4.canBegin,\n onAnimationEnd = _this$props4.onAnimationEnd,\n shouldReAnimate = _this$props4.shouldReAnimate,\n onAnimationReStart = _this$props4.onAnimationReStart,\n others = _objectWithoutProperties(_this$props4, _excluded);\n var count = Children.count(children);\n // eslint-disable-next-line react/destructuring-assignment\n var stateStyle = this.state.style;\n if (typeof children === 'function') {\n return children(stateStyle);\n }\n if (!isActive || count === 0 || duration <= 0) {\n return children;\n }\n var cloneContainer = function cloneContainer(container) {\n var _container$props = container.props,\n _container$props$styl = _container$props.style,\n style = _container$props$styl === void 0 ? {} : _container$props$styl,\n className = _container$props.className;\n var res = /*#__PURE__*/cloneElement(container, _objectSpread(_objectSpread({}, others), {}, {\n style: _objectSpread(_objectSpread({}, style), stateStyle),\n className: className\n }));\n return res;\n };\n if (count === 1) {\n return cloneContainer(Children.only(children));\n }\n return /*#__PURE__*/React.createElement(\"div\", null, Children.map(children, function (child) {\n return cloneContainer(child);\n }));\n }\n }]);\n return Animate;\n}(PureComponent);\nAnimate.displayName = 'Animate';\nAnimate.defaultProps = {\n begin: 0,\n duration: 1000,\n from: '',\n to: '',\n attributeName: '',\n easing: 'ease',\n isActive: true,\n canBegin: true,\n steps: [],\n onAnimationEnd: function onAnimationEnd() {},\n onAnimationStart: function onAnimationStart() {}\n};\nAnimate.propTypes = {\n from: PropTypes.oneOfType([PropTypes.object, PropTypes.string]),\n to: PropTypes.oneOfType([PropTypes.object, PropTypes.string]),\n attributeName: PropTypes.string,\n // animation duration\n duration: PropTypes.number,\n begin: PropTypes.number,\n easing: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),\n steps: PropTypes.arrayOf(PropTypes.shape({\n duration: PropTypes.number.isRequired,\n style: PropTypes.object.isRequired,\n easing: PropTypes.oneOfType([PropTypes.oneOf(['ease', 'ease-in', 'ease-out', 'ease-in-out', 'linear']), PropTypes.func]),\n // transition css properties(dash case), optional\n properties: PropTypes.arrayOf('string'),\n onAnimationEnd: PropTypes.func\n })),\n children: PropTypes.oneOfType([PropTypes.node, PropTypes.func]),\n isActive: PropTypes.bool,\n canBegin: PropTypes.bool,\n onAnimationEnd: PropTypes.func,\n // decide if it should reanimate with initial from style when props change\n shouldReAnimate: PropTypes.bool,\n onAnimationStart: PropTypes.func,\n onAnimationReStart: PropTypes.func\n};\nexport default Animate;","import { Children, cloneElement, isValidElement } from 'react';\n/**\n * Given `this.props.children`, return an object mapping key to child.\n *\n * @param {*} children `this.props.children`\n * @return {object} Mapping of key to child\n */\n\nexport function getChildMapping(children, mapFn) {\n var mapper = function mapper(child) {\n return mapFn && isValidElement(child) ? mapFn(child) : child;\n };\n\n var result = Object.create(null);\n if (children) Children.map(children, function (c) {\n return c;\n }).forEach(function (child) {\n // run the map function here instead so that the key is the computed one\n result[child.key] = mapper(child);\n });\n return result;\n}\n/**\n * When you're adding or removing children some may be added or removed in the\n * same render pass. We want to show *both* since we want to simultaneously\n * animate elements in and out. This function takes a previous set of keys\n * and a new set of keys and merges them with its best guess of the correct\n * ordering. In the future we may expose some of the utilities in\n * ReactMultiChild to make this easy, but for now React itself does not\n * directly have this concept of the union of prevChildren and nextChildren\n * so we implement it here.\n *\n * @param {object} prev prev children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @param {object} next next children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @return {object} a key set that contains all keys in `prev` and all keys\n * in `next` in a reasonable order.\n */\n\nexport function mergeChildMappings(prev, next) {\n prev = prev || {};\n next = next || {};\n\n function getValueForKey(key) {\n return key in next ? next[key] : prev[key];\n } // For each key of `next`, the list of keys to insert before that key in\n // the combined list\n\n\n var nextKeysPending = Object.create(null);\n var pendingKeys = [];\n\n for (var prevKey in prev) {\n if (prevKey in next) {\n if (pendingKeys.length) {\n nextKeysPending[prevKey] = pendingKeys;\n pendingKeys = [];\n }\n } else {\n pendingKeys.push(prevKey);\n }\n }\n\n var i;\n var childMapping = {};\n\n for (var nextKey in next) {\n if (nextKeysPending[nextKey]) {\n for (i = 0; i < nextKeysPending[nextKey].length; i++) {\n var pendingNextKey = nextKeysPending[nextKey][i];\n childMapping[nextKeysPending[nextKey][i]] = getValueForKey(pendingNextKey);\n }\n }\n\n childMapping[nextKey] = getValueForKey(nextKey);\n } // Finally, add the keys which didn't appear before any key in `next`\n\n\n for (i = 0; i < pendingKeys.length; i++) {\n childMapping[pendingKeys[i]] = getValueForKey(pendingKeys[i]);\n }\n\n return childMapping;\n}\n\nfunction getProp(child, prop, props) {\n return props[prop] != null ? props[prop] : child.props[prop];\n}\n\nexport function getInitialChildMapping(props, onExited) {\n return getChildMapping(props.children, function (child) {\n return cloneElement(child, {\n onExited: onExited.bind(null, child),\n in: true,\n appear: getProp(child, 'appear', props),\n enter: getProp(child, 'enter', props),\n exit: getProp(child, 'exit', props)\n });\n });\n}\nexport function getNextChildMapping(nextProps, prevChildMapping, onExited) {\n var nextChildMapping = getChildMapping(nextProps.children);\n var children = mergeChildMappings(prevChildMapping, nextChildMapping);\n Object.keys(children).forEach(function (key) {\n var child = children[key];\n if (!isValidElement(child)) return;\n var hasPrev = (key in prevChildMapping);\n var hasNext = (key in nextChildMapping);\n var prevChild = prevChildMapping[key];\n var isLeaving = isValidElement(prevChild) && !prevChild.props.in; // item is new (entering)\n\n if (hasNext && (!hasPrev || isLeaving)) {\n // console.log('entering', key)\n children[key] = cloneElement(child, {\n onExited: onExited.bind(null, child),\n in: true,\n exit: getProp(child, 'exit', nextProps),\n enter: getProp(child, 'enter', nextProps)\n });\n } else if (!hasNext && hasPrev && !isLeaving) {\n // item is old (exiting)\n // console.log('leaving', key)\n children[key] = cloneElement(child, {\n in: false\n });\n } else if (hasNext && hasPrev && isValidElement(prevChild)) {\n // item hasn't changed transition states\n // copy over the last transition props;\n // console.log('unchanged', key)\n children[key] = cloneElement(child, {\n onExited: onExited.bind(null, child),\n in: prevChild.props.in,\n exit: getProp(child, 'exit', nextProps),\n enter: getProp(child, 'enter', nextProps)\n });\n }\n });\n return children;\n}","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport TransitionGroupContext from './TransitionGroupContext';\nimport { getChildMapping, getInitialChildMapping, getNextChildMapping } from './utils/ChildMapping';\n\nvar values = Object.values || function (obj) {\n return Object.keys(obj).map(function (k) {\n return obj[k];\n });\n};\n\nvar defaultProps = {\n component: 'div',\n childFactory: function childFactory(child) {\n return child;\n }\n};\n/**\n * The `<TransitionGroup>` component manages a set of transition components\n * (`<Transition>` and `<CSSTransition>`) in a list. Like with the transition\n * components, `<TransitionGroup>` is a state machine for managing the mounting\n * and unmounting of components over time.\n *\n * Consider the example below. As items are removed or added to the TodoList the\n * `in` prop is toggled automatically by the `<TransitionGroup>`.\n *\n * Note that `<TransitionGroup>` does not define any animation behavior!\n * Exactly _how_ a list item animates is up to the individual transition\n * component. This means you can mix and match animations across different list\n * items.\n */\n\nvar TransitionGroup = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(TransitionGroup, _React$Component);\n\n function TransitionGroup(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n\n var handleExited = _this.handleExited.bind(_assertThisInitialized(_this)); // Initial children should all be entering, dependent on appear\n\n\n _this.state = {\n contextValue: {\n isMounting: true\n },\n handleExited: handleExited,\n firstRender: true\n };\n return _this;\n }\n\n var _proto = TransitionGroup.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.mounted = true;\n this.setState({\n contextValue: {\n isMounting: false\n }\n });\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.mounted = false;\n };\n\n TransitionGroup.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, _ref) {\n var prevChildMapping = _ref.children,\n handleExited = _ref.handleExited,\n firstRender = _ref.firstRender;\n return {\n children: firstRender ? getInitialChildMapping(nextProps, handleExited) : getNextChildMapping(nextProps, prevChildMapping, handleExited),\n firstRender: false\n };\n } // node is `undefined` when user provided `nodeRef` prop\n ;\n\n _proto.handleExited = function handleExited(child, node) {\n var currentChildMapping = getChildMapping(this.props.children);\n if (child.key in currentChildMapping) return;\n\n if (child.props.onExited) {\n child.props.onExited(node);\n }\n\n if (this.mounted) {\n this.setState(function (state) {\n var children = _extends({}, state.children);\n\n delete children[child.key];\n return {\n children: children\n };\n });\n }\n };\n\n _proto.render = function render() {\n var _this$props = this.props,\n Component = _this$props.component,\n childFactory = _this$props.childFactory,\n props = _objectWithoutPropertiesLoose(_this$props, [\"component\", \"childFactory\"]);\n\n var contextValue = this.state.contextValue;\n var children = values(this.state.children).map(childFactory);\n delete props.appear;\n delete props.enter;\n delete props.exit;\n\n if (Component === null) {\n return /*#__PURE__*/React.createElement(TransitionGroupContext.Provider, {\n value: contextValue\n }, children);\n }\n\n return /*#__PURE__*/React.createElement(TransitionGroupContext.Provider, {\n value: contextValue\n }, /*#__PURE__*/React.createElement(Component, props, children));\n };\n\n return TransitionGroup;\n}(React.Component);\n\nTransitionGroup.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * `<TransitionGroup>` renders a `<div>` by default. You can change this\n * behavior by providing a `component` prop.\n * If you use React v16+ and would like to avoid a wrapping `<div>` element\n * you can pass in `component={null}`. This is useful if the wrapping div\n * borks your css styles.\n */\n component: PropTypes.any,\n\n /**\n * A set of `<Transition>` components, that are toggled `in` and out as they\n * leave. the `<TransitionGroup>` will inject specific transition props, so\n * remember to spread them through if you are wrapping the `<Transition>` as\n * with our `<Fade>` example.\n *\n * While this component is meant for multiple `Transition` or `CSSTransition`\n * children, sometimes you may want to have a single transition child with\n * content that you want to be transitioned out and in when you change it\n * (e.g. routes, images etc.) In that case you can change the `key` prop of\n * the transition child as you change its content, this will cause\n * `TransitionGroup` to transition the child out and back in.\n */\n children: PropTypes.node,\n\n /**\n * A convenience prop that enables or disables appear animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n appear: PropTypes.bool,\n\n /**\n * A convenience prop that enables or disables enter animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n enter: PropTypes.bool,\n\n /**\n * A convenience prop that enables or disables exit animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n exit: PropTypes.bool,\n\n /**\n * You may need to apply reactive updates to a child as it is exiting.\n * This is generally done by using `cloneElement` however in the case of an exiting\n * child the element has already been removed and not accessible to the consumer.\n *\n * If you do need to update a child as it leaves you can provide a `childFactory`\n * to wrap every child, even the ones that are leaving.\n *\n * @type Function(child: ReactElement) -> ReactElement\n */\n childFactory: PropTypes.func\n} : {};\nTransitionGroup.defaultProps = defaultProps;\nexport default TransitionGroup;","var _excluded = [\"children\", \"appearOptions\", \"enterOptions\", \"leaveOptions\"];\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport React, { Component, Children } from 'react';\nimport { Transition } from 'react-transition-group';\nimport PropTypes from 'prop-types';\nimport Animate from './Animate';\nvar parseDurationOfSingleTransition = function parseDurationOfSingleTransition() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var steps = options.steps,\n duration = options.duration;\n if (steps && steps.length) {\n return steps.reduce(function (result, entry) {\n return result + (Number.isFinite(entry.duration) && entry.duration > 0 ? entry.duration : 0);\n }, 0);\n }\n if (Number.isFinite(duration)) {\n return duration;\n }\n return 0;\n};\nvar AnimateGroupChild = /*#__PURE__*/function (_Component) {\n _inherits(AnimateGroupChild, _Component);\n var _super = _createSuper(AnimateGroupChild);\n function AnimateGroupChild() {\n var _this;\n _classCallCheck(this, AnimateGroupChild);\n _this = _super.call(this);\n _defineProperty(_assertThisInitialized(_this), \"handleEnter\", function (node, isAppearing) {\n var _this$props = _this.props,\n appearOptions = _this$props.appearOptions,\n enterOptions = _this$props.enterOptions;\n _this.handleStyleActive(isAppearing ? appearOptions : enterOptions);\n });\n _defineProperty(_assertThisInitialized(_this), \"handleExit\", function () {\n var leaveOptions = _this.props.leaveOptions;\n _this.handleStyleActive(leaveOptions);\n });\n _this.state = {\n isActive: false\n };\n return _this;\n }\n _createClass(AnimateGroupChild, [{\n key: \"handleStyleActive\",\n value: function handleStyleActive(style) {\n if (style) {\n var onAnimationEnd = style.onAnimationEnd ? function () {\n style.onAnimationEnd();\n } : null;\n this.setState(_objectSpread(_objectSpread({}, style), {}, {\n onAnimationEnd: onAnimationEnd,\n isActive: true\n }));\n }\n }\n }, {\n key: \"parseTimeout\",\n value: function parseTimeout() {\n var _this$props2 = this.props,\n appearOptions = _this$props2.appearOptions,\n enterOptions = _this$props2.enterOptions,\n leaveOptions = _this$props2.leaveOptions;\n return parseDurationOfSingleTransition(appearOptions) + parseDurationOfSingleTransition(enterOptions) + parseDurationOfSingleTransition(leaveOptions);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n var _this$props3 = this.props,\n children = _this$props3.children,\n appearOptions = _this$props3.appearOptions,\n enterOptions = _this$props3.enterOptions,\n leaveOptions = _this$props3.leaveOptions,\n props = _objectWithoutProperties(_this$props3, _excluded);\n return /*#__PURE__*/React.createElement(Transition, _extends({}, props, {\n onEnter: this.handleEnter,\n onExit: this.handleExit,\n timeout: this.parseTimeout()\n }), function () {\n return /*#__PURE__*/React.createElement(Animate, _this2.state, Children.only(children));\n });\n }\n }]);\n return AnimateGroupChild;\n}(Component);\nAnimateGroupChild.propTypes = {\n appearOptions: PropTypes.object,\n enterOptions: PropTypes.object,\n leaveOptions: PropTypes.object,\n children: PropTypes.element\n};\nexport default AnimateGroupChild;","import React, { Children } from 'react';\nimport { TransitionGroup } from 'react-transition-group';\nimport PropTypes from 'prop-types';\nimport AnimateGroupChild from './AnimateGroupChild';\nfunction AnimateGroup(props) {\n var component = props.component,\n children = props.children,\n appear = props.appear,\n enter = props.enter,\n leave = props.leave;\n return /*#__PURE__*/React.createElement(TransitionGroup, {\n component: component\n }, Children.map(children, function (child, index) {\n return /*#__PURE__*/React.createElement(AnimateGroupChild, {\n appearOptions: appear,\n enterOptions: enter,\n leaveOptions: leave,\n key: \"child-\".concat(index) // eslint-disable-line\n }, child);\n }));\n}\nAnimateGroup.propTypes = {\n appear: PropTypes.object,\n enter: PropTypes.object,\n leave: PropTypes.object,\n children: PropTypes.oneOfType([PropTypes.array, PropTypes.element]),\n component: PropTypes.any\n};\nAnimateGroup.defaultProps = {\n component: 'span'\n};\nexport default AnimateGroup;","import Animate from './Animate';\nimport { configBezier, configSpring } from './easing';\nimport AnimateGroup from './AnimateGroup';\nexport { configSpring, configBezier, AnimateGroup };\nexport default Animate;","import { IIconStyleProps, IIconStyles } from './Icon.types';\nimport { mergeStyleSets } from '../../Styling';\n\n/** Class names used in themeable and non-themeable Icon components */\nexport const classNames = mergeStyleSets({\n root: {\n display: 'inline-block',\n },\n placeholder: [\n 'ms-Icon-placeHolder',\n {\n width: '1em',\n },\n ],\n image: [\n 'ms-Icon-imageContainer',\n {\n overflow: 'hidden',\n },\n ],\n});\n/** Class name used only in non-themeable Icon components */\nexport const MS_ICON = 'ms-Icon';\n\nexport const getStyles = (props: IIconStyleProps): IIconStyles => {\n const { className, iconClassName, isPlaceholder, isImage, styles } = props;\n\n return {\n root: [\n isPlaceholder && classNames.placeholder,\n classNames.root,\n isImage && classNames.image,\n iconClassName,\n className,\n styles && styles.root,\n // eslint-disable-next-line deprecation/deprecation\n styles && styles.imageContainer,\n ],\n };\n};\n","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : String(i); }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/**\n * @fileOverview Rectangle\n */\nimport React, { useEffect, useRef, useState } from 'react';\nimport clsx from 'clsx';\nimport Animate from 'react-smooth';\nimport { filterProps } from '../util/ReactUtils';\nvar getTrapezoidPath = function getTrapezoidPath(x, y, upperWidth, lowerWidth, height) {\n var widthGap = upperWidth - lowerWidth;\n var path;\n path = \"M \".concat(x, \",\").concat(y);\n path += \"L \".concat(x + upperWidth, \",\").concat(y);\n path += \"L \".concat(x + upperWidth - widthGap / 2, \",\").concat(y + height);\n path += \"L \".concat(x + upperWidth - widthGap / 2 - lowerWidth, \",\").concat(y + height);\n path += \"L \".concat(x, \",\").concat(y, \" Z\");\n return path;\n};\nvar defaultProps = {\n x: 0,\n y: 0,\n upperWidth: 0,\n lowerWidth: 0,\n height: 0,\n isUpdateAnimationActive: false,\n animationBegin: 0,\n animationDuration: 1500,\n animationEasing: 'ease'\n};\nexport var Trapezoid = function Trapezoid(props) {\n var trapezoidProps = _objectSpread(_objectSpread({}, defaultProps), props);\n var pathRef = useRef();\n var _useState = useState(-1),\n _useState2 = _slicedToArray(_useState, 2),\n totalLength = _useState2[0],\n setTotalLength = _useState2[1];\n useEffect(function () {\n if (pathRef.current && pathRef.current.getTotalLength) {\n try {\n var pathTotalLength = pathRef.current.getTotalLength();\n if (pathTotalLength) {\n setTotalLength(pathTotalLength);\n }\n } catch (err) {\n // calculate total length error\n }\n }\n }, []);\n var x = trapezoidProps.x,\n y = trapezoidProps.y,\n upperWidth = trapezoidProps.upperWidth,\n lowerWidth = trapezoidProps.lowerWidth,\n height = trapezoidProps.height,\n className = trapezoidProps.className;\n var animationEasing = trapezoidProps.animationEasing,\n animationDuration = trapezoidProps.animationDuration,\n animationBegin = trapezoidProps.animationBegin,\n isUpdateAnimationActive = trapezoidProps.isUpdateAnimationActive;\n if (x !== +x || y !== +y || upperWidth !== +upperWidth || lowerWidth !== +lowerWidth || height !== +height || upperWidth === 0 && lowerWidth === 0 || height === 0) {\n return null;\n }\n var layerClass = clsx('recharts-trapezoid', className);\n if (!isUpdateAnimationActive) {\n return /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"path\", _extends({}, filterProps(trapezoidProps, true), {\n className: layerClass,\n d: getTrapezoidPath(x, y, upperWidth, lowerWidth, height)\n })));\n }\n return /*#__PURE__*/React.createElement(Animate, {\n canBegin: totalLength > 0,\n from: {\n upperWidth: 0,\n lowerWidth: 0,\n height: height,\n x: x,\n y: y\n },\n to: {\n upperWidth: upperWidth,\n lowerWidth: lowerWidth,\n height: height,\n x: x,\n y: y\n },\n duration: animationDuration,\n animationEasing: animationEasing,\n isActive: isUpdateAnimationActive\n }, function (_ref) {\n var currUpperWidth = _ref.upperWidth,\n currLowerWidth = _ref.lowerWidth,\n currHeight = _ref.height,\n currX = _ref.x,\n currY = _ref.y;\n return /*#__PURE__*/React.createElement(Animate, {\n canBegin: totalLength > 0,\n from: \"0px \".concat(totalLength === -1 ? 1 : totalLength, \"px\"),\n to: \"\".concat(totalLength, \"px 0px\"),\n attributeName: \"strokeDasharray\",\n begin: animationBegin,\n duration: animationDuration,\n easing: animationEasing\n }, /*#__PURE__*/React.createElement(\"path\", _extends({}, filterProps(trapezoidProps, true), {\n className: layerClass,\n d: getTrapezoidPath(currX, currY, currUpperWidth, currLowerWidth, currHeight),\n ref: pathRef\n })));\n });\n};","var _excluded = [\"option\", \"shapeType\", \"propTransformer\", \"activeClassName\", \"isActive\"];\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : String(i); }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport React, { isValidElement, cloneElement } from 'react';\nimport isFunction from 'lodash/isFunction';\nimport isPlainObject from 'lodash/isPlainObject';\nimport isBoolean from 'lodash/isBoolean';\nimport isEqual from 'lodash/isEqual';\nimport { Rectangle } from '../shape/Rectangle';\nimport { Trapezoid } from '../shape/Trapezoid';\nimport { Sector } from '../shape/Sector';\nimport { Layer } from '../container/Layer';\nimport { Symbols } from '../shape/Symbols';\n\n/**\n * This is an abstraction for rendering a user defined prop for a customized shape in several forms.\n *\n * <Shape /> is the root and will handle taking in:\n * - an object of svg properties\n * - a boolean\n * - a render prop(inline function that returns jsx)\n * - a react element\n *\n * <ShapeSelector /> is a subcomponent of <Shape /> and used to match a component\n * to the value of props.shapeType that is passed to the root.\n *\n */\n\nfunction defaultPropTransformer(option, props) {\n return _objectSpread(_objectSpread({}, props), option);\n}\nfunction isSymbolsProps(shapeType, _elementProps) {\n return shapeType === 'symbols';\n}\nfunction ShapeSelector(_ref) {\n var shapeType = _ref.shapeType,\n elementProps = _ref.elementProps;\n switch (shapeType) {\n case 'rectangle':\n return /*#__PURE__*/React.createElement(Rectangle, elementProps);\n case 'trapezoid':\n return /*#__PURE__*/React.createElement(Trapezoid, elementProps);\n case 'sector':\n return /*#__PURE__*/React.createElement(Sector, elementProps);\n case 'symbols':\n if (isSymbolsProps(shapeType, elementProps)) {\n return /*#__PURE__*/React.createElement(Symbols, elementProps);\n }\n break;\n default:\n return null;\n }\n}\nexport function getPropsFromShapeOption(option) {\n if ( /*#__PURE__*/isValidElement(option)) {\n return option.props;\n }\n return option;\n}\nexport function Shape(_ref2) {\n var option = _ref2.option,\n shapeType = _ref2.shapeType,\n _ref2$propTransformer = _ref2.propTransformer,\n propTransformer = _ref2$propTransformer === void 0 ? defaultPropTransformer : _ref2$propTransformer,\n _ref2$activeClassName = _ref2.activeClassName,\n activeClassName = _ref2$activeClassName === void 0 ? 'recharts-active-shape' : _ref2$activeClassName,\n isActive = _ref2.isActive,\n props = _objectWithoutProperties(_ref2, _excluded);\n var shape;\n if ( /*#__PURE__*/isValidElement(option)) {\n shape = /*#__PURE__*/cloneElement(option, _objectSpread(_objectSpread({}, props), getPropsFromShapeOption(option)));\n } else if (isFunction(option)) {\n shape = option(props);\n } else if (isPlainObject(option) && !isBoolean(option)) {\n var nextProps = propTransformer(option, props);\n shape = /*#__PURE__*/React.createElement(ShapeSelector, {\n shapeType: shapeType,\n elementProps: nextProps\n });\n } else {\n var elementProps = props;\n shape = /*#__PURE__*/React.createElement(ShapeSelector, {\n shapeType: shapeType,\n elementProps: elementProps\n });\n }\n if (isActive) {\n return /*#__PURE__*/React.createElement(Layer, {\n className: activeClassName\n }, shape);\n }\n return shape;\n}\n\n/**\n * This is an abstraction to handle identifying the active index from a tooltip mouse interaction\n */\n\nexport function isFunnel(graphicalItem, _item) {\n return _item != null && 'trapezoids' in graphicalItem.props;\n}\nexport function isPie(graphicalItem, _item) {\n return _item != null && 'sectors' in graphicalItem.props;\n}\nexport function isScatter(graphicalItem, _item) {\n return _item != null && 'points' in graphicalItem.props;\n}\nexport function compareFunnel(shapeData, activeTooltipItem) {\n var _activeTooltipItem$la, _activeTooltipItem$la2;\n var xMatches = shapeData.x === (activeTooltipItem === null || activeTooltipItem === void 0 || (_activeTooltipItem$la = activeTooltipItem.labelViewBox) === null || _activeTooltipItem$la === void 0 ? void 0 : _activeTooltipItem$la.x) || shapeData.x === activeTooltipItem.x;\n var yMatches = shapeData.y === (activeTooltipItem === null || activeTooltipItem === void 0 || (_activeTooltipItem$la2 = activeTooltipItem.labelViewBox) === null || _activeTooltipItem$la2 === void 0 ? void 0 : _activeTooltipItem$la2.y) || shapeData.y === activeTooltipItem.y;\n return xMatches && yMatches;\n}\nexport function comparePie(shapeData, activeTooltipItem) {\n var startAngleMatches = shapeData.endAngle === activeTooltipItem.endAngle;\n var endAngleMatches = shapeData.startAngle === activeTooltipItem.startAngle;\n return startAngleMatches && endAngleMatches;\n}\nexport function compareScatter(shapeData, activeTooltipItem) {\n var xMatches = shapeData.x === activeTooltipItem.x;\n var yMatches = shapeData.y === activeTooltipItem.y;\n var zMatches = shapeData.z === activeTooltipItem.z;\n return xMatches && yMatches && zMatches;\n}\nfunction getComparisonFn(graphicalItem, activeItem) {\n var comparison;\n if (isFunnel(graphicalItem, activeItem)) {\n comparison = compareFunnel;\n } else if (isPie(graphicalItem, activeItem)) {\n comparison = comparePie;\n } else if (isScatter(graphicalItem, activeItem)) {\n comparison = compareScatter;\n }\n return comparison;\n}\nfunction getShapeDataKey(graphicalItem, activeItem) {\n var shapeKey;\n if (isFunnel(graphicalItem, activeItem)) {\n shapeKey = 'trapezoids';\n } else if (isPie(graphicalItem, activeItem)) {\n shapeKey = 'sectors';\n } else if (isScatter(graphicalItem, activeItem)) {\n shapeKey = 'points';\n }\n return shapeKey;\n}\nfunction getActiveShapeTooltipPayload(graphicalItem, activeItem) {\n if (isFunnel(graphicalItem, activeItem)) {\n var _activeItem$tooltipPa;\n return (_activeItem$tooltipPa = activeItem.tooltipPayload) === null || _activeItem$tooltipPa === void 0 || (_activeItem$tooltipPa = _activeItem$tooltipPa[0]) === null || _activeItem$tooltipPa === void 0 || (_activeItem$tooltipPa = _activeItem$tooltipPa.payload) === null || _activeItem$tooltipPa === void 0 ? void 0 : _activeItem$tooltipPa.payload;\n }\n if (isPie(graphicalItem, activeItem)) {\n var _activeItem$tooltipPa2;\n return (_activeItem$tooltipPa2 = activeItem.tooltipPayload) === null || _activeItem$tooltipPa2 === void 0 || (_activeItem$tooltipPa2 = _activeItem$tooltipPa2[0]) === null || _activeItem$tooltipPa2 === void 0 || (_activeItem$tooltipPa2 = _activeItem$tooltipPa2.payload) === null || _activeItem$tooltipPa2 === void 0 ? void 0 : _activeItem$tooltipPa2.payload;\n }\n if (isScatter(graphicalItem, activeItem)) {\n return activeItem.payload;\n }\n return {};\n}\n/**\n *\n * @param {GetActiveShapeIndexForTooltip} arg an object of incoming attributes from Tooltip\n * @returns {number}\n *\n * To handle possible duplicates in the data set,\n * match both the data value of the active item to a data value on a graph item,\n * and match the mouse coordinates of the active item to the coordinates of in a particular components shape data.\n * This assumes equal lengths of shape objects to data items.\n */\nexport function getActiveShapeIndexForTooltip(_ref3) {\n var activeTooltipItem = _ref3.activeTooltipItem,\n graphicalItem = _ref3.graphicalItem,\n itemData = _ref3.itemData;\n var shapeKey = getShapeDataKey(graphicalItem, activeTooltipItem);\n var tooltipPayload = getActiveShapeTooltipPayload(graphicalItem, activeTooltipItem);\n var activeItemMatches = itemData.filter(function (datum, dataIndex) {\n var valuesMatch = isEqual(tooltipPayload, datum);\n var mouseCoordinateMatches = graphicalItem.props[shapeKey].filter(function (shapeData) {\n var comparison = getComparisonFn(graphicalItem, activeTooltipItem);\n return comparison(shapeData, activeTooltipItem);\n });\n\n // get the last index in case of multiple matches\n var indexOfMouseCoordinates = graphicalItem.props[shapeKey].indexOf(mouseCoordinateMatches[mouseCoordinateMatches.length - 1]);\n var coordinatesMatch = dataIndex === indexOfMouseCoordinates;\n return valuesMatch && coordinatesMatch;\n });\n\n // get the last index in case of multiple matches\n var activeIndex = itemData.indexOf(activeItemMatches[activeItemMatches.length - 1]);\n return activeIndex;\n}","import * as React from 'react';\nimport { ITheme, IStyle } from '../../Styling';\nimport { IRefObject, IStyleFunctionOrObject } from '../../Utilities';\n\n/**\n * {@docCategory Spinner}\n */\nexport interface ISpinner {}\n\n/**\n * Spinner component props.\n * {@docCategory Spinner}\n */\nexport interface ISpinnerProps extends React.HTMLAttributes<HTMLElement> {\n /**\n * Optional callback to access the ISpinner interface. Use this instead of ref for accessing\n * the public methods and properties of the component.\n */\n componentRef?: IRefObject<ISpinner>;\n\n /**\n * Deprecated and will be removed at \\>= 2.0.0. Use `SpinnerSize` instead.\n * @deprecated Use `SpinnerSize` instead.\n */\n // eslint-disable-next-line deprecation/deprecation\n type?: SpinnerType;\n\n /**\n * The size of Spinner to render. \\{ extraSmall, small, medium, large \\}\n * @defaultvalue SpinnerType.medium\n */\n size?: SpinnerSize;\n\n /**\n * The label to show next to the Spinner. Label updates will be announced to the screen readers.\n * Use ariaLive to control politeness level.\n */\n label?: string;\n\n /**\n * Additional CSS class(es) to apply to the Spinner.\n */\n className?: string;\n\n /**\n * Politeness setting for label update announcement.\n * @defaultvalue polite\n */\n ariaLive?: 'assertive' | 'polite' | 'off';\n\n /**\n * Alternative status label for screen reader\n */\n ariaLabel?: string;\n\n /**\n * Theme (provided through customization.)\n */\n theme?: ITheme;\n\n /**\n * Call to provide customized styling that will layer on top of the variant rules.\n */\n styles?: IStyleFunctionOrObject<ISpinnerStyleProps, ISpinnerStyles>;\n\n /**\n * The position of the label in regards of the spinner animation.\n * @defaultvalue SpinnerLabelPosition.bottom\n */\n labelPosition?: SpinnerLabelPosition;\n}\n\n/**\n * Possible variations of the spinner circle size.\n * {@docCategory Spinner}\n */\nexport enum SpinnerSize {\n /**\n * 12px Spinner diameter\n */\n xSmall = 0,\n\n /**\n * 16px Spinner diameter\n */\n small = 1,\n\n /**\n * 20px Spinner diameter\n */\n medium = 2,\n\n /**\n * 28px Spinner diameter\n */\n large = 3,\n}\n\n/**\n * Possible locations of the label in regards to the spinner\n * @defaultvalue bottom\n * {@docCategory Spinner}\n */\nexport type SpinnerLabelPosition = 'top' | 'right' | 'bottom' | 'left';\n\n/**\n * Deprecated at v2.0.0, use `SpinnerSize` instead.\n * @deprecated Use `SpinnerSize` instead.\n * {@docCategory Spinner}\n */\nexport enum SpinnerType {\n /**\n * Deprecated and will be removed at \\>= 2.0.0. Use `SpinnerSize.medium` instead.\n * @deprecated Use `SpinnerSize.medium` instead.\n */\n normal = 0,\n\n /**\n * Deprecated and will be removed at \\>= 2.0.0. Use `SpinnerSize.large` instead.\n * @deprecated Use `SpinnerSize.large` instead.\n */\n large = 1,\n}\n\n/**\n * The props needed to construct styles.\n * This represents the simplified set of immutable things which control the class names.\n * {@docCategory Spinner}\n */\nexport interface ISpinnerStyleProps {\n /** Theme provided by High-Order Component. */\n theme: ITheme;\n\n /** Size of the spinner animation. */\n size?: SpinnerSize;\n\n /** CSS class name for the component attached to the root stylable area. */\n className?: string;\n\n /** Position of the label in regards to the spinner animation. */\n labelPosition?: SpinnerLabelPosition;\n}\n\n/**\n * Represents the stylable areas of the control.\n * {@docCategory Spinner}\n */\nexport interface ISpinnerStyles {\n /** Styles for the root element. Refers to the wrapper containing both the circle and the label. */\n root?: IStyle;\n\n /** Styles for the spinner circle animation. */\n circle?: IStyle;\n\n /** Styles for the label accompanying the circle. */\n label?: IStyle;\n\n /** Styles for the hidden helper element to aid with screen readers. */\n screenReaderText?: IStyle;\n}\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","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.copy = copy;\nexports.default = continuous;\nexports.identity = identity;\nexports.transformer = transformer;\n\nvar _index = require(\"../../../lib-vendor/d3-array/src/index.js\");\n\nvar _index2 = require(\"../../../lib-vendor/d3-interpolate/src/index.js\");\n\nvar _constant = _interopRequireDefault(require(\"./constant.js\"));\n\nvar _number = _interopRequireDefault(require(\"./number.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar unit = [0, 1];\n\nfunction identity(x) {\n return x;\n}\n\nfunction normalize(a, b) {\n return (b -= a = +a) ? function (x) {\n return (x - a) / b;\n } : (0, _constant.default)(isNaN(b) ? NaN : 0.5);\n}\n\nfunction clamper(a, b) {\n var t;\n if (a > b) t = a, a = b, b = t;\n return function (x) {\n return Math.max(a, Math.min(b, x));\n };\n} // normalize(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].\n// interpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding range value x in [a,b].\n\n\nfunction bimap(domain, range, interpolate) {\n var d0 = domain[0],\n d1 = domain[1],\n r0 = range[0],\n r1 = range[1];\n if (d1 < d0) d0 = normalize(d1, d0), r0 = interpolate(r1, r0);else d0 = normalize(d0, d1), r0 = interpolate(r0, r1);\n return function (x) {\n return r0(d0(x));\n };\n}\n\nfunction polymap(domain, range, interpolate) {\n var j = Math.min(domain.length, range.length) - 1,\n d = new Array(j),\n r = new Array(j),\n i = -1; // Reverse descending domains.\n\n if (domain[j] < domain[0]) {\n domain = domain.slice().reverse();\n range = range.slice().reverse();\n }\n\n while (++i < j) {\n d[i] = normalize(domain[i], domain[i + 1]);\n r[i] = interpolate(range[i], range[i + 1]);\n }\n\n return function (x) {\n var i = (0, _index.bisect)(domain, x, 1, j) - 1;\n return r[i](d[i](x));\n };\n}\n\nfunction copy(source, target) {\n return target.domain(source.domain()).range(source.range()).interpolate(source.interpolate()).clamp(source.clamp()).unknown(source.unknown());\n}\n\nfunction transformer() {\n var domain = unit,\n range = unit,\n interpolate = _index2.interpolate,\n transform,\n untransform,\n unknown,\n clamp = identity,\n piecewise,\n output,\n input;\n\n function rescale() {\n var n = Math.min(domain.length, range.length);\n if (clamp !== identity) clamp = clamper(domain[0], domain[n - 1]);\n piecewise = n > 2 ? polymap : bimap;\n output = input = null;\n return scale;\n }\n\n function scale(x) {\n return x == null || isNaN(x = +x) ? unknown : (output || (output = piecewise(domain.map(transform), range, interpolate)))(transform(clamp(x)));\n }\n\n scale.invert = function (y) {\n return clamp(untransform((input || (input = piecewise(range, domain.map(transform), _index2.interpolateNumber)))(y)));\n };\n\n scale.domain = function (_) {\n return arguments.length ? (domain = Array.from(_, _number.default), rescale()) : domain.slice();\n };\n\n scale.range = function (_) {\n return arguments.length ? (range = Array.from(_), rescale()) : range.slice();\n };\n\n scale.rangeRound = function (_) {\n return range = Array.from(_), interpolate = _index2.interpolateRound, rescale();\n };\n\n scale.clamp = function (_) {\n return arguments.length ? (clamp = _ ? true : identity, rescale()) : clamp !== identity;\n };\n\n scale.interpolate = function (_) {\n return arguments.length ? (interpolate = _, rescale()) : interpolate;\n };\n\n scale.unknown = function (_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function (t, u) {\n transform = t, untransform = u;\n return rescale();\n };\n}\n\nfunction continuous() {\n return transformer()(identity, identity);\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","export interface IVendorSettings {\n isWebkit?: boolean;\n isMoz?: boolean;\n isMs?: boolean;\n isOpera?: boolean;\n}\n\nlet _vendorSettings: IVendorSettings | undefined;\n\nexport function getVendorSettings(): IVendorSettings {\n if (!_vendorSettings) {\n const doc = typeof document !== 'undefined' ? document : undefined;\n const nav = typeof navigator !== 'undefined' ? navigator : undefined;\n const userAgent = nav?.userAgent?.toLowerCase();\n\n if (!doc) {\n _vendorSettings = {\n isWebkit: true,\n isMoz: true,\n isOpera: true,\n isMs: true,\n };\n } else {\n _vendorSettings = {\n isWebkit: !!(doc && 'WebkitAppearance' in doc.documentElement.style),\n isMoz: !!(userAgent && userAgent.indexOf('firefox') > -1),\n isOpera: !!(userAgent && userAgent.indexOf('opera') > -1),\n isMs: !!(nav && (/rv:11.0/i.test(nav.userAgent) || /Edge\\/\\d./i.test(navigator.userAgent))),\n };\n }\n }\n\n return _vendorSettings;\n}\n\n/**\n * Sets the vendor settings for prefixing and vendor specific operations.\n */\nexport function setVendorSettings(vendorSettings?: IVendorSettings): void {\n _vendorSettings = vendorSettings;\n}\n","const rules: { [key: string]: string } = {};\n\nexport function kebabRules(rulePairs: (string | number)[], index: number): void {\n const rule: string = rulePairs[index] as string;\n\n if (rule.charAt(0) !== '-') {\n rulePairs[index] = rules[rule] = rules[rule] || rule.replace(/([A-Z])/g, '-$1').toLowerCase();\n }\n}\n","import { getVendorSettings } from '../getVendorSettings';\n\nconst autoPrefixNames: { [key: string]: number } = {\n 'user-select': 1,\n};\n\nexport function prefixRules(rulePairs: (string | number)[], index: number): void {\n const vendorSettings = getVendorSettings();\n\n const name = rulePairs[index];\n\n if (autoPrefixNames[name]) {\n const value = rulePairs[index + 1];\n\n if (autoPrefixNames[name]) {\n if (vendorSettings.isWebkit) {\n rulePairs.push('-webkit-' + name, value);\n }\n if (vendorSettings.isMoz) {\n rulePairs.push('-moz-' + name, value);\n }\n if (vendorSettings.isMs) {\n rulePairs.push('-ms-' + name, value);\n }\n if (vendorSettings.isOpera) {\n rulePairs.push('-o-' + name, value);\n }\n }\n }\n}\n","const NON_PIXEL_NUMBER_PROPS = [\n 'column-count',\n 'font-weight',\n 'flex',\n 'flex-grow',\n 'flex-shrink',\n 'fill-opacity',\n 'opacity',\n 'order',\n 'z-index',\n 'zoom',\n];\n\nexport function provideUnits(rulePairs: (string | number)[], index: number): void {\n const name = rulePairs[index] as string;\n const value = rulePairs[index + 1];\n\n if (typeof value === 'number') {\n const isNonPixelProp = NON_PIXEL_NUMBER_PROPS.indexOf(name as string) > -1;\n const isVariableOrPrefixed = name.indexOf('--') > -1;\n const unit = isNonPixelProp || isVariableOrPrefixed ? '' : 'px';\n\n rulePairs[index + 1] = `${value}${unit}`;\n }\n}\n","import { IStyleOptions } from '../IStyleOptions';\n\nconst LEFT = 'left';\nconst RIGHT = 'right';\nconst NO_FLIP = '@noflip';\nconst NAME_REPLACEMENTS: { [key: string]: string } = {\n [LEFT]: RIGHT,\n [RIGHT]: LEFT,\n};\nconst VALUE_REPLACEMENTS: { [key: string]: string } = {\n 'w-resize': 'e-resize',\n 'sw-resize': 'se-resize',\n 'nw-resize': 'ne-resize',\n};\n\n/**\n * RTLifies the rulePair in the array at the current index. This mutates the array for performance\n * reasons.\n */\nexport function rtlifyRules(options: IStyleOptions, rulePairs: (string | number)[], index: number): void {\n if (options.rtl) {\n const name = rulePairs[index] as string;\n\n if (!name) {\n return;\n }\n\n const value = rulePairs[index + 1] as string;\n\n if (typeof value === 'string' && value.indexOf(NO_FLIP) >= 0) {\n rulePairs[index + 1] = value.replace(/\\s*(?:\\/\\*\\s*)?\\@noflip\\b(?:\\s*\\*\\/)?\\s*?/g, '');\n } else if (name.indexOf(LEFT) >= 0) {\n rulePairs[index] = name.replace(LEFT, RIGHT);\n } else if (name.indexOf(RIGHT) >= 0) {\n rulePairs[index] = name.replace(RIGHT, LEFT);\n } else if (String(value).indexOf(LEFT) >= 0) {\n rulePairs[index + 1] = value.replace(LEFT, RIGHT);\n } else if (String(value).indexOf(RIGHT) >= 0) {\n rulePairs[index + 1] = value.replace(RIGHT, LEFT);\n } else if (NAME_REPLACEMENTS[name]) {\n rulePairs[index] = NAME_REPLACEMENTS[name];\n } else if (VALUE_REPLACEMENTS[value]) {\n rulePairs[index + 1] = VALUE_REPLACEMENTS[value];\n } else {\n switch (name) {\n case 'margin':\n case 'padding':\n rulePairs[index + 1] = flipQuad(value);\n break;\n case 'box-shadow':\n rulePairs[index + 1] = negateNum(value, 0);\n break;\n }\n }\n }\n}\n\n/**\n * Given a string value in a space delimited format (e.g. \"1 2 3 4\"), negates a particular value.\n */\nfunction negateNum(value: string, partIndex: number): string {\n const parts = value.split(' ');\n const numberVal = parseInt(parts[partIndex], 10);\n\n parts[0] = parts[0].replace(String(numberVal), String(numberVal * -1));\n\n return parts.join(' ');\n}\n\n/**\n * Given a string quad, flips the left and right values.\n */\nfunction flipQuad(value: string): string {\n if (typeof value === 'string') {\n const parts = value.split(' ');\n\n if (parts.length === 4) {\n return `${parts[0]} ${parts[3]} ${parts[2]} ${parts[1]}`;\n }\n }\n\n return value;\n}\n","import { IStyle } from './IStyle';\nimport { IRawStyle } from './IRawStyle';\n\nimport { Stylesheet } from './Stylesheet';\nimport { kebabRules } from './transforms/kebabRules';\nimport { prefixRules } from './transforms/prefixRules';\nimport { provideUnits } from './transforms/provideUnits';\nimport { rtlifyRules } from './transforms/rtlifyRules';\nimport { IStyleOptions } from './IStyleOptions';\n\nconst DISPLAY_NAME = 'displayName';\n\ntype IDictionary = { [key: string]: any };\n\ninterface IRuleSet {\n __order: string[];\n [key: string]: IDictionary;\n}\n\nfunction getDisplayName(rules?: { [key: string]: IRawStyle }): string | undefined {\n const rootStyle: IStyle = rules && rules['&'];\n\n return rootStyle ? (rootStyle as IRawStyle).displayName : undefined;\n}\n\nconst globalSelectorRegExp = /\\:global\\((.+?)\\)/g;\n\ntype ReplacementInfo = [number, number, string];\n\n/**\n * Finds comma separated selectors in a :global() e.g. \":global(.class1, .class2, .class3)\"\n * and wraps them each in their own global \":global(.class1), :global(.class2), :global(.class3)\"\n *\n * @param selectorWithGlobals The selector to process\n * @returns The updated selector\n */\nfunction expandCommaSeparatedGlobals(selectorWithGlobals: string): string {\n // We the selector does not have a :global() we can shortcut\n if (!globalSelectorRegExp.test(selectorWithGlobals)) {\n return selectorWithGlobals;\n }\n\n const replacementInfo: ReplacementInfo[] = [];\n\n const findGlobal = /\\:global\\((.+?)\\)/g;\n let match = null;\n // Create a result list for global selectors so we can replace them.\n while ((match = findGlobal.exec(selectorWithGlobals))) {\n // Only if the found selector is a comma separated list we'll process it.\n if (match[1].indexOf(',') > -1) {\n replacementInfo.push([\n match.index,\n match.index + match[0].length,\n // Wrap each of the found selectors in :global()\n match[1]\n .split(',')\n .map((v: string) => `:global(${v.trim()})`)\n .join(', '),\n ]);\n }\n }\n\n // Replace the found selectors with their wrapped variants in reverse order\n return replacementInfo\n .reverse()\n .reduce((selector: string, [matchIndex, matchEndIndex, replacement]: ReplacementInfo) => {\n const prefix = selector.slice(0, matchIndex);\n const suffix = selector.slice(matchEndIndex);\n\n return prefix + replacement + suffix;\n }, selectorWithGlobals);\n}\n\nfunction expandSelector(newSelector: string, currentSelector: string): string {\n if (newSelector.indexOf(':global(') >= 0) {\n return newSelector.replace(globalSelectorRegExp, '$1');\n } else if (newSelector.indexOf(':') === 0) {\n return currentSelector + newSelector;\n } else if (newSelector.indexOf('&') < 0) {\n return currentSelector + ' ' + newSelector;\n }\n\n return newSelector;\n}\n\nfunction extractSelector(currentSelector: string, rules: IRuleSet = { __order: [] }, selector: string, value: IStyle) {\n if (selector.indexOf('@') === 0) {\n selector = selector + '{' + currentSelector;\n extractRules([value], rules, selector);\n } else if (selector.indexOf(',') > -1) {\n expandCommaSeparatedGlobals(selector)\n .split(',')\n .map((s: string) => s.trim())\n .forEach((separatedSelector: string) =>\n extractRules([value], rules, expandSelector(separatedSelector, currentSelector)),\n );\n } else {\n extractRules([value], rules, expandSelector(selector, currentSelector));\n }\n}\n\nfunction extractRules(args: IStyle[], rules: IRuleSet = { __order: [] }, currentSelector: string = '&'): IRuleSet {\n const stylesheet = Stylesheet.getInstance();\n let currentRules: IDictionary | undefined = rules[currentSelector] as IDictionary;\n\n if (!currentRules) {\n currentRules = {};\n rules[currentSelector] = currentRules;\n rules.__order.push(currentSelector);\n }\n\n for (const arg of args) {\n // If the arg is a string, we need to look up the class map and merge.\n if (typeof arg === 'string') {\n const expandedRules = stylesheet.argsFromClassName(arg);\n\n if (expandedRules) {\n extractRules(expandedRules, rules, currentSelector);\n }\n // Else if the arg is an array, we need to recurse in.\n } else if (Array.isArray(arg)) {\n extractRules(arg, rules, currentSelector);\n } else {\n for (const prop in arg as any) {\n if ((arg as any).hasOwnProperty(prop)) {\n const propValue = (arg as any)[prop];\n\n if (prop === 'selectors') {\n // every child is a selector.\n const selectors: { [key: string]: IStyle } = (arg as any).selectors;\n\n for (const newSelector in selectors) {\n if (selectors.hasOwnProperty(newSelector)) {\n extractSelector(currentSelector, rules, newSelector, selectors[newSelector]);\n }\n }\n } else if (typeof propValue === 'object') {\n // prop is a selector.\n if (propValue !== null) {\n extractSelector(currentSelector, rules, prop, propValue);\n }\n } else {\n if (propValue !== undefined) {\n // Else, add the rule to the currentSelector.\n if (prop === 'margin' || prop === 'padding') {\n expandQuads(currentRules, prop, propValue);\n } else {\n (currentRules as any)[prop] = propValue;\n }\n }\n }\n }\n }\n }\n }\n\n return rules;\n}\n\nfunction expandQuads(currentRules: IDictionary, name: string, value: string): void {\n const parts = typeof value === 'string' ? value.split(' ') : [value];\n\n currentRules[name + 'Top'] = parts[0];\n currentRules[name + 'Right'] = parts[1] || parts[0];\n currentRules[name + 'Bottom'] = parts[2] || parts[0];\n currentRules[name + 'Left'] = parts[3] || parts[1] || parts[0];\n}\n\nfunction getKeyForRules(options: IStyleOptions, rules: IRuleSet): string | undefined {\n const serialized: string[] = [options.rtl ? 'rtl' : 'ltr'];\n let hasProps = false;\n\n for (const selector of rules.__order) {\n serialized.push(selector);\n const rulesForSelector = rules[selector];\n\n for (const propName in rulesForSelector) {\n if (rulesForSelector.hasOwnProperty(propName) && rulesForSelector[propName] !== undefined) {\n hasProps = true;\n serialized.push(propName, rulesForSelector[propName]);\n }\n }\n }\n\n return hasProps ? serialized.join('') : undefined;\n}\n\nfunction repeatString(target: string, count: number): string {\n if (count <= 0) {\n return '';\n }\n\n if (count === 1) {\n return target;\n }\n\n return target + repeatString(target, count - 1);\n}\n\nexport function serializeRuleEntries(options: IStyleOptions, ruleEntries: { [key: string]: string | number }): string {\n if (!ruleEntries) {\n return '';\n }\n\n const allEntries: (string | number)[] = [];\n\n for (const entry in ruleEntries) {\n if (ruleEntries.hasOwnProperty(entry) && entry !== DISPLAY_NAME && ruleEntries[entry] !== undefined) {\n allEntries.push(entry, ruleEntries[entry]);\n }\n }\n\n // Apply transforms.\n for (let i = 0; i < allEntries.length; i += 2) {\n kebabRules(allEntries, i);\n provideUnits(allEntries, i);\n rtlifyRules(options, allEntries, i);\n prefixRules(allEntries, i);\n }\n\n // Apply punctuation.\n for (let i = 1; i < allEntries.length; i += 4) {\n allEntries.splice(i, 1, ':', allEntries[i], ';');\n }\n\n return allEntries.join('');\n}\n\nexport interface IRegistration {\n className: string;\n key: string;\n args: IStyle[];\n rulesToInsert: string[];\n}\n\nexport function styleToRegistration(options: IStyleOptions, ...args: IStyle[]): IRegistration | undefined {\n const rules: IRuleSet = extractRules(args);\n const key = getKeyForRules(options, rules);\n\n if (key) {\n const stylesheet = Stylesheet.getInstance();\n const registration: Partial<IRegistration> = {\n className: stylesheet.classNameFromKey(key),\n key,\n args,\n };\n\n if (!registration.className) {\n registration.className = stylesheet.getClassName(getDisplayName(rules));\n const rulesToInsert: string[] = [];\n\n for (const selector of rules.__order) {\n rulesToInsert.push(selector, serializeRuleEntries(options, rules[selector]));\n }\n registration.rulesToInsert = rulesToInsert;\n }\n\n return registration as IRegistration;\n }\n\n return undefined;\n}\n\n/**\n * Insert style to stylesheet.\n * @param registration Style registration.\n * @param specificityMultiplier Number of times classname selector is repeated in the css rule.\n * This is to increase css specificity in case it's needed. Default to 1.\n */\nexport function applyRegistration(registration: IRegistration, specificityMultiplier: number = 1): void {\n const stylesheet = Stylesheet.getInstance();\n const { className, key, args, rulesToInsert } = registration;\n\n if (rulesToInsert) {\n // rulesToInsert is an ordered array of selector/rule pairs.\n for (let i = 0; i < rulesToInsert.length; i += 2) {\n const rules = rulesToInsert[i + 1];\n if (rules) {\n let selector = rulesToInsert[i];\n selector = selector.replace(/&/g, repeatString(`.${registration.className}`, specificityMultiplier));\n\n // Insert. Note if a media query, we must close the query with a final bracket.\n const processedRule = `${selector}{${rules}}${selector.indexOf('@') === 0 ? '}' : ''}`;\n stylesheet.insertRule(processedRule);\n }\n }\n stylesheet.cacheClassName(className!, key!, args!, rulesToInsert);\n }\n}\n\nexport function styleToClassName(options: IStyleOptions, ...args: IStyle[]): string {\n const registration = styleToRegistration(options, ...args);\n if (registration) {\n applyRegistration(registration, options.specificityMultiplier);\n\n return registration.className;\n }\n\n return '';\n}\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 // 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\nexport default nodeUtil;\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 // 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\nexport default nodeUtil;\n","export function shallowEqual(a, b) {\n /* eslint-disable no-restricted-syntax */\n for (var key in a) {\n if ({}.hasOwnProperty.call(a, key) && (!{}.hasOwnProperty.call(b, key) || a[key] !== b[key])) {\n return false;\n }\n }\n for (var _key in b) {\n if ({}.hasOwnProperty.call(b, _key) && !{}.hasOwnProperty.call(a, _key)) {\n return false;\n }\n }\n return true;\n}","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : String(i); }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport { Global } from './Global';\nvar stringCache = {\n widthCache: {},\n cacheCount: 0\n};\nvar MAX_CACHE_NUM = 2000;\nvar SPAN_STYLE = {\n position: 'absolute',\n top: '-20000px',\n left: 0,\n padding: 0,\n margin: 0,\n border: 'none',\n whiteSpace: 'pre'\n};\nvar STYLE_LIST = ['minWidth', 'maxWidth', 'width', 'minHeight', 'maxHeight', 'height', 'top', 'left', 'fontSize', 'lineHeight', 'padding', 'margin', 'paddingLeft', 'paddingRight', 'paddingTop', 'paddingBottom', 'marginLeft', 'marginRight', 'marginTop', 'marginBottom'];\nvar MEASUREMENT_SPAN_ID = 'recharts_measurement_span';\nfunction autoCompleteStyle(name, value) {\n if (STYLE_LIST.indexOf(name) >= 0 && value === +value) {\n return \"\".concat(value, \"px\");\n }\n return value;\n}\nfunction camelToMiddleLine(text) {\n var strs = text.split('');\n var formatStrs = strs.reduce(function (result, entry) {\n if (entry === entry.toUpperCase()) {\n return [].concat(_toConsumableArray(result), ['-', entry.toLowerCase()]);\n }\n return [].concat(_toConsumableArray(result), [entry]);\n }, []);\n return formatStrs.join('');\n}\nexport var getStyleString = function getStyleString(style) {\n return Object.keys(style).reduce(function (result, s) {\n return \"\".concat(result).concat(camelToMiddleLine(s), \":\").concat(autoCompleteStyle(s, style[s]), \";\");\n }, '');\n};\nfunction removeInvalidKeys(obj) {\n var copyObj = _objectSpread({}, obj);\n Object.keys(copyObj).forEach(function (key) {\n if (!copyObj[key]) {\n delete copyObj[key];\n }\n });\n return copyObj;\n}\nexport var getStringSize = function getStringSize(text) {\n var style = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n if (text === undefined || text === null || Global.isSsr) {\n return {\n width: 0,\n height: 0\n };\n }\n var copyStyle = removeInvalidKeys(style);\n var cacheKey = JSON.stringify({\n text: text,\n copyStyle: copyStyle\n });\n if (stringCache.widthCache[cacheKey]) {\n return stringCache.widthCache[cacheKey];\n }\n try {\n var measurementSpan = document.getElementById(MEASUREMENT_SPAN_ID);\n if (!measurementSpan) {\n measurementSpan = document.createElement('span');\n measurementSpan.setAttribute('id', MEASUREMENT_SPAN_ID);\n measurementSpan.setAttribute('aria-hidden', 'true');\n document.body.appendChild(measurementSpan);\n }\n // Need to use CSS Object Model (CSSOM) to be able to comply with Content Security Policy (CSP)\n // https://en.wikipedia.org/wiki/Content_Security_Policy\n var measurementSpanStyle = _objectSpread(_objectSpread({}, SPAN_STYLE), copyStyle);\n Object.assign(measurementSpan.style, measurementSpanStyle);\n measurementSpan.textContent = \"\".concat(text);\n var rect = measurementSpan.getBoundingClientRect();\n var result = {\n width: rect.width,\n height: rect.height\n };\n stringCache.widthCache[cacheKey] = result;\n if (++stringCache.cacheCount > MAX_CACHE_NUM) {\n stringCache.cacheCount = 0;\n stringCache.widthCache = {};\n }\n return result;\n } catch (e) {\n return {\n width: 0,\n height: 0\n };\n }\n};\nexport var getOffset = function getOffset(rect) {\n return {\n top: rect.top + window.scrollY - document.documentElement.clientTop,\n left: rect.left + window.scrollX - document.documentElement.clientLeft\n };\n};","import React from 'react'; // TODO (apparently this is a bare \"onSelect\"?)\n\nvar SelectableContext = /*#__PURE__*/React.createContext(null);\nexport var makeEventKey = function makeEventKey(eventKey, href) {\n if (href === void 0) {\n href = null;\n }\n\n if (eventKey != null) return String(eventKey);\n return href || null;\n};\nexport default SelectableContext;","import * as React from 'react';\nimport { BaseDecorator } from './BaseDecorator';\nimport { getWindow, hoistStatics, EventGroup } from '../../Utilities';\nimport { WindowContext } from '../../WindowProvider';\n\nexport interface IWithResponsiveModeState {\n responsiveMode?: ResponsiveMode;\n}\n\nexport enum ResponsiveMode {\n small = 0,\n medium = 1,\n large = 2,\n xLarge = 3,\n xxLarge = 4,\n xxxLarge = 5,\n unknown = 999,\n}\n\nconst RESPONSIVE_MAX_CONSTRAINT = [479, 639, 1023, 1365, 1919, 99999999];\n\n/**\n * User specified mode to default to, useful for server side rendering scenarios.\n */\nlet _defaultMode: ResponsiveMode | undefined;\n\n/**\n * Tracking the last mode we successfully rendered, which allows us to\n * paint initial renders with the correct size.\n */\nlet _lastMode: ResponsiveMode | undefined;\n\n/**\n * Allows a server rendered scenario to provide a default responsive mode.\n */\nexport function setResponsiveMode(responsiveMode: ResponsiveMode | undefined): void {\n _defaultMode = responsiveMode;\n}\n\n/**\n * Initializes the responsive mode to the current window size. This can be used to avoid\n * a re-render during first component mount since the window would otherwise not be measured\n * until after mounting.\n */\nexport function initializeResponsiveMode(element?: HTMLElement): void {\n if (typeof window !== 'undefined') {\n const currentWindow = (element && getWindow(element)) || window;\n\n getResponsiveMode(currentWindow);\n }\n}\n\nexport function getInitialResponsiveMode(): ResponsiveMode {\n return _defaultMode ?? _lastMode ?? ResponsiveMode.large;\n}\n\nexport function withResponsiveMode<TProps extends { responsiveMode?: ResponsiveMode }, TState>(\n ComposedComponent: new (props: TProps, ...args: any[]) => React.Component<TProps, TState>,\n): any {\n const resultClass = class WithResponsiveMode extends BaseDecorator<TProps, IWithResponsiveModeState> {\n public static contextType = WindowContext;\n public context: React.ContextType<typeof WindowContext>;\n\n private _events: EventGroup;\n\n constructor(props: TProps) {\n super(props);\n this._events = new EventGroup(this);\n this._updateComposedComponentRef = this._updateComposedComponentRef.bind(this);\n\n this.state = {\n responsiveMode: getInitialResponsiveMode(),\n };\n }\n\n public componentDidMount(): void {\n this._events.on(this.context.window, 'resize', this._onResize);\n this._onResize();\n }\n\n public componentWillUnmount(): void {\n this._events.dispose();\n }\n\n public render(): JSX.Element | null {\n const { responsiveMode } = this.state;\n\n return responsiveMode === ResponsiveMode.unknown ? null : (\n <ComposedComponent\n ref={this._updateComposedComponentRef}\n responsiveMode={responsiveMode}\n {...(this.props as any)}\n />\n );\n }\n\n private _onResize = () => {\n const responsiveMode = getResponsiveMode(this.context.window);\n\n if (responsiveMode !== this.state.responsiveMode) {\n this.setState({\n responsiveMode,\n });\n }\n };\n };\n return hoistStatics(ComposedComponent, resultClass);\n}\n\nfunction getWidthOfCurrentWindow(currentWindow: Window): number {\n try {\n return currentWindow.document.documentElement.clientWidth;\n } catch (e) {\n return currentWindow.innerWidth;\n }\n}\n\nexport function getResponsiveMode(currentWindow: Window | undefined): ResponsiveMode {\n let responsiveMode = ResponsiveMode.small;\n\n if (currentWindow) {\n try {\n while (getWidthOfCurrentWindow(currentWindow) > RESPONSIVE_MAX_CONSTRAINT[responsiveMode]) {\n responsiveMode++;\n }\n } catch (e) {\n // Return a best effort result in cases where we're in the browser but it throws on getting innerWidth.\n responsiveMode = getInitialResponsiveMode();\n }\n\n // Tracking last mode just gives us a better default in future renders,\n // which avoids starting with the wrong value if we've measured once.\n _lastMode = responsiveMode;\n } else {\n if (_defaultMode !== undefined) {\n responsiveMode = _defaultMode;\n } else {\n throw new Error(\n 'Content was rendered in a server environment without providing a default responsive mode. ' +\n 'Call setResponsiveMode to define what the responsive mode is.',\n );\n }\n }\n\n return responsiveMode;\n}\n","import * as React from 'react';\n\n/**\n * Props for the WindowProvider component.\n */\nexport type WindowProviderProps = {\n /**\n * Provide the active window.\n */\n window: Window | undefined;\n};\n\n/**\n * Context for providing the window.\n */\nexport const WindowContext = React.createContext<WindowProviderProps>({\n window: typeof window === 'object' ? window : undefined,\n});\n\n/**\n * Hook to access the window object. This can be overridden contextually using the `WindowProvider`.\n */\nexport const useWindow = (): Window | undefined => React.useContext(WindowContext).window;\n\n/**\n * Hook to access the document object. This can be overridden contextually using the `WindowProvider`.\n */\nexport const useDocument = (): Document | undefined => React.useContext(WindowContext).window?.document;\n\n/**\n * Component to provide the window object contextually. This is useful when rendering content to an element\n * contained within a child window or iframe element, where event handlers and styling must be projected\n * to an alternative window or document.\n */\nexport const WindowProvider: React.FunctionComponent<WindowProviderProps> = props => {\n return <WindowContext.Provider value={props}>{props.children}</WindowContext.Provider>;\n};\n","'use strict';\n\nvar isArray = Array.isArray;\nvar keyList = Object.keys;\nvar hasProp = Object.prototype.hasOwnProperty;\nvar hasElementType = typeof Element !== 'undefined';\n\nfunction equal(a, b) {\n // fast-deep-equal index.js 2.0.1\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n var arrA = isArray(a)\n , arrB = isArray(b)\n , i\n , length\n , key;\n\n if (arrA && arrB) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n if (arrA != arrB) return false;\n\n var dateA = a instanceof Date\n , dateB = b instanceof Date;\n if (dateA != dateB) return false;\n if (dateA && dateB) return a.getTime() == b.getTime();\n\n var regexpA = a instanceof RegExp\n , regexpB = b instanceof RegExp;\n if (regexpA != regexpB) return false;\n if (regexpA && regexpB) return a.toString() == b.toString();\n\n var keys = keyList(a);\n length = keys.length;\n\n if (length !== keyList(b).length)\n return false;\n\n for (i = length; i-- !== 0;)\n if (!hasProp.call(b, keys[i])) return false;\n // end fast-deep-equal\n\n // start react-fast-compare\n // custom handling for DOM elements\n if (hasElementType && a instanceof Element && b instanceof Element)\n return a === b;\n\n // custom handling for React\n for (i = length; i-- !== 0;) {\n key = keys[i];\n if (key === '_owner' && a.$$typeof) {\n // React-specific: avoid traversing React elements' _owner.\n // _owner contains circular references\n // and is not needed when comparing the actual elements (and not their owners)\n // .$$typeof and ._store on just reasonable markers of a react element\n continue;\n } else {\n // all other properties should be traversed as usual\n if (!equal(a[key], b[key])) return false;\n }\n }\n // end react-fast-compare\n\n // fast-deep-equal index.js 2.0.1\n return true;\n }\n\n return a !== a && b !== b;\n}\n// end fast-deep-equal\n\nmodule.exports = function exportedEqual(a, b) {\n try {\n return equal(a, b);\n } catch (error) {\n if ((error.message && error.message.match(/stack|recursion/i)) || (error.number === -2146828260)) {\n // warn on circular references, don't crash\n // browsers give this different errors name and messages:\n // chrome/safari: \"RangeError\", \"Maximum call stack size exceeded\"\n // firefox: \"InternalError\", too much recursion\"\n // edge: \"Error\", \"Out of stack space\"\n console.warn('Warning: react-fast-compare does not handle circular references.', error.name, error.message);\n return false;\n }\n // some other error. we should definitely know about these\n throw error;\n }\n};\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = linear;\nexports.linearish = linearish;\n\nvar _index = require(\"../../../lib-vendor/d3-array/src/index.js\");\n\nvar _continuous = _interopRequireWildcard(require(\"./continuous.js\"));\n\nvar _init = require(\"./init.js\");\n\nvar _tickFormat = _interopRequireDefault(require(\"./tickFormat.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction linearish(scale) {\n var domain = scale.domain;\n\n scale.ticks = function (count) {\n var d = domain();\n return (0, _index.ticks)(d[0], d[d.length - 1], count == null ? 10 : count);\n };\n\n scale.tickFormat = function (count, specifier) {\n var d = domain();\n return (0, _tickFormat.default)(d[0], d[d.length - 1], count == null ? 10 : count, specifier);\n };\n\n scale.nice = function (count) {\n if (count == null) count = 10;\n var d = domain();\n var i0 = 0;\n var i1 = d.length - 1;\n var start = d[i0];\n var stop = d[i1];\n var prestep;\n var step;\n var maxIter = 10;\n\n if (stop < start) {\n step = start, start = stop, stop = step;\n step = i0, i0 = i1, i1 = step;\n }\n\n while (maxIter-- > 0) {\n step = (0, _index.tickIncrement)(start, stop, count);\n\n if (step === prestep) {\n d[i0] = start;\n d[i1] = stop;\n return domain(d);\n } else if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n } else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n } else {\n break;\n }\n\n prestep = step;\n }\n\n return scale;\n };\n\n return scale;\n}\n\nfunction linear() {\n var scale = (0, _continuous.default)();\n\n scale.copy = function () {\n return (0, _continuous.copy)(scale, linear());\n };\n\n _init.initRange.apply(scale, arguments);\n\n return linearish(scale);\n}","/**\n * Based on Kendo UI Core expression code <https://github.com/telerik/kendo-ui-core#license-information>\n */\n'use strict'\n\nfunction Cache(maxSize) {\n this._maxSize = maxSize\n this.clear()\n}\nCache.prototype.clear = function () {\n this._size = 0\n this._values = Object.create(null)\n}\nCache.prototype.get = function (key) {\n return this._values[key]\n}\nCache.prototype.set = function (key, value) {\n this._size >= this._maxSize && this.clear()\n if (!(key in this._values)) this._size++\n\n return (this._values[key] = value)\n}\n\nvar SPLIT_REGEX = /[^.^\\]^[]+|(?=\\[\\]|\\.\\.)/g,\n DIGIT_REGEX = /^\\d+$/,\n LEAD_DIGIT_REGEX = /^\\d/,\n SPEC_CHAR_REGEX = /[~`!#$%\\^&*+=\\-\\[\\]\\\\';,/{}|\\\\\":<>\\?]/g,\n CLEAN_QUOTES_REGEX = /^\\s*(['\"]?)(.*?)(\\1)\\s*$/,\n MAX_CACHE_SIZE = 512\n\nvar pathCache = new Cache(MAX_CACHE_SIZE),\n setCache = new Cache(MAX_CACHE_SIZE),\n getCache = new Cache(MAX_CACHE_SIZE)\n\nvar config\n\nmodule.exports = {\n Cache: Cache,\n\n split: split,\n\n normalizePath: normalizePath,\n\n setter: function (path) {\n var parts = normalizePath(path)\n\n return (\n setCache.get(path) ||\n setCache.set(path, function setter(obj, value) {\n var index = 0\n var len = parts.length\n var data = obj\n\n while (index < len - 1) {\n var part = parts[index]\n if (\n part === '__proto__' ||\n part === 'constructor' ||\n part === 'prototype'\n ) {\n return obj\n }\n\n data = data[parts[index++]]\n }\n data[parts[index]] = value\n })\n )\n },\n\n getter: function (path, safe) {\n var parts = normalizePath(path)\n return (\n getCache.get(path) ||\n getCache.set(path, function getter(data) {\n var index = 0,\n len = parts.length\n while (index < len) {\n if (data != null || !safe) data = data[parts[index++]]\n else return\n }\n return data\n })\n )\n },\n\n join: function (segments) {\n return segments.reduce(function (path, part) {\n return (\n path +\n (isQuoted(part) || DIGIT_REGEX.test(part)\n ? '[' + part + ']'\n : (path ? '.' : '') + part)\n )\n }, '')\n },\n\n forEach: function (path, cb, thisArg) {\n forEach(Array.isArray(path) ? path : split(path), cb, thisArg)\n },\n}\n\nfunction normalizePath(path) {\n return (\n pathCache.get(path) ||\n pathCache.set(\n path,\n split(path).map(function (part) {\n return part.replace(CLEAN_QUOTES_REGEX, '$2')\n })\n )\n )\n}\n\nfunction split(path) {\n return path.match(SPLIT_REGEX) || ['']\n}\n\nfunction forEach(parts, iter, thisArg) {\n var len = parts.length,\n part,\n idx,\n isArray,\n isBracket\n\n for (idx = 0; idx < len; idx++) {\n part = parts[idx]\n\n if (part) {\n if (shouldBeQuoted(part)) {\n part = '\"' + part + '\"'\n }\n\n isBracket = isQuoted(part)\n isArray = !isBracket && /^\\d+$/.test(part)\n\n iter.call(thisArg, part, isBracket, isArray, idx, parts)\n }\n }\n}\n\nfunction isQuoted(str) {\n return (\n typeof str === 'string' && str && [\"'\", '\"'].indexOf(str.charAt(0)) !== -1\n )\n}\n\nfunction hasLeadingNumber(part) {\n return part.match(LEAD_DIGIT_REGEX) && !part.match(DIGIT_REGEX)\n}\n\nfunction hasSpecialChars(part) {\n return SPEC_CHAR_REGEX.test(part)\n}\n\nfunction shouldBeQuoted(part) {\n return !isQuoted(part) && (hasLeadingNumber(part) || hasSpecialChars(part))\n}\n","import { IButtonStyles } from './Button.types';\nimport { memoizeFunction } from '../../Utilities';\nimport { HighContrastSelector, ITheme, IRawStyle, getFocusStyle, hiddenContentStyle } from '../../Styling';\n\nconst noOutline: IRawStyle = {\n outline: 0,\n};\n\nconst iconStyle = (fontSize?: string | number): IRawStyle => {\n return {\n fontSize: fontSize,\n margin: '0 4px',\n height: '16px',\n lineHeight: '16px',\n textAlign: 'center',\n flexShrink: 0,\n };\n};\n\n/**\n * Gets the base button styles. Note: because it is a base class to be used with the `mergeRules`\n * helper, it should have values for all class names in the interface. This let `mergeRules` optimize\n * mixing class names together.\n */\nexport const getStyles = memoizeFunction(\n (theme: ITheme): IButtonStyles => {\n const { semanticColors, effects, fonts } = theme;\n\n const border = semanticColors.buttonBorder;\n const disabledBackground = semanticColors.disabledBackground;\n const disabledText = semanticColors.disabledText;\n const buttonHighContrastFocus = {\n left: -2,\n top: -2,\n bottom: -2,\n right: -2,\n outlineColor: 'ButtonText',\n };\n\n return {\n root: [\n getFocusStyle(theme, { inset: 1, highContrastStyle: buttonHighContrastFocus, borderColor: 'transparent' }),\n theme.fonts.medium,\n {\n boxSizing: 'border-box',\n border: '1px solid ' + border,\n userSelect: 'none',\n display: 'inline-block',\n textDecoration: 'none',\n textAlign: 'center',\n cursor: 'pointer',\n padding: '0 16px',\n borderRadius: effects.roundedCorner2,\n\n selectors: {\n // IE11 workaround for preventing shift of child elements of a button when active.\n ':active > span': {\n position: 'relative',\n left: 0,\n top: 0,\n },\n },\n },\n ],\n\n rootDisabled: [\n getFocusStyle(theme, { inset: 1, highContrastStyle: buttonHighContrastFocus, borderColor: 'transparent' }),\n {\n backgroundColor: disabledBackground,\n borderColor: disabledBackground,\n color: disabledText,\n cursor: 'default',\n selectors: {\n ':hover': noOutline,\n ':focus': noOutline,\n },\n },\n ],\n\n iconDisabled: {\n color: disabledText,\n selectors: {\n [HighContrastSelector]: {\n color: 'GrayText',\n },\n },\n },\n\n menuIconDisabled: {\n color: disabledText,\n selectors: {\n [HighContrastSelector]: {\n color: 'GrayText',\n },\n },\n },\n\n flexContainer: {\n display: 'flex',\n height: '100%',\n flexWrap: 'nowrap',\n justifyContent: 'center',\n alignItems: 'center',\n },\n description: {\n display: 'block',\n },\n\n textContainer: {\n flexGrow: 1,\n display: 'block',\n },\n\n icon: iconStyle(fonts.mediumPlus.fontSize),\n\n menuIcon: iconStyle(fonts.small.fontSize),\n\n label: {\n margin: '0 4px',\n lineHeight: '100%',\n display: 'block',\n },\n\n screenReaderText: hiddenContentStyle,\n };\n },\n);\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","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : String(i); }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/**\n * @fileOverview Rectangle\n */\nimport React, { useEffect, useRef, useState } from 'react';\nimport clsx from 'clsx';\nimport Animate from 'react-smooth';\nimport { filterProps } from '../util/ReactUtils';\nvar getRectanglePath = function getRectanglePath(x, y, width, height, radius) {\n var maxRadius = Math.min(Math.abs(width) / 2, Math.abs(height) / 2);\n var ySign = height >= 0 ? 1 : -1;\n var xSign = width >= 0 ? 1 : -1;\n var clockWise = height >= 0 && width >= 0 || height < 0 && width < 0 ? 1 : 0;\n var path;\n if (maxRadius > 0 && radius instanceof Array) {\n var newRadius = [0, 0, 0, 0];\n for (var i = 0, len = 4; i < len; i++) {\n newRadius[i] = radius[i] > maxRadius ? maxRadius : radius[i];\n }\n path = \"M\".concat(x, \",\").concat(y + ySign * newRadius[0]);\n if (newRadius[0] > 0) {\n path += \"A \".concat(newRadius[0], \",\").concat(newRadius[0], \",0,0,\").concat(clockWise, \",\").concat(x + xSign * newRadius[0], \",\").concat(y);\n }\n path += \"L \".concat(x + width - xSign * newRadius[1], \",\").concat(y);\n if (newRadius[1] > 0) {\n path += \"A \".concat(newRadius[1], \",\").concat(newRadius[1], \",0,0,\").concat(clockWise, \",\\n \").concat(x + width, \",\").concat(y + ySign * newRadius[1]);\n }\n path += \"L \".concat(x + width, \",\").concat(y + height - ySign * newRadius[2]);\n if (newRadius[2] > 0) {\n path += \"A \".concat(newRadius[2], \",\").concat(newRadius[2], \",0,0,\").concat(clockWise, \",\\n \").concat(x + width - xSign * newRadius[2], \",\").concat(y + height);\n }\n path += \"L \".concat(x + xSign * newRadius[3], \",\").concat(y + height);\n if (newRadius[3] > 0) {\n path += \"A \".concat(newRadius[3], \",\").concat(newRadius[3], \",0,0,\").concat(clockWise, \",\\n \").concat(x, \",\").concat(y + height - ySign * newRadius[3]);\n }\n path += 'Z';\n } else if (maxRadius > 0 && radius === +radius && radius > 0) {\n var _newRadius = Math.min(maxRadius, radius);\n path = \"M \".concat(x, \",\").concat(y + ySign * _newRadius, \"\\n A \").concat(_newRadius, \",\").concat(_newRadius, \",0,0,\").concat(clockWise, \",\").concat(x + xSign * _newRadius, \",\").concat(y, \"\\n L \").concat(x + width - xSign * _newRadius, \",\").concat(y, \"\\n A \").concat(_newRadius, \",\").concat(_newRadius, \",0,0,\").concat(clockWise, \",\").concat(x + width, \",\").concat(y + ySign * _newRadius, \"\\n L \").concat(x + width, \",\").concat(y + height - ySign * _newRadius, \"\\n A \").concat(_newRadius, \",\").concat(_newRadius, \",0,0,\").concat(clockWise, \",\").concat(x + width - xSign * _newRadius, \",\").concat(y + height, \"\\n L \").concat(x + xSign * _newRadius, \",\").concat(y + height, \"\\n A \").concat(_newRadius, \",\").concat(_newRadius, \",0,0,\").concat(clockWise, \",\").concat(x, \",\").concat(y + height - ySign * _newRadius, \" Z\");\n } else {\n path = \"M \".concat(x, \",\").concat(y, \" h \").concat(width, \" v \").concat(height, \" h \").concat(-width, \" Z\");\n }\n return path;\n};\nexport var isInRectangle = function isInRectangle(point, rect) {\n if (!point || !rect) {\n return false;\n }\n var px = point.x,\n py = point.y;\n var x = rect.x,\n y = rect.y,\n width = rect.width,\n height = rect.height;\n if (Math.abs(width) > 0 && Math.abs(height) > 0) {\n var minX = Math.min(x, x + width);\n var maxX = Math.max(x, x + width);\n var minY = Math.min(y, y + height);\n var maxY = Math.max(y, y + height);\n return px >= minX && px <= maxX && py >= minY && py <= maxY;\n }\n return false;\n};\nvar defaultProps = {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n // The radius of border\n // The radius of four corners when radius is a number\n // The radius of left-top, right-top, right-bottom, left-bottom when radius is an array\n radius: 0,\n isAnimationActive: false,\n isUpdateAnimationActive: false,\n animationBegin: 0,\n animationDuration: 1500,\n animationEasing: 'ease'\n};\nexport var Rectangle = function Rectangle(rectangleProps) {\n var props = _objectSpread(_objectSpread({}, defaultProps), rectangleProps);\n var pathRef = useRef();\n var _useState = useState(-1),\n _useState2 = _slicedToArray(_useState, 2),\n totalLength = _useState2[0],\n setTotalLength = _useState2[1];\n useEffect(function () {\n if (pathRef.current && pathRef.current.getTotalLength) {\n try {\n var pathTotalLength = pathRef.current.getTotalLength();\n if (pathTotalLength) {\n setTotalLength(pathTotalLength);\n }\n } catch (err) {\n // calculate total length error\n }\n }\n }, []);\n var x = props.x,\n y = props.y,\n width = props.width,\n height = props.height,\n radius = props.radius,\n className = props.className;\n var animationEasing = props.animationEasing,\n animationDuration = props.animationDuration,\n animationBegin = props.animationBegin,\n isAnimationActive = props.isAnimationActive,\n isUpdateAnimationActive = props.isUpdateAnimationActive;\n if (x !== +x || y !== +y || width !== +width || height !== +height || width === 0 || height === 0) {\n return null;\n }\n var layerClass = clsx('recharts-rectangle', className);\n if (!isUpdateAnimationActive) {\n return /*#__PURE__*/React.createElement(\"path\", _extends({}, filterProps(props, true), {\n className: layerClass,\n d: getRectanglePath(x, y, width, height, radius)\n }));\n }\n return /*#__PURE__*/React.createElement(Animate, {\n canBegin: totalLength > 0,\n from: {\n width: width,\n height: height,\n x: x,\n y: y\n },\n to: {\n width: width,\n height: height,\n x: x,\n y: y\n },\n duration: animationDuration,\n animationEasing: animationEasing,\n isActive: isUpdateAnimationActive\n }, function (_ref) {\n var currWidth = _ref.width,\n currHeight = _ref.height,\n currX = _ref.x,\n currY = _ref.y;\n return /*#__PURE__*/React.createElement(Animate, {\n canBegin: totalLength > 0,\n from: \"0px \".concat(totalLength === -1 ? 1 : totalLength, \"px\"),\n to: \"\".concat(totalLength, \"px 0px\"),\n attributeName: \"strokeDasharray\",\n begin: animationBegin,\n duration: animationDuration,\n isActive: isAnimationActive,\n easing: animationEasing\n }, /*#__PURE__*/React.createElement(\"path\", _extends({}, filterProps(props, true), {\n className: layerClass,\n d: getRectanglePath(currX, currY, currWidth, currHeight, radius),\n ref: pathRef\n })));\n });\n};","import React from 'react'; // TODO: check\n\nvar context = /*#__PURE__*/React.createContext(null);\ncontext.displayName = 'NavbarContext';\nexport default context;","import * as React from 'react';\nimport { DirectionalHint } from '../../common/DirectionalHint';\nimport { IFocusZoneProps } from '../../FocusZone';\nimport { IIconProps } from '../Icon/Icon.types';\nimport { ICalloutProps, ICalloutContentStyleProps } from '../../Callout';\nimport { ITheme, IStyle } from '../../Styling';\nimport { IButtonStyles } from '../../Button';\nimport { IRefObject, IBaseProps, IRectangle, IRenderFunction, IStyleFunctionOrObject } from '../../Utilities';\nimport { IWithResponsiveModeState } from '../../utilities/decorators/withResponsiveMode';\nimport { IContextualMenuClassNames, IMenuItemClassNames } from './ContextualMenu.classNames';\nexport { DirectionalHint } from '../../common/DirectionalHint';\nimport { IVerticalDividerClassNames } from '../Divider/VerticalDivider.types';\nimport {\n IContextualMenuItemProps,\n IContextualMenuRenderItem,\n IContextualMenuItemStyleProps,\n IContextualMenuItemRenderFunctions,\n} from './ContextualMenuItem.types';\nimport { IKeytipProps } from '../../Keytip';\nimport { Target } from '@uifabric/react-hooks';\n\n/**\n * {@docCategory ContextualMenu}\n */\nexport enum ContextualMenuItemType {\n Normal = 0,\n Divider = 1,\n Header = 2,\n Section = 3,\n}\n\n/**\n * {@docCategory ContextualMenu}\n */\nexport interface IContextualMenu {}\n\n/**\n * {@docCategory ContextualMenu}\n */\nexport interface IContextualMenuProps extends IBaseProps<IContextualMenu>, IWithResponsiveModeState {\n /**\n * Optional callback to access the IContextualMenu interface. Use this instead of ref for accessing\n * the public methods and properties of the component.\n */\n componentRef?: IRefObject<IContextualMenu>;\n\n /**\n * Call to provide customized styling that will layer on top of the variant rules.\n */\n styles?: IStyleFunctionOrObject<IContextualMenuStyleProps, IContextualMenuStyles>;\n\n /**\n * Theme provided by higher-order component.\n */\n theme?: ITheme;\n\n /**\n * Additional CSS class to apply to the ContextualMenu.\n */\n className?: string;\n\n /**\n * The target that the ContextualMenu should try to position itself based on.\n * It can be either an element, a query selector string resolving to a valid element,\n * or a MouseEvent. If a MouseEvent is given, the origin point of the event will be used.\n */\n target?: Target;\n\n /**\n * How the menu should be positioned\n * @defaultvalue DirectionalHint.bottomAutoEdge\n */\n directionalHint?: DirectionalHint;\n\n /**\n * How the menu should be positioned in RTL layouts.\n * If not specified, a mirror of `directionalHint` will be used.\n */\n directionalHintForRTL?: DirectionalHint;\n\n /**\n * The gap between the ContextualMenu and the target\n * @defaultvalue 0\n */\n gapSpace?: number;\n\n /**\n * The width of the beak.\n * @defaultvalue 16\n */\n beakWidth?: number;\n\n /**\n * If true the context menu will render as the same width as the target element\n * @defaultvalue false\n */\n useTargetWidth?: boolean;\n\n /**\n * If true the context menu will have a minimum width equal to the width of the target element\n * @defaultvalue false\n */\n useTargetAsMinWidth?: boolean;\n\n /**\n * The bounding rectangle (or callback that returns a rectangle) which the contextual menu can appear in.\n */\n bounds?: IRectangle | ((target?: Target, targetWindow?: Window) => IRectangle | undefined);\n\n /**\n * If true then the beak is visible. If false it will not be shown.\n */\n isBeakVisible?: boolean;\n\n /**\n * If true, the menu will be positioned to cover the target.\n * If false, it will be positioned next to the target.\n * @defaultvalue false\n */\n coverTarget?: boolean;\n\n /**\n * If true the positioning logic will prefer to flip edges rather than to nudge the rectangle to fit within bounds,\n * thus making sure the element aligns perfectly with target's alignment edge\n */\n alignTargetEdge?: boolean;\n\n /**\n * Menu items to display.\n */\n items: IContextualMenuItem[];\n\n /**\n * Used as `aria-labelledby` for the menu element inside the callout.\n */\n labelElementId?: string;\n\n /**\n * Whether to focus on the menu when mounted.\n * @defaultvalue true\n */\n shouldFocusOnMount?: boolean;\n\n /**\n * Whether to focus on the contextual menu container (as opposed to the first menu item).\n */\n shouldFocusOnContainer?: boolean;\n\n /**\n * Callback when the ContextualMenu tries to close. If `dismissAll` is true then all\n * submenus will be dismissed.\n */\n onDismiss?: (ev?: React.MouseEvent | React.KeyboardEvent, dismissAll?: boolean) => void;\n\n /**\n * Click handler which is invoked if `onClick` is not passed for individual contextual\n * menu item.\n * Returning true will dismiss the menu even if `ev.preventDefault()` was called.\n */\n onItemClick?: (\n ev?: React.MouseEvent<HTMLElement> | React.KeyboardEvent<HTMLElement>,\n item?: IContextualMenuItem,\n ) => boolean | void;\n\n /**\n * Whether this menu is a submenu of another menu.\n */\n isSubMenu?: boolean;\n\n /**\n * ID for the ContextualMenu's root element (inside the callout).\n * Should be used for `aria-owns` and other such uses, rather than direct reference for programmatic purposes.\n */\n id?: string;\n\n /**\n * Accessible label for the ContextualMenu's root element (inside the callout).\n */\n ariaLabel?: string;\n\n /**\n * If true do not render on a new layer. If false render on a new layer.\n * @defaultvalue false\n */\n doNotLayer?: boolean;\n\n /**\n * If true the position will not change sides in an attempt to fit the ContextualMenu within bounds.\n * It will still attempt to align it to whatever bounds are given.\n * @defaultvalue false\n */\n directionalHintFixed?: boolean;\n\n /**\n * Callback for when the menu has been opened.\n */\n onMenuOpened?: (contextualMenu?: IContextualMenuProps) => void;\n\n /**\n * Callback for when the menu is being closed (removing from the DOM).\n */\n onMenuDismissed?: (contextualMenu?: IContextualMenuProps) => void;\n\n /**\n * Additional custom props for the Callout.\n */\n calloutProps?: ICalloutProps;\n\n /**\n * Title to be displayed at the top of the menu, above the items.\n */\n title?: string;\n\n /**\n * Method to provide the classnames to style the contextual menu.\n * @deprecated Use `styles` instead to leverage mergeStyles API.\n */\n // eslint-disable-next-line deprecation/deprecation\n getMenuClassNames?: (theme: ITheme, className?: string) => IContextualMenuClassNames;\n\n /** Custom render function for a submenu. */\n onRenderSubMenu?: IRenderFunction<IContextualMenuProps>;\n\n /**\n * Method to override the render of the list of menu items.\n */\n onRenderMenuList?: IRenderFunction<IContextualMenuListProps>;\n\n /**\n * Delay (in milliseconds) to wait before expanding / dismissing a submenu on mouseEnter or mouseLeave\n */\n subMenuHoverDelay?: number;\n\n /**\n * Custom component to use for rendering individual menu items.\n * @defaultvalue ContextualMenuItem\n */\n contextualMenuItemAs?:\n | React.ComponentClass<IContextualMenuItemProps>\n | React.FunctionComponent<IContextualMenuItemProps>;\n\n /**\n * Props to pass down to the FocusZone.\n * NOTE: the default FocusZoneDirection will be used unless a direction\n * is specified in the focusZoneProps (even if other focusZoneProps are defined)\n * @defaultvalue \\{ direction: FocusZoneDirection.vertical \\}\n */\n focusZoneProps?: IFocusZoneProps;\n\n /**\n * If true, renders the ContextualMenu in a hidden state.\n * Use this flag, rather than rendering a ContextualMenu conditionally based on visibility,\n * to improve rendering performance when it becomes visible.\n * Note: When ContextualMenu is hidden its content will not be rendered. It will only render\n * once the ContextualMenu is visible.\n */\n hidden?: boolean;\n\n /**\n * If true, the menu will be updated even when `hidden=true`. Note that this will consume\n * resources to update even when nothing is being shown to the user. This might be helpful if\n * your updates are small and you want the menu to display quickly when `hidden` is set to false.\n */\n shouldUpdateWhenHidden?: boolean;\n\n /**\n * If true, the contextual menu will not be updated until focus enters the menu via other means.\n * This will only result in different behavior when `shouldFocusOnMount = false`.\n */\n delayUpdateFocusOnHover?: boolean;\n\n /**\n * Called when the component is unmounting, and focus needs to be restored.\n * Argument passed down contains two variables, the element that the underlying\n * popup believes focus should go to and whether or not the popup currently\n * contains focus. If this prop is provided, focus will not be restored automatically,\n * you'll need to call originalElement.focus()\n */\n onRestoreFocus?: (options: {\n originalElement?: HTMLElement | Window;\n containsFocus: boolean;\n documentContainsFocus: boolean;\n }) => void;\n}\n\n/**\n * {@docCategory ContextualMenu}\n */\nexport interface IContextualMenuItemRenderProps extends IContextualMenuItem {\n index: number;\n focusableElementIndex: number;\n totalItemCount: number;\n hasCheckmarks: boolean;\n hasIcons: boolean;\n}\n\n/**\n * {@docCategory ContextualMenu}\n */\nexport interface IContextualMenuListProps {\n items: IContextualMenuItem[];\n totalItemCount: number;\n hasCheckmarks: boolean;\n hasIcons: boolean;\n defaultMenuItemRenderer: (item: IContextualMenuItemRenderProps) => React.ReactNode;\n ariaLabel?: string;\n labelElementId?: string;\n role?: string;\n}\n\n/**\n * {@docCategory ContextualMenu}\n */\nexport interface IContextualMenuItem {\n /**\n * Optional callback to access the IContextualMenuRenderItem interface.\n * This will get passed down to ContextualMenuItem.\n */\n componentRef?: IRefObject<IContextualMenuRenderItem>;\n\n /**\n * Unique id to identify the item\n */\n key: string;\n\n /**\n * Text of the menu item.\n * If a standard hyphen (-) is passed in, then the item will be rendered as a divider.\n * If a dash must appear as text, use an emdash (—), figuredash (‒), or minus symbol (−) instead.\n */\n text?: string;\n\n /**\n * Seconday description for the menu item to display\n */\n secondaryText?: string;\n\n itemType?: ContextualMenuItemType;\n\n /**\n * Props for an icon to display next to the item.\n */\n iconProps?: IIconProps;\n\n /**\n * Custom render function for the menu item icon\n */\n onRenderIcon?: IRenderFunction<IContextualMenuItemProps>;\n\n /**\n * Props for the Icon used for the chevron.\n */\n submenuIconProps?: IIconProps;\n\n /**\n * Whether the menu item is disabled\n * @defaultvalue false\n */\n disabled?: boolean;\n\n /**\n * If the menu item is a split button, this prop disables purely the primary action of the button.\n * @defaultvalue false\n */\n primaryDisabled?: boolean;\n\n /**\n * @deprecated Not used\n */\n shortCut?: string;\n\n /**\n * Whether or not this menu item can be checked\n * @defaultvalue false\n */\n canCheck?: boolean;\n\n /**\n * Whether or not this menu item is currently checked.\n * @defaultvalue false\n */\n checked?: boolean;\n\n /**\n * Whether or not this menu item is a splitButton.\n * @defaultvalue false\n */\n split?: boolean;\n\n /**\n * Any custom data the developer wishes to associate with the menu item.\n */\n data?: any;\n\n /**\n * Callback for when the menu item is invoked. If `ev.preventDefault()` is called in `onClick`,\n * the click will not close the menu.\n *\n * Only for ContextualMenu items, returning true will dismiss the menu even if `ev.preventDefault()`\n * was called (does not apply for button or CommandBar sub-menu items).\n */\n onClick?: (\n ev?: React.MouseEvent<HTMLElement> | React.KeyboardEvent<HTMLElement>,\n item?: IContextualMenuItem,\n ) => boolean | void;\n\n /**\n * Navigate to this URL when the menu item is clicked.\n */\n href?: string;\n\n /**\n * Target window when using `href`.\n */\n target?: string;\n\n /**\n * Link relation setting when using `href`.\n * If `target` is `_blank`, `rel` is defaulted to a value to prevent clickjacking.\n */\n rel?: string;\n\n /**\n * Properties to apply to a submenu to this item.\n *\n * The ContextualMenu will provide default values for `target`, `onDismiss`, `isSubMenu`,\n * `id`, `shouldFocusOnMount`, `directionalHint`, `className`, and `gapSpace`, all of which\n * can be overridden.\n */\n subMenuProps?: IContextualMenuProps;\n\n /**\n * Method to provide the classnames to style the individual items inside a menu.\n * @deprecated Use `styles` prop of `IContextualMenuItemProps` to leverage mergeStyles API.\n */\n getItemClassNames?: (\n theme: ITheme,\n disabled: boolean,\n expanded: boolean,\n checked: boolean,\n isAnchorLink: boolean,\n knownIcon: boolean,\n itemClassName?: string,\n dividerClassName?: string,\n iconClassName?: string,\n subMenuClassName?: string,\n primaryDisabled?: boolean,\n ) => // eslint-disable-next-line deprecation/deprecation\n IMenuItemClassNames;\n\n /**\n * Optional IContextualMenuItemProps overrides to customize behaviors such as item styling via `styles`.\n */\n itemProps?: Partial<IContextualMenuItemProps>;\n\n /**\n * Method to provide the classnames to style the Vertical Divider of a split button inside a menu.\n * Default value is the `getSplitButtonVerticalDividerClassNames` func defined in `ContextualMenu.classnames.ts`.\n * @defaultvalue getSplitButtonVerticalDividerClassNames\n */\n // eslint-disable-next-line deprecation/deprecation\n getSplitButtonVerticalDividerClassNames?: (theme: ITheme) => IVerticalDividerClassNames;\n\n /**\n * Properties to apply to render this item as a section.\n * This prop is mutually exclusive with `subMenuProps`.\n */\n sectionProps?: IContextualMenuSection;\n\n /**\n * Additional CSS class to apply to the menu item.\n */\n className?: string;\n\n /**\n * Additional styles to apply to the menu item\n * @deprecated in favor of the `styles` prop to leverage mergeStyles API.\n */\n style?: React.CSSProperties;\n\n /**\n * Custom accessible label for the element.\n * If no override is specified, the `aria-label` attribute will contain the item name.\n */\n ariaLabel?: string;\n\n /**\n * Title (tooltip) text displayed when hovering over an item.\n */\n title?: string;\n\n /**\n * Method to custom render this menu item.\n * For keyboard accessibility, the top-level rendered item should be a focusable element\n * (like an anchor or a button) or have the `data-is-focusable` property set to true.\n *\n * @param item - Item to render. Will typically be of type `IContextualMenuItem`.\n * (When rendering a command bar item, will be `ICommandBarItemProps`.)\n * @param dismissMenu - Function to dismiss the menu. Can be used to ensure that a custom menu\n * item click dismisses the menu. (Will be undefined if rendering a command bar item.)\n */\n onRender?: (item: any, dismissMenu: (ev?: any, dismissAll?: boolean) => void) => React.ReactNode;\n\n /**\n * Method to customize sub-components rendering of this menu item.\n *\n * @param props - Props used to pass into render functions\n * @param defaultRenders - Default render functions that renders default sub-components\n */\n onRenderContent?: (\n props: IContextualMenuItemProps,\n defaultRenders: IContextualMenuItemRenderFunctions,\n ) => React.ReactNode;\n\n /**\n * A function to be executed on mouse down. This is executed before an `onClick` event and can\n * be used to interrupt native on click events as well. The click event should still handle\n * the commands. This should only be used in special cases when react and non-react are mixed.\n */\n onMouseDown?: (item: IContextualMenuItem, event: React.MouseEvent<HTMLElement>) => void;\n\n /**\n * Optional override for the menu button's role. Defaults to `menuitem` or `menuitemcheckbox`.\n */\n role?: string;\n\n /**\n * When rendering a custom menu component that is passed in, the component might also be a list of\n * elements. We want to keep track of the correct index our menu is using based off of\n * the length of the custom list. It is up to the user to increment the count for their list.\n */\n customOnRenderListLength?: number;\n\n /**\n * Keytip for this contextual menu item\n */\n keytipProps?: IKeytipProps;\n\n /**\n * @deprecated Use subMenuProps.items instead.\n */\n items?: IContextualMenuItem[];\n\n /**\n * Any additional properties to use when custom rendering menu items.\n */\n [propertyName: string]: any;\n\n /**\n * Detailed description of the menu item for the benefit of screen readers.\n */\n ariaDescription?: string;\n\n /**\n * This prop is no longer used. All contextual menu items are now focusable when disabled.\n * @deprecated in 6.38.2 will be removed in 7.0.0\n */\n inactive?: boolean;\n\n /**\n * Text of the menu item.\n * @deprecated Use `text` instead.\n */\n name?: string;\n\n /**\n * Flag which indicates that, when the item is clicked, the 'target' for the click event should be\n * overridden to reflect the launch target from the root menu.\n * This avoids a situation where the 'target' of the event may wind up detached from the DOM\n * when the menu is dismissed in response to the click.\n */\n preferMenuTargetAsEventTarget?: boolean;\n}\n\n/**\n * {@docCategory ContextualMenu}\n */\nexport interface IContextualMenuSection extends React.ClassAttributes<any> {\n /**\n * The items to include inside the section.\n */\n items: IContextualMenuItem[];\n\n /**\n * The optional section title.\n */\n title?: string | IContextualMenuItem;\n\n /**\n * If set to true, the section will display a divider at the top of the section.\n */\n topDivider?: boolean;\n\n /**\n * If set to true, the section will display a divider at the bottom of the section.\n */\n bottomDivider?: boolean;\n}\n\n/**\n * {@docCategory ContextualMenu}\n */\nexport interface IMenuItemStyles extends IButtonStyles {\n /**\n * Styles for a menu item that is an anchor link.\n */\n item?: IStyle;\n\n /**\n * Styles for the content inside the button/link of the menuItem.\n */\n linkContent?: IStyle;\n\n /**\n * Styles for a menu item that is an anchor link.\n */\n anchorLink?: IStyle;\n\n /**\n * Default icon color style for known icons.\n */\n iconColor?: IStyle;\n\n /**\n * Default style for checkmark icons.\n */\n checkmarkIcon?: IStyle;\n\n /**\n * Styles for the submenu icon of a menu item.\n */\n subMenuIcon?: IStyle;\n\n /**\n * Styles for a divider item of a ConextualMenu.\n */\n divider?: IStyle;\n}\n\n/**\n * {@docCategory ContextualMenu}\n */\nexport interface IContextualMenuStyleProps {\n theme: ITheme;\n\n className?: string;\n\n // Insert ContextualMenu style props below\n}\n\n/**\n * {@docCategory ContextualMenu}\n */\nexport interface IContextualMenuStyles {\n /**\n * Style override for the contextual menu title.\n */\n title: IStyle;\n\n /**\n * Style for the container which parents all menu items.\n */\n container: IStyle;\n\n /**\n * Base styles for the root element of all ContextualMenus.\n */\n root: IStyle;\n\n /**\n * Styles for the header item of a ContextualMenu\n */\n header: IStyle;\n\n /**\n * Styles for the list that contains all menuItems.\n */\n list: IStyle;\n\n /**\n * SubComponent styles.\n */\n subComponentStyles: IContextualMenuSubComponentStyles;\n}\n\n/**\n * {@docCategory ContextualMenu}\n */\nexport interface IContextualMenuSubComponentStyles {\n /** Styles for the callout that hosts the ContextualMenu options. */\n callout: IStyleFunctionOrObject<ICalloutContentStyleProps, any>;\n\n /** Styles for each menu item. */\n menuItem: IStyleFunctionOrObject<IContextualMenuItemStyleProps, any>;\n}\n","import * as React from 'react';\n\nimport { IImageIconProps } from './Icon.types';\nimport { Image } from '../Image/Image';\nimport { css, getNativeProps, htmlElementProperties } from '../../Utilities';\nimport { classNames, MS_ICON } from './Icon.styles';\n\n/**\n * Fast icon component which only supports images (not font glyphs) and can't be targeted by customizations.\n * To style the icon, use `className` or reference `ms-Icon` in CSS.\n * {@docCategory Icon}\n */\nexport const ImageIcon: React.FunctionComponent<IImageIconProps> = props => {\n const { className, imageProps } = props;\n\n const nativeProps = getNativeProps<React.HTMLAttributes<HTMLDivElement>>(props, htmlElementProperties);\n\n const containerProps = props['aria-label']\n ? {}\n : {\n role: 'presentation',\n 'aria-hidden': imageProps.alt || imageProps['aria-labelledby'] ? false : true,\n };\n\n return (\n <div {...containerProps} {...nativeProps} className={css(MS_ICON, classNames.root, classNames.image, className)}>\n <Image {...imageProps} />\n </div>\n );\n};\n","import { IContextualMenuItem } from '../../index';\n\n/**\n * Determines the effective checked state of a menu item.\n *\n * @param item {IContextualMenuItem} to get the check state of.\n * @returns {true} if the item is checked.\n * @returns {false} if the item is unchecked.\n * @returns {null} if the item is not checkable.\n */\nexport function getIsChecked(item: IContextualMenuItem): boolean | null {\n if (item.canCheck) {\n return !!(item.isChecked || item.checked);\n }\n\n if (typeof item.isChecked === 'boolean') {\n return item.isChecked;\n }\n\n if (typeof item.checked === 'boolean') {\n return item.checked;\n }\n\n // Item is not checkable.\n return null;\n}\n\nexport function hasSubmenu(item: IContextualMenuItem): boolean {\n // eslint-disable-next-line deprecation/deprecation\n return !!(item.subMenuProps || item.items);\n}\n\nexport function isItemDisabled(item: IContextualMenuItem): boolean {\n return !!(item.isDisabled || item.disabled);\n}\n\nexport function getMenuItemAriaRole(item: IContextualMenuItem): string {\n const isChecked = getIsChecked(item);\n const canCheck: boolean = isChecked !== null;\n return canCheck ? 'menuitemcheckbox' : 'menuitem';\n}\n","import * as React from 'react';\nimport { hasSubmenu, getIsChecked } from '../../utilities/contextualMenu/index';\nimport { getRTL, initializeComponentRef } from '../../Utilities';\nimport { Icon } from '../../Icon';\nimport { IContextualMenuItemProps, IContextualMenuItemRenderFunctions } from './ContextualMenuItem.types';\n\nconst renderItemIcon = (props: IContextualMenuItemProps) => {\n const { item, hasIcons, classNames } = props;\n\n const { iconProps } = item;\n\n if (!hasIcons) {\n return null;\n }\n\n if (item.onRenderIcon) {\n return item.onRenderIcon(props);\n }\n\n return <Icon {...iconProps} className={classNames.icon} />;\n};\n\nconst renderCheckMarkIcon = ({ onCheckmarkClick, item, classNames }: IContextualMenuItemProps) => {\n const isItemChecked = getIsChecked(item);\n if (onCheckmarkClick) {\n // Ensures that the item is passed as the first argument to the checkmark click callback.\n const onClick = (e: React.MouseEvent<HTMLElement>) => onCheckmarkClick(item, e);\n\n return (\n <Icon\n iconName={item.canCheck !== false && isItemChecked ? 'CheckMark' : ''}\n className={classNames.checkmarkIcon}\n // eslint-disable-next-line react/jsx-no-bind\n onClick={onClick}\n />\n );\n }\n return null;\n};\n\nconst renderItemName = ({ item, classNames }: IContextualMenuItemProps) => {\n /* eslint-disable deprecation/deprecation */\n if (item.text || item.name) {\n return <span className={classNames.label}>{item.text || item.name}</span>;\n }\n /* eslint-enable deprecation/deprecation */\n return null;\n};\n\nconst renderSecondaryText = ({ item, classNames }: IContextualMenuItemProps) => {\n if (item.secondaryText) {\n return <span className={classNames.secondaryText}>{item.secondaryText}</span>;\n }\n return null;\n};\n\nconst renderSubMenuIcon = ({ item, classNames, theme }: IContextualMenuItemProps) => {\n if (hasSubmenu(item)) {\n return (\n <Icon\n iconName={getRTL(theme) ? 'ChevronLeft' : 'ChevronRight'}\n {...item.submenuIconProps}\n className={classNames.subMenuIcon}\n />\n );\n }\n return null;\n};\n\nexport class ContextualMenuItemBase extends React.Component<IContextualMenuItemProps, {}> {\n constructor(props: IContextualMenuItemProps) {\n super(props);\n\n initializeComponentRef(this);\n }\n\n public render() {\n const { item, classNames } = this.props;\n const renderContent = item.onRenderContent || this._renderLayout;\n\n return (\n <div className={item.split ? classNames.linkContentMenu : classNames.linkContent}>\n {renderContent(this.props, {\n renderCheckMarkIcon,\n renderItemIcon,\n renderItemName,\n renderSecondaryText,\n renderSubMenuIcon,\n })}\n </div>\n );\n }\n\n public openSubMenu = (): void => {\n const { item, openSubMenu, getSubmenuTarget } = this.props;\n if (getSubmenuTarget) {\n const submenuTarget = getSubmenuTarget();\n if (hasSubmenu(item) && openSubMenu && submenuTarget) {\n openSubMenu(item, submenuTarget);\n }\n }\n };\n\n public dismissSubMenu = (): void => {\n const { item, dismissSubMenu } = this.props;\n if (hasSubmenu(item) && dismissSubMenu) {\n dismissSubMenu();\n }\n };\n\n public dismissMenu = (dismissAll?: boolean): void => {\n const { dismissMenu } = this.props;\n if (dismissMenu) {\n dismissMenu(undefined /* ev */, dismissAll);\n }\n };\n\n private _renderLayout(props: IContextualMenuItemProps, defaultRenders: IContextualMenuItemRenderFunctions) {\n return (\n <>\n {defaultRenders.renderCheckMarkIcon(props)}\n {defaultRenders.renderItemIcon(props)}\n {defaultRenders.renderItemName(props)}\n {defaultRenders.renderSecondaryText(props)}\n {defaultRenders.renderSubMenuIcon(props)}\n </>\n );\n }\n}\n","import { memoizeFunction } from '../../Utilities';\nimport { mergeStyleSets, ITheme } from '../../Styling';\nimport { IVerticalDividerClassNames } from './VerticalDivider.types';\n\n/**\n * @deprecated use getStyles exported from VerticalDivider.styles.ts\n */\nexport const getDividerClassNames = memoizeFunction(\n // eslint-disable-next-line deprecation/deprecation\n (theme: ITheme): IVerticalDividerClassNames => {\n return mergeStyleSets({\n wrapper: {\n display: 'inline-flex',\n height: '100%',\n alignItems: 'center',\n },\n divider: {\n width: 1,\n height: '100%',\n backgroundColor: theme.palette.neutralTertiaryAlt,\n },\n });\n },\n);\n","import {\n concatStyleSets,\n getFocusStyle,\n HighContrastSelector,\n ITheme,\n getScreenSelector,\n ScreenWidthMaxMedium,\n IconFontSizes,\n getHighContrastNoAdjustStyle,\n} from '../../Styling';\nimport { IMenuItemStyles } from './ContextualMenu.types';\nimport { memoizeFunction } from '../../Utilities';\n\nexport const CONTEXTUAL_MENU_ITEM_HEIGHT = 36;\n\nconst MediumScreenSelector = getScreenSelector(0, ScreenWidthMaxMedium);\n\nexport const getMenuItemStyles = memoizeFunction(\n (theme: ITheme): IMenuItemStyles => {\n const { semanticColors, fonts, palette } = theme;\n const ContextualMenuItemBackgroundHoverColor = semanticColors.menuItemBackgroundHovered;\n const ContextualMenuItemTextHoverColor = semanticColors.menuItemTextHovered;\n const ContextualMenuItemBackgroundSelectedColor = semanticColors.menuItemBackgroundPressed;\n const ContextualMenuItemDividerColor = semanticColors.bodyDivider;\n\n const menuItemStyles: IMenuItemStyles = {\n item: [\n fonts.medium,\n {\n color: semanticColors.bodyText,\n position: 'relative',\n boxSizing: 'border-box',\n },\n ],\n divider: {\n display: 'block',\n height: '1px',\n backgroundColor: ContextualMenuItemDividerColor,\n position: 'relative',\n },\n root: [\n getFocusStyle(theme),\n fonts.medium,\n {\n color: semanticColors.bodyText,\n backgroundColor: 'transparent',\n border: 'none',\n width: '100%',\n height: CONTEXTUAL_MENU_ITEM_HEIGHT,\n lineHeight: CONTEXTUAL_MENU_ITEM_HEIGHT,\n display: 'block',\n cursor: 'pointer',\n padding: '0px 8px 0 4px', // inner elements have a margin of 4px (4 + 4 = 8px as on right side)\n textAlign: 'left',\n },\n ],\n rootDisabled: {\n color: semanticColors.disabledBodyText,\n cursor: 'default',\n pointerEvents: 'none',\n selectors: {\n [HighContrastSelector]: {\n // ensure disabled text looks different than enabled\n color: 'GrayText',\n opacity: 1,\n ...getHighContrastNoAdjustStyle(),\n },\n },\n },\n rootHovered: {\n backgroundColor: ContextualMenuItemBackgroundHoverColor,\n color: ContextualMenuItemTextHoverColor,\n selectors: {\n '.ms-ContextualMenu-icon': {\n color: palette.themeDarkAlt,\n },\n '.ms-ContextualMenu-submenuIcon': {\n color: palette.neutralPrimary,\n },\n },\n },\n rootFocused: {\n backgroundColor: palette.white,\n },\n rootChecked: {\n selectors: {\n '.ms-ContextualMenu-checkmarkIcon': {\n color: palette.neutralPrimary,\n },\n },\n },\n rootPressed: {\n backgroundColor: ContextualMenuItemBackgroundSelectedColor,\n selectors: {\n '.ms-ContextualMenu-icon': {\n color: palette.themeDark,\n },\n '.ms-ContextualMenu-submenuIcon': {\n color: palette.neutralPrimary,\n },\n },\n },\n rootExpanded: {\n backgroundColor: ContextualMenuItemBackgroundSelectedColor,\n color: semanticColors.bodyTextChecked,\n selectors: {\n '.ms-ContextualMenu-submenuIcon': {\n [HighContrastSelector]: {\n // icons inside of anchor tags are not properly inheriting color in high contrast\n color: 'inherit',\n },\n },\n [HighContrastSelector]: {\n // allow change in background/text to be visible\n ...getHighContrastNoAdjustStyle(),\n },\n },\n },\n linkContent: {\n whiteSpace: 'nowrap',\n height: 'inherit',\n display: 'flex',\n alignItems: 'center',\n maxWidth: '100%',\n },\n anchorLink: {\n padding: '0px 8px 0 4px', // inner elements have a margin of 4px (4 + 4 = 8px as on right side)\n textRendering: 'auto',\n color: 'inherit',\n letterSpacing: 'normal',\n wordSpacing: 'normal',\n textTransform: 'none',\n textIndent: '0px',\n textShadow: 'none',\n textDecoration: 'none',\n boxSizing: 'border-box',\n },\n label: {\n margin: '0 4px',\n verticalAlign: 'middle',\n display: 'inline-block',\n flexGrow: '1',\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n },\n secondaryText: {\n color: theme.palette.neutralSecondary,\n paddingLeft: '20px',\n textAlign: 'right',\n },\n icon: {\n display: 'inline-block',\n minHeight: '1px',\n maxHeight: CONTEXTUAL_MENU_ITEM_HEIGHT,\n fontSize: IconFontSizes.medium,\n width: IconFontSizes.medium,\n margin: '0 4px',\n verticalAlign: 'middle',\n flexShrink: '0',\n selectors: {\n [MediumScreenSelector]: {\n fontSize: IconFontSizes.large,\n width: IconFontSizes.large,\n },\n },\n },\n iconColor: {\n color: semanticColors.menuIcon,\n },\n iconDisabled: {\n color: semanticColors.disabledBodyText,\n },\n checkmarkIcon: {\n color: semanticColors.bodySubtext,\n },\n subMenuIcon: {\n height: CONTEXTUAL_MENU_ITEM_HEIGHT,\n lineHeight: CONTEXTUAL_MENU_ITEM_HEIGHT,\n color: palette.neutralSecondary,\n textAlign: 'center',\n display: 'inline-block',\n verticalAlign: 'middle',\n flexShrink: '0',\n fontSize: IconFontSizes.small, // 12px\n selectors: {\n ':hover': {\n color: palette.neutralPrimary,\n },\n ':active': {\n color: palette.neutralPrimary,\n },\n [MediumScreenSelector]: {\n fontSize: IconFontSizes.medium, // 16px\n },\n },\n },\n splitButtonFlexContainer: [\n getFocusStyle(theme),\n {\n display: 'flex',\n height: CONTEXTUAL_MENU_ITEM_HEIGHT,\n flexWrap: 'nowrap',\n justifyContent: 'center',\n alignItems: 'flex-start',\n },\n ],\n };\n\n return concatStyleSets(menuItemStyles);\n },\n);\n","import { getDividerClassNames } from '../Divider/VerticalDivider.classNames';\nimport { getMenuItemStyles } from './ContextualMenu.cnstyles';\nimport {\n ITheme,\n mergeStyleSets,\n getGlobalClassNames,\n getScreenSelector,\n ScreenWidthMaxMedium,\n hiddenContentStyle,\n} from '../../Styling';\nimport { IVerticalDividerClassNames } from '../Divider/VerticalDivider.types';\nimport { memoizeFunction, IsFocusVisibleClassName } from '../../Utilities';\nimport { IContextualMenuItemStyles, IContextualMenuItemStyleProps } from './ContextualMenuItem.types';\nimport { IContextualMenuSubComponentStyles } from './ContextualMenu.types';\n\n/**\n * @deprecated in favor of mergeStyles API.\n */\nexport interface IContextualMenuClassNames {\n container?: string;\n root?: string;\n list?: string;\n header?: string;\n title?: string;\n subComponentStyles?: IContextualMenuSubComponentStyles;\n}\n\n/**\n * @deprecated in favor of mergeStyles API.\n */\nexport interface IMenuItemClassNames {\n item?: string;\n divider?: string;\n root?: string;\n linkContent?: string;\n icon?: string;\n checkmarkIcon?: string;\n subMenuIcon?: string;\n label?: string;\n secondaryText?: string;\n splitContainer?: string;\n splitPrimary?: string;\n splitMenu?: string;\n linkContentMenu?: string;\n screenReaderText?: string;\n}\n\nconst CONTEXTUAL_SPLIT_MENU_MINWIDTH = '28px';\n\nconst MediumScreenSelector = getScreenSelector(0, ScreenWidthMaxMedium);\n\nexport const getSplitButtonVerticalDividerClassNames = memoizeFunction(\n /* eslint-disable deprecation/deprecation */\n (theme: ITheme): IVerticalDividerClassNames => {\n return mergeStyleSets(getDividerClassNames(theme), {\n /* eslint-enable deprecation/deprecation */\n wrapper: {\n position: 'absolute',\n right: 28, // width of the splitMenu based on the padding plus icon fontSize\n selectors: {\n [MediumScreenSelector]: {\n right: 32, // fontSize of the icon increased from 12px to 16px\n },\n },\n },\n divider: {\n height: 16,\n width: 1,\n },\n });\n },\n);\n\nconst GlobalClassNames = {\n item: 'ms-ContextualMenu-item',\n divider: 'ms-ContextualMenu-divider',\n root: 'ms-ContextualMenu-link',\n isChecked: 'is-checked',\n isExpanded: 'is-expanded',\n isDisabled: 'is-disabled',\n linkContent: 'ms-ContextualMenu-linkContent',\n linkContentMenu: 'ms-ContextualMenu-linkContent',\n icon: 'ms-ContextualMenu-icon',\n iconColor: 'ms-ContextualMenu-iconColor',\n checkmarkIcon: 'ms-ContextualMenu-checkmarkIcon',\n subMenuIcon: 'ms-ContextualMenu-submenuIcon',\n label: 'ms-ContextualMenu-itemText',\n secondaryText: 'ms-ContextualMenu-secondaryText',\n splitMenu: 'ms-ContextualMenu-splitMenu',\n screenReaderText: 'ms-ContextualMenu-screenReaderText',\n};\n\n/**\n * @deprecated To be removed in 7.0.\n * @internal\n * This is a package-internal method that has been depended on.\n * It is being kept in this form for backwards compatibility.\n * It should be cleaned up in 7.0.\n *\n * TODO: Audit perf. impact of and potentially remove memoizeFunction.\n * https://github.com/microsoft/fluentui/issues/5534\n */\nexport const getItemClassNames = memoizeFunction(\n (\n theme: ITheme,\n disabled: boolean,\n expanded: boolean,\n checked: boolean,\n isAnchorLink: boolean,\n knownIcon: boolean,\n itemClassName?: string,\n dividerClassName?: string,\n iconClassName?: string,\n subMenuClassName?: string,\n primaryDisabled?: boolean,\n className?: string,\n ): IContextualMenuItemStyles => {\n const styles = getMenuItemStyles(theme);\n const classNames = getGlobalClassNames(GlobalClassNames, theme);\n\n return mergeStyleSets({\n item: [classNames.item, styles.item, itemClassName],\n divider: [classNames.divider, styles.divider, dividerClassName],\n root: [\n classNames.root,\n styles.root,\n checked && [classNames.isChecked, styles.rootChecked],\n isAnchorLink && styles.anchorLink,\n expanded && [classNames.isExpanded, styles.rootExpanded],\n disabled && [classNames.isDisabled, styles.rootDisabled],\n !disabled &&\n !expanded && [\n {\n selectors: {\n ':hover': styles.rootHovered,\n ':active': styles.rootPressed,\n [`.${IsFocusVisibleClassName} &:focus, .${IsFocusVisibleClassName} &:focus:hover`]: styles.rootFocused,\n [`.${IsFocusVisibleClassName} &:hover`]: { background: 'inherit;' },\n },\n },\n ],\n className,\n ],\n splitPrimary: [\n styles.root,\n {\n width: `calc(100% - ${CONTEXTUAL_SPLIT_MENU_MINWIDTH})`,\n },\n checked && ['is-checked', styles.rootChecked],\n (disabled || primaryDisabled) && ['is-disabled', styles.rootDisabled],\n !(disabled || primaryDisabled) &&\n !checked && [\n {\n selectors: {\n ':hover': styles.rootHovered,\n // when hovering over the splitPrimary also affect the splitMenu\n [`:hover ~ .${classNames.splitMenu}`]: styles.rootHovered,\n ':active': styles.rootPressed,\n [`.${IsFocusVisibleClassName} &:focus, .${IsFocusVisibleClassName} &:focus:hover`]: styles.rootFocused,\n [`.${IsFocusVisibleClassName} &:hover`]: { background: 'inherit;' },\n },\n },\n ],\n ],\n splitMenu: [\n classNames.splitMenu,\n styles.root,\n {\n flexBasis: '0',\n padding: '0 8px',\n minWidth: CONTEXTUAL_SPLIT_MENU_MINWIDTH,\n },\n expanded && ['is-expanded', styles.rootExpanded],\n disabled && ['is-disabled', styles.rootDisabled],\n !disabled &&\n !expanded && [\n {\n selectors: {\n ':hover': styles.rootHovered,\n ':active': styles.rootPressed,\n [`.${IsFocusVisibleClassName} &:focus, .${IsFocusVisibleClassName} &:focus:hover`]: styles.rootFocused,\n [`.${IsFocusVisibleClassName} &:hover`]: { background: 'inherit;' },\n },\n },\n ],\n ],\n anchorLink: styles.anchorLink,\n linkContent: [classNames.linkContent, styles.linkContent],\n linkContentMenu: [\n classNames.linkContentMenu,\n styles.linkContent,\n {\n justifyContent: 'center',\n },\n ],\n icon: [\n classNames.icon,\n knownIcon && styles.iconColor,\n styles.icon,\n iconClassName,\n disabled && [classNames.isDisabled, styles.iconDisabled],\n ],\n iconColor: styles.iconColor,\n checkmarkIcon: [classNames.checkmarkIcon, knownIcon && styles.checkmarkIcon, styles.icon, iconClassName],\n subMenuIcon: [\n classNames.subMenuIcon,\n styles.subMenuIcon,\n subMenuClassName,\n expanded && { color: theme.palette.neutralPrimary },\n disabled && [styles.iconDisabled],\n ],\n label: [classNames.label, styles.label],\n secondaryText: [classNames.secondaryText, styles.secondaryText],\n splitContainer: [\n styles.splitButtonFlexContainer,\n !disabled &&\n !checked && [\n {\n selectors: {\n [`.${IsFocusVisibleClassName} &:focus, .${IsFocusVisibleClassName} &:focus:hover`]: styles.rootFocused,\n },\n },\n ],\n ],\n screenReaderText: [\n classNames.screenReaderText,\n styles.screenReaderText,\n hiddenContentStyle,\n { visibility: 'hidden' },\n ],\n });\n },\n);\n\n/**\n * Wrapper function for generating ContextualMenuItem classNames which adheres to\n * the getStyles API, but invokes memoized className generator function with\n * primitive values.\n *\n * @param props - the ContextualMenuItem style props used to generate its styles.\n */\nexport const getItemStyles = (props: IContextualMenuItemStyleProps): IContextualMenuItemStyles => {\n const {\n theme,\n disabled,\n expanded,\n checked,\n isAnchorLink,\n knownIcon,\n itemClassName,\n dividerClassName,\n iconClassName,\n subMenuClassName,\n primaryDisabled,\n className,\n } = props;\n\n // eslint-disable-next-line deprecation/deprecation\n return getItemClassNames(\n theme,\n disabled,\n expanded,\n checked,\n isAnchorLink,\n knownIcon,\n itemClassName,\n dividerClassName,\n iconClassName,\n subMenuClassName,\n primaryDisabled,\n className,\n );\n};\n","import * as React from 'react';\nimport { styled } from '../../Utilities';\nimport {\n IContextualMenuItemProps,\n IContextualMenuItemStyleProps,\n IContextualMenuItemStyles,\n} from './ContextualMenuItem.types';\nimport { ContextualMenuItemBase } from './ContextualMenuItem.base';\nimport { getItemStyles } from './ContextualMenu.classNames';\n\n/**\n * ContextualMenuItem description\n */\nexport const ContextualMenuItem: React.FunctionComponent<IContextualMenuItemProps> = styled<\n IContextualMenuItemProps,\n IContextualMenuItemStyleProps,\n IContextualMenuItemStyles\n>(ContextualMenuItemBase, getItemStyles, undefined, { scope: 'ContextualMenuItem' });\n","import * as React from 'react';\nimport { initializeComponentRef, shallowCompare } from '../../../Utilities';\nimport { IContextualMenuItemWrapperProps } from './ContextualMenuItemWrapper.types';\n\nexport class ContextualMenuItemWrapper extends React.Component<IContextualMenuItemWrapperProps> {\n constructor(props: IContextualMenuItemWrapperProps) {\n super(props);\n initializeComponentRef(this);\n }\n\n public shouldComponentUpdate(newProps: IContextualMenuItemWrapperProps): boolean {\n return !shallowCompare(newProps, this.props);\n }\n\n protected _onItemMouseEnter = (ev: React.MouseEvent<HTMLElement>): void => {\n const { item, onItemMouseEnter } = this.props;\n if (onItemMouseEnter) {\n onItemMouseEnter(item, ev, ev.currentTarget as HTMLElement);\n }\n };\n\n protected _onItemClick = (ev: React.MouseEvent<HTMLElement>): void => {\n const { item, onItemClickBase } = this.props;\n if (onItemClickBase) {\n onItemClickBase(item, ev, ev.currentTarget as HTMLElement);\n }\n };\n\n protected _onItemMouseLeave = (ev: React.MouseEvent<HTMLElement>): void => {\n const { item, onItemMouseLeave } = this.props;\n if (onItemMouseLeave) {\n onItemMouseLeave(item, ev);\n }\n };\n\n protected _onItemKeyDown = (ev: React.KeyboardEvent<HTMLElement>): void => {\n const { item, onItemKeyDown } = this.props;\n if (onItemKeyDown) {\n onItemKeyDown(item, ev);\n }\n };\n\n protected _onItemMouseMove = (ev: React.MouseEvent<HTMLElement>): void => {\n const { item, onItemMouseMove } = this.props;\n if (onItemMouseMove) {\n onItemMouseMove(item, ev, ev.currentTarget as HTMLElement);\n }\n };\n\n protected _getSubmenuTarget = (): HTMLElement | undefined => {\n return undefined;\n };\n}\n","import * as React from 'react';\nimport { anchorProperties, getNativeProps, memoizeFunction, getId, mergeAriaAttributeValues } from '../../../Utilities';\nimport { ContextualMenuItemWrapper } from './ContextualMenuItemWrapper';\nimport { KeytipData } from '../../../KeytipData';\nimport { isItemDisabled, hasSubmenu } from '../../../utilities/contextualMenu/index';\nimport { ContextualMenuItem } from '../ContextualMenuItem';\nimport { IKeytipProps } from '../../Keytip/Keytip.types';\n\nexport class ContextualMenuAnchor extends ContextualMenuItemWrapper {\n private _anchor = React.createRef<HTMLAnchorElement>();\n private _ariaDescriptionId: string;\n\n private _getMemoizedMenuButtonKeytipProps = memoizeFunction((keytipProps: IKeytipProps) => {\n return {\n ...keytipProps,\n hasMenu: true,\n };\n });\n\n public render() {\n const {\n item,\n classNames,\n index,\n focusableElementIndex,\n totalItemCount,\n hasCheckmarks,\n hasIcons,\n contextualMenuItemAs: ChildrenRenderer = ContextualMenuItem,\n expandedMenuItemKey,\n onItemClick,\n openSubMenu,\n dismissSubMenu,\n dismissMenu,\n } = this.props;\n\n let anchorRel = item.rel;\n if (item.target && item.target.toLowerCase() === '_blank') {\n anchorRel = anchorRel ? anchorRel : 'nofollow noopener noreferrer'; // Safe default to prevent tabjacking\n }\n\n const itemHasSubmenu = hasSubmenu(item);\n const nativeProps = getNativeProps<React.HTMLAttributes<HTMLAnchorElement>>(item, anchorProperties);\n const disabled = isItemDisabled(item);\n const { itemProps, ariaDescription } = item;\n\n let { keytipProps } = item;\n if (keytipProps && itemHasSubmenu) {\n keytipProps = this._getMemoizedMenuButtonKeytipProps(keytipProps);\n }\n\n // Check for ariaDescription to set the _ariaDescriptionId and render a hidden span with\n // the description in it to be added to ariaDescribedBy\n if (ariaDescription) {\n this._ariaDescriptionId = getId();\n }\n\n return (\n <div>\n <KeytipData\n keytipProps={item.keytipProps}\n ariaDescribedBy={nativeProps['aria-describedby']}\n disabled={disabled}\n >\n {(keytipAttributes: any): JSX.Element => (\n <a\n {...nativeProps}\n {...keytipAttributes}\n ref={this._anchor}\n href={item.href}\n target={item.target}\n rel={anchorRel}\n className={classNames.root}\n role=\"menuitem\"\n aria-haspopup={itemHasSubmenu || undefined}\n aria-expanded={itemHasSubmenu ? item.key === expandedMenuItemKey : undefined}\n aria-posinset={focusableElementIndex + 1}\n aria-setsize={totalItemCount}\n aria-disabled={isItemDisabled(item)}\n aria-describedby={mergeAriaAttributeValues(\n ariaDescription ? this._ariaDescriptionId : undefined,\n keytipAttributes ? keytipAttributes['aria-describedby'] : undefined,\n )}\n // eslint-disable-next-line deprecation/deprecation\n style={item.style}\n onClick={this._onItemClick}\n onMouseEnter={this._onItemMouseEnter}\n onMouseLeave={this._onItemMouseLeave}\n onMouseMove={this._onItemMouseMove}\n onKeyDown={itemHasSubmenu ? this._onItemKeyDown : undefined}\n >\n <ChildrenRenderer\n componentRef={item.componentRef}\n item={item}\n classNames={classNames}\n index={index}\n onCheckmarkClick={hasCheckmarks && onItemClick ? onItemClick : undefined}\n hasIcons={hasIcons}\n openSubMenu={openSubMenu}\n dismissSubMenu={dismissSubMenu}\n dismissMenu={dismissMenu}\n getSubmenuTarget={this._getSubmenuTarget}\n {...itemProps}\n />\n {this._renderAriaDescription(ariaDescription, classNames.screenReaderText)}\n </a>\n )}\n </KeytipData>\n </div>\n );\n }\n\n protected _getSubmenuTarget = (): HTMLElement | undefined => {\n return this._anchor.current ? this._anchor.current : undefined;\n };\n\n protected _onItemClick = (ev: React.MouseEvent<HTMLElement>): void => {\n const { item, onItemClick } = this.props;\n if (onItemClick) {\n onItemClick(item, ev);\n }\n };\n\n protected _renderAriaDescription = (ariaDescription?: string, className?: string) => {\n // If ariaDescription is given, descriptionId will be assigned to ariaDescriptionSpan\n return ariaDescription ? (\n <span id={this._ariaDescriptionId} className={className}>\n {ariaDescription}\n </span>\n ) : null;\n };\n}\n","import * as React from 'react';\nimport { buttonProperties, getNativeProps, memoizeFunction, getId, mergeAriaAttributeValues } from '../../../Utilities';\nimport { ContextualMenuItemWrapper } from './ContextualMenuItemWrapper';\nimport { KeytipData } from '../../../KeytipData';\nimport { getIsChecked, isItemDisabled, hasSubmenu, getMenuItemAriaRole } from '../../../utilities/contextualMenu/index';\nimport { ContextualMenuItem } from '../ContextualMenuItem';\nimport { IKeytipProps } from '../../Keytip/Keytip.types';\n\nexport class ContextualMenuButton extends ContextualMenuItemWrapper {\n private _btn = React.createRef<HTMLButtonElement>();\n private _ariaDescriptionId: string;\n\n private _getMemoizedMenuButtonKeytipProps = memoizeFunction((keytipProps: IKeytipProps) => {\n return {\n ...keytipProps,\n hasMenu: true,\n };\n });\n\n public render() {\n const {\n item,\n classNames,\n index,\n focusableElementIndex,\n totalItemCount,\n hasCheckmarks,\n hasIcons,\n contextualMenuItemAs: ChildrenRenderer = ContextualMenuItem,\n expandedMenuItemKey,\n onItemMouseDown,\n onItemClick,\n openSubMenu,\n dismissSubMenu,\n dismissMenu,\n } = this.props;\n\n const isChecked: boolean | null | undefined = getIsChecked(item);\n const canCheck: boolean = isChecked !== null;\n const defaultRole = getMenuItemAriaRole(item);\n const itemHasSubmenu = hasSubmenu(item);\n const { itemProps, ariaLabel, ariaDescription } = item;\n\n const buttonNativeProperties = getNativeProps<React.ButtonHTMLAttributes<HTMLButtonElement>>(\n item,\n buttonProperties,\n );\n // Do not add the disabled attribute to the button so that it is focusable\n delete buttonNativeProperties.disabled;\n\n const itemRole = item.role || defaultRole;\n\n // Check for ariaDescription to set the _ariaDescriptionId and render a hidden span with\n // the description in it to be added to ariaDescribedBy\n if (ariaDescription) {\n this._ariaDescriptionId = getId();\n }\n const ariaDescribedByIds = ariaDescription ? this._ariaDescriptionId : undefined;\n\n const itemButtonProperties = {\n className: classNames.root,\n onClick: this._onItemClick,\n onKeyDown: itemHasSubmenu ? this._onItemKeyDown : undefined,\n onMouseEnter: this._onItemMouseEnter,\n onMouseLeave: this._onItemMouseLeave,\n onMouseDown: (ev: React.MouseEvent<HTMLButtonElement>) =>\n onItemMouseDown ? onItemMouseDown(item, ev) : undefined,\n onMouseMove: this._onItemMouseMove,\n href: item.href,\n title: item.title,\n 'aria-label': ariaLabel,\n 'aria-describedby': ariaDescribedByIds,\n 'aria-haspopup': itemHasSubmenu || undefined,\n 'aria-expanded': itemHasSubmenu ? item.key === expandedMenuItemKey : undefined,\n 'aria-posinset': focusableElementIndex + 1,\n 'aria-setsize': totalItemCount,\n 'aria-disabled': isItemDisabled(item),\n 'aria-checked':\n (itemRole === 'menuitemcheckbox' || itemRole === 'menuitemradio') && canCheck ? !!isChecked : undefined,\n 'aria-selected': itemRole === 'menuitem' && canCheck ? !!isChecked : undefined,\n role: itemRole,\n // eslint-disable-next-line deprecation/deprecation\n style: item.style,\n };\n\n let { keytipProps } = item;\n if (keytipProps && itemHasSubmenu) {\n keytipProps = this._getMemoizedMenuButtonKeytipProps(keytipProps);\n }\n\n return (\n <KeytipData\n keytipProps={keytipProps}\n ariaDescribedBy={buttonNativeProperties['aria-describedby']}\n disabled={isItemDisabled(item)}\n >\n {(keytipAttributes: any): JSX.Element => (\n <button\n ref={this._btn}\n {...buttonNativeProperties}\n {...itemButtonProperties}\n {...keytipAttributes}\n aria-describedby={mergeAriaAttributeValues(\n itemButtonProperties['aria-describedby'],\n keytipAttributes ? keytipAttributes['aria-describedby'] : undefined,\n )}\n >\n <ChildrenRenderer\n componentRef={item.componentRef}\n item={item}\n classNames={classNames}\n index={index}\n onCheckmarkClick={hasCheckmarks && onItemClick ? onItemClick : undefined}\n hasIcons={hasIcons}\n openSubMenu={openSubMenu}\n dismissSubMenu={dismissSubMenu}\n dismissMenu={dismissMenu}\n getSubmenuTarget={this._getSubmenuTarget}\n {...itemProps}\n />\n {this._renderAriaDescription(ariaDescription, classNames.screenReaderText)}\n </button>\n )}\n </KeytipData>\n );\n }\n\n protected _renderAriaDescription = (ariaDescription?: string, className?: string) => {\n // If ariaDescription is given, descriptionId will be assigned to ariaDescriptionSpan\n return ariaDescription ? (\n <span id={this._ariaDescriptionId} className={className}>\n {ariaDescription}\n </span>\n ) : null;\n };\n\n protected _getSubmenuTarget = (): HTMLElement | undefined => {\n return this._btn.current ? this._btn.current : undefined;\n };\n}\n","import * as React from 'react';\nimport { IVerticalDividerProps, IVerticalDividerPropsStyles, IVerticalDividerStyles } from './VerticalDivider.types';\nimport { classNamesFunction } from '../../Utilities';\nconst getClassNames = classNamesFunction<IVerticalDividerPropsStyles, IVerticalDividerStyles>();\n\nexport const VerticalDividerBase = (props: IVerticalDividerProps) => {\n // eslint-disable-next-line deprecation/deprecation\n const { styles, theme, getClassNames: deprecatedGetClassNames, className } = props;\n const classNames = getClassNames(styles, { theme: theme, getClassNames: deprecatedGetClassNames, className });\n return (\n <span className={classNames.wrapper}>\n <span className={classNames.divider} />\n </span>\n );\n};\nVerticalDividerBase.displayName = 'VerticalDividerBase';\n","import * as React from 'react';\nimport { IVerticalDividerProps, IVerticalDividerStyles, IVerticalDividerPropsStyles } from './VerticalDivider.types';\nimport { getStyles } from './VerticalDivider.styles';\nimport { VerticalDividerBase } from './VerticalDivider.base';\nimport { styled } from '../../Utilities';\n\nexport const VerticalDivider: React.FunctionComponent<IVerticalDividerProps> = styled<\n IVerticalDividerProps,\n IVerticalDividerPropsStyles,\n IVerticalDividerStyles\n>(VerticalDividerBase, getStyles, undefined, {\n scope: 'VerticalDivider',\n});\n","import { IVerticalDividerPropsStyles, IVerticalDividerStyles } from './VerticalDivider.types';\nimport { IStyleFunction } from '../../Utilities';\n\nexport const getStyles: IStyleFunction<IVerticalDividerPropsStyles, IVerticalDividerStyles> = (\n props: IVerticalDividerPropsStyles,\n): IVerticalDividerStyles => {\n // eslint-disable-next-line deprecation/deprecation\n const { theme, getClassNames, className } = props;\n\n if (!theme) {\n throw new Error('Theme is undefined or null.');\n }\n\n if (getClassNames) {\n const names = getClassNames(theme);\n return {\n wrapper: [names.wrapper],\n divider: [names.divider],\n };\n }\n\n return {\n wrapper: [\n {\n display: 'inline-flex',\n height: '100%',\n alignItems: 'center',\n },\n className,\n ],\n divider: [\n {\n width: 1,\n height: '100%',\n backgroundColor: theme.palette.neutralTertiaryAlt,\n },\n ],\n };\n};\n","import * as React from 'react';\nimport {\n buttonProperties,\n getNativeProps,\n KeyCodes,\n mergeAriaAttributeValues,\n memoizeFunction,\n Async,\n EventGroup,\n getId,\n} from '../../../Utilities';\nimport { ContextualMenuItem } from '../ContextualMenuItem';\nimport { IContextualMenuItem } from '../ContextualMenu.types';\nimport { IMenuItemClassNames, getSplitButtonVerticalDividerClassNames } from '../ContextualMenu.classNames';\nimport { KeytipData } from '../../../KeytipData';\nimport { isItemDisabled, hasSubmenu, getMenuItemAriaRole } from '../../../utilities/contextualMenu/index';\nimport { VerticalDivider } from '../../../Divider';\nimport { ContextualMenuItemWrapper } from './ContextualMenuItemWrapper';\nimport { IKeytipProps } from '../../Keytip/Keytip.types';\nimport { IContextualMenuItemWrapperProps } from './ContextualMenuItemWrapper.types';\n\nexport interface IContextualMenuSplitButtonState {}\n\nconst TouchIdleDelay = 500; /* ms */\n\nexport class ContextualMenuSplitButton extends ContextualMenuItemWrapper {\n private _splitButton: HTMLDivElement;\n private _lastTouchTimeoutId: number | undefined;\n private _processingTouch: boolean;\n private _ariaDescriptionId: string;\n\n private _async: Async;\n private _events: EventGroup;\n\n private _getMemoizedMenuButtonKeytipProps = memoizeFunction((keytipProps: IKeytipProps) => {\n return {\n ...keytipProps,\n hasMenu: true,\n };\n });\n\n constructor(props: IContextualMenuItemWrapperProps) {\n super(props);\n\n this._async = new Async(this);\n this._events = new EventGroup(this);\n }\n\n public componentDidMount() {\n if (this._splitButton && 'onpointerdown' in this._splitButton) {\n this._events.on(this._splitButton, 'pointerdown', this._onPointerDown, true);\n }\n }\n\n public componentWillUnmount(): void {\n this._async.dispose();\n this._events.dispose();\n }\n\n public render(): JSX.Element | null {\n const {\n item,\n classNames,\n index,\n focusableElementIndex,\n totalItemCount,\n hasCheckmarks,\n hasIcons,\n onItemMouseLeave,\n expandedMenuItemKey,\n } = this.props;\n\n const itemHasSubmenu = hasSubmenu(item);\n\n let { keytipProps } = item;\n if (keytipProps) {\n keytipProps = this._getMemoizedMenuButtonKeytipProps(keytipProps);\n }\n\n // Check for ariaDescription to set the _ariaDescriptionId and render a hidden span with\n // the description in it to be added to ariaDescribedBy\n const { ariaDescription } = item;\n if (ariaDescription) {\n this._ariaDescriptionId = getId();\n }\n\n return (\n <KeytipData keytipProps={keytipProps} disabled={isItemDisabled(item)}>\n {(keytipAttributes: any): JSX.Element => (\n <div\n data-ktp-target={keytipAttributes['data-ktp-target']}\n ref={(splitButton: HTMLDivElement) => (this._splitButton = splitButton)}\n role={getMenuItemAriaRole(item)}\n aria-label={item.ariaLabel}\n className={classNames.splitContainer}\n aria-disabled={isItemDisabled(item)}\n aria-expanded={itemHasSubmenu ? item.key === expandedMenuItemKey : undefined}\n aria-haspopup={true}\n aria-describedby={mergeAriaAttributeValues(\n ariaDescription ? this._ariaDescriptionId : undefined,\n keytipAttributes['aria-describedby'],\n )}\n aria-checked={item.isChecked || item.checked}\n aria-posinset={focusableElementIndex + 1}\n aria-setsize={totalItemCount}\n onMouseEnter={this._onItemMouseEnterPrimary}\n onMouseLeave={\n onItemMouseLeave ? onItemMouseLeave.bind(this, { ...item, subMenuProps: null, items: null }) : undefined\n }\n onMouseMove={this._onItemMouseMovePrimary}\n onKeyDown={this._onItemKeyDown}\n onClick={this._executeItemClick}\n onTouchStart={this._onTouchStart}\n tabIndex={0}\n data-is-focusable={true}\n aria-roledescription={item['aria-roledescription']}\n >\n {this._renderSplitPrimaryButton(item, classNames, index, hasCheckmarks!, hasIcons!)}\n {this._renderSplitDivider(item)}\n {this._renderSplitIconButton(item, classNames, index, keytipAttributes)}\n {this._renderAriaDescription(ariaDescription, classNames.screenReaderText)}\n </div>\n )}\n </KeytipData>\n );\n }\n\n protected _renderAriaDescription = (ariaDescription?: string, className?: string) => {\n // If ariaDescription is given, descriptionId will be assigned to ariaDescriptionSpan\n return ariaDescription ? (\n <span id={this._ariaDescriptionId} className={className}>\n {ariaDescription}\n </span>\n ) : null;\n };\n\n protected _onItemKeyDown = (ev: React.KeyboardEvent<HTMLElement>): void => {\n const { item, onItemKeyDown } = this.props;\n if (ev.which === KeyCodes.enter) {\n this._executeItemClick(ev);\n ev.preventDefault();\n ev.stopPropagation();\n } else if (onItemKeyDown) {\n onItemKeyDown(item, ev);\n }\n };\n\n protected _getSubmenuTarget = (): HTMLElement | undefined => {\n return this._splitButton;\n };\n\n private _renderSplitPrimaryButton(\n item: IContextualMenuItem,\n // eslint-disable-next-line deprecation/deprecation\n classNames: IMenuItemClassNames,\n index: number,\n hasCheckmarks: boolean,\n hasIcons: boolean,\n ) {\n const { contextualMenuItemAs: ChildrenRenderer = ContextualMenuItem, onItemClick } = this.props;\n\n const itemProps: IContextualMenuItem = {\n key: item.key,\n disabled: isItemDisabled(item) || item.primaryDisabled,\n /* eslint-disable deprecation/deprecation */\n name: item.name,\n text: item.text || item.name,\n secondaryText: item.secondaryText,\n /* eslint-enable deprecation/deprecation */\n className: classNames.splitPrimary,\n canCheck: item.canCheck,\n isChecked: item.isChecked,\n checked: item.checked,\n iconProps: item.iconProps,\n onRenderIcon: item.onRenderIcon,\n data: item.data,\n 'data-is-focusable': false,\n };\n\n const { itemProps: itemComponentProps } = item;\n\n return (\n <button {...getNativeProps(itemProps, buttonProperties)}>\n <ChildrenRenderer\n data-is-focusable={false}\n item={itemProps}\n classNames={classNames}\n index={index}\n onCheckmarkClick={hasCheckmarks && onItemClick ? onItemClick : undefined}\n hasIcons={hasIcons}\n {...itemComponentProps}\n />\n </button>\n );\n }\n\n private _renderSplitDivider(item: IContextualMenuItem) {\n const getDividerClassNames =\n item.getSplitButtonVerticalDividerClassNames || getSplitButtonVerticalDividerClassNames;\n return <VerticalDivider getClassNames={getDividerClassNames} />;\n }\n\n private _renderSplitIconButton(\n item: IContextualMenuItem,\n classNames: IMenuItemClassNames, // eslint-disable-line deprecation/deprecation\n index: number,\n keytipAttributes: any,\n ) {\n const {\n contextualMenuItemAs: ChildrenRenderer = ContextualMenuItem,\n onItemMouseLeave,\n onItemMouseDown,\n openSubMenu,\n dismissSubMenu,\n dismissMenu,\n } = this.props;\n\n const itemProps: IContextualMenuItem = {\n onClick: this._onIconItemClick,\n disabled: isItemDisabled(item),\n className: classNames.splitMenu,\n subMenuProps: item.subMenuProps,\n submenuIconProps: item.submenuIconProps,\n split: true,\n key: item.key,\n };\n\n const buttonProps = {\n ...getNativeProps<React.ButtonHTMLAttributes<HTMLButtonElement>>(itemProps, buttonProperties),\n ...{\n onMouseEnter: this._onItemMouseEnterIcon,\n onMouseLeave: onItemMouseLeave ? onItemMouseLeave.bind(this, item) : undefined,\n onMouseDown: (ev: React.MouseEvent<HTMLButtonElement>) =>\n onItemMouseDown ? onItemMouseDown(item, ev) : undefined,\n onMouseMove: this._onItemMouseMoveIcon,\n 'data-is-focusable': false,\n 'data-ktp-execute-target': keytipAttributes['data-ktp-execute-target'],\n 'aria-hidden': true,\n },\n };\n\n const { itemProps: itemComponentProps } = item;\n\n return (\n <button {...buttonProps}>\n <ChildrenRenderer\n componentRef={item.componentRef}\n item={itemProps}\n classNames={classNames}\n index={index}\n hasIcons={false}\n openSubMenu={openSubMenu}\n dismissSubMenu={dismissSubMenu}\n dismissMenu={dismissMenu}\n getSubmenuTarget={this._getSubmenuTarget}\n {...itemComponentProps}\n />\n </button>\n );\n }\n\n private _onItemMouseEnterPrimary = (ev: React.MouseEvent<HTMLElement>): void => {\n const { item, onItemMouseEnter } = this.props;\n if (onItemMouseEnter) {\n onItemMouseEnter({ ...item, subMenuProps: undefined, items: undefined }, ev, this._splitButton);\n }\n };\n\n private _onItemMouseEnterIcon = (ev: React.MouseEvent<HTMLElement>): void => {\n const { item, onItemMouseEnter } = this.props;\n if (onItemMouseEnter) {\n onItemMouseEnter(item, ev, this._splitButton);\n }\n };\n\n private _onItemMouseMovePrimary = (ev: React.MouseEvent<HTMLElement>): void => {\n const { item, onItemMouseMove } = this.props;\n if (onItemMouseMove) {\n onItemMouseMove({ ...item, subMenuProps: undefined, items: undefined }, ev, this._splitButton);\n }\n };\n\n private _onItemMouseMoveIcon = (ev: React.MouseEvent<HTMLElement>): void => {\n const { item, onItemMouseMove } = this.props;\n if (onItemMouseMove) {\n onItemMouseMove(item, ev, this._splitButton);\n }\n };\n\n private _onIconItemClick = (ev: React.MouseEvent<HTMLElement>): void => {\n const { item, onItemClickBase } = this.props;\n if (onItemClickBase) {\n onItemClickBase(item, ev, (this._splitButton ? this._splitButton : ev.currentTarget) as HTMLElement);\n }\n };\n\n private _executeItemClick = (ev: React.MouseEvent<HTMLElement> | React.KeyboardEvent<HTMLElement>): void => {\n const { item, executeItemClick, onItemClick } = this.props;\n\n if (item.disabled || item.isDisabled) {\n return;\n }\n\n if (this._processingTouch && onItemClick) {\n return onItemClick(item, ev);\n }\n\n if (executeItemClick) {\n executeItemClick(item, ev);\n }\n };\n\n private _onTouchStart = (ev: React.TouchEvent<HTMLElement>): void => {\n if (this._splitButton && !('onpointerdown' in this._splitButton)) {\n this._handleTouchAndPointerEvent(ev);\n }\n };\n\n private _onPointerDown = (ev: PointerEvent): void => {\n if (ev.pointerType === 'touch') {\n this._handleTouchAndPointerEvent(ev);\n ev.preventDefault();\n ev.stopImmediatePropagation();\n }\n };\n\n private _handleTouchAndPointerEvent(ev: React.TouchEvent<HTMLElement> | PointerEvent) {\n const { onTap } = this.props;\n\n if (onTap) {\n onTap(ev);\n }\n // If we already have an existing timeout from a previous touch/pointer event\n // cancel that timeout so we can set a new one.\n if (this._lastTouchTimeoutId) {\n this._async.clearTimeout(this._lastTouchTimeoutId);\n this._lastTouchTimeoutId = undefined;\n }\n this._processingTouch = true;\n this._lastTouchTimeoutId = this._async.setTimeout(() => {\n this._processingTouch = false;\n this._lastTouchTimeoutId = undefined;\n }, TouchIdleDelay);\n }\n}\n","import * as React from 'react';\nimport {\n IContextualMenuProps,\n IContextualMenuItem,\n ContextualMenuItemType,\n IContextualMenuListProps,\n IContextualMenuStyleProps,\n IContextualMenuStyles,\n IContextualMenuItemRenderProps,\n} from './ContextualMenu.types';\nimport { DirectionalHint } from '../../common/DirectionalHint';\nimport { FocusZone, FocusZoneDirection, IFocusZoneProps, FocusZoneTabbableElements } from '../../FocusZone';\nimport { IMenuItemClassNames, IContextualMenuClassNames } from './ContextualMenu.classNames';\nimport {\n divProperties,\n getNativeProps,\n shallowCompare,\n warnDeprecations,\n Async,\n EventGroup,\n assign,\n classNamesFunction,\n css,\n getDocument,\n getFirstFocusable,\n getId,\n getLastFocusable,\n getRTL,\n getWindow,\n IRenderFunction,\n Point,\n KeyCodes,\n shouldWrapFocus,\n IStyleFunctionOrObject,\n isIOS,\n isMac,\n initializeComponentRef,\n memoizeFunction,\n} from '../../Utilities';\nimport { hasSubmenu, getIsChecked, isItemDisabled } from '../../utilities/contextualMenu/index';\nimport { withResponsiveMode, ResponsiveMode } from '../../utilities/decorators/withResponsiveMode';\nimport { Callout, ICalloutContentStyleProps, ICalloutContentStyles } from '../../Callout';\nimport { ContextualMenuItem } from './ContextualMenuItem';\nimport {\n ContextualMenuSplitButton,\n ContextualMenuButton,\n ContextualMenuAnchor,\n} from './ContextualMenuItemWrapper/index';\nimport { IProcessedStyleSet, concatStyleSetsWithProps } from '../../Styling';\nimport { IContextualMenuItemStyleProps, IContextualMenuItemStyles } from './ContextualMenuItem.types';\nimport { getItemStyles } from './ContextualMenu.classNames';\nimport { Rectangle } from '@uifabric/utilities';\n\ntype Target = Element | string | MouseEvent | Point | Rectangle | null | React.RefObject<Element>;\n\nconst getClassNames = classNamesFunction<IContextualMenuStyleProps, IContextualMenuStyles>();\nconst getContextualMenuItemClassNames = classNamesFunction<IContextualMenuItemStyleProps, IContextualMenuItemStyles>();\n\nexport interface IContextualMenuState {\n expandedMenuItemKey?: string;\n /** True if the menu was expanded by mouse click OR hover (as opposed to by keyboard) */\n expandedByMouseClick?: boolean;\n dismissedMenuItemKey?: string;\n contextualMenuItems?: IContextualMenuItem[];\n contextualMenuTarget?: Element;\n submenuTarget?: Element;\n positions?: any;\n slideDirectionalClassName?: string;\n subMenuId?: string;\n submenuDirection?: DirectionalHint;\n}\n\nexport function getSubmenuItems(\n item: IContextualMenuItem,\n options?: {\n target?: Target;\n },\n): IContextualMenuItem[] | undefined {\n const target = options?.target;\n\n // eslint-disable-next-line deprecation/deprecation\n const items = item.subMenuProps ? item.subMenuProps.items : item.items;\n\n if (items) {\n const overrideItems: typeof items = [];\n\n for (const subItem of items) {\n if (subItem.preferMenuTargetAsEventTarget) {\n // For sub-items which need an overridden target, intercept `onClick`\n const { onClick, ...contextItem } = subItem;\n\n overrideItems.push({\n ...contextItem,\n onClick: getOnClickWithOverrideTarget(onClick, target),\n });\n } else {\n overrideItems.push(subItem);\n }\n }\n\n return overrideItems;\n }\n}\n\n/**\n * Returns true if a list of menu items can contain a checkbox\n */\nexport function canAnyMenuItemsCheck(items: IContextualMenuItem[]): boolean {\n return items.some(item => {\n if (item.canCheck) {\n return true;\n }\n\n // If the item is a section, check if any of the items in the section can check.\n if (item.sectionProps && item.sectionProps.items.some(submenuItem => submenuItem.canCheck === true)) {\n return true;\n }\n\n return false;\n });\n}\n\nconst NavigationIdleDelay = 250; /* ms */\n\nconst COMPONENT_NAME = 'ContextualMenu';\n\nconst _getMenuItemStylesFunction = memoizeFunction(\n (\n ...styles: (IStyleFunctionOrObject<IContextualMenuItemStyleProps, IContextualMenuItemStyles> | undefined)[]\n ): IStyleFunctionOrObject<IContextualMenuItemStyleProps, IContextualMenuItemStyles> => {\n return (styleProps: IContextualMenuItemStyleProps) =>\n concatStyleSetsWithProps(styleProps, getItemStyles, ...styles);\n },\n);\n\n@withResponsiveMode\nexport class ContextualMenuBase extends React.Component<IContextualMenuProps, IContextualMenuState> {\n // The default ContextualMenu properties have no items and beak, the default submenu direction is right and top.\n public static defaultProps: IContextualMenuProps = {\n items: [],\n shouldFocusOnMount: true,\n gapSpace: 0,\n directionalHint: DirectionalHint.bottomAutoEdge,\n beakWidth: 16,\n };\n\n private _async: Async;\n private _events: EventGroup;\n private _id: string;\n private _host: HTMLElement;\n private _previousActiveElement: HTMLElement | undefined;\n private _enterTimerId: number | undefined;\n private _targetWindow: Window;\n private _target: Element | MouseEvent | Point | null;\n private _isScrollIdle: boolean;\n private _scrollIdleTimeoutId: number | undefined;\n /** True if the most recent keydown event was for alt (option) or meta (command). */\n private _lastKeyDownWasAltOrMeta: boolean | undefined;\n private _shouldUpdateFocusOnMouseEvent: boolean;\n private _gotMouseMove: boolean;\n private _mounted = false;\n private _focusingPreviousElement: boolean;\n\n private _adjustedFocusZoneProps: IFocusZoneProps;\n\n // eslint-disable-next-line deprecation/deprecation\n private _classNames: IProcessedStyleSet<IContextualMenuStyles> | IContextualMenuClassNames;\n\n constructor(props: IContextualMenuProps) {\n super(props);\n\n this._async = new Async(this);\n this._events = new EventGroup(this);\n initializeComponentRef(this);\n\n warnDeprecations(COMPONENT_NAME, props, {\n getMenuClassNames: 'styles',\n });\n\n this.state = {\n contextualMenuItems: undefined,\n subMenuId: getId('ContextualMenu'),\n };\n\n this._id = props.id || getId('ContextualMenu');\n this._focusingPreviousElement = false;\n this._isScrollIdle = true;\n this._shouldUpdateFocusOnMouseEvent = !this.props.delayUpdateFocusOnHover;\n this._gotMouseMove = false;\n }\n\n public dismiss = (ev?: any, dismissAll?: boolean) => {\n const { onDismiss } = this.props;\n\n if (onDismiss) {\n onDismiss(ev, dismissAll);\n }\n };\n\n public shouldComponentUpdate(newProps: IContextualMenuProps, newState: IContextualMenuState): boolean {\n if (!newProps.shouldUpdateWhenHidden && this.props.hidden && newProps.hidden) {\n // Do not update when hidden.\n return false;\n }\n\n return !shallowCompare(this.props, newProps) || !shallowCompare(this.state, newState);\n }\n\n public UNSAFE_componentWillUpdate(newProps: IContextualMenuProps): void {\n if (newProps.target !== this.props.target) {\n const newTarget = newProps.target;\n this._setTargetWindowAndElement(newTarget!);\n }\n\n if (this._isHidden(newProps) !== this._isHidden(this.props)) {\n if (this._isHidden(newProps)) {\n this._onMenuClosed();\n } else {\n this._onMenuOpened();\n this._previousActiveElement = this._targetWindow\n ? (this._targetWindow.document.activeElement as HTMLElement)\n : undefined;\n }\n }\n if (newProps.delayUpdateFocusOnHover !== this.props.delayUpdateFocusOnHover) {\n // update shouldUpdateFocusOnMouseEvent to follow what was passed in\n this._shouldUpdateFocusOnMouseEvent = !newProps.delayUpdateFocusOnHover;\n\n // If shouldUpdateFocusOnMouseEvent is false, we need to reset gotMouseMove to false\n this._gotMouseMove = this._shouldUpdateFocusOnMouseEvent && this._gotMouseMove;\n }\n }\n\n // Invoked once, both on the client and server, immediately before the initial rendering occurs.\n public UNSAFE_componentWillMount() {\n const target = this.props.target;\n this._setTargetWindowAndElement(target!);\n if (!this.props.hidden) {\n this._previousActiveElement = this._targetWindow\n ? (this._targetWindow.document.activeElement as HTMLElement)\n : undefined;\n }\n }\n\n // Invoked once, only on the client (not on the server), immediately after the initial rendering occurs.\n public componentDidMount(): void {\n if (!this.props.hidden) {\n this._onMenuOpened();\n }\n\n this._mounted = true;\n }\n\n // Invoked immediately before a component is unmounted from the DOM.\n public componentWillUnmount() {\n if (this.props.onMenuDismissed) {\n this.props.onMenuDismissed(this.props);\n }\n\n this._events.dispose();\n this._async.dispose();\n this._mounted = false;\n }\n\n public render(): JSX.Element | null {\n let { isBeakVisible } = this.props;\n\n const {\n items,\n labelElementId,\n id,\n className,\n beakWidth,\n directionalHint,\n directionalHintForRTL,\n alignTargetEdge,\n gapSpace,\n coverTarget,\n ariaLabel,\n doNotLayer,\n target,\n bounds,\n useTargetWidth,\n useTargetAsMinWidth,\n directionalHintFixed,\n shouldFocusOnMount,\n shouldFocusOnContainer,\n title,\n styles,\n theme,\n calloutProps,\n onRenderSubMenu = this._onRenderSubMenu,\n onRenderMenuList = this._onRenderMenuList,\n focusZoneProps,\n // eslint-disable-next-line deprecation/deprecation\n getMenuClassNames,\n } = this.props;\n\n this._classNames = getMenuClassNames\n ? getMenuClassNames(theme!, className)\n : getClassNames(styles, {\n theme: theme!,\n className: className,\n });\n\n const hasIcons = itemsHaveIcons(items);\n\n function itemsHaveIcons(contextualMenuItems: IContextualMenuItem[]): boolean {\n for (const item of contextualMenuItems) {\n if (item.iconProps) {\n return true;\n }\n\n if (\n item.itemType === ContextualMenuItemType.Section &&\n item.sectionProps &&\n itemsHaveIcons(item.sectionProps.items)\n ) {\n return true;\n }\n }\n\n return false;\n }\n\n this._adjustedFocusZoneProps = { ...focusZoneProps, direction: this._getFocusZoneDirection() };\n\n const hasCheckmarks = canAnyMenuItemsCheck(items);\n const submenuProps = this.state.expandedMenuItemKey && this.props.hidden !== true ? this._getSubmenuProps() : null;\n\n isBeakVisible = isBeakVisible === undefined ? this.props.responsiveMode! <= ResponsiveMode.medium : isBeakVisible;\n /**\n * When useTargetWidth is true, get the width of the target element and apply it for the context menu container\n */\n let contextMenuStyle;\n const targetAsHtmlElement = this._target as HTMLElement;\n if ((useTargetWidth || useTargetAsMinWidth) && targetAsHtmlElement && targetAsHtmlElement.offsetWidth) {\n const targetBoundingRect = targetAsHtmlElement.getBoundingClientRect();\n const targetWidth = targetBoundingRect.width - 2; /* Accounts for 1px border */\n\n if (useTargetWidth) {\n contextMenuStyle = {\n width: targetWidth,\n };\n } else if (useTargetAsMinWidth) {\n contextMenuStyle = {\n minWidth: targetWidth,\n };\n }\n }\n\n // The menu should only return if items were provided, if no items were provided then it should not appear.\n if (items && items.length > 0) {\n let totalItemCount = 0;\n for (const item of items) {\n if (item.itemType !== ContextualMenuItemType.Divider && item.itemType !== ContextualMenuItemType.Header) {\n const itemCount = item.customOnRenderListLength ? item.customOnRenderListLength : 1;\n totalItemCount += itemCount;\n }\n }\n\n const calloutStyles = this._classNames.subComponentStyles\n ? (this._classNames.subComponentStyles.callout as IStyleFunctionOrObject<\n ICalloutContentStyleProps,\n ICalloutContentStyles\n >)\n : undefined;\n\n return (\n <Callout\n styles={calloutStyles}\n onRestoreFocus={this._tryFocusPreviousActiveElement}\n {...calloutProps}\n target={target}\n isBeakVisible={isBeakVisible}\n beakWidth={beakWidth}\n directionalHint={directionalHint}\n directionalHintForRTL={directionalHintForRTL}\n gapSpace={gapSpace}\n coverTarget={coverTarget}\n doNotLayer={doNotLayer}\n className={css('ms-ContextualMenu-Callout', calloutProps && calloutProps.className)}\n setInitialFocus={shouldFocusOnMount}\n onDismiss={this.props.onDismiss}\n onScroll={this._onScroll}\n bounds={bounds}\n directionalHintFixed={directionalHintFixed}\n alignTargetEdge={alignTargetEdge}\n hidden={this.props.hidden}\n >\n <div\n style={contextMenuStyle}\n ref={(host: HTMLDivElement) => (this._host = host)}\n id={id}\n className={this._classNames.container}\n tabIndex={shouldFocusOnContainer ? 0 : -1}\n onKeyDown={this._onMenuKeyDown}\n onKeyUp={this._onKeyUp}\n onFocusCapture={this._onMenuFocusCapture}\n aria-label={ariaLabel}\n aria-labelledby={labelElementId}\n role={'menu'}\n >\n {title && <div className={this._classNames.title}> {title} </div>}\n {items && items.length ? (\n <FocusZone\n className={this._classNames.root}\n isCircularNavigation={true}\n handleTabKey={FocusZoneTabbableElements.all}\n {...this._adjustedFocusZoneProps}\n >\n {onRenderMenuList(\n {\n ariaLabel,\n items,\n totalItemCount,\n hasCheckmarks,\n hasIcons,\n defaultMenuItemRenderer: this._defaultMenuItemRenderer,\n labelElementId,\n },\n this._onRenderMenuList,\n )}\n </FocusZone>\n ) : null}\n {submenuProps && onRenderSubMenu(submenuProps, this._onRenderSubMenu)}\n </div>\n </Callout>\n );\n } else {\n return null;\n }\n }\n\n /**\n * Return whether the contextual menu is hidden.\n * Undefined value for hidden is equivalent to hidden being false.\n * @param props - Props for the component\n */\n private _isHidden(props: IContextualMenuProps) {\n return !!props.hidden;\n }\n\n private _onMenuOpened() {\n this._events.on(this._targetWindow, 'resize', this.dismiss);\n this._shouldUpdateFocusOnMouseEvent = !this.props.delayUpdateFocusOnHover;\n this._gotMouseMove = false;\n this.props.onMenuOpened && this.props.onMenuOpened(this.props);\n }\n\n private _onMenuClosed() {\n this._events.off(this._targetWindow, 'resize', this.dismiss);\n\n // This is kept for backwards compatability with hidden for right now.\n // This preserves the way that this behaved in the past\n // TODO find a better way to handle this by using the same conventions that\n // Popup uses to determine if focus is contained when dismissal occurs\n this._tryFocusPreviousActiveElement({\n containsFocus: this._focusingPreviousElement,\n documentContainsFocus: this._targetWindow.document.hasFocus(),\n originalElement: this._previousActiveElement,\n });\n\n this._focusingPreviousElement = false;\n\n if (this.props.onMenuDismissed) {\n this.props.onMenuDismissed(this.props);\n }\n\n this._shouldUpdateFocusOnMouseEvent = !this.props.delayUpdateFocusOnHover;\n\n // We need to dismiss any submenu related state properties,\n // so that when the menu is shown again, the submenu is collapsed\n this.setState({\n expandedByMouseClick: undefined,\n dismissedMenuItemKey: undefined,\n expandedMenuItemKey: undefined,\n submenuTarget: undefined,\n });\n }\n\n private _tryFocusPreviousActiveElement = (options: {\n containsFocus: boolean;\n documentContainsFocus: boolean;\n originalElement: HTMLElement | Window | undefined;\n }) => {\n if (this.props.onRestoreFocus) {\n this.props.onRestoreFocus(options);\n } else {\n if (options && options.containsFocus && this._previousActiveElement) {\n // Make sure that the focus method actually exists\n // In some cases the object might exist but not be a real element.\n // This is primarily for IE 11 and should be removed once IE 11 is no longer in use.\n if (this._previousActiveElement.focus) {\n this._previousActiveElement.focus();\n }\n }\n }\n };\n\n /**\n * Gets the focusZoneDirection by using the arrowDirection if specified,\n * the direction specificed in the focusZoneProps, or defaults to FocusZoneDirection.vertical\n */\n private _getFocusZoneDirection() {\n const { focusZoneProps } = this.props;\n return focusZoneProps && focusZoneProps.direction !== undefined\n ? focusZoneProps.direction\n : FocusZoneDirection.vertical;\n }\n\n private _onRenderSubMenu(\n subMenuProps: IContextualMenuProps,\n defaultRender?: IRenderFunction<IContextualMenuProps>,\n ): JSX.Element {\n throw Error(\n 'ContextualMenuBase: onRenderSubMenu callback is null or undefined. ' +\n 'Please ensure to set `onRenderSubMenu` property either manually or with `styled` helper.',\n );\n }\n\n private _onRenderMenuList = (\n menuListProps: IContextualMenuListProps,\n defaultRender?: IRenderFunction<IContextualMenuListProps>,\n ): JSX.Element => {\n let indexCorrection = 0;\n const { items, totalItemCount, hasCheckmarks, hasIcons } = menuListProps;\n\n return (\n <ul className={this._classNames.list} onKeyDown={this._onKeyDown} onKeyUp={this._onKeyUp} role={'presentation'}>\n {items.map((item, index) => {\n const menuItem = this._renderMenuItem(item, index, indexCorrection, totalItemCount, hasCheckmarks, hasIcons);\n if (item.itemType !== ContextualMenuItemType.Divider && item.itemType !== ContextualMenuItemType.Header) {\n const indexIncrease = item.customOnRenderListLength ? item.customOnRenderListLength : 1;\n indexCorrection += indexIncrease;\n }\n return menuItem;\n })}\n </ul>\n );\n };\n\n /**\n * !!!IMPORTANT!!! Avoid mutating `item: IContextualMenuItem` argument. It will\n * cause the menu items to always re-render because the component update is based on shallow comparison.\n */\n private _renderMenuItem = (\n item: IContextualMenuItem,\n index: number,\n focusableElementIndex: number,\n totalItemCount: number,\n hasCheckmarks: boolean,\n hasIcons: boolean,\n ): JSX.Element => {\n const renderedItems: React.ReactNode[] = [];\n const iconProps = item.iconProps || { iconName: 'None' };\n const {\n getItemClassNames, // eslint-disable-line deprecation/deprecation\n itemProps,\n } = item;\n const styles = itemProps ? itemProps.styles : undefined;\n\n // We only send a dividerClassName when the item to be rendered is a divider.\n // For all other cases, the default divider style is used.\n const dividerClassName = item.itemType === ContextualMenuItemType.Divider ? item.className : undefined;\n const subMenuIconClassName = item.submenuIconProps ? item.submenuIconProps.className : '';\n\n // eslint-disable-next-line deprecation/deprecation\n let itemClassNames: IMenuItemClassNames;\n\n // IContextualMenuItem#getItemClassNames for backwards compatibility\n // otherwise uses mergeStyles for class names.\n if (getItemClassNames) {\n itemClassNames = getItemClassNames(\n this.props.theme!,\n isItemDisabled(item),\n this.state.expandedMenuItemKey === item.key,\n !!getIsChecked(item),\n !!item.href,\n iconProps.iconName !== 'None',\n item.className,\n dividerClassName,\n iconProps.className,\n subMenuIconClassName,\n item.primaryDisabled,\n );\n } else {\n const itemStyleProps: IContextualMenuItemStyleProps = {\n theme: this.props.theme!,\n disabled: isItemDisabled(item),\n expanded: this.state.expandedMenuItemKey === item.key,\n checked: !!getIsChecked(item),\n isAnchorLink: !!item.href,\n knownIcon: iconProps.iconName !== 'None',\n itemClassName: item.className,\n dividerClassName,\n iconClassName: iconProps.className,\n subMenuClassName: subMenuIconClassName,\n primaryDisabled: item.primaryDisabled,\n };\n\n // We need to generate default styles then override if styles are provided\n // since the ContextualMenu currently handles item classNames.\n itemClassNames = getContextualMenuItemClassNames(\n _getMenuItemStylesFunction(this._classNames.subComponentStyles?.menuItem, styles),\n itemStyleProps,\n );\n }\n\n // eslint-disable-next-line deprecation/deprecation\n if (item.text === '-' || item.name === '-') {\n item.itemType = ContextualMenuItemType.Divider;\n }\n switch (item.itemType) {\n case ContextualMenuItemType.Divider:\n renderedItems.push(this._renderSeparator(index, itemClassNames));\n break;\n case ContextualMenuItemType.Header:\n renderedItems.push(this._renderSeparator(index, itemClassNames));\n const headerItem = this._renderHeaderMenuItem(item, itemClassNames, index, hasCheckmarks, hasIcons);\n renderedItems.push(this._renderListItem(headerItem, item.key || index, itemClassNames, item.title));\n break;\n case ContextualMenuItemType.Section:\n renderedItems.push(this._renderSectionItem(item, itemClassNames, index, hasCheckmarks, hasIcons));\n break;\n default:\n const menuItem = this._renderNormalItem(\n item,\n itemClassNames,\n index,\n focusableElementIndex,\n totalItemCount,\n hasCheckmarks,\n hasIcons,\n );\n renderedItems.push(this._renderListItem(menuItem, item.key || index, itemClassNames, item.title));\n break;\n }\n\n // Since multiple nodes *could* be rendered, wrap them all in a fragment with this item's key.\n // This ensures the reconciler handles multi-item output per-node correctly and does not re-mount content.\n return <React.Fragment key={item.key}>{renderedItems}</React.Fragment>;\n };\n\n private _defaultMenuItemRenderer = (item: IContextualMenuItemRenderProps): React.ReactNode => {\n const { index, focusableElementIndex, totalItemCount, hasCheckmarks, hasIcons } = item;\n return this._renderMenuItem(item, index, focusableElementIndex, totalItemCount, hasCheckmarks, hasIcons);\n };\n\n private _renderSectionItem(\n sectionItem: IContextualMenuItem,\n // eslint-disable-next-line deprecation/deprecation\n menuClassNames: IMenuItemClassNames,\n index: number,\n hasCheckmarks: boolean,\n hasIcons: boolean,\n ) {\n const sectionProps = sectionItem.sectionProps;\n if (!sectionProps) {\n return;\n }\n\n let headerItem;\n let groupProps;\n if (sectionProps.title) {\n let headerContextualMenuItem: IContextualMenuItem | undefined = undefined;\n let ariaLabellledby = '';\n if (typeof sectionProps.title === 'string') {\n // Since title is a user-facing string, it needs to be stripped\n // of whitespace in order to build a valid element ID\n const id = this._id + sectionProps.title.replace(/\\s/g, '');\n headerContextualMenuItem = {\n key: `section-${sectionProps.title}-title`,\n itemType: ContextualMenuItemType.Header,\n text: sectionProps.title,\n id: id,\n };\n ariaLabellledby = id;\n } else {\n const id = sectionProps.title.id || this._id + sectionProps.title.key.replace(/\\s/g, '');\n headerContextualMenuItem = { ...sectionProps.title, id };\n ariaLabellledby = id;\n }\n\n if (headerContextualMenuItem) {\n groupProps = {\n role: 'group',\n 'aria-labelledby': ariaLabellledby,\n };\n headerItem = this._renderHeaderMenuItem(\n headerContextualMenuItem,\n menuClassNames,\n index,\n hasCheckmarks,\n hasIcons,\n );\n }\n }\n\n if (sectionProps.items && sectionProps.items.length > 0) {\n return (\n <li role=\"presentation\" key={sectionProps.key || sectionItem.key || `section-${index}`}>\n <div {...groupProps}>\n <ul className={this._classNames.list} role=\"presentation\">\n {sectionProps.topDivider && this._renderSeparator(index, menuClassNames, true, true)}\n {headerItem &&\n this._renderListItem(headerItem, sectionItem.key || index, menuClassNames, sectionItem.title)}\n {sectionProps.items.map((contextualMenuItem, itemsIndex) =>\n this._renderMenuItem(\n contextualMenuItem,\n itemsIndex,\n itemsIndex,\n sectionProps.items.length,\n hasCheckmarks,\n hasIcons,\n ),\n )}\n {sectionProps.bottomDivider && this._renderSeparator(index, menuClassNames, false, true)}\n </ul>\n </div>\n </li>\n );\n }\n }\n\n private _renderListItem(\n content: React.ReactNode,\n key: string | number,\n classNames: IMenuItemClassNames, // eslint-disable-line deprecation/deprecation\n title?: string,\n ) {\n return (\n <li role=\"presentation\" title={title} key={key} className={classNames.item}>\n {content}\n </li>\n );\n }\n\n private _renderSeparator(\n index: number,\n classNames: IMenuItemClassNames, // eslint-disable-line deprecation/deprecation\n top?: boolean,\n fromSection?: boolean,\n ): React.ReactNode {\n if (fromSection || index > 0) {\n return (\n <li\n role=\"separator\"\n key={'separator-' + index + (top === undefined ? '' : top ? '-top' : '-bottom')}\n className={classNames.divider}\n aria-hidden=\"true\"\n />\n );\n }\n return null;\n }\n\n private _renderNormalItem(\n item: IContextualMenuItem,\n classNames: IMenuItemClassNames, // eslint-disable-line deprecation/deprecation\n index: number,\n focusableElementIndex: number,\n totalItemCount: number,\n hasCheckmarks: boolean,\n hasIcons: boolean,\n ): React.ReactNode {\n if (item.onRender) {\n return item.onRender(\n { 'aria-posinset': focusableElementIndex + 1, 'aria-setsize': totalItemCount, ...item },\n this.dismiss,\n );\n }\n if (item.href) {\n return this._renderAnchorMenuItem(\n item,\n classNames,\n index,\n focusableElementIndex,\n totalItemCount,\n hasCheckmarks,\n hasIcons,\n );\n }\n\n if (item.split && hasSubmenu(item)) {\n return this._renderSplitButton(\n item,\n classNames,\n index,\n focusableElementIndex,\n totalItemCount,\n hasCheckmarks,\n hasIcons,\n );\n }\n\n return this._renderButtonItem(\n item,\n classNames,\n index,\n focusableElementIndex,\n totalItemCount,\n hasCheckmarks,\n hasIcons,\n );\n }\n\n private _renderHeaderMenuItem(\n item: IContextualMenuItem,\n // eslint-disable-next-line deprecation/deprecation\n classNames: IMenuItemClassNames,\n index: number,\n hasCheckmarks: boolean,\n hasIcons: boolean,\n ): React.ReactNode {\n const { contextualMenuItemAs: ChildrenRenderer = ContextualMenuItem } = this.props;\n const { itemProps, id } = item;\n const divHtmlProperties =\n itemProps && getNativeProps<React.HTMLAttributes<HTMLDivElement>>(itemProps, divProperties);\n return (\n // eslint-disable-next-line deprecation/deprecation\n <div id={id} className={this._classNames.header} {...divHtmlProperties} style={item.style}>\n <ChildrenRenderer\n item={item}\n classNames={classNames}\n index={index}\n onCheckmarkClick={hasCheckmarks ? this._onItemClick : undefined}\n hasIcons={hasIcons}\n {...itemProps}\n />\n </div>\n );\n }\n\n private _renderAnchorMenuItem(\n item: IContextualMenuItem,\n // eslint-disable-next-line deprecation/deprecation\n classNames: IMenuItemClassNames,\n index: number,\n focusableElementIndex: number,\n totalItemCount: number,\n hasCheckmarks: boolean,\n hasIcons: boolean,\n ): React.ReactNode {\n const { contextualMenuItemAs } = this.props;\n const { expandedMenuItemKey } = this.state;\n return (\n <ContextualMenuAnchor\n item={item}\n classNames={classNames}\n index={index}\n focusableElementIndex={focusableElementIndex}\n totalItemCount={totalItemCount}\n hasCheckmarks={hasCheckmarks}\n hasIcons={hasIcons}\n contextualMenuItemAs={contextualMenuItemAs}\n onItemMouseEnter={this._onItemMouseEnterBase}\n onItemMouseLeave={this._onMouseItemLeave}\n onItemMouseMove={this._onItemMouseMoveBase}\n onItemMouseDown={this._onItemMouseDown}\n executeItemClick={this._executeItemClick}\n onItemClick={this._onAnchorClick}\n onItemKeyDown={this._onItemKeyDown}\n expandedMenuItemKey={expandedMenuItemKey}\n openSubMenu={this._onItemSubMenuExpand}\n dismissSubMenu={this._onSubMenuDismiss}\n dismissMenu={this.dismiss}\n />\n );\n }\n\n private _renderButtonItem(\n item: IContextualMenuItem,\n // eslint-disable-next-line deprecation/deprecation\n classNames: IMenuItemClassNames,\n index: number,\n focusableElementIndex: number,\n totalItemCount: number,\n hasCheckmarks?: boolean,\n hasIcons?: boolean,\n ) {\n const { contextualMenuItemAs } = this.props;\n const { expandedMenuItemKey } = this.state;\n\n return (\n <ContextualMenuButton\n item={item}\n classNames={classNames}\n index={index}\n focusableElementIndex={focusableElementIndex}\n totalItemCount={totalItemCount}\n hasCheckmarks={hasCheckmarks}\n hasIcons={hasIcons}\n contextualMenuItemAs={contextualMenuItemAs}\n onItemMouseEnter={this._onItemMouseEnterBase}\n onItemMouseLeave={this._onMouseItemLeave}\n onItemMouseMove={this._onItemMouseMoveBase}\n onItemMouseDown={this._onItemMouseDown}\n executeItemClick={this._executeItemClick}\n onItemClick={this._onItemClick}\n onItemClickBase={this._onItemClickBase}\n onItemKeyDown={this._onItemKeyDown}\n expandedMenuItemKey={expandedMenuItemKey}\n openSubMenu={this._onItemSubMenuExpand}\n dismissSubMenu={this._onSubMenuDismiss}\n dismissMenu={this.dismiss}\n />\n );\n }\n\n private _renderSplitButton(\n item: IContextualMenuItem,\n // eslint-disable-next-line deprecation/deprecation\n classNames: IMenuItemClassNames,\n index: number,\n focusableElementIndex: number,\n totalItemCount: number,\n hasCheckmarks?: boolean,\n hasIcons?: boolean,\n ): JSX.Element {\n const { contextualMenuItemAs } = this.props;\n const { expandedMenuItemKey } = this.state;\n\n return (\n <ContextualMenuSplitButton\n item={item}\n classNames={classNames}\n index={index}\n focusableElementIndex={focusableElementIndex}\n totalItemCount={totalItemCount}\n hasCheckmarks={hasCheckmarks}\n hasIcons={hasIcons}\n contextualMenuItemAs={contextualMenuItemAs}\n onItemMouseEnter={this._onItemMouseEnterBase}\n onItemMouseLeave={this._onMouseItemLeave}\n onItemMouseMove={this._onItemMouseMoveBase}\n onItemMouseDown={this._onItemMouseDown}\n executeItemClick={this._executeItemClick}\n onItemClick={this._onItemClick}\n onItemClickBase={this._onItemClickBase}\n onItemKeyDown={this._onItemKeyDown}\n openSubMenu={this._onItemSubMenuExpand}\n dismissSubMenu={this._onSubMenuDismiss}\n dismissMenu={this.dismiss}\n expandedMenuItemKey={expandedMenuItemKey}\n onTap={this._onPointerAndTouchEvent}\n />\n );\n }\n\n private _onKeyDown = (ev: React.KeyboardEvent<HTMLElement>): boolean => {\n // Take note if we are processing an alt (option) or meta (command) keydown.\n // See comment in _shouldHandleKeyUp for reasoning.\n this._lastKeyDownWasAltOrMeta = this._isAltOrMeta(ev);\n\n // On Mac, pressing escape dismisses all levels of native context menus\n const dismissAllMenus = ev.which === KeyCodes.escape && (isMac() || isIOS());\n\n return this._keyHandler(ev, this._shouldHandleKeyDown, dismissAllMenus);\n };\n\n private _shouldHandleKeyDown = (ev: React.KeyboardEvent<HTMLElement>) => {\n return (\n ev.which === KeyCodes.escape ||\n this._shouldCloseSubMenu(ev) ||\n (ev.which === KeyCodes.up && (ev.altKey || ev.metaKey))\n );\n };\n\n private _onMenuFocusCapture = (ev: React.FocusEvent<HTMLElement>) => {\n if (this.props.delayUpdateFocusOnHover) {\n this._shouldUpdateFocusOnMouseEvent = true;\n }\n };\n\n private _onKeyUp = (ev: React.KeyboardEvent<HTMLElement>): boolean => {\n return this._keyHandler(ev, this._shouldHandleKeyUp, true /* dismissAllMenus */);\n };\n\n /**\n * We close the menu on key up only if ALL of the following are true:\n * - Most recent key down was alt or meta (command)\n * - The alt/meta key down was NOT followed by some other key (such as down/up arrow to\n * expand/collapse the menu)\n * - We're not on a Mac (or iOS)\n *\n * This is because on Windows, pressing alt moves focus to the application menu bar or similar,\n * closing any open context menus. There is not a similar behavior on Macs.\n */\n private _shouldHandleKeyUp = (ev: React.KeyboardEvent<HTMLElement>) => {\n const keyPressIsAltOrMetaAlone = this._lastKeyDownWasAltOrMeta && this._isAltOrMeta(ev);\n this._lastKeyDownWasAltOrMeta = false;\n return !!keyPressIsAltOrMetaAlone && !(isIOS() || isMac());\n };\n\n /**\n * Returns true if the key for the event is alt (Mac option) or meta (Mac command).\n */\n private _isAltOrMeta(ev: React.KeyboardEvent<HTMLElement>): boolean {\n return ev.which === KeyCodes.alt || ev.key === 'Meta';\n }\n\n /**\n * Calls `shouldHandleKey` to determine whether the keyboard event should be handled;\n * if so, stops event propagation and dismisses menu(s).\n * @param ev - The keyboard event.\n * @param shouldHandleKey - Returns whether we should handle this keyboard event.\n * @param dismissAllMenus - If true, dismiss all menus. Otherwise, dismiss only the current menu.\n * Only does anything if `shouldHandleKey` returns true.\n * @returns Whether the event was handled.\n */\n private _keyHandler = (\n ev: React.KeyboardEvent<HTMLElement>,\n shouldHandleKey: (ev: React.KeyboardEvent<HTMLElement>) => boolean,\n dismissAllMenus?: boolean,\n ): boolean => {\n let handled = false;\n\n if (shouldHandleKey(ev)) {\n this._focusingPreviousElement = true;\n this.dismiss(ev, dismissAllMenus);\n ev.preventDefault();\n ev.stopPropagation();\n handled = true;\n }\n\n return handled;\n };\n\n /**\n * Checks if the submenu should be closed\n */\n private _shouldCloseSubMenu = (ev: React.KeyboardEvent<HTMLElement>): boolean => {\n const submenuCloseKey = getRTL(this.props.theme) ? KeyCodes.right : KeyCodes.left;\n\n if (ev.which !== submenuCloseKey || !this.props.isSubMenu) {\n return false;\n }\n\n return (\n this._adjustedFocusZoneProps.direction === FocusZoneDirection.vertical ||\n (!!this._adjustedFocusZoneProps.checkForNoWrap &&\n !shouldWrapFocus(ev.target as HTMLElement, 'data-no-horizontal-wrap'))\n );\n };\n\n private _onMenuKeyDown = (ev: React.KeyboardEvent<HTMLElement>) => {\n // Mark as handled if onKeyDown returns true (for handling collapse cases)\n // or if we are attempting to expand a submenu\n const handled = this._onKeyDown(ev);\n\n if (handled || !this._host) {\n return;\n }\n\n // If we have a modifier key being pressed, we do not want to move focus.\n // Otherwise, handle up and down keys.\n const hasModifier = !!(ev.altKey || ev.metaKey);\n const isUp = ev.which === KeyCodes.up;\n const isDown = ev.which === KeyCodes.down;\n if (!hasModifier && (isUp || isDown)) {\n const elementToFocus = isUp\n ? getLastFocusable(this._host, this._host.lastChild as HTMLElement, true)\n : getFirstFocusable(this._host, this._host.firstChild as HTMLElement, true);\n\n if (elementToFocus) {\n elementToFocus.focus();\n ev.preventDefault();\n ev.stopPropagation();\n }\n }\n };\n\n /**\n * Scroll handler for the callout to make sure the mouse events\n * for updating focus are not interacting during scroll\n */\n private _onScroll = (): void => {\n if (!this._isScrollIdle && this._scrollIdleTimeoutId !== undefined) {\n this._async.clearTimeout(this._scrollIdleTimeoutId);\n this._scrollIdleTimeoutId = undefined;\n } else {\n this._isScrollIdle = false;\n }\n\n this._scrollIdleTimeoutId = this._async.setTimeout(() => {\n this._isScrollIdle = true;\n }, NavigationIdleDelay);\n };\n\n private _onItemMouseEnterBase = (item: any, ev: React.MouseEvent<HTMLElement>, target?: HTMLElement): void => {\n if (this._shouldIgnoreMouseEvent()) {\n return;\n }\n\n this._updateFocusOnMouseEvent(item, ev, target);\n };\n\n private _onItemMouseMoveBase = (item: any, ev: React.MouseEvent<HTMLElement>, target: HTMLElement): void => {\n const targetElement = ev.currentTarget as HTMLElement;\n\n // Always do this check to make sure we record a mouseMove if needed (even if we are timed out)\n if (this._shouldUpdateFocusOnMouseEvent) {\n this._gotMouseMove = true;\n } else {\n return;\n }\n\n if (\n !this._isScrollIdle ||\n this._enterTimerId !== undefined ||\n targetElement === (this._targetWindow.document.activeElement as HTMLElement)\n ) {\n return;\n }\n\n this._updateFocusOnMouseEvent(item, ev, target);\n };\n\n private _shouldIgnoreMouseEvent(): boolean {\n return !this._isScrollIdle || !this._gotMouseMove;\n }\n\n private _onMouseItemLeave = (item: any, ev: React.MouseEvent<HTMLElement>): void => {\n if (this._shouldIgnoreMouseEvent()) {\n return;\n }\n\n if (this._enterTimerId !== undefined) {\n this._async.clearTimeout(this._enterTimerId);\n this._enterTimerId = undefined;\n }\n\n if (this.state.expandedMenuItemKey !== undefined) {\n return;\n }\n\n /**\n * IE11 focus() method forces parents to scroll to top of element.\n * Edge and IE expose a setActive() function for focusable divs that\n * sets the page focus but does not scroll the parent element.\n */\n if ((this._host as any).setActive) {\n try {\n (this._host as any).setActive();\n } catch (e) {\n /* no-op */\n }\n } else {\n this._host.focus();\n }\n };\n\n /**\n * Handles updating focus when mouseEnter or mouseMove fire.\n * As part of updating focus, This function will also update\n * the expand/collapse state accordingly.\n */\n private _updateFocusOnMouseEvent(item: IContextualMenuItem, ev: React.MouseEvent<HTMLElement>, target?: HTMLElement) {\n const targetElement = target ? target : (ev.currentTarget as HTMLElement);\n const { subMenuHoverDelay: timeoutDuration = NavigationIdleDelay } = this.props;\n\n if (item.key === this.state.expandedMenuItemKey) {\n return;\n }\n\n if (this._enterTimerId !== undefined) {\n this._async.clearTimeout(this._enterTimerId);\n this._enterTimerId = undefined;\n }\n\n // If the menu is not expanded we can update focus without any delay\n if (this.state.expandedMenuItemKey === undefined) {\n targetElement.focus();\n }\n\n // Delay updating expanding/dismissing the submenu\n // and only set focus if we have not already done so\n if (hasSubmenu(item)) {\n ev.stopPropagation();\n this._enterTimerId = this._async.setTimeout(() => {\n targetElement.focus();\n this.setState({\n expandedByMouseClick: true,\n });\n this._onItemSubMenuExpand(item, targetElement);\n this._enterTimerId = undefined;\n }, timeoutDuration);\n } else {\n this._enterTimerId = this._async.setTimeout(() => {\n this._onSubMenuDismiss(ev);\n targetElement.focus();\n this._enterTimerId = undefined;\n }, timeoutDuration);\n }\n }\n\n private _onItemMouseDown = (item: IContextualMenuItem, ev: React.MouseEvent<HTMLElement>): void => {\n if (item.onMouseDown) {\n item.onMouseDown(item, ev);\n }\n };\n\n private _onItemClick = (\n item: IContextualMenuItem,\n ev: React.MouseEvent<HTMLElement> | React.KeyboardEvent<HTMLElement>,\n ): void => {\n this._onItemClickBase(item, ev, ev.currentTarget as HTMLElement);\n };\n\n private _onItemClickBase = (\n item: IContextualMenuItem,\n ev: React.MouseEvent<HTMLElement> | React.KeyboardEvent<HTMLElement>,\n target: HTMLElement,\n ): void => {\n const { target: menuTarget } = this.props;\n\n const items = getSubmenuItems(item, { target: menuTarget });\n\n // Cancel a async menu item hover timeout action from being taken and instead\n // just trigger the click event instead.\n this._cancelSubMenuTimer();\n\n if (!hasSubmenu(item) && (!items || !items.length)) {\n // This is an item without a menu. Click it.\n this._executeItemClick(item, ev);\n } else {\n if (item.key !== this.state.expandedMenuItemKey) {\n // This has a collapsed sub menu. Expand it.\n this.setState({\n // When Edge + Narrator are used together (regardless of if the button is in a form or not), pressing\n // \"Enter\" fires this method and not _onMenuKeyDown. Checking ev.nativeEvent.detail differentiates\n // between a real click event and a keypress event (detail should be the number of mouse clicks).\n // ...Plot twist! For a real click event in IE 11, detail is always 0 (Edge sets it properly to 1).\n // So we also check the pointerType property, which both Edge and IE set to \"mouse\" for real clicks\n // and \"\" for pressing \"Enter\" with Narrator on.\n expandedByMouseClick: ev.nativeEvent.detail !== 0 || (ev.nativeEvent as PointerEvent).pointerType === 'mouse',\n });\n this._onItemSubMenuExpand(item, target);\n }\n }\n\n ev.stopPropagation();\n ev.preventDefault();\n };\n\n private _onAnchorClick = (item: IContextualMenuItem, ev: React.MouseEvent<HTMLElement>) => {\n this._executeItemClick(item, ev);\n ev.stopPropagation();\n };\n\n private _executeItemClick = (\n item: IContextualMenuItem,\n ev: React.MouseEvent<HTMLElement> | React.KeyboardEvent<HTMLElement>,\n ): void => {\n const { target: menuTarget } = this.props;\n\n if (item.disabled || item.isDisabled) {\n return;\n }\n\n if (item.preferMenuTargetAsEventTarget) {\n overrideTarget(ev, menuTarget);\n }\n\n let dismiss = false;\n if (item.onClick) {\n dismiss = !!item.onClick(ev, item);\n } else if (this.props.onItemClick) {\n dismiss = !!this.props.onItemClick(ev, item);\n }\n\n if (dismiss || !ev.defaultPrevented) {\n this.dismiss(ev, true);\n\n // This should be removed whenever possible.\n // This ensures that the hidden dismissal action maintains the same behavior.\n // If the menu is being dismissed then the previously focused element should\n // get focused since the dismiss was triggered by a user click on an item\n // Rather than focus being lost.\n this._focusingPreviousElement = true;\n }\n };\n\n private _onItemKeyDown = (item: any, ev: React.KeyboardEvent<HTMLElement>): void => {\n const openKey = getRTL(this.props.theme) ? KeyCodes.left : KeyCodes.right;\n\n if (\n !item.disabled &&\n (ev.which === openKey || ev.which === KeyCodes.enter || (ev.which === KeyCodes.down && (ev.altKey || ev.metaKey)))\n ) {\n this.setState({\n expandedByMouseClick: false,\n });\n this._onItemSubMenuExpand(item, ev.currentTarget as HTMLElement);\n ev.preventDefault();\n }\n };\n\n // Cancel a async menu item hover timeout action from being taken and instead\n // do new upcoming behavior\n private _cancelSubMenuTimer = () => {\n if (this._enterTimerId !== undefined) {\n this._async.clearTimeout(this._enterTimerId);\n this._enterTimerId = undefined;\n }\n };\n\n private _onItemSubMenuExpand = (item: IContextualMenuItem, target: HTMLElement): void => {\n if (this.state.expandedMenuItemKey !== item.key) {\n if (this.state.expandedMenuItemKey) {\n this._onSubMenuDismiss();\n }\n\n // Focus the target to ensure when we close it, we're focusing on the correct element.\n target.focus();\n this.setState({\n expandedMenuItemKey: item.key,\n submenuTarget: target,\n });\n }\n };\n\n private _getSubmenuProps() {\n const { submenuTarget, expandedMenuItemKey } = this.state;\n const item = this._findItemByKey(expandedMenuItemKey!);\n let submenuProps: IContextualMenuProps | null = null;\n\n const { target: menuTarget } = this.props;\n\n if (item) {\n submenuProps = {\n items: getSubmenuItems(item, { target: menuTarget })!,\n target: submenuTarget,\n onDismiss: this._onSubMenuDismiss,\n isSubMenu: true,\n id: this.state.subMenuId,\n shouldFocusOnMount: true,\n shouldFocusOnContainer: this.state.expandedByMouseClick,\n directionalHint: getRTL(this.props.theme) ? DirectionalHint.leftTopEdge : DirectionalHint.rightTopEdge,\n className: this.props.className,\n gapSpace: 0,\n isBeakVisible: false,\n };\n\n if (item.subMenuProps) {\n assign(submenuProps, item.subMenuProps);\n }\n\n if (item.preferMenuTargetAsEventTarget) {\n const { onItemClick } = item;\n\n submenuProps.onItemClick = getOnClickWithOverrideTarget(onItemClick, menuTarget);\n }\n }\n return submenuProps;\n }\n\n private _findItemByKey(key: string): IContextualMenuItem | undefined {\n const { items } = this.props;\n return this._findItemByKeyFromItems(key, items);\n }\n\n /**\n * Returns the item that mathes a given key if any.\n * @param key - The key of the item to match\n * @param items - The items to look for the key\n */\n private _findItemByKeyFromItems(key: string, items: IContextualMenuItem[]): IContextualMenuItem | undefined {\n for (const item of items) {\n if (item.itemType === ContextualMenuItemType.Section && item.sectionProps) {\n const match = this._findItemByKeyFromItems(key, item.sectionProps.items);\n if (match) {\n return match;\n }\n } else if (item.key && item.key === key) {\n return item;\n }\n }\n }\n\n /**\n * This function is called ASYNCHRONOUSLY, and so there is a chance it is called\n * after the component is unmounted. The _mounted property is added to prevent\n * from calling setState() after unmount. Do NOT copy this pattern in synchronous\n * code.\n */\n private _onSubMenuDismiss = (ev?: any, dismissAll?: boolean): void => {\n if (dismissAll) {\n this.dismiss(ev, dismissAll);\n } else if (this._mounted) {\n this.setState({\n dismissedMenuItemKey: this.state.expandedMenuItemKey,\n expandedMenuItemKey: undefined,\n submenuTarget: undefined,\n });\n }\n };\n\n private _setTargetWindowAndElement(target: Target): void {\n const currentElement = this._host;\n\n if (target) {\n if (typeof target === 'string') {\n const currentDoc: Document = getDocument(currentElement)!;\n this._target = currentDoc ? (currentDoc.querySelector(target) as Element) : null;\n this._targetWindow = getWindow(currentElement)!;\n // Cast to any prevents error about stopPropagation always existing\n } else if ((target as any).stopPropagation) {\n this._targetWindow = getWindow((target as MouseEvent).target as HTMLElement)!;\n this._target = target as MouseEvent;\n } else if (\n // eslint-disable-next-line deprecation/deprecation\n ((target as Point).left !== undefined || (target as Point).x !== undefined) &&\n // eslint-disable-next-line deprecation/deprecation\n ((target as Point).top !== undefined || (target as Point).y !== undefined)\n ) {\n this._targetWindow = getWindow(currentElement)!;\n this._target = target as Point;\n } else if ((target as React.RefObject<Element>).current !== undefined) {\n this._target = (target as React.RefObject<Element>).current;\n this._targetWindow = getWindow(this._target)!;\n } else {\n const targetElement: Element = target as Element;\n this._targetWindow = getWindow(targetElement)!;\n this._target = target as Element;\n }\n } else {\n this._targetWindow = getWindow(currentElement)!;\n }\n }\n\n private _onPointerAndTouchEvent = (ev: React.TouchEvent<HTMLElement> | PointerEvent) => {\n this._cancelSubMenuTimer();\n };\n}\n\nfunction getOnClickWithOverrideTarget(\n onClick:\n | ((\n ev?: React.MouseEvent<HTMLElement, MouseEvent> | React.KeyboardEvent<HTMLElement> | undefined,\n item?: IContextualMenuItem | undefined,\n ) => boolean | void)\n | undefined,\n target: Target | undefined,\n) {\n return onClick\n ? (\n ev?: React.MouseEvent<HTMLElement, MouseEvent> | React.KeyboardEvent<HTMLElement> | undefined,\n item?: IContextualMenuItem | undefined,\n ) => {\n overrideTarget(ev, target);\n\n return onClick(ev, item);\n }\n : onClick;\n}\n\nfunction overrideTarget(\n ev?: React.MouseEvent<HTMLElement, MouseEvent> | React.KeyboardEvent<HTMLElement> | undefined,\n target?: Target,\n): void {\n if (ev && target) {\n ev.persist();\n\n if (target instanceof Event) {\n ev.target = target.target as HTMLElement;\n } else if (target instanceof Element) {\n ev.target = target;\n }\n }\n}\n","import { IContextualMenuStyleProps, IContextualMenuStyles } from './ContextualMenu.types';\nimport { getGlobalClassNames, FontWeights } from '../../Styling';\nimport { CONTEXTUAL_MENU_ITEM_HEIGHT } from './ContextualMenu.cnstyles';\n\nconst GlobalClassNames = {\n root: 'ms-ContextualMenu',\n container: 'ms-ContextualMenu-container',\n list: 'ms-ContextualMenu-list',\n header: 'ms-ContextualMenu-header',\n title: 'ms-ContextualMenu-title',\n isopen: 'is-open',\n};\n\nexport const getStyles = (props: IContextualMenuStyleProps): IContextualMenuStyles => {\n const { className, theme } = props;\n const classNames = getGlobalClassNames(GlobalClassNames, theme);\n\n const { fonts, semanticColors, effects } = theme;\n\n return {\n root: [\n theme.fonts.medium,\n classNames.root,\n classNames.isopen,\n {\n backgroundColor: semanticColors.menuBackground,\n minWidth: '180px',\n },\n className,\n ],\n container: [\n classNames.container,\n {\n selectors: {\n ':focus': { outline: 0 },\n },\n },\n ],\n list: [\n classNames.list,\n classNames.isopen,\n {\n listStyleType: 'none',\n margin: '0',\n padding: '0',\n },\n ],\n header: [\n classNames.header,\n fonts.small,\n {\n fontWeight: FontWeights.semibold,\n color: semanticColors.menuHeader,\n background: 'none',\n backgroundColor: 'transparent',\n border: 'none',\n height: CONTEXTUAL_MENU_ITEM_HEIGHT,\n lineHeight: CONTEXTUAL_MENU_ITEM_HEIGHT,\n cursor: 'default',\n padding: '0px 6px',\n userSelect: 'none',\n textAlign: 'left',\n },\n ],\n title: [\n classNames.title,\n {\n fontSize: fonts.mediumPlus.fontSize,\n paddingRight: '14px',\n paddingLeft: '14px',\n paddingBottom: '5px',\n paddingTop: '5px',\n backgroundColor: semanticColors.menuItemBackgroundPressed,\n },\n ],\n subComponentStyles: {\n callout: {\n root: {\n boxShadow: effects.elevation8,\n },\n },\n menuItem: {},\n },\n };\n};\n","import * as React from 'react';\nimport { styled, composeRenderFunction } from '../../Utilities';\nimport { IContextualMenuProps, IContextualMenuStyleProps, IContextualMenuStyles } from './ContextualMenu.types';\nimport { ContextualMenuBase } from './ContextualMenu.base';\nimport { getStyles } from './ContextualMenu.styles';\n\nfunction onRenderSubMenu(subMenuProps: IContextualMenuProps) {\n return <LocalContextualMenu {...subMenuProps} />;\n}\n\n// This is to prevent cyclic import with ContextualMenu.base.tsx.\nconst LocalContextualMenu: React.FunctionComponent<IContextualMenuProps> = styled<\n IContextualMenuProps,\n IContextualMenuStyleProps,\n IContextualMenuStyles\n>(\n ContextualMenuBase,\n getStyles,\n (props: IContextualMenuProps) => ({\n onRenderSubMenu: props.onRenderSubMenu\n ? composeRenderFunction(props.onRenderSubMenu, onRenderSubMenu)\n : onRenderSubMenu,\n }),\n { scope: 'ContextualMenu' },\n);\n\n/**\n * ContextualMenu description\n */\nexport const ContextualMenu: React.FunctionComponent<IContextualMenuProps> = LocalContextualMenu;\n","import { memoizeFunction } from '../../../Utilities';\nimport { mergeStyles } from '../../../Styling';\nimport { IButtonStyles } from '../Button.types';\n\nexport interface ISplitButtonClassNames {\n root?: string;\n icon?: string;\n splitButtonContainer?: string;\n flexContainer?: string;\n divider?: string;\n}\n\nexport const getSplitButtonClassNames = memoizeFunction(\n (\n styles: IButtonStyles,\n disabled: boolean,\n expanded: boolean,\n checked: boolean,\n primaryDisabled?: boolean,\n ): ISplitButtonClassNames => {\n return {\n root: mergeStyles(\n styles.splitButtonMenuButton,\n expanded && [styles.splitButtonMenuButtonExpanded],\n disabled && [styles.splitButtonMenuButtonDisabled],\n checked && !disabled && [styles.splitButtonMenuButtonChecked],\n primaryDisabled &&\n !disabled && [\n {\n selectors: {\n ':focus': styles.splitButtonMenuFocused,\n },\n },\n ],\n ),\n\n splitButtonContainer: mergeStyles(\n styles.splitButtonContainer,\n !disabled &&\n checked && [\n styles.splitButtonContainerChecked,\n {\n selectors: {\n ':hover': styles.splitButtonContainerCheckedHovered,\n },\n },\n ],\n !disabled &&\n !checked && [\n {\n selectors: {\n ':hover': styles.splitButtonContainerHovered,\n ':focus': styles.splitButtonContainerFocused,\n },\n },\n ],\n disabled && styles.splitButtonContainerDisabled,\n ),\n\n icon: mergeStyles(\n styles.splitButtonMenuIcon,\n disabled && styles.splitButtonMenuIconDisabled,\n !disabled && primaryDisabled && styles.splitButtonMenuIcon,\n ),\n\n flexContainer: mergeStyles(styles.splitButtonFlexContainer),\n\n divider: mergeStyles(\n styles.splitButtonDivider,\n (primaryDisabled || disabled) && styles.splitButtonDividerDisabled,\n ),\n };\n },\n);\n","import * as React from 'react';\nimport {\n anchorProperties,\n assign,\n buttonProperties,\n createMergedRef,\n css,\n getId,\n getNativeProps,\n initializeComponentRef,\n memoizeFunction,\n mergeAriaAttributeValues,\n nullRender,\n portalContainsElement,\n setFocusVisibility,\n warnConditionallyRequiredProps,\n warnDeprecations,\n Async,\n EventGroup,\n FocusRects,\n IRenderFunction,\n KeyCodes,\n} from '../../Utilities';\nimport { Icon, FontIcon, ImageIcon } from '../../Icon';\nimport { DirectionalHint } from '../../common/DirectionalHint';\nimport { ContextualMenu, IContextualMenuProps } from '../../ContextualMenu';\nimport { IButtonProps, IButton } from './Button.types';\nimport { IButtonClassNames, getBaseButtonClassNames } from './BaseButton.classNames';\nimport {\n getSplitButtonClassNames as getBaseSplitButtonClassNames,\n ISplitButtonClassNames,\n} from './SplitButton/SplitButton.classNames';\nimport { KeytipData } from '../../KeytipData';\nimport { IKeytipProps } from '../Keytip/Keytip.types';\nimport { composeComponentAs } from '../../Utilities';\n\n/**\n * {@docCategory Button}\n */\nexport interface IBaseButtonProps extends IButtonProps {\n baseClassName?: string;\n variantClassName?: string;\n}\n\nexport interface IBaseButtonState {\n menuHidden: boolean;\n}\n\nconst TouchIdleDelay = 500; /* ms */\nconst COMPONENT_NAME = 'BaseButton';\n\n/**\n * {@docCategory Button}\n */\nexport class BaseButton extends React.Component<IBaseButtonProps, IBaseButtonState> implements IButton {\n private get _isSplitButton(): boolean {\n return !!this.props.menuProps && !!this.props.onClick && this.props.split === true;\n }\n\n public static defaultProps: Partial<IBaseButtonProps> = {\n baseClassName: 'ms-Button',\n styles: {},\n split: false,\n };\n\n private _async: Async;\n private _events: EventGroup;\n private _buttonElement = React.createRef<HTMLElement>();\n private _splitButtonContainer = React.createRef<HTMLDivElement>();\n private _mergedRef = createMergedRef<HTMLElement>();\n private _labelId: string;\n private _descriptionId: string;\n private _ariaDescriptionId: string;\n private _classNames: IButtonClassNames;\n private _processingTouch: boolean;\n private _lastTouchTimeoutId: number | undefined;\n private _renderedVisibleMenu: boolean = false;\n\n // These fields will be used to set corresponding props on the menu.\n private _menuShouldFocusOnContainer: boolean | undefined;\n private _menuShouldFocusOnMount: boolean | undefined;\n\n private _getMemoizedMenuButtonKeytipProps = memoizeFunction((keytipProps: IKeytipProps) => {\n return {\n ...keytipProps,\n hasMenu: true,\n };\n });\n\n constructor(props: IBaseButtonProps) {\n super(props);\n\n initializeComponentRef(this);\n this._async = new Async(this);\n this._events = new EventGroup(this);\n\n warnConditionallyRequiredProps(COMPONENT_NAME, props, ['menuProps', 'onClick'], 'split', this.props.split!);\n\n warnDeprecations(COMPONENT_NAME, props, {\n rootProps: undefined,\n description: 'secondaryText',\n toggled: 'checked',\n });\n this._labelId = getId();\n this._descriptionId = getId();\n this._ariaDescriptionId = getId();\n\n this.state = {\n menuHidden: true,\n };\n }\n\n public render(): JSX.Element {\n const {\n ariaDescription,\n ariaLabel,\n ariaHidden,\n className,\n disabled,\n allowDisabledFocus,\n primaryDisabled,\n // eslint-disable-next-line deprecation/deprecation\n secondaryText = this.props.description,\n href,\n iconProps,\n menuIconProps,\n styles,\n checked,\n variantClassName,\n theme,\n toggle,\n getClassNames,\n role,\n } = this.props;\n\n const { menuHidden } = this.state;\n\n // Button is disabled if the whole button (in case of splitButton is disabled) or if the primary action is disabled\n const isPrimaryButtonDisabled = disabled || primaryDisabled;\n\n this._classNames = getClassNames\n ? getClassNames(\n theme!,\n className!,\n variantClassName!,\n iconProps && iconProps.className,\n menuIconProps && menuIconProps.className,\n isPrimaryButtonDisabled!,\n checked!,\n !menuHidden,\n !!this.props.menuProps,\n this.props.split,\n !!allowDisabledFocus,\n )\n : getBaseButtonClassNames(\n theme!,\n styles!,\n className!,\n variantClassName!,\n iconProps && iconProps.className,\n menuIconProps && menuIconProps.className,\n isPrimaryButtonDisabled!,\n !!this.props.menuProps,\n checked!,\n !menuHidden,\n this.props.split,\n );\n\n const { _ariaDescriptionId, _labelId, _descriptionId } = this;\n // Anchor tag cannot be disabled hence in disabled state rendering\n // anchor button as normal button\n const renderAsAnchor: boolean = !isPrimaryButtonDisabled && !!href;\n const tag = renderAsAnchor ? 'a' : 'button';\n\n const nativeProps = getNativeProps(\n // eslint-disable-next-line deprecation/deprecation\n assign(renderAsAnchor ? {} : { type: 'button' }, this.props.rootProps, this.props),\n renderAsAnchor ? anchorProperties : buttonProperties,\n [\n 'disabled', // let disabled buttons be focused and styled as disabled.\n ],\n );\n\n // Check for ariaLabel passed in via Button props, and fall back to aria-label passed in via native props\n const resolvedAriaLabel = ariaLabel || (nativeProps as any)['aria-label'];\n\n // Check for ariaDescription, secondaryText or aria-describedby in the native props to determine source of\n // aria-describedby. Otherwise default to undefined so property does not appear in output.\n let ariaDescribedBy = undefined;\n if (ariaDescription) {\n ariaDescribedBy = _ariaDescriptionId;\n } else if (secondaryText && this.props.onRenderDescription !== nullRender) {\n // for buttons like CompoundButton with a valid onRenderDescription, we need to set an ariaDescribedBy\n // for buttons that do not render anything (via nullRender), we should not set an ariaDescribedBy\n ariaDescribedBy = _descriptionId;\n } else if ((nativeProps as any)['aria-describedby']) {\n ariaDescribedBy = (nativeProps as any)['aria-describedby'];\n }\n\n // If an explicit ariaLabel is given, use that as the label and we're done.\n // If an explicit aria-labelledby is given, use that and we're done.\n // If any kind of description is given (which will end up as an aria-describedby attribute),\n // set the labelledby element. Otherwise, the button is labeled implicitly by the descendent\n // text on the button (if it exists). Never set both aria-label and aria-labelledby.\n let ariaLabelledBy = undefined;\n if (!resolvedAriaLabel) {\n if ((nativeProps as any)['aria-labelledby']) {\n ariaLabelledBy = (nativeProps as any)['aria-labelledby'];\n } else if (ariaDescribedBy) {\n ariaLabelledBy = this._hasText() ? _labelId : undefined;\n }\n }\n\n const dataIsFocusable =\n (this.props as any)['data-is-focusable'] === false || (disabled && !allowDisabledFocus) || this._isSplitButton\n ? false\n : true;\n\n const isCheckboxTypeRole = role === 'menuitemcheckbox' || role === 'checkbox';\n // if isCheckboxTypeRole, always return a checked value.\n // Otherwise only return checked value if toggle is set to true.\n // This is because role=\"checkbox\" always needs to have an aria-checked value\n // but our checked prop only sets aria-pressed if we mark the button as a toggle=\"true\"\n const checkedOrPressedValue = isCheckboxTypeRole ? !!checked : toggle === true ? !!checked : undefined;\n\n const buttonProps = assign(nativeProps, {\n className: this._classNames.root,\n // eslint-disable-next-line deprecation/deprecation\n ref: this._mergedRef(this.props.elementRef, this._buttonElement),\n disabled: isPrimaryButtonDisabled && !allowDisabledFocus,\n onKeyDown: this._onKeyDown,\n onKeyPress: this._onKeyPress,\n onKeyUp: this._onKeyUp,\n onMouseDown: this._onMouseDown,\n onMouseUp: this._onMouseUp,\n onClick: this._onClick,\n 'aria-label': resolvedAriaLabel,\n 'aria-labelledby': ariaLabelledBy,\n 'aria-describedby': ariaDescribedBy,\n 'aria-disabled': isPrimaryButtonDisabled,\n 'data-is-focusable': dataIsFocusable,\n // aria-pressed attribute should only be present for toggle buttons\n // aria-checked attribute should only be present for toggle buttons with checkbox type role\n [isCheckboxTypeRole ? 'aria-checked' : 'aria-pressed']: checkedOrPressedValue,\n });\n\n if (ariaHidden) {\n buttonProps['aria-hidden'] = true;\n }\n\n if (this._isSplitButton) {\n return this._onRenderSplitButtonContent(tag, buttonProps);\n } else if (this.props.menuProps) {\n assign(buttonProps, {\n 'aria-expanded': !menuHidden,\n 'aria-owns': !menuHidden ? this._labelId + '-menu' : null,\n 'aria-haspopup': true,\n });\n }\n\n return this._onRenderContent(tag, buttonProps);\n }\n\n public componentDidMount() {\n // For split buttons, touching anywhere in the button should drop the dropdown, which should contain the\n // primary action. This gives more hit target space for touch environments. We're setting the onpointerdown here,\n // because React does not support Pointer events yet.\n if (this._isSplitButton && this._splitButtonContainer.current) {\n if ('onpointerdown' in this._splitButtonContainer.current) {\n this._events.on(this._splitButtonContainer.current, 'pointerdown', this._onPointerDown, true);\n }\n if ('onpointerup' in this._splitButtonContainer.current && this.props.onPointerUp) {\n this._events.on(this._splitButtonContainer.current, 'pointerup', this.props.onPointerUp, true);\n }\n }\n }\n\n public componentDidUpdate(prevProps: IBaseButtonProps, prevState: IBaseButtonState) {\n // If Button's menu was closed, run onAfterMenuDismiss.\n if (this.props.onAfterMenuDismiss && !prevState.menuHidden && this.state.menuHidden) {\n this.props.onAfterMenuDismiss();\n }\n }\n\n public componentWillUnmount(): void {\n this._async.dispose();\n this._events.dispose();\n }\n\n public focus(): void {\n if (this._isSplitButton && this._splitButtonContainer.current) {\n setFocusVisibility(true);\n this._splitButtonContainer.current.focus();\n } else if (this._buttonElement.current) {\n setFocusVisibility(true);\n this._buttonElement.current.focus();\n }\n }\n\n public dismissMenu(): void {\n this._dismissMenu();\n }\n\n public openMenu(shouldFocusOnContainer?: boolean, shouldFocusOnMount?: boolean): void {\n this._openMenu(shouldFocusOnContainer, shouldFocusOnMount);\n }\n\n private _onRenderContent(tag: any, buttonProps: IButtonProps): JSX.Element {\n const props = this.props;\n const Tag = tag;\n const {\n menuIconProps,\n menuProps,\n onRenderIcon = this._onRenderIcon,\n onRenderAriaDescription = this._onRenderAriaDescription,\n onRenderChildren = this._onRenderChildren,\n // eslint-disable-next-line deprecation/deprecation\n onRenderMenu = this._onRenderMenu,\n onRenderMenuIcon = this._onRenderMenuIcon,\n disabled,\n } = props;\n let { keytipProps } = props;\n if (keytipProps && menuProps) {\n keytipProps = this._getMemoizedMenuButtonKeytipProps(keytipProps);\n }\n\n const Button = (keytipAttributes?: any): JSX.Element => (\n <Tag {...buttonProps} {...keytipAttributes}>\n <span className={this._classNames.flexContainer} data-automationid=\"splitbuttonprimary\">\n {onRenderIcon(props, this._onRenderIcon)}\n {this._onRenderTextContents()}\n {onRenderAriaDescription(props, this._onRenderAriaDescription)}\n {onRenderChildren(props, this._onRenderChildren)}\n {!this._isSplitButton &&\n (menuProps || menuIconProps || this.props.onRenderMenuIcon) &&\n onRenderMenuIcon(this.props, this._onRenderMenuIcon)}\n {menuProps &&\n !menuProps.doNotLayer &&\n this._shouldRenderMenu() &&\n onRenderMenu(this._getMenuProps(menuProps), this._onRenderMenu)}\n </span>\n </Tag>\n );\n\n const Content = keytipProps ? (\n // If we're making a split button, we won't put the keytip here\n <KeytipData\n keytipProps={!this._isSplitButton ? keytipProps : undefined}\n ariaDescribedBy={(buttonProps as any)['aria-describedby']}\n disabled={disabled}\n >\n {(keytipAttributes: any): JSX.Element => Button(keytipAttributes)}\n </KeytipData>\n ) : (\n Button()\n );\n\n if (menuProps && menuProps.doNotLayer) {\n return (\n <span style={{ display: 'inline-block' }}>\n {Content}\n {this._shouldRenderMenu() && onRenderMenu(this._getMenuProps(menuProps), this._onRenderMenu)}\n </span>\n );\n }\n\n return (\n <>\n {Content}\n <FocusRects />\n </>\n );\n }\n\n /**\n * Method to help determine if the menu's component tree should\n * be rendered. It takes into account whether the menu is expanded,\n * whether it is a persisted menu and whether it has been shown to the user.\n */\n private _shouldRenderMenu() {\n const { menuHidden } = this.state;\n // eslint-disable-next-line deprecation/deprecation\n const { persistMenu, renderPersistedMenuHiddenOnMount } = this.props;\n\n if (!menuHidden) {\n // Always should render a menu when it is expanded\n return true;\n } else if (persistMenu && (this._renderedVisibleMenu || renderPersistedMenuHiddenOnMount)) {\n // _renderedVisibleMenu ensures that the first rendering of\n // the menu happens on-screen, as edge's scrollbar calculations are off if done while hidden.\n return true;\n }\n\n return false;\n }\n\n private _onRenderIcon = (\n buttonProps?: IButtonProps,\n defaultRender?: IRenderFunction<IButtonProps>,\n ): JSX.Element | null => {\n const { iconProps } = this.props;\n\n if (iconProps && (iconProps.iconName !== undefined || iconProps.imageProps)) {\n const { className, imageProps, ...rest } = iconProps;\n\n // If the styles prop is specified as part of iconProps, fall back to regular Icon as FontIcon and ImageIcon\n // do not have this prop.\n if (iconProps.styles) {\n return <Icon className={css(this._classNames.icon, className)} imageProps={imageProps} {...rest} />;\n }\n if (iconProps.iconName) {\n return <FontIcon className={css(this._classNames.icon, className)} {...rest} />;\n }\n if (imageProps) {\n return <ImageIcon className={css(this._classNames.icon, className)} imageProps={imageProps} {...rest} />;\n }\n }\n return null;\n };\n\n private _onRenderTextContents = (): JSX.Element | (JSX.Element | null)[] => {\n const {\n text,\n children,\n // eslint-disable-next-line deprecation/deprecation\n secondaryText = this.props.description,\n onRenderText = this._onRenderText,\n onRenderDescription = this._onRenderDescription,\n } = this.props;\n\n if (text || typeof children === 'string' || secondaryText) {\n return (\n <span className={this._classNames.textContainer}>\n {onRenderText(this.props, this._onRenderText)}\n {onRenderDescription(this.props, this._onRenderDescription)}\n </span>\n );\n }\n return [onRenderText(this.props, this._onRenderText), onRenderDescription(this.props, this._onRenderDescription)];\n };\n\n private _onRenderText = (): JSX.Element | null => {\n let { text } = this.props;\n const { children } = this.props;\n\n // For backwards compat, we should continue to take in the text content from children.\n if (text === undefined && typeof children === 'string') {\n text = children;\n }\n\n if (this._hasText()) {\n return (\n <span key={this._labelId} className={this._classNames.label} id={this._labelId}>\n {text}\n </span>\n );\n }\n\n return null;\n };\n\n private _hasText(): boolean {\n // _onRenderTextContents and _onRenderText do not perform the same checks. Below is parity with what _onRenderText\n // used to have before the refactor that introduced this function. _onRenderTextContents does not require props.\n // text to be undefined in order for props.children to be used as a fallback.\n // Purely a code maintainability/reuse issue, but logged as Issue #4979.\n return this.props.text !== null && (this.props.text !== undefined || typeof this.props.children === 'string');\n }\n\n private _onRenderChildren = (): JSX.Element | null => {\n const { children } = this.props;\n\n // If children is just a string, either it or the text will be rendered via onRenderLabel\n // If children is another component, it will be rendered after text\n if (typeof children === 'string') {\n return null;\n }\n\n return children as any;\n };\n\n private _onRenderDescription = (props: IButtonProps) => {\n // eslint-disable-next-line deprecation/deprecation\n const { secondaryText = this.props.description } = props;\n\n // ms-Button-description is only shown when the button type is compound.\n // In other cases it will not be displayed.\n return secondaryText ? (\n <span key={this._descriptionId} className={this._classNames.description} id={this._descriptionId}>\n {secondaryText}\n </span>\n ) : null;\n };\n\n private _onRenderAriaDescription = () => {\n const { ariaDescription } = this.props;\n\n // If ariaDescription is given, descriptionId will be assigned to ariaDescriptionSpan,\n // otherwise it will be assigned to descriptionSpan.\n return ariaDescription ? (\n <span className={this._classNames.screenReaderText} id={this._ariaDescriptionId}>\n {ariaDescription}\n </span>\n ) : null;\n };\n\n private _onRenderMenuIcon = (props: IButtonProps): JSX.Element | null => {\n const { menuIconProps } = this.props;\n\n return <FontIcon iconName=\"ChevronDown\" {...menuIconProps} className={this._classNames.menuIcon} />;\n };\n\n private _getMenuProps(menuProps: IContextualMenuProps): IContextualMenuProps {\n const { persistMenu } = this.props;\n const { menuHidden } = this.state;\n\n // the accessible menu label (accessible name) has a relationship to the button.\n // If the menu props do not specify an explicit value for aria-label or aria-labelledBy,\n // AND the button has text, we'll set the menu aria-labelledBy to the text element id.\n if (!menuProps.ariaLabel && !menuProps.labelElementId && this._hasText()) {\n menuProps = { ...menuProps, labelElementId: this._labelId };\n }\n\n return {\n id: this._labelId + '-menu',\n directionalHint: DirectionalHint.bottomLeftEdge,\n ...menuProps,\n shouldFocusOnContainer: this._menuShouldFocusOnContainer,\n shouldFocusOnMount: this._menuShouldFocusOnMount,\n hidden: persistMenu ? menuHidden : undefined,\n className: css('ms-BaseButton-menuhost', menuProps.className),\n target: this._isSplitButton ? this._splitButtonContainer.current : this._buttonElement.current,\n onDismiss: this._onDismissMenu,\n };\n }\n\n private _onRenderMenu = (menuProps: IContextualMenuProps): JSX.Element => {\n const MenuType = this.props.menuAs ? composeComponentAs(this.props.menuAs, ContextualMenu) : ContextualMenu;\n\n return <MenuType {...menuProps} />;\n };\n\n private _onDismissMenu: IContextualMenuProps['onDismiss'] = ev => {\n const { menuProps } = this.props;\n\n if (menuProps && menuProps.onDismiss) {\n menuProps.onDismiss(ev);\n }\n if (!ev || !ev.defaultPrevented) {\n this._dismissMenu();\n }\n };\n\n private _dismissMenu = (): void => {\n this._menuShouldFocusOnMount = undefined;\n this._menuShouldFocusOnContainer = undefined;\n this.setState({ menuHidden: true });\n };\n\n private _openMenu = (shouldFocusOnContainer?: boolean, shouldFocusOnMount: boolean = true): void => {\n if (this.props.menuProps) {\n this._menuShouldFocusOnContainer = shouldFocusOnContainer;\n this._menuShouldFocusOnMount = shouldFocusOnMount;\n this._renderedVisibleMenu = true;\n this.setState({ menuHidden: false });\n }\n };\n\n private _onToggleMenu = (shouldFocusOnContainer: boolean): void => {\n let shouldFocusOnMount = true;\n if (this.props.menuProps && this.props.menuProps.shouldFocusOnMount === false) {\n shouldFocusOnMount = false;\n }\n\n this.state.menuHidden ? this._openMenu(shouldFocusOnContainer, shouldFocusOnMount) : this._dismissMenu();\n };\n\n private _onRenderSplitButtonContent(tag: any, buttonProps: IButtonProps): JSX.Element {\n const {\n styles = {},\n disabled,\n allowDisabledFocus,\n checked,\n getSplitButtonClassNames,\n primaryDisabled,\n menuProps,\n toggle,\n role,\n primaryActionButtonProps,\n } = this.props;\n let { keytipProps } = this.props;\n const { menuHidden } = this.state;\n\n const classNames = getSplitButtonClassNames\n ? getSplitButtonClassNames(!!disabled, !menuHidden, !!checked, !!allowDisabledFocus)\n : styles && getBaseSplitButtonClassNames(styles!, !!disabled, !menuHidden, !!checked, !!primaryDisabled);\n\n assign(buttonProps, {\n onClick: undefined,\n onPointerDown: undefined,\n onPointerUp: undefined,\n tabIndex: -1,\n 'data-is-focusable': false,\n });\n\n if (keytipProps && menuProps) {\n keytipProps = this._getMemoizedMenuButtonKeytipProps(keytipProps);\n }\n\n const containerProps = getNativeProps<React.HTMLAttributes<HTMLSpanElement>>(buttonProps, [], ['disabled']);\n\n // Add additional props to apply on primary action button\n if (primaryActionButtonProps) {\n assign(buttonProps, primaryActionButtonProps);\n }\n\n const SplitButton = (keytipAttributes?: any): JSX.Element => (\n <div\n {...containerProps}\n data-ktp-target={keytipAttributes ? keytipAttributes['data-ktp-target'] : undefined}\n role={role ? role : 'button'}\n aria-disabled={disabled}\n aria-haspopup={true}\n aria-expanded={!menuHidden}\n aria-pressed={toggle ? !!checked : undefined} // should only be present for toggle buttons\n aria-describedby={mergeAriaAttributeValues(\n buttonProps['aria-describedby'],\n keytipAttributes ? keytipAttributes['aria-describedby'] : undefined,\n )}\n className={classNames && classNames.splitButtonContainer}\n onKeyDown={this._onSplitButtonContainerKeyDown}\n onTouchStart={this._onTouchStart}\n ref={this._splitButtonContainer}\n data-is-focusable={true}\n onClick={!disabled && !primaryDisabled ? this._onSplitButtonPrimaryClick : undefined}\n tabIndex={(!disabled && !primaryDisabled) || allowDisabledFocus ? 0 : undefined}\n aria-roledescription={buttonProps['aria-roledescription']}\n onFocusCapture={this._onSplitContainerFocusCapture}\n >\n <span style={{ display: 'flex' }}>\n {this._onRenderContent(tag, buttonProps)}\n {this._onRenderSplitButtonMenuButton(classNames, keytipAttributes)}\n {this._onRenderSplitButtonDivider(classNames)}\n </span>\n </div>\n );\n\n return keytipProps ? (\n <KeytipData keytipProps={keytipProps} disabled={disabled}>\n {(keytipAttributes: any): JSX.Element => SplitButton(keytipAttributes)}\n </KeytipData>\n ) : (\n SplitButton()\n );\n }\n\n private _onSplitContainerFocusCapture = (ev: React.FocusEvent<HTMLDivElement>) => {\n const container = this._splitButtonContainer.current;\n\n // If the target is coming from the portal we do not need to set focus on the container.\n if (!container || (ev.target && portalContainsElement(ev.target, container))) {\n return;\n }\n\n // We should never be able to focus the individual buttons in a split button. Focus\n // should always remain on the container.\n container.focus();\n };\n\n private _onSplitButtonPrimaryClick = (ev: React.MouseEvent<HTMLDivElement>) => {\n if (!this.state.menuHidden) {\n this._dismissMenu();\n }\n\n if (!this._processingTouch && this.props.onClick) {\n this.props.onClick(ev);\n } else if (this._processingTouch) {\n this._onMenuClick(ev);\n }\n };\n\n private _onRenderSplitButtonDivider(classNames: ISplitButtonClassNames | undefined): JSX.Element | null {\n if (classNames && classNames.divider) {\n const onClick = (ev: React.MouseEvent<HTMLSpanElement, MouseEvent>) => {\n ev.stopPropagation();\n };\n return <span className={classNames.divider} aria-hidden={true} onClick={onClick} />;\n }\n return null;\n }\n\n private _onRenderSplitButtonMenuButton(\n classNames: ISplitButtonClassNames | undefined,\n keytipAttributes: any,\n ): JSX.Element {\n const {\n allowDisabledFocus,\n checked,\n disabled,\n splitButtonMenuProps,\n splitButtonAriaLabel,\n primaryDisabled,\n } = this.props;\n const { menuHidden } = this.state;\n let menuIconProps = this.props.menuIconProps;\n\n if (menuIconProps === undefined) {\n menuIconProps = {\n iconName: 'ChevronDown',\n };\n }\n\n const splitButtonProps = {\n ...splitButtonMenuProps,\n styles: classNames,\n checked: checked,\n disabled: disabled,\n allowDisabledFocus: allowDisabledFocus,\n onClick: this._onMenuClick,\n menuProps: undefined,\n iconProps: { ...menuIconProps, className: this._classNames.menuIcon },\n ariaLabel: splitButtonAriaLabel,\n 'aria-haspopup': true,\n 'aria-expanded': !menuHidden,\n 'data-is-focusable': false,\n };\n\n // Add data-ktp-execute-target to the split button if the keytip is defined\n return (\n <BaseButton\n {...splitButtonProps}\n data-ktp-execute-target={keytipAttributes ? keytipAttributes['data-ktp-execute-target'] : keytipAttributes}\n onMouseDown={this._onMouseDown}\n tabIndex={primaryDisabled && !allowDisabledFocus ? 0 : -1}\n />\n );\n }\n\n private _onKeyDown = (ev: React.KeyboardEvent<HTMLDivElement | HTMLAnchorElement | HTMLButtonElement>) => {\n // explicity cancelling event so click won't fire after this\n if (this.props.disabled && (ev.which === KeyCodes.enter || ev.which === KeyCodes.space)) {\n ev.preventDefault();\n ev.stopPropagation();\n } else if (!this.props.disabled) {\n if (this.props.menuProps) {\n this._onMenuKeyDown(ev);\n } else if (this.props.onKeyDown !== undefined) {\n this.props.onKeyDown(ev); // not cancelling event because it's not disabled\n }\n }\n };\n\n private _onKeyUp = (\n ev: React.KeyboardEvent<HTMLDivElement | HTMLAnchorElement | HTMLButtonElement | HTMLSpanElement>,\n ) => {\n if (!this.props.disabled && this.props.onKeyUp !== undefined) {\n this.props.onKeyUp(ev); // not cancelling event because it's not disabled\n }\n };\n\n private _onKeyPress = (\n ev: React.KeyboardEvent<HTMLDivElement | HTMLAnchorElement | HTMLButtonElement | HTMLSpanElement>,\n ) => {\n if (!this.props.disabled && this.props.onKeyPress !== undefined) {\n this.props.onKeyPress(ev); // not cancelling event because it's not disabled\n }\n };\n\n private _onMouseUp = (\n ev: React.MouseEvent<HTMLDivElement | HTMLAnchorElement | HTMLButtonElement | HTMLSpanElement>,\n ) => {\n if (!this.props.disabled && this.props.onMouseUp !== undefined) {\n this.props.onMouseUp(ev); // not cancelling event because it's not disabled\n }\n };\n\n private _onMouseDown = (\n ev: React.MouseEvent<HTMLDivElement | HTMLAnchorElement | HTMLButtonElement | HTMLSpanElement>,\n ) => {\n if (!this.props.disabled && this.props.onMouseDown !== undefined) {\n this.props.onMouseDown(ev); // not cancelling event because it's not disabled\n }\n };\n\n private _onClick = (\n ev: React.MouseEvent<HTMLDivElement | HTMLAnchorElement | HTMLButtonElement | HTMLSpanElement>,\n ) => {\n if (!this.props.disabled) {\n if (this.props.menuProps) {\n this._onMenuClick(ev);\n } else if (this.props.onClick !== undefined) {\n this.props.onClick(ev); // not cancelling event because it's not disabled\n }\n }\n };\n\n private _onSplitButtonContainerKeyDown = (ev: React.KeyboardEvent<HTMLDivElement>) => {\n if (ev.which === KeyCodes.enter || ev.which === KeyCodes.space) {\n if (this._buttonElement.current) {\n this._buttonElement.current.click();\n ev.preventDefault();\n ev.stopPropagation();\n }\n } else {\n this._onMenuKeyDown(ev);\n }\n };\n\n private _onMenuKeyDown = (ev: React.KeyboardEvent<HTMLDivElement | HTMLAnchorElement | HTMLButtonElement>) => {\n if (this.props.disabled) {\n return;\n }\n\n if (this.props.onKeyDown) {\n this.props.onKeyDown(ev);\n }\n\n const isUp = ev.which === KeyCodes.up;\n const isDown = ev.which === KeyCodes.down;\n\n if (!ev.defaultPrevented && this._isValidMenuOpenKey(ev)) {\n const { onMenuClick } = this.props;\n if (onMenuClick) {\n onMenuClick(ev, this.props);\n }\n\n this._onToggleMenu(false);\n ev.preventDefault();\n ev.stopPropagation();\n }\n\n if (ev.which === KeyCodes.enter || ev.which === KeyCodes.space) {\n // We manually set the focus visibility to true if opening via Enter or Space to account for the scenario where\n // a user clicks on the button, closes the menu and then opens it via keyboard. In this scenario our default logic\n // for setting focus visibility is not triggered since there is no keyboard navigation present beforehand.\n setFocusVisibility(true, ev.target as Element);\n }\n\n if (!(ev.altKey || ev.metaKey) && (isUp || isDown)) {\n // Suppose a menu, with shouldFocusOnMount: false, is open, and user wants to keyboard to the menu items\n // We need to re-render the menu with shouldFocusOnMount as true.\n\n if (!this.state.menuHidden && this.props.menuProps) {\n const currentShouldFocusOnMount =\n this._menuShouldFocusOnMount !== undefined\n ? this._menuShouldFocusOnMount\n : this.props.menuProps.shouldFocusOnMount;\n if (!currentShouldFocusOnMount) {\n ev.preventDefault();\n ev.stopPropagation();\n this._menuShouldFocusOnMount = true;\n this.forceUpdate();\n }\n }\n }\n };\n\n private _onTouchStart: () => void = () => {\n if (\n this._isSplitButton &&\n this._splitButtonContainer.current &&\n !('onpointerdown' in this._splitButtonContainer.current)\n ) {\n this._handleTouchAndPointerEvent();\n }\n };\n\n private _onPointerDown(\n ev: PointerEvent &\n React.PointerEvent<HTMLAnchorElement | HTMLButtonElement | HTMLDivElement | BaseButton | HTMLSpanElement>,\n ) {\n const { onPointerDown } = this.props;\n if (onPointerDown) {\n onPointerDown(ev);\n }\n\n if (ev.pointerType === 'touch') {\n this._handleTouchAndPointerEvent();\n\n ev.preventDefault();\n ev.stopImmediatePropagation();\n }\n }\n\n private _handleTouchAndPointerEvent() {\n // If we already have an existing timeout from a previous touch and pointer event\n // cancel that timeout so we can set a new one.\n if (this._lastTouchTimeoutId !== undefined) {\n this._async.clearTimeout(this._lastTouchTimeoutId);\n this._lastTouchTimeoutId = undefined;\n }\n this._processingTouch = true;\n\n this._lastTouchTimeoutId = this._async.setTimeout(() => {\n this._processingTouch = false;\n this._lastTouchTimeoutId = undefined;\n\n // Touch and pointer events don't focus the button naturally,\n // so adding an imperative focus call to guarantee this behavior.\n this.focus();\n }, TouchIdleDelay);\n }\n\n /**\n * Returns if the user hits a valid keyboard key to open the menu\n * @param ev - the keyboard event\n * @returns True if user clicks on custom trigger key if enabled or alt + down arrow if not. False otherwise.\n */\n private _isValidMenuOpenKey(\n ev: React.KeyboardEvent<HTMLDivElement | HTMLAnchorElement | HTMLButtonElement>,\n ): boolean {\n if (this.props.menuTriggerKeyCode) {\n return ev.which === this.props.menuTriggerKeyCode;\n } else if (this.props.menuProps) {\n return ev.which === KeyCodes.down && (ev.altKey || ev.metaKey);\n }\n\n // Note: When enter is pressed, we will let the event continue to propagate\n // to trigger the onClick event on the button\n return false;\n }\n\n private _onMenuClick = (\n ev: React.MouseEvent<HTMLDivElement | HTMLButtonElement | HTMLAnchorElement | HTMLSpanElement>,\n ) => {\n const { onMenuClick } = this.props;\n if (onMenuClick) {\n onMenuClick(ev, this.props);\n }\n\n if (!ev.defaultPrevented) {\n // When Edge + Narrator are used together (regardless of if the button is in a form or not), pressing\n // \"Enter\" fires this method and not _onMenuKeyDown. Checking ev.nativeEvent.detail differentiates\n // between a real click event and a keypress event (detail should be the number of mouse clicks).\n // ...Plot twist! For a real click event in IE 11, detail is always 0 (Edge sets it properly to 1).\n // So we also check the pointerType property, which both Edge and IE set to \"mouse\" for real clicks\n // and \"\" for pressing \"Enter\" with Narrator on.\n const shouldFocusOnContainer =\n ev.nativeEvent.detail !== 0 || (ev.nativeEvent as PointerEvent).pointerType === 'mouse';\n this._onToggleMenu(shouldFocusOnContainer);\n ev.preventDefault();\n ev.stopPropagation();\n }\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n 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 function __createBinding(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, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = 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\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","import * as React from 'react';\nimport { ICustomizations } from './Customizations';\n\nexport interface ICustomizerContext {\n customizations: ICustomizations;\n}\n\nexport const CustomizerContext = React.createContext<ICustomizerContext>({\n customizations: {\n inCustomizerContext: false,\n settings: {},\n scopedSettings: {},\n },\n});\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","//! moment.js\n//! version : 2.30.1\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n global.moment = factory()\n}(this, (function () { 'use strict';\n\n var hookCallback;\n\n function hooks() {\n return hookCallback.apply(null, arguments);\n }\n\n // This is done to register the method called with moment()\n // without creating circular dependencies.\n function setHookCallback(callback) {\n hookCallback = callback;\n }\n\n function isArray(input) {\n return (\n input instanceof Array ||\n Object.prototype.toString.call(input) === '[object Array]'\n );\n }\n\n function isObject(input) {\n // IE8 will treat undefined and null as object if it wasn't for\n // input != null\n return (\n input != null &&\n Object.prototype.toString.call(input) === '[object Object]'\n );\n }\n\n function hasOwnProp(a, b) {\n return Object.prototype.hasOwnProperty.call(a, b);\n }\n\n function isObjectEmpty(obj) {\n if (Object.getOwnPropertyNames) {\n return Object.getOwnPropertyNames(obj).length === 0;\n } else {\n var k;\n for (k in obj) {\n if (hasOwnProp(obj, k)) {\n return false;\n }\n }\n return true;\n }\n }\n\n function isUndefined(input) {\n return input === void 0;\n }\n\n function isNumber(input) {\n return (\n typeof input === 'number' ||\n Object.prototype.toString.call(input) === '[object Number]'\n );\n }\n\n function isDate(input) {\n return (\n input instanceof Date ||\n Object.prototype.toString.call(input) === '[object Date]'\n );\n }\n\n function map(arr, fn) {\n var res = [],\n i,\n arrLen = arr.length;\n for (i = 0; i < arrLen; ++i) {\n res.push(fn(arr[i], i));\n }\n return res;\n }\n\n function extend(a, b) {\n for (var i in b) {\n if (hasOwnProp(b, i)) {\n a[i] = b[i];\n }\n }\n\n if (hasOwnProp(b, 'toString')) {\n a.toString = b.toString;\n }\n\n if (hasOwnProp(b, 'valueOf')) {\n a.valueOf = b.valueOf;\n }\n\n return a;\n }\n\n function createUTC(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, true).utc();\n }\n\n function defaultParsingFlags() {\n // We need to deep clone this object.\n return {\n empty: false,\n unusedTokens: [],\n unusedInput: [],\n overflow: -2,\n charsLeftOver: 0,\n nullInput: false,\n invalidEra: null,\n invalidMonth: null,\n invalidFormat: false,\n userInvalidated: false,\n iso: false,\n parsedDateParts: [],\n era: null,\n meridiem: null,\n rfc2822: false,\n weekdayMismatch: false,\n };\n }\n\n function getParsingFlags(m) {\n if (m._pf == null) {\n m._pf = defaultParsingFlags();\n }\n return m._pf;\n }\n\n var some;\n if (Array.prototype.some) {\n some = Array.prototype.some;\n } else {\n some = function (fun) {\n var t = Object(this),\n len = t.length >>> 0,\n i;\n\n for (i = 0; i < len; i++) {\n if (i in t && fun.call(this, t[i], i, t)) {\n return true;\n }\n }\n\n return false;\n };\n }\n\n function isValid(m) {\n var flags = null,\n parsedParts = false,\n isNowValid = m._d && !isNaN(m._d.getTime());\n if (isNowValid) {\n flags = getParsingFlags(m);\n parsedParts = some.call(flags.parsedDateParts, function (i) {\n return i != null;\n });\n isNowValid =\n flags.overflow < 0 &&\n !flags.empty &&\n !flags.invalidEra &&\n !flags.invalidMonth &&\n !flags.invalidWeekday &&\n !flags.weekdayMismatch &&\n !flags.nullInput &&\n !flags.invalidFormat &&\n !flags.userInvalidated &&\n (!flags.meridiem || (flags.meridiem && parsedParts));\n if (m._strict) {\n isNowValid =\n isNowValid &&\n flags.charsLeftOver === 0 &&\n flags.unusedTokens.length === 0 &&\n flags.bigHour === undefined;\n }\n }\n if (Object.isFrozen == null || !Object.isFrozen(m)) {\n m._isValid = isNowValid;\n } else {\n return isNowValid;\n }\n return m._isValid;\n }\n\n function createInvalid(flags) {\n var m = createUTC(NaN);\n if (flags != null) {\n extend(getParsingFlags(m), flags);\n } else {\n getParsingFlags(m).userInvalidated = true;\n }\n\n return m;\n }\n\n // Plugins that add properties should also add the key here (null value),\n // so we can properly clone ourselves.\n var momentProperties = (hooks.momentProperties = []),\n updateInProgress = false;\n\n function copyConfig(to, from) {\n var i,\n prop,\n val,\n momentPropertiesLen = momentProperties.length;\n\n if (!isUndefined(from._isAMomentObject)) {\n to._isAMomentObject = from._isAMomentObject;\n }\n if (!isUndefined(from._i)) {\n to._i = from._i;\n }\n if (!isUndefined(from._f)) {\n to._f = from._f;\n }\n if (!isUndefined(from._l)) {\n to._l = from._l;\n }\n if (!isUndefined(from._strict)) {\n to._strict = from._strict;\n }\n if (!isUndefined(from._tzm)) {\n to._tzm = from._tzm;\n }\n if (!isUndefined(from._isUTC)) {\n to._isUTC = from._isUTC;\n }\n if (!isUndefined(from._offset)) {\n to._offset = from._offset;\n }\n if (!isUndefined(from._pf)) {\n to._pf = getParsingFlags(from);\n }\n if (!isUndefined(from._locale)) {\n to._locale = from._locale;\n }\n\n if (momentPropertiesLen > 0) {\n for (i = 0; i < momentPropertiesLen; i++) {\n prop = momentProperties[i];\n val = from[prop];\n if (!isUndefined(val)) {\n to[prop] = val;\n }\n }\n }\n\n return to;\n }\n\n // Moment prototype object\n function Moment(config) {\n copyConfig(this, config);\n this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n if (!this.isValid()) {\n this._d = new Date(NaN);\n }\n // Prevent infinite loop in case updateOffset creates new moment\n // objects.\n if (updateInProgress === false) {\n updateInProgress = true;\n hooks.updateOffset(this);\n updateInProgress = false;\n }\n }\n\n function isMoment(obj) {\n return (\n obj instanceof Moment || (obj != null && obj._isAMomentObject != null)\n );\n }\n\n function warn(msg) {\n if (\n hooks.suppressDeprecationWarnings === false &&\n typeof console !== 'undefined' &&\n console.warn\n ) {\n console.warn('Deprecation warning: ' + msg);\n }\n }\n\n function deprecate(msg, fn) {\n var firstTime = true;\n\n return extend(function () {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(null, msg);\n }\n if (firstTime) {\n var args = [],\n arg,\n i,\n key,\n argLen = arguments.length;\n for (i = 0; i < argLen; i++) {\n arg = '';\n if (typeof arguments[i] === 'object') {\n arg += '\\n[' + i + '] ';\n for (key in arguments[0]) {\n if (hasOwnProp(arguments[0], key)) {\n arg += key + ': ' + arguments[0][key] + ', ';\n }\n }\n arg = arg.slice(0, -2); // Remove trailing comma and space\n } else {\n arg = arguments[i];\n }\n args.push(arg);\n }\n warn(\n msg +\n '\\nArguments: ' +\n Array.prototype.slice.call(args).join('') +\n '\\n' +\n new Error().stack\n );\n firstTime = false;\n }\n return fn.apply(this, arguments);\n }, fn);\n }\n\n var deprecations = {};\n\n function deprecateSimple(name, msg) {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(name, msg);\n }\n if (!deprecations[name]) {\n warn(msg);\n deprecations[name] = true;\n }\n }\n\n hooks.suppressDeprecationWarnings = false;\n hooks.deprecationHandler = null;\n\n function isFunction(input) {\n return (\n (typeof Function !== 'undefined' && input instanceof Function) ||\n Object.prototype.toString.call(input) === '[object Function]'\n );\n }\n\n function set(config) {\n var prop, i;\n for (i in config) {\n if (hasOwnProp(config, i)) {\n prop = config[i];\n if (isFunction(prop)) {\n this[i] = prop;\n } else {\n this['_' + i] = prop;\n }\n }\n }\n this._config = config;\n // Lenient ordinal parsing accepts just a number in addition to\n // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n this._dayOfMonthOrdinalParseLenient = new RegExp(\n (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n '|' +\n /\\d{1,2}/.source\n );\n }\n\n function mergeConfigs(parentConfig, childConfig) {\n var res = extend({}, parentConfig),\n prop;\n for (prop in childConfig) {\n if (hasOwnProp(childConfig, prop)) {\n if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n res[prop] = {};\n extend(res[prop], parentConfig[prop]);\n extend(res[prop], childConfig[prop]);\n } else if (childConfig[prop] != null) {\n res[prop] = childConfig[prop];\n } else {\n delete res[prop];\n }\n }\n }\n for (prop in parentConfig) {\n if (\n hasOwnProp(parentConfig, prop) &&\n !hasOwnProp(childConfig, prop) &&\n isObject(parentConfig[prop])\n ) {\n // make sure changes to properties don't modify parent config\n res[prop] = extend({}, res[prop]);\n }\n }\n return res;\n }\n\n function Locale(config) {\n if (config != null) {\n this.set(config);\n }\n }\n\n var keys;\n\n if (Object.keys) {\n keys = Object.keys;\n } else {\n keys = function (obj) {\n var i,\n res = [];\n for (i in obj) {\n if (hasOwnProp(obj, i)) {\n res.push(i);\n }\n }\n return res;\n };\n }\n\n var defaultCalendar = {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n };\n\n function calendar(key, mom, now) {\n var output = this._calendar[key] || this._calendar['sameElse'];\n return isFunction(output) ? output.call(mom, now) : output;\n }\n\n function zeroFill(number, targetLength, forceSign) {\n var absNumber = '' + Math.abs(number),\n zerosToFill = targetLength - absNumber.length,\n sign = number >= 0;\n return (\n (sign ? (forceSign ? '+' : '') : '-') +\n Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +\n absNumber\n );\n }\n\n var formattingTokens =\n /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,\n localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,\n formatFunctions = {},\n formatTokenFunctions = {};\n\n // token: 'M'\n // padded: ['MM', 2]\n // ordinal: 'Mo'\n // callback: function () { this.month() + 1 }\n function addFormatToken(token, padded, ordinal, callback) {\n var func = callback;\n if (typeof callback === 'string') {\n func = function () {\n return this[callback]();\n };\n }\n if (token) {\n formatTokenFunctions[token] = func;\n }\n if (padded) {\n formatTokenFunctions[padded[0]] = function () {\n return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n };\n }\n if (ordinal) {\n formatTokenFunctions[ordinal] = function () {\n return this.localeData().ordinal(\n func.apply(this, arguments),\n token\n );\n };\n }\n }\n\n function removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\n return input.replace(/\\\\/g, '');\n }\n\n function makeFormatFunction(format) {\n var array = format.match(formattingTokens),\n i,\n length;\n\n for (i = 0, length = array.length; i < length; i++) {\n if (formatTokenFunctions[array[i]]) {\n array[i] = formatTokenFunctions[array[i]];\n } else {\n array[i] = removeFormattingTokens(array[i]);\n }\n }\n\n return function (mom) {\n var output = '',\n i;\n for (i = 0; i < length; i++) {\n output += isFunction(array[i])\n ? array[i].call(mom, format)\n : array[i];\n }\n return output;\n };\n }\n\n // format date using native date object\n function formatMoment(m, format) {\n if (!m.isValid()) {\n return m.localeData().invalidDate();\n }\n\n format = expandFormat(format, m.localeData());\n formatFunctions[format] =\n formatFunctions[format] || makeFormatFunction(format);\n\n return formatFunctions[format](m);\n }\n\n function expandFormat(format, locale) {\n var i = 5;\n\n function replaceLongDateFormatTokens(input) {\n return locale.longDateFormat(input) || input;\n }\n\n localFormattingTokens.lastIndex = 0;\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(\n localFormattingTokens,\n replaceLongDateFormatTokens\n );\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n\n return format;\n }\n\n var defaultLongDateFormat = {\n LTS: 'h:mm:ss A',\n LT: 'h:mm A',\n L: 'MM/DD/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A',\n };\n\n function longDateFormat(key) {\n var format = this._longDateFormat[key],\n formatUpper = this._longDateFormat[key.toUpperCase()];\n\n if (format || !formatUpper) {\n return format;\n }\n\n this._longDateFormat[key] = formatUpper\n .match(formattingTokens)\n .map(function (tok) {\n if (\n tok === 'MMMM' ||\n tok === 'MM' ||\n tok === 'DD' ||\n tok === 'dddd'\n ) {\n return tok.slice(1);\n }\n return tok;\n })\n .join('');\n\n return this._longDateFormat[key];\n }\n\n var defaultInvalidDate = 'Invalid date';\n\n function invalidDate() {\n return this._invalidDate;\n }\n\n var defaultOrdinal = '%d',\n defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n function ordinal(number) {\n return this._ordinal.replace('%d', number);\n }\n\n var defaultRelativeTime = {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n w: 'a week',\n ww: '%d weeks',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n };\n\n function relativeTime(number, withoutSuffix, string, isFuture) {\n var output = this._relativeTime[string];\n return isFunction(output)\n ? output(number, withoutSuffix, string, isFuture)\n : output.replace(/%d/i, number);\n }\n\n function pastFuture(diff, output) {\n var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n }\n\n var aliases = {\n D: 'date',\n dates: 'date',\n date: 'date',\n d: 'day',\n days: 'day',\n day: 'day',\n e: 'weekday',\n weekdays: 'weekday',\n weekday: 'weekday',\n E: 'isoWeekday',\n isoweekdays: 'isoWeekday',\n isoweekday: 'isoWeekday',\n DDD: 'dayOfYear',\n dayofyears: 'dayOfYear',\n dayofyear: 'dayOfYear',\n h: 'hour',\n hours: 'hour',\n hour: 'hour',\n ms: 'millisecond',\n milliseconds: 'millisecond',\n millisecond: 'millisecond',\n m: 'minute',\n minutes: 'minute',\n minute: 'minute',\n M: 'month',\n months: 'month',\n month: 'month',\n Q: 'quarter',\n quarters: 'quarter',\n quarter: 'quarter',\n s: 'second',\n seconds: 'second',\n second: 'second',\n gg: 'weekYear',\n weekyears: 'weekYear',\n weekyear: 'weekYear',\n GG: 'isoWeekYear',\n isoweekyears: 'isoWeekYear',\n isoweekyear: 'isoWeekYear',\n w: 'week',\n weeks: 'week',\n week: 'week',\n W: 'isoWeek',\n isoweeks: 'isoWeek',\n isoweek: 'isoWeek',\n y: 'year',\n years: 'year',\n year: 'year',\n };\n\n function normalizeUnits(units) {\n return typeof units === 'string'\n ? aliases[units] || aliases[units.toLowerCase()]\n : undefined;\n }\n\n function normalizeObjectUnits(inputObject) {\n var normalizedInput = {},\n normalizedProp,\n prop;\n\n for (prop in inputObject) {\n if (hasOwnProp(inputObject, prop)) {\n normalizedProp = normalizeUnits(prop);\n if (normalizedProp) {\n normalizedInput[normalizedProp] = inputObject[prop];\n }\n }\n }\n\n return normalizedInput;\n }\n\n var priorities = {\n date: 9,\n day: 11,\n weekday: 11,\n isoWeekday: 11,\n dayOfYear: 4,\n hour: 13,\n millisecond: 16,\n minute: 14,\n month: 8,\n quarter: 7,\n second: 15,\n weekYear: 1,\n isoWeekYear: 1,\n week: 5,\n isoWeek: 5,\n year: 1,\n };\n\n function getPrioritizedUnits(unitsObj) {\n var units = [],\n u;\n for (u in unitsObj) {\n if (hasOwnProp(unitsObj, u)) {\n units.push({ unit: u, priority: priorities[u] });\n }\n }\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n return units;\n }\n\n var match1 = /\\d/, // 0 - 9\n match2 = /\\d\\d/, // 00 - 99\n match3 = /\\d{3}/, // 000 - 999\n match4 = /\\d{4}/, // 0000 - 9999\n match6 = /[+-]?\\d{6}/, // -999999 - 999999\n match1to2 = /\\d\\d?/, // 0 - 99\n match3to4 = /\\d\\d\\d\\d?/, // 999 - 9999\n match5to6 = /\\d\\d\\d\\d\\d\\d?/, // 99999 - 999999\n match1to3 = /\\d{1,3}/, // 0 - 999\n match1to4 = /\\d{1,4}/, // 0 - 9999\n match1to6 = /[+-]?\\d{1,6}/, // -999999 - 999999\n matchUnsigned = /\\d+/, // 0 - inf\n matchSigned = /[+-]?\\d+/, // -inf - inf\n matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi, // +00:00 -00:00 +0000 -0000 or Z\n matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/, // 123456789 123456789.123\n // any word (or two) characters or numbers including two/three word month in arabic.\n // includes scottish gaelic two word and hyphenated months\n matchWord =\n /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i,\n match1to2NoLeadingZero = /^[1-9]\\d?/, // 1-99\n match1to2HasZero = /^([1-9]\\d|\\d)/, // 0-99\n regexes;\n\n regexes = {};\n\n function addRegexToken(token, regex, strictRegex) {\n regexes[token] = isFunction(regex)\n ? regex\n : function (isStrict, localeData) {\n return isStrict && strictRegex ? strictRegex : regex;\n };\n }\n\n function getParseRegexForToken(token, config) {\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\n }\n\n return regexes[token](config._strict, config._locale);\n }\n\n // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n function unescapeFormat(s) {\n return regexEscape(\n s\n .replace('\\\\', '')\n .replace(\n /\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g,\n function (matched, p1, p2, p3, p4) {\n return p1 || p2 || p3 || p4;\n }\n )\n );\n }\n\n function regexEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n\n function absFloor(number) {\n if (number < 0) {\n // -0 -> 0\n return Math.ceil(number) || 0;\n } else {\n return Math.floor(number);\n }\n }\n\n function toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n\n return value;\n }\n\n var tokens = {};\n\n function addParseToken(token, callback) {\n var i,\n func = callback,\n tokenLen;\n if (typeof token === 'string') {\n token = [token];\n }\n if (isNumber(callback)) {\n func = function (input, array) {\n array[callback] = toInt(input);\n };\n }\n tokenLen = token.length;\n for (i = 0; i < tokenLen; i++) {\n tokens[token[i]] = func;\n }\n }\n\n function addWeekParseToken(token, callback) {\n addParseToken(token, function (input, array, config, token) {\n config._w = config._w || {};\n callback(input, config._w, config, token);\n });\n }\n\n function addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n }\n\n function isLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n }\n\n var YEAR = 0,\n MONTH = 1,\n DATE = 2,\n HOUR = 3,\n MINUTE = 4,\n SECOND = 5,\n MILLISECOND = 6,\n WEEK = 7,\n WEEKDAY = 8;\n\n // FORMATTING\n\n addFormatToken('Y', 0, 0, function () {\n var y = this.year();\n return y <= 9999 ? zeroFill(y, 4) : '+' + y;\n });\n\n addFormatToken(0, ['YY', 2], 0, function () {\n return this.year() % 100;\n });\n\n addFormatToken(0, ['YYYY', 4], 0, 'year');\n addFormatToken(0, ['YYYYY', 5], 0, 'year');\n addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n // PARSING\n\n addRegexToken('Y', matchSigned);\n addRegexToken('YY', match1to2, match2);\n addRegexToken('YYYY', match1to4, match4);\n addRegexToken('YYYYY', match1to6, match6);\n addRegexToken('YYYYYY', match1to6, match6);\n\n addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n addParseToken('YYYY', function (input, array) {\n array[YEAR] =\n input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n });\n addParseToken('YY', function (input, array) {\n array[YEAR] = hooks.parseTwoDigitYear(input);\n });\n addParseToken('Y', function (input, array) {\n array[YEAR] = parseInt(input, 10);\n });\n\n // HELPERS\n\n function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n }\n\n // HOOKS\n\n hooks.parseTwoDigitYear = function (input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n };\n\n // MOMENTS\n\n var getSetYear = makeGetSet('FullYear', true);\n\n function getIsLeapYear() {\n return isLeapYear(this.year());\n }\n\n function makeGetSet(unit, keepTime) {\n return function (value) {\n if (value != null) {\n set$1(this, unit, value);\n hooks.updateOffset(this, keepTime);\n return this;\n } else {\n return get(this, unit);\n }\n };\n }\n\n function get(mom, unit) {\n if (!mom.isValid()) {\n return NaN;\n }\n\n var d = mom._d,\n isUTC = mom._isUTC;\n\n switch (unit) {\n case 'Milliseconds':\n return isUTC ? d.getUTCMilliseconds() : d.getMilliseconds();\n case 'Seconds':\n return isUTC ? d.getUTCSeconds() : d.getSeconds();\n case 'Minutes':\n return isUTC ? d.getUTCMinutes() : d.getMinutes();\n case 'Hours':\n return isUTC ? d.getUTCHours() : d.getHours();\n case 'Date':\n return isUTC ? d.getUTCDate() : d.getDate();\n case 'Day':\n return isUTC ? d.getUTCDay() : d.getDay();\n case 'Month':\n return isUTC ? d.getUTCMonth() : d.getMonth();\n case 'FullYear':\n return isUTC ? d.getUTCFullYear() : d.getFullYear();\n default:\n return NaN; // Just in case\n }\n }\n\n function set$1(mom, unit, value) {\n var d, isUTC, year, month, date;\n\n if (!mom.isValid() || isNaN(value)) {\n return;\n }\n\n d = mom._d;\n isUTC = mom._isUTC;\n\n switch (unit) {\n case 'Milliseconds':\n return void (isUTC\n ? d.setUTCMilliseconds(value)\n : d.setMilliseconds(value));\n case 'Seconds':\n return void (isUTC ? d.setUTCSeconds(value) : d.setSeconds(value));\n case 'Minutes':\n return void (isUTC ? d.setUTCMinutes(value) : d.setMinutes(value));\n case 'Hours':\n return void (isUTC ? d.setUTCHours(value) : d.setHours(value));\n case 'Date':\n return void (isUTC ? d.setUTCDate(value) : d.setDate(value));\n // case 'Day': // Not real\n // return void (isUTC ? d.setUTCDay(value) : d.setDay(value));\n // case 'Month': // Not used because we need to pass two variables\n // return void (isUTC ? d.setUTCMonth(value) : d.setMonth(value));\n case 'FullYear':\n break; // See below ...\n default:\n return; // Just in case\n }\n\n year = value;\n month = mom.month();\n date = mom.date();\n date = date === 29 && month === 1 && !isLeapYear(year) ? 28 : date;\n void (isUTC\n ? d.setUTCFullYear(year, month, date)\n : d.setFullYear(year, month, date));\n }\n\n // MOMENTS\n\n function stringGet(units) {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units]();\n }\n return this;\n }\n\n function stringSet(units, value) {\n if (typeof units === 'object') {\n units = normalizeObjectUnits(units);\n var prioritized = getPrioritizedUnits(units),\n i,\n prioritizedLen = prioritized.length;\n for (i = 0; i < prioritizedLen; i++) {\n this[prioritized[i].unit](units[prioritized[i].unit]);\n }\n } else {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units](value);\n }\n }\n return this;\n }\n\n function mod(n, x) {\n return ((n % x) + x) % x;\n }\n\n var indexOf;\n\n if (Array.prototype.indexOf) {\n indexOf = Array.prototype.indexOf;\n } else {\n indexOf = function (o) {\n // I know\n var i;\n for (i = 0; i < this.length; ++i) {\n if (this[i] === o) {\n return i;\n }\n }\n return -1;\n };\n }\n\n function daysInMonth(year, month) {\n if (isNaN(year) || isNaN(month)) {\n return NaN;\n }\n var modMonth = mod(month, 12);\n year += (month - modMonth) / 12;\n return modMonth === 1\n ? isLeapYear(year)\n ? 29\n : 28\n : 31 - ((modMonth % 7) % 2);\n }\n\n // FORMATTING\n\n addFormatToken('M', ['MM', 2], 'Mo', function () {\n return this.month() + 1;\n });\n\n addFormatToken('MMM', 0, 0, function (format) {\n return this.localeData().monthsShort(this, format);\n });\n\n addFormatToken('MMMM', 0, 0, function (format) {\n return this.localeData().months(this, format);\n });\n\n // PARSING\n\n addRegexToken('M', match1to2, match1to2NoLeadingZero);\n addRegexToken('MM', match1to2, match2);\n addRegexToken('MMM', function (isStrict, locale) {\n return locale.monthsShortRegex(isStrict);\n });\n addRegexToken('MMMM', function (isStrict, locale) {\n return locale.monthsRegex(isStrict);\n });\n\n addParseToken(['M', 'MM'], function (input, array) {\n array[MONTH] = toInt(input) - 1;\n });\n\n addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n var month = config._locale.monthsParse(input, token, config._strict);\n // if we didn't find a month name, mark the date as invalid.\n if (month != null) {\n array[MONTH] = month;\n } else {\n getParsingFlags(config).invalidMonth = input;\n }\n });\n\n // LOCALES\n\n var defaultLocaleMonths =\n 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n defaultLocaleMonthsShort =\n 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,\n defaultMonthsShortRegex = matchWord,\n defaultMonthsRegex = matchWord;\n\n function localeMonths(m, format) {\n if (!m) {\n return isArray(this._months)\n ? this._months\n : this._months['standalone'];\n }\n return isArray(this._months)\n ? this._months[m.month()]\n : this._months[\n (this._months.isFormat || MONTHS_IN_FORMAT).test(format)\n ? 'format'\n : 'standalone'\n ][m.month()];\n }\n\n function localeMonthsShort(m, format) {\n if (!m) {\n return isArray(this._monthsShort)\n ? this._monthsShort\n : this._monthsShort['standalone'];\n }\n return isArray(this._monthsShort)\n ? this._monthsShort[m.month()]\n : this._monthsShort[\n MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'\n ][m.month()];\n }\n\n function handleStrictParse(monthName, format, strict) {\n var i,\n ii,\n mom,\n llc = monthName.toLocaleLowerCase();\n if (!this._monthsParse) {\n // this is not used\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n for (i = 0; i < 12; ++i) {\n mom = createUTC([2000, i]);\n this._shortMonthsParse[i] = this.monthsShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeMonthsParse(monthName, format, strict) {\n var i, mom, regex;\n\n if (this._monthsParseExact) {\n return handleStrictParse.call(this, monthName, format, strict);\n }\n\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n }\n\n // TODO: add sorting\n // Sorting makes sure if one month (or abbr) is a prefix of another\n // see sorting in computeMonthsParse\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n if (strict && !this._longMonthsParse[i]) {\n this._longMonthsParse[i] = new RegExp(\n '^' + this.months(mom, '').replace('.', '') + '$',\n 'i'\n );\n this._shortMonthsParse[i] = new RegExp(\n '^' + this.monthsShort(mom, '').replace('.', '') + '$',\n 'i'\n );\n }\n if (!strict && !this._monthsParse[i]) {\n regex =\n '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'MMMM' &&\n this._longMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'MMM' &&\n this._shortMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (!strict && this._monthsParse[i].test(monthName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function setMonth(mom, value) {\n if (!mom.isValid()) {\n // No op\n return mom;\n }\n\n if (typeof value === 'string') {\n if (/^\\d+$/.test(value)) {\n value = toInt(value);\n } else {\n value = mom.localeData().monthsParse(value);\n // TODO: Another silent failure?\n if (!isNumber(value)) {\n return mom;\n }\n }\n }\n\n var month = value,\n date = mom.date();\n\n date = date < 29 ? date : Math.min(date, daysInMonth(mom.year(), month));\n void (mom._isUTC\n ? mom._d.setUTCMonth(month, date)\n : mom._d.setMonth(month, date));\n return mom;\n }\n\n function getSetMonth(value) {\n if (value != null) {\n setMonth(this, value);\n hooks.updateOffset(this, true);\n return this;\n } else {\n return get(this, 'Month');\n }\n }\n\n function getDaysInMonth() {\n return daysInMonth(this.year(), this.month());\n }\n\n function monthsShortRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsShortStrictRegex;\n } else {\n return this._monthsShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsShortRegex')) {\n this._monthsShortRegex = defaultMonthsShortRegex;\n }\n return this._monthsShortStrictRegex && isStrict\n ? this._monthsShortStrictRegex\n : this._monthsShortRegex;\n }\n }\n\n function monthsRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsStrictRegex;\n } else {\n return this._monthsRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this._monthsRegex = defaultMonthsRegex;\n }\n return this._monthsStrictRegex && isStrict\n ? this._monthsStrictRegex\n : this._monthsRegex;\n }\n }\n\n function computeMonthsParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom,\n shortP,\n longP;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortP = regexEscape(this.monthsShort(mom, ''));\n longP = regexEscape(this.months(mom, ''));\n shortPieces.push(shortP);\n longPieces.push(longP);\n mixedPieces.push(longP);\n mixedPieces.push(shortP);\n }\n // Sorting makes sure if one month (or abbr) is a prefix of another it\n // will match the longer piece.\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n\n this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._monthsShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n }\n\n function createDate(y, m, d, h, M, s, ms) {\n // can't just apply() to create a date:\n // https://stackoverflow.com/q/181348\n var date;\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n date = new Date(y + 400, m, d, h, M, s, ms);\n if (isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n } else {\n date = new Date(y, m, d, h, M, s, ms);\n }\n\n return date;\n }\n\n function createUTCDate(y) {\n var date, args;\n // the Date.UTC function remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n args = Array.prototype.slice.call(arguments);\n // preserve leap years using a full 400 year cycle, then reset\n args[0] = y + 400;\n date = new Date(Date.UTC.apply(null, args));\n if (isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n } else {\n date = new Date(Date.UTC.apply(null, arguments));\n }\n\n return date;\n }\n\n // start-of-first-week - start-of-year\n function firstWeekOffset(year, dow, doy) {\n var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n fwd = 7 + dow - doy,\n // first-week day local weekday -- which local weekday is fwd\n fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n return -fwdlw + fwd - 1;\n }\n\n // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n var localWeekday = (7 + weekday - dow) % 7,\n weekOffset = firstWeekOffset(year, dow, doy),\n dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n resYear,\n resDayOfYear;\n\n if (dayOfYear <= 0) {\n resYear = year - 1;\n resDayOfYear = daysInYear(resYear) + dayOfYear;\n } else if (dayOfYear > daysInYear(year)) {\n resYear = year + 1;\n resDayOfYear = dayOfYear - daysInYear(year);\n } else {\n resYear = year;\n resDayOfYear = dayOfYear;\n }\n\n return {\n year: resYear,\n dayOfYear: resDayOfYear,\n };\n }\n\n function weekOfYear(mom, dow, doy) {\n var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n resWeek,\n resYear;\n\n if (week < 1) {\n resYear = mom.year() - 1;\n resWeek = week + weeksInYear(resYear, dow, doy);\n } else if (week > weeksInYear(mom.year(), dow, doy)) {\n resWeek = week - weeksInYear(mom.year(), dow, doy);\n resYear = mom.year() + 1;\n } else {\n resYear = mom.year();\n resWeek = week;\n }\n\n return {\n week: resWeek,\n year: resYear,\n };\n }\n\n function weeksInYear(year, dow, doy) {\n var weekOffset = firstWeekOffset(year, dow, doy),\n weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n }\n\n // FORMATTING\n\n addFormatToken('w', ['ww', 2], 'wo', 'week');\n addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n // PARSING\n\n addRegexToken('w', match1to2, match1to2NoLeadingZero);\n addRegexToken('ww', match1to2, match2);\n addRegexToken('W', match1to2, match1to2NoLeadingZero);\n addRegexToken('WW', match1to2, match2);\n\n addWeekParseToken(\n ['w', 'ww', 'W', 'WW'],\n function (input, week, config, token) {\n week[token.substr(0, 1)] = toInt(input);\n }\n );\n\n // HELPERS\n\n // LOCALES\n\n function localeWeek(mom) {\n return weekOfYear(mom, this._week.dow, this._week.doy).week;\n }\n\n var defaultLocaleWeek = {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n };\n\n function localeFirstDayOfWeek() {\n return this._week.dow;\n }\n\n function localeFirstDayOfYear() {\n return this._week.doy;\n }\n\n // MOMENTS\n\n function getSetWeek(input) {\n var week = this.localeData().week(this);\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n function getSetISOWeek(input) {\n var week = weekOfYear(this, 1, 4).week;\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('d', 0, 'do', 'day');\n\n addFormatToken('dd', 0, 0, function (format) {\n return this.localeData().weekdaysMin(this, format);\n });\n\n addFormatToken('ddd', 0, 0, function (format) {\n return this.localeData().weekdaysShort(this, format);\n });\n\n addFormatToken('dddd', 0, 0, function (format) {\n return this.localeData().weekdays(this, format);\n });\n\n addFormatToken('e', 0, 0, 'weekday');\n addFormatToken('E', 0, 0, 'isoWeekday');\n\n // PARSING\n\n addRegexToken('d', match1to2);\n addRegexToken('e', match1to2);\n addRegexToken('E', match1to2);\n addRegexToken('dd', function (isStrict, locale) {\n return locale.weekdaysMinRegex(isStrict);\n });\n addRegexToken('ddd', function (isStrict, locale) {\n return locale.weekdaysShortRegex(isStrict);\n });\n addRegexToken('dddd', function (isStrict, locale) {\n return locale.weekdaysRegex(isStrict);\n });\n\n addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n var weekday = config._locale.weekdaysParse(input, token, config._strict);\n // if we didn't get a weekday name, mark the date as invalid\n if (weekday != null) {\n week.d = weekday;\n } else {\n getParsingFlags(config).invalidWeekday = input;\n }\n });\n\n addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n week[token] = toInt(input);\n });\n\n // HELPERS\n\n function parseWeekday(input, locale) {\n if (typeof input !== 'string') {\n return input;\n }\n\n if (!isNaN(input)) {\n return parseInt(input, 10);\n }\n\n input = locale.weekdaysParse(input);\n if (typeof input === 'number') {\n return input;\n }\n\n return null;\n }\n\n function parseIsoWeekday(input, locale) {\n if (typeof input === 'string') {\n return locale.weekdaysParse(input) % 7 || 7;\n }\n return isNaN(input) ? null : input;\n }\n\n // LOCALES\n function shiftWeekdays(ws, n) {\n return ws.slice(n, 7).concat(ws.slice(0, n));\n }\n\n var defaultLocaleWeekdays =\n 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n defaultWeekdaysRegex = matchWord,\n defaultWeekdaysShortRegex = matchWord,\n defaultWeekdaysMinRegex = matchWord;\n\n function localeWeekdays(m, format) {\n var weekdays = isArray(this._weekdays)\n ? this._weekdays\n : this._weekdays[\n m && m !== true && this._weekdays.isFormat.test(format)\n ? 'format'\n : 'standalone'\n ];\n return m === true\n ? shiftWeekdays(weekdays, this._week.dow)\n : m\n ? weekdays[m.day()]\n : weekdays;\n }\n\n function localeWeekdaysShort(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysShort, this._week.dow)\n : m\n ? this._weekdaysShort[m.day()]\n : this._weekdaysShort;\n }\n\n function localeWeekdaysMin(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysMin, this._week.dow)\n : m\n ? this._weekdaysMin[m.day()]\n : this._weekdaysMin;\n }\n\n function handleStrictParse$1(weekdayName, format, strict) {\n var i,\n ii,\n mom,\n llc = weekdayName.toLocaleLowerCase();\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._minWeekdaysParse = [];\n\n for (i = 0; i < 7; ++i) {\n mom = createUTC([2000, 1]).day(i);\n this._minWeekdaysParse[i] = this.weekdaysMin(\n mom,\n ''\n ).toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeWeekdaysParse(weekdayName, format, strict) {\n var i, mom, regex;\n\n if (this._weekdaysParseExact) {\n return handleStrictParse$1.call(this, weekdayName, format, strict);\n }\n\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._minWeekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._fullWeekdaysParse = [];\n }\n\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n\n mom = createUTC([2000, 1]).day(i);\n if (strict && !this._fullWeekdaysParse[i]) {\n this._fullWeekdaysParse[i] = new RegExp(\n '^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._shortWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._minWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n }\n if (!this._weekdaysParse[i]) {\n regex =\n '^' +\n this.weekdays(mom, '') +\n '|^' +\n this.weekdaysShort(mom, '') +\n '|^' +\n this.weekdaysMin(mom, '');\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'dddd' &&\n this._fullWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'ddd' &&\n this._shortWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'dd' &&\n this._minWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function getSetDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n var day = get(this, 'Day');\n if (input != null) {\n input = parseWeekday(input, this.localeData());\n return this.add(input - day, 'd');\n } else {\n return day;\n }\n }\n\n function getSetLocaleDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n return input == null ? weekday : this.add(input - weekday, 'd');\n }\n\n function getSetISODayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n // behaves the same as moment#day except\n // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n // as a setter, sunday should belong to the previous week.\n\n if (input != null) {\n var weekday = parseIsoWeekday(input, this.localeData());\n return this.day(this.day() % 7 ? weekday : weekday - 7);\n } else {\n return this.day() || 7;\n }\n }\n\n function weekdaysRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysStrictRegex;\n } else {\n return this._weekdaysRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this._weekdaysRegex = defaultWeekdaysRegex;\n }\n return this._weekdaysStrictRegex && isStrict\n ? this._weekdaysStrictRegex\n : this._weekdaysRegex;\n }\n }\n\n function weekdaysShortRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysShortStrictRegex;\n } else {\n return this._weekdaysShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n }\n return this._weekdaysShortStrictRegex && isStrict\n ? this._weekdaysShortStrictRegex\n : this._weekdaysShortRegex;\n }\n }\n\n function weekdaysMinRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysMinStrictRegex;\n } else {\n return this._weekdaysMinRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n }\n return this._weekdaysMinStrictRegex && isStrict\n ? this._weekdaysMinStrictRegex\n : this._weekdaysMinRegex;\n }\n }\n\n function computeWeekdaysParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var minPieces = [],\n shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom,\n minp,\n shortp,\n longp;\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, 1]).day(i);\n minp = regexEscape(this.weekdaysMin(mom, ''));\n shortp = regexEscape(this.weekdaysShort(mom, ''));\n longp = regexEscape(this.weekdays(mom, ''));\n minPieces.push(minp);\n shortPieces.push(shortp);\n longPieces.push(longp);\n mixedPieces.push(minp);\n mixedPieces.push(shortp);\n mixedPieces.push(longp);\n }\n // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n // will match the longer piece.\n minPieces.sort(cmpLenRev);\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n\n this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n\n this._weekdaysStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysMinStrictRegex = new RegExp(\n '^(' + minPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n function hFormat() {\n return this.hours() % 12 || 12;\n }\n\n function kFormat() {\n return this.hours() || 24;\n }\n\n addFormatToken('H', ['HH', 2], 0, 'hour');\n addFormatToken('h', ['hh', 2], 0, hFormat);\n addFormatToken('k', ['kk', 2], 0, kFormat);\n\n addFormatToken('hmm', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('hmmss', 0, 0, function () {\n return (\n '' +\n hFormat.apply(this) +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n addFormatToken('Hmm', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('Hmmss', 0, 0, function () {\n return (\n '' +\n this.hours() +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n function meridiem(token, lowercase) {\n addFormatToken(token, 0, 0, function () {\n return this.localeData().meridiem(\n this.hours(),\n this.minutes(),\n lowercase\n );\n });\n }\n\n meridiem('a', true);\n meridiem('A', false);\n\n // PARSING\n\n function matchMeridiem(isStrict, locale) {\n return locale._meridiemParse;\n }\n\n addRegexToken('a', matchMeridiem);\n addRegexToken('A', matchMeridiem);\n addRegexToken('H', match1to2, match1to2HasZero);\n addRegexToken('h', match1to2, match1to2NoLeadingZero);\n addRegexToken('k', match1to2, match1to2NoLeadingZero);\n addRegexToken('HH', match1to2, match2);\n addRegexToken('hh', match1to2, match2);\n addRegexToken('kk', match1to2, match2);\n\n addRegexToken('hmm', match3to4);\n addRegexToken('hmmss', match5to6);\n addRegexToken('Hmm', match3to4);\n addRegexToken('Hmmss', match5to6);\n\n addParseToken(['H', 'HH'], HOUR);\n addParseToken(['k', 'kk'], function (input, array, config) {\n var kInput = toInt(input);\n array[HOUR] = kInput === 24 ? 0 : kInput;\n });\n addParseToken(['a', 'A'], function (input, array, config) {\n config._isPm = config._locale.isPM(input);\n config._meridiem = input;\n });\n addParseToken(['h', 'hh'], function (input, array, config) {\n array[HOUR] = toInt(input);\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('Hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n });\n addParseToken('Hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n });\n\n // LOCALES\n\n function localeIsPM(input) {\n // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n // Using charAt should be more compatible.\n return (input + '').toLowerCase().charAt(0) === 'p';\n }\n\n var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i,\n // Setting the hour should keep the time, because the user explicitly\n // specified which hour they want. So trying to maintain the same hour (in\n // a new timezone) makes sense. Adding/subtracting hours does not follow\n // this rule.\n getSetHour = makeGetSet('Hours', true);\n\n function localeMeridiem(hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n } else {\n return isLower ? 'am' : 'AM';\n }\n }\n\n var baseConfig = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n relativeTime: defaultRelativeTime,\n\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n\n week: defaultLocaleWeek,\n\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n\n meridiemParse: defaultLocaleMeridiemParse,\n };\n\n // internal storage for locale config files\n var locales = {},\n localeFamilies = {},\n globalLocale;\n\n function commonPrefix(arr1, arr2) {\n var i,\n minl = Math.min(arr1.length, arr2.length);\n for (i = 0; i < minl; i += 1) {\n if (arr1[i] !== arr2[i]) {\n return i;\n }\n }\n return minl;\n }\n\n function normalizeLocale(key) {\n return key ? key.toLowerCase().replace('_', '-') : key;\n }\n\n // pick the locale from the array\n // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n function chooseLocale(names) {\n var i = 0,\n j,\n next,\n locale,\n split;\n\n while (i < names.length) {\n split = normalizeLocale(names[i]).split('-');\n j = split.length;\n next = normalizeLocale(names[i + 1]);\n next = next ? next.split('-') : null;\n while (j > 0) {\n locale = loadLocale(split.slice(0, j).join('-'));\n if (locale) {\n return locale;\n }\n if (\n next &&\n next.length >= j &&\n commonPrefix(split, next) >= j - 1\n ) {\n //the next array item is better than a shallower substring of this one\n break;\n }\n j--;\n }\n i++;\n }\n return globalLocale;\n }\n\n function isLocaleNameSane(name) {\n // Prevent names that look like filesystem paths, i.e contain '/' or '\\'\n // Ensure name is available and function returns boolean\n return !!(name && name.match('^[^/\\\\\\\\]*$'));\n }\n\n function loadLocale(name) {\n var oldLocale = null,\n aliasedRequire;\n // TODO: Find a better way to register and load all the locales in Node\n if (\n locales[name] === undefined &&\n typeof module !== 'undefined' &&\n module &&\n module.exports &&\n isLocaleNameSane(name)\n ) {\n try {\n oldLocale = globalLocale._abbr;\n aliasedRequire = require;\n aliasedRequire('./locale/' + name);\n getSetGlobalLocale(oldLocale);\n } catch (e) {\n // mark as not found to avoid repeating expensive file require call causing high CPU\n // when trying to find en-US, en_US, en-us for every format call\n locales[name] = null; // null means not found\n }\n }\n return locales[name];\n }\n\n // This function will load locale and then set the global locale. If\n // no arguments are passed in, it will simply return the current global\n // locale key.\n function getSetGlobalLocale(key, values) {\n var data;\n if (key) {\n if (isUndefined(values)) {\n data = getLocale(key);\n } else {\n data = defineLocale(key, values);\n }\n\n if (data) {\n // moment.duration._locale = moment._locale = data;\n globalLocale = data;\n } else {\n if (typeof console !== 'undefined' && console.warn) {\n //warn user if arguments are passed but the locale could not be set\n console.warn(\n 'Locale ' + key + ' not found. Did you forget to load it?'\n );\n }\n }\n }\n\n return globalLocale._abbr;\n }\n\n function defineLocale(name, config) {\n if (config !== null) {\n var locale,\n parentConfig = baseConfig;\n config.abbr = name;\n if (locales[name] != null) {\n deprecateSimple(\n 'defineLocaleOverride',\n 'use moment.updateLocale(localeName, config) to change ' +\n 'an existing locale. moment.defineLocale(localeName, ' +\n 'config) should only be used for creating a new locale ' +\n 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'\n );\n parentConfig = locales[name]._config;\n } else if (config.parentLocale != null) {\n if (locales[config.parentLocale] != null) {\n parentConfig = locales[config.parentLocale]._config;\n } else {\n locale = loadLocale(config.parentLocale);\n if (locale != null) {\n parentConfig = locale._config;\n } else {\n if (!localeFamilies[config.parentLocale]) {\n localeFamilies[config.parentLocale] = [];\n }\n localeFamilies[config.parentLocale].push({\n name: name,\n config: config,\n });\n return null;\n }\n }\n }\n locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n if (localeFamilies[name]) {\n localeFamilies[name].forEach(function (x) {\n defineLocale(x.name, x.config);\n });\n }\n\n // backwards compat for now: also set the locale\n // make sure we set the locale AFTER all child locales have been\n // created, so we won't end up with the child locale set.\n getSetGlobalLocale(name);\n\n return locales[name];\n } else {\n // useful for testing\n delete locales[name];\n return null;\n }\n }\n\n function updateLocale(name, config) {\n if (config != null) {\n var locale,\n tmpLocale,\n parentConfig = baseConfig;\n\n if (locales[name] != null && locales[name].parentLocale != null) {\n // Update existing child locale in-place to avoid memory-leaks\n locales[name].set(mergeConfigs(locales[name]._config, config));\n } else {\n // MERGE\n tmpLocale = loadLocale(name);\n if (tmpLocale != null) {\n parentConfig = tmpLocale._config;\n }\n config = mergeConfigs(parentConfig, config);\n if (tmpLocale == null) {\n // updateLocale is called for creating a new locale\n // Set abbr so it will have a name (getters return\n // undefined otherwise).\n config.abbr = name;\n }\n locale = new Locale(config);\n locale.parentLocale = locales[name];\n locales[name] = locale;\n }\n\n // backwards compat for now: also set the locale\n getSetGlobalLocale(name);\n } else {\n // pass null for config to unupdate, useful for tests\n if (locales[name] != null) {\n if (locales[name].parentLocale != null) {\n locales[name] = locales[name].parentLocale;\n if (name === getSetGlobalLocale()) {\n getSetGlobalLocale(name);\n }\n } else if (locales[name] != null) {\n delete locales[name];\n }\n }\n }\n return locales[name];\n }\n\n // returns locale data\n function getLocale(key) {\n var locale;\n\n if (key && key._locale && key._locale._abbr) {\n key = key._locale._abbr;\n }\n\n if (!key) {\n return globalLocale;\n }\n\n if (!isArray(key)) {\n //short-circuit everything else\n locale = loadLocale(key);\n if (locale) {\n return locale;\n }\n key = [key];\n }\n\n return chooseLocale(key);\n }\n\n function listLocales() {\n return keys(locales);\n }\n\n function checkOverflow(m) {\n var overflow,\n a = m._a;\n\n if (a && getParsingFlags(m).overflow === -2) {\n overflow =\n a[MONTH] < 0 || a[MONTH] > 11\n ? MONTH\n : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])\n ? DATE\n : a[HOUR] < 0 ||\n a[HOUR] > 24 ||\n (a[HOUR] === 24 &&\n (a[MINUTE] !== 0 ||\n a[SECOND] !== 0 ||\n a[MILLISECOND] !== 0))\n ? HOUR\n : a[MINUTE] < 0 || a[MINUTE] > 59\n ? MINUTE\n : a[SECOND] < 0 || a[SECOND] > 59\n ? SECOND\n : a[MILLISECOND] < 0 || a[MILLISECOND] > 999\n ? MILLISECOND\n : -1;\n\n if (\n getParsingFlags(m)._overflowDayOfYear &&\n (overflow < YEAR || overflow > DATE)\n ) {\n overflow = DATE;\n }\n if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n overflow = WEEK;\n }\n if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n overflow = WEEKDAY;\n }\n\n getParsingFlags(m).overflow = overflow;\n }\n\n return m;\n }\n\n // iso 8601 regex\n // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n var extendedIsoRegex =\n /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n basicIsoRegex =\n /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d|))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/,\n isoDates = [\n ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n ['YYYY-DDD', /\\d{4}-\\d{3}/],\n ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n ['YYYYYYMMDD', /[+-]\\d{10}/],\n ['YYYYMMDD', /\\d{8}/],\n ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n ['YYYYDDD', /\\d{7}/],\n ['YYYYMM', /\\d{6}/, false],\n ['YYYY', /\\d{4}/, false],\n ],\n // iso time formats and regexes\n isoTimes = [\n ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n ['HH:mm', /\\d\\d:\\d\\d/],\n ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n ['HHmm', /\\d\\d\\d\\d/],\n ['HH', /\\d\\d/],\n ],\n aspNetJsonRegex = /^\\/?Date\\((-?\\d+)/i,\n // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n rfc2822 =\n /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/,\n obsOffsets = {\n UT: 0,\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60,\n };\n\n // date from iso format\n function configFromISO(config) {\n var i,\n l,\n string = config._i,\n match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n allowTime,\n dateFormat,\n timeFormat,\n tzFormat,\n isoDatesLen = isoDates.length,\n isoTimesLen = isoTimes.length;\n\n if (match) {\n getParsingFlags(config).iso = true;\n for (i = 0, l = isoDatesLen; i < l; i++) {\n if (isoDates[i][1].exec(match[1])) {\n dateFormat = isoDates[i][0];\n allowTime = isoDates[i][2] !== false;\n break;\n }\n }\n if (dateFormat == null) {\n config._isValid = false;\n return;\n }\n if (match[3]) {\n for (i = 0, l = isoTimesLen; i < l; i++) {\n if (isoTimes[i][1].exec(match[3])) {\n // match[2] should be 'T' or space\n timeFormat = (match[2] || ' ') + isoTimes[i][0];\n break;\n }\n }\n if (timeFormat == null) {\n config._isValid = false;\n return;\n }\n }\n if (!allowTime && timeFormat != null) {\n config._isValid = false;\n return;\n }\n if (match[4]) {\n if (tzRegex.exec(match[4])) {\n tzFormat = 'Z';\n } else {\n config._isValid = false;\n return;\n }\n }\n config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n configFromStringAndFormat(config);\n } else {\n config._isValid = false;\n }\n }\n\n function extractFromRFC2822Strings(\n yearStr,\n monthStr,\n dayStr,\n hourStr,\n minuteStr,\n secondStr\n ) {\n var result = [\n untruncateYear(yearStr),\n defaultLocaleMonthsShort.indexOf(monthStr),\n parseInt(dayStr, 10),\n parseInt(hourStr, 10),\n parseInt(minuteStr, 10),\n ];\n\n if (secondStr) {\n result.push(parseInt(secondStr, 10));\n }\n\n return result;\n }\n\n function untruncateYear(yearStr) {\n var year = parseInt(yearStr, 10);\n if (year <= 49) {\n return 2000 + year;\n } else if (year <= 999) {\n return 1900 + year;\n }\n return year;\n }\n\n function preprocessRFC2822(s) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return s\n .replace(/\\([^()]*\\)|[\\n\\t]/g, ' ')\n .replace(/(\\s\\s+)/g, ' ')\n .replace(/^\\s\\s*/, '')\n .replace(/\\s\\s*$/, '');\n }\n\n function checkWeekday(weekdayStr, parsedInput, config) {\n if (weekdayStr) {\n // TODO: Replace the vanilla JS Date object with an independent day-of-week check.\n var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n weekdayActual = new Date(\n parsedInput[0],\n parsedInput[1],\n parsedInput[2]\n ).getDay();\n if (weekdayProvided !== weekdayActual) {\n getParsingFlags(config).weekdayMismatch = true;\n config._isValid = false;\n return false;\n }\n }\n return true;\n }\n\n function calculateOffset(obsOffset, militaryOffset, numOffset) {\n if (obsOffset) {\n return obsOffsets[obsOffset];\n } else if (militaryOffset) {\n // the only allowed military tz is Z\n return 0;\n } else {\n var hm = parseInt(numOffset, 10),\n m = hm % 100,\n h = (hm - m) / 100;\n return h * 60 + m;\n }\n }\n\n // date and time from ref 2822 format\n function configFromRFC2822(config) {\n var match = rfc2822.exec(preprocessRFC2822(config._i)),\n parsedArray;\n if (match) {\n parsedArray = extractFromRFC2822Strings(\n match[4],\n match[3],\n match[2],\n match[5],\n match[6],\n match[7]\n );\n if (!checkWeekday(match[1], parsedArray, config)) {\n return;\n }\n\n config._a = parsedArray;\n config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n config._d = createUTCDate.apply(null, config._a);\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n getParsingFlags(config).rfc2822 = true;\n } else {\n config._isValid = false;\n }\n }\n\n // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict\n function configFromString(config) {\n var matched = aspNetJsonRegex.exec(config._i);\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n return;\n }\n\n configFromISO(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n configFromRFC2822(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n if (config._strict) {\n config._isValid = false;\n } else {\n // Final attempt, use Input Fallback\n hooks.createFromInputFallback(config);\n }\n }\n\n hooks.createFromInputFallback = deprecate(\n 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n 'discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n }\n );\n\n // Pick the first defined of two or three arguments.\n function defaults(a, b, c) {\n if (a != null) {\n return a;\n }\n if (b != null) {\n return b;\n }\n return c;\n }\n\n function currentDateArray(config) {\n // hooks is actually the exported moment object\n var nowValue = new Date(hooks.now());\n if (config._useUTC) {\n return [\n nowValue.getUTCFullYear(),\n nowValue.getUTCMonth(),\n nowValue.getUTCDate(),\n ];\n }\n return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n }\n\n // convert an array to a date.\n // the array should mirror the parameters below\n // note: all values past the year are optional and will default to the lowest possible value.\n // [year, month, day , hour, minute, second, millisecond]\n function configFromArray(config) {\n var i,\n date,\n input = [],\n currentDate,\n expectedWeekday,\n yearToUse;\n\n if (config._d) {\n return;\n }\n\n currentDate = currentDateArray(config);\n\n //compute day of the year from weeks and weekdays\n if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n dayOfYearFromWeekInfo(config);\n }\n\n //if the day of the year is set, figure out what it is\n if (config._dayOfYear != null) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n if (\n config._dayOfYear > daysInYear(yearToUse) ||\n config._dayOfYear === 0\n ) {\n getParsingFlags(config)._overflowDayOfYear = true;\n }\n\n date = createUTCDate(yearToUse, 0, config._dayOfYear);\n config._a[MONTH] = date.getUTCMonth();\n config._a[DATE] = date.getUTCDate();\n }\n\n // Default to current date.\n // * if no year, month, day of month are given, default to today\n // * if day of month is given, default month and year\n // * if month is given, default only year\n // * if year is given, don't default anything\n for (i = 0; i < 3 && config._a[i] == null; ++i) {\n config._a[i] = input[i] = currentDate[i];\n }\n\n // Zero out whatever was not defaulted, including time\n for (; i < 7; i++) {\n config._a[i] = input[i] =\n config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];\n }\n\n // Check for 24:00:00.000\n if (\n config._a[HOUR] === 24 &&\n config._a[MINUTE] === 0 &&\n config._a[SECOND] === 0 &&\n config._a[MILLISECOND] === 0\n ) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n\n config._d = (config._useUTC ? createUTCDate : createDate).apply(\n null,\n input\n );\n expectedWeekday = config._useUTC\n ? config._d.getUTCDay()\n : config._d.getDay();\n\n // Apply timezone offset from input. The actual utcOffset can be changed\n // with parseZone.\n if (config._tzm != null) {\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n }\n\n if (config._nextDay) {\n config._a[HOUR] = 24;\n }\n\n // check for mismatching day of week\n if (\n config._w &&\n typeof config._w.d !== 'undefined' &&\n config._w.d !== expectedWeekday\n ) {\n getParsingFlags(config).weekdayMismatch = true;\n }\n }\n\n function dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;\n\n w = config._w;\n if (w.GG != null || w.W != null || w.E != null) {\n dow = 1;\n doy = 4;\n\n // TODO: We need to take the current isoWeekYear, but that depends on\n // how we interpret now (local, utc, fixed offset). So create\n // a now version of current config (take local/utc/offset flags, and\n // create now).\n weekYear = defaults(\n w.GG,\n config._a[YEAR],\n weekOfYear(createLocal(), 1, 4).year\n );\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n if (weekday < 1 || weekday > 7) {\n weekdayOverflow = true;\n }\n } else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n\n curWeek = weekOfYear(createLocal(), dow, doy);\n\n weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n // Default to current week.\n week = defaults(w.w, curWeek.week);\n\n if (w.d != null) {\n // weekday -- low day numbers are considered next week\n weekday = w.d;\n if (weekday < 0 || weekday > 6) {\n weekdayOverflow = true;\n }\n } else if (w.e != null) {\n // local weekday -- counting starts from beginning of week\n weekday = w.e + dow;\n if (w.e < 0 || w.e > 6) {\n weekdayOverflow = true;\n }\n } else {\n // default to beginning of week\n weekday = dow;\n }\n }\n if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n getParsingFlags(config)._overflowWeeks = true;\n } else if (weekdayOverflow != null) {\n getParsingFlags(config)._overflowWeekday = true;\n } else {\n temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n }\n\n // constant that refers to the ISO standard\n hooks.ISO_8601 = function () {};\n\n // constant that refers to the RFC 2822 form\n hooks.RFC_2822 = function () {};\n\n // date from string and format string\n function configFromStringAndFormat(config) {\n // TODO: Move this to another part of the creation flow to prevent circular deps\n if (config._f === hooks.ISO_8601) {\n configFromISO(config);\n return;\n }\n if (config._f === hooks.RFC_2822) {\n configFromRFC2822(config);\n return;\n }\n config._a = [];\n getParsingFlags(config).empty = true;\n\n // This array is used to make a Date, either with `new Date` or `Date.UTC`\n var string = '' + config._i,\n i,\n parsedInput,\n tokens,\n token,\n skipped,\n stringLength = string.length,\n totalParsedInputLength = 0,\n era,\n tokenLen;\n\n tokens =\n expandFormat(config._f, config._locale).match(formattingTokens) || [];\n tokenLen = tokens.length;\n for (i = 0; i < tokenLen; i++) {\n token = tokens[i];\n parsedInput = (string.match(getParseRegexForToken(token, config)) ||\n [])[0];\n if (parsedInput) {\n skipped = string.substr(0, string.indexOf(parsedInput));\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n string = string.slice(\n string.indexOf(parsedInput) + parsedInput.length\n );\n totalParsedInputLength += parsedInput.length;\n }\n // don't parse if it's not a known token\n if (formatTokenFunctions[token]) {\n if (parsedInput) {\n getParsingFlags(config).empty = false;\n } else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n addTimeToArrayFromToken(token, parsedInput, config);\n } else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n }\n\n // add remaining unparsed input length to the string\n getParsingFlags(config).charsLeftOver =\n stringLength - totalParsedInputLength;\n if (string.length > 0) {\n getParsingFlags(config).unusedInput.push(string);\n }\n\n // clear _12h flag if hour is <= 12\n if (\n config._a[HOUR] <= 12 &&\n getParsingFlags(config).bigHour === true &&\n config._a[HOUR] > 0\n ) {\n getParsingFlags(config).bigHour = undefined;\n }\n\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem;\n // handle meridiem\n config._a[HOUR] = meridiemFixWrap(\n config._locale,\n config._a[HOUR],\n config._meridiem\n );\n\n // handle era\n era = getParsingFlags(config).era;\n if (era !== null) {\n config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);\n }\n\n configFromArray(config);\n checkOverflow(config);\n }\n\n function meridiemFixWrap(locale, hour, meridiem) {\n var isPm;\n\n if (meridiem == null) {\n // nothing to do\n return hour;\n }\n if (locale.meridiemHour != null) {\n return locale.meridiemHour(hour, meridiem);\n } else if (locale.isPM != null) {\n // Fallback\n isPm = locale.isPM(meridiem);\n if (isPm && hour < 12) {\n hour += 12;\n }\n if (!isPm && hour === 12) {\n hour = 0;\n }\n return hour;\n } else {\n // this is not supposed to happen\n return hour;\n }\n }\n\n // date from string and array of format strings\n function configFromStringAndArray(config) {\n var tempConfig,\n bestMoment,\n scoreToBeat,\n i,\n currentScore,\n validFormatFound,\n bestFormatIsValid = false,\n configfLen = config._f.length;\n\n if (configfLen === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\n }\n\n for (i = 0; i < configfLen; i++) {\n currentScore = 0;\n validFormatFound = false;\n tempConfig = copyConfig({}, config);\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n\n if (isValid(tempConfig)) {\n validFormatFound = true;\n }\n\n // if there is any input that was not parsed add a penalty for that format\n currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n //or tokens\n currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n getParsingFlags(tempConfig).score = currentScore;\n\n if (!bestFormatIsValid) {\n if (\n scoreToBeat == null ||\n currentScore < scoreToBeat ||\n validFormatFound\n ) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n if (validFormatFound) {\n bestFormatIsValid = true;\n }\n }\n } else {\n if (currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n }\n }\n }\n\n extend(config, bestMoment || tempConfig);\n }\n\n function configFromObject(config) {\n if (config._d) {\n return;\n }\n\n var i = normalizeObjectUnits(config._i),\n dayOrDate = i.day === undefined ? i.date : i.day;\n config._a = map(\n [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],\n function (obj) {\n return obj && parseInt(obj, 10);\n }\n );\n\n configFromArray(config);\n }\n\n function createFromConfig(config) {\n var res = new Moment(checkOverflow(prepareConfig(config)));\n if (res._nextDay) {\n // Adding is smart enough around DST\n res.add(1, 'd');\n res._nextDay = undefined;\n }\n\n return res;\n }\n\n function prepareConfig(config) {\n var input = config._i,\n format = config._f;\n\n config._locale = config._locale || getLocale(config._l);\n\n if (input === null || (format === undefined && input === '')) {\n return createInvalid({ nullInput: true });\n }\n\n if (typeof input === 'string') {\n config._i = input = config._locale.preparse(input);\n }\n\n if (isMoment(input)) {\n return new Moment(checkOverflow(input));\n } else if (isDate(input)) {\n config._d = input;\n } else if (isArray(format)) {\n configFromStringAndArray(config);\n } else if (format) {\n configFromStringAndFormat(config);\n } else {\n configFromInput(config);\n }\n\n if (!isValid(config)) {\n config._d = null;\n }\n\n return config;\n }\n\n function configFromInput(config) {\n var input = config._i;\n if (isUndefined(input)) {\n config._d = new Date(hooks.now());\n } else if (isDate(input)) {\n config._d = new Date(input.valueOf());\n } else if (typeof input === 'string') {\n configFromString(config);\n } else if (isArray(input)) {\n config._a = map(input.slice(0), function (obj) {\n return parseInt(obj, 10);\n });\n configFromArray(config);\n } else if (isObject(input)) {\n configFromObject(config);\n } else if (isNumber(input)) {\n // from milliseconds\n config._d = new Date(input);\n } else {\n hooks.createFromInputFallback(config);\n }\n }\n\n function createLocalOrUTC(input, format, locale, strict, isUTC) {\n var c = {};\n\n if (format === true || format === false) {\n strict = format;\n format = undefined;\n }\n\n if (locale === true || locale === false) {\n strict = locale;\n locale = undefined;\n }\n\n if (\n (isObject(input) && isObjectEmpty(input)) ||\n (isArray(input) && input.length === 0)\n ) {\n input = undefined;\n }\n // object construction must be done this way.\n // https://github.com/moment/moment/issues/1423\n c._isAMomentObject = true;\n c._useUTC = c._isUTC = isUTC;\n c._l = locale;\n c._i = input;\n c._f = format;\n c._strict = strict;\n\n return createFromConfig(c);\n }\n\n function createLocal(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, false);\n }\n\n var prototypeMin = deprecate(\n 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other < this ? this : other;\n } else {\n return createInvalid();\n }\n }\n ),\n prototypeMax = deprecate(\n 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other > this ? this : other;\n } else {\n return createInvalid();\n }\n }\n );\n\n // Pick a moment m from moments so that m[fn](other) is true for all\n // other. This relies on the function fn to be transitive.\n //\n // moments should either be an array of moment objects or an array, whose\n // first element is an array of moment objects.\n function pickBy(fn, moments) {\n var res, i;\n if (moments.length === 1 && isArray(moments[0])) {\n moments = moments[0];\n }\n if (!moments.length) {\n return createLocal();\n }\n res = moments[0];\n for (i = 1; i < moments.length; ++i) {\n if (!moments[i].isValid() || moments[i][fn](res)) {\n res = moments[i];\n }\n }\n return res;\n }\n\n // TODO: Use [].sort instead?\n function min() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isBefore', args);\n }\n\n function max() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isAfter', args);\n }\n\n var now = function () {\n return Date.now ? Date.now() : +new Date();\n };\n\n var ordering = [\n 'year',\n 'quarter',\n 'month',\n 'week',\n 'day',\n 'hour',\n 'minute',\n 'second',\n 'millisecond',\n ];\n\n function isDurationValid(m) {\n var key,\n unitHasDecimal = false,\n i,\n orderLen = ordering.length;\n for (key in m) {\n if (\n hasOwnProp(m, key) &&\n !(\n indexOf.call(ordering, key) !== -1 &&\n (m[key] == null || !isNaN(m[key]))\n )\n ) {\n return false;\n }\n }\n\n for (i = 0; i < orderLen; ++i) {\n if (m[ordering[i]]) {\n if (unitHasDecimal) {\n return false; // only allow non-integers for smallest unit\n }\n if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n unitHasDecimal = true;\n }\n }\n }\n\n return true;\n }\n\n function isValid$1() {\n return this._isValid;\n }\n\n function createInvalid$1() {\n return createDuration(NaN);\n }\n\n function Duration(duration) {\n var normalizedInput = normalizeObjectUnits(duration),\n years = normalizedInput.year || 0,\n quarters = normalizedInput.quarter || 0,\n months = normalizedInput.month || 0,\n weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n days = normalizedInput.day || 0,\n hours = normalizedInput.hour || 0,\n minutes = normalizedInput.minute || 0,\n seconds = normalizedInput.second || 0,\n milliseconds = normalizedInput.millisecond || 0;\n\n this._isValid = isDurationValid(normalizedInput);\n\n // representation for dateAddRemove\n this._milliseconds =\n +milliseconds +\n seconds * 1e3 + // 1000\n minutes * 6e4 + // 1000 * 60\n hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n // Because of dateAddRemove treats 24 hours as different from a\n // day when working around DST, we need to store them separately\n this._days = +days + weeks * 7;\n // It is impossible to translate months into days without knowing\n // which months you are are talking about, so we have to store\n // it separately.\n this._months = +months + quarters * 3 + years * 12;\n\n this._data = {};\n\n this._locale = getLocale();\n\n this._bubble();\n }\n\n function isDuration(obj) {\n return obj instanceof Duration;\n }\n\n function absRound(number) {\n if (number < 0) {\n return Math.round(-1 * number) * -1;\n } else {\n return Math.round(number);\n }\n }\n\n // compare two arrays, return the number of differences\n function compareArrays(array1, array2, dontConvert) {\n var len = Math.min(array1.length, array2.length),\n lengthDiff = Math.abs(array1.length - array2.length),\n diffs = 0,\n i;\n for (i = 0; i < len; i++) {\n if (\n (dontConvert && array1[i] !== array2[i]) ||\n (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))\n ) {\n diffs++;\n }\n }\n return diffs + lengthDiff;\n }\n\n // FORMATTING\n\n function offset(token, separator) {\n addFormatToken(token, 0, 0, function () {\n var offset = this.utcOffset(),\n sign = '+';\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n return (\n sign +\n zeroFill(~~(offset / 60), 2) +\n separator +\n zeroFill(~~offset % 60, 2)\n );\n });\n }\n\n offset('Z', ':');\n offset('ZZ', '');\n\n // PARSING\n\n addRegexToken('Z', matchShortOffset);\n addRegexToken('ZZ', matchShortOffset);\n addParseToken(['Z', 'ZZ'], function (input, array, config) {\n config._useUTC = true;\n config._tzm = offsetFromString(matchShortOffset, input);\n });\n\n // HELPERS\n\n // timezone chunker\n // '+10:00' > ['10', '00']\n // '-1530' > ['-15', '30']\n var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n function offsetFromString(matcher, string) {\n var matches = (string || '').match(matcher),\n chunk,\n parts,\n minutes;\n\n if (matches === null) {\n return null;\n }\n\n chunk = matches[matches.length - 1] || [];\n parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;\n }\n\n // Return a moment from input, that is local/utc/zone equivalent to model.\n function cloneWithOffset(input, model) {\n var res, diff;\n if (model._isUTC) {\n res = model.clone();\n diff =\n (isMoment(input) || isDate(input)\n ? input.valueOf()\n : createLocal(input).valueOf()) - res.valueOf();\n // Use low-level api, because this fn is low-level api.\n res._d.setTime(res._d.valueOf() + diff);\n hooks.updateOffset(res, false);\n return res;\n } else {\n return createLocal(input).local();\n }\n }\n\n function getDateOffset(m) {\n // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n // https://github.com/moment/moment/pull/1871\n return -Math.round(m._d.getTimezoneOffset());\n }\n\n // HOOKS\n\n // This function will be called whenever a moment is mutated.\n // It is intended to keep the offset in sync with the timezone.\n hooks.updateOffset = function () {};\n\n // MOMENTS\n\n // keepLocalTime = true means only change the timezone, without\n // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n // +0200, so we adjust the time as needed, to be valid.\n //\n // Keeping the time actually adds/subtracts (one hour)\n // from the actual represented time. That is why we call updateOffset\n // a second time. In case it wants us to change the offset again\n // _changeInProgress == true case, then we have to adjust, because\n // there is no such time in the given timezone.\n function getSetOffset(input, keepLocalTime, keepMinutes) {\n var offset = this._offset || 0,\n localAdjust;\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n if (input != null) {\n if (typeof input === 'string') {\n input = offsetFromString(matchShortOffset, input);\n if (input === null) {\n return this;\n }\n } else if (Math.abs(input) < 16 && !keepMinutes) {\n input = input * 60;\n }\n if (!this._isUTC && keepLocalTime) {\n localAdjust = getDateOffset(this);\n }\n this._offset = input;\n this._isUTC = true;\n if (localAdjust != null) {\n this.add(localAdjust, 'm');\n }\n if (offset !== input) {\n if (!keepLocalTime || this._changeInProgress) {\n addSubtract(\n this,\n createDuration(input - offset, 'm'),\n 1,\n false\n );\n } else if (!this._changeInProgress) {\n this._changeInProgress = true;\n hooks.updateOffset(this, true);\n this._changeInProgress = null;\n }\n }\n return this;\n } else {\n return this._isUTC ? offset : getDateOffset(this);\n }\n }\n\n function getSetZone(input, keepLocalTime) {\n if (input != null) {\n if (typeof input !== 'string') {\n input = -input;\n }\n\n this.utcOffset(input, keepLocalTime);\n\n return this;\n } else {\n return -this.utcOffset();\n }\n }\n\n function setOffsetToUTC(keepLocalTime) {\n return this.utcOffset(0, keepLocalTime);\n }\n\n function setOffsetToLocal(keepLocalTime) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n\n if (keepLocalTime) {\n this.subtract(getDateOffset(this), 'm');\n }\n }\n return this;\n }\n\n function setOffsetToParsedOffset() {\n if (this._tzm != null) {\n this.utcOffset(this._tzm, false, true);\n } else if (typeof this._i === 'string') {\n var tZone = offsetFromString(matchOffset, this._i);\n if (tZone != null) {\n this.utcOffset(tZone);\n } else {\n this.utcOffset(0, true);\n }\n }\n return this;\n }\n\n function hasAlignedHourOffset(input) {\n if (!this.isValid()) {\n return false;\n }\n input = input ? createLocal(input).utcOffset() : 0;\n\n return (this.utcOffset() - input) % 60 === 0;\n }\n\n function isDaylightSavingTime() {\n return (\n this.utcOffset() > this.clone().month(0).utcOffset() ||\n this.utcOffset() > this.clone().month(5).utcOffset()\n );\n }\n\n function isDaylightSavingTimeShifted() {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n\n var c = {},\n other;\n\n copyConfig(c, this);\n c = prepareConfig(c);\n\n if (c._a) {\n other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n this._isDSTShifted =\n this.isValid() && compareArrays(c._a, other.toArray()) > 0;\n } else {\n this._isDSTShifted = false;\n }\n\n return this._isDSTShifted;\n }\n\n function isLocal() {\n return this.isValid() ? !this._isUTC : false;\n }\n\n function isUtcOffset() {\n return this.isValid() ? this._isUTC : false;\n }\n\n function isUtc() {\n return this.isValid() ? this._isUTC && this._offset === 0 : false;\n }\n\n // ASP.NET json date format regex\n var aspNetRegex = /^(-|\\+)?(?:(\\d*)[. ])?(\\d+):(\\d+)(?::(\\d+)(\\.\\d*)?)?$/,\n // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n // and further modified to allow for strings containing both week and day\n isoRegex =\n /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n function createDuration(input, key) {\n var duration = input,\n // matching against regexp is expensive, do it on demand\n match = null,\n sign,\n ret,\n diffRes;\n\n if (isDuration(input)) {\n duration = {\n ms: input._milliseconds,\n d: input._days,\n M: input._months,\n };\n } else if (isNumber(input) || !isNaN(+input)) {\n duration = {};\n if (key) {\n duration[key] = +input;\n } else {\n duration.milliseconds = +input;\n }\n } else if ((match = aspNetRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: 0,\n d: toInt(match[DATE]) * sign,\n h: toInt(match[HOUR]) * sign,\n m: toInt(match[MINUTE]) * sign,\n s: toInt(match[SECOND]) * sign,\n ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match\n };\n } else if ((match = isoRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: parseIso(match[2], sign),\n M: parseIso(match[3], sign),\n w: parseIso(match[4], sign),\n d: parseIso(match[5], sign),\n h: parseIso(match[6], sign),\n m: parseIso(match[7], sign),\n s: parseIso(match[8], sign),\n };\n } else if (duration == null) {\n // checks for null or undefined\n duration = {};\n } else if (\n typeof duration === 'object' &&\n ('from' in duration || 'to' in duration)\n ) {\n diffRes = momentsDifference(\n createLocal(duration.from),\n createLocal(duration.to)\n );\n\n duration = {};\n duration.ms = diffRes.milliseconds;\n duration.M = diffRes.months;\n }\n\n ret = new Duration(duration);\n\n if (isDuration(input) && hasOwnProp(input, '_locale')) {\n ret._locale = input._locale;\n }\n\n if (isDuration(input) && hasOwnProp(input, '_isValid')) {\n ret._isValid = input._isValid;\n }\n\n return ret;\n }\n\n createDuration.fn = Duration.prototype;\n createDuration.invalid = createInvalid$1;\n\n function parseIso(inp, sign) {\n // We'd normally use ~~inp for this, but unfortunately it also\n // converts floats to ints.\n // inp may be undefined, so careful calling replace on it.\n var res = inp && parseFloat(inp.replace(',', '.'));\n // apply sign while we're at it\n return (isNaN(res) ? 0 : res) * sign;\n }\n\n function positiveMomentsDifference(base, other) {\n var res = {};\n\n res.months =\n other.month() - base.month() + (other.year() - base.year()) * 12;\n if (base.clone().add(res.months, 'M').isAfter(other)) {\n --res.months;\n }\n\n res.milliseconds = +other - +base.clone().add(res.months, 'M');\n\n return res;\n }\n\n function momentsDifference(base, other) {\n var res;\n if (!(base.isValid() && other.isValid())) {\n return { milliseconds: 0, months: 0 };\n }\n\n other = cloneWithOffset(other, base);\n if (base.isBefore(other)) {\n res = positiveMomentsDifference(base, other);\n } else {\n res = positiveMomentsDifference(other, base);\n res.milliseconds = -res.milliseconds;\n res.months = -res.months;\n }\n\n return res;\n }\n\n // TODO: remove 'name' arg after deprecation is removed\n function createAdder(direction, name) {\n return function (val, period) {\n var dur, tmp;\n //invert the arguments, but complain about it\n if (period !== null && !isNaN(+period)) {\n deprecateSimple(\n name,\n 'moment().' +\n name +\n '(period, number) is deprecated. Please use moment().' +\n name +\n '(number, period). ' +\n 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'\n );\n tmp = val;\n val = period;\n period = tmp;\n }\n\n dur = createDuration(val, period);\n addSubtract(this, dur, direction);\n return this;\n };\n }\n\n function addSubtract(mom, duration, isAdding, updateOffset) {\n var milliseconds = duration._milliseconds,\n days = absRound(duration._days),\n months = absRound(duration._months);\n\n if (!mom.isValid()) {\n // No op\n return;\n }\n\n updateOffset = updateOffset == null ? true : updateOffset;\n\n if (months) {\n setMonth(mom, get(mom, 'Month') + months * isAdding);\n }\n if (days) {\n set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n }\n if (milliseconds) {\n mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n }\n if (updateOffset) {\n hooks.updateOffset(mom, days || months);\n }\n }\n\n var add = createAdder(1, 'add'),\n subtract = createAdder(-1, 'subtract');\n\n function isString(input) {\n return typeof input === 'string' || input instanceof String;\n }\n\n // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined\n function isMomentInput(input) {\n return (\n isMoment(input) ||\n isDate(input) ||\n isString(input) ||\n isNumber(input) ||\n isNumberOrStringArray(input) ||\n isMomentInputObject(input) ||\n input === null ||\n input === undefined\n );\n }\n\n function isMomentInputObject(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'years',\n 'year',\n 'y',\n 'months',\n 'month',\n 'M',\n 'days',\n 'day',\n 'd',\n 'dates',\n 'date',\n 'D',\n 'hours',\n 'hour',\n 'h',\n 'minutes',\n 'minute',\n 'm',\n 'seconds',\n 'second',\n 's',\n 'milliseconds',\n 'millisecond',\n 'ms',\n ],\n i,\n property,\n propertyLen = properties.length;\n\n for (i = 0; i < propertyLen; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function isNumberOrStringArray(input) {\n var arrayTest = isArray(input),\n dataTypeTest = false;\n if (arrayTest) {\n dataTypeTest =\n input.filter(function (item) {\n return !isNumber(item) && isString(input);\n }).length === 0;\n }\n return arrayTest && dataTypeTest;\n }\n\n function isCalendarSpec(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'sameDay',\n 'nextDay',\n 'lastDay',\n 'nextWeek',\n 'lastWeek',\n 'sameElse',\n ],\n i,\n property;\n\n for (i = 0; i < properties.length; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function getCalendarFormat(myMoment, now) {\n var diff = myMoment.diff(now, 'days', true);\n return diff < -6\n ? 'sameElse'\n : diff < -1\n ? 'lastWeek'\n : diff < 0\n ? 'lastDay'\n : diff < 1\n ? 'sameDay'\n : diff < 2\n ? 'nextDay'\n : diff < 7\n ? 'nextWeek'\n : 'sameElse';\n }\n\n function calendar$1(time, formats) {\n // Support for single parameter, formats only overload to the calendar function\n if (arguments.length === 1) {\n if (!arguments[0]) {\n time = undefined;\n formats = undefined;\n } else if (isMomentInput(arguments[0])) {\n time = arguments[0];\n formats = undefined;\n } else if (isCalendarSpec(arguments[0])) {\n formats = arguments[0];\n time = undefined;\n }\n }\n // We want to compare the start of today, vs this.\n // Getting start-of-today depends on whether we're local/utc/offset or not.\n var now = time || createLocal(),\n sod = cloneWithOffset(now, this).startOf('day'),\n format = hooks.calendarFormat(this, sod) || 'sameElse',\n output =\n formats &&\n (isFunction(formats[format])\n ? formats[format].call(this, now)\n : formats[format]);\n\n return this.format(\n output || this.localeData().calendar(format, this, createLocal(now))\n );\n }\n\n function clone() {\n return new Moment(this);\n }\n\n function isAfter(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() > localInput.valueOf();\n } else {\n return localInput.valueOf() < this.clone().startOf(units).valueOf();\n }\n }\n\n function isBefore(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() < localInput.valueOf();\n } else {\n return this.clone().endOf(units).valueOf() < localInput.valueOf();\n }\n }\n\n function isBetween(from, to, units, inclusivity) {\n var localFrom = isMoment(from) ? from : createLocal(from),\n localTo = isMoment(to) ? to : createLocal(to);\n if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n return false;\n }\n inclusivity = inclusivity || '()';\n return (\n (inclusivity[0] === '('\n ? this.isAfter(localFrom, units)\n : !this.isBefore(localFrom, units)) &&\n (inclusivity[1] === ')'\n ? this.isBefore(localTo, units)\n : !this.isAfter(localTo, units))\n );\n }\n\n function isSame(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input),\n inputMs;\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() === localInput.valueOf();\n } else {\n inputMs = localInput.valueOf();\n return (\n this.clone().startOf(units).valueOf() <= inputMs &&\n inputMs <= this.clone().endOf(units).valueOf()\n );\n }\n }\n\n function isSameOrAfter(input, units) {\n return this.isSame(input, units) || this.isAfter(input, units);\n }\n\n function isSameOrBefore(input, units) {\n return this.isSame(input, units) || this.isBefore(input, units);\n }\n\n function diff(input, units, asFloat) {\n var that, zoneDelta, output;\n\n if (!this.isValid()) {\n return NaN;\n }\n\n that = cloneWithOffset(input, this);\n\n if (!that.isValid()) {\n return NaN;\n }\n\n zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n units = normalizeUnits(units);\n\n switch (units) {\n case 'year':\n output = monthDiff(this, that) / 12;\n break;\n case 'month':\n output = monthDiff(this, that);\n break;\n case 'quarter':\n output = monthDiff(this, that) / 3;\n break;\n case 'second':\n output = (this - that) / 1e3;\n break; // 1000\n case 'minute':\n output = (this - that) / 6e4;\n break; // 1000 * 60\n case 'hour':\n output = (this - that) / 36e5;\n break; // 1000 * 60 * 60\n case 'day':\n output = (this - that - zoneDelta) / 864e5;\n break; // 1000 * 60 * 60 * 24, negate dst\n case 'week':\n output = (this - that - zoneDelta) / 6048e5;\n break; // 1000 * 60 * 60 * 24 * 7, negate dst\n default:\n output = this - that;\n }\n\n return asFloat ? output : absFloor(output);\n }\n\n function monthDiff(a, b) {\n if (a.date() < b.date()) {\n // end-of-month calculations work correct when the start month has more\n // days than the end month.\n return -monthDiff(b, a);\n }\n // difference in months\n var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),\n // b is in (anchor - 1 month, anchor + 1 month)\n anchor = a.clone().add(wholeMonthDiff, 'months'),\n anchor2,\n adjust;\n\n if (b - anchor < 0) {\n anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor - anchor2);\n } else {\n anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor2 - anchor);\n }\n\n //check for negative zero, return zero if negative zero\n return -(wholeMonthDiff + adjust) || 0;\n }\n\n hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n function toString() {\n return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n }\n\n function toISOString(keepOffset) {\n if (!this.isValid()) {\n return null;\n }\n var utc = keepOffset !== true,\n m = utc ? this.clone().utc() : this;\n if (m.year() < 0 || m.year() > 9999) {\n return formatMoment(\n m,\n utc\n ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'\n : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n if (isFunction(Date.prototype.toISOString)) {\n // native implementation is ~50x faster, use it when we can\n if (utc) {\n return this.toDate().toISOString();\n } else {\n return new Date(this.valueOf() + this.utcOffset() * 60 * 1000)\n .toISOString()\n .replace('Z', formatMoment(m, 'Z'));\n }\n }\n return formatMoment(\n m,\n utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n\n /**\n * Return a human readable representation of a moment that can\n * also be evaluated to get a new moment which is the same\n *\n * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n */\n function inspect() {\n if (!this.isValid()) {\n return 'moment.invalid(/* ' + this._i + ' */)';\n }\n var func = 'moment',\n zone = '',\n prefix,\n year,\n datetime,\n suffix;\n if (!this.isLocal()) {\n func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n zone = 'Z';\n }\n prefix = '[' + func + '(\"]';\n year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';\n datetime = '-MM-DD[T]HH:mm:ss.SSS';\n suffix = zone + '[\")]';\n\n return this.format(prefix + year + datetime + suffix);\n }\n\n function format(inputString) {\n if (!inputString) {\n inputString = this.isUtc()\n ? hooks.defaultFormatUtc\n : hooks.defaultFormat;\n }\n var output = formatMoment(this, inputString);\n return this.localeData().postformat(output);\n }\n\n function from(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ to: this, from: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function fromNow(withoutSuffix) {\n return this.from(createLocal(), withoutSuffix);\n }\n\n function to(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ from: this, to: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function toNow(withoutSuffix) {\n return this.to(createLocal(), withoutSuffix);\n }\n\n // If passed a locale key, it will set the locale for this\n // instance. Otherwise, it will return the locale configuration\n // variables for this instance.\n function locale(key) {\n var newLocaleData;\n\n if (key === undefined) {\n return this._locale._abbr;\n } else {\n newLocaleData = getLocale(key);\n if (newLocaleData != null) {\n this._locale = newLocaleData;\n }\n return this;\n }\n }\n\n var lang = deprecate(\n 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n function (key) {\n if (key === undefined) {\n return this.localeData();\n } else {\n return this.locale(key);\n }\n }\n );\n\n function localeData() {\n return this._locale;\n }\n\n var MS_PER_SECOND = 1000,\n MS_PER_MINUTE = 60 * MS_PER_SECOND,\n MS_PER_HOUR = 60 * MS_PER_MINUTE,\n MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;\n\n // actual modulo - handles negative numbers (for dates before 1970):\n function mod$1(dividend, divisor) {\n return ((dividend % divisor) + divisor) % divisor;\n }\n\n function localStartOfDate(y, m, d) {\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return new Date(y, m, d).valueOf();\n }\n }\n\n function utcStartOfDate(y, m, d) {\n // Date.UTC remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return Date.UTC(y, m, d);\n }\n }\n\n function startOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year(), 0, 1);\n break;\n case 'quarter':\n time = startOfDate(\n this.year(),\n this.month() - (this.month() % 3),\n 1\n );\n break;\n case 'month':\n time = startOfDate(this.year(), this.month(), 1);\n break;\n case 'week':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday()\n );\n break;\n case 'isoWeek':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1)\n );\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date());\n break;\n case 'hour':\n time = this._d.valueOf();\n time -= mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n );\n break;\n case 'minute':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_MINUTE);\n break;\n case 'second':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_SECOND);\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function endOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year() + 1, 0, 1) - 1;\n break;\n case 'quarter':\n time =\n startOfDate(\n this.year(),\n this.month() - (this.month() % 3) + 3,\n 1\n ) - 1;\n break;\n case 'month':\n time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n break;\n case 'week':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday() + 7\n ) - 1;\n break;\n case 'isoWeek':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1) + 7\n ) - 1;\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n break;\n case 'hour':\n time = this._d.valueOf();\n time +=\n MS_PER_HOUR -\n mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n ) -\n 1;\n break;\n case 'minute':\n time = this._d.valueOf();\n time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n break;\n case 'second':\n time = this._d.valueOf();\n time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function valueOf() {\n return this._d.valueOf() - (this._offset || 0) * 60000;\n }\n\n function unix() {\n return Math.floor(this.valueOf() / 1000);\n }\n\n function toDate() {\n return new Date(this.valueOf());\n }\n\n function toArray() {\n var m = this;\n return [\n m.year(),\n m.month(),\n m.date(),\n m.hour(),\n m.minute(),\n m.second(),\n m.millisecond(),\n ];\n }\n\n function toObject() {\n var m = this;\n return {\n years: m.year(),\n months: m.month(),\n date: m.date(),\n hours: m.hours(),\n minutes: m.minutes(),\n seconds: m.seconds(),\n milliseconds: m.milliseconds(),\n };\n }\n\n function toJSON() {\n // new Date(NaN).toJSON() === null\n return this.isValid() ? this.toISOString() : null;\n }\n\n function isValid$2() {\n return isValid(this);\n }\n\n function parsingFlags() {\n return extend({}, getParsingFlags(this));\n }\n\n function invalidAt() {\n return getParsingFlags(this).overflow;\n }\n\n function creationData() {\n return {\n input: this._i,\n format: this._f,\n locale: this._locale,\n isUTC: this._isUTC,\n strict: this._strict,\n };\n }\n\n addFormatToken('N', 0, 0, 'eraAbbr');\n addFormatToken('NN', 0, 0, 'eraAbbr');\n addFormatToken('NNN', 0, 0, 'eraAbbr');\n addFormatToken('NNNN', 0, 0, 'eraName');\n addFormatToken('NNNNN', 0, 0, 'eraNarrow');\n\n addFormatToken('y', ['y', 1], 'yo', 'eraYear');\n addFormatToken('y', ['yy', 2], 0, 'eraYear');\n addFormatToken('y', ['yyy', 3], 0, 'eraYear');\n addFormatToken('y', ['yyyy', 4], 0, 'eraYear');\n\n addRegexToken('N', matchEraAbbr);\n addRegexToken('NN', matchEraAbbr);\n addRegexToken('NNN', matchEraAbbr);\n addRegexToken('NNNN', matchEraName);\n addRegexToken('NNNNN', matchEraNarrow);\n\n addParseToken(\n ['N', 'NN', 'NNN', 'NNNN', 'NNNNN'],\n function (input, array, config, token) {\n var era = config._locale.erasParse(input, token, config._strict);\n if (era) {\n getParsingFlags(config).era = era;\n } else {\n getParsingFlags(config).invalidEra = input;\n }\n }\n );\n\n addRegexToken('y', matchUnsigned);\n addRegexToken('yy', matchUnsigned);\n addRegexToken('yyy', matchUnsigned);\n addRegexToken('yyyy', matchUnsigned);\n addRegexToken('yo', matchEraYearOrdinal);\n\n addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);\n addParseToken(['yo'], function (input, array, config, token) {\n var match;\n if (config._locale._eraYearOrdinalRegex) {\n match = input.match(config._locale._eraYearOrdinalRegex);\n }\n\n if (config._locale.eraYearOrdinalParse) {\n array[YEAR] = config._locale.eraYearOrdinalParse(input, match);\n } else {\n array[YEAR] = parseInt(input, 10);\n }\n });\n\n function localeEras(m, format) {\n var i,\n l,\n date,\n eras = this._eras || getLocale('en')._eras;\n for (i = 0, l = eras.length; i < l; ++i) {\n switch (typeof eras[i].since) {\n case 'string':\n // truncate time\n date = hooks(eras[i].since).startOf('day');\n eras[i].since = date.valueOf();\n break;\n }\n\n switch (typeof eras[i].until) {\n case 'undefined':\n eras[i].until = +Infinity;\n break;\n case 'string':\n // truncate time\n date = hooks(eras[i].until).startOf('day').valueOf();\n eras[i].until = date.valueOf();\n break;\n }\n }\n return eras;\n }\n\n function localeErasParse(eraName, format, strict) {\n var i,\n l,\n eras = this.eras(),\n name,\n abbr,\n narrow;\n eraName = eraName.toUpperCase();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n name = eras[i].name.toUpperCase();\n abbr = eras[i].abbr.toUpperCase();\n narrow = eras[i].narrow.toUpperCase();\n\n if (strict) {\n switch (format) {\n case 'N':\n case 'NN':\n case 'NNN':\n if (abbr === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNN':\n if (name === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNNN':\n if (narrow === eraName) {\n return eras[i];\n }\n break;\n }\n } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {\n return eras[i];\n }\n }\n }\n\n function localeErasConvertYear(era, year) {\n var dir = era.since <= era.until ? +1 : -1;\n if (year === undefined) {\n return hooks(era.since).year();\n } else {\n return hooks(era.since).year() + (year - era.offset) * dir;\n }\n }\n\n function getEraName() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].name;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].name;\n }\n }\n\n return '';\n }\n\n function getEraNarrow() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].narrow;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].narrow;\n }\n }\n\n return '';\n }\n\n function getEraAbbr() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].abbr;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].abbr;\n }\n }\n\n return '';\n }\n\n function getEraYear() {\n var i,\n l,\n dir,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n dir = eras[i].since <= eras[i].until ? +1 : -1;\n\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (\n (eras[i].since <= val && val <= eras[i].until) ||\n (eras[i].until <= val && val <= eras[i].since)\n ) {\n return (\n (this.year() - hooks(eras[i].since).year()) * dir +\n eras[i].offset\n );\n }\n }\n\n return this.year();\n }\n\n function erasNameRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNameRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNameRegex : this._erasRegex;\n }\n\n function erasAbbrRegex(isStrict) {\n if (!hasOwnProp(this, '_erasAbbrRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasAbbrRegex : this._erasRegex;\n }\n\n function erasNarrowRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNarrowRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNarrowRegex : this._erasRegex;\n }\n\n function matchEraAbbr(isStrict, locale) {\n return locale.erasAbbrRegex(isStrict);\n }\n\n function matchEraName(isStrict, locale) {\n return locale.erasNameRegex(isStrict);\n }\n\n function matchEraNarrow(isStrict, locale) {\n return locale.erasNarrowRegex(isStrict);\n }\n\n function matchEraYearOrdinal(isStrict, locale) {\n return locale._eraYearOrdinalRegex || matchUnsigned;\n }\n\n function computeErasParse() {\n var abbrPieces = [],\n namePieces = [],\n narrowPieces = [],\n mixedPieces = [],\n i,\n l,\n erasName,\n erasAbbr,\n erasNarrow,\n eras = this.eras();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n erasName = regexEscape(eras[i].name);\n erasAbbr = regexEscape(eras[i].abbr);\n erasNarrow = regexEscape(eras[i].narrow);\n\n namePieces.push(erasName);\n abbrPieces.push(erasAbbr);\n narrowPieces.push(erasNarrow);\n mixedPieces.push(erasName);\n mixedPieces.push(erasAbbr);\n mixedPieces.push(erasNarrow);\n }\n\n this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');\n this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');\n this._erasNarrowRegex = new RegExp(\n '^(' + narrowPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken(0, ['gg', 2], 0, function () {\n return this.weekYear() % 100;\n });\n\n addFormatToken(0, ['GG', 2], 0, function () {\n return this.isoWeekYear() % 100;\n });\n\n function addWeekYearFormatToken(token, getter) {\n addFormatToken(0, [token, token.length], 0, getter);\n }\n\n addWeekYearFormatToken('gggg', 'weekYear');\n addWeekYearFormatToken('ggggg', 'weekYear');\n addWeekYearFormatToken('GGGG', 'isoWeekYear');\n addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n // ALIASES\n\n // PARSING\n\n addRegexToken('G', matchSigned);\n addRegexToken('g', matchSigned);\n addRegexToken('GG', match1to2, match2);\n addRegexToken('gg', match1to2, match2);\n addRegexToken('GGGG', match1to4, match4);\n addRegexToken('gggg', match1to4, match4);\n addRegexToken('GGGGG', match1to6, match6);\n addRegexToken('ggggg', match1to6, match6);\n\n addWeekParseToken(\n ['gggg', 'ggggg', 'GGGG', 'GGGGG'],\n function (input, week, config, token) {\n week[token.substr(0, 2)] = toInt(input);\n }\n );\n\n addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n week[token] = hooks.parseTwoDigitYear(input);\n });\n\n // MOMENTS\n\n function getSetWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.week(),\n this.weekday() + this.localeData()._week.dow,\n this.localeData()._week.dow,\n this.localeData()._week.doy\n );\n }\n\n function getSetISOWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.isoWeek(),\n this.isoWeekday(),\n 1,\n 4\n );\n }\n\n function getISOWeeksInYear() {\n return weeksInYear(this.year(), 1, 4);\n }\n\n function getISOWeeksInISOWeekYear() {\n return weeksInYear(this.isoWeekYear(), 1, 4);\n }\n\n function getWeeksInYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n }\n\n function getWeeksInWeekYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);\n }\n\n function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n var weeksTarget;\n if (input == null) {\n return weekOfYear(this, dow, doy).year;\n } else {\n weeksTarget = weeksInYear(input, dow, doy);\n if (week > weeksTarget) {\n week = weeksTarget;\n }\n return setWeekAll.call(this, input, week, weekday, dow, doy);\n }\n }\n\n function setWeekAll(weekYear, week, weekday, dow, doy) {\n var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n this.year(date.getUTCFullYear());\n this.month(date.getUTCMonth());\n this.date(date.getUTCDate());\n return this;\n }\n\n // FORMATTING\n\n addFormatToken('Q', 0, 'Qo', 'quarter');\n\n // PARSING\n\n addRegexToken('Q', match1);\n addParseToken('Q', function (input, array) {\n array[MONTH] = (toInt(input) - 1) * 3;\n });\n\n // MOMENTS\n\n function getSetQuarter(input) {\n return input == null\n ? Math.ceil((this.month() + 1) / 3)\n : this.month((input - 1) * 3 + (this.month() % 3));\n }\n\n // FORMATTING\n\n addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n // PARSING\n\n addRegexToken('D', match1to2, match1to2NoLeadingZero);\n addRegexToken('DD', match1to2, match2);\n addRegexToken('Do', function (isStrict, locale) {\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n return isStrict\n ? locale._dayOfMonthOrdinalParse || locale._ordinalParse\n : locale._dayOfMonthOrdinalParseLenient;\n });\n\n addParseToken(['D', 'DD'], DATE);\n addParseToken('Do', function (input, array) {\n array[DATE] = toInt(input.match(match1to2)[0]);\n });\n\n // MOMENTS\n\n var getSetDayOfMonth = makeGetSet('Date', true);\n\n // FORMATTING\n\n addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n // PARSING\n\n addRegexToken('DDD', match1to3);\n addRegexToken('DDDD', match3);\n addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n config._dayOfYear = toInt(input);\n });\n\n // HELPERS\n\n // MOMENTS\n\n function getSetDayOfYear(input) {\n var dayOfYear =\n Math.round(\n (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5\n ) + 1;\n return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('m', ['mm', 2], 0, 'minute');\n\n // PARSING\n\n addRegexToken('m', match1to2, match1to2HasZero);\n addRegexToken('mm', match1to2, match2);\n addParseToken(['m', 'mm'], MINUTE);\n\n // MOMENTS\n\n var getSetMinute = makeGetSet('Minutes', false);\n\n // FORMATTING\n\n addFormatToken('s', ['ss', 2], 0, 'second');\n\n // PARSING\n\n addRegexToken('s', match1to2, match1to2HasZero);\n addRegexToken('ss', match1to2, match2);\n addParseToken(['s', 'ss'], SECOND);\n\n // MOMENTS\n\n var getSetSecond = makeGetSet('Seconds', false);\n\n // FORMATTING\n\n addFormatToken('S', 0, 0, function () {\n return ~~(this.millisecond() / 100);\n });\n\n addFormatToken(0, ['SS', 2], 0, function () {\n return ~~(this.millisecond() / 10);\n });\n\n addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n addFormatToken(0, ['SSSS', 4], 0, function () {\n return this.millisecond() * 10;\n });\n addFormatToken(0, ['SSSSS', 5], 0, function () {\n return this.millisecond() * 100;\n });\n addFormatToken(0, ['SSSSSS', 6], 0, function () {\n return this.millisecond() * 1000;\n });\n addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n return this.millisecond() * 10000;\n });\n addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n return this.millisecond() * 100000;\n });\n addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n return this.millisecond() * 1000000;\n });\n\n // PARSING\n\n addRegexToken('S', match1to3, match1);\n addRegexToken('SS', match1to3, match2);\n addRegexToken('SSS', match1to3, match3);\n\n var token, getSetMillisecond;\n for (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n }\n\n function parseMs(input, array) {\n array[MILLISECOND] = toInt(('0.' + input) * 1000);\n }\n\n for (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\n }\n\n getSetMillisecond = makeGetSet('Milliseconds', false);\n\n // FORMATTING\n\n addFormatToken('z', 0, 0, 'zoneAbbr');\n addFormatToken('zz', 0, 0, 'zoneName');\n\n // MOMENTS\n\n function getZoneAbbr() {\n return this._isUTC ? 'UTC' : '';\n }\n\n function getZoneName() {\n return this._isUTC ? 'Coordinated Universal Time' : '';\n }\n\n var proto = Moment.prototype;\n\n proto.add = add;\n proto.calendar = calendar$1;\n proto.clone = clone;\n proto.diff = diff;\n proto.endOf = endOf;\n proto.format = format;\n proto.from = from;\n proto.fromNow = fromNow;\n proto.to = to;\n proto.toNow = toNow;\n proto.get = stringGet;\n proto.invalidAt = invalidAt;\n proto.isAfter = isAfter;\n proto.isBefore = isBefore;\n proto.isBetween = isBetween;\n proto.isSame = isSame;\n proto.isSameOrAfter = isSameOrAfter;\n proto.isSameOrBefore = isSameOrBefore;\n proto.isValid = isValid$2;\n proto.lang = lang;\n proto.locale = locale;\n proto.localeData = localeData;\n proto.max = prototypeMax;\n proto.min = prototypeMin;\n proto.parsingFlags = parsingFlags;\n proto.set = stringSet;\n proto.startOf = startOf;\n proto.subtract = subtract;\n proto.toArray = toArray;\n proto.toObject = toObject;\n proto.toDate = toDate;\n proto.toISOString = toISOString;\n proto.inspect = inspect;\n if (typeof Symbol !== 'undefined' && Symbol.for != null) {\n proto[Symbol.for('nodejs.util.inspect.custom')] = function () {\n return 'Moment<' + this.format() + '>';\n };\n }\n proto.toJSON = toJSON;\n proto.toString = toString;\n proto.unix = unix;\n proto.valueOf = valueOf;\n proto.creationData = creationData;\n proto.eraName = getEraName;\n proto.eraNarrow = getEraNarrow;\n proto.eraAbbr = getEraAbbr;\n proto.eraYear = getEraYear;\n proto.year = getSetYear;\n proto.isLeapYear = getIsLeapYear;\n proto.weekYear = getSetWeekYear;\n proto.isoWeekYear = getSetISOWeekYear;\n proto.quarter = proto.quarters = getSetQuarter;\n proto.month = getSetMonth;\n proto.daysInMonth = getDaysInMonth;\n proto.week = proto.weeks = getSetWeek;\n proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n proto.weeksInYear = getWeeksInYear;\n proto.weeksInWeekYear = getWeeksInWeekYear;\n proto.isoWeeksInYear = getISOWeeksInYear;\n proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;\n proto.date = getSetDayOfMonth;\n proto.day = proto.days = getSetDayOfWeek;\n proto.weekday = getSetLocaleDayOfWeek;\n proto.isoWeekday = getSetISODayOfWeek;\n proto.dayOfYear = getSetDayOfYear;\n proto.hour = proto.hours = getSetHour;\n proto.minute = proto.minutes = getSetMinute;\n proto.second = proto.seconds = getSetSecond;\n proto.millisecond = proto.milliseconds = getSetMillisecond;\n proto.utcOffset = getSetOffset;\n proto.utc = setOffsetToUTC;\n proto.local = setOffsetToLocal;\n proto.parseZone = setOffsetToParsedOffset;\n proto.hasAlignedHourOffset = hasAlignedHourOffset;\n proto.isDST = isDaylightSavingTime;\n proto.isLocal = isLocal;\n proto.isUtcOffset = isUtcOffset;\n proto.isUtc = isUtc;\n proto.isUTC = isUtc;\n proto.zoneAbbr = getZoneAbbr;\n proto.zoneName = getZoneName;\n proto.dates = deprecate(\n 'dates accessor is deprecated. Use date instead.',\n getSetDayOfMonth\n );\n proto.months = deprecate(\n 'months accessor is deprecated. Use month instead',\n getSetMonth\n );\n proto.years = deprecate(\n 'years accessor is deprecated. Use year instead',\n getSetYear\n );\n proto.zone = deprecate(\n 'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',\n getSetZone\n );\n proto.isDSTShifted = deprecate(\n 'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',\n isDaylightSavingTimeShifted\n );\n\n function createUnix(input) {\n return createLocal(input * 1000);\n }\n\n function createInZone() {\n return createLocal.apply(null, arguments).parseZone();\n }\n\n function preParsePostFormat(string) {\n return string;\n }\n\n var proto$1 = Locale.prototype;\n\n proto$1.calendar = calendar;\n proto$1.longDateFormat = longDateFormat;\n proto$1.invalidDate = invalidDate;\n proto$1.ordinal = ordinal;\n proto$1.preparse = preParsePostFormat;\n proto$1.postformat = preParsePostFormat;\n proto$1.relativeTime = relativeTime;\n proto$1.pastFuture = pastFuture;\n proto$1.set = set;\n proto$1.eras = localeEras;\n proto$1.erasParse = localeErasParse;\n proto$1.erasConvertYear = localeErasConvertYear;\n proto$1.erasAbbrRegex = erasAbbrRegex;\n proto$1.erasNameRegex = erasNameRegex;\n proto$1.erasNarrowRegex = erasNarrowRegex;\n\n proto$1.months = localeMonths;\n proto$1.monthsShort = localeMonthsShort;\n proto$1.monthsParse = localeMonthsParse;\n proto$1.monthsRegex = monthsRegex;\n proto$1.monthsShortRegex = monthsShortRegex;\n proto$1.week = localeWeek;\n proto$1.firstDayOfYear = localeFirstDayOfYear;\n proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n proto$1.weekdays = localeWeekdays;\n proto$1.weekdaysMin = localeWeekdaysMin;\n proto$1.weekdaysShort = localeWeekdaysShort;\n proto$1.weekdaysParse = localeWeekdaysParse;\n\n proto$1.weekdaysRegex = weekdaysRegex;\n proto$1.weekdaysShortRegex = weekdaysShortRegex;\n proto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n proto$1.isPM = localeIsPM;\n proto$1.meridiem = localeMeridiem;\n\n function get$1(format, index, field, setter) {\n var locale = getLocale(),\n utc = createUTC().set(setter, index);\n return locale[field](utc, format);\n }\n\n function listMonthsImpl(format, index, field) {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n\n if (index != null) {\n return get$1(format, index, field, 'month');\n }\n\n var i,\n out = [];\n for (i = 0; i < 12; i++) {\n out[i] = get$1(format, i, field, 'month');\n }\n return out;\n }\n\n // ()\n // (5)\n // (fmt, 5)\n // (fmt)\n // (true)\n // (true, 5)\n // (true, fmt, 5)\n // (true, fmt)\n function listWeekdaysImpl(localeSorted, format, index, field) {\n if (typeof localeSorted === 'boolean') {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n } else {\n format = localeSorted;\n index = format;\n localeSorted = false;\n\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n }\n\n var locale = getLocale(),\n shift = localeSorted ? locale._week.dow : 0,\n i,\n out = [];\n\n if (index != null) {\n return get$1(format, (index + shift) % 7, field, 'day');\n }\n\n for (i = 0; i < 7; i++) {\n out[i] = get$1(format, (i + shift) % 7, field, 'day');\n }\n return out;\n }\n\n function listMonths(format, index) {\n return listMonthsImpl(format, index, 'months');\n }\n\n function listMonthsShort(format, index) {\n return listMonthsImpl(format, index, 'monthsShort');\n }\n\n function listWeekdays(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n }\n\n function listWeekdaysShort(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n }\n\n function listWeekdaysMin(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n }\n\n getSetGlobalLocale('en', {\n eras: [\n {\n since: '0001-01-01',\n until: +Infinity,\n offset: 1,\n name: 'Anno Domini',\n narrow: 'AD',\n abbr: 'AD',\n },\n {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: 'Before Christ',\n narrow: 'BC',\n abbr: 'BC',\n },\n ],\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n toInt((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n // Side effect imports\n\n hooks.lang = deprecate(\n 'moment.lang is deprecated. Use moment.locale instead.',\n getSetGlobalLocale\n );\n hooks.langData = deprecate(\n 'moment.langData is deprecated. Use moment.localeData instead.',\n getLocale\n );\n\n var mathAbs = Math.abs;\n\n function abs() {\n var data = this._data;\n\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\n\n data.milliseconds = mathAbs(data.milliseconds);\n data.seconds = mathAbs(data.seconds);\n data.minutes = mathAbs(data.minutes);\n data.hours = mathAbs(data.hours);\n data.months = mathAbs(data.months);\n data.years = mathAbs(data.years);\n\n return this;\n }\n\n function addSubtract$1(duration, input, value, direction) {\n var other = createDuration(input, value);\n\n duration._milliseconds += direction * other._milliseconds;\n duration._days += direction * other._days;\n duration._months += direction * other._months;\n\n return duration._bubble();\n }\n\n // supports only 2.0-style add(1, 's') or add(duration)\n function add$1(input, value) {\n return addSubtract$1(this, input, value, 1);\n }\n\n // supports only 2.0-style subtract(1, 's') or subtract(duration)\n function subtract$1(input, value) {\n return addSubtract$1(this, input, value, -1);\n }\n\n function absCeil(number) {\n if (number < 0) {\n return Math.floor(number);\n } else {\n return Math.ceil(number);\n }\n }\n\n function bubble() {\n var milliseconds = this._milliseconds,\n days = this._days,\n months = this._months,\n data = this._data,\n seconds,\n minutes,\n hours,\n years,\n monthsFromDays;\n\n // if we have a mix of positive and negative values, bubble down first\n // check: https://github.com/moment/moment/issues/2166\n if (\n !(\n (milliseconds >= 0 && days >= 0 && months >= 0) ||\n (milliseconds <= 0 && days <= 0 && months <= 0)\n )\n ) {\n milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n days = 0;\n months = 0;\n }\n\n // The following code bubbles up values, see the tests for\n // examples of what that means.\n data.milliseconds = milliseconds % 1000;\n\n seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n\n minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n\n hours = absFloor(minutes / 60);\n data.hours = hours % 24;\n\n days += absFloor(hours / 24);\n\n // convert days to months\n monthsFromDays = absFloor(daysToMonths(days));\n months += monthsFromDays;\n days -= absCeil(monthsToDays(monthsFromDays));\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n data.days = days;\n data.months = months;\n data.years = years;\n\n return this;\n }\n\n function daysToMonths(days) {\n // 400 years have 146097 days (taking into account leap year rules)\n // 400 years have 12 months === 4800\n return (days * 4800) / 146097;\n }\n\n function monthsToDays(months) {\n // the reverse of daysToMonths\n return (months * 146097) / 4800;\n }\n\n function as(units) {\n if (!this.isValid()) {\n return NaN;\n }\n var days,\n months,\n milliseconds = this._milliseconds;\n\n units = normalizeUnits(units);\n\n if (units === 'month' || units === 'quarter' || units === 'year') {\n days = this._days + milliseconds / 864e5;\n months = this._months + daysToMonths(days);\n switch (units) {\n case 'month':\n return months;\n case 'quarter':\n return months / 3;\n case 'year':\n return months / 12;\n }\n } else {\n // handle milliseconds separately because of floating point math errors (issue #1867)\n days = this._days + Math.round(monthsToDays(this._months));\n switch (units) {\n case 'week':\n return days / 7 + milliseconds / 6048e5;\n case 'day':\n return days + milliseconds / 864e5;\n case 'hour':\n return days * 24 + milliseconds / 36e5;\n case 'minute':\n return days * 1440 + milliseconds / 6e4;\n case 'second':\n return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n case 'millisecond':\n return Math.floor(days * 864e5) + milliseconds;\n default:\n throw new Error('Unknown unit ' + units);\n }\n }\n }\n\n function makeAs(alias) {\n return function () {\n return this.as(alias);\n };\n }\n\n var asMilliseconds = makeAs('ms'),\n asSeconds = makeAs('s'),\n asMinutes = makeAs('m'),\n asHours = makeAs('h'),\n asDays = makeAs('d'),\n asWeeks = makeAs('w'),\n asMonths = makeAs('M'),\n asQuarters = makeAs('Q'),\n asYears = makeAs('y'),\n valueOf$1 = asMilliseconds;\n\n function clone$1() {\n return createDuration(this);\n }\n\n function get$2(units) {\n units = normalizeUnits(units);\n return this.isValid() ? this[units + 's']() : NaN;\n }\n\n function makeGetter(name) {\n return function () {\n return this.isValid() ? this._data[name] : NaN;\n };\n }\n\n var milliseconds = makeGetter('milliseconds'),\n seconds = makeGetter('seconds'),\n minutes = makeGetter('minutes'),\n hours = makeGetter('hours'),\n days = makeGetter('days'),\n months = makeGetter('months'),\n years = makeGetter('years');\n\n function weeks() {\n return absFloor(this.days() / 7);\n }\n\n var round = Math.round,\n thresholds = {\n ss: 44, // a few seconds to seconds\n s: 45, // seconds to minute\n m: 45, // minutes to hour\n h: 22, // hours to day\n d: 26, // days to month/week\n w: null, // weeks to month\n M: 11, // months to year\n };\n\n // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n }\n\n function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {\n var duration = createDuration(posNegDuration).abs(),\n seconds = round(duration.as('s')),\n minutes = round(duration.as('m')),\n hours = round(duration.as('h')),\n days = round(duration.as('d')),\n months = round(duration.as('M')),\n weeks = round(duration.as('w')),\n years = round(duration.as('y')),\n a =\n (seconds <= thresholds.ss && ['s', seconds]) ||\n (seconds < thresholds.s && ['ss', seconds]) ||\n (minutes <= 1 && ['m']) ||\n (minutes < thresholds.m && ['mm', minutes]) ||\n (hours <= 1 && ['h']) ||\n (hours < thresholds.h && ['hh', hours]) ||\n (days <= 1 && ['d']) ||\n (days < thresholds.d && ['dd', days]);\n\n if (thresholds.w != null) {\n a =\n a ||\n (weeks <= 1 && ['w']) ||\n (weeks < thresholds.w && ['ww', weeks]);\n }\n a = a ||\n (months <= 1 && ['M']) ||\n (months < thresholds.M && ['MM', months]) ||\n (years <= 1 && ['y']) || ['yy', years];\n\n a[2] = withoutSuffix;\n a[3] = +posNegDuration > 0;\n a[4] = locale;\n return substituteTimeAgo.apply(null, a);\n }\n\n // This function allows you to set the rounding function for relative time strings\n function getSetRelativeTimeRounding(roundingFunction) {\n if (roundingFunction === undefined) {\n return round;\n }\n if (typeof roundingFunction === 'function') {\n round = roundingFunction;\n return true;\n }\n return false;\n }\n\n // This function allows you to set a threshold for relative time strings\n function getSetRelativeTimeThreshold(threshold, limit) {\n if (thresholds[threshold] === undefined) {\n return false;\n }\n if (limit === undefined) {\n return thresholds[threshold];\n }\n thresholds[threshold] = limit;\n if (threshold === 's') {\n thresholds.ss = limit - 1;\n }\n return true;\n }\n\n function humanize(argWithSuffix, argThresholds) {\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var withSuffix = false,\n th = thresholds,\n locale,\n output;\n\n if (typeof argWithSuffix === 'object') {\n argThresholds = argWithSuffix;\n argWithSuffix = false;\n }\n if (typeof argWithSuffix === 'boolean') {\n withSuffix = argWithSuffix;\n }\n if (typeof argThresholds === 'object') {\n th = Object.assign({}, thresholds, argThresholds);\n if (argThresholds.s != null && argThresholds.ss == null) {\n th.ss = argThresholds.s - 1;\n }\n }\n\n locale = this.localeData();\n output = relativeTime$1(this, !withSuffix, th, locale);\n\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n\n return locale.postformat(output);\n }\n\n var abs$1 = Math.abs;\n\n function sign(x) {\n return (x > 0) - (x < 0) || +x;\n }\n\n function toISOString$1() {\n // for ISO strings we do not use the normal bubbling rules:\n // * milliseconds bubble up until they become hours\n // * days do not bubble at all\n // * months bubble up until they become years\n // This is because there is no context-free conversion between hours and days\n // (think of clock changes)\n // and also not between days and months (28-31 days per month)\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var seconds = abs$1(this._milliseconds) / 1000,\n days = abs$1(this._days),\n months = abs$1(this._months),\n minutes,\n hours,\n years,\n s,\n total = this.asSeconds(),\n totalSign,\n ymSign,\n daysSign,\n hmsSign;\n\n if (!total) {\n // this is the same as C#'s (Noda) and python (isodate)...\n // but not other JS (goog.date)\n return 'P0D';\n }\n\n // 3600 seconds -> 60 minutes -> 1 hour\n minutes = absFloor(seconds / 60);\n hours = absFloor(minutes / 60);\n seconds %= 60;\n minutes %= 60;\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n\n totalSign = total < 0 ? '-' : '';\n ymSign = sign(this._months) !== sign(total) ? '-' : '';\n daysSign = sign(this._days) !== sign(total) ? '-' : '';\n hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n return (\n totalSign +\n 'P' +\n (years ? ymSign + years + 'Y' : '') +\n (months ? ymSign + months + 'M' : '') +\n (days ? daysSign + days + 'D' : '') +\n (hours || minutes || seconds ? 'T' : '') +\n (hours ? hmsSign + hours + 'H' : '') +\n (minutes ? hmsSign + minutes + 'M' : '') +\n (seconds ? hmsSign + s + 'S' : '')\n );\n }\n\n var proto$2 = Duration.prototype;\n\n proto$2.isValid = isValid$1;\n proto$2.abs = abs;\n proto$2.add = add$1;\n proto$2.subtract = subtract$1;\n proto$2.as = as;\n proto$2.asMilliseconds = asMilliseconds;\n proto$2.asSeconds = asSeconds;\n proto$2.asMinutes = asMinutes;\n proto$2.asHours = asHours;\n proto$2.asDays = asDays;\n proto$2.asWeeks = asWeeks;\n proto$2.asMonths = asMonths;\n proto$2.asQuarters = asQuarters;\n proto$2.asYears = asYears;\n proto$2.valueOf = valueOf$1;\n proto$2._bubble = bubble;\n proto$2.clone = clone$1;\n proto$2.get = get$2;\n proto$2.milliseconds = milliseconds;\n proto$2.seconds = seconds;\n proto$2.minutes = minutes;\n proto$2.hours = hours;\n proto$2.days = days;\n proto$2.weeks = weeks;\n proto$2.months = months;\n proto$2.years = years;\n proto$2.humanize = humanize;\n proto$2.toISOString = toISOString$1;\n proto$2.toString = toISOString$1;\n proto$2.toJSON = toISOString$1;\n proto$2.locale = locale;\n proto$2.localeData = localeData;\n\n proto$2.toIsoString = deprecate(\n 'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',\n toISOString$1\n );\n proto$2.lang = lang;\n\n // FORMATTING\n\n addFormatToken('X', 0, 0, 'unix');\n addFormatToken('x', 0, 0, 'valueOf');\n\n // PARSING\n\n addRegexToken('x', matchSigned);\n addRegexToken('X', matchTimestamp);\n addParseToken('X', function (input, array, config) {\n config._d = new Date(parseFloat(input) * 1000);\n });\n addParseToken('x', function (input, array, config) {\n config._d = new Date(toInt(input));\n });\n\n //! moment.js\n\n hooks.version = '2.30.1';\n\n setHookCallback(createLocal);\n\n hooks.fn = proto;\n hooks.min = min;\n hooks.max = max;\n hooks.now = now;\n hooks.utc = createUTC;\n hooks.unix = createUnix;\n hooks.months = listMonths;\n hooks.isDate = isDate;\n hooks.locale = getSetGlobalLocale;\n hooks.invalid = createInvalid;\n hooks.duration = createDuration;\n hooks.isMoment = isMoment;\n hooks.weekdays = listWeekdays;\n hooks.parseZone = createInZone;\n hooks.localeData = getLocale;\n hooks.isDuration = isDuration;\n hooks.monthsShort = listMonthsShort;\n hooks.weekdaysMin = listWeekdaysMin;\n hooks.defineLocale = defineLocale;\n hooks.updateLocale = updateLocale;\n hooks.locales = listLocales;\n hooks.weekdaysShort = listWeekdaysShort;\n hooks.normalizeUnits = normalizeUnits;\n hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n hooks.calendarFormat = getCalendarFormat;\n hooks.prototype = proto;\n\n // currently HTML5 input type only supports 24-hour formats\n hooks.HTML5_FMT = {\n DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // <input type=\"datetime-local\" />\n DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // <input type=\"datetime-local\" step=\"1\" />\n DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // <input type=\"datetime-local\" step=\"0.001\" />\n DATE: 'YYYY-MM-DD', // <input type=\"date\" />\n TIME: 'HH:mm', // <input type=\"time\" />\n TIME_SECONDS: 'HH:mm:ss', // <input type=\"time\" step=\"1\" />\n TIME_MS: 'HH:mm:ss.SSS', // <input type=\"time\" step=\"0.001\" />\n WEEK: 'GGGG-[W]WW', // <input type=\"week\" />\n MONTH: 'YYYY-MM', // <input type=\"month\" />\n };\n\n return hooks;\n\n})));\n","/**\n * Safe chained function\n *\n * Will only create a new function if needed,\n * otherwise will pass back existing functions or null.\n *\n * @param {function} functions to chain\n * @returns {function|null}\n */\nfunction createChainedFunction() {\n for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n funcs[_key] = arguments[_key];\n }\n\n return funcs.filter(function (f) {\n return f != null;\n }).reduce(function (acc, f) {\n if (typeof f !== 'function') {\n throw new Error('Invalid Argument Type, must only provide functions, undefined, or null.');\n }\n\n if (acc === null) return f;\n return function chainedFunction() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n // @ts-ignore\n acc.apply(this, args); // @ts-ignore\n\n f.apply(this, args);\n };\n }, null);\n}\n\nexport default createChainedFunction;","import { getWindow } from './dom/getWindow';\nexport const IsFocusVisibleClassName = 'ms-Fabric--isFocusVisible';\nexport const IsFocusHiddenClassName = 'ms-Fabric--isFocusHidden';\n\n/**\n * Sets the visibility of focus styling.\n *\n * By default, focus styles (the box surrounding a focused Button, for example) only show up when navigational\n * keypresses occur (through Tab, arrows, PgUp/PgDn, Home and End), and are hidden when mouse interactions occur.\n * This API provides an imperative way to turn them on/off.\n *\n * A use case might be when you have a keypress like ctrl-f6 navigate to a particular region on the page,\n * and want focus to show up.\n *\n * @param enabled - whether to remove or add focus\n * @param target - optional target\n */\nexport function setFocusVisibility(enabled: boolean, target?: Element): void {\n const win = target ? getWindow(target) : getWindow();\n\n if (win) {\n const { classList } = win.document.body;\n classList.add(enabled ? IsFocusVisibleClassName : IsFocusHiddenClassName);\n classList.remove(enabled ? IsFocusHiddenClassName : IsFocusVisibleClassName);\n }\n}\n","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : String(i); }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/**\n * @fileOverview Default Tooltip Content\n */\n\nimport React from 'react';\nimport sortBy from 'lodash/sortBy';\nimport isNil from 'lodash/isNil';\nimport clsx from 'clsx';\nimport { isNumOrStr } from '../util/DataUtils';\nfunction defaultFormatter(value) {\n return Array.isArray(value) && isNumOrStr(value[0]) && isNumOrStr(value[1]) ? value.join(' ~ ') : value;\n}\nexport var DefaultTooltipContent = function DefaultTooltipContent(props) {\n var _props$separator = props.separator,\n separator = _props$separator === void 0 ? ' : ' : _props$separator,\n _props$contentStyle = props.contentStyle,\n contentStyle = _props$contentStyle === void 0 ? {} : _props$contentStyle,\n _props$itemStyle = props.itemStyle,\n itemStyle = _props$itemStyle === void 0 ? {} : _props$itemStyle,\n _props$labelStyle = props.labelStyle,\n labelStyle = _props$labelStyle === void 0 ? {} : _props$labelStyle,\n payload = props.payload,\n formatter = props.formatter,\n itemSorter = props.itemSorter,\n wrapperClassName = props.wrapperClassName,\n labelClassName = props.labelClassName,\n label = props.label,\n labelFormatter = props.labelFormatter,\n _props$accessibilityL = props.accessibilityLayer,\n accessibilityLayer = _props$accessibilityL === void 0 ? false : _props$accessibilityL;\n var renderContent = function renderContent() {\n if (payload && payload.length) {\n var listStyle = {\n padding: 0,\n margin: 0\n };\n var items = (itemSorter ? sortBy(payload, itemSorter) : payload).map(function (entry, i) {\n if (entry.type === 'none') {\n return null;\n }\n var finalItemStyle = _objectSpread({\n display: 'block',\n paddingTop: 4,\n paddingBottom: 4,\n color: entry.color || '#000'\n }, itemStyle);\n var finalFormatter = entry.formatter || formatter || defaultFormatter;\n var value = entry.value,\n name = entry.name;\n var finalValue = value;\n var finalName = name;\n if (finalFormatter && finalValue != null && finalName != null) {\n var formatted = finalFormatter(value, name, entry, i, payload);\n if (Array.isArray(formatted)) {\n var _formatted = _slicedToArray(formatted, 2);\n finalValue = _formatted[0];\n finalName = _formatted[1];\n } else {\n finalValue = formatted;\n }\n }\n return (\n /*#__PURE__*/\n // eslint-disable-next-line react/no-array-index-key\n React.createElement(\"li\", {\n className: \"recharts-tooltip-item\",\n key: \"tooltip-item-\".concat(i),\n style: finalItemStyle\n }, isNumOrStr(finalName) ? /*#__PURE__*/React.createElement(\"span\", {\n className: \"recharts-tooltip-item-name\"\n }, finalName) : null, isNumOrStr(finalName) ? /*#__PURE__*/React.createElement(\"span\", {\n className: \"recharts-tooltip-item-separator\"\n }, separator) : null, /*#__PURE__*/React.createElement(\"span\", {\n className: \"recharts-tooltip-item-value\"\n }, finalValue), /*#__PURE__*/React.createElement(\"span\", {\n className: \"recharts-tooltip-item-unit\"\n }, entry.unit || ''))\n );\n });\n return /*#__PURE__*/React.createElement(\"ul\", {\n className: \"recharts-tooltip-item-list\",\n style: listStyle\n }, items);\n }\n return null;\n };\n var finalStyle = _objectSpread({\n margin: 0,\n padding: 10,\n backgroundColor: '#fff',\n border: '1px solid #ccc',\n whiteSpace: 'nowrap'\n }, contentStyle);\n var finalLabelStyle = _objectSpread({\n margin: 0\n }, labelStyle);\n var hasLabel = !isNil(label);\n var finalLabel = hasLabel ? label : '';\n var wrapperCN = clsx('recharts-default-tooltip', wrapperClassName);\n var labelCN = clsx('recharts-tooltip-label', labelClassName);\n if (hasLabel && labelFormatter && payload !== undefined && payload !== null) {\n finalLabel = labelFormatter(label, payload);\n }\n var accessibilityAttributes = accessibilityLayer ? {\n role: 'status',\n 'aria-live': 'assertive'\n } : {};\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n className: wrapperCN,\n style: finalStyle\n }, accessibilityAttributes), /*#__PURE__*/React.createElement(\"p\", {\n className: labelCN,\n style: finalLabelStyle\n }, /*#__PURE__*/React.isValidElement(finalLabel) ? finalLabel : \"\".concat(finalLabel)), renderContent());\n};","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : String(i); }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport clsx from 'clsx';\nimport { isNumber } from '../DataUtils';\nvar CSS_CLASS_PREFIX = 'recharts-tooltip-wrapper';\nvar TOOLTIP_HIDDEN = {\n visibility: 'hidden'\n};\nexport function getTooltipCSSClassName(_ref) {\n var coordinate = _ref.coordinate,\n translateX = _ref.translateX,\n translateY = _ref.translateY;\n return clsx(CSS_CLASS_PREFIX, _defineProperty(_defineProperty(_defineProperty(_defineProperty({}, \"\".concat(CSS_CLASS_PREFIX, \"-right\"), isNumber(translateX) && coordinate && isNumber(coordinate.x) && translateX >= coordinate.x), \"\".concat(CSS_CLASS_PREFIX, \"-left\"), isNumber(translateX) && coordinate && isNumber(coordinate.x) && translateX < coordinate.x), \"\".concat(CSS_CLASS_PREFIX, \"-bottom\"), isNumber(translateY) && coordinate && isNumber(coordinate.y) && translateY >= coordinate.y), \"\".concat(CSS_CLASS_PREFIX, \"-top\"), isNumber(translateY) && coordinate && isNumber(coordinate.y) && translateY < coordinate.y));\n}\nexport function getTooltipTranslateXY(_ref2) {\n var allowEscapeViewBox = _ref2.allowEscapeViewBox,\n coordinate = _ref2.coordinate,\n key = _ref2.key,\n offsetTopLeft = _ref2.offsetTopLeft,\n position = _ref2.position,\n reverseDirection = _ref2.reverseDirection,\n tooltipDimension = _ref2.tooltipDimension,\n viewBox = _ref2.viewBox,\n viewBoxDimension = _ref2.viewBoxDimension;\n if (position && isNumber(position[key])) {\n return position[key];\n }\n var negative = coordinate[key] - tooltipDimension - offsetTopLeft;\n var positive = coordinate[key] + offsetTopLeft;\n if (allowEscapeViewBox[key]) {\n return reverseDirection[key] ? negative : positive;\n }\n if (reverseDirection[key]) {\n var _tooltipBoundary = negative;\n var _viewBoxBoundary = viewBox[key];\n if (_tooltipBoundary < _viewBoxBoundary) {\n return Math.max(positive, viewBox[key]);\n }\n return Math.max(negative, viewBox[key]);\n }\n var tooltipBoundary = positive + tooltipDimension;\n var viewBoxBoundary = viewBox[key] + viewBoxDimension;\n if (tooltipBoundary > viewBoxBoundary) {\n return Math.max(negative, viewBox[key]);\n }\n return Math.max(positive, viewBox[key]);\n}\nexport function getTransformStyle(_ref3) {\n var translateX = _ref3.translateX,\n translateY = _ref3.translateY,\n useTranslate3d = _ref3.useTranslate3d;\n return {\n transform: useTranslate3d ? \"translate3d(\".concat(translateX, \"px, \").concat(translateY, \"px, 0)\") : \"translate(\".concat(translateX, \"px, \").concat(translateY, \"px)\")\n };\n}\nexport function getTooltipTranslate(_ref4) {\n var allowEscapeViewBox = _ref4.allowEscapeViewBox,\n coordinate = _ref4.coordinate,\n offsetTopLeft = _ref4.offsetTopLeft,\n position = _ref4.position,\n reverseDirection = _ref4.reverseDirection,\n tooltipBox = _ref4.tooltipBox,\n useTranslate3d = _ref4.useTranslate3d,\n viewBox = _ref4.viewBox;\n var cssProperties, translateX, translateY;\n if (tooltipBox.height > 0 && tooltipBox.width > 0 && coordinate) {\n translateX = getTooltipTranslateXY({\n allowEscapeViewBox: allowEscapeViewBox,\n coordinate: coordinate,\n key: 'x',\n offsetTopLeft: offsetTopLeft,\n position: position,\n reverseDirection: reverseDirection,\n tooltipDimension: tooltipBox.width,\n viewBox: viewBox,\n viewBoxDimension: viewBox.width\n });\n translateY = getTooltipTranslateXY({\n allowEscapeViewBox: allowEscapeViewBox,\n coordinate: coordinate,\n key: 'y',\n offsetTopLeft: offsetTopLeft,\n position: position,\n reverseDirection: reverseDirection,\n tooltipDimension: tooltipBox.height,\n viewBox: viewBox,\n viewBoxDimension: viewBox.height\n });\n cssProperties = getTransformStyle({\n translateX: translateX,\n translateY: translateY,\n useTranslate3d: useTranslate3d\n });\n } else {\n cssProperties = TOOLTIP_HIDDEN;\n }\n return {\n cssProperties: cssProperties,\n cssClasses: getTooltipCSSClassName({\n translateX: translateX,\n translateY: translateY,\n coordinate: coordinate\n })\n };\n}","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : String(i); }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport React, { PureComponent } from 'react';\nimport { getTooltipTranslate } from '../util/tooltip/translate';\nvar EPSILON = 1;\nexport var TooltipBoundingBox = /*#__PURE__*/function (_PureComponent) {\n _inherits(TooltipBoundingBox, _PureComponent);\n function TooltipBoundingBox() {\n var _this;\n _classCallCheck(this, TooltipBoundingBox);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _callSuper(this, TooltipBoundingBox, [].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n dismissed: false,\n dismissedAtCoordinate: {\n x: 0,\n y: 0\n },\n lastBoundingBox: {\n width: -1,\n height: -1\n }\n });\n _defineProperty(_assertThisInitialized(_this), \"handleKeyDown\", function (event) {\n if (event.key === 'Escape') {\n var _this$props$coordinat, _this$props$coordinat2, _this$props$coordinat3, _this$props$coordinat4;\n _this.setState({\n dismissed: true,\n dismissedAtCoordinate: {\n x: (_this$props$coordinat = (_this$props$coordinat2 = _this.props.coordinate) === null || _this$props$coordinat2 === void 0 ? void 0 : _this$props$coordinat2.x) !== null && _this$props$coordinat !== void 0 ? _this$props$coordinat : 0,\n y: (_this$props$coordinat3 = (_this$props$coordinat4 = _this.props.coordinate) === null || _this$props$coordinat4 === void 0 ? void 0 : _this$props$coordinat4.y) !== null && _this$props$coordinat3 !== void 0 ? _this$props$coordinat3 : 0\n }\n });\n }\n });\n return _this;\n }\n _createClass(TooltipBoundingBox, [{\n key: \"updateBBox\",\n value: function updateBBox() {\n if (this.wrapperNode && this.wrapperNode.getBoundingClientRect) {\n var box = this.wrapperNode.getBoundingClientRect();\n if (Math.abs(box.width - this.state.lastBoundingBox.width) > EPSILON || Math.abs(box.height - this.state.lastBoundingBox.height) > EPSILON) {\n this.setState({\n lastBoundingBox: {\n width: box.width,\n height: box.height\n }\n });\n }\n } else if (this.state.lastBoundingBox.width !== -1 || this.state.lastBoundingBox.height !== -1) {\n this.setState({\n lastBoundingBox: {\n width: -1,\n height: -1\n }\n });\n }\n }\n }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n document.addEventListener('keydown', this.handleKeyDown);\n this.updateBBox();\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n document.removeEventListener('keydown', this.handleKeyDown);\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate() {\n var _this$props$coordinat5, _this$props$coordinat6;\n if (this.props.active) {\n this.updateBBox();\n }\n if (!this.state.dismissed) {\n return;\n }\n if (((_this$props$coordinat5 = this.props.coordinate) === null || _this$props$coordinat5 === void 0 ? void 0 : _this$props$coordinat5.x) !== this.state.dismissedAtCoordinate.x || ((_this$props$coordinat6 = this.props.coordinate) === null || _this$props$coordinat6 === void 0 ? void 0 : _this$props$coordinat6.y) !== this.state.dismissedAtCoordinate.y) {\n this.state.dismissed = false;\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n var _this$props = this.props,\n active = _this$props.active,\n allowEscapeViewBox = _this$props.allowEscapeViewBox,\n animationDuration = _this$props.animationDuration,\n animationEasing = _this$props.animationEasing,\n children = _this$props.children,\n coordinate = _this$props.coordinate,\n hasPayload = _this$props.hasPayload,\n isAnimationActive = _this$props.isAnimationActive,\n offset = _this$props.offset,\n position = _this$props.position,\n reverseDirection = _this$props.reverseDirection,\n useTranslate3d = _this$props.useTranslate3d,\n viewBox = _this$props.viewBox,\n wrapperStyle = _this$props.wrapperStyle;\n var _getTooltipTranslate = getTooltipTranslate({\n allowEscapeViewBox: allowEscapeViewBox,\n coordinate: coordinate,\n offsetTopLeft: offset,\n position: position,\n reverseDirection: reverseDirection,\n tooltipBox: this.state.lastBoundingBox,\n useTranslate3d: useTranslate3d,\n viewBox: viewBox\n }),\n cssClasses = _getTooltipTranslate.cssClasses,\n cssProperties = _getTooltipTranslate.cssProperties;\n var outerStyle = _objectSpread(_objectSpread({\n transition: isAnimationActive && active ? \"transform \".concat(animationDuration, \"ms \").concat(animationEasing) : undefined\n }, cssProperties), {}, {\n pointerEvents: 'none',\n visibility: !this.state.dismissed && active && hasPayload ? 'visible' : 'hidden',\n position: 'absolute',\n top: 0,\n left: 0\n }, wrapperStyle);\n return (\n /*#__PURE__*/\n // This element allow listening to the `Escape` key.\n // See https://github.com/recharts/recharts/pull/2925\n React.createElement(\"div\", {\n tabIndex: -1,\n className: cssClasses,\n style: outerStyle,\n ref: function ref(node) {\n _this2.wrapperNode = node;\n }\n }, children)\n );\n }\n }]);\n return TooltipBoundingBox;\n}(PureComponent);","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : String(i); }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/**\n * @fileOverview Tooltip\n */\nimport React, { PureComponent } from 'react';\nimport { DefaultTooltipContent } from './DefaultTooltipContent';\nimport { TooltipBoundingBox } from './TooltipBoundingBox';\nimport { Global } from '../util/Global';\nimport { getUniqPayload } from '../util/payload/getUniqPayload';\nfunction defaultUniqBy(entry) {\n return entry.dataKey;\n}\nfunction renderContent(content, props) {\n if ( /*#__PURE__*/React.isValidElement(content)) {\n return /*#__PURE__*/React.cloneElement(content, props);\n }\n if (typeof content === 'function') {\n return /*#__PURE__*/React.createElement(content, props);\n }\n return /*#__PURE__*/React.createElement(DefaultTooltipContent, props);\n}\nexport var Tooltip = /*#__PURE__*/function (_PureComponent) {\n _inherits(Tooltip, _PureComponent);\n function Tooltip() {\n _classCallCheck(this, Tooltip);\n return _callSuper(this, Tooltip, arguments);\n }\n _createClass(Tooltip, [{\n key: \"render\",\n value: function render() {\n var _this = this;\n var _this$props = this.props,\n active = _this$props.active,\n allowEscapeViewBox = _this$props.allowEscapeViewBox,\n animationDuration = _this$props.animationDuration,\n animationEasing = _this$props.animationEasing,\n content = _this$props.content,\n coordinate = _this$props.coordinate,\n filterNull = _this$props.filterNull,\n isAnimationActive = _this$props.isAnimationActive,\n offset = _this$props.offset,\n payload = _this$props.payload,\n payloadUniqBy = _this$props.payloadUniqBy,\n position = _this$props.position,\n reverseDirection = _this$props.reverseDirection,\n useTranslate3d = _this$props.useTranslate3d,\n viewBox = _this$props.viewBox,\n wrapperStyle = _this$props.wrapperStyle;\n var finalPayload = payload !== null && payload !== void 0 ? payload : [];\n if (filterNull && finalPayload.length) {\n finalPayload = getUniqPayload(payload.filter(function (entry) {\n return entry.value != null && (entry.hide !== true || _this.props.includeHidden);\n }), payloadUniqBy, defaultUniqBy);\n }\n var hasPayload = finalPayload.length > 0;\n return /*#__PURE__*/React.createElement(TooltipBoundingBox, {\n allowEscapeViewBox: allowEscapeViewBox,\n animationDuration: animationDuration,\n animationEasing: animationEasing,\n isAnimationActive: isAnimationActive,\n active: active,\n coordinate: coordinate,\n hasPayload: hasPayload,\n offset: offset,\n position: position,\n reverseDirection: reverseDirection,\n useTranslate3d: useTranslate3d,\n viewBox: viewBox,\n wrapperStyle: wrapperStyle\n }, renderContent(content, _objectSpread(_objectSpread({}, this.props), {}, {\n payload: finalPayload\n })));\n }\n }]);\n return Tooltip;\n}(PureComponent);\n_defineProperty(Tooltip, \"displayName\", 'Tooltip');\n_defineProperty(Tooltip, \"defaultProps\", {\n accessibilityLayer: false,\n allowEscapeViewBox: {\n x: false,\n y: false\n },\n animationDuration: 400,\n animationEasing: 'ease',\n contentStyle: {},\n coordinate: {\n x: 0,\n y: 0\n },\n cursor: true,\n cursorStyle: {},\n filterNull: true,\n isAnimationActive: !Global.isSsr,\n itemStyle: {},\n labelStyle: {},\n offset: 10,\n reverseDirection: {\n x: false,\n y: false\n },\n separator: ' : ',\n trigger: 'hover',\n useTranslate3d: false,\n viewBox: {\n x: 0,\n y: 0,\n height: 0,\n width: 0\n },\n wrapperStyle: {}\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","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","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = _default;\n\nfunction _default(x) {\n return function constant() {\n return x;\n };\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.InternSet = exports.InternMap = void 0;\n\nclass InternMap extends Map {\n constructor(entries, key = keyof) {\n super();\n Object.defineProperties(this, {\n _intern: {\n value: new Map()\n },\n _key: {\n value: key\n }\n });\n if (entries != null) for (const [key, value] of entries) this.set(key, value);\n }\n\n get(key) {\n return super.get(intern_get(this, key));\n }\n\n has(key) {\n return super.has(intern_get(this, key));\n }\n\n set(key, value) {\n return super.set(intern_set(this, key), value);\n }\n\n delete(key) {\n return super.delete(intern_delete(this, key));\n }\n\n}\n\nexports.InternMap = InternMap;\n\nclass InternSet extends Set {\n constructor(values, key = keyof) {\n super();\n Object.defineProperties(this, {\n _intern: {\n value: new Map()\n },\n _key: {\n value: key\n }\n });\n if (values != null) for (const value of values) this.add(value);\n }\n\n has(value) {\n return super.has(intern_get(this, value));\n }\n\n add(value) {\n return super.add(intern_set(this, value));\n }\n\n delete(value) {\n return super.delete(intern_delete(this, value));\n }\n\n}\n\nexports.InternSet = InternSet;\n\nfunction intern_get({\n _intern,\n _key\n}, value) {\n const key = _key(value);\n\n return _intern.has(key) ? _intern.get(key) : value;\n}\n\nfunction intern_set({\n _intern,\n _key\n}, value) {\n const key = _key(value);\n\n if (_intern.has(key)) return _intern.get(key);\n\n _intern.set(key, value);\n\n return value;\n}\n\nfunction intern_delete({\n _intern,\n _key\n}, value) {\n const key = _key(value);\n\n if (_intern.has(key)) {\n value = _intern.get(key);\n\n _intern.delete(key);\n }\n\n return value;\n}\n\nfunction keyof(value) {\n return value !== null && typeof value === \"object\" ? value.valueOf() : value;\n}","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nexport { _typeof as default };","import 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","import { getGlobalClassNames, getFocusStyle } from '../../Styling';\nimport { IDetailsRowCheckStyleProps, IDetailsRowCheckStyles } from './DetailsRowCheck.types';\nimport { DEFAULT_ROW_HEIGHTS } from './DetailsRow.styles';\nimport { HEADER_HEIGHT } from './DetailsHeader.styles';\nimport { CheckGlobalClassNames } from '../Check/Check.styles';\n\nconst GlobalClassNames = {\n root: 'ms-DetailsRow-check',\n isDisabled: 'ms-DetailsRow-check--isDisabled',\n isHeader: 'ms-DetailsRow-check--isHeader',\n};\n\nexport const CHECK_CELL_WIDTH = 48;\n\nexport const getStyles = (props: IDetailsRowCheckStyleProps): IDetailsRowCheckStyles => {\n const { theme, className, isHeader, selected, anySelected, canSelect, compact, isVisible } = props;\n const classNames = getGlobalClassNames(GlobalClassNames, theme);\n const { rowHeight, compactRowHeight } = DEFAULT_ROW_HEIGHTS;\n\n const height = isHeader ? HEADER_HEIGHT : compact ? compactRowHeight : rowHeight;\n\n const isCheckVisible = isVisible || selected || anySelected;\n\n return {\n root: [classNames.root, className],\n\n check: [\n !canSelect && classNames.isDisabled,\n isHeader && classNames.isHeader,\n getFocusStyle(theme),\n theme.fonts.small,\n CheckGlobalClassNames.checkHost,\n {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n cursor: 'default',\n boxSizing: 'border-box',\n verticalAlign: 'top',\n background: 'none',\n backgroundColor: 'transparent',\n border: 'none',\n opacity: isCheckVisible ? 1 : 0,\n height: height,\n width: CHECK_CELL_WIDTH,\n padding: 0,\n margin: 0,\n },\n ],\n\n isDisabled: [],\n };\n};\n","var createCaseFirst = require('./_createCaseFirst');\n\n/**\n * Converts the first character of `string` to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.upperFirst('fred');\n * // => 'Fred'\n *\n * _.upperFirst('FRED');\n * // => 'FRED'\n */\nvar upperFirst = createCaseFirst('toUpperCase');\n\nmodule.exports = upperFirst;\n","var isNumber = require('./isNumber');\n\n/**\n * Checks if `value` is `NaN`.\n *\n * **Note:** This method is based on\n * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as\n * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for\n * `undefined` and other non-number values.\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 `NaN`, else `false`.\n * @example\n *\n * _.isNaN(NaN);\n * // => true\n *\n * _.isNaN(new Number(NaN));\n * // => true\n *\n * isNaN(undefined);\n * // => true\n *\n * _.isNaN(undefined);\n * // => false\n */\nfunction isNaN(value) {\n // An `NaN` primitive is the only value that is not equal to itself.\n // Perform the `toStringTag` check first to avoid errors with some\n // ActiveX objects in IE.\n return isNumber(value) && value != +value;\n}\n\nmodule.exports = isNaN;\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\r\nimport { ObjCreate, strShimFunction, strShimObject, strShimPrototype, strShimUndefined } from \"./Constants\";\r\n\r\ndeclare var globalThis: Window;\r\ndeclare var global: Window;\r\n\r\nlet _cachedGlobal: Window = null;\r\n\r\n/**\r\n * Returns the current global scope object, for a normal web page this will be the current\r\n * window, for a Web Worker this will be current worker global scope via \"self\". The internal\r\n * implementation returns the first available instance object in the following order\r\n * - globalThis (New standard)\r\n * - self (Will return the current window instance for supported browsers)\r\n * - window (fallback for older browser implementations)\r\n * - global (NodeJS standard)\r\n * - <null> (When all else fails)\r\n * While the return type is a Window for the normal case, not all environments will support all\r\n * of the properties or functions.\r\n */\r\nexport function getGlobal(useCached: boolean = true): Window {\r\n let result = useCached === false ? null : _cachedGlobal;\r\n\r\n if (!result) {\r\n if (typeof globalThis !== strShimUndefined) {\r\n result = globalThis;\r\n }\r\n\r\n if (!result && typeof self !== strShimUndefined) {\r\n result = self;\r\n }\r\n\r\n if (!result && typeof window !== strShimUndefined) {\r\n result = window;\r\n }\r\n \r\n if (!result && typeof global !== strShimUndefined) {\r\n result = global;\r\n }\r\n\r\n _cachedGlobal = result;\r\n }\r\n\r\n return result;\r\n}\r\n\r\nexport function throwTypeError(message: string): never {\r\n throw new TypeError(message);\r\n}\r\n\r\n/**\r\n * Creates an object that has the specified prototype, and that optionally contains specified properties. This helper exists to avoid adding a polyfil\r\n * for older browsers that do not define Object.create eg. ES3 only, IE8 just in case any page checks for presence/absence of the prototype implementation.\r\n * Note: For consistency this will not use the Object.create implementation if it exists as this would cause a testing requirement to test with and without the implementations\r\n * @param obj Object to use as a prototype. May be null\r\n */\r\nexport function objCreateFn(obj: any): any {\r\n var func = ObjCreate;\r\n // Use build in Object.create\r\n if (func) {\r\n // Use Object create method if it exists\r\n return func(obj);\r\n }\r\n if (obj == null) {\r\n return {};\r\n }\r\n var type = typeof obj;\r\n if (type !== strShimObject && type !== strShimFunction) {\r\n throwTypeError(\"Object prototype may only be an Object:\" + obj);\r\n }\r\n\r\n function tmpFunc() {}\r\n tmpFunc[strShimPrototype] = obj;\r\n\r\n return new (tmpFunc as any)();\r\n}\r\n\r\n","module.exports = function(originalModule) {\n\tif (!originalModule.webpackPolyfill) {\n\t\tvar module = Object.create(originalModule);\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"exports\", {\n\t\t\tenumerable: true\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\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 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","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"color\", {\n enumerable: true,\n get: function () {\n return _color.default;\n }\n});\nObject.defineProperty(exports, \"cubehelix\", {\n enumerable: true,\n get: function () {\n return _cubehelix.default;\n }\n});\nObject.defineProperty(exports, \"gray\", {\n enumerable: true,\n get: function () {\n return _lab.gray;\n }\n});\nObject.defineProperty(exports, \"hcl\", {\n enumerable: true,\n get: function () {\n return _lab.hcl;\n }\n});\nObject.defineProperty(exports, \"hsl\", {\n enumerable: true,\n get: function () {\n return _color.hsl;\n }\n});\nObject.defineProperty(exports, \"lab\", {\n enumerable: true,\n get: function () {\n return _lab.default;\n }\n});\nObject.defineProperty(exports, \"lch\", {\n enumerable: true,\n get: function () {\n return _lab.lch;\n }\n});\nObject.defineProperty(exports, \"rgb\", {\n enumerable: true,\n get: function () {\n return _color.rgb;\n }\n});\n\nvar _color = _interopRequireWildcard(require(\"./color.js\"));\n\nvar _lab = _interopRequireWildcard(require(\"./lab.js\"));\n\nvar _cubehelix = _interopRequireDefault(require(\"./cubehelix.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = nogamma;\nexports.gamma = gamma;\nexports.hue = hue;\n\nvar _constant = _interopRequireDefault(require(\"./constant.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction linear(a, d) {\n return function (t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function (t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nfunction hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : (0, _constant.default)(isNaN(a) ? b : a);\n}\n\nfunction gamma(y) {\n return (y = +y) === 1 ? nogamma : function (a, b) {\n return b - a ? exponential(a, b, y) : (0, _constant.default)(isNaN(a) ? b : a);\n };\n}\n\nfunction nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : (0, _constant.default)(isNaN(a) ? b : a);\n}","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperties(e, r) {\n for (var t = 0; t < r.length; t++) {\n var o = r[t];\n o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, toPropertyKey(o.key), o);\n }\n}\nfunction _createClass(e, r, t) {\n return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", {\n writable: !1\n }), e;\n}\nexport { _createClass as default };","import { IDetailsHeaderStyleProps, IDetailsHeaderStyles } from './DetailsHeader.types';\nimport {\n getFocusStyle,\n focusClear,\n IStyle,\n getGlobalClassNames,\n HighContrastSelector,\n hiddenContentStyle,\n ITheme,\n getHighContrastNoAdjustStyle,\n} from '../../Styling';\nimport { getRTL, IsFocusVisibleClassName } from '../../Utilities';\nimport { DEFAULT_CELL_STYLE_PROPS } from './DetailsRow.styles';\nimport { ICellStyleProps } from './DetailsRow.types';\n// For every group level there is a GroupSpacer added. Importing this const to have the source value in one place.\nimport { SPACER_WIDTH as GROUP_EXPANDER_WIDTH } from '../GroupedList/GroupSpacer';\n\nconst GlobalClassNames = {\n tooltipHost: 'ms-TooltipHost',\n root: 'ms-DetailsHeader',\n cell: 'ms-DetailsHeader-cell',\n cellIsCheck: 'ms-DetailsHeader-cellIsCheck',\n collapseButton: 'ms-DetailsHeader-collapseButton',\n isCollapsed: 'is-collapsed',\n isAllSelected: 'is-allSelected',\n isSelectAllHidden: 'is-selectAllHidden',\n isResizingColumn: 'is-resizingColumn',\n cellSizer: 'ms-DetailsHeader-cellSizer',\n isResizing: 'is-resizing',\n dropHintCircleStyle: 'ms-DetailsHeader-dropHintCircleStyle',\n dropHintCaretStyle: 'ms-DetailsHeader-dropHintCaretStyle',\n dropHintLineStyle: 'ms-DetailsHeader-dropHintLineStyle',\n cellTitle: 'ms-DetailsHeader-cellTitle',\n cellName: 'ms-DetailsHeader-cellName',\n filterChevron: 'ms-DetailsHeader-filterChevron',\n gripperBarVertical: 'ms-DetailsColumn-gripperBarVertical',\n checkTooltip: 'ms-DetailsHeader-checkTooltip',\n check: 'ms-DetailsHeader-check',\n};\n\nexport const HEADER_HEIGHT = 42;\n\nexport const getCellStyles = (props: { theme: ITheme; cellStyleProps?: ICellStyleProps }): IStyle => {\n const { theme, cellStyleProps = DEFAULT_CELL_STYLE_PROPS } = props;\n const { semanticColors } = theme;\n const classNames = getGlobalClassNames(GlobalClassNames, theme);\n\n return [\n classNames.cell,\n getFocusStyle(theme),\n {\n color: semanticColors.bodyText,\n position: 'relative',\n display: 'inline-block',\n boxSizing: 'border-box',\n padding: `0 ${cellStyleProps.cellRightPadding}px 0 ${cellStyleProps.cellLeftPadding}px`,\n lineHeight: 'inherit',\n margin: '0',\n height: HEADER_HEIGHT,\n verticalAlign: 'top',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis',\n textAlign: 'left',\n },\n ];\n};\n\nexport const getStyles = (props: IDetailsHeaderStyleProps): IDetailsHeaderStyles => {\n const {\n theme,\n className,\n isAllSelected,\n isResizingColumn,\n isSizing,\n isAllCollapsed,\n cellStyleProps = DEFAULT_CELL_STYLE_PROPS,\n } = props;\n\n const { semanticColors, palette, fonts } = theme;\n const classNames = getGlobalClassNames(GlobalClassNames, theme);\n\n const colors = {\n iconForegroundColor: semanticColors.bodySubtext,\n headerForegroundColor: semanticColors.bodyText,\n headerBackgroundColor: semanticColors.bodyBackground,\n resizerColor: palette.neutralTertiaryAlt,\n };\n\n const cellSizerFadeInStyles: IStyle = {\n opacity: 1,\n transition: 'opacity 0.3s linear',\n };\n\n const cellStyles = getCellStyles(props);\n\n return {\n root: [\n classNames.root,\n fonts.small,\n {\n display: 'inline-block',\n background: colors.headerBackgroundColor,\n position: 'relative',\n minWidth: '100%',\n verticalAlign: 'top',\n height: HEADER_HEIGHT,\n lineHeight: HEADER_HEIGHT,\n whiteSpace: 'nowrap',\n boxSizing: 'content-box',\n paddingBottom: '1px',\n paddingTop: '16px',\n borderBottom: `1px solid ${semanticColors.bodyDivider}`,\n cursor: 'default',\n userSelect: 'none',\n selectors: {\n [`&:hover .${classNames.check}`]: {\n opacity: 1,\n },\n [`& .${classNames.tooltipHost} .${classNames.checkTooltip}`]: {\n display: 'block',\n },\n },\n },\n isAllSelected && classNames.isAllSelected,\n isResizingColumn && classNames.isResizingColumn,\n className,\n ],\n\n check: [\n classNames.check,\n {\n height: HEADER_HEIGHT,\n },\n {\n selectors: {\n [`.${IsFocusVisibleClassName} &:focus`]: {\n opacity: 1,\n },\n },\n },\n ],\n\n cellWrapperPadded: {\n paddingRight: cellStyleProps.cellExtraRightPadding + cellStyleProps.cellRightPadding,\n },\n\n cellIsCheck: [\n cellStyles,\n classNames.cellIsCheck,\n {\n position: 'relative',\n padding: 0,\n margin: 0,\n display: 'inline-flex',\n alignItems: 'center',\n border: 'none',\n },\n isAllSelected && {\n opacity: 1,\n },\n ],\n\n cellIsGroupExpander: [\n cellStyles,\n {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n fontSize: fonts.small.fontSize,\n padding: 0,\n border: 'none',\n width: GROUP_EXPANDER_WIDTH, // align with GroupedList's first expandIcon cell width.\n color: palette.neutralSecondary,\n selectors: {\n ':hover': {\n backgroundColor: palette.neutralLighter,\n },\n ':active': {\n backgroundColor: palette.neutralLight,\n },\n },\n },\n ],\n\n cellIsActionable: {\n selectors: {\n ':hover': {\n color: semanticColors.bodyText,\n background: semanticColors.listHeaderBackgroundHovered,\n },\n ':active': {\n background: semanticColors.listHeaderBackgroundPressed,\n },\n },\n },\n cellIsEmpty: {\n textOverflow: 'clip',\n },\n\n cellSizer: [\n classNames.cellSizer,\n focusClear(),\n {\n display: 'inline-block',\n position: 'relative',\n cursor: 'ew-resize',\n bottom: 0,\n top: 0,\n overflow: 'hidden',\n height: 'inherit',\n background: 'transparent',\n zIndex: 1,\n width: 16,\n selectors: {\n ':after': {\n content: '\"\"',\n position: 'absolute',\n top: 0,\n bottom: 0,\n width: 1,\n background: colors.resizerColor,\n opacity: 0,\n left: '50%',\n },\n ':focus:after': cellSizerFadeInStyles,\n ':hover:after': cellSizerFadeInStyles,\n [`&.${classNames.isResizing}:after`]: [\n cellSizerFadeInStyles,\n {\n boxShadow: '0 0 5px 0 rgba(0, 0, 0, 0.4)',\n },\n ],\n },\n },\n ],\n\n cellIsResizing: classNames.isResizing,\n\n cellSizerStart: {\n margin: '0 -8px',\n },\n\n cellSizerEnd: {\n margin: 0,\n marginLeft: -16,\n },\n\n collapseButton: [\n classNames.collapseButton,\n {\n transformOrigin: '50% 50%',\n transition: 'transform .1s linear',\n },\n isAllCollapsed\n ? [\n classNames.isCollapsed,\n {\n transform: 'rotate(0deg)',\n },\n ]\n : {\n transform: getRTL(theme) ? 'rotate(-90deg)' : 'rotate(90deg)',\n },\n ],\n\n checkTooltip: classNames.checkTooltip,\n\n sizingOverlay: isSizing && {\n position: 'absolute',\n left: 0,\n top: 0,\n right: 0,\n bottom: 0,\n cursor: 'ew-resize',\n background: 'rgba(255, 255, 255, 0)',\n selectors: {\n [HighContrastSelector]: {\n background: 'transparent',\n ...getHighContrastNoAdjustStyle(),\n },\n },\n },\n\n accessibleLabel: hiddenContentStyle,\n\n dropHintCircleStyle: [\n classNames.dropHintCircleStyle,\n {\n display: 'inline-block',\n visibility: 'hidden',\n position: 'absolute',\n bottom: 0,\n height: 9,\n width: 9,\n borderRadius: '50%',\n marginLeft: -5,\n top: 34,\n overflow: 'visible',\n zIndex: 10,\n border: `1px solid ${palette.themePrimary}`,\n background: palette.white,\n },\n ],\n\n dropHintCaretStyle: [\n classNames.dropHintCaretStyle,\n {\n display: 'none',\n position: 'absolute',\n top: -28,\n left: -6.5,\n fontSize: fonts.medium.fontSize,\n color: palette.themePrimary,\n overflow: 'visible',\n zIndex: 10,\n },\n ],\n\n dropHintLineStyle: [\n classNames.dropHintLineStyle,\n {\n display: 'none',\n position: 'absolute',\n bottom: 0,\n top: 0,\n overflow: 'hidden',\n height: 42,\n width: 1,\n background: palette.themePrimary,\n zIndex: 10,\n },\n ],\n\n dropHintStyle: {\n display: 'inline-block',\n position: 'absolute',\n },\n };\n};\n","import { IButtonStyles } from '../Button.types';\nimport {\n HighContrastSelector,\n ITheme,\n concatStyleSets,\n getFocusStyle,\n IStyle,\n getHighContrastNoAdjustStyle,\n} from '../../../Styling';\nimport { memoizeFunction } from '../../../Utilities';\n\nexport const getStyles = memoizeFunction(\n (theme: ITheme, customStyles?: IButtonStyles): IButtonStyles => {\n const { effects, palette, semanticColors } = theme;\n\n const buttonHighContrastFocus = {\n left: -2,\n top: -2,\n bottom: -2,\n right: -2,\n border: 'none',\n };\n\n const splitButtonDividerBaseStyles: IStyle = {\n position: 'absolute',\n width: 1,\n right: 31,\n top: 8,\n bottom: 8,\n };\n\n const splitButtonStyles: IButtonStyles = {\n splitButtonContainer: [\n getFocusStyle(theme, { highContrastStyle: buttonHighContrastFocus, inset: 2 }),\n {\n display: 'inline-flex',\n selectors: {\n '.ms-Button--default': {\n borderTopRightRadius: '0',\n borderBottomRightRadius: '0',\n borderRight: 'none',\n },\n '.ms-Button--primary': {\n borderTopRightRadius: '0',\n borderBottomRightRadius: '0',\n border: 'none',\n\n selectors: {\n [HighContrastSelector]: {\n color: 'WindowText',\n backgroundColor: 'Window',\n border: '1px solid WindowText',\n borderRightWidth: '0',\n ...getHighContrastNoAdjustStyle(),\n },\n },\n },\n '.ms-Button--primary + .ms-Button': {\n border: 'none',\n selectors: {\n [HighContrastSelector]: {\n border: '1px solid WindowText',\n borderLeftWidth: '0',\n },\n },\n },\n },\n },\n ],\n splitButtonContainerHovered: {\n selectors: {\n '.ms-Button--primary': {\n selectors: {\n [HighContrastSelector]: {\n color: 'Window',\n backgroundColor: 'Highlight',\n },\n },\n },\n '.ms-Button.is-disabled': {\n color: semanticColors.buttonTextDisabled,\n selectors: {\n [HighContrastSelector]: {\n color: 'GrayText',\n borderColor: 'GrayText',\n backgroundColor: 'Window',\n },\n },\n },\n },\n },\n splitButtonContainerChecked: {\n selectors: {\n '.ms-Button--primary': {\n selectors: {\n [HighContrastSelector]: {\n color: 'Window',\n backgroundColor: 'WindowText',\n ...getHighContrastNoAdjustStyle(),\n },\n },\n },\n },\n },\n splitButtonContainerCheckedHovered: {\n selectors: {\n '.ms-Button--primary': {\n selectors: {\n [HighContrastSelector]: {\n color: 'Window',\n backgroundColor: 'WindowText',\n ...getHighContrastNoAdjustStyle(),\n },\n },\n },\n },\n },\n splitButtonContainerFocused: {\n outline: 'none!important',\n },\n splitButtonMenuButton: {\n padding: 6,\n height: 'auto',\n boxSizing: 'border-box',\n borderRadius: 0,\n borderTopRightRadius: effects.roundedCorner2,\n borderBottomRightRadius: effects.roundedCorner2,\n border: `1px solid ${palette.neutralSecondaryAlt}`,\n borderLeft: 'none',\n outline: 'transparent',\n userSelect: 'none',\n display: 'inline-block',\n textDecoration: 'none',\n textAlign: 'center',\n cursor: 'pointer',\n verticalAlign: 'top',\n width: 32,\n marginLeft: -1,\n marginTop: 0,\n marginRight: 0,\n marginBottom: 0,\n [HighContrastSelector]: {\n '.ms-Button-menuIcon': {\n color: 'WindowText',\n },\n },\n },\n splitButtonDivider: {\n ...splitButtonDividerBaseStyles,\n selectors: {\n [HighContrastSelector]: {\n backgroundColor: 'WindowText',\n },\n },\n },\n splitButtonDividerDisabled: {\n ...splitButtonDividerBaseStyles,\n selectors: {\n [HighContrastSelector]: {\n backgroundColor: 'GrayText',\n },\n },\n },\n splitButtonMenuButtonDisabled: {\n pointerEvents: 'none',\n border: 'none',\n selectors: {\n ':hover': {\n cursor: 'default',\n },\n\n '.ms-Button--primary': {\n selectors: {\n [HighContrastSelector]: {\n color: 'GrayText',\n borderColor: 'GrayText',\n backgroundColor: 'Window',\n },\n },\n },\n '.ms-Button-menuIcon': {\n selectors: {\n [HighContrastSelector]: {\n color: 'GrayText',\n },\n },\n },\n [HighContrastSelector]: {\n color: 'GrayText',\n border: '1px solid GrayText',\n backgroundColor: 'Window',\n },\n },\n },\n\n splitButtonFlexContainer: {\n display: 'flex',\n height: '100%',\n flexWrap: 'nowrap',\n justifyContent: 'center',\n alignItems: 'center',\n },\n\n splitButtonContainerDisabled: {\n outline: 'none',\n border: 'none',\n selectors: {\n [HighContrastSelector]: {\n color: 'GrayText',\n borderColor: 'GrayText',\n backgroundColor: 'Window',\n ...getHighContrastNoAdjustStyle(),\n },\n },\n },\n splitButtonMenuFocused: {\n ...getFocusStyle(theme, { highContrastStyle: buttonHighContrastFocus, inset: 2 }),\n },\n };\n\n return concatStyleSets(splitButtonStyles, customStyles)!;\n },\n);\n","import * as React from 'react';\nimport { IPickerItemProps } from './PickerItem.types';\nimport { IRefObject, IStyleFunctionOrObject } from '../../Utilities';\nimport { ISuggestionModel, ISuggestionsProps } from './Suggestions/Suggestions.types';\nimport { Autofill } from '../../Autofill';\nimport { ICalloutProps } from '../../Callout';\nimport { ITheme, IStyle } from '../../Styling';\nimport { ISuggestionItemProps } from '../pickers/Suggestions/SuggestionsItem.types';\n\n/**\n * BasePicker component.\n * {@docCategory Pickers}\n */\nexport interface IBasePicker<T> {\n /** Gets the current value of the input. */\n items: T[] | undefined;\n\n /** Sets focus to the focus zone. */\n focus: () => void;\n\n /** Set focus to the input */\n focusInput: () => void;\n\n /**\n * When called, will take the currently selected suggestion and complete it.\n * If called with forceComplete true, it will attempt to force the current suggestion\n * to complete, must provide both createGenericSuggestion, so the text can be turned into\n * an object in the right shape, and onValidateInput, so the object knows if it's correct or not.\n */\n completeSuggestion: (forceComplete?: boolean) => void;\n}\n\n/**\n * Type T is the type of the item that is displayed\n * and searched for by the picker. For example, if the picker is\n * displaying persona's then type T could either be of Persona or IPersona props\n * {@docCategory Pickers}\n */\n// eslint-disable-next-line deprecation/deprecation\nexport interface IBasePickerProps<T> extends React.Props<any> {\n /**\n * Optional callback to access the IBasePicker interface. Use this instead of ref for accessing\n * the public methods and properties of the component.\n */\n componentRef?: IRefObject<IBasePicker<T>>;\n\n /**\n * Function that specifies how the selected item will appear.\n */\n onRenderItem?: (props: IPickerItemProps<T>) => JSX.Element;\n\n /**\n * Function that specifies how an individual suggestion item will appear.\n */\n onRenderSuggestionsItem?: (props: T, itemProps: ISuggestionItemProps<T>) => JSX.Element;\n\n /**\n * A callback for what should happen when a person types text into the input.\n * Returns the already selected items so the resolver can filter them out.\n * If used in conjunction with resolveDelay this will only kick off after the delay throttle.\n */\n onResolveSuggestions: (filter: string, selectedItems?: T[]) => T[] | PromiseLike<T[]>;\n\n /**\n * The delay time in ms before resolving suggestions, which is kicked off when input has been changed.\n * e.g. If a second input change happens within the resolveDelay time, the timer will start over.\n * Only until after the timer completes will onResolveSuggestions be called.\n */\n resolveDelay?: number;\n\n /**\n * A callback for what should happen when a user clicks within the input area.\n * @deprecated Please use onEmptyResolveSuggestions instead, as the suggestions aren't about\n * setting focus as they are about resolving suggestions when there is no input.\n */\n onEmptyInputFocus?: (selectedItems?: T[]) => T[] | PromiseLike<T[]>;\n\n /**\n * A callback for what should happen when suggestions are shown without\n * input provided.\n * Returns the already selected items so the resolver can filter them out.\n * If used in conjunction with resolveDelay this will only kick off after the delay throttle.\n */\n onEmptyResolveSuggestions?: (selectedItems?: T[]) => T[] | PromiseLike<T[]>;\n\n /**\n * Initial items that have already been selected and should appear in the people picker.\n */\n defaultSelectedItems?: T[];\n\n /**\n * A callback for when the selected list of items changes.\n */\n onChange?: (items?: T[]) => void;\n\n /**\n * A callback for when the user put focus on the picker\n * @deprecated Use `inputProps.onFocus` instead\n */\n onFocus?: React.FocusEventHandler<HTMLInputElement | Autofill>;\n\n /**\n * A callback for when the user moves the focus away from the picker\n */\n onBlur?: React.FocusEventHandler<HTMLInputElement | Autofill>;\n\n /**\n * A callback to get text from an item. Used to autofill text in the pickers.\n */\n getTextFromItem?: (item: T, currentValue?: string) => string;\n\n /**\n * A callback that gets the rest of the results when a user clicks get more results.\n */\n onGetMoreResults?: (filter: string, selectedItems?: T[]) => T[] | PromiseLike<T[]>;\n\n /**\n * ClassName for the picker.\n */\n className?: string;\n\n /**\n * The properties that will get passed to the Suggestions component.\n */\n pickerSuggestionsProps?: IBasePickerSuggestionsProps;\n\n /**\n * The properties that will get passed to the Callout component.\n */\n pickerCalloutProps?: ICalloutProps;\n\n /**\n * AutoFill input native props\n * @defaultvalue undefined\n */\n inputProps?: IInputProps;\n\n /**\n * A callback for when an item is removed from the suggestion list\n */\n onRemoveSuggestion?: (item: T) => void;\n\n /**\n * A function used to validate if raw text entered into the well can be added into the selected items list\n */\n onValidateInput?: (input: string) => ValidationState;\n\n /**\n * The text to display while searching for more results in a limited suggestions list\n */\n searchingText?: ((props: { input: string }) => string) | string;\n\n /**\n * Flag for disabling the picker.\n * @defaultvalue false\n */\n disabled?: boolean;\n\n /**\n * Restrict the amount of selectable items.\n * @defaultvalue undefined\n */\n itemLimit?: number;\n\n /**\n * Function that specifies how arbitrary text entered into the well is handled.\n */\n createGenericItem?: (input: string, ValidationState: ValidationState) => ISuggestionModel<T> | T;\n\n /**\n * Aria label for the \"X\" button in the selected item component.\n * @defaultvalue ''\n */\n removeButtonAriaLabel?: string;\n\n /**\n * Aria label for the picker component. Will be applied to the element with role=\"combobox\"\n * If it's supplied, the input element with also have aria-labelledby added and point to the\n * element with role=combobox\n * @defaultvalue undefined\n */\n ['aria-label']?: string;\n\n /**\n * A callback to process a selection after the user selects something from the picker. If the callback returns null,\n * the item will not be added to the picker.\n */\n onItemSelected?: (selectedItem?: T) => T | PromiseLike<T> | null;\n\n /**\n * The items that the base picker should currently display as selected.\n * If this is provided then the picker will act as a controlled component.\n */\n selectedItems?: T[];\n\n /**\n * A callback used to modify the input string.\n */\n onInputChange?: (input: string) => string;\n\n /**\n * A callback to override the default behavior of adding the selected suggestion on dismiss. If it returns true or\n * nothing, the selected item will be added on dismiss. If false, the selected item will not be added on dismiss.\n *\n */\n onDismiss?: (ev?: any, selectedItem?: T) => boolean | void;\n\n /**\n * Adds an additional alert for the currently selected suggestion. This prop should be set to true for IE11 and below,\n * as it enables proper screen reader behavior for each suggestion (since aria-activedescendant does not work\n * with IE11). It should not be set for modern browsers (Edge, Chrome).\n * @defaultvalue false\n */\n enableSelectedSuggestionAlert?: boolean;\n\n /**\n * Call to provide customized styling that will layer on top of the variant rules.\n */\n styles?: IStyleFunctionOrObject<IBasePickerStyleProps, IBasePickerStyles>;\n\n /**\n * Theme provided by styled() function.\n */\n theme?: ITheme;\n}\n\n/**\n * Subset of picker options that may be legally passed through a picker to its\n * internal Suggestions component.\n * {@docCategory Pickers}\n */\nexport interface IBasePickerSuggestionsProps<T = any>\n extends Pick<\n ISuggestionsProps<T>,\n | 'onRenderNoResultFound'\n | 'suggestionsHeaderText'\n | 'mostRecentlyUsedHeaderText'\n | 'noResultsFoundText'\n | 'className'\n | 'suggestionsClassName'\n | 'suggestionsItemClassName'\n | 'searchForMoreIcon'\n | 'searchForMoreText'\n | 'forceResolveText'\n | 'loadingText'\n | 'searchingText'\n | 'resultsFooterFull'\n | 'resultsFooter'\n | 'resultsMaximumNumber'\n | 'showRemoveButtons'\n | 'suggestionsAvailableAlertText'\n | 'suggestionsContainerAriaLabel'\n | 'showForceResolve'\n > {}\n\n/**\n * Validation state of the user's input.\n * {@docCategory Pickers}\n */\nexport enum ValidationState {\n /** User input is valid. */\n valid,\n\n /** User input could be valid or invalid, its state is not known yet. */\n warning,\n\n /** User input is invalid. */\n invalid,\n}\n\n/**\n * Pickers' input props interface\n * {@docCategory Pickers}\n */\nexport interface IInputProps extends React.InputHTMLAttributes<HTMLInputElement> {\n /**\n * Screen reader label to apply to an input element.\n */\n 'aria-label'?: string;\n\n /**\n * The default value to be visible when the autofill first created.\n * This is different than placeholder text because the placeholder text will disappear and re-appear. This\n * text persists until deleted or changed.\n */\n defaultVisibleValue?: string;\n}\n\n/**\n * The props needed to construct styles.\n * {@docCategory Pickers}\n */\nexport type IBasePickerStyleProps = Pick<IBasePickerProps<any>, 'theme' | 'className' | 'disabled'> & {\n /** Whether text style area is focused */\n isFocused?: boolean;\n\n /** Optional pickerInput className */\n inputClassName?: string;\n};\n\n/**\n * Represents the stylable areas of the control.\n * {@docCategory Pickers}\n */\nexport interface IBasePickerStyles {\n /** Root element of any picker extending from BasePicker (wraps all the elements). */\n root: IStyle;\n\n /**\n * Refers to the elements already selected (picked) wrapped by `itemsWrapper` along with the input to type\n * a new selection.\n */\n text: IStyle;\n\n /** Refers to the items already selected (picked). */\n itemsWrapper: IStyle;\n\n /** Refers to the input were to type new selections (picks). */\n input: IStyle;\n\n /** Refers to helper element used for accessibility tools (hidden from view on screen). */\n screenReaderText: IStyle;\n}\n","/**\n * Creates an array with all falsey values removed. The values `false`, `null`,\n * `0`, `\"\"`, `undefined`, and `NaN` are falsey.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to compact.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.compact([0, 1, false, 2, '', 3]);\n * // => [1, 2, 3]\n */\nfunction compact(array) {\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 (value) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nmodule.exports = compact;\n","var baseFlatten = require('./_baseFlatten'),\n baseOrderBy = require('./_baseOrderBy'),\n baseRest = require('./_baseRest'),\n isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\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|Function[])} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 30 },\n * { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, [function(o) { return o.user; }]);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]]\n */\nvar sortBy = baseRest(function(collection, iteratees) {\n if (collection == null) {\n return [];\n }\n var length = iteratees.length;\n if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n iteratees = [];\n } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n iteratees = [iteratees[0]];\n }\n return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n});\n\nmodule.exports = sortBy;\n","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n/**\n * @fileOverview Dot\n */\nimport React from 'react';\nimport clsx from 'clsx';\nimport { adaptEventHandlers } from '../util/types';\nimport { filterProps } from '../util/ReactUtils';\nexport var Dot = function Dot(props) {\n var cx = props.cx,\n cy = props.cy,\n r = props.r,\n className = props.className;\n var layerClass = clsx('recharts-dot', className);\n if (cx === +cx && cy === +cy && r === +r) {\n return /*#__PURE__*/React.createElement(\"circle\", _extends({}, filterProps(props, false), adaptEventHandlers(props), {\n className: layerClass,\n cx: cx,\n cy: cy,\n r: r\n }));\n }\n return null;\n};","import { getWindow } from './dom/getWindow';\n\n/**\n * Fetches an item from session storage without throwing an exception\n * @param key The key of the item to fetch from session storage\n */\nexport function getItem(key: string): string | null {\n let result = null;\n try {\n const win = getWindow();\n result = win ? win.sessionStorage.getItem(key) : null;\n } catch (e) {\n /* Eat the exception */\n }\n return result;\n}\n\n/**\n * Inserts an item into session storage without throwing an exception\n * @param key The key of the item to add to session storage\n * @param data The data to put into session storage\n */\nexport function setItem(key: string, data: string): void {\n try {\n getWindow()?.sessionStorage.setItem(key, data);\n } catch (e) {\n /* Eat the exception */\n }\n}\n","import { IBasePickerStyleProps, IBasePickerStyles } from './BasePicker.types';\nimport {\n getGlobalClassNames,\n getInputFocusStyle,\n getPlaceholderStyles,\n hiddenContentStyle,\n HighContrastSelector,\n} from '../../Styling';\nimport { IStyle } from '../../Styling';\n\nconst GlobalClassNames = {\n root: 'ms-BasePicker',\n text: 'ms-BasePicker-text',\n itemsWrapper: 'ms-BasePicker-itemsWrapper',\n input: 'ms-BasePicker-input',\n};\n\nexport function getStyles(props: IBasePickerStyleProps): IBasePickerStyles {\n const { className, theme, isFocused, inputClassName, disabled } = props;\n\n if (!theme) {\n throw new Error('theme is undefined or null in base BasePicker getStyles function.');\n }\n const { semanticColors, effects, fonts } = theme;\n const { inputBorder, inputBorderHovered, inputFocusBorderAlt } = semanticColors;\n\n const classNames = getGlobalClassNames(GlobalClassNames, theme);\n\n // placeholder style constants\n const placeholderStyles: IStyle = [\n fonts.medium,\n {\n color: semanticColors.inputPlaceholderText,\n opacity: 1,\n selectors: {\n [HighContrastSelector]: {\n color: 'GrayText',\n },\n },\n },\n ];\n\n const disabledPlaceholderStyles: IStyle = {\n color: semanticColors.disabledText,\n selectors: {\n [HighContrastSelector]: {\n color: 'GrayText',\n },\n },\n };\n\n // The following lines are to create a semi-transparent color overlay for the disabled state with designer's approval.\n // @todo: investigate the performance cost of the calculation below and apply if negligible.\n // Replacing with a static color for now.\n // const rgbColor: IRGB | undefined = cssColor(palette.neutralQuaternaryAlt);\n // const disabledOverlayColor = rgbColor ? `rgba(${rgbColor.r}, ${rgbColor.g}, ${rgbColor.b}, 0.29)` : 'transparent';\n const disabledOverlayColor = 'rgba(218, 218, 218, 0.29)';\n\n return {\n root: [classNames.root, className],\n text: [\n classNames.text,\n {\n display: 'flex',\n position: 'relative',\n flexWrap: 'wrap',\n alignItems: 'center',\n boxSizing: 'border-box',\n minWidth: 180,\n minHeight: 30,\n border: `1px solid ${inputBorder}`,\n borderRadius: effects.roundedCorner2,\n },\n !isFocused &&\n !disabled && {\n selectors: {\n ':hover': {\n borderColor: inputBorderHovered,\n },\n },\n },\n isFocused && !disabled && getInputFocusStyle(inputFocusBorderAlt, effects.roundedCorner2),\n disabled && {\n borderColor: disabledOverlayColor,\n selectors: {\n ':after': {\n content: '\"\"',\n position: 'absolute',\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n background: disabledOverlayColor,\n },\n [HighContrastSelector]: {\n borderColor: 'GrayText',\n selectors: {\n ':after': {\n background: 'none',\n },\n },\n },\n },\n },\n ],\n itemsWrapper: [\n classNames.itemsWrapper,\n {\n display: 'flex',\n flexWrap: 'wrap',\n maxWidth: '100%',\n },\n ],\n input: [\n classNames.input,\n fonts.medium,\n {\n height: 30,\n border: 'none',\n flexGrow: 1,\n outline: 'none',\n padding: '0 6px 0',\n alignSelf: 'flex-end',\n borderRadius: effects.roundedCorner2,\n backgroundColor: 'transparent',\n color: semanticColors.inputText,\n selectors: {\n '::-ms-clear': {\n display: 'none',\n },\n },\n },\n getPlaceholderStyles(placeholderStyles),\n disabled && getPlaceholderStyles(disabledPlaceholderStyles),\n inputClassName,\n ],\n screenReaderText: hiddenContentStyle,\n };\n}\n","var createRange = require('./_createRange');\n\n/**\n * Creates an array of numbers (positive and/or negative) progressing from\n * `start` up to, but not including, `end`. A step of `-1` is used if a negative\n * `start` is specified without an `end` or `step`. If `end` is not specified,\n * it's set to `start` with `start` then set to `0`.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @param {number} [step=1] The value to increment or decrement by.\n * @returns {Array} Returns the range of numbers.\n * @see _.inRange, _.rangeRight\n * @example\n *\n * _.range(4);\n * // => [0, 1, 2, 3]\n *\n * _.range(-4);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 5);\n * // => [1, 2, 3, 4]\n *\n * _.range(0, 20, 5);\n * // => [0, 5, 10, 15]\n *\n * _.range(0, -4, -1);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 4, 0);\n * // => [1, 1, 1]\n *\n * _.range(0);\n * // => []\n */\nvar range = createRange();\n\nmodule.exports = range;\n","import React from 'react';\nexport default React.createContext(null);","export default {\n disabled: false\n};","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport config from './config';\nimport { timeoutsShape } from './utils/PropTypes';\nimport TransitionGroupContext from './TransitionGroupContext';\nimport { forceReflow } from './utils/reflow';\nexport var UNMOUNTED = 'unmounted';\nexport var EXITED = 'exited';\nexport var ENTERING = 'entering';\nexport var ENTERED = 'entered';\nexport var EXITING = 'exiting';\n/**\n * The Transition component lets you describe a transition from one component\n * state to another _over time_ with a simple declarative API. Most commonly\n * it's used to animate the mounting and unmounting of a component, but can also\n * be used to describe in-place transition states as well.\n *\n * ---\n *\n * **Note**: `Transition` is a platform-agnostic base component. If you're using\n * transitions in CSS, you'll probably want to use\n * [`CSSTransition`](https://reactcommunity.org/react-transition-group/css-transition)\n * instead. It inherits all the features of `Transition`, but contains\n * additional features necessary to play nice with CSS transitions (hence the\n * name of the component).\n *\n * ---\n *\n * By default the `Transition` component does not alter the behavior of the\n * component it renders, it only tracks \"enter\" and \"exit\" states for the\n * components. It's up to you to give meaning and effect to those states. For\n * example we can add styles to a component when it enters or exits:\n *\n * ```jsx\n * import { Transition } from 'react-transition-group';\n *\n * const duration = 300;\n *\n * const defaultStyle = {\n * transition: `opacity ${duration}ms ease-in-out`,\n * opacity: 0,\n * }\n *\n * const transitionStyles = {\n * entering: { opacity: 1 },\n * entered: { opacity: 1 },\n * exiting: { opacity: 0 },\n * exited: { opacity: 0 },\n * };\n *\n * const Fade = ({ in: inProp }) => (\n * <Transition in={inProp} timeout={duration}>\n * {state => (\n * <div style={{\n * ...defaultStyle,\n * ...transitionStyles[state]\n * }}>\n * I'm a fade Transition!\n * </div>\n * )}\n * </Transition>\n * );\n * ```\n *\n * There are 4 main states a Transition can be in:\n * - `'entering'`\n * - `'entered'`\n * - `'exiting'`\n * - `'exited'`\n *\n * Transition state is toggled via the `in` prop. When `true` the component\n * begins the \"Enter\" stage. During this stage, the component will shift from\n * its current transition state, to `'entering'` for the duration of the\n * transition and then to the `'entered'` stage once it's complete. Let's take\n * the following example (we'll use the\n * [useState](https://reactjs.org/docs/hooks-reference.html#usestate) hook):\n *\n * ```jsx\n * function App() {\n * const [inProp, setInProp] = useState(false);\n * return (\n * <div>\n * <Transition in={inProp} timeout={500}>\n * {state => (\n * // ...\n * )}\n * </Transition>\n * <button onClick={() => setInProp(true)}>\n * Click to Enter\n * </button>\n * </div>\n * );\n * }\n * ```\n *\n * When the button is clicked the component will shift to the `'entering'` state\n * and stay there for 500ms (the value of `timeout`) before it finally switches\n * to `'entered'`.\n *\n * When `in` is `false` the same thing happens except the state moves from\n * `'exiting'` to `'exited'`.\n */\n\nvar Transition = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(Transition, _React$Component);\n\n function Transition(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n var parentGroup = context; // In the context of a TransitionGroup all enters are really appears\n\n var appear = parentGroup && !parentGroup.isMounting ? props.enter : props.appear;\n var initialStatus;\n _this.appearStatus = null;\n\n if (props.in) {\n if (appear) {\n initialStatus = EXITED;\n _this.appearStatus = ENTERING;\n } else {\n initialStatus = ENTERED;\n }\n } else {\n if (props.unmountOnExit || props.mountOnEnter) {\n initialStatus = UNMOUNTED;\n } else {\n initialStatus = EXITED;\n }\n }\n\n _this.state = {\n status: initialStatus\n };\n _this.nextCallback = null;\n return _this;\n }\n\n Transition.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {\n var nextIn = _ref.in;\n\n if (nextIn && prevState.status === UNMOUNTED) {\n return {\n status: EXITED\n };\n }\n\n return null;\n } // getSnapshotBeforeUpdate(prevProps) {\n // let nextStatus = null\n // if (prevProps !== this.props) {\n // const { status } = this.state\n // if (this.props.in) {\n // if (status !== ENTERING && status !== ENTERED) {\n // nextStatus = ENTERING\n // }\n // } else {\n // if (status === ENTERING || status === ENTERED) {\n // nextStatus = EXITING\n // }\n // }\n // }\n // return { nextStatus }\n // }\n ;\n\n var _proto = Transition.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.updateStatus(true, this.appearStatus);\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n var nextStatus = null;\n\n if (prevProps !== this.props) {\n var status = this.state.status;\n\n if (this.props.in) {\n if (status !== ENTERING && status !== ENTERED) {\n nextStatus = ENTERING;\n }\n } else {\n if (status === ENTERING || status === ENTERED) {\n nextStatus = EXITING;\n }\n }\n }\n\n this.updateStatus(false, nextStatus);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.cancelNextCallback();\n };\n\n _proto.getTimeouts = function getTimeouts() {\n var timeout = this.props.timeout;\n var exit, enter, appear;\n exit = enter = appear = timeout;\n\n if (timeout != null && typeof timeout !== 'number') {\n exit = timeout.exit;\n enter = timeout.enter; // TODO: remove fallback for next major\n\n appear = timeout.appear !== undefined ? timeout.appear : enter;\n }\n\n return {\n exit: exit,\n enter: enter,\n appear: appear\n };\n };\n\n _proto.updateStatus = function updateStatus(mounting, nextStatus) {\n if (mounting === void 0) {\n mounting = false;\n }\n\n if (nextStatus !== null) {\n // nextStatus will always be ENTERING or EXITING.\n this.cancelNextCallback();\n\n if (nextStatus === ENTERING) {\n if (this.props.unmountOnExit || this.props.mountOnEnter) {\n var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM.findDOMNode(this); // https://github.com/reactjs/react-transition-group/pull/749\n // With unmountOnExit or mountOnEnter, the enter animation should happen at the transition between `exited` and `entering`.\n // To make the animation happen, we have to separate each rendering and avoid being processed as batched.\n\n if (node) forceReflow(node);\n }\n\n this.performEnter(mounting);\n } else {\n this.performExit();\n }\n } else if (this.props.unmountOnExit && this.state.status === EXITED) {\n this.setState({\n status: UNMOUNTED\n });\n }\n };\n\n _proto.performEnter = function performEnter(mounting) {\n var _this2 = this;\n\n var enter = this.props.enter;\n var appearing = this.context ? this.context.isMounting : mounting;\n\n var _ref2 = this.props.nodeRef ? [appearing] : [ReactDOM.findDOMNode(this), appearing],\n maybeNode = _ref2[0],\n maybeAppearing = _ref2[1];\n\n var timeouts = this.getTimeouts();\n var enterTimeout = appearing ? timeouts.appear : timeouts.enter; // no enter animation skip right to ENTERED\n // if we are mounting and running this it means appear _must_ be set\n\n if (!mounting && !enter || config.disabled) {\n this.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(maybeNode);\n });\n return;\n }\n\n this.props.onEnter(maybeNode, maybeAppearing);\n this.safeSetState({\n status: ENTERING\n }, function () {\n _this2.props.onEntering(maybeNode, maybeAppearing);\n\n _this2.onTransitionEnd(enterTimeout, function () {\n _this2.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(maybeNode, maybeAppearing);\n });\n });\n });\n };\n\n _proto.performExit = function performExit() {\n var _this3 = this;\n\n var exit = this.props.exit;\n var timeouts = this.getTimeouts();\n var maybeNode = this.props.nodeRef ? undefined : ReactDOM.findDOMNode(this); // no exit animation skip right to EXITED\n\n if (!exit || config.disabled) {\n this.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(maybeNode);\n });\n return;\n }\n\n this.props.onExit(maybeNode);\n this.safeSetState({\n status: EXITING\n }, function () {\n _this3.props.onExiting(maybeNode);\n\n _this3.onTransitionEnd(timeouts.exit, function () {\n _this3.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(maybeNode);\n });\n });\n });\n };\n\n _proto.cancelNextCallback = function cancelNextCallback() {\n if (this.nextCallback !== null) {\n this.nextCallback.cancel();\n this.nextCallback = null;\n }\n };\n\n _proto.safeSetState = function safeSetState(nextState, callback) {\n // This shouldn't be necessary, but there are weird race conditions with\n // setState callbacks and unmounting in testing, so always make sure that\n // we can cancel any pending setState callbacks after we unmount.\n callback = this.setNextCallback(callback);\n this.setState(nextState, callback);\n };\n\n _proto.setNextCallback = function setNextCallback(callback) {\n var _this4 = this;\n\n var active = true;\n\n this.nextCallback = function (event) {\n if (active) {\n active = false;\n _this4.nextCallback = null;\n callback(event);\n }\n };\n\n this.nextCallback.cancel = function () {\n active = false;\n };\n\n return this.nextCallback;\n };\n\n _proto.onTransitionEnd = function onTransitionEnd(timeout, handler) {\n this.setNextCallback(handler);\n var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM.findDOMNode(this);\n var doesNotHaveTimeoutOrListener = timeout == null && !this.props.addEndListener;\n\n if (!node || doesNotHaveTimeoutOrListener) {\n setTimeout(this.nextCallback, 0);\n return;\n }\n\n if (this.props.addEndListener) {\n var _ref3 = this.props.nodeRef ? [this.nextCallback] : [node, this.nextCallback],\n maybeNode = _ref3[0],\n maybeNextCallback = _ref3[1];\n\n this.props.addEndListener(maybeNode, maybeNextCallback);\n }\n\n if (timeout != null) {\n setTimeout(this.nextCallback, timeout);\n }\n };\n\n _proto.render = function render() {\n var status = this.state.status;\n\n if (status === UNMOUNTED) {\n return null;\n }\n\n var _this$props = this.props,\n children = _this$props.children,\n _in = _this$props.in,\n _mountOnEnter = _this$props.mountOnEnter,\n _unmountOnExit = _this$props.unmountOnExit,\n _appear = _this$props.appear,\n _enter = _this$props.enter,\n _exit = _this$props.exit,\n _timeout = _this$props.timeout,\n _addEndListener = _this$props.addEndListener,\n _onEnter = _this$props.onEnter,\n _onEntering = _this$props.onEntering,\n _onEntered = _this$props.onEntered,\n _onExit = _this$props.onExit,\n _onExiting = _this$props.onExiting,\n _onExited = _this$props.onExited,\n _nodeRef = _this$props.nodeRef,\n childProps = _objectWithoutPropertiesLoose(_this$props, [\"children\", \"in\", \"mountOnEnter\", \"unmountOnExit\", \"appear\", \"enter\", \"exit\", \"timeout\", \"addEndListener\", \"onEnter\", \"onEntering\", \"onEntered\", \"onExit\", \"onExiting\", \"onExited\", \"nodeRef\"]);\n\n return (\n /*#__PURE__*/\n // allows for nested Transitions\n React.createElement(TransitionGroupContext.Provider, {\n value: null\n }, typeof children === 'function' ? children(status, childProps) : React.cloneElement(React.Children.only(children), childProps))\n );\n };\n\n return Transition;\n}(React.Component);\n\nTransition.contextType = TransitionGroupContext;\nTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * A React reference to DOM element that need to transition:\n * https://stackoverflow.com/a/51127130/4671932\n *\n * - When `nodeRef` prop is used, `node` is not passed to callback functions\n * (e.g. `onEnter`) because user already has direct access to the node.\n * - When changing `key` prop of `Transition` in a `TransitionGroup` a new\n * `nodeRef` need to be provided to `Transition` with changed `key` prop\n * (see\n * [test/CSSTransition-test.js](https://github.com/reactjs/react-transition-group/blob/13435f897b3ab71f6e19d724f145596f5910581c/test/CSSTransition-test.js#L362-L437)).\n */\n nodeRef: PropTypes.shape({\n current: typeof Element === 'undefined' ? PropTypes.any : function (propValue, key, componentName, location, propFullName, secret) {\n var value = propValue[key];\n return PropTypes.instanceOf(value && 'ownerDocument' in value ? value.ownerDocument.defaultView.Element : Element)(propValue, key, componentName, location, propFullName, secret);\n }\n }),\n\n /**\n * A `function` child can be used instead of a React element. This function is\n * called with the current transition status (`'entering'`, `'entered'`,\n * `'exiting'`, `'exited'`), which can be used to apply context\n * specific props to a component.\n *\n * ```jsx\n * <Transition in={this.state.in} timeout={150}>\n * {state => (\n * <MyComponent className={`fade fade-${state}`} />\n * )}\n * </Transition>\n * ```\n */\n children: PropTypes.oneOfType([PropTypes.func.isRequired, PropTypes.element.isRequired]).isRequired,\n\n /**\n * Show the component; triggers the enter or exit states\n */\n in: PropTypes.bool,\n\n /**\n * By default the child component is mounted immediately along with\n * the parent `Transition` component. If you want to \"lazy mount\" the component on the\n * first `in={true}` you can set `mountOnEnter`. After the first enter transition the component will stay\n * mounted, even on \"exited\", unless you also specify `unmountOnExit`.\n */\n mountOnEnter: PropTypes.bool,\n\n /**\n * By default the child component stays mounted after it reaches the `'exited'` state.\n * Set `unmountOnExit` if you'd prefer to unmount the component after it finishes exiting.\n */\n unmountOnExit: PropTypes.bool,\n\n /**\n * By default the child component does not perform the enter transition when\n * it first mounts, regardless of the value of `in`. If you want this\n * behavior, set both `appear` and `in` to `true`.\n *\n * > **Note**: there are no special appear states like `appearing`/`appeared`, this prop\n * > only adds an additional enter transition. However, in the\n * > `<CSSTransition>` component that first enter transition does result in\n * > additional `.appear-*` classes, that way you can choose to style it\n * > differently.\n */\n appear: PropTypes.bool,\n\n /**\n * Enable or disable enter transitions.\n */\n enter: PropTypes.bool,\n\n /**\n * Enable or disable exit transitions.\n */\n exit: PropTypes.bool,\n\n /**\n * The duration of the transition, in milliseconds.\n * Required unless `addEndListener` is provided.\n *\n * You may specify a single timeout for all transitions:\n *\n * ```jsx\n * timeout={500}\n * ```\n *\n * or individually:\n *\n * ```jsx\n * timeout={{\n * appear: 500,\n * enter: 300,\n * exit: 500,\n * }}\n * ```\n *\n * - `appear` defaults to the value of `enter`\n * - `enter` defaults to `0`\n * - `exit` defaults to `0`\n *\n * @type {number | { enter?: number, exit?: number, appear?: number }}\n */\n timeout: function timeout(props) {\n var pt = timeoutsShape;\n if (!props.addEndListener) pt = pt.isRequired;\n\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return pt.apply(void 0, [props].concat(args));\n },\n\n /**\n * Add a custom transition end trigger. Called with the transitioning\n * DOM node and a `done` callback. Allows for more fine grained transition end\n * logic. Timeouts are still used as a fallback if provided.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * ```jsx\n * addEndListener={(node, done) => {\n * // use the css transitionend event to mark the finish of a transition\n * node.addEventListener('transitionend', done, false);\n * }}\n * ```\n */\n addEndListener: PropTypes.func,\n\n /**\n * Callback fired before the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEnter: PropTypes.func,\n\n /**\n * Callback fired after the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntering: PropTypes.func,\n\n /**\n * Callback fired after the \"entered\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEntered: PropTypes.func,\n\n /**\n * Callback fired before the \"exiting\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExit: PropTypes.func,\n\n /**\n * Callback fired after the \"exiting\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExiting: PropTypes.func,\n\n /**\n * Callback fired after the \"exited\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExited: PropTypes.func\n} : {}; // Name the function so it is clearer in the documentation\n\nfunction noop() {}\n\nTransition.defaultProps = {\n in: false,\n mountOnEnter: false,\n unmountOnExit: false,\n appear: false,\n enter: true,\n exit: true,\n onEnter: noop,\n onEntering: noop,\n onEntered: noop,\n onExit: noop,\n onExiting: noop,\n onExited: noop\n};\nTransition.UNMOUNTED = UNMOUNTED;\nTransition.EXITED = EXITED;\nTransition.ENTERING = ENTERING;\nTransition.ENTERED = ENTERED;\nTransition.EXITING = EXITING;\nexport default Transition;","export var forceReflow = function forceReflow(node) {\n return node.scrollTop;\n};","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\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","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.farsiLocales = exports.englishLocales = exports.dotDecimal = exports.decimal = exports.commaDecimal = exports.bengaliLocales = exports.arabicLocales = exports.alphanumeric = exports.alpha = void 0;\nvar alpha = exports.alpha = {\n 'en-US': /^[A-Z]+$/i,\n 'az-AZ': /^[A-VXYZÇÆÄžÄ°Ä±Ã–ŞÜ]+$/i,\n 'bg-BG': /^[Ð-Я]+$/i,\n 'cs-CZ': /^[A-ZÃČĎÉĚÃŇÓŘŠŤÚŮÃŽ]+$/i,\n 'da-DK': /^[A-ZÆØÅ]+$/i,\n 'de-DE': /^[A-ZÄÖÜß]+$/i,\n 'el-GR': /^[Α-ÏŽ]+$/i,\n 'es-ES': /^[A-ZÃÉÃÑÓÚÜ]+$/i,\n 'fa-IR': /^[Ø§Ø¨Ù¾ØªØ«Ø¬Ú†ØØ®Ø¯Ø°Ø±Ø²Ú˜Ø³Ø´ØµØ¶Ø·Ø¸Ø¹ØºÙقکگلمنوهی]+$/i,\n 'fi-FI': /^[A-ZÅÄÖ]+$/i,\n 'fr-FR': /^[A-ZÀÂÆÇÉÈÊËÃÎÔŒÙÛÜŸ]+$/i,\n 'it-IT': /^[A-ZÀÉÈÌÎÓÒÙ]+$/i,\n 'ja-JP': /^[ã-ã‚“ã‚¡-ヶヲ-゚一-é¾ ãƒ¼ãƒ»ã€‚ã€]+$/i,\n 'nb-NO': /^[A-ZÆØÅ]+$/i,\n 'nl-NL': /^[A-ZÃÉËÃÓÖÜÚ]+$/i,\n 'nn-NO': /^[A-ZÆØÅ]+$/i,\n 'hu-HU': /^[A-ZÃÉÃÓÖÅÚÜŰ]+$/i,\n 'pl-PL': /^[A-ZĄĆĘŚÅŃÓŻŹ]+$/i,\n 'pt-PT': /^[A-ZÃÃÀÂÄÇÉÊËÃÃÕÓÔÖÚÜ]+$/i,\n 'ru-RU': /^[Ð-ЯÐ]+$/i,\n 'kk-KZ': /^[Ð-ЯÐ\\u04D8\\u04B0\\u0406\\u04A2\\u0492\\u04AE\\u049A\\u04E8\\u04BA]+$/i,\n 'sl-SI': /^[A-ZČĆÄŠŽ]+$/i,\n 'sk-SK': /^[A-ZÃČĎÉÃŇÓŠŤÚÃŽĹŔĽÄÔ]+$/i,\n 'sr-RS@latin': /^[A-ZČĆŽŠÄ]+$/i,\n 'sr-RS': /^[Ð-ЯЂЈЉЊЋÐ]+$/i,\n 'sv-SE': /^[A-ZÅÄÖ]+$/i,\n 'th-TH': /^[à¸-à¹\\s]+$/i,\n 'tr-TR': /^[A-ZÇĞİıÖŞÜ]+$/i,\n 'uk-UA': /^[Ð-ЩЬЮЯЄIЇÒÑ–]+$/i,\n 'vi-VN': /^[A-ZÀÃẠẢÃÂẦẤẬẨẪĂẰẮẶẲẴÄÈÉẸẺẼÊỀẾỆỂỄÌÃỊỈĨÒÓỌỎÕÔỒá»á»˜á»”á»–Æ á»œá»šá»¢á»žá» Ã™Ãšá»¤á»¦Å¨Æ¯á»ªá»¨á»°á»¬á»®á»²ÃỴỶỸ]+$/i,\n 'ko-KR': /^[ㄱ-ã…Žã…-ㅣ가-힣]*$/,\n 'ku-IQ': /^[Ø¦Ø§Ø¨Ù¾ØªØ¬Ú†ØØ®Ø¯Ø±Ú•زژسشعغÙڤقکگلڵمنوۆھەیێيطؤثآإأكضصةظذ]+$/i,\n ar: /^[Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§Ø¨Ø©ØªØ«Ø¬ØØ®Ø¯Ø°Ø±Ø²Ø³Ø´ØµØ¶Ø·Ø¸Ø¹ØºÙقكلمنهوىيًٌÙÙŽÙÙّْٰ]+$/,\n he: /^[×-ת]+$/,\n fa: /^['Ø¢Ø§Ø¡Ø£Ø¤Ø¦Ø¨Ù¾ØªØ«Ø¬Ú†ØØ®Ø¯Ø°Ø±Ø²Ú˜Ø³Ø´ØµØ¶Ø·Ø¸Ø¹ØºÙقکگلمنوهةی']+$/i,\n bn: /^['ঀà¦à¦‚ঃঅআইঈউঊঋঌà¦à¦à¦“ঔকখগঘঙচছজà¦à¦žà¦Ÿà¦ ডঢণতথদধনপফবà¦à¦®à¦¯à¦°à¦²à¦¶à¦·à¦¸à¦¹à¦¼à¦½à¦¾à¦¿à§€à§à§‚ৃৄেৈোৌà§à§Žà§—à§œà§à§Ÿà§ ৡৢৣৰৱ৲৳৴৵৶৷৸৹৺৻']+$/,\n eo: /^[ABCĈD-GÄœHĤIJÄ´K-PRSÅœTUŬVZ]+$/i,\n 'hi-IN': /^[\\u0900-\\u0961]+[\\u0972-\\u097F]*$/i,\n 'si-LK': /^[\\u0D80-\\u0DFF]+$/\n};\nvar alphanumeric = exports.alphanumeric = {\n 'en-US': /^[0-9A-Z]+$/i,\n 'az-AZ': /^[0-9A-VXYZÇÆÄžÄ°Ä±Ã–ŞÜ]+$/i,\n 'bg-BG': /^[0-9Ð-Я]+$/i,\n 'cs-CZ': /^[0-9A-ZÃČĎÉĚÃŇÓŘŠŤÚŮÃŽ]+$/i,\n 'da-DK': /^[0-9A-ZÆØÅ]+$/i,\n 'de-DE': /^[0-9A-ZÄÖÜß]+$/i,\n 'el-GR': /^[0-9Α-ω]+$/i,\n 'es-ES': /^[0-9A-ZÃÉÃÑÓÚÜ]+$/i,\n 'fi-FI': /^[0-9A-ZÅÄÖ]+$/i,\n 'fr-FR': /^[0-9A-ZÀÂÆÇÉÈÊËÃÎÔŒÙÛÜŸ]+$/i,\n 'it-IT': /^[0-9A-ZÀÉÈÌÎÓÒÙ]+$/i,\n 'ja-JP': /^[0-9ï¼-ï¼™ã-ã‚“ã‚¡-ヶヲ-゚一-é¾ ãƒ¼ãƒ»ã€‚ã€]+$/i,\n 'hu-HU': /^[0-9A-ZÃÉÃÓÖÅÚÜŰ]+$/i,\n 'nb-NO': /^[0-9A-ZÆØÅ]+$/i,\n 'nl-NL': /^[0-9A-ZÃÉËÃÓÖÜÚ]+$/i,\n 'nn-NO': /^[0-9A-ZÆØÅ]+$/i,\n 'pl-PL': /^[0-9A-ZĄĆĘŚÅŃÓŻŹ]+$/i,\n 'pt-PT': /^[0-9A-ZÃÃÀÂÄÇÉÊËÃÃÕÓÔÖÚÜ]+$/i,\n 'ru-RU': /^[0-9Ð-ЯÐ]+$/i,\n 'kk-KZ': /^[0-9Ð-ЯÐ\\u04D8\\u04B0\\u0406\\u04A2\\u0492\\u04AE\\u049A\\u04E8\\u04BA]+$/i,\n 'sl-SI': /^[0-9A-ZČĆÄŠŽ]+$/i,\n 'sk-SK': /^[0-9A-ZÃČĎÉÃŇÓŠŤÚÃŽĹŔĽÄÔ]+$/i,\n 'sr-RS@latin': /^[0-9A-ZČĆŽŠÄ]+$/i,\n 'sr-RS': /^[0-9Ð-ЯЂЈЉЊЋÐ]+$/i,\n 'sv-SE': /^[0-9A-ZÅÄÖ]+$/i,\n 'th-TH': /^[à¸-๙\\s]+$/i,\n 'tr-TR': /^[0-9A-ZÇĞİıÖŞÜ]+$/i,\n 'uk-UA': /^[0-9Ð-ЩЬЮЯЄIЇÒÑ–]+$/i,\n 'ko-KR': /^[0-9ㄱ-ã…Žã…-ㅣ가-힣]*$/,\n 'ku-IQ': /^[٠١٢٣٤٥٦٧٨٩0-9Ø¦Ø§Ø¨Ù¾ØªØ¬Ú†ØØ®Ø¯Ø±Ú•زژسشعغÙڤقکگلڵمنوۆھەیێيطؤثآإأكضصةظذ]+$/i,\n 'vi-VN': /^[0-9A-ZÀÃẠẢÃÂẦẤẬẨẪĂẰẮẶẲẴÄÈÉẸẺẼÊỀẾỆỂỄÌÃỊỈĨÒÓỌỎÕÔỒá»á»˜á»”á»–Æ á»œá»šá»¢á»žá» Ã™Ãšá»¤á»¦Å¨Æ¯á»ªá»¨á»°á»¬á»®á»²ÃỴỶỸ]+$/i,\n ar: /^[٠١٢٣٤٥٦٧٨٩0-9Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§Ø¨Ø©ØªØ«Ø¬ØØ®Ø¯Ø°Ø±Ø²Ø³Ø´ØµØ¶Ø·Ø¸Ø¹ØºÙقكلمنهوىيًٌÙÙŽÙÙّْٰ]+$/,\n he: /^[0-9×-ת]+$/,\n fa: /^['0-9Ø¢Ø§Ø¡Ø£Ø¤Ø¦Ø¨Ù¾ØªØ«Ø¬Ú†ØØ®Ø¯Ø°Ø±Ø²Ú˜Ø³Ø´ØµØ¶Ø·Ø¸Ø¹ØºÙقکگلمنوهةی۱۲۳۴۵۶۷۸۹۰']+$/i,\n bn: /^['ঀà¦à¦‚ঃঅআইঈউঊঋঌà¦à¦à¦“ঔকখগঘঙচছজà¦à¦žà¦Ÿà¦ ডঢণতথদধনপফবà¦à¦®à¦¯à¦°à¦²à¦¶à¦·à¦¸à¦¹à¦¼à¦½à¦¾à¦¿à§€à§à§‚ৃৄেৈোৌà§à§Žà§—à§œà§à§Ÿà§ ৡৢৣ০১২৩৪৫৬à§à§®à§¯à§°à§±à§²à§³à§´à§µà§¶à§·à§¸à§¹à§ºà§»']+$/,\n eo: /^[0-9ABCĈD-GÄœHĤIJÄ´K-PRSÅœTUŬVZ]+$/i,\n 'hi-IN': /^[\\u0900-\\u0963]+[\\u0966-\\u097F]*$/i,\n 'si-LK': /^[0-9\\u0D80-\\u0DFF]+$/\n};\nvar decimal = exports.decimal = {\n 'en-US': '.',\n ar: 'Ù«'\n};\nvar englishLocales = exports.englishLocales = ['AU', 'GB', 'HK', 'IN', 'NZ', 'ZA', 'ZM'];\nfor (var locale, i = 0; i < englishLocales.length; i++) {\n locale = \"en-\".concat(englishLocales[i]);\n alpha[locale] = alpha['en-US'];\n alphanumeric[locale] = alphanumeric['en-US'];\n decimal[locale] = decimal['en-US'];\n}\n\n// Source: http://www.localeplanet.com/java/\nvar arabicLocales = exports.arabicLocales = ['AE', 'BH', 'DZ', 'EG', 'IQ', 'JO', 'KW', 'LB', 'LY', 'MA', 'QM', 'QA', 'SA', 'SD', 'SY', 'TN', 'YE'];\nfor (var _locale, _i = 0; _i < arabicLocales.length; _i++) {\n _locale = \"ar-\".concat(arabicLocales[_i]);\n alpha[_locale] = alpha.ar;\n alphanumeric[_locale] = alphanumeric.ar;\n decimal[_locale] = decimal.ar;\n}\nvar farsiLocales = exports.farsiLocales = ['IR', 'AF'];\nfor (var _locale2, _i2 = 0; _i2 < farsiLocales.length; _i2++) {\n _locale2 = \"fa-\".concat(farsiLocales[_i2]);\n alphanumeric[_locale2] = alphanumeric.fa;\n decimal[_locale2] = decimal.ar;\n}\nvar bengaliLocales = exports.bengaliLocales = ['BD', 'IN'];\nfor (var _locale3, _i3 = 0; _i3 < bengaliLocales.length; _i3++) {\n _locale3 = \"bn-\".concat(bengaliLocales[_i3]);\n alpha[_locale3] = alpha.bn;\n alphanumeric[_locale3] = alphanumeric.bn;\n decimal[_locale3] = decimal['en-US'];\n}\n\n// Source: https://en.wikipedia.org/wiki/Decimal_mark\nvar dotDecimal = exports.dotDecimal = ['ar-EG', 'ar-LB', 'ar-LY'];\nvar commaDecimal = exports.commaDecimal = ['bg-BG', 'cs-CZ', 'da-DK', 'de-DE', 'el-GR', 'en-ZM', 'eo', 'es-ES', 'fr-CA', 'fr-FR', 'id-ID', 'it-IT', 'ku-IQ', 'hi-IN', 'hu-HU', 'nb-NO', 'nn-NO', 'nl-NL', 'pl-PL', 'pt-PT', 'ru-RU', 'kk-KZ', 'si-LK', 'sl-SI', 'sr-RS@latin', 'sr-RS', 'sv-SE', 'tr-TR', 'uk-UA', 'vi-VN'];\nfor (var _i4 = 0; _i4 < dotDecimal.length; _i4++) {\n decimal[dotDecimal[_i4]] = decimal['en-US'];\n}\nfor (var _i5 = 0; _i5 < commaDecimal.length; _i5++) {\n decimal[commaDecimal[_i5]] = ',';\n}\nalpha['fr-CA'] = alpha['fr-FR'];\nalphanumeric['fr-CA'] = alphanumeric['fr-FR'];\nalpha['pt-BR'] = alpha['pt-PT'];\nalphanumeric['pt-BR'] = alphanumeric['pt-PT'];\ndecimal['pt-BR'] = decimal['pt-PT'];\n\n// see #862\nalpha['pl-Pl'] = alpha['pl-PL'];\nalphanumeric['pl-Pl'] = alphanumeric['pl-PL'];\ndecimal['pl-Pl'] = decimal['pl-PL'];\n\n// see #1455\nalpha['fa-AF'] = alpha.fa;","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","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"path\", {\n enumerable: true,\n get: function () {\n return _path.default;\n }\n});\n\nvar _path = _interopRequireDefault(require(\"./path.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = _default;\nexports.slice = void 0;\nvar slice = Array.prototype.slice;\nexports.slice = slice;\n\nfunction _default(x) {\n return typeof x === \"object\" && \"length\" in x ? x // Array, TypedArray, NodeList, array-like\n : Array.from(x); // Map, Set, iterable, string, or anything else\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = _default;\n\nfunction _default(series, order) {\n if (!((n = series.length) > 1)) return;\n\n for (var i = 1, j, s0, s1 = series[order[0]], n, m = s1.length; i < n; ++i) {\n s0 = s1, s1 = series[order[i]];\n\n for (j = 0; j < m; ++j) {\n s1[j][1] += s1[j][0] = isNaN(s0[j][1]) ? s0[j][0] : s0[j][1];\n }\n }\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = _default;\n\nfunction _default(series) {\n var n = series.length,\n o = new Array(n);\n\n while (--n >= 0) o[n] = n;\n\n return o;\n}","/* eslint-disable no-console */\n\nlet _warningCallback: ((message: string) => void) | undefined = undefined;\n\nexport type ISettingsMap<T> = { [P in keyof T]?: string };\n\n/**\n * Sends a warning to console, if the api is present.\n *\n * @public\n * @param message - Warning message.\n */\nexport function warn(message: string): void {\n if (_warningCallback && process.env.NODE_ENV !== 'production') {\n _warningCallback(message);\n } else if (console && console.warn) {\n console.warn(message);\n }\n}\n\n/**\n * Configures the warning callback. Passing in undefined will reset it to use the default\n * console.warn function.\n *\n * @public\n * @param warningCallback - Callback to override the generated warnings.\n */\nexport function setWarningCallback(warningCallback?: (message: string) => void): void {\n _warningCallback = warningCallback;\n}\n","import { IStyleSet, IConcatenatedStyleSet } from './IStyleSet';\nimport { IStyleBase, IStyle } from './IStyle';\nimport { IStyleFunctionOrObject } from './IStyleFunction';\nimport { ObjectOnly } from './ObjectOnly';\n\n/**\n * Combine a set of styles together (but does not register css classes).\n * @param styleSet - The first style set to be concatenated.\n */\nexport function concatStyleSets<TStyleSet>(\n styleSet: TStyleSet | false | null | undefined,\n): IConcatenatedStyleSet<ObjectOnly<TStyleSet>>;\n\n/**\n * Combine a set of styles together (but does not register css classes).\n * @param styleSet1 - The first style set to be concatenated.\n * @param styleSet2 - The second style set to be concatenated.\n */\nexport function concatStyleSets<TStyleSet1, TStyleSet2>(\n styleSet1: TStyleSet1 | false | null | undefined,\n styleSet2: TStyleSet2 | false | null | undefined,\n): IConcatenatedStyleSet<ObjectOnly<TStyleSet1> & ObjectOnly<TStyleSet2>>;\n\n/**\n * Combine a set of styles together (but does not register css classes).\n * @param styleSet1 - The first style set to be concatenated.\n * @param styleSet2 - The second style set to be concatenated.\n * @param styleSet3 - The third style set to be concatenated.\n */\nexport function concatStyleSets<TStyleSet1, TStyleSet2, TStyleSet3>(\n styleSet1: TStyleSet1 | false | null | undefined,\n styleSet2: TStyleSet2 | false | null | undefined,\n styleSet3: TStyleSet3 | false | null | undefined,\n): IConcatenatedStyleSet<ObjectOnly<TStyleSet1> & ObjectOnly<TStyleSet2> & ObjectOnly<TStyleSet3>>;\n\n/**\n * Combine a set of styles together (but does not register css classes).\n * @param styleSet1 - The first style set to be concatenated.\n * @param styleSet2 - The second style set to be concatenated.\n * @param styleSet3 - The third style set to be concatenated.\n * @param styleSet4 - The fourth style set to be concatenated.\n */\nexport function concatStyleSets<TStyleSet1, TStyleSet2, TStyleSet3, TStyleSet4>(\n styleSet1: TStyleSet1 | false | null | undefined,\n styleSet2: TStyleSet2 | false | null | undefined,\n styleSet3: TStyleSet3 | false | null | undefined,\n styleSet4: TStyleSet4 | false | null | undefined,\n): IConcatenatedStyleSet<\n ObjectOnly<TStyleSet1> & ObjectOnly<TStyleSet2> & ObjectOnly<TStyleSet3> & ObjectOnly<TStyleSet4>\n>;\n\n/**\n * Combine a set of styles together (but does not register css classes).\n * @param styleSet1 - The first style set to be concatenated.\n * @param styleSet2 - The second style set to be concatenated.\n * @param styleSet3 - The third style set to be concatenated.\n * @param styleSet4 - The fourth style set to be concatenated.\n * @param styleSet5 - The fifth set to be concatenated.\n */\nexport function concatStyleSets<TStyleSet1, TStyleSet2, TStyleSet3, TStyleSet4, TStyleSet5>(\n styleSet1: TStyleSet1 | false | null | undefined,\n styleSet2: TStyleSet2 | false | null | undefined,\n styleSet3: TStyleSet3 | false | null | undefined,\n styleSet4: TStyleSet4 | false | null | undefined,\n styleSet5: TStyleSet5 | false | null | undefined,\n): IConcatenatedStyleSet<\n ObjectOnly<TStyleSet1> &\n ObjectOnly<TStyleSet2> &\n ObjectOnly<TStyleSet3> &\n ObjectOnly<TStyleSet4> &\n ObjectOnly<TStyleSet5>\n>;\n\n/**\n * Combine a set of styles together (but does not register css classes).\n * @param styleSet1 - The first style set to be concatenated.\n * @param styleSet2 - The second style set to be concatenated.\n * @param styleSet3 - The third style set to be concatenated.\n * @param styleSet4 - The fourth style set to be concatenated.\n * @param styleSet5 - The fifth set to be concatenated.\n * @param styleSet6 - The sixth set to be concatenated.\n */\nexport function concatStyleSets<TStyleSet1, TStyleSet2, TStyleSet3, TStyleSet4, TStyleSet5, TStyleSet6>(\n styleSet1: TStyleSet1 | false | null | undefined,\n styleSet2: TStyleSet2 | false | null | undefined,\n styleSet3: TStyleSet3 | false | null | undefined,\n styleSet4: TStyleSet4 | false | null | undefined,\n styleSet5: TStyleSet5 | false | null | undefined,\n styleSet6: TStyleSet6 | false | null | undefined,\n): IConcatenatedStyleSet<\n ObjectOnly<TStyleSet1> &\n ObjectOnly<TStyleSet2> &\n ObjectOnly<TStyleSet3> &\n ObjectOnly<TStyleSet4> &\n ObjectOnly<TStyleSet5> &\n ObjectOnly<TStyleSet6>\n>;\n\n/**\n * Combine a set of styles together (but does not register css classes).\n * @param styleSets - One or more stylesets to be merged (each param can also be falsy).\n */\nexport function concatStyleSets(...styleSets: (IStyleSet | false | null | undefined)[]): IConcatenatedStyleSet<any>;\n\n/**\n * Combine a set of styles together (but does not register css classes).\n * @param styleSets - One or more stylesets to be merged (each param can also be falsy).\n */\nexport function concatStyleSets(...styleSets: (IStyleSet | false | null | undefined)[]): IConcatenatedStyleSet<any> {\n if (styleSets && styleSets.length === 1 && styleSets[0] && !(styleSets[0] as IStyleSet).subComponentStyles) {\n return styleSets[0] as IConcatenatedStyleSet<any>;\n }\n\n const mergedSet: IConcatenatedStyleSet<any> = {};\n\n // We process sub component styles in two phases. First we collect them, then we combine them into 1 style function.\n const workingSubcomponentStyles: { [key: string]: Array<IStyleFunctionOrObject<any, any>> } = {};\n\n for (const currentSet of styleSets) {\n if (currentSet) {\n for (const prop in currentSet) {\n if (currentSet.hasOwnProperty(prop)) {\n if (prop === 'subComponentStyles' && currentSet.subComponentStyles !== undefined) {\n // subcomponent styles - style functions or objects\n\n const currentComponentStyles = currentSet.subComponentStyles;\n for (const subCompProp in currentComponentStyles) {\n if (currentComponentStyles.hasOwnProperty(subCompProp)) {\n if (workingSubcomponentStyles.hasOwnProperty(subCompProp)) {\n workingSubcomponentStyles[subCompProp].push(currentComponentStyles[subCompProp]);\n } else {\n workingSubcomponentStyles[subCompProp] = [currentComponentStyles[subCompProp]];\n }\n }\n }\n\n continue;\n }\n\n // the as any casts below is a workaround for ts 2.8.\n // todo: remove cast to any in ts 2.9.\n const mergedValue: IStyle = (mergedSet as any)[prop];\n const currentValue = (currentSet as any)[prop];\n\n if (mergedValue === undefined) {\n (mergedSet as any)[prop] = currentValue;\n } else {\n (mergedSet as any)[prop] = [\n // https://github.com/Microsoft/TypeScript/issues/25474\n ...(Array.isArray(mergedValue) ? mergedValue : [mergedValue as IStyleBase]),\n ...(Array.isArray(currentValue) ? currentValue : [currentValue as IStyleBase]),\n ];\n }\n }\n }\n }\n }\n\n if (Object.keys(workingSubcomponentStyles).length > 0) {\n mergedSet.subComponentStyles = {};\n const mergedSubStyles = mergedSet.subComponentStyles;\n\n // now we process the subcomponent styles if there are any\n for (const subCompProp in workingSubcomponentStyles) {\n if (workingSubcomponentStyles.hasOwnProperty(subCompProp)) {\n const workingSet = workingSubcomponentStyles[subCompProp];\n mergedSubStyles[subCompProp] = (styleProps: any) => {\n return concatStyleSets(\n ...workingSet.map((styleFunctionOrObject: IStyleFunctionOrObject<any, any>) =>\n typeof styleFunctionOrObject === 'function' ? styleFunctionOrObject(styleProps) : styleFunctionOrObject,\n ),\n );\n };\n }\n }\n }\n\n return mergedSet;\n}\n","import { __assign } from 'tslib';\nexport const assign = __assign;\n","var baseAssignValue = require('./_baseAssignValue'),\n createAggregator = require('./_createAggregator');\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 object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The order of grouped values\n * is determined by the order they occur in `collection`. The corresponding\n * value of each key is an array of elements responsible for generating the\n * key. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.groupBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': [4.2], '6': [6.1, 6.3] }\n *\n * // The `_.property` iteratee shorthand.\n * _.groupBy(['one', 'two', 'three'], 'length');\n * // => { '3': ['one', 'two'], '5': ['three'] }\n */\nvar groupBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n result[key].push(value);\n } else {\n baseAssignValue(result, key, [value]);\n }\n});\n\nmodule.exports = groupBy;\n","var _excluded = [\"children\", \"width\", \"height\", \"viewBox\", \"className\", \"style\", \"title\", \"desc\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n/**\n * @fileOverview Surface\n */\nimport React from 'react';\nimport clsx from 'clsx';\nimport { filterProps } from '../util/ReactUtils';\nexport function Surface(props) {\n var children = props.children,\n width = props.width,\n height = props.height,\n viewBox = props.viewBox,\n className = props.className,\n style = props.style,\n title = props.title,\n desc = props.desc,\n others = _objectWithoutProperties(props, _excluded);\n var svgView = viewBox || {\n width: width,\n height: height,\n x: 0,\n y: 0\n };\n var layerClass = clsx('recharts-surface', className);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({}, filterProps(others, true, 'svg'), {\n className: layerClass,\n width: width,\n height: height,\n style: style,\n viewBox: \"\".concat(svgView.x, \" \").concat(svgView.y, \" \").concat(svgView.width, \" \").concat(svgView.height)\n }), /*#__PURE__*/React.createElement(\"title\", null, title), /*#__PURE__*/React.createElement(\"desc\", null, desc), children);\n}","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : String(i); }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/**\n * @fileOverview Curve\n */\nimport React from 'react';\nimport { line as shapeLine, area as shapeArea, curveBasisClosed, curveBasisOpen, curveBasis, curveBumpX, curveBumpY, curveLinearClosed, curveLinear, curveMonotoneX, curveMonotoneY, curveNatural, curveStep, curveStepAfter, curveStepBefore } from 'victory-vendor/d3-shape';\nimport upperFirst from 'lodash/upperFirst';\nimport isFunction from 'lodash/isFunction';\nimport clsx from 'clsx';\nimport { adaptEventHandlers } from '../util/types';\nimport { filterProps } from '../util/ReactUtils';\nimport { isNumber } from '../util/DataUtils';\nvar CURVE_FACTORIES = {\n curveBasisClosed: curveBasisClosed,\n curveBasisOpen: curveBasisOpen,\n curveBasis: curveBasis,\n curveBumpX: curveBumpX,\n curveBumpY: curveBumpY,\n curveLinearClosed: curveLinearClosed,\n curveLinear: curveLinear,\n curveMonotoneX: curveMonotoneX,\n curveMonotoneY: curveMonotoneY,\n curveNatural: curveNatural,\n curveStep: curveStep,\n curveStepAfter: curveStepAfter,\n curveStepBefore: curveStepBefore\n};\nvar defined = function defined(p) {\n return p.x === +p.x && p.y === +p.y;\n};\nvar getX = function getX(p) {\n return p.x;\n};\nvar getY = function getY(p) {\n return p.y;\n};\nvar getCurveFactory = function getCurveFactory(type, layout) {\n if (isFunction(type)) {\n return type;\n }\n var name = \"curve\".concat(upperFirst(type));\n if ((name === 'curveMonotone' || name === 'curveBump') && layout) {\n return CURVE_FACTORIES[\"\".concat(name).concat(layout === 'vertical' ? 'Y' : 'X')];\n }\n return CURVE_FACTORIES[name] || curveLinear;\n};\n/**\n * Calculate the path of curve. Returns null if points is an empty array.\n * @return path or null\n */\nexport var getPath = function getPath(_ref) {\n var _ref$type = _ref.type,\n type = _ref$type === void 0 ? 'linear' : _ref$type,\n _ref$points = _ref.points,\n points = _ref$points === void 0 ? [] : _ref$points,\n baseLine = _ref.baseLine,\n layout = _ref.layout,\n _ref$connectNulls = _ref.connectNulls,\n connectNulls = _ref$connectNulls === void 0 ? false : _ref$connectNulls;\n var curveFactory = getCurveFactory(type, layout);\n var formatPoints = connectNulls ? points.filter(function (entry) {\n return defined(entry);\n }) : points;\n var lineFunction;\n if (Array.isArray(baseLine)) {\n var formatBaseLine = connectNulls ? baseLine.filter(function (base) {\n return defined(base);\n }) : baseLine;\n var areaPoints = formatPoints.map(function (entry, index) {\n return _objectSpread(_objectSpread({}, entry), {}, {\n base: formatBaseLine[index]\n });\n });\n if (layout === 'vertical') {\n lineFunction = shapeArea().y(getY).x1(getX).x0(function (d) {\n return d.base.x;\n });\n } else {\n lineFunction = shapeArea().x(getX).y1(getY).y0(function (d) {\n return d.base.y;\n });\n }\n lineFunction.defined(defined).curve(curveFactory);\n return lineFunction(areaPoints);\n }\n if (layout === 'vertical' && isNumber(baseLine)) {\n lineFunction = shapeArea().y(getY).x1(getX).x0(baseLine);\n } else if (isNumber(baseLine)) {\n lineFunction = shapeArea().x(getX).y1(getY).y0(baseLine);\n } else {\n lineFunction = shapeLine().x(getX).y(getY);\n }\n lineFunction.defined(defined).curve(curveFactory);\n return lineFunction(formatPoints);\n};\nexport var Curve = function Curve(props) {\n var className = props.className,\n points = props.points,\n path = props.path,\n pathRef = props.pathRef;\n if ((!points || !points.length) && !path) {\n return null;\n }\n var realPath = points && points.length ? getPath(props) : path;\n return /*#__PURE__*/React.createElement(\"path\", _extends({}, filterProps(props, false), adaptEventHandlers(props), {\n className: clsx('recharts-curve', className),\n d: realPath,\n ref: pathRef\n }));\n};","import * as React from 'react';\n\nimport { IRefObject, IRenderFunction, KeyCodes, IStyleFunctionOrObject } from '../../../Utilities';\nimport { IPersonaProps } from '../../Persona/Persona.types';\nimport { IStyle, ITheme } from '../../../Styling';\nimport { ISpinnerStyleProps } from '../../Spinner/Spinner.types';\nimport { ISuggestionItemProps } from './SuggestionsItem.types';\nimport { IIconProps } from '../../Icon/Icon.types';\n/**\n * Suggestions component.\n * {@docCategory Pickers}\n */\nexport interface ISuggestions<T> {\n /** Execute the action selected. Can be SearchMore or ForceResolve actions. */\n executeSelectedAction: () => void;\n\n /** Focus on the ForceResolve action above the suggestions. If not available then focus on SearchMore action. */\n focusAboveSuggestions: () => void;\n\n /** Focus on the SearchMore action below the suggestions. If not available then focus on ForceResolve action. */\n focusBelowSuggestions: () => void;\n\n /** Focus the SearchMore action button. */\n focusSearchForMoreButton: () => void;\n\n /** Whether it has any suggested actions like ForceResolve or SearchMore. */\n hasSuggestedAction: () => boolean;\n\n /** Whether any of the suggested actions (ForceResolve or SearchMore) is selected. */\n hasSuggestedActionSelected: () => boolean;\n\n /** Returns true if the event was handled, false otherwise. */\n tryHandleKeyDown: (keyCode: number, currentSuggestionIndex: number) => boolean;\n}\n\n/**\n * Suggestions props interface. Refers to the entire container holding all the suggestions.\n * Type T is the type of the items that are displayed.\n * {@docCategory Pickers}\n */\n// eslint-disable-next-line deprecation/deprecation\nexport interface ISuggestionsProps<T> extends React.Props<any> {\n /**\n * Optional callback to access the ISuggestions interface. Use this instead of ref for accessing\n * the public methods and properties of the component.\n */\n componentRef?: IRefObject<ISuggestions<T>>;\n\n /**\n * How the suggestion should look in the suggestion list.\n */\n onRenderSuggestion: (props: T, suggestionItemProps: ISuggestionItemProps<T>) => JSX.Element;\n\n /**\n * What should occur when a suggestion is clicked\n */\n onSuggestionClick: (ev?: React.MouseEvent<HTMLElement>, item?: any, index?: number) => void;\n\n /**\n * The list of Suggestions that will be displayed\n */\n suggestions: ISuggestionModel<T>[];\n\n /**\n * How the \"no result found\" should look in the suggestion list.\n */\n onRenderNoResultFound?: IRenderFunction<void>;\n\n /**\n * The text that appears at the top of the suggestions list.\n */\n suggestionsHeaderText?: string;\n\n /**\n * The text that should appear at the top of the most recently used box.\n */\n mostRecentlyUsedHeaderText?: string;\n\n /**\n * The icon that appears indicating to the user that they can search for more results.\n */\n searchForMoreIcon?: IIconProps;\n\n /**\n * The text that appears indicating to the user that they can search for more results.\n */\n searchForMoreText?: string;\n\n /**\n * The callback that should be called when the user attempts to get more results\n */\n onGetMoreResults?: () => void;\n\n /**\n * The text that appears indicating to the use to force resolve the input\n */\n forceResolveText?: string;\n\n /**\n * The callback that should be called to see if the force resolve command should be shown\n */\n showForceResolve?: () => boolean;\n\n /**\n * The callback that should be called when the user attempts to use the input text as as item\n */\n createGenericItem?: () => void;\n\n /**\n * The CSS className of the suggestions root.\n */\n className?: string;\n\n /**\n * The CSS className of the suggestions list\n */\n suggestionsClassName?: string;\n\n /**\n * The text that should appear if there is a search error.\n *\n * @deprecated Use noResultsFoundText instead.\n */\n searchErrorText?: string;\n\n /**\n * The text that should appear if no results are found when searching.\n */\n noResultsFoundText?: string;\n\n /**\n * The className of the suggestion item.\n */\n suggestionsItemClassName?: string;\n\n /**\n * Used to indicate whether or not the user can request more suggestions.\n * Dictates whether or not the searchForMore button is displayed.\n */\n moreSuggestionsAvailable?: boolean;\n\n /**\n * Used to indicate whether or not the suggestions are loading.\n */\n isLoading?: boolean;\n\n /**\n * Used to indicate whether or not the component is searching for more results.\n */\n isSearching?: boolean;\n\n /**\n * The text to display while the results are loading.\n */\n loadingText?: string;\n\n /**\n * The text to display while searching for more results in a limited suggestions list.\n */\n searchingText?: string;\n\n /**\n * Indicates if a short list of recent suggestions should be shown.\n */\n isMostRecentlyUsedVisible?: boolean;\n\n /**\n * Function to fire when one of the optional remove buttons on a suggestion is clicked.\n *\n * TODO (adjective-object) remove IPersonaprops before the next major version bump\n */\n onSuggestionRemove?: (ev?: React.MouseEvent<HTMLElement>, item?: T | IPersonaProps, index?: number) => void;\n\n /**\n * Indicates if the text in resultsFooter or resultsFooterFull should be shown at the end of the suggestion list.\n * @defaultvalue true\n */\n isResultsFooterVisible?: boolean;\n\n /**\n * Maximum number of suggestions to show in the full suggestion list.\n */\n resultsMaximumNumber?: number;\n\n /**\n * A renderer that adds an element at the end of the suggestions list it has more items than resultsMaximumNumber.\n */\n resultsFooterFull?: (props: ISuggestionsProps<T>) => JSX.Element;\n\n /**\n * A renderer that adds an element at the end of the suggestions list it has fewer items than resultsMaximumNumber.\n */\n resultsFooter?: (props: ISuggestionsProps<T>) => JSX.Element;\n\n /**\n * Indicates whether to show a button with each suggestion to remove that suggestion.\n */\n showRemoveButtons?: boolean;\n\n /**\n * Screen reader message to read when there are suggestions available.\n */\n suggestionsAvailableAlertText?: string;\n\n /**\n * A function that resets focus to the expected item in the suggestion list\n */\n refocusSuggestions?: (keyCode: KeyCodes) => void;\n\n /**\n * An ARIA label for the container that is the parent of the suggestions.\n */\n suggestionsContainerAriaLabel?: string;\n\n /**\n * An ARIA label to use for the buttons to remove individual suggestions.\n */\n removeSuggestionAriaLabel?: string;\n\n /**\n * The string that will be used as the suggestionsListId.\n * Will be used by the BasePicker to keep track of the list for aria.\n */\n suggestionsListId?: string;\n\n /** Call to provide customized styling that will layer on top of the variant rules. */\n styles?: IStyleFunctionOrObject<any, any>;\n\n /** Theme provided by High-Order Component. */\n theme?: ITheme;\n}\n\n/**\n * The props needed to construct Suggestions styles.\n * {@docCategory Pickers}\n */\nexport type ISuggestionsStyleProps = Required<Pick<ISuggestionsProps<any>, 'theme'>> &\n Pick<ISuggestionsProps<any>, 'className' | 'suggestionsClassName'> & {\n /** Whether the forceResolve actionButton is selected. */\n forceResolveButtonSelected?: boolean;\n\n /** Whether the searchForMore actionButton is selected. */\n searchForMoreButtonSelected?: boolean;\n };\n\n/**\n * Represents the stylable areas of the Suggestions.\n * {@docCategory Pickers}\n */\nexport interface ISuggestionsStyles {\n /** Root element of the suggestions outer wrapper. */\n root: IStyle;\n\n /** Refers to the suggestions container. */\n suggestionsContainer: IStyle;\n\n /** Refers to the title rendered for suggestions container header and/or footer (if provided). */\n title: IStyle;\n\n /** Refers to the 'Force resolve' actionButton. */\n forceResolveButton: IStyle;\n\n /** Refers to the 'Search for more' actionButton. */\n searchForMoreButton: IStyle;\n\n /** Refers to the text rendered when no suggestions are found. */\n noSuggestions: IStyle;\n\n /** Refers to the text displaying if more suggestions available. */\n suggestionsAvailable: IStyle;\n\n /** SubComponents (Spinner) styles. */\n subComponentStyles: ISuggestionsSubComponentStyles;\n}\n\n/**\n * Styles interface of the SubComponents rendered within PeoplePickerItemSelected.\n * {@docCategory Pickers}\n */\nexport interface ISuggestionsSubComponentStyles {\n /** Refers to the Spinner rendered within the Suggestions when searching or loading suggestions. */\n spinner: IStyleFunctionOrObject<ISpinnerStyleProps, any>;\n}\n\n/**\n * SuggestionModel interface.\n * Type T is the type of the item that is suggested (Persona, Tag or any other custom picker).\n * {@docCategory Pickers}\n */\nexport interface ISuggestionModel<T> {\n /** The suggested item of the type T */\n item: T;\n\n /** Whether the suggested item is selected or not. */\n selected: boolean;\n\n /** Aria-label string for each suggested item. */\n ariaLabel?: string;\n}\n\n/**\n * Enum to help identify which suggestions action button is selected.\n * {@docCategory Pickers}\n */\nexport enum SuggestionActionType {\n /** None of the actions is selected. */\n none,\n\n /** ForceResolve action is selected. */\n forceResolve,\n\n /** SearchMore action is selected. */\n searchMore,\n}\n","import * as React from 'react';\nimport { DelayedRender, classNamesFunction, getNativeProps, divProperties } from '../../Utilities';\nimport { IAnnouncedProps, IAnnouncedStyles } from './Announced.types';\n\nconst getClassNames = classNamesFunction<{}, IAnnouncedStyles>();\n\n/**\n * {@docCategory Announced}\n */\nexport class AnnouncedBase extends React.Component<IAnnouncedProps> {\n public static defaultProps: Partial<IAnnouncedProps> = {\n 'aria-live': 'polite',\n };\n\n public render(): JSX.Element {\n const { message, styles, as: Root = 'div', className } = this.props;\n\n const classNames = getClassNames(styles, { className });\n\n return (\n <Root role=\"status\" className={classNames.root} {...getNativeProps(this.props, divProperties, ['className'])}>\n <DelayedRender>\n <div className={classNames.screenReaderText}>{message}</div>\n </DelayedRender>\n </Root>\n );\n }\n}\n","import * as React from 'react';\nimport { styled } from '../../Utilities';\nimport { IAnnouncedProps, IAnnouncedStyles } from './Announced.types';\nimport { AnnouncedBase } from './Announced.base';\nimport { getStyles } from './Announced.styles';\n\nexport const Announced: React.FunctionComponent<IAnnouncedProps> = styled<IAnnouncedProps, {}, IAnnouncedStyles>(\n AnnouncedBase,\n getStyles,\n);\n","import { hiddenContentStyle } from '../../Styling';\nimport { IStyleFunction } from '../../Utilities';\nimport { IAnnouncedStyles, IAnnouncedStyleProps } from './Announced.types';\n\nexport const getStyles: IStyleFunction<IAnnouncedStyleProps, IAnnouncedStyles> = props => {\n return {\n root: props.className,\n screenReaderText: hiddenContentStyle,\n };\n};\n","/* eslint-disable */\nimport { loadStyles } from '@microsoft/load-themed-styles';\nloadStyles([{\"rawString\":\".root_2c0ee681{min-width:260px}.suggestionsItem_2c0ee681{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;position:relative;overflow:hidden}.suggestionsItem_2c0ee681:hover{background:\"},{\"theme\":\"neutralLighter\",\"defaultValue\":\"#f3f2f1\"},{\"rawString\":\"}.suggestionsItem_2c0ee681:hover .closeButton_2c0ee681{display:block}.suggestionsItem_2c0ee681.suggestionsItemIsSuggested_2c0ee681{background:\"},{\"theme\":\"neutralLight\",\"defaultValue\":\"#edebe9\"},{\"rawString\":\"}.suggestionsItem_2c0ee681.suggestionsItemIsSuggested_2c0ee681:hover{background:\"},{\"theme\":\"neutralTertiaryAlt\",\"defaultValue\":\"#c8c6c4\"},{\"rawString\":\"}@media screen and (-ms-high-contrast:active),screen and (forced-colors:active){.suggestionsItem_2c0ee681.suggestionsItemIsSuggested_2c0ee681:hover{background:Highlight;color:HighlightText}}@media screen and (-ms-high-contrast:active),screen and (forced-colors:active){.suggestionsItem_2c0ee681.suggestionsItemIsSuggested_2c0ee681{background:Highlight;color:HighlightText;-ms-high-contrast-adjust:none}}.suggestionsItem_2c0ee681.suggestionsItemIsSuggested_2c0ee681 .closeButton_2c0ee681:hover{background:\"},{\"theme\":\"neutralTertiary\",\"defaultValue\":\"#a19f9d\"},{\"rawString\":\";color:\"},{\"theme\":\"neutralPrimary\",\"defaultValue\":\"#323130\"},{\"rawString\":\"}@media screen and (-ms-high-contrast:active),screen and (forced-colors:active){.suggestionsItem_2c0ee681.suggestionsItemIsSuggested_2c0ee681 .itemButton_2c0ee681{color:HighlightText}}.suggestionsItem_2c0ee681 .closeButton_2c0ee681{display:none;color:\"},{\"theme\":\"neutralSecondary\",\"defaultValue\":\"#605e5c\"},{\"rawString\":\"}.suggestionsItem_2c0ee681 .closeButton_2c0ee681:hover{background:\"},{\"theme\":\"neutralLight\",\"defaultValue\":\"#edebe9\"},{\"rawString\":\"}.actionButton_2c0ee681{background-color:transparent;border:0;cursor:pointer;margin:0;position:relative;border-top:1px solid \"},{\"theme\":\"neutralLight\",\"defaultValue\":\"#edebe9\"},{\"rawString\":\";height:40px;width:100%;font-size:12px}[dir=ltr] .actionButton_2c0ee681{padding-left:8px}[dir=rtl] .actionButton_2c0ee681{padding-right:8px}html[dir=ltr] .actionButton_2c0ee681{text-align:left}html[dir=rtl] .actionButton_2c0ee681{text-align:right}.actionButton_2c0ee681:hover{background-color:\"},{\"theme\":\"neutralLight\",\"defaultValue\":\"#edebe9\"},{\"rawString\":\";cursor:pointer}.actionButton_2c0ee681:active,.actionButton_2c0ee681:focus{background-color:\"},{\"theme\":\"themeLight\",\"defaultValue\":\"#c7e0f4\"},{\"rawString\":\"}.actionButton_2c0ee681 .ms-Button-icon{font-size:16px;width:25px}.actionButton_2c0ee681 .ms-Button-label{margin:0 4px 0 9px}html[dir=rtl] .actionButton_2c0ee681 .ms-Button-label{margin:0 9px 0 4px}.buttonSelected_2c0ee681{background-color:\"},{\"theme\":\"themeLight\",\"defaultValue\":\"#c7e0f4\"},{\"rawString\":\"}.suggestionsTitle_2c0ee681{padding:0 12px;color:\"},{\"theme\":\"themePrimary\",\"defaultValue\":\"#0078d4\"},{\"rawString\":\";font-size:12px;line-height:40px;border-bottom:1px solid \"},{\"theme\":\"neutralLight\",\"defaultValue\":\"#edebe9\"},{\"rawString\":\"}.suggestionsContainer_2c0ee681{overflow-y:auto;overflow-x:hidden;max-height:300px;border-bottom:1px solid \"},{\"theme\":\"neutralLight\",\"defaultValue\":\"#edebe9\"},{\"rawString\":\"}.suggestionsNone_2c0ee681{text-align:center;color:#797775;font-size:12px;line-height:30px}.suggestionsSpinner_2c0ee681{margin:5px 0;white-space:nowrap;line-height:20px;font-size:12px}html[dir=ltr] .suggestionsSpinner_2c0ee681{padding-left:14px}html[dir=rtl] .suggestionsSpinner_2c0ee681{padding-right:14px}html[dir=ltr] .suggestionsSpinner_2c0ee681{text-align:left}html[dir=rtl] .suggestionsSpinner_2c0ee681{text-align:right}.suggestionsSpinner_2c0ee681 .ms-Spinner-circle{display:inline-block;vertical-align:middle}.suggestionsSpinner_2c0ee681 .ms-Spinner-label{display:inline-block;margin:0 10px 0 16px;vertical-align:middle}html[dir=rtl] .suggestionsSpinner_2c0ee681 .ms-Spinner-label{margin:0 16px 0 10px}.itemButton_2c0ee681.itemButton_2c0ee681{width:100%;padding:0;min-width:0;height:100%}@media screen and (-ms-high-contrast:active),screen and (forced-colors:active){.itemButton_2c0ee681.itemButton_2c0ee681{color:WindowText}}.itemButton_2c0ee681.itemButton_2c0ee681:hover{color:\"},{\"theme\":\"neutralDark\",\"defaultValue\":\"#201f1e\"},{\"rawString\":\"}.closeButton_2c0ee681.closeButton_2c0ee681{padding:0 4px;height:auto;width:32px}@media screen and (-ms-high-contrast:active),screen and (forced-colors:active){.closeButton_2c0ee681.closeButton_2c0ee681{color:WindowText}}.closeButton_2c0ee681.closeButton_2c0ee681:hover{background:\"},{\"theme\":\"neutralTertiaryAlt\",\"defaultValue\":\"#c8c6c4\"},{\"rawString\":\";color:\"},{\"theme\":\"neutralDark\",\"defaultValue\":\"#201f1e\"},{\"rawString\":\"}.suggestionsAvailable_2c0ee681{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}\"}]);\nexport const root = \"root_2c0ee681\";\nexport const suggestionsItem = \"suggestionsItem_2c0ee681\";\nexport const closeButton = \"closeButton_2c0ee681\";\nexport const suggestionsItemIsSuggested = \"suggestionsItemIsSuggested_2c0ee681\";\nexport const itemButton = \"itemButton_2c0ee681\";\nexport const actionButton = \"actionButton_2c0ee681\";\nexport const buttonSelected = \"buttonSelected_2c0ee681\";\nexport const suggestionsTitle = \"suggestionsTitle_2c0ee681\";\nexport const suggestionsContainer = \"suggestionsContainer_2c0ee681\";\nexport const suggestionsNone = \"suggestionsNone_2c0ee681\";\nexport const suggestionsSpinner = \"suggestionsSpinner_2c0ee681\";\nexport const suggestionsAvailable = \"suggestionsAvailable_2c0ee681\";","import * as React from 'react';\n\nimport { classNamesFunction, css, initializeComponentRef } from '../../../Utilities';\nimport { IProcessedStyleSet } from '../../../Styling';\nimport { CommandButton, IconButton } from '../../../Button';\nimport { ISuggestionItemProps, ISuggestionsItemStyleProps, ISuggestionsItemStyles } from './SuggestionsItem.types';\n\nimport * as stylesImport from './Suggestions.scss';\nconst legacyStyles: any = stylesImport;\n\nconst getClassNames = classNamesFunction<ISuggestionsItemStyleProps, ISuggestionsItemStyles>();\n\n/**\n * {@docCategory Pickers}\n */\nexport class SuggestionsItem<T> extends React.Component<ISuggestionItemProps<T>, {}> {\n constructor(props: ISuggestionItemProps<T>) {\n super(props);\n\n initializeComponentRef(this);\n }\n\n public render(): JSX.Element {\n const {\n suggestionModel,\n RenderSuggestion,\n onClick,\n className,\n id,\n onRemoveItem,\n isSelectedOverride,\n removeButtonAriaLabel,\n styles,\n theme,\n } = this.props;\n\n // TODO\n // Clean this up by leaving only the first part after removing support for SASS.\n // Currently we can not remove the SASS styles from SuggestionsItem class because it\n // might be used by consumers separately from pickers extending from BasePicker\n // and have not used the new 'styles' prop. Because it's expecting a type parameter,\n // we can not use the 'styled' function without adding some helpers which can break\n // downstream consumers who did not use the new helpers.\n // We check for 'styles' prop which is going to be injected by the 'styled' HOC\n // in Suggestions when the typed SuggestionsItem class is ready to be rendered. If the\n // check passes we can use the CSS-in-JS styles. If the check fails (ex: custom picker),\n // then we just use the old SASS styles instead.\n const classNames: Partial<IProcessedStyleSet<ISuggestionsItemStyles>> = styles\n ? getClassNames(styles, {\n theme: theme!,\n className,\n suggested: suggestionModel.selected || isSelectedOverride,\n })\n : {\n root: css(\n 'ms-Suggestions-item',\n legacyStyles.suggestionsItem,\n {\n ['is-suggested ' + legacyStyles.suggestionsItemIsSuggested]:\n suggestionModel.selected || isSelectedOverride,\n },\n className,\n ),\n itemButton: css('ms-Suggestions-itemButton', legacyStyles.itemButton),\n closeButton: css('ms-Suggestions-closeButton', legacyStyles.closeButton),\n };\n\n return (\n <div className={classNames.root} role=\"presentation\">\n <CommandButton\n onClick={onClick}\n className={classNames.itemButton}\n id={id}\n aria-selected={suggestionModel.selected}\n role=\"option\"\n aria-label={suggestionModel.ariaLabel}\n >\n {RenderSuggestion(suggestionModel.item, this.props)}\n </CommandButton>\n {this.props.showRemoveButton ? (\n <IconButton\n iconProps={{ iconName: 'Cancel', styles: { root: { fontSize: '12px' } } }}\n title={removeButtonAriaLabel}\n ariaLabel={removeButtonAriaLabel}\n onClick={onRemoveItem}\n className={classNames.closeButton}\n />\n ) : null}\n </div>\n );\n }\n}\n","import * as React from 'react';\n\nimport {\n initializeComponentRef,\n KeyCodes,\n classNamesFunction,\n IStyleFunctionOrObject,\n css,\n styled,\n} from '../../../Utilities';\nimport { IProcessedStyleSet } from '../../../Styling';\nimport { CommandButton, IButton } from '../../../Button';\nimport { Spinner, ISpinnerStyleProps, ISpinnerStyles } from '../../../Spinner';\nimport { Announced } from '../../../Announced';\nimport {\n ISuggestionsProps,\n SuggestionActionType,\n ISuggestionsStyleProps,\n ISuggestionsStyles,\n} from './Suggestions.types';\nimport { SuggestionsItem } from './SuggestionsItem';\nimport { getStyles as suggestionsItemStyles } from './SuggestionsItem.styles';\nimport { ISuggestionItemProps, ISuggestionsItemStyleProps, ISuggestionsItemStyles } from './SuggestionsItem.types';\n\nimport * as stylesImport from './Suggestions.scss';\nconst legacyStyles: any = stylesImport;\n\nconst getClassNames = classNamesFunction<ISuggestionsStyleProps, ISuggestionsStyles>();\n\nexport interface ISuggestionsState {\n selectedActionType: SuggestionActionType;\n}\n\nconst StyledSuggestionsItem = styled<ISuggestionItemProps<any>, ISuggestionsItemStyleProps, ISuggestionsItemStyles>(\n SuggestionsItem,\n suggestionsItemStyles,\n undefined,\n { scope: 'SuggestionItem' },\n);\n\n/**\n * {@docCategory Pickers}\n */\nexport class Suggestions<T> extends React.Component<ISuggestionsProps<T>, ISuggestionsState> {\n protected _forceResolveButton = React.createRef<IButton>();\n protected _searchForMoreButton = React.createRef<IButton>();\n protected _selectedElement = React.createRef<HTMLDivElement>();\n private activeSelectedElement: HTMLDivElement | null;\n private _classNames: Partial<IProcessedStyleSet<ISuggestionsStyles>>;\n\n constructor(suggestionsProps: ISuggestionsProps<T>) {\n super(suggestionsProps);\n\n initializeComponentRef(this);\n\n this.state = {\n selectedActionType: SuggestionActionType.none,\n };\n }\n\n public componentDidMount(): void {\n this.scrollSelected();\n this.activeSelectedElement = this._selectedElement ? this._selectedElement.current : null;\n }\n\n public componentDidUpdate(): void {\n // Only scroll to selected element if the selected element has changed. Otherwise do nothing.\n // This prevents some odd behavior where scrolling the active element out of view and clicking on a selected element\n // will trigger a focus event and not give the clicked element the click.\n if (this._selectedElement.current && this.activeSelectedElement !== this._selectedElement.current) {\n this.scrollSelected();\n this.activeSelectedElement = this._selectedElement.current;\n }\n }\n\n public render(): JSX.Element {\n const {\n forceResolveText,\n mostRecentlyUsedHeaderText,\n searchForMoreIcon,\n searchForMoreText,\n className,\n moreSuggestionsAvailable,\n noResultsFoundText,\n suggestions,\n isLoading,\n isSearching,\n loadingText,\n onRenderNoResultFound,\n searchingText,\n isMostRecentlyUsedVisible,\n resultsMaximumNumber,\n resultsFooterFull,\n resultsFooter,\n isResultsFooterVisible = true,\n suggestionsHeaderText,\n suggestionsClassName,\n theme,\n styles,\n suggestionsListId,\n } = this.props;\n\n // TODO\n // Clean this up by leaving only the first part after removing support for SASS.\n // Currently we can not remove the SASS styles from Suggestions class because it\n // might be used by consumers separately from pickers extending from BasePicker\n // and have not used the new 'styles' prop. Because it's expecting a type parameter,\n // we can not use the 'styled' function without adding some helpers which can break\n // downstream consumers who did not use the new helpers.\n // We check for 'styles' prop which is going to be injected by the 'styled' HOC\n // in BasePicker when the typed Suggestions class is ready to be rendered. If the check\n // passes we can use the CSS-in-JS styles. If the check fails (ex: custom picker),\n // then we just use the old SASS styles instead.\n this._classNames = styles\n ? getClassNames(styles, {\n theme: theme!,\n className,\n suggestionsClassName,\n forceResolveButtonSelected: this.state.selectedActionType === SuggestionActionType.forceResolve,\n searchForMoreButtonSelected: this.state.selectedActionType === SuggestionActionType.searchMore,\n })\n : {\n root: css('ms-Suggestions', className, legacyStyles.root),\n title: css('ms-Suggestions-title', legacyStyles.suggestionsTitle),\n searchForMoreButton: css('ms-SearchMore-button', legacyStyles.actionButton, {\n ['is-selected ' + legacyStyles.buttonSelected]:\n this.state.selectedActionType === SuggestionActionType.searchMore,\n }),\n forceResolveButton: css('ms-forceResolve-button', legacyStyles.actionButton, {\n ['is-selected ' + legacyStyles.buttonSelected]:\n this.state.selectedActionType === SuggestionActionType.forceResolve,\n }),\n suggestionsAvailable: css('ms-Suggestions-suggestionsAvailable', legacyStyles.suggestionsAvailable),\n suggestionsContainer: css(\n 'ms-Suggestions-container',\n legacyStyles.suggestionsContainer,\n suggestionsClassName,\n ),\n noSuggestions: css('ms-Suggestions-none', legacyStyles.suggestionsNone),\n };\n\n const spinnerStyles = this._classNames.subComponentStyles\n ? (this._classNames.subComponentStyles.spinner as IStyleFunctionOrObject<ISpinnerStyleProps, ISpinnerStyles>)\n : undefined;\n\n // TODO: cleanup after refactor of pickers to composition pattern and remove SASS support.\n const spinnerClassNameOrStyles = styles\n ? { styles: spinnerStyles }\n : { className: css('ms-Suggestions-spinner', legacyStyles.suggestionsSpinner) };\n\n const noResults = () => {\n return noResultsFoundText ? <div className={this._classNames.noSuggestions}>{noResultsFoundText}</div> : null;\n };\n\n // MostRecently Used text should supercede the header text if it's there and available.\n let headerText: string | undefined = suggestionsHeaderText;\n if (isMostRecentlyUsedVisible && mostRecentlyUsedHeaderText) {\n headerText = mostRecentlyUsedHeaderText;\n }\n\n let footerTitle: ((props: ISuggestionsProps<T>) => JSX.Element) | undefined = undefined;\n if (isResultsFooterVisible) {\n footerTitle = suggestions.length >= (resultsMaximumNumber as number) ? resultsFooterFull : resultsFooter;\n }\n\n const hasNoSuggestions = (!suggestions || !suggestions.length) && !isLoading;\n const divProps: React.HtmlHTMLAttributes<HTMLDivElement> =\n hasNoSuggestions || isLoading ? { role: 'dialog', id: suggestionsListId } : {};\n\n const forceResolveId =\n this.state.selectedActionType === SuggestionActionType.forceResolve ? 'sug-selectedAction' : undefined;\n const searchForMoreId =\n this.state.selectedActionType === SuggestionActionType.searchMore ? 'sug-selectedAction' : undefined;\n\n return (\n <div className={this._classNames.root} {...divProps}>\n <Announced message={this._getAlertText()} aria-live=\"polite\" />\n\n {headerText ? <div className={this._classNames.title}>{headerText}</div> : null}\n {forceResolveText && this._shouldShowForceResolve() && (\n <CommandButton\n componentRef={this._forceResolveButton}\n className={this._classNames.forceResolveButton}\n id={forceResolveId}\n onClick={this._forceResolve}\n data-automationid={'sug-forceResolve'}\n >\n {forceResolveText}\n </CommandButton>\n )}\n {isLoading && <Spinner {...spinnerClassNameOrStyles} label={loadingText} />}\n {hasNoSuggestions\n ? onRenderNoResultFound\n ? onRenderNoResultFound(undefined, noResults)\n : noResults()\n : this._renderSuggestions()}\n {searchForMoreText && moreSuggestionsAvailable && (\n <CommandButton\n componentRef={this._searchForMoreButton}\n className={this._classNames.searchForMoreButton}\n iconProps={searchForMoreIcon || { iconName: 'Search' }}\n id={searchForMoreId}\n onClick={this._getMoreResults}\n data-automationid={'sug-searchForMore'}\n >\n {searchForMoreText}\n </CommandButton>\n )}\n {isSearching ? <Spinner {...spinnerClassNameOrStyles} label={searchingText} /> : null}\n {footerTitle && !moreSuggestionsAvailable && !isMostRecentlyUsedVisible && !isSearching ? (\n <div className={this._classNames.title}>{footerTitle(this.props)}</div>\n ) : null}\n </div>\n );\n }\n\n /**\n * Returns true if the event was handled, false otherwise\n */\n public tryHandleKeyDown = (keyCode: number, currentSuggestionIndex: number): boolean => {\n let isEventHandled = false;\n let newSelectedActionType = null;\n const currentSelectedAction = this.state.selectedActionType;\n const suggestionLength = this.props.suggestions.length;\n if (keyCode === KeyCodes.down) {\n switch (currentSelectedAction) {\n case SuggestionActionType.forceResolve:\n if (suggestionLength > 0) {\n this._refocusOnSuggestions(keyCode);\n newSelectedActionType = SuggestionActionType.none;\n } else if (this._searchForMoreButton.current) {\n newSelectedActionType = SuggestionActionType.searchMore;\n } else {\n newSelectedActionType = SuggestionActionType.forceResolve;\n }\n break;\n case SuggestionActionType.searchMore:\n if (this._forceResolveButton.current) {\n newSelectedActionType = SuggestionActionType.forceResolve;\n } else if (suggestionLength > 0) {\n this._refocusOnSuggestions(keyCode);\n newSelectedActionType = SuggestionActionType.none;\n } else {\n newSelectedActionType = SuggestionActionType.searchMore;\n }\n break;\n case SuggestionActionType.none:\n if (currentSuggestionIndex === -1 && this._forceResolveButton.current) {\n newSelectedActionType = SuggestionActionType.forceResolve;\n }\n break;\n }\n } else if (keyCode === KeyCodes.up) {\n switch (currentSelectedAction) {\n case SuggestionActionType.forceResolve:\n if (this._searchForMoreButton.current) {\n newSelectedActionType = SuggestionActionType.searchMore;\n } else if (suggestionLength > 0) {\n this._refocusOnSuggestions(keyCode);\n newSelectedActionType = SuggestionActionType.none;\n }\n break;\n case SuggestionActionType.searchMore:\n if (suggestionLength > 0) {\n this._refocusOnSuggestions(keyCode);\n newSelectedActionType = SuggestionActionType.none;\n } else if (this._forceResolveButton.current) {\n newSelectedActionType = SuggestionActionType.forceResolve;\n }\n break;\n case SuggestionActionType.none:\n if (currentSuggestionIndex === -1 && this._searchForMoreButton.current) {\n newSelectedActionType = SuggestionActionType.searchMore;\n }\n break;\n }\n }\n\n if (newSelectedActionType !== null) {\n this.setState({ selectedActionType: newSelectedActionType });\n isEventHandled = true;\n }\n\n return isEventHandled;\n };\n\n public hasSuggestedAction(): boolean {\n return !!this._searchForMoreButton.current || !!this._forceResolveButton.current;\n }\n\n public hasSuggestedActionSelected(): boolean {\n return this.state.selectedActionType !== SuggestionActionType.none;\n }\n\n public executeSelectedAction(): void {\n switch (this.state.selectedActionType) {\n case SuggestionActionType.forceResolve:\n this._forceResolve();\n break;\n case SuggestionActionType.searchMore:\n this._getMoreResults();\n break;\n }\n }\n\n public focusAboveSuggestions(): void {\n if (this._forceResolveButton.current) {\n this.setState({ selectedActionType: SuggestionActionType.forceResolve });\n } else if (this._searchForMoreButton.current) {\n this.setState({ selectedActionType: SuggestionActionType.searchMore });\n }\n }\n\n public focusBelowSuggestions(): void {\n if (this._searchForMoreButton.current) {\n this.setState({ selectedActionType: SuggestionActionType.searchMore });\n } else if (this._forceResolveButton.current) {\n this.setState({ selectedActionType: SuggestionActionType.forceResolve });\n }\n }\n\n public focusSearchForMoreButton(): void {\n if (this._searchForMoreButton.current) {\n this._searchForMoreButton.current.focus();\n }\n }\n\n // TODO get the element to scroll into view properly regardless of direction.\n public scrollSelected(): void {\n if (this._selectedElement.current && this._selectedElement.current.scrollIntoView !== undefined) {\n this._selectedElement.current.scrollIntoView(false);\n }\n }\n\n private _getAlertText = () => {\n const { isLoading, isSearching, suggestions, suggestionsAvailableAlertText, noResultsFoundText } = this.props;\n if (!isLoading && !isSearching) {\n if (suggestions.length > 0) {\n return suggestionsAvailableAlertText || '';\n }\n if (noResultsFoundText) {\n return noResultsFoundText;\n }\n }\n return '';\n };\n\n private _renderSuggestions(): JSX.Element | null {\n const {\n isMostRecentlyUsedVisible,\n mostRecentlyUsedHeaderText,\n onRenderSuggestion,\n removeSuggestionAriaLabel,\n suggestionsItemClassName,\n resultsMaximumNumber,\n showRemoveButtons,\n suggestionsContainerAriaLabel,\n suggestionsHeaderText,\n suggestionsListId,\n } = this.props;\n\n let { suggestions } = this.props;\n\n const StyledTypedSuggestionsItem: React.FunctionComponent<ISuggestionItemProps<T>> = StyledSuggestionsItem;\n\n let selectedIndex = -1;\n suggestions.some((element, index) => {\n if (element.selected) {\n selectedIndex = index;\n return true;\n }\n return false;\n });\n\n if (resultsMaximumNumber) {\n suggestions =\n selectedIndex >= resultsMaximumNumber\n ? suggestions.slice(selectedIndex - resultsMaximumNumber + 1, selectedIndex + 1)\n : suggestions.slice(0, resultsMaximumNumber);\n }\n\n if (suggestions.length === 0) {\n return null;\n }\n\n // MostRecently Used text should supercede the header text if it's there and available.\n let headerText: string | undefined = suggestionsHeaderText;\n if (isMostRecentlyUsedVisible && mostRecentlyUsedHeaderText) {\n headerText = mostRecentlyUsedHeaderText;\n }\n\n return (\n <div\n className={this._classNames.suggestionsContainer}\n id={suggestionsListId}\n role=\"listbox\"\n aria-label={suggestionsContainerAriaLabel || headerText}\n >\n {suggestions.map((suggestion, index) => (\n <div\n ref={suggestion.selected ? this._selectedElement : undefined}\n key={(suggestion.item as any).key ? (suggestion.item as any).key : index}\n role=\"presentation\"\n >\n <StyledTypedSuggestionsItem\n suggestionModel={suggestion}\n RenderSuggestion={onRenderSuggestion}\n onClick={this._onClickTypedSuggestionsItem(suggestion.item, index)}\n className={suggestionsItemClassName}\n showRemoveButton={showRemoveButtons}\n removeButtonAriaLabel={removeSuggestionAriaLabel}\n onRemoveItem={this._onRemoveTypedSuggestionsItem(suggestion.item, index)}\n id={'sug-' + index}\n />\n </div>\n ))}\n </div>\n );\n }\n\n private _getMoreResults = (): void => {\n if (this.props.onGetMoreResults) {\n this.props.onGetMoreResults();\n }\n };\n\n private _forceResolve = (): void => {\n if (this.props.createGenericItem) {\n this.props.createGenericItem();\n }\n };\n\n private _shouldShowForceResolve = (): boolean => {\n return this.props.showForceResolve ? this.props.showForceResolve() : false;\n };\n\n private _onClickTypedSuggestionsItem = (item: T, index: number): ((ev: React.MouseEvent<HTMLElement>) => void) => {\n return (ev: React.MouseEvent<HTMLElement>): void => {\n this.props.onSuggestionClick(ev, item, index);\n };\n };\n\n private _refocusOnSuggestions = (keyCode: number): void => {\n if (typeof this.props.refocusSuggestions === 'function') {\n this.props.refocusSuggestions(keyCode);\n }\n };\n\n private _onRemoveTypedSuggestionsItem = (item: T, index: number): ((ev: React.MouseEvent<HTMLElement>) => void) => {\n return (ev: React.MouseEvent<HTMLElement>): void => {\n const onSuggestionRemove = this.props.onSuggestionRemove!;\n onSuggestionRemove(ev, item, index);\n ev.stopPropagation();\n };\n };\n}\n","import {\n getGlobalClassNames,\n getHighContrastNoAdjustStyle,\n HighContrastSelector,\n IStyle,\n hiddenContentStyle,\n} from '../../../Styling';\nimport { ISuggestionsStyleProps, ISuggestionsStyles } from './Suggestions.types';\n\nconst GlobalClassNames = {\n root: 'ms-Suggestions',\n suggestionsContainer: 'ms-Suggestions-container',\n title: 'ms-Suggestions-title',\n forceResolveButton: 'ms-forceResolve-button',\n searchForMoreButton: 'ms-SearchMore-button',\n spinner: 'ms-Suggestions-spinner',\n noSuggestions: 'ms-Suggestions-none',\n suggestionsAvailable: 'ms-Suggestions-suggestionsAvailable',\n isSelected: 'is-selected',\n};\n\nexport function getStyles(props: ISuggestionsStyleProps): ISuggestionsStyles {\n const { className, suggestionsClassName, theme, forceResolveButtonSelected, searchForMoreButtonSelected } = props;\n\n const { palette, semanticColors, fonts } = theme;\n\n const classNames = getGlobalClassNames(GlobalClassNames, theme);\n\n const actionButtonStyles: IStyle = {\n backgroundColor: 'transparent',\n border: 0,\n cursor: 'pointer',\n margin: 0,\n paddingLeft: 8,\n position: 'relative',\n borderTop: `1px solid ${palette.neutralLight}`,\n height: 40,\n textAlign: 'left',\n width: '100%',\n fontSize: fonts.small.fontSize,\n selectors: {\n ':hover': {\n backgroundColor: semanticColors.menuItemBackgroundPressed,\n cursor: 'pointer',\n },\n ':focus, :active': {\n backgroundColor: palette.themeLight,\n },\n '.ms-Button-icon': {\n fontSize: fonts.mediumPlus.fontSize,\n width: 25,\n },\n '.ms-Button-label': {\n margin: '0 4px 0 9px',\n },\n },\n };\n\n const actionButtonSelectedStyles: IStyle = {\n backgroundColor: palette.themeLight,\n selectors: {\n [HighContrastSelector]: {\n backgroundColor: 'Highlight',\n borderColor: 'Highlight',\n color: 'HighlightText',\n ...getHighContrastNoAdjustStyle(),\n },\n },\n };\n\n return {\n root: [\n classNames.root,\n {\n minWidth: 260,\n },\n className,\n ],\n suggestionsContainer: [\n classNames.suggestionsContainer,\n {\n overflowY: 'auto',\n overflowX: 'hidden',\n maxHeight: 300,\n transform: 'translate3d(0,0,0)',\n },\n suggestionsClassName,\n ],\n title: [\n classNames.title,\n {\n padding: '0 12px',\n fontSize: fonts.small.fontSize,\n color: palette.themePrimary,\n lineHeight: 40,\n borderBottom: `1px solid ${semanticColors.menuItemBackgroundPressed}`,\n },\n ],\n forceResolveButton: [\n classNames.forceResolveButton,\n actionButtonStyles,\n forceResolveButtonSelected && [classNames.isSelected, actionButtonSelectedStyles],\n ],\n searchForMoreButton: [\n classNames.searchForMoreButton,\n actionButtonStyles,\n searchForMoreButtonSelected && [classNames.isSelected, actionButtonSelectedStyles],\n ],\n noSuggestions: [\n classNames.noSuggestions,\n {\n textAlign: 'center',\n color: palette.neutralSecondary,\n fontSize: fonts.small.fontSize,\n lineHeight: 30,\n },\n ],\n suggestionsAvailable: [classNames.suggestionsAvailable, hiddenContentStyle],\n subComponentStyles: {\n spinner: {\n root: [\n classNames.spinner,\n {\n margin: '5px 0',\n paddingLeft: 14,\n textAlign: 'left',\n whiteSpace: 'nowrap',\n lineHeight: 20,\n fontSize: fonts.small.fontSize,\n },\n ],\n circle: {\n display: 'inline-block',\n verticalAlign: 'middle',\n },\n label: {\n display: 'inline-block',\n verticalAlign: 'middle',\n margin: '0 10px 0 16px',\n },\n },\n },\n };\n}\n","import { ISuggestionModel } from './Suggestions.types';\n\n/**\n * {@docCategory Pickers}\n */\nexport class SuggestionsController<T> {\n public currentIndex: number;\n public currentSuggestion: ISuggestionModel<T> | undefined;\n public suggestions: ISuggestionModel<T>[];\n\n constructor() {\n this.suggestions = [];\n this.currentIndex = -1;\n }\n\n public updateSuggestions(newSuggestions: T[], selectedIndex?: number): void {\n if (newSuggestions && newSuggestions.length > 0) {\n this.suggestions = this.convertSuggestionsToSuggestionItems(newSuggestions);\n this.currentIndex = selectedIndex ? selectedIndex : 0;\n if (selectedIndex! === -1) {\n this.currentSuggestion = undefined;\n } else if (selectedIndex !== undefined) {\n this.suggestions[selectedIndex].selected = true;\n this.currentSuggestion = this.suggestions[selectedIndex];\n }\n } else {\n this.suggestions = [];\n this.currentIndex = -1;\n this.currentSuggestion = undefined;\n }\n }\n\n /**\n * Increments the suggestion index and gets the next suggestion in the list.\n */\n public nextSuggestion(): boolean {\n if (this.suggestions && this.suggestions.length) {\n if (this.currentIndex < this.suggestions.length - 1) {\n this.setSelectedSuggestion(this.currentIndex + 1);\n return true;\n } else if (this.currentIndex === this.suggestions.length - 1) {\n this.setSelectedSuggestion(0);\n return true;\n }\n }\n\n return false;\n }\n\n /**\n * Decrements the suggestion index and gets the previous suggestion in the list.\n */\n public previousSuggestion(): boolean {\n if (this.suggestions && this.suggestions.length) {\n if (this.currentIndex > 0) {\n this.setSelectedSuggestion(this.currentIndex - 1);\n return true;\n } else if (this.currentIndex === 0) {\n this.setSelectedSuggestion(this.suggestions.length - 1);\n return true;\n }\n }\n\n return false;\n }\n\n public getSuggestions(): ISuggestionModel<T>[] {\n return this.suggestions;\n }\n\n public getCurrentItem(): ISuggestionModel<T> {\n return this.currentSuggestion!;\n }\n\n public getSuggestionAtIndex(index: number): ISuggestionModel<T> {\n return this.suggestions[index];\n }\n\n public hasSelectedSuggestion(): boolean {\n return this.currentSuggestion ? true : false;\n }\n\n public removeSuggestion(index: number): void {\n this.suggestions.splice(index, 1);\n }\n\n public createGenericSuggestion(itemToConvert: ISuggestionModel<T> | T) {\n const itemToAdd = this.convertSuggestionsToSuggestionItems([itemToConvert])[0];\n this.currentSuggestion = itemToAdd;\n }\n\n public convertSuggestionsToSuggestionItems(suggestions: Array<ISuggestionModel<T> | T>): ISuggestionModel<T>[] {\n return Array.isArray(suggestions) ? suggestions.map(this._ensureSuggestionModel) : [];\n }\n\n public deselectAllSuggestions(): void {\n if (this.currentIndex > -1) {\n this.suggestions[this.currentIndex].selected = false;\n this.currentIndex = -1;\n }\n }\n\n public setSelectedSuggestion(index: number): void {\n if (index > this.suggestions.length - 1 || index < 0) {\n this.currentIndex = 0;\n this.currentSuggestion!.selected = false;\n this.currentSuggestion = this.suggestions[0];\n this.currentSuggestion.selected = true;\n } else {\n if (this.currentIndex > -1) {\n this.suggestions[this.currentIndex].selected = false;\n }\n this.suggestions[index].selected = true;\n this.currentIndex = index;\n this.currentSuggestion = this.suggestions[index];\n }\n }\n\n private _isSuggestionModel = (value: ISuggestionModel<T> | T): value is ISuggestionModel<T> => {\n return (<ISuggestionModel<T>>value).item !== undefined;\n };\n\n private _ensureSuggestionModel = (suggestion: ISuggestionModel<T> | T): ISuggestionModel<T> => {\n if (this._isSuggestionModel(suggestion)) {\n return suggestion as ISuggestionModel<T>;\n } else {\n return {\n item: suggestion,\n selected: false,\n ariaLabel: (<any>suggestion).name || (<any>suggestion).primaryText,\n } as ISuggestionModel<T>;\n }\n };\n}\n","/* eslint-disable */\nimport { loadStyles } from '@microsoft/load-themed-styles';\nloadStyles([{\"rawString\":\".pickerText_883892a8{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-sizing:border-box;box-sizing:border-box;border:1px solid \"},{\"theme\":\"neutralTertiary\",\"defaultValue\":\"#a19f9d\"},{\"rawString\":\";min-width:180px;min-height:30px}.pickerText_883892a8:hover{border-color:\"},{\"theme\":\"inputBorderHovered\",\"defaultValue\":\"#323130\"},{\"rawString\":\"}.pickerText_883892a8.inputFocused_883892a8{position:relative;border-color:\"},{\"theme\":\"inputFocusBorderAlt\",\"defaultValue\":\"#0078d4\"},{\"rawString\":\"}.pickerText_883892a8.inputFocused_883892a8:after{pointer-events:none;content:'';position:absolute;left:-1px;top:-1px;bottom:-1px;right:-1px;border:2px solid \"},{\"theme\":\"inputFocusBorderAlt\",\"defaultValue\":\"#0078d4\"},{\"rawString\":\"}@media screen and (-ms-high-contrast:active),screen and (forced-colors:active){.pickerText_883892a8.inputDisabled_883892a8{position:relative;border-color:GrayText}.pickerText_883892a8.inputDisabled_883892a8:after{pointer-events:none;content:'';position:absolute;left:0;top:0;bottom:0;right:0;background-color:Window}}.pickerInput_883892a8{height:34px;border:none;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;outline:0;padding:0 6px 0;-ms-flex-item-align:end;align-self:flex-end}.pickerItems_883892a8{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;max-width:100%}.screenReaderOnly_883892a8{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}\"}]);\nexport const pickerText = \"pickerText_883892a8\";\nexport const inputFocused = \"inputFocused_883892a8\";\nexport const inputDisabled = \"inputDisabled_883892a8\";\nexport const pickerInput = \"pickerInput_883892a8\";\nexport const pickerItems = \"pickerItems_883892a8\";\nexport const screenReaderOnly = \"screenReaderOnly_883892a8\";","import * as React from 'react';\nimport {\n Async,\n KeyCodes,\n css,\n elementContains,\n getId,\n classNamesFunction,\n styled,\n initializeComponentRef,\n} from '../../Utilities';\nimport { IProcessedStyleSet } from '../../Styling';\nimport { IFocusZone, FocusZone, FocusZoneDirection } from '../../FocusZone';\nimport { Callout, DirectionalHint } from '../../Callout';\nimport { Selection, SelectionZone, SelectionMode } from '../../utilities/selection/index';\nimport { Suggestions } from './Suggestions/Suggestions';\nimport {\n ISuggestions,\n ISuggestionsProps,\n ISuggestionsStyleProps,\n ISuggestionsStyles,\n} from './Suggestions/Suggestions.types';\nimport { getStyles as suggestionsStyles } from './Suggestions/Suggestions.styles';\nimport { SuggestionsController } from './Suggestions/SuggestionsController';\nimport {\n IBasePicker,\n IBasePickerProps,\n ValidationState,\n IBasePickerStyleProps,\n IBasePickerStyles,\n} from './BasePicker.types';\nimport { IAutofill, Autofill } from '../Autofill/index';\nimport { IPickerItemProps } from './PickerItem.types';\nimport * as stylesImport from './BasePicker.scss';\nconst legacyStyles: any = stylesImport;\n\nexport interface IBasePickerState {\n items?: any;\n suggestedDisplayValue?: string;\n moreSuggestionsAvailable?: boolean;\n isFocused?: boolean;\n isSearching?: boolean;\n isMostRecentlyUsedVisible?: boolean;\n suggestionsVisible?: boolean;\n suggestionsLoading?: boolean;\n isResultsFooterVisible?: boolean;\n selectedIndices?: number[];\n}\n\n/**\n * Aria id's for internal picker components\n * {@docCategory Pickers}\n */\nexport type IPickerAriaIds = {\n /**\n * Aria id for selected suggestion alert component\n */\n selectedSuggestionAlert: string;\n /**\n * Aria id for selected items container component\n */\n selectedItems: string;\n /**\n * Aria id for suggestions list component\n */\n suggestionList: string;\n /**\n * Aria id for the component that has role=combobox\n */\n combobox: string;\n};\n\nconst getClassNames = classNamesFunction<IBasePickerStyleProps, IBasePickerStyles>();\n\n/**\n * Should be removed once new picker without inheritance is created\n */\nfunction getStyledSuggestions<T>(suggestionsType: new (props: ISuggestionsProps<T>) => Suggestions<T>) {\n return styled<ISuggestionsProps<any>, ISuggestionsStyleProps, ISuggestionsStyles>(\n suggestionsType,\n suggestionsStyles,\n undefined,\n {\n scope: 'Suggestions',\n },\n );\n}\n\n/**\n * {@docCategory Pickers}\n */\nexport class BasePicker<T, P extends IBasePickerProps<T>> extends React.Component<P, IBasePickerState>\n implements IBasePicker<T> {\n // Refs\n protected root = React.createRef<HTMLDivElement>();\n protected input = React.createRef<IAutofill>();\n protected focusZone = React.createRef<IFocusZone>();\n protected suggestionElement = React.createRef<ISuggestions<T>>();\n\n protected selection: Selection;\n protected suggestionStore: SuggestionsController<T>;\n /**\n * @deprecated this is no longer necessary as typescript now supports generic elements\n */\n protected SuggestionOfProperType = Suggestions as new (props: ISuggestionsProps<T>) => Suggestions<T>;\n protected currentPromise: PromiseLike<any> | undefined;\n protected _ariaMap: IPickerAriaIds;\n // eslint-disable-next-line deprecation/deprecation\n private _styledSuggestions = getStyledSuggestions(this.SuggestionOfProperType);\n private _id: string;\n private _async: Async;\n\n public static getDerivedStateFromProps(newProps: IBasePickerProps<any>) {\n if (newProps.selectedItems) {\n return { items: newProps.selectedItems };\n }\n return null;\n }\n\n constructor(basePickerProps: P) {\n super(basePickerProps);\n\n initializeComponentRef(this);\n this._async = new Async(this);\n\n const items: T[] = basePickerProps.selectedItems || basePickerProps.defaultSelectedItems || [];\n\n this._id = getId();\n this._ariaMap = {\n selectedItems: `selected-items-${this._id}`,\n selectedSuggestionAlert: `selected-suggestion-alert-${this._id}`,\n suggestionList: `suggestion-list-${this._id}`,\n combobox: `combobox-${this._id}`,\n };\n this.suggestionStore = new SuggestionsController<T>();\n this.selection = new Selection({ onSelectionChanged: () => this.onSelectionChange() });\n this.selection.setItems(items);\n this.state = {\n items: items,\n suggestedDisplayValue: '',\n isMostRecentlyUsedVisible: false,\n moreSuggestionsAvailable: false,\n isFocused: false,\n isSearching: false,\n selectedIndices: [],\n };\n }\n\n public get items(): T[] {\n return this.state.items;\n }\n\n public componentDidMount(): void {\n this.selection.setItems(this.state.items);\n this._onResolveSuggestions = this._async.debounce(this._onResolveSuggestions, this.props.resolveDelay);\n }\n\n public componentDidUpdate(oldProps: P, oldState: IBasePickerState) {\n if (this.state.items && this.state.items !== oldState.items) {\n const currentSelectedIndex = this.selection.getSelectedIndices()[0];\n this.selection.setItems(this.state.items);\n if (this.state.isFocused) {\n // Reset focus and selection so that selected item stays in sync if something\n // has been removed\n if (this.state.items.length < oldState.items.length) {\n this.selection.setIndexSelected(currentSelectedIndex, true, true);\n this.resetFocus(currentSelectedIndex);\n }\n }\n }\n }\n\n public componentWillUnmount(): void {\n if (this.currentPromise) {\n this.currentPromise = undefined;\n }\n this._async.dispose();\n }\n\n public focus() {\n if (this.focusZone.current) {\n this.focusZone.current.focus();\n }\n }\n\n public focusInput() {\n if (this.input.current) {\n this.input.current.focus();\n }\n }\n\n public dismissSuggestions = (ev?: any): void => {\n const selectItemFunction = () => {\n let addItemOnDismiss: boolean | void = true;\n if (this.props.onDismiss) {\n addItemOnDismiss = this.props.onDismiss(\n ev,\n this.suggestionStore.currentSuggestion ? this.suggestionStore.currentSuggestion.item : undefined,\n );\n }\n\n if (!ev || (ev && !ev.defaultPrevented)) {\n // Select the first suggestion if one is available and permitted by onDismiss when user leaves.\n if (\n addItemOnDismiss !== false &&\n this.canAddItems() &&\n this.suggestionStore.hasSelectedSuggestion() &&\n this.state.suggestedDisplayValue\n ) {\n this.addItemByIndex(0);\n }\n }\n };\n\n if (this.currentPromise) {\n this.currentPromise.then(() => selectItemFunction());\n } else {\n selectItemFunction();\n }\n\n this.setState({ suggestionsVisible: false });\n };\n\n public completeSuggestion(forceComplete?: boolean) {\n if (this.suggestionStore.hasSelectedSuggestion() && this.input.current) {\n this.completeSelection(this.suggestionStore.currentSuggestion!.item);\n } else if (forceComplete) {\n this._completeGenericSuggestion();\n }\n }\n\n public refocusSuggestions = (keyCode: KeyCodes): void => {\n this.resetFocus();\n if (this.suggestionStore.suggestions && this.suggestionStore.suggestions.length > 0) {\n if (keyCode === KeyCodes.up) {\n this.suggestionStore.setSelectedSuggestion(this.suggestionStore.suggestions.length - 1);\n } else if (keyCode === KeyCodes.down) {\n this.suggestionStore.setSelectedSuggestion(0);\n }\n }\n };\n\n public render(): JSX.Element {\n const { suggestedDisplayValue, isFocused, items } = this.state;\n const { className, inputProps, disabled, theme, styles } = this.props;\n const suggestionsAvailable = this.state.suggestionsVisible ? this._ariaMap.suggestionList : '';\n // TODO\n // Clean this up by leaving only the first part after removing support for SASS.\n // Currently we can not remove the SASS styles from BasePicker class because it\n // might be used by consumers who created custom pickers from extending from\n // this base class and have not used the new 'styles' prop.\n // We check for 'styles' prop which is going to be injected by the 'styled' HOC\n // for every other already existing picker variant (PeoplePicker, TagPicker)\n // so that we can use the CSS-in-JS styles. If the check fails (ex: custom picker),\n // then we just use the old SASS styles instead.\n const classNames: Partial<IProcessedStyleSet<IBasePickerStyles>> = styles\n ? getClassNames(styles, {\n theme,\n className,\n isFocused,\n disabled,\n inputClassName: inputProps && inputProps.className,\n })\n : {\n root: css('ms-BasePicker', className ? className : ''),\n text: css('ms-BasePicker-text', legacyStyles.pickerText, this.state.isFocused && legacyStyles.inputFocused),\n itemsWrapper: legacyStyles.pickerItems,\n input: css('ms-BasePicker-input', legacyStyles.pickerInput, inputProps && inputProps.className),\n screenReaderText: legacyStyles.screenReaderOnly,\n };\n\n return (\n <div ref={this.root} className={classNames.root} onKeyDown={this.onKeyDown} onBlur={this.onBlur}>\n <FocusZone\n componentRef={this.focusZone}\n direction={FocusZoneDirection.bidirectional}\n shouldEnterInnerZone={this._shouldFocusZoneEnterInnerZone}\n >\n {this.getSuggestionsAlert(classNames.screenReaderText)}\n <SelectionZone selection={this.selection} selectionMode={SelectionMode.multiple}>\n <div className={classNames.text}>\n {items.length > 0 && (\n <span id={this._ariaMap.selectedItems} className={classNames.itemsWrapper} role={'list'}>\n {this.renderItems()}\n </span>\n )}\n {this.canAddItems() && (\n <Autofill\n spellCheck={false}\n {...(inputProps as any)}\n className={classNames.input}\n componentRef={this.input}\n id={inputProps?.id ? inputProps.id : this._ariaMap.combobox}\n onClick={this.onClick}\n onFocus={this.onInputFocus}\n onBlur={this.onInputBlur}\n onInputValueChange={this.onInputChange}\n suggestedDisplayValue={suggestedDisplayValue}\n aria-activedescendant={this.getActiveDescendant()}\n aria-controls={suggestionsAvailable}\n aria-describedby={items.length > 0 ? this._ariaMap.selectedItems : undefined}\n aria-expanded={!!this.state.suggestionsVisible}\n aria-haspopup=\"listbox\"\n aria-label={this.props['aria-label'] || inputProps?.['aria-label']}\n role=\"combobox\"\n disabled={disabled}\n onInputChange={this.props.onInputChange}\n />\n )}\n </div>\n </SelectionZone>\n </FocusZone>\n {this.renderSuggestions()}\n </div>\n );\n }\n\n protected canAddItems(): boolean {\n const { items } = this.state;\n const { itemLimit } = this.props;\n return itemLimit === undefined || items.length < itemLimit;\n }\n\n protected renderSuggestions(): JSX.Element | null {\n const StyledTypedSuggestions: React.FunctionComponent<ISuggestionsProps<T>> = this._styledSuggestions;\n\n return this.state.suggestionsVisible && this.input ? (\n <Callout\n isBeakVisible={false}\n gapSpace={5}\n target={this.input.current ? this.input.current.inputElement : undefined}\n onDismiss={this.dismissSuggestions}\n directionalHint={DirectionalHint.bottomLeftEdge}\n directionalHintForRTL={DirectionalHint.bottomRightEdge}\n {...this.props.pickerCalloutProps}\n >\n <StyledTypedSuggestions\n // Assumed to set in derived component's defaultProps\n onRenderSuggestion={this.props.onRenderSuggestionsItem!}\n onSuggestionClick={this.onSuggestionClick}\n onSuggestionRemove={this.onSuggestionRemove}\n suggestions={this.suggestionStore.getSuggestions()}\n componentRef={this.suggestionElement}\n onGetMoreResults={this.onGetMoreResults}\n moreSuggestionsAvailable={this.state.moreSuggestionsAvailable}\n isLoading={this.state.suggestionsLoading}\n isSearching={this.state.isSearching}\n isMostRecentlyUsedVisible={this.state.isMostRecentlyUsedVisible}\n isResultsFooterVisible={this.state.isResultsFooterVisible}\n refocusSuggestions={this.refocusSuggestions}\n removeSuggestionAriaLabel={this.props.removeButtonAriaLabel}\n suggestionsListId={this._ariaMap.suggestionList}\n createGenericItem={this._completeGenericSuggestion}\n {...this.props.pickerSuggestionsProps}\n />\n </Callout>\n ) : null;\n }\n\n protected renderItems(): JSX.Element[] {\n const { disabled, removeButtonAriaLabel } = this.props;\n const onRenderItem = this.props.onRenderItem as (props: IPickerItemProps<T>) => JSX.Element;\n\n const { items, selectedIndices } = this.state;\n return items.map((item: any, index: number) =>\n onRenderItem({\n item,\n index,\n key: item.key ? item.key : index,\n selected: selectedIndices!.indexOf(index) !== -1,\n onRemoveItem: () => this.removeItem(item, true),\n disabled: disabled,\n onItemChange: this.onItemChange,\n removeButtonAriaLabel: removeButtonAriaLabel,\n }),\n );\n }\n\n protected resetFocus(index?: number) {\n const { items } = this.state;\n\n if (items.length && index! >= 0) {\n const newEl: HTMLElement | null =\n this.root.current &&\n (this.root.current.querySelectorAll('[data-selection-index]')[\n Math.min(index!, items.length - 1)\n ] as HTMLElement | null);\n if (newEl && this.focusZone.current) {\n this.focusZone.current.focusElement(newEl);\n }\n } else if (!this.canAddItems()) {\n this.resetFocus(items.length - 1);\n } else {\n if (this.input.current) {\n this.input.current.focus();\n }\n }\n }\n\n protected onSuggestionSelect() {\n if (this.suggestionStore.currentSuggestion) {\n const currentValue: string = this.input.current ? this.input.current.value : '';\n const itemValue: string = this._getTextFromItem(this.suggestionStore.currentSuggestion.item, currentValue);\n this.setState({ suggestedDisplayValue: itemValue });\n }\n }\n\n protected onSelectionChange() {\n this.setState({\n selectedIndices: this.selection.getSelectedIndices(),\n });\n }\n\n protected updateSuggestions(suggestions: any[]) {\n this.suggestionStore.updateSuggestions(suggestions, 0);\n this.forceUpdate();\n }\n\n /**\n * Only to be called when there is nothing in the input. Checks to see if the consumer has\n * provided a function to resolve suggestions\n */\n protected onEmptyInputFocus() {\n const emptyResolveSuggestions = this.props.onEmptyResolveSuggestions\n ? this.props.onEmptyResolveSuggestions\n : // eslint-disable-next-line deprecation/deprecation\n this.props.onEmptyInputFocus;\n\n // Only attempt to resolve suggestions if it exists\n if (emptyResolveSuggestions) {\n const suggestions = emptyResolveSuggestions(this.state.items);\n\n this.updateSuggestionsList(suggestions);\n\n this.setState({\n isMostRecentlyUsedVisible: true,\n suggestionsVisible: true,\n moreSuggestionsAvailable: false,\n });\n }\n }\n\n protected updateValue(updatedValue: string) {\n this._onResolveSuggestions(updatedValue);\n }\n\n protected updateSuggestionsList(suggestions: T[] | PromiseLike<T[]>, updatedValue?: string) {\n const suggestionsArray: T[] = suggestions as T[];\n const suggestionsPromiseLike: PromiseLike<T[]> = suggestions as PromiseLike<T[]>;\n\n // Check to see if the returned value is an array, if it is then just pass it into the next function .\n // If the returned value is not an array then check to see if it's a promise or PromiseLike.\n // If it is then resolve it asynchronously.\n if (Array.isArray(suggestionsArray)) {\n this._updateAndResolveValue(updatedValue, suggestionsArray);\n } else if (suggestionsPromiseLike && suggestionsPromiseLike.then) {\n this.setState({\n suggestionsLoading: true,\n });\n\n // Clear suggestions\n this.suggestionStore.updateSuggestions([]);\n\n if (updatedValue !== undefined) {\n this.setState({\n suggestionsVisible: this._getShowSuggestions(),\n });\n } else {\n this.setState({\n suggestionsVisible: this.input.current! && this.input.current!.inputElement === document.activeElement,\n });\n }\n\n // Ensure that the promise will only use the callback if it was the most recent one.\n const promise: PromiseLike<T[]> = (this.currentPromise = suggestionsPromiseLike);\n promise.then((newSuggestions: T[]) => {\n if (promise === this.currentPromise) {\n this._updateAndResolveValue(updatedValue, newSuggestions);\n }\n });\n }\n }\n\n protected resolveNewValue(updatedValue: string, suggestions: T[]) {\n this.updateSuggestions(suggestions);\n let itemValue: string | undefined = undefined;\n\n if (this.suggestionStore.currentSuggestion) {\n itemValue = this._getTextFromItem(this.suggestionStore.currentSuggestion.item, updatedValue);\n }\n\n // Only set suggestionloading to false after there has been time for the new suggestions to flow\n // to the suggestions list. This is to ensure that the suggestions are available before aria-activedescendant\n // is set so that screen readers will read out the first selected option.\n this.setState(\n {\n suggestedDisplayValue: itemValue,\n suggestionsVisible: this._getShowSuggestions(),\n },\n () => this.setState({ suggestionsLoading: false }),\n );\n }\n\n protected onChange(items?: T[]) {\n if (this.props.onChange) {\n (this.props.onChange as any)(items);\n }\n }\n\n protected onInputChange = (value: string): void => {\n this.updateValue(value);\n this.setState({\n moreSuggestionsAvailable: true,\n isMostRecentlyUsedVisible: false,\n });\n };\n\n protected onSuggestionClick = (ev: React.MouseEvent<HTMLElement>, item: any, index: number): void => {\n this.addItemByIndex(index);\n };\n\n protected onSuggestionRemove = (ev: React.MouseEvent<HTMLElement>, item: T, index: number): void => {\n if (this.props.onRemoveSuggestion) {\n this.props.onRemoveSuggestion(item);\n }\n this.suggestionStore.removeSuggestion(index);\n };\n\n protected onInputFocus = (ev: React.FocusEvent<HTMLInputElement | Autofill>): void => {\n this.selection.setAllSelected(false);\n // Only trigger all of the focus if this component isn't already focused.\n // For example when an item is selected or removed from the selected list it should be treated\n // as though the input is still focused.\n if (!this.state.isFocused) {\n this.setState({ isFocused: true });\n\n this._userTriggeredSuggestions();\n\n if (this.props.inputProps && this.props.inputProps.onFocus) {\n this.props.inputProps.onFocus(ev as React.FocusEvent<HTMLInputElement>);\n }\n }\n };\n\n protected onInputBlur = (ev: React.FocusEvent<HTMLInputElement | Autofill>): void => {\n if (this.props.inputProps && this.props.inputProps.onBlur) {\n this.props.inputProps.onBlur(ev as React.FocusEvent<HTMLInputElement>);\n }\n };\n\n protected onBlur = (ev: React.FocusEvent<HTMLElement | Autofill>): void => {\n if (this.state.isFocused) {\n // Only blur the entire component if an unrelated element gets focus.\n // Otherwise treat it as though it still has focus.\n // Do nothing if the blur is coming from something\n // inside the comboBox root or the comboBox menu since\n // it we are not really bluring from the whole comboBox\n let relatedTarget: EventTarget | null = ev.relatedTarget;\n\n if (ev.relatedTarget === null) {\n // In IE11, due to lack of support, event.relatedTarget is always\n // null making every onBlur call to be \"outside\" of the ComboBox\n // even when it's not. Using document.activeElement is another way\n // for us to be able to get what the relatedTarget without relying\n // on the event\n relatedTarget = document.activeElement;\n }\n if (relatedTarget && !elementContains(this.root.current!, relatedTarget as HTMLElement)) {\n this.setState({ isFocused: false });\n if (this.props.onBlur) {\n this.props.onBlur(ev as React.FocusEvent<HTMLInputElement>);\n }\n }\n }\n };\n\n /**\n * Reveals suggestions any time the user clicks on the input element\n * without shifting focus.\n */\n protected onClick = (ev: React.MouseEvent<HTMLInputElement>): void => {\n if (this.props.inputProps !== undefined && this.props.inputProps.onClick !== undefined) {\n this.props.inputProps.onClick(ev);\n }\n\n // Only primary (left) clicks show suggestions.\n if (ev.button === 0) {\n this._userTriggeredSuggestions();\n }\n };\n\n protected onKeyDown = (ev: React.KeyboardEvent<HTMLElement>): void => {\n const keyCode = ev.which;\n switch (keyCode) {\n case KeyCodes.escape:\n if (this.state.suggestionsVisible) {\n this.setState({ suggestionsVisible: false });\n ev.preventDefault();\n ev.stopPropagation();\n }\n break;\n\n case KeyCodes.tab:\n case KeyCodes.enter:\n if (this.suggestionElement.current && this.suggestionElement.current.hasSuggestedActionSelected()) {\n this.suggestionElement.current.executeSelectedAction();\n } else if (!ev.shiftKey && this.suggestionStore.hasSelectedSuggestion() && this.state.suggestionsVisible) {\n this.completeSuggestion();\n ev.preventDefault();\n ev.stopPropagation();\n } else {\n this._completeGenericSuggestion();\n }\n\n break;\n\n case KeyCodes.backspace:\n if (!this.props.disabled) {\n this.onBackspace(ev);\n }\n ev.stopPropagation();\n break;\n\n case KeyCodes.del:\n if (!this.props.disabled) {\n if (\n this.input.current &&\n ev.target === this.input.current.inputElement &&\n this.state.suggestionsVisible &&\n this.suggestionStore.currentIndex !== -1\n ) {\n if (this.props.onRemoveSuggestion) {\n this.props.onRemoveSuggestion(this.suggestionStore.currentSuggestion!.item);\n }\n this.suggestionStore.removeSuggestion(this.suggestionStore.currentIndex);\n this.forceUpdate();\n } else {\n this.onBackspace(ev);\n }\n }\n ev.stopPropagation();\n break;\n\n case KeyCodes.up:\n if (this.input.current && ev.target === this.input.current.inputElement && this.state.suggestionsVisible) {\n if (\n this.suggestionElement.current &&\n this.suggestionElement.current.tryHandleKeyDown(keyCode, this.suggestionStore.currentIndex)\n ) {\n ev.preventDefault();\n ev.stopPropagation();\n this.forceUpdate();\n } else {\n if (\n this.suggestionElement.current &&\n this.suggestionElement.current.hasSuggestedAction() &&\n this.suggestionStore.currentIndex === 0\n ) {\n ev.preventDefault();\n ev.stopPropagation();\n this.suggestionElement.current.focusAboveSuggestions();\n this.suggestionStore.deselectAllSuggestions();\n this.forceUpdate();\n } else {\n if (this.suggestionStore.previousSuggestion()) {\n ev.preventDefault();\n ev.stopPropagation();\n this.onSuggestionSelect();\n }\n }\n }\n }\n break;\n\n case KeyCodes.down:\n if (this.input.current && ev.target === this.input.current.inputElement && this.state.suggestionsVisible) {\n if (\n this.suggestionElement.current &&\n this.suggestionElement.current.tryHandleKeyDown(keyCode, this.suggestionStore.currentIndex)\n ) {\n ev.preventDefault();\n ev.stopPropagation();\n this.forceUpdate();\n } else {\n if (\n this.suggestionElement.current &&\n this.suggestionElement.current.hasSuggestedAction() &&\n this.suggestionStore.currentIndex + 1 === this.suggestionStore.suggestions.length\n ) {\n ev.preventDefault();\n ev.stopPropagation();\n this.suggestionElement.current.focusBelowSuggestions();\n this.suggestionStore.deselectAllSuggestions();\n this.forceUpdate();\n } else {\n if (this.suggestionStore.nextSuggestion()) {\n ev.preventDefault();\n ev.stopPropagation();\n this.onSuggestionSelect();\n }\n }\n }\n }\n break;\n }\n };\n\n protected onItemChange = (changedItem: T, index: number): void => {\n const { items } = this.state;\n\n if (index >= 0) {\n const newItems: T[] = items;\n newItems[index] = changedItem;\n\n this._updateSelectedItems(newItems);\n }\n };\n\n protected onGetMoreResults = (): void => {\n this.setState(\n {\n isSearching: true,\n },\n () => {\n if (this.props.onGetMoreResults && this.input.current) {\n const suggestions: T[] | PromiseLike<T[]> = (this.props.onGetMoreResults as any)(\n this.input.current.value,\n this.state.items,\n );\n const suggestionsArray: T[] = suggestions as T[];\n const suggestionsPromiseLike: PromiseLike<T[]> = suggestions as PromiseLike<T[]>;\n\n if (Array.isArray(suggestionsArray)) {\n this.updateSuggestions(suggestionsArray);\n this.setState({ isSearching: false });\n } else if (suggestionsPromiseLike.then) {\n suggestionsPromiseLike.then((newSuggestions: T[]) => {\n this.updateSuggestions(newSuggestions);\n this.setState({ isSearching: false });\n });\n }\n } else {\n this.setState({ isSearching: false });\n }\n\n if (this.input.current) {\n this.input.current.focus();\n }\n\n this.setState({\n moreSuggestionsAvailable: false,\n isResultsFooterVisible: true,\n });\n },\n );\n };\n\n protected completeSelection = (item: T) => {\n this.addItem(item);\n this.updateValue('');\n if (this.input.current) {\n this.input.current.clear();\n }\n this.setState({ suggestionsVisible: false });\n };\n\n protected addItemByIndex = (index: number): void => {\n this.completeSelection(this.suggestionStore.getSuggestionAtIndex(index).item);\n };\n\n protected addItem = (item: T): void => {\n const processedItem: T | PromiseLike<T> | null = this.props.onItemSelected\n ? (this.props.onItemSelected as any)(item)\n : item;\n\n if (processedItem === null) {\n return;\n }\n\n const processedItemObject: T = processedItem as T;\n const processedItemPromiseLike: PromiseLike<T> = processedItem as PromiseLike<T>;\n\n if (processedItemPromiseLike && processedItemPromiseLike.then) {\n processedItemPromiseLike.then((resolvedProcessedItem: T) => {\n const newItems: T[] = this.state.items.concat([resolvedProcessedItem]);\n this._updateSelectedItems(newItems);\n });\n } else {\n const newItems: T[] = this.state.items.concat([processedItemObject]);\n this._updateSelectedItems(newItems);\n }\n this.setState({ suggestedDisplayValue: '' });\n };\n\n protected removeItem = (item: IPickerItemProps<T>, focusNextItem?: boolean): void => {\n const { items } = this.state;\n const index: number = items.indexOf(item);\n\n if (index >= 0) {\n const newItems: T[] = items.slice(0, index).concat(items.slice(index + 1));\n this._updateSelectedItems(newItems);\n }\n };\n\n protected removeItems = (itemsToRemove: any[]): void => {\n const { items } = this.state;\n const newItems: T[] = items.filter((item: any) => itemsToRemove.indexOf(item) === -1);\n\n this._updateSelectedItems(newItems);\n };\n\n // This is protected because we may expect the backspace key to work differently in a different kind of picker.\n // This lets the subclass override it and provide it's own onBackspace. For an example see the BasePickerListBelow\n protected onBackspace(ev: React.KeyboardEvent<HTMLElement>) {\n if (\n (this.state.items.length && !this.input.current) ||\n (this.input.current && !this.input.current.isValueSelected && this.input.current.cursorLocation === 0)\n ) {\n if (this.selection.getSelectedCount() > 0) {\n this.removeItems(this.selection.getSelection());\n } else {\n this.removeItem(this.state.items[this.state.items.length - 1]);\n }\n }\n }\n\n protected _shouldFocusZoneEnterInnerZone = (ev: React.KeyboardEvent<HTMLElement>): boolean => {\n // If suggestions are shown const up/down keys control them, otherwise allow them through to control the focusZone.\n if (this.state.suggestionsVisible) {\n switch (ev.which) {\n case KeyCodes.up:\n case KeyCodes.down:\n return true;\n }\n }\n\n if (ev.which === KeyCodes.enter) {\n return true;\n }\n\n return false;\n };\n\n protected getActiveDescendant() {\n if (this.state.suggestionsLoading) {\n return undefined;\n }\n\n const currentIndex = this.suggestionStore.currentIndex;\n // if the suggestions element has actions and the currentIndex does not point to a suggestion, return the action id\n if (currentIndex < 0 && this.suggestionElement.current && this.suggestionElement.current.hasSuggestedAction()) {\n return 'sug-selectedAction';\n }\n\n return currentIndex > -1 && !this.state.suggestionsLoading ? 'sug-' + currentIndex : undefined;\n }\n\n protected getSuggestionsAlert(suggestionAlertClassName: string = legacyStyles.screenReaderOnly) {\n const currentIndex = this.suggestionStore.currentIndex;\n if (this.props.enableSelectedSuggestionAlert) {\n const selectedSuggestion =\n currentIndex > -1 ? this.suggestionStore.getSuggestionAtIndex(this.suggestionStore.currentIndex) : undefined;\n const selectedSuggestionAlertText = selectedSuggestion ? selectedSuggestion.ariaLabel : undefined;\n return (\n <div\n className={suggestionAlertClassName}\n role=\"alert\"\n id={this._ariaMap.selectedSuggestionAlert}\n aria-live=\"assertive\"\n >\n {selectedSuggestionAlertText}{' '}\n </div>\n );\n }\n }\n\n /**\n * Takes in the current updated value and either resolves it with the new suggestions\n * or if updated value is undefined then it clears out currently suggested items\n */\n private _updateAndResolveValue(updatedValue: string | undefined, newSuggestions: T[]) {\n if (updatedValue !== undefined) {\n this.resolveNewValue(updatedValue, newSuggestions);\n } else {\n this.suggestionStore.updateSuggestions(newSuggestions, -1);\n if (this.state.suggestionsLoading) {\n this.setState({\n suggestionsLoading: false,\n });\n }\n }\n }\n\n /**\n * Controls what happens whenever there is an action that impacts the selected items.\n * If `selectedItems` is provided, this will act as a controlled component and it will not update its own state.\n */\n private _updateSelectedItems(items: T[]): void {\n if (this.props.selectedItems) {\n // If the component is a controlled component then the controlling component will need to add or remove the items.\n this.onChange(items);\n } else {\n this.setState({ items: items }, () => {\n this._onSelectedItemsUpdated(items);\n });\n }\n }\n\n private _onSelectedItemsUpdated(items?: T[]): void {\n this.onChange(items);\n }\n\n /**\n * Suggestions are normally shown after the user updates text and the text\n * is non-empty, but also when the user clicks on the input element.\n * @returns True if suggestions should be shown.\n */\n private _getShowSuggestions(): boolean {\n const areSuggestionsVisible =\n this.input.current !== undefined &&\n this.input.current !== null &&\n this.input.current.inputElement === document.activeElement &&\n this.input.current.value !== '';\n\n return areSuggestionsVisible;\n }\n\n private _onResolveSuggestions = (updatedValue: string): void => {\n const suggestions: T[] | PromiseLike<T[]> | null = this.props.onResolveSuggestions(updatedValue, this.state.items);\n\n if (suggestions !== null) {\n this.updateSuggestionsList(suggestions, updatedValue);\n }\n };\n\n private _completeGenericSuggestion = (): void => {\n if (\n this.props.onValidateInput &&\n this.input.current &&\n (this.props.onValidateInput as any)(this.input.current.value) !== ValidationState.invalid &&\n this.props.createGenericItem\n ) {\n const itemToConvert = this.props.createGenericItem(\n this.input.current.value,\n this.props.onValidateInput(this.input.current.value),\n );\n this.suggestionStore.createGenericSuggestion(itemToConvert);\n this.completeSuggestion();\n }\n };\n\n private _getTextFromItem(item: T, currentValue?: string): string {\n if (this.props.getTextFromItem) {\n return (this.props.getTextFromItem as any)(item, currentValue);\n } else {\n return '';\n }\n }\n\n /**\n * This should be called when the user does something other than use text entry to trigger suggestions.\n *\n */\n private _userTriggeredSuggestions = () => {\n if (!this.state.suggestionsVisible) {\n const input = this.input.current ? this.input.current.value : '';\n if (!input) {\n this.onEmptyInputFocus();\n } else {\n if (this.suggestionStore.suggestions.length === 0) {\n this._onResolveSuggestions(input);\n } else {\n this.setState({\n isMostRecentlyUsedVisible: false,\n suggestionsVisible: true,\n });\n }\n }\n }\n };\n}\n\nexport class BasePickerListBelow<T, P extends IBasePickerProps<T>> extends BasePicker<T, P> {\n public render(): JSX.Element {\n const { suggestedDisplayValue, isFocused } = this.state;\n const { className, inputProps, disabled, theme, styles } = this.props;\n\n const suggestionsAvailable: string | undefined = this.state.suggestionsVisible ? this._ariaMap.suggestionList : '';\n\n // TODO\n // Clean this up by leaving only the first part after removing support for SASS.\n // Currently we can not remove the SASS styles from BasePicker class because it\n // might be used by consumers who created custom pickers from extending from\n // this base class and have not used the new 'styles' prop.\n // We check for 'styles' prop which is going to be injected by the 'styled' HOC\n // for every other already existing picker variant (PeoplePicker, TagPicker)\n // so that we can use the CSS-in-JS styles. If the check fails (ex: custom picker),\n // then we just use the old SASS styles instead.\n const classNames: Partial<IProcessedStyleSet<IBasePickerStyles>> = styles\n ? getClassNames(styles, {\n theme,\n className,\n isFocused,\n inputClassName: inputProps && inputProps.className,\n })\n : {\n root: css('ms-BasePicker', className ? className : ''),\n text: css(\n 'ms-BasePicker-text',\n legacyStyles.pickerText,\n this.state.isFocused && legacyStyles.inputFocused,\n disabled && legacyStyles.inputDisabled,\n ),\n input: css('ms-BasePicker-input', legacyStyles.pickerInput, inputProps && inputProps.className),\n screenReaderText: legacyStyles.screenReaderOnly,\n };\n\n return (\n <div ref={this.root} onBlur={this.onBlur}>\n <div className={classNames.root} onKeyDown={this.onKeyDown}>\n {this.getSuggestionsAlert(classNames.screenReaderText)}\n <div className={classNames.text}>\n <Autofill\n {...(inputProps as any)}\n className={classNames.input}\n componentRef={this.input}\n onFocus={this.onInputFocus}\n onBlur={this.onInputBlur}\n onClick={this.onClick}\n onInputValueChange={this.onInputChange}\n suggestedDisplayValue={suggestedDisplayValue}\n aria-activedescendant={this.getActiveDescendant()}\n aria-controls={suggestionsAvailable || undefined}\n aria-expanded={!!this.state.suggestionsVisible}\n aria-haspopup=\"listbox\"\n role=\"combobox\"\n disabled={disabled}\n onInputChange={this.props.onInputChange}\n />\n </div>\n </div>\n {this.renderSuggestions()}\n <SelectionZone selection={this.selection} selectionMode={SelectionMode.single}>\n <FocusZone\n componentRef={this.focusZone}\n className=\"ms-BasePicker-selectedItems\" // just a className hook without any styles applied to it.\n isCircularNavigation={true}\n direction={FocusZoneDirection.bidirectional}\n shouldEnterInnerZone={this._shouldFocusZoneEnterInnerZone}\n id={this._ariaMap.selectedItems}\n role={'list'}\n >\n {this.renderItems()}\n </FocusZone>\n </SelectionZone>\n </div>\n );\n }\n\n protected onBackspace(ev: React.KeyboardEvent<HTMLElement>) {\n // override the existing backspace method to not do anything because the list items appear below.\n }\n}\n","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : String(i); }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/**\n * @fileOverview Default Legend Content\n */\nimport React, { PureComponent } from 'react';\nimport isFunction from 'lodash/isFunction';\nimport clsx from 'clsx';\nimport { warn } from '../util/LogUtils';\nimport { Surface } from '../container/Surface';\nimport { Symbols } from '../shape/Symbols';\nimport { adaptEventsOfChild } from '../util/types';\nvar SIZE = 32;\nexport var DefaultLegendContent = /*#__PURE__*/function (_PureComponent) {\n _inherits(DefaultLegendContent, _PureComponent);\n function DefaultLegendContent() {\n _classCallCheck(this, DefaultLegendContent);\n return _callSuper(this, DefaultLegendContent, arguments);\n }\n _createClass(DefaultLegendContent, [{\n key: \"renderIcon\",\n value:\n /**\n * Render the path of icon\n * @param {Object} data Data of each legend item\n * @return {String} Path element\n */\n function renderIcon(data) {\n var inactiveColor = this.props.inactiveColor;\n var halfSize = SIZE / 2;\n var sixthSize = SIZE / 6;\n var thirdSize = SIZE / 3;\n var color = data.inactive ? inactiveColor : data.color;\n if (data.type === 'plainline') {\n return /*#__PURE__*/React.createElement(\"line\", {\n strokeWidth: 4,\n fill: \"none\",\n stroke: color,\n strokeDasharray: data.payload.strokeDasharray,\n x1: 0,\n y1: halfSize,\n x2: SIZE,\n y2: halfSize,\n className: \"recharts-legend-icon\"\n });\n }\n if (data.type === 'line') {\n return /*#__PURE__*/React.createElement(\"path\", {\n strokeWidth: 4,\n fill: \"none\",\n stroke: color,\n d: \"M0,\".concat(halfSize, \"h\").concat(thirdSize, \"\\n A\").concat(sixthSize, \",\").concat(sixthSize, \",0,1,1,\").concat(2 * thirdSize, \",\").concat(halfSize, \"\\n H\").concat(SIZE, \"M\").concat(2 * thirdSize, \",\").concat(halfSize, \"\\n A\").concat(sixthSize, \",\").concat(sixthSize, \",0,1,1,\").concat(thirdSize, \",\").concat(halfSize),\n className: \"recharts-legend-icon\"\n });\n }\n if (data.type === 'rect') {\n return /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"none\",\n fill: color,\n d: \"M0,\".concat(SIZE / 8, \"h\").concat(SIZE, \"v\").concat(SIZE * 3 / 4, \"h\").concat(-SIZE, \"z\"),\n className: \"recharts-legend-icon\"\n });\n }\n if ( /*#__PURE__*/React.isValidElement(data.legendIcon)) {\n var iconProps = _objectSpread({}, data);\n delete iconProps.legendIcon;\n return /*#__PURE__*/React.cloneElement(data.legendIcon, iconProps);\n }\n return /*#__PURE__*/React.createElement(Symbols, {\n fill: color,\n cx: halfSize,\n cy: halfSize,\n size: SIZE,\n sizeType: \"diameter\",\n type: data.type\n });\n }\n\n /**\n * Draw items of legend\n * @return {ReactElement} Items\n */\n }, {\n key: \"renderItems\",\n value: function renderItems() {\n var _this = this;\n var _this$props = this.props,\n payload = _this$props.payload,\n iconSize = _this$props.iconSize,\n layout = _this$props.layout,\n formatter = _this$props.formatter,\n inactiveColor = _this$props.inactiveColor;\n var viewBox = {\n x: 0,\n y: 0,\n width: SIZE,\n height: SIZE\n };\n var itemStyle = {\n display: layout === 'horizontal' ? 'inline-block' : 'block',\n marginRight: 10\n };\n var svgStyle = {\n display: 'inline-block',\n verticalAlign: 'middle',\n marginRight: 4\n };\n return payload.map(function (entry, i) {\n var finalFormatter = entry.formatter || formatter;\n var className = clsx(_defineProperty(_defineProperty({\n 'recharts-legend-item': true\n }, \"legend-item-\".concat(i), true), \"inactive\", entry.inactive));\n if (entry.type === 'none') {\n return null;\n }\n\n // Do not render entry.value as functions. Always require static string properties.\n var entryValue = !isFunction(entry.value) ? entry.value : null;\n warn(!isFunction(entry.value), \"The name property is also required when using a function for the dataKey of a chart's cartesian components. Ex: <Bar name=\\\"Name of my Data\\\"/>\" // eslint-disable-line max-len\n );\n var color = entry.inactive ? inactiveColor : entry.color;\n return /*#__PURE__*/React.createElement(\"li\", _extends({\n className: className,\n style: itemStyle\n // eslint-disable-next-line react/no-array-index-key\n ,\n key: \"legend-item-\".concat(i)\n }, adaptEventsOfChild(_this.props, entry, i)), /*#__PURE__*/React.createElement(Surface, {\n width: iconSize,\n height: iconSize,\n viewBox: viewBox,\n style: svgStyle\n }, _this.renderIcon(entry)), /*#__PURE__*/React.createElement(\"span\", {\n className: \"recharts-legend-item-text\",\n style: {\n color: color\n }\n }, finalFormatter ? finalFormatter(entryValue, entry, i) : entryValue));\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n payload = _this$props2.payload,\n layout = _this$props2.layout,\n align = _this$props2.align;\n if (!payload || !payload.length) {\n return null;\n }\n var finalStyle = {\n padding: 0,\n margin: 0,\n textAlign: layout === 'horizontal' ? align : 'left'\n };\n return /*#__PURE__*/React.createElement(\"ul\", {\n className: \"recharts-default-legend\",\n style: finalStyle\n }, this.renderItems());\n }\n }]);\n return DefaultLegendContent;\n}(PureComponent);\n_defineProperty(DefaultLegendContent, \"displayName\", 'Legend');\n_defineProperty(DefaultLegendContent, \"defaultProps\", {\n iconSize: 14,\n layout: 'horizontal',\n align: 'center',\n verticalAlign: 'middle',\n inactiveColor: '#ccc'\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nvar _excluded = [\"ref\"];\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : String(i); }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n/**\n * @fileOverview Legend\n */\nimport React, { PureComponent } from 'react';\nimport { DefaultLegendContent } from './DefaultLegendContent';\nimport { isNumber } from '../util/DataUtils';\nimport { getUniqPayload } from '../util/payload/getUniqPayload';\nfunction defaultUniqBy(entry) {\n return entry.value;\n}\nfunction renderContent(content, props) {\n if ( /*#__PURE__*/React.isValidElement(content)) {\n return /*#__PURE__*/React.cloneElement(content, props);\n }\n if (typeof content === 'function') {\n return /*#__PURE__*/React.createElement(content, props);\n }\n var ref = props.ref,\n otherProps = _objectWithoutProperties(props, _excluded);\n return /*#__PURE__*/React.createElement(DefaultLegendContent, otherProps);\n}\nvar EPS = 1;\nexport var Legend = /*#__PURE__*/function (_PureComponent) {\n _inherits(Legend, _PureComponent);\n function Legend() {\n var _this;\n _classCallCheck(this, Legend);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _callSuper(this, Legend, [].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"lastBoundingBox\", {\n width: -1,\n height: -1\n });\n return _this;\n }\n _createClass(Legend, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.updateBBox();\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate() {\n this.updateBBox();\n }\n }, {\n key: \"getBBox\",\n value: function getBBox() {\n if (this.wrapperNode && this.wrapperNode.getBoundingClientRect) {\n var _box = this.wrapperNode.getBoundingClientRect();\n _box.height = this.wrapperNode.offsetHeight;\n _box.width = this.wrapperNode.offsetWidth;\n return _box;\n }\n return null;\n }\n }, {\n key: \"updateBBox\",\n value: function updateBBox() {\n var onBBoxUpdate = this.props.onBBoxUpdate;\n var box = this.getBBox();\n if (box) {\n if (Math.abs(box.width - this.lastBoundingBox.width) > EPS || Math.abs(box.height - this.lastBoundingBox.height) > EPS) {\n this.lastBoundingBox.width = box.width;\n this.lastBoundingBox.height = box.height;\n if (onBBoxUpdate) {\n onBBoxUpdate(box);\n }\n }\n } else if (this.lastBoundingBox.width !== -1 || this.lastBoundingBox.height !== -1) {\n this.lastBoundingBox.width = -1;\n this.lastBoundingBox.height = -1;\n if (onBBoxUpdate) {\n onBBoxUpdate(null);\n }\n }\n }\n }, {\n key: \"getBBoxSnapshot\",\n value: function getBBoxSnapshot() {\n if (this.lastBoundingBox.width >= 0 && this.lastBoundingBox.height >= 0) {\n return _objectSpread({}, this.lastBoundingBox);\n }\n return {\n width: 0,\n height: 0\n };\n }\n }, {\n key: \"getDefaultPosition\",\n value: function getDefaultPosition(style) {\n var _this$props = this.props,\n layout = _this$props.layout,\n align = _this$props.align,\n verticalAlign = _this$props.verticalAlign,\n margin = _this$props.margin,\n chartWidth = _this$props.chartWidth,\n chartHeight = _this$props.chartHeight;\n var hPos, vPos;\n if (!style || (style.left === undefined || style.left === null) && (style.right === undefined || style.right === null)) {\n if (align === 'center' && layout === 'vertical') {\n var _box2 = this.getBBoxSnapshot();\n hPos = {\n left: ((chartWidth || 0) - _box2.width) / 2\n };\n } else {\n hPos = align === 'right' ? {\n right: margin && margin.right || 0\n } : {\n left: margin && margin.left || 0\n };\n }\n }\n if (!style || (style.top === undefined || style.top === null) && (style.bottom === undefined || style.bottom === null)) {\n if (verticalAlign === 'middle') {\n var _box3 = this.getBBoxSnapshot();\n vPos = {\n top: ((chartHeight || 0) - _box3.height) / 2\n };\n } else {\n vPos = verticalAlign === 'bottom' ? {\n bottom: margin && margin.bottom || 0\n } : {\n top: margin && margin.top || 0\n };\n }\n }\n return _objectSpread(_objectSpread({}, hPos), vPos);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n var _this$props2 = this.props,\n content = _this$props2.content,\n width = _this$props2.width,\n height = _this$props2.height,\n wrapperStyle = _this$props2.wrapperStyle,\n payloadUniqBy = _this$props2.payloadUniqBy,\n payload = _this$props2.payload;\n var outerStyle = _objectSpread(_objectSpread({\n position: 'absolute',\n width: width || 'auto',\n height: height || 'auto'\n }, this.getDefaultPosition(wrapperStyle)), wrapperStyle);\n return /*#__PURE__*/React.createElement(\"div\", {\n className: \"recharts-legend-wrapper\",\n style: outerStyle,\n ref: function ref(node) {\n _this2.wrapperNode = node;\n }\n }, renderContent(content, _objectSpread(_objectSpread({}, this.props), {}, {\n payload: getUniqPayload(payload, payloadUniqBy, defaultUniqBy)\n })));\n }\n }], [{\n key: \"getWithHeight\",\n value: function getWithHeight(item, chartWidth) {\n var layout = item.props.layout;\n if (layout === 'vertical' && isNumber(item.props.height)) {\n return {\n height: item.props.height\n };\n }\n if (layout === 'horizontal') {\n return {\n width: item.props.width || chartWidth\n };\n }\n return null;\n }\n }]);\n return Legend;\n}(PureComponent);\n_defineProperty(Legend, \"displayName\", 'Legend');\n_defineProperty(Legend, \"defaultProps\", {\n iconSize: 14,\n layout: 'horizontal',\n align: 'center',\n verticalAlign: 'bottom'\n});","import { KeyCodes } from './KeyCodes';\nimport { getDocument } from './dom/getDocument';\nimport { getItem, setItem } from './sessionStorage';\nimport { setRTL as mergeStylesSetRTL } from '@uifabric/merge-styles';\n\nconst RTL_LOCAL_STORAGE_KEY = 'isRTL';\n\n// Default to undefined so that we initialize on first read.\nlet _isRTL: boolean | undefined;\n\n/**\n * Gets the rtl state of the page (returns true if in rtl.)\n */\nexport function getRTL(theme: { rtl?: boolean } = {}): boolean {\n if (theme.rtl !== undefined) {\n return theme.rtl;\n }\n if (_isRTL === undefined) {\n // Fabric supports persisting the RTL setting between page refreshes via session storage\n let savedRTL = getItem(RTL_LOCAL_STORAGE_KEY);\n if (savedRTL !== null) {\n _isRTL = savedRTL === '1';\n setRTL(_isRTL);\n }\n\n let doc = getDocument();\n if (_isRTL === undefined && doc) {\n _isRTL = ((doc.body && doc.body.getAttribute('dir')) || doc.documentElement.getAttribute('dir')) === 'rtl';\n mergeStylesSetRTL(_isRTL);\n }\n }\n\n return !!_isRTL;\n}\n\n/**\n * Sets the rtl state of the page (by adjusting the dir attribute of the html element.)\n */\nexport function setRTL(isRTL: boolean, persistSetting: boolean = false): void {\n let doc = getDocument();\n if (doc) {\n doc.documentElement.setAttribute('dir', isRTL ? 'rtl' : 'ltr');\n }\n\n if (persistSetting) {\n setItem(RTL_LOCAL_STORAGE_KEY, isRTL ? '1' : '0');\n }\n\n _isRTL = isRTL;\n mergeStylesSetRTL(_isRTL);\n}\n\n/**\n * Returns the given key, but flips right/left arrows if necessary.\n */\nexport function getRTLSafeKeyCode(key: number, theme: { rtl?: boolean } = {}): number {\n if (getRTL(theme)) {\n if (key === KeyCodes.left) {\n key = KeyCodes.right;\n } else if (key === KeyCodes.right) {\n key = KeyCodes.left;\n }\n }\n\n return key;\n}\n","import { getWindow } from './dom/getWindow';\n\ndeclare function setTimeout(cb: Function, delay: number): number;\ndeclare function setInterval(cb: Function, delay: number): number;\n\n/**\n * Bugs often appear in async code when stuff gets disposed, but async operations don't get canceled.\n * This Async helper class solves these issues by tying async code to the lifetime of a disposable object.\n *\n * Usage: Anything class extending from BaseModel can access this helper via this.async. Otherwise create a\n * new instance of the class and remember to call dispose() during your code's dispose handler.\n *\n * @public\n */\nexport class Async {\n private _timeoutIds: { [id: number]: boolean } | null = null;\n private _immediateIds: { [id: number]: boolean } | null = null;\n private _intervalIds: { [id: number]: boolean } | null = null;\n private _animationFrameIds: { [id: number]: boolean } | null = null;\n private _isDisposed: boolean;\n private _parent: object | null;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private _onErrorHandler: ((e: any) => void) | undefined;\n private _noop: () => void;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n constructor(parent?: object, onError?: (e: any) => void) {\n this._isDisposed = false;\n this._parent = parent || null;\n this._onErrorHandler = onError;\n this._noop = () => {\n /* do nothing */\n };\n }\n\n /**\n * Dispose function, clears all async operations.\n */\n public dispose(): void {\n let id;\n\n this._isDisposed = true;\n this._parent = null;\n\n // Clear timeouts.\n if (this._timeoutIds) {\n for (id in this._timeoutIds) {\n if (this._timeoutIds.hasOwnProperty(id)) {\n this.clearTimeout(parseInt(id, 10));\n }\n }\n\n this._timeoutIds = null;\n }\n\n // Clear immediates.\n if (this._immediateIds) {\n for (id in this._immediateIds) {\n if (this._immediateIds.hasOwnProperty(id)) {\n this.clearImmediate(parseInt(id, 10));\n }\n }\n\n this._immediateIds = null;\n }\n\n // Clear intervals.\n if (this._intervalIds) {\n for (id in this._intervalIds) {\n if (this._intervalIds.hasOwnProperty(id)) {\n this.clearInterval(parseInt(id, 10));\n }\n }\n this._intervalIds = null;\n }\n\n // Clear animation frames.\n if (this._animationFrameIds) {\n for (id in this._animationFrameIds) {\n if (this._animationFrameIds.hasOwnProperty(id)) {\n this.cancelAnimationFrame(parseInt(id, 10));\n }\n }\n\n this._animationFrameIds = null;\n }\n }\n\n /**\n * SetTimeout override, which will auto cancel the timeout during dispose.\n * @param callback - Callback to execute.\n * @param duration - Duration in milliseconds.\n * @returns The setTimeout id.\n */\n public setTimeout(callback: () => void, duration: number): number {\n let timeoutId = 0;\n\n if (!this._isDisposed) {\n if (!this._timeoutIds) {\n this._timeoutIds = {};\n }\n\n timeoutId = setTimeout(() => {\n // Time to execute the timeout, enqueue it as a foreground task to be executed.\n\n try {\n // Now delete the record and call the callback.\n if (this._timeoutIds) {\n delete this._timeoutIds[timeoutId];\n }\n callback.apply(this._parent);\n } catch (e) {\n if (this._onErrorHandler) {\n this._onErrorHandler(e);\n }\n }\n }, duration);\n\n this._timeoutIds[timeoutId] = true;\n }\n\n return timeoutId;\n }\n\n /**\n * Clears the timeout.\n * @param id - Id to cancel.\n */\n public clearTimeout(id: number): void {\n if (this._timeoutIds && this._timeoutIds[id]) {\n clearTimeout(id);\n delete this._timeoutIds[id];\n }\n }\n\n /**\n * SetImmediate override, which will auto cancel the immediate during dispose.\n * @param callback - Callback to execute.\n * @param targetElement - Optional target element to use for identifying the correct window.\n * @returns The setTimeout id.\n */\n public setImmediate(callback: () => void, targetElement?: Element | null): number {\n let immediateId = 0;\n const win = getWindow(targetElement)!;\n\n if (!this._isDisposed) {\n if (!this._immediateIds) {\n this._immediateIds = {};\n }\n\n let setImmediateCallback = () => {\n // Time to execute the timeout, enqueue it as a foreground task to be executed.\n\n try {\n // Now delete the record and call the callback.\n if (this._immediateIds) {\n delete this._immediateIds[immediateId];\n }\n callback.apply(this._parent);\n } catch (e) {\n this._logError(e);\n }\n };\n\n immediateId = win.setTimeout(setImmediateCallback, 0);\n\n this._immediateIds[immediateId] = true;\n }\n\n return immediateId;\n }\n\n /**\n * Clears the immediate.\n * @param id - Id to cancel.\n * @param targetElement - Optional target element to use for identifying the correct window.\n */\n public clearImmediate(id: number, targetElement?: Element | null): void {\n const win = getWindow(targetElement)!;\n\n if (this._immediateIds && this._immediateIds[id]) {\n win.clearTimeout(id);\n delete this._immediateIds[id];\n }\n }\n\n /**\n * SetInterval override, which will auto cancel the timeout during dispose.\n * @param callback - Callback to execute.\n * @param duration - Duration in milliseconds.\n * @returns The setTimeout id.\n */\n public setInterval(callback: () => void, duration: number): number {\n let intervalId = 0;\n\n if (!this._isDisposed) {\n if (!this._intervalIds) {\n this._intervalIds = {};\n }\n\n intervalId = setInterval(() => {\n // Time to execute the interval callback, enqueue it as a foreground task to be executed.\n try {\n callback.apply(this._parent);\n } catch (e) {\n this._logError(e);\n }\n }, duration);\n\n this._intervalIds[intervalId] = true;\n }\n\n return intervalId;\n }\n\n /**\n * Clears the interval.\n * @param id - Id to cancel.\n */\n public clearInterval(id: number): void {\n if (this._intervalIds && this._intervalIds[id]) {\n clearInterval(id);\n delete this._intervalIds[id];\n }\n }\n\n /**\n * Creates a function that, when executed, will only call the func function at most once per\n * every wait milliseconds. Provide an options object to indicate that func should be invoked\n * on the leading and/or trailing edge of the wait timeout. Subsequent calls to the throttled\n * function will return the result of the last func call.\n *\n * Note: If leading and trailing options are true func will be called on the trailing edge of\n * the timeout only if the throttled function is invoked more than once during the wait timeout.\n *\n * @param func - The function to throttle.\n * @param wait - The number of milliseconds to throttle executions to. Defaults to 0.\n * @param options - The options object.\n * @returns The new throttled function.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public throttle<T extends (...args: any[]) => any>(\n func: T,\n wait?: number,\n options?: {\n leading?: boolean;\n trailing?: boolean;\n },\n ): T {\n if (this._isDisposed) {\n return this._noop as T;\n }\n\n let waitMS = wait || 0;\n let leading = true;\n let trailing = true;\n let lastExecuteTime = 0;\n let lastResult: T;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let lastArgs: any[];\n let timeoutId: number | null = null;\n\n if (options && typeof options.leading === 'boolean') {\n leading = options.leading;\n }\n\n if (options && typeof options.trailing === 'boolean') {\n trailing = options.trailing;\n }\n\n let callback = (userCall?: boolean) => {\n let now = Date.now();\n let delta = now - lastExecuteTime;\n let waitLength = leading ? waitMS - delta : waitMS;\n if (delta >= waitMS && (!userCall || leading)) {\n lastExecuteTime = now;\n if (timeoutId) {\n this.clearTimeout(timeoutId);\n timeoutId = null;\n }\n lastResult = func.apply(this._parent, lastArgs);\n } else if (timeoutId === null && trailing) {\n timeoutId = this.setTimeout(callback, waitLength);\n }\n\n return lastResult;\n };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let resultFunction = ((...args: any[]): any => {\n lastArgs = args;\n return callback(true);\n }) as T;\n\n return resultFunction;\n }\n\n /**\n * Creates a function that will delay the execution of func until after wait milliseconds have\n * elapsed since the last time it was invoked. Provide an options object to indicate that func\n * should be invoked on the leading and/or trailing edge of the wait timeout. Subsequent calls\n * to the debounced function will return the result of the last func call.\n *\n * Note: If leading and trailing options are true func will be called on the trailing edge of\n * the timeout only if the debounced function is invoked more than once during the wait\n * timeout.\n *\n * @param func - The function to debounce.\n * @param wait - The number of milliseconds to delay.\n * @param options - The options object.\n * @returns The new debounced function.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public debounce<T extends (...args: any[]) => any>(\n func: T,\n wait?: number,\n options?: {\n leading?: boolean;\n maxWait?: number;\n trailing?: boolean;\n },\n ): ICancelable<T> & T {\n if (this._isDisposed) {\n let noOpFunction = (() => {\n /** Do nothing */\n }) as ICancelable<T> & T;\n\n noOpFunction.cancel = () => {\n return;\n };\n noOpFunction.flush = ((() => null) as unknown) as () => ReturnType<T>;\n noOpFunction.pending = () => false;\n\n return noOpFunction;\n }\n\n let waitMS = wait || 0;\n let leading = false;\n let trailing = true;\n let maxWait: number | null = null;\n let lastCallTime = 0;\n let lastExecuteTime = Date.now();\n let lastResult: ReturnType<T>;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let lastArgs: any[];\n let timeoutId: number | null = null;\n\n if (options && typeof options.leading === 'boolean') {\n leading = options.leading;\n }\n\n if (options && typeof options.trailing === 'boolean') {\n trailing = options.trailing;\n }\n\n if (options && typeof options.maxWait === 'number' && !isNaN(options.maxWait)) {\n maxWait = options.maxWait;\n }\n\n let markExecuted = (time: number) => {\n if (timeoutId) {\n this.clearTimeout(timeoutId);\n timeoutId = null;\n }\n lastExecuteTime = time;\n };\n\n let invokeFunction = (time: number) => {\n markExecuted(time);\n lastResult = func.apply(this._parent, lastArgs);\n };\n\n let callback = (userCall?: boolean) => {\n let now = Date.now();\n let executeImmediately = false;\n if (userCall) {\n if (leading && now - lastCallTime >= waitMS) {\n executeImmediately = true;\n }\n lastCallTime = now;\n }\n let delta = now - lastCallTime;\n let waitLength = waitMS - delta;\n let maxWaitDelta = now - lastExecuteTime;\n let maxWaitExpired = false;\n\n if (maxWait !== null) {\n // maxWait only matters when there is a pending callback\n if (maxWaitDelta >= maxWait && timeoutId) {\n maxWaitExpired = true;\n } else {\n waitLength = Math.min(waitLength, maxWait - maxWaitDelta);\n }\n }\n\n if (delta >= waitMS || maxWaitExpired || executeImmediately) {\n invokeFunction(now);\n } else if ((timeoutId === null || !userCall) && trailing) {\n timeoutId = this.setTimeout(callback, waitLength);\n }\n\n return lastResult;\n };\n\n let pending = (): boolean => {\n return !!timeoutId;\n };\n\n let cancel = (): void => {\n if (pending()) {\n // Mark the debounced function as having executed\n markExecuted(Date.now());\n }\n };\n\n let flush = () => {\n if (pending()) {\n invokeFunction(Date.now());\n }\n\n return lastResult;\n };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let resultFunction = ((...args: any[]) => {\n lastArgs = args;\n return callback(true);\n }) as ICancelable<T> & T;\n\n resultFunction.cancel = cancel;\n resultFunction.flush = flush;\n resultFunction.pending = pending;\n\n return resultFunction;\n }\n\n public requestAnimationFrame(callback: () => void, targetElement?: Element | null): number {\n let animationFrameId = 0;\n const win = getWindow(targetElement)!;\n\n if (!this._isDisposed) {\n if (!this._animationFrameIds) {\n this._animationFrameIds = {};\n }\n\n let animationFrameCallback = () => {\n try {\n // Now delete the record and call the callback.\n if (this._animationFrameIds) {\n delete this._animationFrameIds[animationFrameId];\n }\n\n callback.apply(this._parent);\n } catch (e) {\n this._logError(e);\n }\n };\n\n animationFrameId = win.requestAnimationFrame\n ? win.requestAnimationFrame(animationFrameCallback)\n : win.setTimeout(animationFrameCallback, 0);\n\n this._animationFrameIds[animationFrameId] = true;\n }\n\n return animationFrameId;\n }\n\n public cancelAnimationFrame(id: number, targetElement?: Element | null): void {\n const win = getWindow(targetElement)!;\n\n if (this._animationFrameIds && this._animationFrameIds[id]) {\n win.cancelAnimationFrame ? win.cancelAnimationFrame(id) : win.clearTimeout(id);\n delete this._animationFrameIds[id];\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n protected _logError(e: any): void {\n if (this._onErrorHandler) {\n this._onErrorHandler(e);\n }\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type ICancelable<T extends (...args: any[]) => any> = {\n flush: () => ReturnType<T>;\n cancel: () => void;\n pending: () => boolean;\n};\n","var baseExtremum = require('./_baseExtremum'),\n baseGt = require('./_baseGt'),\n identity = require('./identity');\n\n/**\n * Computes the maximum value of `array`. If `array` is empty or falsey,\n * `undefined` is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {*} Returns the maximum value.\n * @example\n *\n * _.max([4, 2, 8, 6]);\n * // => 8\n *\n * _.max([]);\n * // => undefined\n */\nfunction max(array) {\n return (array && array.length)\n ? baseExtremum(array, identity, baseGt)\n : undefined;\n}\n\nmodule.exports = max;\n","var baseExtremum = require('./_baseExtremum'),\n baseLt = require('./_baseLt'),\n identity = require('./identity');\n\n/**\n * Computes the minimum value of `array`. If `array` is empty or falsey,\n * `undefined` is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {*} Returns the minimum value.\n * @example\n *\n * _.min([4, 2, 8, 6]);\n * // => 2\n *\n * _.min([]);\n * // => undefined\n */\nfunction min(array) {\n return (array && array.length)\n ? baseExtremum(array, identity, baseLt)\n : undefined;\n}\n\nmodule.exports = min;\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","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 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 listCacheClear = require('./_listCacheClear'),\n listCacheDelete = require('./_listCacheDelete'),\n listCacheGet = require('./_listCacheGet'),\n listCacheHas = require('./_listCacheHas'),\n listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n","var 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","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","/**\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","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isIP;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n/**\n11.3. Examples\n\n The following addresses\n\n fe80::1234 (on the 1st link of the node)\n ff02::5678 (on the 5th link of the node)\n ff08::9abc (on the 10th organization of the node)\n\n would be represented as follows:\n\n fe80::1234%1\n ff02::5678%5\n ff08::9abc%10\n\n (Here we assume a natural translation from a zone index to the\n <zone_id> part, where the Nth zone of any scope is translated into\n \"N\".)\n\n If we use interface names as <zone_id>, those addresses could also be\n represented as follows:\n\n fe80::1234%ne0\n ff02::5678%pvc1.3\n ff08::9abc%interface10\n\n where the interface \"ne0\" belongs to the 1st link, \"pvc1.3\" belongs\n to the 5th link, and \"interface10\" belongs to the 10th organization.\n * * */\nvar IPv4SegmentFormat = '(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])';\nvar IPv4AddressFormat = \"(\".concat(IPv4SegmentFormat, \"[.]){3}\").concat(IPv4SegmentFormat);\nvar IPv4AddressRegExp = new RegExp(\"^\".concat(IPv4AddressFormat, \"$\"));\nvar IPv6SegmentFormat = '(?:[0-9a-fA-F]{1,4})';\nvar IPv6AddressRegExp = new RegExp('^(' + \"(?:\".concat(IPv6SegmentFormat, \":){7}(?:\").concat(IPv6SegmentFormat, \"|:)|\") + \"(?:\".concat(IPv6SegmentFormat, \":){6}(?:\").concat(IPv4AddressFormat, \"|:\").concat(IPv6SegmentFormat, \"|:)|\") + \"(?:\".concat(IPv6SegmentFormat, \":){5}(?::\").concat(IPv4AddressFormat, \"|(:\").concat(IPv6SegmentFormat, \"){1,2}|:)|\") + \"(?:\".concat(IPv6SegmentFormat, \":){4}(?:(:\").concat(IPv6SegmentFormat, \"){0,1}:\").concat(IPv4AddressFormat, \"|(:\").concat(IPv6SegmentFormat, \"){1,3}|:)|\") + \"(?:\".concat(IPv6SegmentFormat, \":){3}(?:(:\").concat(IPv6SegmentFormat, \"){0,2}:\").concat(IPv4AddressFormat, \"|(:\").concat(IPv6SegmentFormat, \"){1,4}|:)|\") + \"(?:\".concat(IPv6SegmentFormat, \":){2}(?:(:\").concat(IPv6SegmentFormat, \"){0,3}:\").concat(IPv4AddressFormat, \"|(:\").concat(IPv6SegmentFormat, \"){1,5}|:)|\") + \"(?:\".concat(IPv6SegmentFormat, \":){1}(?:(:\").concat(IPv6SegmentFormat, \"){0,4}:\").concat(IPv4AddressFormat, \"|(:\").concat(IPv6SegmentFormat, \"){1,6}|:)|\") + \"(?::((?::\".concat(IPv6SegmentFormat, \"){0,5}:\").concat(IPv4AddressFormat, \"|(?::\").concat(IPv6SegmentFormat, \"){1,7}|:))\") + ')(%[0-9a-zA-Z-.:]{1,})?$');\nfunction isIP(str) {\n var version = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n (0, _assertString.default)(str);\n version = String(version);\n if (!version) {\n return isIP(str, 4) || isIP(str, 6);\n }\n if (version === '4') {\n return IPv4AddressRegExp.test(str);\n }\n if (version === '6') {\n return IPv6AddressRegExp.test(str);\n }\n return false;\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","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 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 = _default;\n\nfunction Linear(context) {\n this._context = context;\n}\n\nLinear.prototype = {\n areaStart: function () {\n this._line = 0;\n },\n areaEnd: function () {\n this._line = NaN;\n },\n lineStart: function () {\n this._point = 0;\n },\n lineEnd: function () {\n if (this._line || this._line !== 0 && this._point === 1) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function (x, y) {\n x = +x, y = +y;\n\n switch (this._point) {\n case 0:\n this._point = 1;\n this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y);\n break;\n\n case 1:\n this._point = 2;\n // falls through\n\n default:\n this._context.lineTo(x, y);\n\n break;\n }\n }\n};\n\nfunction _default(context) {\n return new Linear(context);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = _default;\n\nfunction _default() {}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Basis = Basis;\nexports.default = _default;\nexports.point = point;\n\nfunction point(that, x, y) {\n that._context.bezierCurveTo((2 * that._x0 + that._x1) / 3, (2 * that._y0 + that._y1) / 3, (that._x0 + 2 * that._x1) / 3, (that._y0 + 2 * that._y1) / 3, (that._x0 + 4 * that._x1 + x) / 6, (that._y0 + 4 * that._y1 + y) / 6);\n}\n\nfunction Basis(context) {\n this._context = context;\n}\n\nBasis.prototype = {\n areaStart: function () {\n this._line = 0;\n },\n areaEnd: function () {\n this._line = NaN;\n },\n lineStart: function () {\n this._x0 = this._x1 = this._y0 = this._y1 = NaN;\n this._point = 0;\n },\n lineEnd: function () {\n switch (this._point) {\n case 3:\n point(this, this._x1, this._y1);\n // falls through\n\n case 2:\n this._context.lineTo(this._x1, this._y1);\n\n break;\n }\n\n if (this._line || this._line !== 0 && this._point === 1) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function (x, y) {\n x = +x, y = +y;\n\n switch (this._point) {\n case 0:\n this._point = 1;\n this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y);\n break;\n\n case 1:\n this._point = 2;\n break;\n\n case 2:\n this._point = 3;\n\n this._context.lineTo((5 * this._x0 + this._x1) / 6, (5 * this._y0 + this._y1) / 6);\n\n // falls through\n\n default:\n point(this, x, y);\n break;\n }\n\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nfunction _default(context) {\n return new Basis(context);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Cardinal = Cardinal;\nexports.default = void 0;\nexports.point = point;\n\nfunction point(that, x, y) {\n that._context.bezierCurveTo(that._x1 + that._k * (that._x2 - that._x0), that._y1 + that._k * (that._y2 - that._y0), that._x2 + that._k * (that._x1 - x), that._y2 + that._k * (that._y1 - y), that._x2, that._y2);\n}\n\nfunction Cardinal(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinal.prototype = {\n areaStart: function () {\n this._line = 0;\n },\n areaEnd: function () {\n this._line = NaN;\n },\n lineStart: function () {\n this._x0 = this._x1 = this._x2 = this._y0 = this._y1 = this._y2 = NaN;\n this._point = 0;\n },\n lineEnd: function () {\n switch (this._point) {\n case 2:\n this._context.lineTo(this._x2, this._y2);\n\n break;\n\n case 3:\n point(this, this._x1, this._y1);\n break;\n }\n\n if (this._line || this._line !== 0 && this._point === 1) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function (x, y) {\n x = +x, y = +y;\n\n switch (this._point) {\n case 0:\n this._point = 1;\n this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y);\n break;\n\n case 1:\n this._point = 2;\n this._x1 = x, this._y1 = y;\n break;\n\n case 2:\n this._point = 3;\n // falls through\n\n default:\n point(this, x, y);\n break;\n }\n\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nvar _default = function custom(tension) {\n function cardinal(context) {\n return new Cardinal(context, tension);\n }\n\n cardinal.tension = function (tension) {\n return custom(+tension);\n };\n\n return cardinal;\n}(0);\n\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = count;\n\nfunction count(values, valueof) {\n let count = 0;\n\n if (valueof === undefined) {\n for (let value of values) {\n if (value != null && (value = +value) >= value) {\n ++count;\n }\n }\n } else {\n let index = -1;\n\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n ++count;\n }\n }\n }\n\n return count;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ascendingDefined = ascendingDefined;\nexports.compareDefined = compareDefined;\nexports.default = sort;\n\nvar _ascending = _interopRequireDefault(require(\"./ascending.js\"));\n\nvar _permute = _interopRequireDefault(require(\"./permute.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction sort(values, ...F) {\n if (typeof values[Symbol.iterator] !== \"function\") throw new TypeError(\"values is not iterable\");\n values = Array.from(values);\n let [f] = F;\n\n if (f && f.length !== 2 || F.length > 1) {\n const index = Uint32Array.from(values, (d, i) => i);\n\n if (F.length > 1) {\n F = F.map(f => values.map(f));\n index.sort((i, j) => {\n for (const f of F) {\n const c = ascendingDefined(f[i], f[j]);\n if (c) return c;\n }\n });\n } else {\n f = values.map(f);\n index.sort((i, j) => ascendingDefined(f[i], f[j]));\n }\n\n return (0, _permute.default)(values, index);\n }\n\n return values.sort(compareDefined(f));\n}\n\nfunction compareDefined(compare = _ascending.default) {\n if (compare === _ascending.default) return ascendingDefined;\n if (typeof compare !== \"function\") throw new TypeError(\"compare is not a function\");\n return (a, b) => {\n const x = compare(a, b);\n if (x || x === 0) return x;\n return (compare(b, b) === 0) - (compare(a, a) === 0);\n };\n}\n\nfunction ascendingDefined(a, b) {\n return (a == null || !(a >= a)) - (b == null || !(b >= b)) || (a < b ? -1 : a > b ? 1 : 0);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = _default;\n\nvar _index = require(\"../../../lib-vendor/d3-color/src/index.js\");\n\nvar _rgb = _interopRequireDefault(require(\"./rgb.js\"));\n\nvar _array = require(\"./array.js\");\n\nvar _date = _interopRequireDefault(require(\"./date.js\"));\n\nvar _number = _interopRequireDefault(require(\"./number.js\"));\n\nvar _object = _interopRequireDefault(require(\"./object.js\"));\n\nvar _string = _interopRequireDefault(require(\"./string.js\"));\n\nvar _constant = _interopRequireDefault(require(\"./constant.js\"));\n\nvar _numberArray = _interopRequireWildcard(require(\"./numberArray.js\"));\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _default(a, b) {\n var t = typeof b,\n c;\n return b == null || t === \"boolean\" ? (0, _constant.default)(b) : (t === \"number\" ? _number.default : t === \"string\" ? (c = (0, _index.color)(b)) ? (b = c, _rgb.default) : _string.default : b instanceof _index.color ? _rgb.default : b instanceof Date ? _date.default : (0, _numberArray.isNumberArray)(b) ? _numberArray.default : Array.isArray(b) ? _array.genericArray : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? _object.default : _number.default)(a, b);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = _default;\n\nfunction _default(a, b) {\n return a = +a, b = +b, function (t) {\n return a * (1 - t) + b * t;\n };\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = _default;\n\nvar _formatDecimal = require(\"./formatDecimal.js\");\n\nfunction _default(x) {\n return x = (0, _formatDecimal.formatDecimalParts)(Math.abs(x)), x ? x[1] : NaN;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = _default;\nexports.formatDecimalParts = formatDecimalParts;\n\nfunction _default(x) {\n return Math.abs(x = Math.round(x)) >= 1e21 ? x.toLocaleString(\"en\").replace(/,/g, \"\") : x.toString(10);\n} // Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimalParts(1.23) returns [\"123\", 0].\n\n\nfunction formatDecimalParts(x, p) {\n if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n\n var i,\n coefficient = x.slice(0, i); // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n\n return [coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient, +x.slice(i + 1)];\n}","var isSymbol = require('./isSymbol');\n\n/**\n * The base implementation of methods like `_.max` and `_.min` which accepts a\n * `comparator` to determine the extremum value.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The iteratee invoked per iteration.\n * @param {Function} comparator The comparator used to compare values.\n * @returns {*} Returns the extremum value.\n */\nfunction baseExtremum(array, iteratee, comparator) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n var value = array[index],\n current = iteratee(value);\n\n if (current != null && (computed === undefined\n ? (current === current && !isSymbol(current))\n : comparator(current, computed)\n )) {\n var computed = current,\n result = value;\n }\n }\n return result;\n}\n\nmodule.exports = baseExtremum;\n","import { CANCEL } from '@redux-saga/symbols';\n\nvar MAX_SIGNED_INT = 2147483647;\nfunction delayP(ms, val) {\n if (val === void 0) {\n val = true;\n }\n\n // https://developer.mozilla.org/en-US/docs/Web/API/setTimeout#maximum_delay_value\n if (process.env.NODE_ENV !== 'production' && ms > MAX_SIGNED_INT) {\n throw new Error('delay only supports a maximum value of ' + MAX_SIGNED_INT + 'ms');\n }\n\n var timeoutId;\n var promise = new Promise(function (resolve) {\n timeoutId = setTimeout(resolve, Math.min(MAX_SIGNED_INT, ms), val);\n });\n\n promise[CANCEL] = function () {\n clearTimeout(timeoutId);\n };\n\n return promise;\n}\n\nexport default delayP;\n","import { IStyle, IStyleBaseArray } from './IStyle';\nimport { Stylesheet } from './Stylesheet';\n\n/**\n * Separates the classes and style objects. Any classes that are pre-registered\n * args are auto expanded into objects.\n */\nexport function extractStyleParts(\n ...args: (IStyle | IStyle[] | false | null | undefined)[]\n): { classes: string[]; objects: IStyleBaseArray } {\n const classes: string[] = [];\n const objects: {}[] = [];\n const stylesheet = Stylesheet.getInstance();\n\n function _processArgs(argsList: (IStyle | IStyle[])[]): void {\n for (const arg of argsList) {\n if (arg) {\n if (typeof arg === 'string') {\n if (arg.indexOf(' ') >= 0) {\n _processArgs(arg.split(' '));\n } else {\n const translatedArgs = stylesheet.argsFromClassName(arg);\n\n if (translatedArgs) {\n _processArgs(translatedArgs);\n } else {\n // Avoid adding the same class twice.\n if (classes.indexOf(arg) === -1) {\n classes.push(arg);\n }\n }\n }\n } else if (Array.isArray(arg)) {\n _processArgs(arg);\n } else if (typeof arg === 'object') {\n objects.push(arg);\n }\n }\n }\n }\n\n _processArgs(args);\n\n return {\n classes,\n objects,\n };\n}\n","export let _isSSR = false;\n\n/**\n * Helper to set ssr mode to simulate no window object returned from getWindow helper.\n *\n * @public\n */\nexport function setSSR(isEnabled: boolean): void {\n _isSSR = isEnabled;\n}\n","function _setPrototypeOf(t, e) {\n return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {\n return t.__proto__ = e, t;\n }, _setPrototypeOf(t, e);\n}\nexport { _setPrototypeOf as default };","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nexport default freeGlobal;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nexport default freeGlobal;\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","function _assertThisInitialized(e) {\n if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return e;\n}\nexport { _assertThisInitialized as default };","import { getParent } from './getParent';\n/**\n * Finds the first parent element where the matchFunction returns true\n * @param element - element to start searching at\n * @param matchFunction - the function that determines if the element is a match\n * @returns the matched element or null no match was found\n */\nexport function findElementRecursive(\n element: HTMLElement | null,\n matchFunction: (element: HTMLElement) => boolean,\n): HTMLElement | null {\n if (!element || element === document.body) {\n return null;\n }\n return matchFunction(element) ? element : findElementRecursive(getParent(element), matchFunction);\n}\n","import { ICheckStyleProps, ICheckStyles } from './Check.types';\nimport {\n HighContrastSelector,\n IStyle,\n getGlobalClassNames,\n IconFontSizes,\n getHighContrastNoAdjustStyle,\n} from '../../Styling';\nimport { getRTL } from '../../Utilities';\n\nexport const CheckGlobalClassNames = {\n root: 'ms-Check',\n circle: 'ms-Check-circle',\n check: 'ms-Check-check',\n /** Must be manually applied to the parent element of the check. */\n checkHost: 'ms-Check-checkHost',\n};\n\nexport const getStyles = (props: ICheckStyleProps): ICheckStyles => {\n // eslint-disable-next-line deprecation/deprecation\n const { height = props.checkBoxHeight || '18px', checked, className, theme } = props;\n\n const { palette, semanticColors, fonts } = theme;\n const isRTL = getRTL(theme);\n\n const classNames = getGlobalClassNames(CheckGlobalClassNames, theme);\n\n const sharedCircleCheck: IStyle = {\n fontSize: height,\n position: 'absolute',\n left: 0,\n top: 0,\n width: height,\n height: height,\n textAlign: 'center',\n verticalAlign: 'middle',\n };\n\n return {\n root: [\n classNames.root,\n fonts.medium,\n {\n // lineHeight currently needs to be a string to output without 'px'\n lineHeight: '1',\n width: height,\n height: height,\n verticalAlign: 'top',\n position: 'relative',\n userSelect: 'none',\n\n selectors: {\n ':before': {\n content: '\"\"',\n position: 'absolute',\n top: '1px',\n right: '1px',\n bottom: '1px',\n left: '1px',\n borderRadius: '50%',\n opacity: 1,\n background: semanticColors.bodyBackground,\n },\n\n [`.${classNames.checkHost}:hover &, .${classNames.checkHost}:focus &, &:hover, &:focus`]: {\n opacity: 1,\n },\n },\n },\n\n checked && [\n 'is-checked',\n {\n selectors: {\n ':before': {\n background: palette.themePrimary,\n opacity: 1,\n selectors: {\n [HighContrastSelector]: {\n background: 'Window',\n },\n },\n },\n },\n },\n ],\n className,\n ],\n\n circle: [\n classNames.circle,\n sharedCircleCheck,\n\n {\n color: palette.neutralSecondary,\n\n selectors: {\n [HighContrastSelector]: {\n color: 'WindowText',\n },\n },\n },\n\n checked && {\n color: palette.white,\n },\n ],\n\n check: [\n classNames.check,\n sharedCircleCheck,\n\n {\n opacity: 0,\n color: palette.neutralSecondary,\n fontSize: IconFontSizes.medium,\n left: isRTL ? '-0.5px' : '.5px', // for centering the check icon inside the circle.\n\n selectors: {\n ':hover': {\n opacity: 1,\n },\n\n [HighContrastSelector]: {\n ...getHighContrastNoAdjustStyle(),\n },\n },\n },\n\n checked && {\n opacity: 1,\n color: palette.white,\n fontWeight: 900,\n\n selectors: {\n [HighContrastSelector]: {\n border: 'none',\n color: 'WindowText',\n },\n },\n },\n ],\n\n checkHost: classNames.checkHost,\n };\n};\n","import { getGlobalClassNames, HighContrastSelector, getHighContrastNoAdjustStyle } from '../../../Styling';\nimport { ISuggestionsItemStyleProps, ISuggestionsItemStyles } from './SuggestionsItem.types';\nimport { IsFocusVisibleClassName } from '../../../Utilities';\n\nexport const SuggestionsItemGlobalClassNames = {\n root: 'ms-Suggestions-item',\n itemButton: 'ms-Suggestions-itemButton',\n closeButton: 'ms-Suggestions-closeButton',\n isSuggested: 'is-suggested',\n};\n\nexport function getStyles(props: ISuggestionsItemStyleProps): ISuggestionsItemStyles {\n const { className, theme, suggested } = props;\n\n const { palette, semanticColors } = theme;\n\n const classNames = getGlobalClassNames(SuggestionsItemGlobalClassNames, theme);\n\n return {\n root: [\n classNames.root,\n {\n display: 'flex',\n alignItems: 'stretch',\n boxSizing: 'border-box',\n width: '100%',\n position: 'relative',\n selectors: {\n '&:hover': {\n background: semanticColors.menuItemBackgroundHovered,\n },\n '&:hover .ms-Suggestions-closeButton': {\n display: 'block',\n },\n },\n },\n suggested && {\n selectors: {\n [`.${IsFocusVisibleClassName} &`]: {\n selectors: {\n [`.${classNames.closeButton}`]: {\n display: 'block',\n background: semanticColors.menuItemBackgroundPressed,\n },\n },\n },\n ':after': {\n pointerEvents: 'none',\n content: '\"\"',\n position: 'absolute',\n left: 0,\n top: 0,\n bottom: 0,\n right: 0,\n border: `1px solid ${theme.semanticColors.focusBorder}`,\n },\n },\n },\n className,\n ],\n itemButton: [\n classNames.itemButton,\n {\n width: '100%',\n padding: 0,\n border: 'none',\n height: '100%',\n // Force the item button to be collapsible so it can always shrink\n // to accommodate the close button as a peer in its flex container.\n minWidth: 0,\n // Require for IE11 to truncate the component.\n overflow: 'hidden',\n selectors: {\n [HighContrastSelector]: {\n color: 'WindowText',\n selectors: {\n ':hover': {\n background: 'Highlight',\n color: 'HighlightText',\n ...getHighContrastNoAdjustStyle(),\n },\n },\n },\n ':hover': {\n color: semanticColors.menuItemTextHovered,\n },\n },\n },\n suggested && [\n classNames.isSuggested,\n {\n background: semanticColors.menuItemBackgroundPressed,\n selectors: {\n ':hover': {\n background: semanticColors.menuDivider,\n },\n [HighContrastSelector]: {\n background: 'Highlight',\n color: 'HighlightText',\n ...getHighContrastNoAdjustStyle(),\n },\n },\n },\n ],\n ],\n closeButton: [\n classNames.closeButton,\n {\n display: 'none',\n color: palette.neutralSecondary,\n padding: '0 4px',\n height: 'auto',\n width: 32,\n selectors: {\n ':hover, :active': {\n background: palette.neutralTertiaryAlt,\n color: palette.neutralDark,\n },\n [HighContrastSelector]: {\n color: 'WindowText',\n },\n },\n },\n suggested && {\n [`.${IsFocusVisibleClassName} &`]: {\n selectors: {\n ':hover, :active': {\n background: palette.neutralTertiary,\n },\n },\n },\n selectors: {\n ':hover, :active': {\n background: palette.neutralTertiary,\n color: palette.neutralPrimary,\n },\n },\n },\n ],\n };\n}\n","var constant = require('./constant'),\n createInverter = require('./_createInverter'),\n identity = require('./identity');\n\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 * Creates an object composed of the inverted keys and values of `object`.\n * If `object` contains duplicate values, subsequent values overwrite\n * property assignments of previous values.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Object\n * @param {Object} object The object to invert.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invert(object);\n * // => { '1': 'c', '2': 'b' }\n */\nvar invert = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n result[value] = key;\n}, constant(identity));\n\nmodule.exports = invert;\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","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nvar _excluded = [\"type\", \"size\", \"sizeType\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : String(i); }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n/**\n * @fileOverview Curve\n */\nimport React from 'react';\nimport upperFirst from 'lodash/upperFirst';\nimport { symbol as shapeSymbol, symbolCircle, symbolCross, symbolDiamond, symbolSquare, symbolStar, symbolTriangle, symbolWye } from 'victory-vendor/d3-shape';\nimport clsx from 'clsx';\nimport { filterProps } from '../util/ReactUtils';\nvar symbolFactories = {\n symbolCircle: symbolCircle,\n symbolCross: symbolCross,\n symbolDiamond: symbolDiamond,\n symbolSquare: symbolSquare,\n symbolStar: symbolStar,\n symbolTriangle: symbolTriangle,\n symbolWye: symbolWye\n};\nvar RADIAN = Math.PI / 180;\nvar getSymbolFactory = function getSymbolFactory(type) {\n var name = \"symbol\".concat(upperFirst(type));\n return symbolFactories[name] || symbolCircle;\n};\nvar calculateAreaSize = function calculateAreaSize(size, sizeType, type) {\n if (sizeType === 'area') {\n return size;\n }\n switch (type) {\n case 'cross':\n return 5 * size * size / 9;\n case 'diamond':\n return 0.5 * size * size / Math.sqrt(3);\n case 'square':\n return size * size;\n case 'star':\n {\n var angle = 18 * RADIAN;\n return 1.25 * size * size * (Math.tan(angle) - Math.tan(angle * 2) * Math.pow(Math.tan(angle), 2));\n }\n case 'triangle':\n return Math.sqrt(3) * size * size / 4;\n case 'wye':\n return (21 - 10 * Math.sqrt(3)) * size * size / 8;\n default:\n return Math.PI * size * size / 4;\n }\n};\nvar registerSymbol = function registerSymbol(key, factory) {\n symbolFactories[\"symbol\".concat(upperFirst(key))] = factory;\n};\nexport var Symbols = function Symbols(_ref) {\n var _ref$type = _ref.type,\n type = _ref$type === void 0 ? 'circle' : _ref$type,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 64 : _ref$size,\n _ref$sizeType = _ref.sizeType,\n sizeType = _ref$sizeType === void 0 ? 'area' : _ref$sizeType,\n rest = _objectWithoutProperties(_ref, _excluded);\n var props = _objectSpread(_objectSpread({}, rest), {}, {\n type: type,\n size: size,\n sizeType: sizeType\n });\n\n /**\n * Calculate the path of curve\n * @return {String} path\n */\n var getPath = function getPath() {\n var symbolFactory = getSymbolFactory(type);\n var symbol = shapeSymbol().type(symbolFactory).size(calculateAreaSize(size, sizeType, type));\n return symbol();\n };\n var className = props.className,\n cx = props.cx,\n cy = props.cy;\n var filteredProps = filterProps(props, true);\n if (cx === +cx && cy === +cy && size === +size) {\n return /*#__PURE__*/React.createElement(\"path\", _extends({}, filteredProps, {\n className: clsx('recharts-symbols', className),\n transform: \"translate(\".concat(cx, \", \").concat(cy, \")\"),\n d: getPath()\n }));\n }\n return null;\n};\nSymbols.registerSymbol = registerSymbol;","import uniqBy from 'lodash/uniqBy';\nimport isFunction from 'lodash/isFunction';\n\n/**\n * This is configuration option that decides how to filter for unique values only:\n *\n * - `false` means \"no filter\"\n * - `true` means \"use recharts default filter\"\n * - function means \"use return of this function as the default key\"\n */\n\nexport function getUniqPayload(payload, option, defaultUniqBy) {\n if (option === true) {\n return uniqBy(payload, defaultUniqBy);\n }\n if (isFunction(option)) {\n return uniqBy(payload, option);\n }\n return payload;\n}","var _excluded = [\"offset\", \"layout\", \"width\", \"dataKey\", \"data\", \"dataPointFormatter\", \"xAxis\", \"yAxis\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n/**\n * @fileOverview Render a group of error bar\n */\nimport React from 'react';\nimport invariant from 'tiny-invariant';\nimport { Layer } from '../container/Layer';\nimport { filterProps } from '../util/ReactUtils';\nexport function ErrorBar(props) {\n var offset = props.offset,\n layout = props.layout,\n width = props.width,\n dataKey = props.dataKey,\n data = props.data,\n dataPointFormatter = props.dataPointFormatter,\n xAxis = props.xAxis,\n yAxis = props.yAxis,\n others = _objectWithoutProperties(props, _excluded);\n var svgProps = filterProps(others, false);\n !!(props.direction === 'x' && xAxis.type !== 'number') ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'ErrorBar requires Axis type property to be \"number\".') : invariant(false) : void 0;\n var errorBars = data.map(function (entry) {\n var _dataPointFormatter = dataPointFormatter(entry, dataKey),\n x = _dataPointFormatter.x,\n y = _dataPointFormatter.y,\n value = _dataPointFormatter.value,\n errorVal = _dataPointFormatter.errorVal;\n if (!errorVal) {\n return null;\n }\n var lineCoordinates = [];\n var lowBound, highBound;\n if (Array.isArray(errorVal)) {\n var _errorVal = _slicedToArray(errorVal, 2);\n lowBound = _errorVal[0];\n highBound = _errorVal[1];\n } else {\n lowBound = highBound = errorVal;\n }\n if (layout === 'vertical') {\n // error bar for horizontal charts, the y is fixed, x is a range value\n var scale = xAxis.scale;\n var yMid = y + offset;\n var yMin = yMid + width;\n var yMax = yMid - width;\n var xMin = scale(value - lowBound);\n var xMax = scale(value + highBound);\n\n // the right line of |--|\n lineCoordinates.push({\n x1: xMax,\n y1: yMin,\n x2: xMax,\n y2: yMax\n });\n // the middle line of |--|\n lineCoordinates.push({\n x1: xMin,\n y1: yMid,\n x2: xMax,\n y2: yMid\n });\n // the left line of |--|\n lineCoordinates.push({\n x1: xMin,\n y1: yMin,\n x2: xMin,\n y2: yMax\n });\n } else if (layout === 'horizontal') {\n // error bar for horizontal charts, the x is fixed, y is a range value\n var _scale = yAxis.scale;\n var xMid = x + offset;\n var _xMin = xMid - width;\n var _xMax = xMid + width;\n var _yMin = _scale(value - lowBound);\n var _yMax = _scale(value + highBound);\n\n // the top line\n lineCoordinates.push({\n x1: _xMin,\n y1: _yMax,\n x2: _xMax,\n y2: _yMax\n });\n // the middle line\n lineCoordinates.push({\n x1: xMid,\n y1: _yMin,\n x2: xMid,\n y2: _yMax\n });\n // the bottom line\n lineCoordinates.push({\n x1: _xMin,\n y1: _yMin,\n x2: _xMax,\n y2: _yMin\n });\n }\n return /*#__PURE__*/React.createElement(Layer, _extends({\n className: \"recharts-errorBar\",\n key: \"bar-\".concat(lineCoordinates.map(function (c) {\n return \"\".concat(c.x1, \"-\").concat(c.x2, \"-\").concat(c.y1, \"-\").concat(c.y2);\n }))\n }, svgProps), lineCoordinates.map(function (coordinates) {\n return /*#__PURE__*/React.createElement(\"line\", _extends({}, coordinates, {\n key: \"line-\".concat(coordinates.x1, \"-\").concat(coordinates.x2, \"-\").concat(coordinates.y1, \"-\").concat(coordinates.y2)\n }));\n }));\n });\n return /*#__PURE__*/React.createElement(Layer, {\n className: \"recharts-errorBars\"\n }, errorBars);\n}\nErrorBar.defaultProps = {\n stroke: 'black',\n strokeWidth: 1.5,\n width: 5,\n offset: 0,\n layout: 'horizontal'\n};\nErrorBar.displayName = 'ErrorBar';","var arrayEvery = require('./_arrayEvery'),\n baseEvery = require('./_baseEvery'),\n baseIteratee = require('./_baseIteratee'),\n isArray = require('./isArray'),\n isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Checks if `predicate` returns truthy for **all** elements of `collection`.\n * Iteration is stopped once `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * **Note:** This method returns `true` for\n * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because\n * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of\n * elements of empty collections.\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 all elements pass the predicate check,\n * else `false`.\n * @example\n *\n * _.every([true, 1, null, 'yes'], Boolean);\n * // => false\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.every(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.every(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.every(users, 'active');\n * // => false\n */\nfunction every(collection, predicate, guard) {\n var func = isArray(collection) ? arrayEvery : baseEvery;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, baseIteratee(predicate, 3));\n}\n\nmodule.exports = every;\n","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : String(i); }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/**\n * @fileOverview Sector\n */\nimport React from 'react';\nimport clsx from 'clsx';\nimport { filterProps } from '../util/ReactUtils';\nimport { polarToCartesian, RADIAN } from '../util/PolarUtils';\nimport { getPercentValue, mathSign } from '../util/DataUtils';\nvar getDeltaAngle = function getDeltaAngle(startAngle, endAngle) {\n var sign = mathSign(endAngle - startAngle);\n var deltaAngle = Math.min(Math.abs(endAngle - startAngle), 359.999);\n return sign * deltaAngle;\n};\nvar getTangentCircle = function getTangentCircle(_ref) {\n var cx = _ref.cx,\n cy = _ref.cy,\n radius = _ref.radius,\n angle = _ref.angle,\n sign = _ref.sign,\n isExternal = _ref.isExternal,\n cornerRadius = _ref.cornerRadius,\n cornerIsExternal = _ref.cornerIsExternal;\n var centerRadius = cornerRadius * (isExternal ? 1 : -1) + radius;\n var theta = Math.asin(cornerRadius / centerRadius) / RADIAN;\n var centerAngle = cornerIsExternal ? angle : angle + sign * theta;\n var center = polarToCartesian(cx, cy, centerRadius, centerAngle);\n // The coordinate of point which is tangent to the circle\n var circleTangency = polarToCartesian(cx, cy, radius, centerAngle);\n // The coordinate of point which is tangent to the radius line\n var lineTangencyAngle = cornerIsExternal ? angle - sign * theta : angle;\n var lineTangency = polarToCartesian(cx, cy, centerRadius * Math.cos(theta * RADIAN), lineTangencyAngle);\n return {\n center: center,\n circleTangency: circleTangency,\n lineTangency: lineTangency,\n theta: theta\n };\n};\nvar getSectorPath = function getSectorPath(_ref2) {\n var cx = _ref2.cx,\n cy = _ref2.cy,\n innerRadius = _ref2.innerRadius,\n outerRadius = _ref2.outerRadius,\n startAngle = _ref2.startAngle,\n endAngle = _ref2.endAngle;\n var angle = getDeltaAngle(startAngle, endAngle);\n\n // When the angle of sector equals to 360, star point and end point coincide\n var tempEndAngle = startAngle + angle;\n var outerStartPoint = polarToCartesian(cx, cy, outerRadius, startAngle);\n var outerEndPoint = polarToCartesian(cx, cy, outerRadius, tempEndAngle);\n var path = \"M \".concat(outerStartPoint.x, \",\").concat(outerStartPoint.y, \"\\n A \").concat(outerRadius, \",\").concat(outerRadius, \",0,\\n \").concat(+(Math.abs(angle) > 180), \",\").concat(+(startAngle > tempEndAngle), \",\\n \").concat(outerEndPoint.x, \",\").concat(outerEndPoint.y, \"\\n \");\n if (innerRadius > 0) {\n var innerStartPoint = polarToCartesian(cx, cy, innerRadius, startAngle);\n var innerEndPoint = polarToCartesian(cx, cy, innerRadius, tempEndAngle);\n path += \"L \".concat(innerEndPoint.x, \",\").concat(innerEndPoint.y, \"\\n A \").concat(innerRadius, \",\").concat(innerRadius, \",0,\\n \").concat(+(Math.abs(angle) > 180), \",\").concat(+(startAngle <= tempEndAngle), \",\\n \").concat(innerStartPoint.x, \",\").concat(innerStartPoint.y, \" Z\");\n } else {\n path += \"L \".concat(cx, \",\").concat(cy, \" Z\");\n }\n return path;\n};\nvar getSectorWithCorner = function getSectorWithCorner(_ref3) {\n var cx = _ref3.cx,\n cy = _ref3.cy,\n innerRadius = _ref3.innerRadius,\n outerRadius = _ref3.outerRadius,\n cornerRadius = _ref3.cornerRadius,\n forceCornerRadius = _ref3.forceCornerRadius,\n cornerIsExternal = _ref3.cornerIsExternal,\n startAngle = _ref3.startAngle,\n endAngle = _ref3.endAngle;\n var sign = mathSign(endAngle - startAngle);\n var _getTangentCircle = getTangentCircle({\n cx: cx,\n cy: cy,\n radius: outerRadius,\n angle: startAngle,\n sign: sign,\n cornerRadius: cornerRadius,\n cornerIsExternal: cornerIsExternal\n }),\n soct = _getTangentCircle.circleTangency,\n solt = _getTangentCircle.lineTangency,\n sot = _getTangentCircle.theta;\n var _getTangentCircle2 = getTangentCircle({\n cx: cx,\n cy: cy,\n radius: outerRadius,\n angle: endAngle,\n sign: -sign,\n cornerRadius: cornerRadius,\n cornerIsExternal: cornerIsExternal\n }),\n eoct = _getTangentCircle2.circleTangency,\n eolt = _getTangentCircle2.lineTangency,\n eot = _getTangentCircle2.theta;\n var outerArcAngle = cornerIsExternal ? Math.abs(startAngle - endAngle) : Math.abs(startAngle - endAngle) - sot - eot;\n if (outerArcAngle < 0) {\n if (forceCornerRadius) {\n return \"M \".concat(solt.x, \",\").concat(solt.y, \"\\n a\").concat(cornerRadius, \",\").concat(cornerRadius, \",0,0,1,\").concat(cornerRadius * 2, \",0\\n a\").concat(cornerRadius, \",\").concat(cornerRadius, \",0,0,1,\").concat(-cornerRadius * 2, \",0\\n \");\n }\n return getSectorPath({\n cx: cx,\n cy: cy,\n innerRadius: innerRadius,\n outerRadius: outerRadius,\n startAngle: startAngle,\n endAngle: endAngle\n });\n }\n var path = \"M \".concat(solt.x, \",\").concat(solt.y, \"\\n A\").concat(cornerRadius, \",\").concat(cornerRadius, \",0,0,\").concat(+(sign < 0), \",\").concat(soct.x, \",\").concat(soct.y, \"\\n A\").concat(outerRadius, \",\").concat(outerRadius, \",0,\").concat(+(outerArcAngle > 180), \",\").concat(+(sign < 0), \",\").concat(eoct.x, \",\").concat(eoct.y, \"\\n A\").concat(cornerRadius, \",\").concat(cornerRadius, \",0,0,\").concat(+(sign < 0), \",\").concat(eolt.x, \",\").concat(eolt.y, \"\\n \");\n if (innerRadius > 0) {\n var _getTangentCircle3 = getTangentCircle({\n cx: cx,\n cy: cy,\n radius: innerRadius,\n angle: startAngle,\n sign: sign,\n isExternal: true,\n cornerRadius: cornerRadius,\n cornerIsExternal: cornerIsExternal\n }),\n sict = _getTangentCircle3.circleTangency,\n silt = _getTangentCircle3.lineTangency,\n sit = _getTangentCircle3.theta;\n var _getTangentCircle4 = getTangentCircle({\n cx: cx,\n cy: cy,\n radius: innerRadius,\n angle: endAngle,\n sign: -sign,\n isExternal: true,\n cornerRadius: cornerRadius,\n cornerIsExternal: cornerIsExternal\n }),\n eict = _getTangentCircle4.circleTangency,\n eilt = _getTangentCircle4.lineTangency,\n eit = _getTangentCircle4.theta;\n var innerArcAngle = cornerIsExternal ? Math.abs(startAngle - endAngle) : Math.abs(startAngle - endAngle) - sit - eit;\n if (innerArcAngle < 0 && cornerRadius === 0) {\n return \"\".concat(path, \"L\").concat(cx, \",\").concat(cy, \"Z\");\n }\n path += \"L\".concat(eilt.x, \",\").concat(eilt.y, \"\\n A\").concat(cornerRadius, \",\").concat(cornerRadius, \",0,0,\").concat(+(sign < 0), \",\").concat(eict.x, \",\").concat(eict.y, \"\\n A\").concat(innerRadius, \",\").concat(innerRadius, \",0,\").concat(+(innerArcAngle > 180), \",\").concat(+(sign > 0), \",\").concat(sict.x, \",\").concat(sict.y, \"\\n A\").concat(cornerRadius, \",\").concat(cornerRadius, \",0,0,\").concat(+(sign < 0), \",\").concat(silt.x, \",\").concat(silt.y, \"Z\");\n } else {\n path += \"L\".concat(cx, \",\").concat(cy, \"Z\");\n }\n return path;\n};\nvar defaultProps = {\n cx: 0,\n cy: 0,\n innerRadius: 0,\n outerRadius: 0,\n startAngle: 0,\n endAngle: 0,\n cornerRadius: 0,\n forceCornerRadius: false,\n cornerIsExternal: false\n};\nexport var Sector = function Sector(sectorProps) {\n var props = _objectSpread(_objectSpread({}, defaultProps), sectorProps);\n var cx = props.cx,\n cy = props.cy,\n innerRadius = props.innerRadius,\n outerRadius = props.outerRadius,\n cornerRadius = props.cornerRadius,\n forceCornerRadius = props.forceCornerRadius,\n cornerIsExternal = props.cornerIsExternal,\n startAngle = props.startAngle,\n endAngle = props.endAngle,\n className = props.className;\n if (outerRadius < innerRadius || startAngle === endAngle) {\n return null;\n }\n var layerClass = clsx('recharts-sector', className);\n var deltaRadius = outerRadius - innerRadius;\n var cr = getPercentValue(cornerRadius, deltaRadius, 0, true);\n var path;\n if (cr > 0 && Math.abs(startAngle - endAngle) < 360) {\n path = getSectorWithCorner({\n cx: cx,\n cy: cy,\n innerRadius: innerRadius,\n outerRadius: outerRadius,\n cornerRadius: Math.min(cr, deltaRadius / 2),\n forceCornerRadius: forceCornerRadius,\n cornerIsExternal: cornerIsExternal,\n startAngle: startAngle,\n endAngle: endAngle\n });\n } else {\n path = getSectorPath({\n cx: cx,\n cy: cy,\n innerRadius: innerRadius,\n outerRadius: outerRadius,\n startAngle: startAngle,\n endAngle: endAngle\n });\n }\n return /*#__PURE__*/React.createElement(\"path\", _extends({}, filterProps(props, true), {\n className: layerClass,\n d: path,\n role: \"img\"\n }));\n};","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nvar _excluded = [\"valueAccessor\"],\n _excluded2 = [\"data\", \"dataKey\", \"clockWise\", \"id\", \"textBreakAll\"];\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : String(i); }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport React, { cloneElement } from 'react';\nimport isNil from 'lodash/isNil';\nimport isObject from 'lodash/isObject';\nimport isFunction from 'lodash/isFunction';\nimport last from 'lodash/last';\nimport { Label } from './Label';\nimport { Layer } from '../container/Layer';\nimport { findAllByType, filterProps } from '../util/ReactUtils';\nimport { getValueByDataKey } from '../util/ChartUtils';\nvar defaultAccessor = function defaultAccessor(entry) {\n return Array.isArray(entry.value) ? last(entry.value) : entry.value;\n};\nexport function LabelList(_ref) {\n var _ref$valueAccessor = _ref.valueAccessor,\n valueAccessor = _ref$valueAccessor === void 0 ? defaultAccessor : _ref$valueAccessor,\n restProps = _objectWithoutProperties(_ref, _excluded);\n var data = restProps.data,\n dataKey = restProps.dataKey,\n clockWise = restProps.clockWise,\n id = restProps.id,\n textBreakAll = restProps.textBreakAll,\n others = _objectWithoutProperties(restProps, _excluded2);\n if (!data || !data.length) {\n return null;\n }\n return /*#__PURE__*/React.createElement(Layer, {\n className: \"recharts-label-list\"\n }, data.map(function (entry, index) {\n var value = isNil(dataKey) ? valueAccessor(entry, index) : getValueByDataKey(entry && entry.payload, dataKey);\n var idProps = isNil(id) ? {} : {\n id: \"\".concat(id, \"-\").concat(index)\n };\n return /*#__PURE__*/React.createElement(Label, _extends({}, filterProps(entry, true), others, idProps, {\n parentViewBox: entry.parentViewBox,\n value: value,\n textBreakAll: textBreakAll,\n viewBox: Label.parseViewBox(isNil(clockWise) ? entry : _objectSpread(_objectSpread({}, entry), {}, {\n clockWise: clockWise\n })),\n key: \"label-\".concat(index) // eslint-disable-line react/no-array-index-key\n ,\n index: index\n }));\n }));\n}\nLabelList.displayName = 'LabelList';\nfunction parseLabelList(label, data) {\n if (!label) {\n return null;\n }\n if (label === true) {\n return /*#__PURE__*/React.createElement(LabelList, {\n key: \"labelList-implicit\",\n data: data\n });\n }\n if ( /*#__PURE__*/React.isValidElement(label) || isFunction(label)) {\n return /*#__PURE__*/React.createElement(LabelList, {\n key: \"labelList-implicit\",\n data: data,\n content: label\n });\n }\n if (isObject(label)) {\n return /*#__PURE__*/React.createElement(LabelList, _extends({\n data: data\n }, label, {\n key: \"labelList-implicit\"\n }));\n }\n return null;\n}\nfunction renderCallByParent(parentProps, data) {\n var checkPropsLabel = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n if (!parentProps || !parentProps.children && checkPropsLabel && !parentProps.label) {\n return null;\n }\n var children = parentProps.children;\n var explicitChildren = findAllByType(children, LabelList).map(function (child, index) {\n return /*#__PURE__*/cloneElement(child, {\n data: data,\n // eslint-disable-next-line react/no-array-index-key\n key: \"labelList-\".concat(index)\n });\n });\n if (!checkPropsLabel) {\n return explicitChildren;\n }\n var implicitLabelList = parseLabelList(parentProps.label, data);\n return [implicitLabelList].concat(_toConsumableArray(explicitChildren));\n}\nLabelList.renderCallByParent = renderCallByParent;","/**\n * @fileOverview Cross\n */\n\nexport var Cell = function Cell(_props) {\n return null;\n};\nCell.displayName = 'Cell';","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"as\", \"disabled\", \"onKeyDown\"];\nimport React from 'react';\nimport createChainedFunction from './createChainedFunction';\n\nfunction isTrivialHref(href) {\n return !href || href.trim() === '#';\n}\n/**\n * There are situations due to browser quirks or Bootstrap CSS where\n * an anchor tag is needed, when semantically a button tag is the\n * better choice. SafeAnchor ensures that when an anchor is used like a\n * button its accessible. It also emulates input `disabled` behavior for\n * links, which is usually desirable for Buttons, NavItems, DropdownItems, etc.\n */\n\n\nvar SafeAnchor = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'a' : _ref$as,\n disabled = _ref.disabled,\n onKeyDown = _ref.onKeyDown,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var handleClick = function handleClick(event) {\n var href = props.href,\n onClick = props.onClick;\n\n if (disabled || isTrivialHref(href)) {\n event.preventDefault();\n }\n\n if (disabled) {\n event.stopPropagation();\n return;\n }\n\n if (onClick) {\n onClick(event);\n }\n };\n\n var handleKeyDown = function handleKeyDown(event) {\n if (event.key === ' ') {\n event.preventDefault();\n handleClick(event);\n }\n };\n\n if (isTrivialHref(props.href)) {\n props.role = props.role || 'button'; // we want to make sure there is a href attribute on the node\n // otherwise, the cursor incorrectly styled (except with role='button')\n\n props.href = props.href || '#';\n }\n\n if (disabled) {\n props.tabIndex = -1;\n props['aria-disabled'] = true;\n }\n\n return /*#__PURE__*/React.createElement(Component, _extends({\n ref: ref\n }, props, {\n onClick: handleClick,\n onKeyDown: createChainedFunction(handleKeyDown, onKeyDown)\n }));\n});\nSafeAnchor.displayName = 'SafeAnchor';\nexport default SafeAnchor;","import React from 'react'; // TODO: check this\n\nvar NavContext = /*#__PURE__*/React.createContext(null);\nNavContext.displayName = 'NavContext';\nexport default NavContext;","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : String(i); }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nvar PREFIX_LIST = ['Webkit', 'Moz', 'O', 'ms'];\nexport var generatePrefixStyle = function generatePrefixStyle(name, value) {\n if (!name) {\n return null;\n }\n var camelName = name.replace(/(\\w)/, function (v) {\n return v.toUpperCase();\n });\n var result = PREFIX_LIST.reduce(function (res, entry) {\n return _objectSpread(_objectSpread({}, res), {}, _defineProperty({}, entry + camelName, value));\n }, {});\n result[name] = value;\n return result;\n};","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : String(i); }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/**\n * @fileOverview Brush\n */\nimport React, { PureComponent, Children } from 'react';\nimport clsx from 'clsx';\nimport { scalePoint } from 'victory-vendor/d3-scale';\nimport isFunction from 'lodash/isFunction';\nimport range from 'lodash/range';\nimport { Layer } from '../container/Layer';\nimport { Text } from '../component/Text';\nimport { getValueByDataKey } from '../util/ChartUtils';\nimport { isNumber } from '../util/DataUtils';\nimport { generatePrefixStyle } from '../util/CssPrefixUtils';\nimport { filterProps } from '../util/ReactUtils';\nvar createScale = function createScale(_ref) {\n var data = _ref.data,\n startIndex = _ref.startIndex,\n endIndex = _ref.endIndex,\n x = _ref.x,\n width = _ref.width,\n travellerWidth = _ref.travellerWidth;\n if (!data || !data.length) {\n return {};\n }\n var len = data.length;\n var scale = scalePoint().domain(range(0, len)).range([x, x + width - travellerWidth]);\n var scaleValues = scale.domain().map(function (entry) {\n return scale(entry);\n });\n return {\n isTextActive: false,\n isSlideMoving: false,\n isTravellerMoving: false,\n isTravellerFocused: false,\n startX: scale(startIndex),\n endX: scale(endIndex),\n scale: scale,\n scaleValues: scaleValues\n };\n};\nvar isTouch = function isTouch(e) {\n return e.changedTouches && !!e.changedTouches.length;\n};\nexport var Brush = /*#__PURE__*/function (_PureComponent) {\n _inherits(Brush, _PureComponent);\n function Brush(props) {\n var _this;\n _classCallCheck(this, Brush);\n _this = _callSuper(this, Brush, [props]);\n _defineProperty(_assertThisInitialized(_this), \"handleDrag\", function (e) {\n if (_this.leaveTimer) {\n clearTimeout(_this.leaveTimer);\n _this.leaveTimer = null;\n }\n if (_this.state.isTravellerMoving) {\n _this.handleTravellerMove(e);\n } else if (_this.state.isSlideMoving) {\n _this.handleSlideDrag(e);\n }\n });\n _defineProperty(_assertThisInitialized(_this), \"handleTouchMove\", function (e) {\n if (e.changedTouches != null && e.changedTouches.length > 0) {\n _this.handleDrag(e.changedTouches[0]);\n }\n });\n _defineProperty(_assertThisInitialized(_this), \"handleDragEnd\", function () {\n _this.setState({\n isTravellerMoving: false,\n isSlideMoving: false\n }, function () {\n var _this$props = _this.props,\n endIndex = _this$props.endIndex,\n onDragEnd = _this$props.onDragEnd,\n startIndex = _this$props.startIndex;\n onDragEnd === null || onDragEnd === void 0 || onDragEnd({\n endIndex: endIndex,\n startIndex: startIndex\n });\n });\n _this.detachDragEndListener();\n });\n _defineProperty(_assertThisInitialized(_this), \"handleLeaveWrapper\", function () {\n if (_this.state.isTravellerMoving || _this.state.isSlideMoving) {\n _this.leaveTimer = window.setTimeout(_this.handleDragEnd, _this.props.leaveTimeOut);\n }\n });\n _defineProperty(_assertThisInitialized(_this), \"handleEnterSlideOrTraveller\", function () {\n _this.setState({\n isTextActive: true\n });\n });\n _defineProperty(_assertThisInitialized(_this), \"handleLeaveSlideOrTraveller\", function () {\n _this.setState({\n isTextActive: false\n });\n });\n _defineProperty(_assertThisInitialized(_this), \"handleSlideDragStart\", function (e) {\n var event = isTouch(e) ? e.changedTouches[0] : e;\n _this.setState({\n isTravellerMoving: false,\n isSlideMoving: true,\n slideMoveStartX: event.pageX\n });\n _this.attachDragEndListener();\n });\n _this.travellerDragStartHandlers = {\n startX: _this.handleTravellerDragStart.bind(_assertThisInitialized(_this), 'startX'),\n endX: _this.handleTravellerDragStart.bind(_assertThisInitialized(_this), 'endX')\n };\n _this.state = {};\n return _this;\n }\n _createClass(Brush, [{\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n if (this.leaveTimer) {\n clearTimeout(this.leaveTimer);\n this.leaveTimer = null;\n }\n this.detachDragEndListener();\n }\n }, {\n key: \"getIndex\",\n value: function getIndex(_ref2) {\n var startX = _ref2.startX,\n endX = _ref2.endX;\n var scaleValues = this.state.scaleValues;\n var _this$props2 = this.props,\n gap = _this$props2.gap,\n data = _this$props2.data;\n var lastIndex = data.length - 1;\n var min = Math.min(startX, endX);\n var max = Math.max(startX, endX);\n var minIndex = Brush.getIndexInRange(scaleValues, min);\n var maxIndex = Brush.getIndexInRange(scaleValues, max);\n return {\n startIndex: minIndex - minIndex % gap,\n endIndex: maxIndex === lastIndex ? lastIndex : maxIndex - maxIndex % gap\n };\n }\n }, {\n key: \"getTextOfTick\",\n value: function getTextOfTick(index) {\n var _this$props3 = this.props,\n data = _this$props3.data,\n tickFormatter = _this$props3.tickFormatter,\n dataKey = _this$props3.dataKey;\n var text = getValueByDataKey(data[index], dataKey, index);\n return isFunction(tickFormatter) ? tickFormatter(text, index) : text;\n }\n }, {\n key: \"attachDragEndListener\",\n value: function attachDragEndListener() {\n window.addEventListener('mouseup', this.handleDragEnd, true);\n window.addEventListener('touchend', this.handleDragEnd, true);\n window.addEventListener('mousemove', this.handleDrag, true);\n }\n }, {\n key: \"detachDragEndListener\",\n value: function detachDragEndListener() {\n window.removeEventListener('mouseup', this.handleDragEnd, true);\n window.removeEventListener('touchend', this.handleDragEnd, true);\n window.removeEventListener('mousemove', this.handleDrag, true);\n }\n }, {\n key: \"handleSlideDrag\",\n value: function handleSlideDrag(e) {\n var _this$state = this.state,\n slideMoveStartX = _this$state.slideMoveStartX,\n startX = _this$state.startX,\n endX = _this$state.endX;\n var _this$props4 = this.props,\n x = _this$props4.x,\n width = _this$props4.width,\n travellerWidth = _this$props4.travellerWidth,\n startIndex = _this$props4.startIndex,\n endIndex = _this$props4.endIndex,\n onChange = _this$props4.onChange;\n var delta = e.pageX - slideMoveStartX;\n if (delta > 0) {\n delta = Math.min(delta, x + width - travellerWidth - endX, x + width - travellerWidth - startX);\n } else if (delta < 0) {\n delta = Math.max(delta, x - startX, x - endX);\n }\n var newIndex = this.getIndex({\n startX: startX + delta,\n endX: endX + delta\n });\n if ((newIndex.startIndex !== startIndex || newIndex.endIndex !== endIndex) && onChange) {\n onChange(newIndex);\n }\n this.setState({\n startX: startX + delta,\n endX: endX + delta,\n slideMoveStartX: e.pageX\n });\n }\n }, {\n key: \"handleTravellerDragStart\",\n value: function handleTravellerDragStart(id, e) {\n var event = isTouch(e) ? e.changedTouches[0] : e;\n this.setState({\n isSlideMoving: false,\n isTravellerMoving: true,\n movingTravellerId: id,\n brushMoveStartX: event.pageX\n });\n this.attachDragEndListener();\n }\n }, {\n key: \"handleTravellerMove\",\n value: function handleTravellerMove(e) {\n var _this$state2 = this.state,\n brushMoveStartX = _this$state2.brushMoveStartX,\n movingTravellerId = _this$state2.movingTravellerId,\n endX = _this$state2.endX,\n startX = _this$state2.startX;\n var prevValue = this.state[movingTravellerId];\n var _this$props5 = this.props,\n x = _this$props5.x,\n width = _this$props5.width,\n travellerWidth = _this$props5.travellerWidth,\n onChange = _this$props5.onChange,\n gap = _this$props5.gap,\n data = _this$props5.data;\n var params = {\n startX: this.state.startX,\n endX: this.state.endX\n };\n var delta = e.pageX - brushMoveStartX;\n if (delta > 0) {\n delta = Math.min(delta, x + width - travellerWidth - prevValue);\n } else if (delta < 0) {\n delta = Math.max(delta, x - prevValue);\n }\n params[movingTravellerId] = prevValue + delta;\n var newIndex = this.getIndex(params);\n var startIndex = newIndex.startIndex,\n endIndex = newIndex.endIndex;\n var isFullGap = function isFullGap() {\n var lastIndex = data.length - 1;\n if (movingTravellerId === 'startX' && (endX > startX ? startIndex % gap === 0 : endIndex % gap === 0) || endX < startX && endIndex === lastIndex || movingTravellerId === 'endX' && (endX > startX ? endIndex % gap === 0 : startIndex % gap === 0) || endX > startX && endIndex === lastIndex) {\n return true;\n }\n return false;\n };\n this.setState(_defineProperty(_defineProperty({}, movingTravellerId, prevValue + delta), \"brushMoveStartX\", e.pageX), function () {\n if (onChange) {\n if (isFullGap()) {\n onChange(newIndex);\n }\n }\n });\n }\n }, {\n key: \"handleTravellerMoveKeyboard\",\n value: function handleTravellerMoveKeyboard(direction, id) {\n var _this2 = this;\n // scaleValues are a list of coordinates. For example: [65, 250, 435, 620, 805, 990].\n var _this$state3 = this.state,\n scaleValues = _this$state3.scaleValues,\n startX = _this$state3.startX,\n endX = _this$state3.endX;\n // currentScaleValue refers to which coordinate the current traveller should be placed at.\n var currentScaleValue = this.state[id];\n var currentIndex = scaleValues.indexOf(currentScaleValue);\n if (currentIndex === -1) {\n return;\n }\n var newIndex = currentIndex + direction;\n if (newIndex === -1 || newIndex >= scaleValues.length) {\n return;\n }\n var newScaleValue = scaleValues[newIndex];\n\n // Prevent travellers from being on top of each other or overlapping\n if (id === 'startX' && newScaleValue >= endX || id === 'endX' && newScaleValue <= startX) {\n return;\n }\n this.setState(_defineProperty({}, id, newScaleValue), function () {\n _this2.props.onChange(_this2.getIndex({\n startX: _this2.state.startX,\n endX: _this2.state.endX\n }));\n });\n }\n }, {\n key: \"renderBackground\",\n value: function renderBackground() {\n var _this$props6 = this.props,\n x = _this$props6.x,\n y = _this$props6.y,\n width = _this$props6.width,\n height = _this$props6.height,\n fill = _this$props6.fill,\n stroke = _this$props6.stroke;\n return /*#__PURE__*/React.createElement(\"rect\", {\n stroke: stroke,\n fill: fill,\n x: x,\n y: y,\n width: width,\n height: height\n });\n }\n }, {\n key: \"renderPanorama\",\n value: function renderPanorama() {\n var _this$props7 = this.props,\n x = _this$props7.x,\n y = _this$props7.y,\n width = _this$props7.width,\n height = _this$props7.height,\n data = _this$props7.data,\n children = _this$props7.children,\n padding = _this$props7.padding;\n var chartElement = Children.only(children);\n if (!chartElement) {\n return null;\n }\n return /*#__PURE__*/React.cloneElement(chartElement, {\n x: x,\n y: y,\n width: width,\n height: height,\n margin: padding,\n compact: true,\n data: data\n });\n }\n }, {\n key: \"renderTravellerLayer\",\n value: function renderTravellerLayer(travellerX, id) {\n var _data$startIndex,\n _data$endIndex,\n _this3 = this;\n var _this$props8 = this.props,\n y = _this$props8.y,\n travellerWidth = _this$props8.travellerWidth,\n height = _this$props8.height,\n traveller = _this$props8.traveller,\n ariaLabel = _this$props8.ariaLabel,\n data = _this$props8.data,\n startIndex = _this$props8.startIndex,\n endIndex = _this$props8.endIndex;\n var x = Math.max(travellerX, this.props.x);\n var travellerProps = _objectSpread(_objectSpread({}, filterProps(this.props, false)), {}, {\n x: x,\n y: y,\n width: travellerWidth,\n height: height\n });\n var ariaLabelBrush = ariaLabel || \"Min value: \".concat((_data$startIndex = data[startIndex]) === null || _data$startIndex === void 0 ? void 0 : _data$startIndex.name, \", Max value: \").concat((_data$endIndex = data[endIndex]) === null || _data$endIndex === void 0 ? void 0 : _data$endIndex.name);\n return /*#__PURE__*/React.createElement(Layer, {\n tabIndex: 0,\n role: \"slider\",\n \"aria-label\": ariaLabelBrush,\n \"aria-valuenow\": travellerX,\n className: \"recharts-brush-traveller\",\n onMouseEnter: this.handleEnterSlideOrTraveller,\n onMouseLeave: this.handleLeaveSlideOrTraveller,\n onMouseDown: this.travellerDragStartHandlers[id],\n onTouchStart: this.travellerDragStartHandlers[id],\n onKeyDown: function onKeyDown(e) {\n if (!['ArrowLeft', 'ArrowRight'].includes(e.key)) {\n return;\n }\n e.preventDefault();\n e.stopPropagation();\n _this3.handleTravellerMoveKeyboard(e.key === 'ArrowRight' ? 1 : -1, id);\n },\n onFocus: function onFocus() {\n _this3.setState({\n isTravellerFocused: true\n });\n },\n onBlur: function onBlur() {\n _this3.setState({\n isTravellerFocused: false\n });\n },\n style: {\n cursor: 'col-resize'\n }\n }, Brush.renderTraveller(traveller, travellerProps));\n }\n }, {\n key: \"renderSlide\",\n value: function renderSlide(startX, endX) {\n var _this$props9 = this.props,\n y = _this$props9.y,\n height = _this$props9.height,\n stroke = _this$props9.stroke,\n travellerWidth = _this$props9.travellerWidth;\n var x = Math.min(startX, endX) + travellerWidth;\n var width = Math.max(Math.abs(endX - startX) - travellerWidth, 0);\n return /*#__PURE__*/React.createElement(\"rect\", {\n className: \"recharts-brush-slide\",\n onMouseEnter: this.handleEnterSlideOrTraveller,\n onMouseLeave: this.handleLeaveSlideOrTraveller,\n onMouseDown: this.handleSlideDragStart,\n onTouchStart: this.handleSlideDragStart,\n style: {\n cursor: 'move'\n },\n stroke: \"none\",\n fill: stroke,\n fillOpacity: 0.2,\n x: x,\n y: y,\n width: width,\n height: height\n });\n }\n }, {\n key: \"renderText\",\n value: function renderText() {\n var _this$props10 = this.props,\n startIndex = _this$props10.startIndex,\n endIndex = _this$props10.endIndex,\n y = _this$props10.y,\n height = _this$props10.height,\n travellerWidth = _this$props10.travellerWidth,\n stroke = _this$props10.stroke;\n var _this$state4 = this.state,\n startX = _this$state4.startX,\n endX = _this$state4.endX;\n var offset = 5;\n var attrs = {\n pointerEvents: 'none',\n fill: stroke\n };\n return /*#__PURE__*/React.createElement(Layer, {\n className: \"recharts-brush-texts\"\n }, /*#__PURE__*/React.createElement(Text, _extends({\n textAnchor: \"end\",\n verticalAnchor: \"middle\",\n x: Math.min(startX, endX) - offset,\n y: y + height / 2\n }, attrs), this.getTextOfTick(startIndex)), /*#__PURE__*/React.createElement(Text, _extends({\n textAnchor: \"start\",\n verticalAnchor: \"middle\",\n x: Math.max(startX, endX) + travellerWidth + offset,\n y: y + height / 2\n }, attrs), this.getTextOfTick(endIndex)));\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props11 = this.props,\n data = _this$props11.data,\n className = _this$props11.className,\n children = _this$props11.children,\n x = _this$props11.x,\n y = _this$props11.y,\n width = _this$props11.width,\n height = _this$props11.height,\n alwaysShowText = _this$props11.alwaysShowText;\n var _this$state5 = this.state,\n startX = _this$state5.startX,\n endX = _this$state5.endX,\n isTextActive = _this$state5.isTextActive,\n isSlideMoving = _this$state5.isSlideMoving,\n isTravellerMoving = _this$state5.isTravellerMoving,\n isTravellerFocused = _this$state5.isTravellerFocused;\n if (!data || !data.length || !isNumber(x) || !isNumber(y) || !isNumber(width) || !isNumber(height) || width <= 0 || height <= 0) {\n return null;\n }\n var layerClass = clsx('recharts-brush', className);\n var isPanoramic = React.Children.count(children) === 1;\n var style = generatePrefixStyle('userSelect', 'none');\n return /*#__PURE__*/React.createElement(Layer, {\n className: layerClass,\n onMouseLeave: this.handleLeaveWrapper,\n onTouchMove: this.handleTouchMove,\n style: style\n }, this.renderBackground(), isPanoramic && this.renderPanorama(), this.renderSlide(startX, endX), this.renderTravellerLayer(startX, 'startX'), this.renderTravellerLayer(endX, 'endX'), (isTextActive || isSlideMoving || isTravellerMoving || isTravellerFocused || alwaysShowText) && this.renderText());\n }\n }], [{\n key: \"renderDefaultTraveller\",\n value: function renderDefaultTraveller(props) {\n var x = props.x,\n y = props.y,\n width = props.width,\n height = props.height,\n stroke = props.stroke;\n var lineY = Math.floor(y + height / 2) - 1;\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"rect\", {\n x: x,\n y: y,\n width: width,\n height: height,\n fill: stroke,\n stroke: \"none\"\n }), /*#__PURE__*/React.createElement(\"line\", {\n x1: x + 1,\n y1: lineY,\n x2: x + width - 1,\n y2: lineY,\n fill: \"none\",\n stroke: \"#fff\"\n }), /*#__PURE__*/React.createElement(\"line\", {\n x1: x + 1,\n y1: lineY + 2,\n x2: x + width - 1,\n y2: lineY + 2,\n fill: \"none\",\n stroke: \"#fff\"\n }));\n }\n }, {\n key: \"renderTraveller\",\n value: function renderTraveller(option, props) {\n var rectangle;\n if ( /*#__PURE__*/React.isValidElement(option)) {\n rectangle = /*#__PURE__*/React.cloneElement(option, props);\n } else if (isFunction(option)) {\n rectangle = option(props);\n } else {\n rectangle = Brush.renderDefaultTraveller(props);\n }\n return rectangle;\n }\n }, {\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(nextProps, prevState) {\n var data = nextProps.data,\n width = nextProps.width,\n x = nextProps.x,\n travellerWidth = nextProps.travellerWidth,\n updateId = nextProps.updateId,\n startIndex = nextProps.startIndex,\n endIndex = nextProps.endIndex;\n if (data !== prevState.prevData || updateId !== prevState.prevUpdateId) {\n return _objectSpread({\n prevData: data,\n prevTravellerWidth: travellerWidth,\n prevUpdateId: updateId,\n prevX: x,\n prevWidth: width\n }, data && data.length ? createScale({\n data: data,\n width: width,\n x: x,\n travellerWidth: travellerWidth,\n startIndex: startIndex,\n endIndex: endIndex\n }) : {\n scale: null,\n scaleValues: null\n });\n }\n if (prevState.scale && (width !== prevState.prevWidth || x !== prevState.prevX || travellerWidth !== prevState.prevTravellerWidth)) {\n prevState.scale.range([x, x + width - travellerWidth]);\n var scaleValues = prevState.scale.domain().map(function (entry) {\n return prevState.scale(entry);\n });\n return {\n prevData: data,\n prevTravellerWidth: travellerWidth,\n prevUpdateId: updateId,\n prevX: x,\n prevWidth: width,\n startX: prevState.scale(nextProps.startIndex),\n endX: prevState.scale(nextProps.endIndex),\n scaleValues: scaleValues\n };\n }\n return null;\n }\n }, {\n key: \"getIndexInRange\",\n value: function getIndexInRange(valueRange, x) {\n var len = valueRange.length;\n var start = 0;\n var end = len - 1;\n while (end - start > 1) {\n var middle = Math.floor((start + end) / 2);\n if (valueRange[middle] > x) {\n end = middle;\n } else {\n start = middle;\n }\n }\n return x >= valueRange[end] ? end : start;\n }\n }]);\n return Brush;\n}(PureComponent);\n_defineProperty(Brush, \"displayName\", 'Brush');\n_defineProperty(Brush, \"defaultProps\", {\n height: 40,\n travellerWidth: 5,\n gap: 1,\n fill: '#fff',\n stroke: '#666',\n padding: {\n top: 1,\n right: 1,\n bottom: 1,\n left: 1\n },\n leaveTimeOut: 1000,\n alwaysShowText: false\n});","export var ifOverflowMatches = function ifOverflowMatches(props, value) {\n var alwaysShow = props.alwaysShow;\n var ifOverflow = props.ifOverflow;\n if (alwaysShow) {\n ifOverflow = 'extendDomain';\n }\n return ifOverflow === value;\n};","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : String(i); }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/**\n * @fileOverview Reference Dot\n */\nimport React from 'react';\nimport isFunction from 'lodash/isFunction';\nimport clsx from 'clsx';\nimport { Layer } from '../container/Layer';\nimport { Dot } from '../shape/Dot';\nimport { Label } from '../component/Label';\nimport { isNumOrStr } from '../util/DataUtils';\nimport { ifOverflowMatches } from '../util/IfOverflowMatches';\nimport { createLabeledScales } from '../util/CartesianUtils';\nimport { warn } from '../util/LogUtils';\nimport { filterProps } from '../util/ReactUtils';\nvar getCoordinate = function getCoordinate(props) {\n var x = props.x,\n y = props.y,\n xAxis = props.xAxis,\n yAxis = props.yAxis;\n var scales = createLabeledScales({\n x: xAxis.scale,\n y: yAxis.scale\n });\n var result = scales.apply({\n x: x,\n y: y\n }, {\n bandAware: true\n });\n if (ifOverflowMatches(props, 'discard') && !scales.isInRange(result)) {\n return null;\n }\n return result;\n};\nexport function ReferenceDot(props) {\n var x = props.x,\n y = props.y,\n r = props.r,\n alwaysShow = props.alwaysShow,\n clipPathId = props.clipPathId;\n var isX = isNumOrStr(x);\n var isY = isNumOrStr(y);\n warn(alwaysShow === undefined, 'The alwaysShow prop is deprecated. Please use ifOverflow=\"extendDomain\" instead.');\n if (!isX || !isY) {\n return null;\n }\n var coordinate = getCoordinate(props);\n if (!coordinate) {\n return null;\n }\n var cx = coordinate.x,\n cy = coordinate.y;\n var shape = props.shape,\n className = props.className;\n var clipPath = ifOverflowMatches(props, 'hidden') ? \"url(#\".concat(clipPathId, \")\") : undefined;\n var dotProps = _objectSpread(_objectSpread({\n clipPath: clipPath\n }, filterProps(props, true)), {}, {\n cx: cx,\n cy: cy\n });\n return /*#__PURE__*/React.createElement(Layer, {\n className: clsx('recharts-reference-dot', className)\n }, ReferenceDot.renderDot(shape, dotProps), Label.renderCallByParent(props, {\n x: cx - r,\n y: cy - r,\n width: 2 * r,\n height: 2 * r\n }));\n}\nReferenceDot.displayName = 'ReferenceDot';\nReferenceDot.defaultProps = {\n isFront: false,\n ifOverflow: 'discard',\n xAxisId: 0,\n yAxisId: 0,\n r: 10,\n fill: '#fff',\n stroke: '#ccc',\n fillOpacity: 1,\n strokeWidth: 1\n};\nReferenceDot.renderDot = function (option, props) {\n var dot;\n if ( /*#__PURE__*/React.isValidElement(option)) {\n dot = /*#__PURE__*/React.cloneElement(option, props);\n } else if (isFunction(option)) {\n dot = option(props);\n } else {\n dot = /*#__PURE__*/React.createElement(Dot, _extends({}, props, {\n cx: props.cx,\n cy: props.cy,\n className: \"recharts-reference-dot-dot\"\n }));\n }\n return dot;\n};","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : String(i); }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n/**\n * @fileOverview Reference Line\n */\nimport React from 'react';\nimport isFunction from 'lodash/isFunction';\nimport some from 'lodash/some';\nimport clsx from 'clsx';\nimport { Layer } from '../container/Layer';\nimport { Label } from '../component/Label';\nimport { ifOverflowMatches } from '../util/IfOverflowMatches';\nimport { isNumOrStr } from '../util/DataUtils';\nimport { createLabeledScales, rectWithCoords } from '../util/CartesianUtils';\nimport { warn } from '../util/LogUtils';\nimport { filterProps } from '../util/ReactUtils';\nimport { useClipPathId, useViewBox, useXAxisOrThrow, useYAxisOrThrow } from '../context/chartLayoutContext';\n\n/**\n * This excludes `viewBox` prop from svg for two reasons:\n * 1. The components wants viewBox of object type, and svg wants string\n * - so there's a conflict, and the component will throw if it gets string\n * 2. Internally the component calls `filterProps` which filters the viewBox away anyway\n */\n\nvar renderLine = function renderLine(option, props) {\n var line;\n if ( /*#__PURE__*/React.isValidElement(option)) {\n line = /*#__PURE__*/React.cloneElement(option, props);\n } else if (isFunction(option)) {\n line = option(props);\n } else {\n line = /*#__PURE__*/React.createElement(\"line\", _extends({}, props, {\n className: \"recharts-reference-line-line\"\n }));\n }\n return line;\n};\n// TODO: ScaleHelper\nexport var getEndPoints = function getEndPoints(scales, isFixedX, isFixedY, isSegment, viewBox, position, xAxisOrientation, yAxisOrientation, props) {\n var x = viewBox.x,\n y = viewBox.y,\n width = viewBox.width,\n height = viewBox.height;\n if (isFixedY) {\n var yCoord = props.y;\n var coord = scales.y.apply(yCoord, {\n position: position\n });\n if (ifOverflowMatches(props, 'discard') && !scales.y.isInRange(coord)) {\n return null;\n }\n var points = [{\n x: x + width,\n y: coord\n }, {\n x: x,\n y: coord\n }];\n return yAxisOrientation === 'left' ? points.reverse() : points;\n }\n if (isFixedX) {\n var xCoord = props.x;\n var _coord = scales.x.apply(xCoord, {\n position: position\n });\n if (ifOverflowMatches(props, 'discard') && !scales.x.isInRange(_coord)) {\n return null;\n }\n var _points = [{\n x: _coord,\n y: y + height\n }, {\n x: _coord,\n y: y\n }];\n return xAxisOrientation === 'top' ? _points.reverse() : _points;\n }\n if (isSegment) {\n var segment = props.segment;\n var _points2 = segment.map(function (p) {\n return scales.apply(p, {\n position: position\n });\n });\n if (ifOverflowMatches(props, 'discard') && some(_points2, function (p) {\n return !scales.isInRange(p);\n })) {\n return null;\n }\n return _points2;\n }\n return null;\n};\nexport function ReferenceLine(props) {\n var fixedX = props.x,\n fixedY = props.y,\n segment = props.segment,\n xAxisId = props.xAxisId,\n yAxisId = props.yAxisId,\n shape = props.shape,\n className = props.className,\n alwaysShow = props.alwaysShow;\n var clipPathId = useClipPathId();\n var xAxis = useXAxisOrThrow(xAxisId);\n var yAxis = useYAxisOrThrow(yAxisId);\n var viewBox = useViewBox();\n if (!clipPathId || !viewBox) {\n return null;\n }\n warn(alwaysShow === undefined, 'The alwaysShow prop is deprecated. Please use ifOverflow=\"extendDomain\" instead.');\n var scales = createLabeledScales({\n x: xAxis.scale,\n y: yAxis.scale\n });\n var isX = isNumOrStr(fixedX);\n var isY = isNumOrStr(fixedY);\n var isSegment = segment && segment.length === 2;\n var endPoints = getEndPoints(scales, isX, isY, isSegment, viewBox, props.position, xAxis.orientation, yAxis.orientation, props);\n if (!endPoints) {\n return null;\n }\n var _endPoints = _slicedToArray(endPoints, 2),\n _endPoints$ = _endPoints[0],\n x1 = _endPoints$.x,\n y1 = _endPoints$.y,\n _endPoints$2 = _endPoints[1],\n x2 = _endPoints$2.x,\n y2 = _endPoints$2.y;\n var clipPath = ifOverflowMatches(props, 'hidden') ? \"url(#\".concat(clipPathId, \")\") : undefined;\n var lineProps = _objectSpread(_objectSpread({\n clipPath: clipPath\n }, filterProps(props, true)), {}, {\n x1: x1,\n y1: y1,\n x2: x2,\n y2: y2\n });\n return /*#__PURE__*/React.createElement(Layer, {\n className: clsx('recharts-reference-line', className)\n }, renderLine(shape, lineProps), Label.renderCallByParent(props, rectWithCoords({\n x1: x1,\n y1: y1,\n x2: x2,\n y2: y2\n })));\n}\nReferenceLine.displayName = 'ReferenceLine';\nReferenceLine.defaultProps = {\n isFront: false,\n ifOverflow: 'discard',\n xAxisId: 0,\n yAxisId: 0,\n fill: 'none',\n stroke: '#ccc',\n fillOpacity: 1,\n strokeWidth: 1,\n position: 'middle'\n};","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : String(i); }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/**\n * @fileOverview Reference Line\n */\nimport React from 'react';\nimport isFunction from 'lodash/isFunction';\nimport clsx from 'clsx';\nimport { Layer } from '../container/Layer';\nimport { Label } from '../component/Label';\nimport { createLabeledScales, rectWithPoints } from '../util/CartesianUtils';\nimport { ifOverflowMatches } from '../util/IfOverflowMatches';\nimport { isNumOrStr } from '../util/DataUtils';\nimport { warn } from '../util/LogUtils';\nimport { Rectangle } from '../shape/Rectangle';\nimport { filterProps } from '../util/ReactUtils';\nvar getRect = function getRect(hasX1, hasX2, hasY1, hasY2, props) {\n var xValue1 = props.x1,\n xValue2 = props.x2,\n yValue1 = props.y1,\n yValue2 = props.y2,\n xAxis = props.xAxis,\n yAxis = props.yAxis;\n if (!xAxis || !yAxis) return null;\n var scales = createLabeledScales({\n x: xAxis.scale,\n y: yAxis.scale\n });\n var p1 = {\n x: hasX1 ? scales.x.apply(xValue1, {\n position: 'start'\n }) : scales.x.rangeMin,\n y: hasY1 ? scales.y.apply(yValue1, {\n position: 'start'\n }) : scales.y.rangeMin\n };\n var p2 = {\n x: hasX2 ? scales.x.apply(xValue2, {\n position: 'end'\n }) : scales.x.rangeMax,\n y: hasY2 ? scales.y.apply(yValue2, {\n position: 'end'\n }) : scales.y.rangeMax\n };\n if (ifOverflowMatches(props, 'discard') && (!scales.isInRange(p1) || !scales.isInRange(p2))) {\n return null;\n }\n return rectWithPoints(p1, p2);\n};\nexport function ReferenceArea(props) {\n var x1 = props.x1,\n x2 = props.x2,\n y1 = props.y1,\n y2 = props.y2,\n className = props.className,\n alwaysShow = props.alwaysShow,\n clipPathId = props.clipPathId;\n warn(alwaysShow === undefined, 'The alwaysShow prop is deprecated. Please use ifOverflow=\"extendDomain\" instead.');\n var hasX1 = isNumOrStr(x1);\n var hasX2 = isNumOrStr(x2);\n var hasY1 = isNumOrStr(y1);\n var hasY2 = isNumOrStr(y2);\n var shape = props.shape;\n if (!hasX1 && !hasX2 && !hasY1 && !hasY2 && !shape) {\n return null;\n }\n var rect = getRect(hasX1, hasX2, hasY1, hasY2, props);\n if (!rect && !shape) {\n return null;\n }\n var clipPath = ifOverflowMatches(props, 'hidden') ? \"url(#\".concat(clipPathId, \")\") : undefined;\n return /*#__PURE__*/React.createElement(Layer, {\n className: clsx('recharts-reference-area', className)\n }, ReferenceArea.renderRect(shape, _objectSpread(_objectSpread({\n clipPath: clipPath\n }, filterProps(props, true)), rect)), Label.renderCallByParent(props, rect));\n}\nReferenceArea.displayName = 'ReferenceArea';\nReferenceArea.defaultProps = {\n isFront: false,\n ifOverflow: 'discard',\n xAxisId: 0,\n yAxisId: 0,\n r: 10,\n fill: '#ccc',\n fillOpacity: 0.5,\n stroke: 'none',\n strokeWidth: 1\n};\nReferenceArea.renderRect = function (option, props) {\n var rect;\n if ( /*#__PURE__*/React.isValidElement(option)) {\n rect = /*#__PURE__*/React.cloneElement(option, props);\n } else if (isFunction(option)) {\n rect = option(props);\n } else {\n rect = /*#__PURE__*/React.createElement(Rectangle, _extends({}, props, {\n className: \"recharts-reference-area-rect\"\n }));\n }\n return rect;\n};","function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport { ReferenceDot } from '../cartesian/ReferenceDot';\nimport { ReferenceLine } from '../cartesian/ReferenceLine';\nimport { ReferenceArea } from '../cartesian/ReferenceArea';\nimport { ifOverflowMatches } from './IfOverflowMatches';\nimport { findAllByType } from './ReactUtils';\nimport { isNumber } from './DataUtils';\nexport var detectReferenceElementsDomain = function detectReferenceElementsDomain(children, domain, axisId, axisType, specifiedTicks) {\n var lines = findAllByType(children, ReferenceLine);\n var dots = findAllByType(children, ReferenceDot);\n var elements = [].concat(_toConsumableArray(lines), _toConsumableArray(dots));\n var areas = findAllByType(children, ReferenceArea);\n var idKey = \"\".concat(axisType, \"Id\");\n var valueKey = axisType[0];\n var finalDomain = domain;\n if (elements.length) {\n finalDomain = elements.reduce(function (result, el) {\n if (el.props[idKey] === axisId && ifOverflowMatches(el.props, 'extendDomain') && isNumber(el.props[valueKey])) {\n var value = el.props[valueKey];\n return [Math.min(result[0], value), Math.max(result[1], value)];\n }\n return result;\n }, finalDomain);\n }\n if (areas.length) {\n var key1 = \"\".concat(valueKey, \"1\");\n var key2 = \"\".concat(valueKey, \"2\");\n finalDomain = areas.reduce(function (result, el) {\n if (el.props[idKey] === axisId && ifOverflowMatches(el.props, 'extendDomain') && isNumber(el.props[key1]) && isNumber(el.props[key2])) {\n var value1 = el.props[key1];\n var value2 = el.props[key2];\n return [Math.min(result[0], value1, value2), Math.max(result[1], value1, value2)];\n }\n return result;\n }, finalDomain);\n }\n if (specifiedTicks && specifiedTicks.length) {\n finalDomain = specifiedTicks.reduce(function (result, tick) {\n if (isNumber(tick)) {\n return [Math.min(result[0], tick), Math.max(result[1], tick)];\n }\n return result;\n }, finalDomain);\n }\n return finalDomain;\n};","import EventEmitter from 'eventemitter3';\nvar eventCenter = new EventEmitter();\nexport { eventCenter };\nexport var SYNC_EVENT = 'recharts.syncMouseEvents';","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : String(i); }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nexport var AccessibilityManager = /*#__PURE__*/function () {\n function AccessibilityManager() {\n _classCallCheck(this, AccessibilityManager);\n _defineProperty(this, \"activeIndex\", 0);\n _defineProperty(this, \"coordinateList\", []);\n _defineProperty(this, \"layout\", 'horizontal');\n }\n _createClass(AccessibilityManager, [{\n key: \"setDetails\",\n value: function setDetails(_ref) {\n var _ref2;\n var _ref$coordinateList = _ref.coordinateList,\n coordinateList = _ref$coordinateList === void 0 ? null : _ref$coordinateList,\n _ref$container = _ref.container,\n container = _ref$container === void 0 ? null : _ref$container,\n _ref$layout = _ref.layout,\n layout = _ref$layout === void 0 ? null : _ref$layout,\n _ref$offset = _ref.offset,\n offset = _ref$offset === void 0 ? null : _ref$offset,\n _ref$mouseHandlerCall = _ref.mouseHandlerCallback,\n mouseHandlerCallback = _ref$mouseHandlerCall === void 0 ? null : _ref$mouseHandlerCall;\n this.coordinateList = (_ref2 = coordinateList !== null && coordinateList !== void 0 ? coordinateList : this.coordinateList) !== null && _ref2 !== void 0 ? _ref2 : [];\n this.container = container !== null && container !== void 0 ? container : this.container;\n this.layout = layout !== null && layout !== void 0 ? layout : this.layout;\n this.offset = offset !== null && offset !== void 0 ? offset : this.offset;\n this.mouseHandlerCallback = mouseHandlerCallback !== null && mouseHandlerCallback !== void 0 ? mouseHandlerCallback : this.mouseHandlerCallback;\n\n // Keep activeIndex in the bounds between 0 and the last coordinate index\n this.activeIndex = Math.min(Math.max(this.activeIndex, 0), this.coordinateList.length - 1);\n }\n }, {\n key: \"focus\",\n value: function focus() {\n this.spoofMouse();\n }\n }, {\n key: \"keyboardEvent\",\n value: function keyboardEvent(e) {\n // The AccessibilityManager relies on the Tooltip component. When tooltips suddenly stop existing,\n // it can cause errors. We use this function to check. We don't want arrow keys to be processed\n // if there are no tooltips, since that will cause unexpected behavior of users.\n if (this.coordinateList.length === 0) {\n return;\n }\n switch (e.key) {\n case 'ArrowRight':\n {\n if (this.layout !== 'horizontal') {\n return;\n }\n this.activeIndex = Math.min(this.activeIndex + 1, this.coordinateList.length - 1);\n this.spoofMouse();\n break;\n }\n case 'ArrowLeft':\n {\n if (this.layout !== 'horizontal') {\n return;\n }\n this.activeIndex = Math.max(this.activeIndex - 1, 0);\n this.spoofMouse();\n break;\n }\n default:\n {\n break;\n }\n }\n }\n }, {\n key: \"setIndex\",\n value: function setIndex(newIndex) {\n this.activeIndex = newIndex;\n }\n }, {\n key: \"spoofMouse\",\n value: function spoofMouse() {\n var _window, _window2;\n if (this.layout !== 'horizontal') {\n return;\n }\n\n // This can happen when the tooltips suddenly stop existing as children of the component\n // That update doesn't otherwise fire events, so we have to double check here.\n if (this.coordinateList.length === 0) {\n return;\n }\n var _this$container$getBo = this.container.getBoundingClientRect(),\n x = _this$container$getBo.x,\n y = _this$container$getBo.y,\n height = _this$container$getBo.height;\n var coordinate = this.coordinateList[this.activeIndex].coordinate;\n var scrollOffsetX = ((_window = window) === null || _window === void 0 ? void 0 : _window.scrollX) || 0;\n var scrollOffsetY = ((_window2 = window) === null || _window2 === void 0 ? void 0 : _window2.scrollY) || 0;\n var pageX = x + coordinate + scrollOffsetX;\n var pageY = y + this.offset.top + height / 2 + scrollOffsetY;\n this.mouseHandlerCallback({\n pageX: pageX,\n pageY: pageY\n });\n }\n }]);\n return AccessibilityManager;\n}();","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nvar _excluded = [\"x\", \"y\", \"top\", \"left\", \"width\", \"height\", \"className\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : String(i); }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n/**\n * @fileOverview Cross\n */\nimport React from 'react';\nimport clsx from 'clsx';\nimport { isNumber } from '../util/DataUtils';\nimport { filterProps } from '../util/ReactUtils';\nvar getPath = function getPath(x, y, width, height, top, left) {\n return \"M\".concat(x, \",\").concat(top, \"v\").concat(height, \"M\").concat(left, \",\").concat(y, \"h\").concat(width);\n};\nexport var Cross = function Cross(_ref) {\n var _ref$x = _ref.x,\n x = _ref$x === void 0 ? 0 : _ref$x,\n _ref$y = _ref.y,\n y = _ref$y === void 0 ? 0 : _ref$y,\n _ref$top = _ref.top,\n top = _ref$top === void 0 ? 0 : _ref$top,\n _ref$left = _ref.left,\n left = _ref$left === void 0 ? 0 : _ref$left,\n _ref$width = _ref.width,\n width = _ref$width === void 0 ? 0 : _ref$width,\n _ref$height = _ref.height,\n height = _ref$height === void 0 ? 0 : _ref$height,\n className = _ref.className,\n rest = _objectWithoutProperties(_ref, _excluded);\n var props = _objectSpread({\n x: x,\n y: y,\n top: top,\n left: left,\n width: width,\n height: height\n }, rest);\n if (!isNumber(x) || !isNumber(y) || !isNumber(width) || !isNumber(height) || !isNumber(top) || !isNumber(left)) {\n return null;\n }\n return /*#__PURE__*/React.createElement(\"path\", _extends({}, filterProps(props, true), {\n className: clsx('recharts-cross', className),\n d: getPath(x, y, width, height, top, left)\n }));\n};","import { polarToCartesian } from '../PolarUtils';\n/**\n * Only applicable for radial layouts\n * @param {Object} activeCoordinate ChartCoordinate\n * @returns {Object} RadialCursorPoints\n */\nexport function getRadialCursorPoints(activeCoordinate) {\n var cx = activeCoordinate.cx,\n cy = activeCoordinate.cy,\n radius = activeCoordinate.radius,\n startAngle = activeCoordinate.startAngle,\n endAngle = activeCoordinate.endAngle;\n var startPoint = polarToCartesian(cx, cy, radius, startAngle);\n var endPoint = polarToCartesian(cx, cy, radius, endAngle);\n return {\n points: [startPoint, endPoint],\n cx: cx,\n cy: cy,\n radius: radius,\n startAngle: startAngle,\n endAngle: endAngle\n };\n}","import { polarToCartesian } from '../PolarUtils';\nimport { getRadialCursorPoints } from './getRadialCursorPoints';\nexport function getCursorPoints(layout, activeCoordinate, offset) {\n var x1, y1, x2, y2;\n if (layout === 'horizontal') {\n x1 = activeCoordinate.x;\n x2 = x1;\n y1 = offset.top;\n y2 = offset.top + offset.height;\n } else if (layout === 'vertical') {\n y1 = activeCoordinate.y;\n y2 = y1;\n x1 = offset.left;\n x2 = offset.left + offset.width;\n } else if (activeCoordinate.cx != null && activeCoordinate.cy != null) {\n if (layout === 'centric') {\n var cx = activeCoordinate.cx,\n cy = activeCoordinate.cy,\n innerRadius = activeCoordinate.innerRadius,\n outerRadius = activeCoordinate.outerRadius,\n angle = activeCoordinate.angle;\n var innerPoint = polarToCartesian(cx, cy, innerRadius, angle);\n var outerPoint = polarToCartesian(cx, cy, outerRadius, angle);\n x1 = innerPoint.x;\n y1 = innerPoint.y;\n x2 = outerPoint.x;\n y2 = outerPoint.y;\n } else {\n return getRadialCursorPoints(activeCoordinate);\n }\n }\n return [{\n x: x1,\n y: y1\n }, {\n x: x2,\n y: y2\n }];\n}","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : String(i); }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport { cloneElement, createElement, isValidElement } from 'react';\nimport clsx from 'clsx';\nimport { Curve } from '../shape/Curve';\nimport { Cross } from '../shape/Cross';\nimport { getCursorRectangle } from '../util/cursor/getCursorRectangle';\nimport { Rectangle } from '../shape/Rectangle';\nimport { getRadialCursorPoints } from '../util/cursor/getRadialCursorPoints';\nimport { Sector } from '../shape/Sector';\nimport { getCursorPoints } from '../util/cursor/getCursorPoints';\nimport { filterProps } from '../util/ReactUtils';\n/*\n * Cursor is the background, or a highlight,\n * that shows when user mouses over or activates\n * an area.\n *\n * It usually shows together with a tooltip\n * to emphasise which part of the chart does the tooltip refer to.\n */\nexport function Cursor(props) {\n var element = props.element,\n tooltipEventType = props.tooltipEventType,\n isActive = props.isActive,\n activeCoordinate = props.activeCoordinate,\n activePayload = props.activePayload,\n offset = props.offset,\n activeTooltipIndex = props.activeTooltipIndex,\n tooltipAxisBandSize = props.tooltipAxisBandSize,\n layout = props.layout,\n chartName = props.chartName;\n if (!element || !element.props.cursor || !isActive || !activeCoordinate || chartName !== 'ScatterChart' && tooltipEventType !== 'axis') {\n return null;\n }\n var restProps;\n var cursorComp = Curve;\n if (chartName === 'ScatterChart') {\n restProps = activeCoordinate;\n cursorComp = Cross;\n } else if (chartName === 'BarChart') {\n restProps = getCursorRectangle(layout, activeCoordinate, offset, tooltipAxisBandSize);\n cursorComp = Rectangle;\n } else if (layout === 'radial') {\n var _getRadialCursorPoint = getRadialCursorPoints(activeCoordinate),\n cx = _getRadialCursorPoint.cx,\n cy = _getRadialCursorPoint.cy,\n radius = _getRadialCursorPoint.radius,\n startAngle = _getRadialCursorPoint.startAngle,\n endAngle = _getRadialCursorPoint.endAngle;\n restProps = {\n cx: cx,\n cy: cy,\n startAngle: startAngle,\n endAngle: endAngle,\n innerRadius: radius,\n outerRadius: radius\n };\n cursorComp = Sector;\n } else {\n restProps = {\n points: getCursorPoints(layout, activeCoordinate, offset)\n };\n cursorComp = Curve;\n }\n var cursorProps = _objectSpread(_objectSpread(_objectSpread(_objectSpread({\n stroke: '#ccc',\n pointerEvents: 'none'\n }, offset), restProps), filterProps(element.props.cursor, false)), {}, {\n payload: activePayload,\n payloadIndex: activeTooltipIndex,\n className: clsx('recharts-tooltip-cursor', element.props.cursor.className)\n });\n return /*#__PURE__*/isValidElement(element.props.cursor) ? /*#__PURE__*/cloneElement(element.props.cursor, cursorProps) : /*#__PURE__*/createElement(cursorComp, cursorProps);\n}","export function getCursorRectangle(layout, activeCoordinate, offset, tooltipAxisBandSize) {\n var halfSize = tooltipAxisBandSize / 2;\n return {\n stroke: 'none',\n fill: '#ccc',\n x: layout === 'horizontal' ? activeCoordinate.x - halfSize : offset.left + 0.5,\n y: layout === 'horizontal' ? offset.top + 0.5 : activeCoordinate.y - halfSize,\n width: layout === 'horizontal' ? tooltipAxisBandSize : offset.width - 1,\n height: layout === 'horizontal' ? offset.height - 1 : tooltipAxisBandSize\n };\n}","var _excluded = [\"item\"],\n _excluded2 = [\"children\", \"className\", \"width\", \"height\", \"style\", \"compact\", \"title\", \"desc\"];\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : String(i); }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport React, { Component, cloneElement, isValidElement } from 'react';\nimport isNil from 'lodash/isNil';\nimport isFunction from 'lodash/isFunction';\nimport range from 'lodash/range';\nimport get from 'lodash/get';\nimport sortBy from 'lodash/sortBy';\nimport throttle from 'lodash/throttle';\nimport clsx from 'clsx';\n// eslint-disable-next-line no-restricted-imports\n\nimport invariant from 'tiny-invariant';\nimport { Surface } from '../container/Surface';\nimport { Layer } from '../container/Layer';\nimport { Tooltip } from '../component/Tooltip';\nimport { Legend } from '../component/Legend';\nimport { Dot } from '../shape/Dot';\nimport { isInRectangle } from '../shape/Rectangle';\nimport { filterProps, findAllByType, findChildByType, getDisplayName, getReactEventByType, isChildrenEqual, parseChildIndex, renderByOrder, validateWidthHeight } from '../util/ReactUtils';\nimport { Brush } from '../cartesian/Brush';\nimport { getOffset } from '../util/DOMUtils';\nimport { findEntryInArray, getAnyElementOfObject, hasDuplicate, isNumber, uniqueId } from '../util/DataUtils';\nimport { appendOffsetOfLegend, calculateActiveTickIndex, combineEventHandlers, getBandSizeOfAxis, getBarPosition, getBarSizeList, getDomainOfDataByKey, getDomainOfItemsWithSameAxis, getDomainOfStackGroups, getLegendProps, getMainColorOfGraphicItem, getStackedDataOfItem, getStackGroupsByAxisId, getTicksOfAxis, getTooltipItem, isCategoricalAxis, parseDomainOfCategoryAxis, parseErrorBarsOfAxis, parseSpecifiedDomain } from '../util/ChartUtils';\nimport { detectReferenceElementsDomain } from '../util/DetectReferenceElementsDomain';\nimport { inRangeOfSector, polarToCartesian } from '../util/PolarUtils';\nimport { shallowEqual } from '../util/ShallowEqual';\nimport { eventCenter, SYNC_EVENT } from '../util/Events';\nimport { adaptEventHandlers } from '../util/types';\nimport { AccessibilityManager } from './AccessibilityManager';\nimport { isDomainSpecifiedByUser } from '../util/isDomainSpecifiedByUser';\nimport { getActiveShapeIndexForTooltip, isFunnel, isPie, isScatter } from '../util/ActiveShapeUtils';\nimport { Cursor } from '../component/Cursor';\nimport { ChartLayoutContextProvider } from '../context/chartLayoutContext';\nvar ORIENT_MAP = {\n xAxis: ['bottom', 'top'],\n yAxis: ['left', 'right']\n};\nvar FULL_WIDTH_AND_HEIGHT = {\n width: '100%',\n height: '100%'\n};\nvar originCoordinate = {\n x: 0,\n y: 0\n};\n\n/**\n * This function exists as a temporary workaround.\n *\n * Why? generateCategoricalChart does not render `{children}` directly;\n * instead it passes them through `renderByOrder` function which reads their handlers.\n *\n * So, this is a handler that does nothing.\n * Once we get rid of `renderByOrder` and switch to JSX only, we can get rid of this handler too.\n *\n * @param {JSX} element as is in JSX\n * @returns {JSX} the same element\n */\nfunction renderAsIs(element) {\n return element;\n}\nvar calculateTooltipPos = function calculateTooltipPos(rangeObj, layout) {\n if (layout === 'horizontal') {\n return rangeObj.x;\n }\n if (layout === 'vertical') {\n return rangeObj.y;\n }\n if (layout === 'centric') {\n return rangeObj.angle;\n }\n return rangeObj.radius;\n};\nvar getActiveCoordinate = function getActiveCoordinate(layout, tooltipTicks, activeIndex, rangeObj) {\n var entry = tooltipTicks.find(function (tick) {\n return tick && tick.index === activeIndex;\n });\n if (entry) {\n if (layout === 'horizontal') {\n return {\n x: entry.coordinate,\n y: rangeObj.y\n };\n }\n if (layout === 'vertical') {\n return {\n x: rangeObj.x,\n y: entry.coordinate\n };\n }\n if (layout === 'centric') {\n var _angle = entry.coordinate;\n var _radius = rangeObj.radius;\n return _objectSpread(_objectSpread(_objectSpread({}, rangeObj), polarToCartesian(rangeObj.cx, rangeObj.cy, _radius, _angle)), {}, {\n angle: _angle,\n radius: _radius\n });\n }\n var radius = entry.coordinate;\n var angle = rangeObj.angle;\n return _objectSpread(_objectSpread(_objectSpread({}, rangeObj), polarToCartesian(rangeObj.cx, rangeObj.cy, radius, angle)), {}, {\n angle: angle,\n radius: radius\n });\n }\n return originCoordinate;\n};\nvar getDisplayedData = function getDisplayedData(data, _ref) {\n var graphicalItems = _ref.graphicalItems,\n dataStartIndex = _ref.dataStartIndex,\n dataEndIndex = _ref.dataEndIndex;\n var itemsData = (graphicalItems !== null && graphicalItems !== void 0 ? graphicalItems : []).reduce(function (result, child) {\n var itemData = child.props.data;\n if (itemData && itemData.length) {\n return [].concat(_toConsumableArray(result), _toConsumableArray(itemData));\n }\n return result;\n }, []);\n if (itemsData.length > 0) {\n return itemsData;\n }\n if (data && data.length && isNumber(dataStartIndex) && isNumber(dataEndIndex)) {\n return data.slice(dataStartIndex, dataEndIndex + 1);\n }\n return [];\n};\nfunction getDefaultDomainByAxisType(axisType) {\n return axisType === 'number' ? [0, 'auto'] : undefined;\n}\n\n/**\n * Get the content to be displayed in the tooltip\n * @param {Object} state Current state\n * @param {Array} chartData The data defined in chart\n * @param {Number} activeIndex Active index of data\n * @param {String} activeLabel Active label of data\n * @return {Array} The content of tooltip\n */\nvar getTooltipContent = function getTooltipContent(state, chartData, activeIndex, activeLabel) {\n var graphicalItems = state.graphicalItems,\n tooltipAxis = state.tooltipAxis;\n var displayedData = getDisplayedData(chartData, state);\n if (activeIndex < 0 || !graphicalItems || !graphicalItems.length || activeIndex >= displayedData.length) {\n return null;\n }\n // get data by activeIndex when the axis don't allow duplicated category\n return graphicalItems.reduce(function (result, child) {\n var _child$props$data;\n /**\n * Fixes: https://github.com/recharts/recharts/issues/3669\n * Defaulting to chartData below to fix an edge case where the tooltip does not include data from all charts\n * when a separate dataset is passed to chart prop data and specified on Line/Area/etc prop data\n */\n var data = (_child$props$data = child.props.data) !== null && _child$props$data !== void 0 ? _child$props$data : chartData;\n if (data && state.dataStartIndex + state.dataEndIndex !== 0) {\n data = data.slice(state.dataStartIndex, state.dataEndIndex + 1);\n }\n var payload;\n if (tooltipAxis.dataKey && !tooltipAxis.allowDuplicatedCategory) {\n // graphic child has data props\n var entries = data === undefined ? displayedData : data;\n payload = findEntryInArray(entries, tooltipAxis.dataKey, activeLabel);\n } else {\n payload = data && data[activeIndex] || displayedData[activeIndex];\n }\n if (!payload) {\n return result;\n }\n return [].concat(_toConsumableArray(result), [getTooltipItem(child, payload)]);\n }, []);\n};\n\n/**\n * Returns tooltip data based on a mouse position (as a parameter or in state)\n * @param {Object} state current state\n * @param {Array} chartData the data defined in chart\n * @param {String} layout The layout type of chart\n * @param {Object} rangeObj { x, y } coordinates\n * @return {Object} Tooltip data data\n */\nvar getTooltipData = function getTooltipData(state, chartData, layout, rangeObj) {\n var rangeData = rangeObj || {\n x: state.chartX,\n y: state.chartY\n };\n var pos = calculateTooltipPos(rangeData, layout);\n var ticks = state.orderedTooltipTicks,\n axis = state.tooltipAxis,\n tooltipTicks = state.tooltipTicks;\n var activeIndex = calculateActiveTickIndex(pos, ticks, tooltipTicks, axis);\n if (activeIndex >= 0 && tooltipTicks) {\n var activeLabel = tooltipTicks[activeIndex] && tooltipTicks[activeIndex].value;\n var activePayload = getTooltipContent(state, chartData, activeIndex, activeLabel);\n var activeCoordinate = getActiveCoordinate(layout, ticks, activeIndex, rangeData);\n return {\n activeTooltipIndex: activeIndex,\n activeLabel: activeLabel,\n activePayload: activePayload,\n activeCoordinate: activeCoordinate\n };\n }\n return null;\n};\n\n/**\n * Get the configuration of axis by the options of axis instance\n * @param {Object} props Latest props\n * @param {Array} axes The instance of axes\n * @param {Array} graphicalItems The instances of item\n * @param {String} axisType The type of axis, xAxis - x-axis, yAxis - y-axis\n * @param {String} axisIdKey The unique id of an axis\n * @param {Object} stackGroups The items grouped by axisId and stackId\n * @param {Number} dataStartIndex The start index of the data series when a brush is applied\n * @param {Number} dataEndIndex The end index of the data series when a brush is applied\n * @return {Object} Configuration\n */\nexport var getAxisMapByAxes = function getAxisMapByAxes(props, _ref2) {\n var axes = _ref2.axes,\n graphicalItems = _ref2.graphicalItems,\n axisType = _ref2.axisType,\n axisIdKey = _ref2.axisIdKey,\n stackGroups = _ref2.stackGroups,\n dataStartIndex = _ref2.dataStartIndex,\n dataEndIndex = _ref2.dataEndIndex;\n var layout = props.layout,\n children = props.children,\n stackOffset = props.stackOffset;\n var isCategorical = isCategoricalAxis(layout, axisType);\n\n // Eliminate duplicated axes\n return axes.reduce(function (result, child) {\n var _child$props$domain2;\n var _child$props = child.props,\n type = _child$props.type,\n dataKey = _child$props.dataKey,\n allowDataOverflow = _child$props.allowDataOverflow,\n allowDuplicatedCategory = _child$props.allowDuplicatedCategory,\n scale = _child$props.scale,\n ticks = _child$props.ticks,\n includeHidden = _child$props.includeHidden;\n var axisId = child.props[axisIdKey];\n if (result[axisId]) {\n return result;\n }\n var displayedData = getDisplayedData(props.data, {\n graphicalItems: graphicalItems.filter(function (item) {\n return item.props[axisIdKey] === axisId;\n }),\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex\n });\n var len = displayedData.length;\n var domain, duplicateDomain, categoricalDomain;\n\n /*\n * This is a hack to short-circuit the domain creation here to enhance performance.\n * Usually, the data is used to determine the domain, but when the user specifies\n * a domain upfront (via props), there is no need to calculate the domain start and end,\n * which is very expensive for a larger amount of data.\n * The only thing that would prohibit short-circuiting is when the user doesn't allow data overflow,\n * because the axis is supposed to ignore the specified domain that way.\n */\n if (isDomainSpecifiedByUser(child.props.domain, allowDataOverflow, type)) {\n domain = parseSpecifiedDomain(child.props.domain, null, allowDataOverflow);\n /* The chart can be categorical and have the domain specified in numbers\n * we still need to calculate the categorical domain\n * TODO: refactor this more\n */\n if (isCategorical && (type === 'number' || scale !== 'auto')) {\n categoricalDomain = getDomainOfDataByKey(displayedData, dataKey, 'category');\n }\n }\n\n // if the domain is defaulted we need this for `originalDomain` as well\n var defaultDomain = getDefaultDomainByAxisType(type);\n\n // we didn't create the domain from user's props above, so we need to calculate it\n if (!domain || domain.length === 0) {\n var _child$props$domain;\n var childDomain = (_child$props$domain = child.props.domain) !== null && _child$props$domain !== void 0 ? _child$props$domain : defaultDomain;\n if (dataKey) {\n // has dataKey in <Axis />\n domain = getDomainOfDataByKey(displayedData, dataKey, type);\n if (type === 'category' && isCategorical) {\n // the field type is category data and this axis is categorical axis\n var duplicate = hasDuplicate(domain);\n if (allowDuplicatedCategory && duplicate) {\n duplicateDomain = domain;\n // When category axis has duplicated text, serial numbers are used to generate scale\n domain = range(0, len);\n } else if (!allowDuplicatedCategory) {\n // remove duplicated category\n domain = parseDomainOfCategoryAxis(childDomain, domain, child).reduce(function (finalDomain, entry) {\n return finalDomain.indexOf(entry) >= 0 ? finalDomain : [].concat(_toConsumableArray(finalDomain), [entry]);\n }, []);\n }\n } else if (type === 'category') {\n // the field type is category data and this axis is numerical axis\n if (!allowDuplicatedCategory) {\n domain = parseDomainOfCategoryAxis(childDomain, domain, child).reduce(function (finalDomain, entry) {\n return finalDomain.indexOf(entry) >= 0 || entry === '' || isNil(entry) ? finalDomain : [].concat(_toConsumableArray(finalDomain), [entry]);\n }, []);\n } else {\n // eliminate undefined or null or empty string\n domain = domain.filter(function (entry) {\n return entry !== '' && !isNil(entry);\n });\n }\n } else if (type === 'number') {\n // the field type is numerical\n var errorBarsDomain = parseErrorBarsOfAxis(displayedData, graphicalItems.filter(function (item) {\n return item.props[axisIdKey] === axisId && (includeHidden || !item.props.hide);\n }), dataKey, axisType, layout);\n if (errorBarsDomain) {\n domain = errorBarsDomain;\n }\n }\n if (isCategorical && (type === 'number' || scale !== 'auto')) {\n categoricalDomain = getDomainOfDataByKey(displayedData, dataKey, 'category');\n }\n } else if (isCategorical) {\n // the axis is a categorical axis\n domain = range(0, len);\n } else if (stackGroups && stackGroups[axisId] && stackGroups[axisId].hasStack && type === 'number') {\n // when stackOffset is 'expand', the domain may be calculated as [0, 1.000000000002]\n domain = stackOffset === 'expand' ? [0, 1] : getDomainOfStackGroups(stackGroups[axisId].stackGroups, dataStartIndex, dataEndIndex);\n } else {\n domain = getDomainOfItemsWithSameAxis(displayedData, graphicalItems.filter(function (item) {\n return item.props[axisIdKey] === axisId && (includeHidden || !item.props.hide);\n }), type, layout, true);\n }\n if (type === 'number') {\n // To detect wether there is any reference lines whose props alwaysShow is true\n domain = detectReferenceElementsDomain(children, domain, axisId, axisType, ticks);\n if (childDomain) {\n domain = parseSpecifiedDomain(childDomain, domain, allowDataOverflow);\n }\n } else if (type === 'category' && childDomain) {\n var axisDomain = childDomain;\n var isDomainValid = domain.every(function (entry) {\n return axisDomain.indexOf(entry) >= 0;\n });\n if (isDomainValid) {\n domain = axisDomain;\n }\n }\n }\n return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, axisId, _objectSpread(_objectSpread({}, child.props), {}, {\n axisType: axisType,\n domain: domain,\n categoricalDomain: categoricalDomain,\n duplicateDomain: duplicateDomain,\n originalDomain: (_child$props$domain2 = child.props.domain) !== null && _child$props$domain2 !== void 0 ? _child$props$domain2 : defaultDomain,\n isCategorical: isCategorical,\n layout: layout\n })));\n }, {});\n};\n\n/**\n * Get the configuration of axis by the options of item,\n * this kind of axis does not display in chart\n * @param {Object} props Latest props\n * @param {Array} graphicalItems The instances of item\n * @param {ReactElement} Axis Axis Component\n * @param {String} axisType The type of axis, xAxis - x-axis, yAxis - y-axis\n * @param {String} axisIdKey The unique id of an axis\n * @param {Object} stackGroups The items grouped by axisId and stackId\n * @param {Number} dataStartIndex The start index of the data series when a brush is applied\n * @param {Number} dataEndIndex The end index of the data series when a brush is applied\n * @return {Object} Configuration\n */\nvar getAxisMapByItems = function getAxisMapByItems(props, _ref3) {\n var graphicalItems = _ref3.graphicalItems,\n Axis = _ref3.Axis,\n axisType = _ref3.axisType,\n axisIdKey = _ref3.axisIdKey,\n stackGroups = _ref3.stackGroups,\n dataStartIndex = _ref3.dataStartIndex,\n dataEndIndex = _ref3.dataEndIndex;\n var layout = props.layout,\n children = props.children;\n var displayedData = getDisplayedData(props.data, {\n graphicalItems: graphicalItems,\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex\n });\n var len = displayedData.length;\n var isCategorical = isCategoricalAxis(layout, axisType);\n var index = -1;\n\n // The default type of x-axis is category axis,\n // The default contents of x-axis is the serial numbers of data\n // The default type of y-axis is number axis\n // The default contents of y-axis is the domain of data\n return graphicalItems.reduce(function (result, child) {\n var axisId = child.props[axisIdKey];\n var originalDomain = getDefaultDomainByAxisType('number');\n if (!result[axisId]) {\n index++;\n var domain;\n if (isCategorical) {\n domain = range(0, len);\n } else if (stackGroups && stackGroups[axisId] && stackGroups[axisId].hasStack) {\n domain = getDomainOfStackGroups(stackGroups[axisId].stackGroups, dataStartIndex, dataEndIndex);\n domain = detectReferenceElementsDomain(children, domain, axisId, axisType);\n } else {\n domain = parseSpecifiedDomain(originalDomain, getDomainOfItemsWithSameAxis(displayedData, graphicalItems.filter(function (item) {\n return item.props[axisIdKey] === axisId && !item.props.hide;\n }), 'number', layout), Axis.defaultProps.allowDataOverflow);\n domain = detectReferenceElementsDomain(children, domain, axisId, axisType);\n }\n return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, axisId, _objectSpread(_objectSpread({\n axisType: axisType\n }, Axis.defaultProps), {}, {\n hide: true,\n orientation: get(ORIENT_MAP, \"\".concat(axisType, \".\").concat(index % 2), null),\n domain: domain,\n originalDomain: originalDomain,\n isCategorical: isCategorical,\n layout: layout\n // specify scale when no Axis\n // scale: isCategorical ? 'band' : 'linear',\n })));\n }\n return result;\n }, {});\n};\n\n/**\n * Get the configuration of all x-axis or y-axis\n * @param {Object} props Latest props\n * @param {String} axisType The type of axis\n * @param {React.ComponentType} [AxisComp] Axis Component\n * @param {Array} graphicalItems The instances of item\n * @param {Object} stackGroups The items grouped by axisId and stackId\n * @param {Number} dataStartIndex The start index of the data series when a brush is applied\n * @param {Number} dataEndIndex The end index of the data series when a brush is applied\n * @return {Object} Configuration\n */\nvar getAxisMap = function getAxisMap(props, _ref4) {\n var _ref4$axisType = _ref4.axisType,\n axisType = _ref4$axisType === void 0 ? 'xAxis' : _ref4$axisType,\n AxisComp = _ref4.AxisComp,\n graphicalItems = _ref4.graphicalItems,\n stackGroups = _ref4.stackGroups,\n dataStartIndex = _ref4.dataStartIndex,\n dataEndIndex = _ref4.dataEndIndex;\n var children = props.children;\n var axisIdKey = \"\".concat(axisType, \"Id\");\n // Get all the instance of Axis\n var axes = findAllByType(children, AxisComp);\n var axisMap = {};\n if (axes && axes.length) {\n axisMap = getAxisMapByAxes(props, {\n axes: axes,\n graphicalItems: graphicalItems,\n axisType: axisType,\n axisIdKey: axisIdKey,\n stackGroups: stackGroups,\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex\n });\n } else if (graphicalItems && graphicalItems.length) {\n axisMap = getAxisMapByItems(props, {\n Axis: AxisComp,\n graphicalItems: graphicalItems,\n axisType: axisType,\n axisIdKey: axisIdKey,\n stackGroups: stackGroups,\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex\n });\n }\n return axisMap;\n};\nvar tooltipTicksGenerator = function tooltipTicksGenerator(axisMap) {\n var axis = getAnyElementOfObject(axisMap);\n var tooltipTicks = getTicksOfAxis(axis, false, true);\n return {\n tooltipTicks: tooltipTicks,\n orderedTooltipTicks: sortBy(tooltipTicks, function (o) {\n return o.coordinate;\n }),\n tooltipAxis: axis,\n tooltipAxisBandSize: getBandSizeOfAxis(axis, tooltipTicks)\n };\n};\n\n/**\n * Returns default, reset state for the categorical chart.\n * @param {Object} props Props object to use when creating the default state\n * @return {Object} Whole new state\n */\nexport var createDefaultState = function createDefaultState(props) {\n var children = props.children,\n defaultShowTooltip = props.defaultShowTooltip;\n var brushItem = findChildByType(children, Brush);\n var startIndex = 0;\n var endIndex = 0;\n if (props.data && props.data.length !== 0) {\n endIndex = props.data.length - 1;\n }\n if (brushItem && brushItem.props) {\n if (brushItem.props.startIndex >= 0) {\n startIndex = brushItem.props.startIndex;\n }\n if (brushItem.props.endIndex >= 0) {\n endIndex = brushItem.props.endIndex;\n }\n }\n return {\n chartX: 0,\n chartY: 0,\n dataStartIndex: startIndex,\n dataEndIndex: endIndex,\n activeTooltipIndex: -1,\n isTooltipActive: Boolean(defaultShowTooltip)\n };\n};\nvar hasGraphicalBarItem = function hasGraphicalBarItem(graphicalItems) {\n if (!graphicalItems || !graphicalItems.length) {\n return false;\n }\n return graphicalItems.some(function (item) {\n var name = getDisplayName(item && item.type);\n return name && name.indexOf('Bar') >= 0;\n });\n};\nvar getAxisNameByLayout = function getAxisNameByLayout(layout) {\n if (layout === 'horizontal') {\n return {\n numericAxisName: 'yAxis',\n cateAxisName: 'xAxis'\n };\n }\n if (layout === 'vertical') {\n return {\n numericAxisName: 'xAxis',\n cateAxisName: 'yAxis'\n };\n }\n if (layout === 'centric') {\n return {\n numericAxisName: 'radiusAxis',\n cateAxisName: 'angleAxis'\n };\n }\n return {\n numericAxisName: 'angleAxis',\n cateAxisName: 'radiusAxis'\n };\n};\n\n/**\n * Calculate the offset of main part in the svg element\n * @param {Object} params.props Latest props\n * @param {Array} params.graphicalItems The instances of item\n * @param {Object} params.xAxisMap The configuration of x-axis\n * @param {Object} params.yAxisMap The configuration of y-axis\n * @param {Object} prevLegendBBox The boundary box of legend\n * @return {Object} The offset of main part in the svg element\n */\nvar calculateOffset = function calculateOffset(_ref5, prevLegendBBox) {\n var props = _ref5.props,\n graphicalItems = _ref5.graphicalItems,\n _ref5$xAxisMap = _ref5.xAxisMap,\n xAxisMap = _ref5$xAxisMap === void 0 ? {} : _ref5$xAxisMap,\n _ref5$yAxisMap = _ref5.yAxisMap,\n yAxisMap = _ref5$yAxisMap === void 0 ? {} : _ref5$yAxisMap;\n var width = props.width,\n height = props.height,\n children = props.children;\n var margin = props.margin || {};\n var brushItem = findChildByType(children, Brush);\n var legendItem = findChildByType(children, Legend);\n var offsetH = Object.keys(yAxisMap).reduce(function (result, id) {\n var entry = yAxisMap[id];\n var orientation = entry.orientation;\n if (!entry.mirror && !entry.hide) {\n return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, orientation, result[orientation] + entry.width));\n }\n return result;\n }, {\n left: margin.left || 0,\n right: margin.right || 0\n });\n var offsetV = Object.keys(xAxisMap).reduce(function (result, id) {\n var entry = xAxisMap[id];\n var orientation = entry.orientation;\n if (!entry.mirror && !entry.hide) {\n return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, orientation, get(result, \"\".concat(orientation)) + entry.height));\n }\n return result;\n }, {\n top: margin.top || 0,\n bottom: margin.bottom || 0\n });\n var offset = _objectSpread(_objectSpread({}, offsetV), offsetH);\n var brushBottom = offset.bottom;\n if (brushItem) {\n offset.bottom += brushItem.props.height || Brush.defaultProps.height;\n }\n if (legendItem && prevLegendBBox) {\n // @ts-expect-error margin is optional in props but required in appendOffsetOfLegend\n offset = appendOffsetOfLegend(offset, graphicalItems, props, prevLegendBBox);\n }\n var offsetWidth = width - offset.left - offset.right;\n var offsetHeight = height - offset.top - offset.bottom;\n return _objectSpread(_objectSpread({\n brushBottom: brushBottom\n }, offset), {}, {\n // never return negative values for height and width\n width: Math.max(offsetWidth, 0),\n height: Math.max(offsetHeight, 0)\n });\n};\n// Determine the size of the axis, used for calculation of relative bar sizes\nvar getCartesianAxisSize = function getCartesianAxisSize(axisObj, axisName) {\n if (axisName === 'xAxis') {\n return axisObj[axisName].width;\n }\n if (axisName === 'yAxis') {\n return axisObj[axisName].height;\n }\n // This is only supported for Bar charts (i.e. charts with cartesian axes), so we should never get here\n return undefined;\n};\nexport var generateCategoricalChart = function generateCategoricalChart(_ref6) {\n var _CategoricalChartWrapper;\n var chartName = _ref6.chartName,\n GraphicalChild = _ref6.GraphicalChild,\n _ref6$defaultTooltipE = _ref6.defaultTooltipEventType,\n defaultTooltipEventType = _ref6$defaultTooltipE === void 0 ? 'axis' : _ref6$defaultTooltipE,\n _ref6$validateTooltip = _ref6.validateTooltipEventTypes,\n validateTooltipEventTypes = _ref6$validateTooltip === void 0 ? ['axis'] : _ref6$validateTooltip,\n axisComponents = _ref6.axisComponents,\n legendContent = _ref6.legendContent,\n formatAxisMap = _ref6.formatAxisMap,\n defaultProps = _ref6.defaultProps;\n var getFormatItems = function getFormatItems(props, currentState) {\n var graphicalItems = currentState.graphicalItems,\n stackGroups = currentState.stackGroups,\n offset = currentState.offset,\n updateId = currentState.updateId,\n dataStartIndex = currentState.dataStartIndex,\n dataEndIndex = currentState.dataEndIndex;\n var barSize = props.barSize,\n layout = props.layout,\n barGap = props.barGap,\n barCategoryGap = props.barCategoryGap,\n globalMaxBarSize = props.maxBarSize;\n var _getAxisNameByLayout = getAxisNameByLayout(layout),\n numericAxisName = _getAxisNameByLayout.numericAxisName,\n cateAxisName = _getAxisNameByLayout.cateAxisName;\n var hasBar = hasGraphicalBarItem(graphicalItems);\n var formattedItems = [];\n graphicalItems.forEach(function (item, index) {\n var displayedData = getDisplayedData(props.data, {\n graphicalItems: [item],\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex\n });\n var _item$props = item.props,\n dataKey = _item$props.dataKey,\n childMaxBarSize = _item$props.maxBarSize;\n // axisId of the numerical axis\n var numericAxisId = item.props[\"\".concat(numericAxisName, \"Id\")];\n // axisId of the categorical axis\n var cateAxisId = item.props[\"\".concat(cateAxisName, \"Id\")];\n var axisObjInitialValue = {};\n var axisObj = axisComponents.reduce(function (result, entry) {\n var _item$type$displayNam, _item$type;\n // map of axisId to axis for a specific axis type\n var axisMap = currentState[\"\".concat(entry.axisType, \"Map\")];\n // axisId of axis we are currently computing\n var id = item.props[\"\".concat(entry.axisType, \"Id\")];\n\n /**\n * tell the user in dev mode that their configuration is incorrect if we cannot find a match between\n * axisId on the chart and axisId on the axis. zAxis does not get passed in the map for ComposedChart,\n * leave it out of the check for now.\n */\n !(axisMap && axisMap[id] || entry.axisType === 'zAxis') ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Specifying a(n) \".concat(entry.axisType, \"Id requires a corresponding \").concat(entry.axisType\n // @ts-expect-error we should stop reading data from ReactElements\n , \"Id on the targeted graphical component \").concat((_item$type$displayNam = item === null || item === void 0 || (_item$type = item.type) === null || _item$type === void 0 ? void 0 : _item$type.displayName) !== null && _item$type$displayNam !== void 0 ? _item$type$displayNam : '')) : invariant(false) : void 0;\n\n // the axis we are currently formatting\n var axis = axisMap[id];\n return _objectSpread(_objectSpread({}, result), {}, _defineProperty(_defineProperty({}, entry.axisType, axis), \"\".concat(entry.axisType, \"Ticks\"), getTicksOfAxis(axis)));\n }, axisObjInitialValue);\n var cateAxis = axisObj[cateAxisName];\n var cateTicks = axisObj[\"\".concat(cateAxisName, \"Ticks\")];\n var stackedData = stackGroups && stackGroups[numericAxisId] && stackGroups[numericAxisId].hasStack && getStackedDataOfItem(item, stackGroups[numericAxisId].stackGroups);\n var itemIsBar = getDisplayName(item.type).indexOf('Bar') >= 0;\n var bandSize = getBandSizeOfAxis(cateAxis, cateTicks);\n var barPosition = [];\n var sizeList = hasBar && getBarSizeList({\n barSize: barSize,\n stackGroups: stackGroups,\n totalSize: getCartesianAxisSize(axisObj, cateAxisName)\n });\n if (itemIsBar) {\n var _ref7, _getBandSizeOfAxis;\n // If it is bar, calculate the position of bar\n var maxBarSize = isNil(childMaxBarSize) ? globalMaxBarSize : childMaxBarSize;\n var barBandSize = (_ref7 = (_getBandSizeOfAxis = getBandSizeOfAxis(cateAxis, cateTicks, true)) !== null && _getBandSizeOfAxis !== void 0 ? _getBandSizeOfAxis : maxBarSize) !== null && _ref7 !== void 0 ? _ref7 : 0;\n barPosition = getBarPosition({\n barGap: barGap,\n barCategoryGap: barCategoryGap,\n bandSize: barBandSize !== bandSize ? barBandSize : bandSize,\n sizeList: sizeList[cateAxisId],\n maxBarSize: maxBarSize\n });\n if (barBandSize !== bandSize) {\n barPosition = barPosition.map(function (pos) {\n return _objectSpread(_objectSpread({}, pos), {}, {\n position: _objectSpread(_objectSpread({}, pos.position), {}, {\n offset: pos.position.offset - barBandSize / 2\n })\n });\n });\n }\n }\n // @ts-expect-error we should stop reading data from ReactElements\n var composedFn = item && item.type && item.type.getComposedData;\n if (composedFn) {\n formattedItems.push({\n props: _objectSpread(_objectSpread({}, composedFn(_objectSpread(_objectSpread({}, axisObj), {}, {\n displayedData: displayedData,\n props: props,\n dataKey: dataKey,\n item: item,\n bandSize: bandSize,\n barPosition: barPosition,\n offset: offset,\n stackedData: stackedData,\n layout: layout,\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex\n }))), {}, _defineProperty(_defineProperty(_defineProperty({\n key: item.key || \"item-\".concat(index)\n }, numericAxisName, axisObj[numericAxisName]), cateAxisName, axisObj[cateAxisName]), \"animationId\", updateId)),\n childIndex: parseChildIndex(item, props.children),\n item: item\n });\n }\n });\n return formattedItems;\n };\n\n /**\n * The AxisMaps are expensive to render on large data sets\n * so provide the ability to store them in state and only update them when necessary\n * they are dependent upon the start and end index of\n * the brush so it's important that this method is called _after_\n * the state is updated with any new start/end indices\n *\n * @param {Object} props The props object to be used for updating the axismaps\n * dataStartIndex: The start index of the data series when a brush is applied\n * dataEndIndex: The end index of the data series when a brush is applied\n * updateId: The update id\n * @param {Object} prevState Prev state\n * @return {Object} state New state to set\n */\n var updateStateOfAxisMapsOffsetAndStackGroups = function updateStateOfAxisMapsOffsetAndStackGroups(_ref8, prevState) {\n var props = _ref8.props,\n dataStartIndex = _ref8.dataStartIndex,\n dataEndIndex = _ref8.dataEndIndex,\n updateId = _ref8.updateId;\n if (!validateWidthHeight({\n props: props\n })) {\n return null;\n }\n var children = props.children,\n layout = props.layout,\n stackOffset = props.stackOffset,\n data = props.data,\n reverseStackOrder = props.reverseStackOrder;\n var _getAxisNameByLayout2 = getAxisNameByLayout(layout),\n numericAxisName = _getAxisNameByLayout2.numericAxisName,\n cateAxisName = _getAxisNameByLayout2.cateAxisName;\n var graphicalItems = findAllByType(children, GraphicalChild);\n var stackGroups = getStackGroupsByAxisId(data, graphicalItems, \"\".concat(numericAxisName, \"Id\"), \"\".concat(cateAxisName, \"Id\"), stackOffset, reverseStackOrder);\n var axisObj = axisComponents.reduce(function (result, entry) {\n var name = \"\".concat(entry.axisType, \"Map\");\n return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, name, getAxisMap(props, _objectSpread(_objectSpread({}, entry), {}, {\n graphicalItems: graphicalItems,\n stackGroups: entry.axisType === numericAxisName && stackGroups,\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex\n }))));\n }, {});\n var offset = calculateOffset(_objectSpread(_objectSpread({}, axisObj), {}, {\n props: props,\n graphicalItems: graphicalItems\n }), prevState === null || prevState === void 0 ? void 0 : prevState.legendBBox);\n Object.keys(axisObj).forEach(function (key) {\n axisObj[key] = formatAxisMap(props, axisObj[key], offset, key.replace('Map', ''), chartName);\n });\n var cateAxisMap = axisObj[\"\".concat(cateAxisName, \"Map\")];\n var ticksObj = tooltipTicksGenerator(cateAxisMap);\n var formattedGraphicalItems = getFormatItems(props, _objectSpread(_objectSpread({}, axisObj), {}, {\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex,\n updateId: updateId,\n graphicalItems: graphicalItems,\n stackGroups: stackGroups,\n offset: offset\n }));\n return _objectSpread(_objectSpread({\n formattedGraphicalItems: formattedGraphicalItems,\n graphicalItems: graphicalItems,\n offset: offset,\n stackGroups: stackGroups\n }, ticksObj), axisObj);\n };\n return _CategoricalChartWrapper = /*#__PURE__*/function (_Component) {\n _inherits(CategoricalChartWrapper, _Component);\n function CategoricalChartWrapper(_props) {\n var _props$id, _props$throttleDelay;\n var _this;\n _classCallCheck(this, CategoricalChartWrapper);\n _this = _callSuper(this, CategoricalChartWrapper, [_props]);\n _defineProperty(_assertThisInitialized(_this), \"eventEmitterSymbol\", Symbol('rechartsEventEmitter'));\n _defineProperty(_assertThisInitialized(_this), \"accessibilityManager\", new AccessibilityManager());\n _defineProperty(_assertThisInitialized(_this), \"handleLegendBBoxUpdate\", function (box) {\n if (box) {\n var _this$state = _this.state,\n dataStartIndex = _this$state.dataStartIndex,\n dataEndIndex = _this$state.dataEndIndex,\n updateId = _this$state.updateId;\n _this.setState(_objectSpread({\n legendBBox: box\n }, updateStateOfAxisMapsOffsetAndStackGroups({\n props: _this.props,\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex,\n updateId: updateId\n }, _objectSpread(_objectSpread({}, _this.state), {}, {\n legendBBox: box\n }))));\n }\n });\n _defineProperty(_assertThisInitialized(_this), \"handleReceiveSyncEvent\", function (cId, data, emitter) {\n if (_this.props.syncId === cId) {\n if (emitter === _this.eventEmitterSymbol && typeof _this.props.syncMethod !== 'function') {\n return;\n }\n _this.applySyncEvent(data);\n }\n });\n _defineProperty(_assertThisInitialized(_this), \"handleBrushChange\", function (_ref9) {\n var startIndex = _ref9.startIndex,\n endIndex = _ref9.endIndex;\n // Only trigger changes if the extents of the brush have actually changed\n if (startIndex !== _this.state.dataStartIndex || endIndex !== _this.state.dataEndIndex) {\n var updateId = _this.state.updateId;\n _this.setState(function () {\n return _objectSpread({\n dataStartIndex: startIndex,\n dataEndIndex: endIndex\n }, updateStateOfAxisMapsOffsetAndStackGroups({\n props: _this.props,\n dataStartIndex: startIndex,\n dataEndIndex: endIndex,\n updateId: updateId\n }, _this.state));\n });\n _this.triggerSyncEvent({\n dataStartIndex: startIndex,\n dataEndIndex: endIndex\n });\n }\n });\n /**\n * The handler of mouse entering chart\n * @param {Object} e Event object\n * @return {Null} null\n */\n _defineProperty(_assertThisInitialized(_this), \"handleMouseEnter\", function (e) {\n var mouse = _this.getMouseInfo(e);\n if (mouse) {\n var _nextState = _objectSpread(_objectSpread({}, mouse), {}, {\n isTooltipActive: true\n });\n _this.setState(_nextState);\n _this.triggerSyncEvent(_nextState);\n var onMouseEnter = _this.props.onMouseEnter;\n if (isFunction(onMouseEnter)) {\n onMouseEnter(_nextState, e);\n }\n }\n });\n _defineProperty(_assertThisInitialized(_this), \"triggeredAfterMouseMove\", function (e) {\n var mouse = _this.getMouseInfo(e);\n var nextState = mouse ? _objectSpread(_objectSpread({}, mouse), {}, {\n isTooltipActive: true\n }) : {\n isTooltipActive: false\n };\n _this.setState(nextState);\n _this.triggerSyncEvent(nextState);\n var onMouseMove = _this.props.onMouseMove;\n if (isFunction(onMouseMove)) {\n onMouseMove(nextState, e);\n }\n });\n /**\n * The handler of mouse entering a scatter\n * @param {Object} el The active scatter\n * @return {Object} no return\n */\n _defineProperty(_assertThisInitialized(_this), \"handleItemMouseEnter\", function (el) {\n _this.setState(function () {\n return {\n isTooltipActive: true,\n activeItem: el,\n activePayload: el.tooltipPayload,\n activeCoordinate: el.tooltipPosition || {\n x: el.cx,\n y: el.cy\n }\n };\n });\n });\n /**\n * The handler of mouse leaving a scatter\n * @return {Object} no return\n */\n _defineProperty(_assertThisInitialized(_this), \"handleItemMouseLeave\", function () {\n _this.setState(function () {\n return {\n isTooltipActive: false\n };\n });\n });\n /**\n * The handler of mouse moving in chart\n * @param {React.MouseEvent} e Event object\n * @return {void} no return\n */\n _defineProperty(_assertThisInitialized(_this), \"handleMouseMove\", function (e) {\n e.persist();\n _this.throttleTriggeredAfterMouseMove(e);\n });\n /**\n * The handler if mouse leaving chart\n * @param {Object} e Event object\n * @return {Null} no return\n */\n _defineProperty(_assertThisInitialized(_this), \"handleMouseLeave\", function (e) {\n _this.throttleTriggeredAfterMouseMove.cancel();\n var nextState = {\n isTooltipActive: false\n };\n _this.setState(nextState);\n _this.triggerSyncEvent(nextState);\n var onMouseLeave = _this.props.onMouseLeave;\n if (isFunction(onMouseLeave)) {\n onMouseLeave(nextState, e);\n }\n });\n _defineProperty(_assertThisInitialized(_this), \"handleOuterEvent\", function (e) {\n var eventName = getReactEventByType(e);\n var event = get(_this.props, \"\".concat(eventName));\n if (eventName && isFunction(event)) {\n var _mouse;\n var mouse;\n if (/.*touch.*/i.test(eventName)) {\n mouse = _this.getMouseInfo(e.changedTouches[0]);\n } else {\n mouse = _this.getMouseInfo(e);\n }\n event((_mouse = mouse) !== null && _mouse !== void 0 ? _mouse : {}, e);\n }\n });\n _defineProperty(_assertThisInitialized(_this), \"handleClick\", function (e) {\n var mouse = _this.getMouseInfo(e);\n if (mouse) {\n var _nextState2 = _objectSpread(_objectSpread({}, mouse), {}, {\n isTooltipActive: true\n });\n _this.setState(_nextState2);\n _this.triggerSyncEvent(_nextState2);\n var onClick = _this.props.onClick;\n if (isFunction(onClick)) {\n onClick(_nextState2, e);\n }\n }\n });\n _defineProperty(_assertThisInitialized(_this), \"handleMouseDown\", function (e) {\n var onMouseDown = _this.props.onMouseDown;\n if (isFunction(onMouseDown)) {\n var _nextState3 = _this.getMouseInfo(e);\n onMouseDown(_nextState3, e);\n }\n });\n _defineProperty(_assertThisInitialized(_this), \"handleMouseUp\", function (e) {\n var onMouseUp = _this.props.onMouseUp;\n if (isFunction(onMouseUp)) {\n var _nextState4 = _this.getMouseInfo(e);\n onMouseUp(_nextState4, e);\n }\n });\n _defineProperty(_assertThisInitialized(_this), \"handleTouchMove\", function (e) {\n if (e.changedTouches != null && e.changedTouches.length > 0) {\n _this.throttleTriggeredAfterMouseMove(e.changedTouches[0]);\n }\n });\n _defineProperty(_assertThisInitialized(_this), \"handleTouchStart\", function (e) {\n if (e.changedTouches != null && e.changedTouches.length > 0) {\n _this.handleMouseDown(e.changedTouches[0]);\n }\n });\n _defineProperty(_assertThisInitialized(_this), \"handleTouchEnd\", function (e) {\n if (e.changedTouches != null && e.changedTouches.length > 0) {\n _this.handleMouseUp(e.changedTouches[0]);\n }\n });\n _defineProperty(_assertThisInitialized(_this), \"triggerSyncEvent\", function (data) {\n if (_this.props.syncId !== undefined) {\n eventCenter.emit(SYNC_EVENT, _this.props.syncId, data, _this.eventEmitterSymbol);\n }\n });\n _defineProperty(_assertThisInitialized(_this), \"applySyncEvent\", function (data) {\n var _this$props = _this.props,\n layout = _this$props.layout,\n syncMethod = _this$props.syncMethod;\n var updateId = _this.state.updateId;\n var dataStartIndex = data.dataStartIndex,\n dataEndIndex = data.dataEndIndex;\n if (data.dataStartIndex !== undefined || data.dataEndIndex !== undefined) {\n _this.setState(_objectSpread({\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex\n }, updateStateOfAxisMapsOffsetAndStackGroups({\n props: _this.props,\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex,\n updateId: updateId\n }, _this.state)));\n } else if (data.activeTooltipIndex !== undefined) {\n var chartX = data.chartX,\n chartY = data.chartY;\n var activeTooltipIndex = data.activeTooltipIndex;\n var _this$state2 = _this.state,\n offset = _this$state2.offset,\n tooltipTicks = _this$state2.tooltipTicks;\n if (!offset) {\n return;\n }\n if (typeof syncMethod === 'function') {\n // Call a callback function. If there is an application specific algorithm\n activeTooltipIndex = syncMethod(tooltipTicks, data);\n } else if (syncMethod === 'value') {\n // Set activeTooltipIndex to the index with the same value as data.activeLabel\n // For loop instead of findIndex because the latter is very slow in some browsers\n activeTooltipIndex = -1; // in case we cannot find the element\n for (var i = 0; i < tooltipTicks.length; i++) {\n if (tooltipTicks[i].value === data.activeLabel) {\n activeTooltipIndex = i;\n break;\n }\n }\n }\n var viewBox = _objectSpread(_objectSpread({}, offset), {}, {\n x: offset.left,\n y: offset.top\n });\n // When a categorical chart is combined with another chart, the value of chartX\n // and chartY may beyond the boundaries.\n var validateChartX = Math.min(chartX, viewBox.x + viewBox.width);\n var validateChartY = Math.min(chartY, viewBox.y + viewBox.height);\n var activeLabel = tooltipTicks[activeTooltipIndex] && tooltipTicks[activeTooltipIndex].value;\n var activePayload = getTooltipContent(_this.state, _this.props.data, activeTooltipIndex);\n var activeCoordinate = tooltipTicks[activeTooltipIndex] ? {\n x: layout === 'horizontal' ? tooltipTicks[activeTooltipIndex].coordinate : validateChartX,\n y: layout === 'horizontal' ? validateChartY : tooltipTicks[activeTooltipIndex].coordinate\n } : originCoordinate;\n _this.setState(_objectSpread(_objectSpread({}, data), {}, {\n activeLabel: activeLabel,\n activeCoordinate: activeCoordinate,\n activePayload: activePayload,\n activeTooltipIndex: activeTooltipIndex\n }));\n } else {\n _this.setState(data);\n }\n });\n _defineProperty(_assertThisInitialized(_this), \"renderCursor\", function (element) {\n var _element$props$active;\n var _this$state3 = _this.state,\n isTooltipActive = _this$state3.isTooltipActive,\n activeCoordinate = _this$state3.activeCoordinate,\n activePayload = _this$state3.activePayload,\n offset = _this$state3.offset,\n activeTooltipIndex = _this$state3.activeTooltipIndex,\n tooltipAxisBandSize = _this$state3.tooltipAxisBandSize;\n var tooltipEventType = _this.getTooltipEventType();\n // The cursor is a part of the Tooltip, and it should be shown (by default) when the Tooltip is active.\n var isActive = (_element$props$active = element.props.active) !== null && _element$props$active !== void 0 ? _element$props$active : isTooltipActive;\n var layout = _this.props.layout;\n var key = element.key || '_recharts-cursor';\n return /*#__PURE__*/React.createElement(Cursor, {\n key: key,\n activeCoordinate: activeCoordinate,\n activePayload: activePayload,\n activeTooltipIndex: activeTooltipIndex,\n chartName: chartName,\n element: element,\n isActive: isActive,\n layout: layout,\n offset: offset,\n tooltipAxisBandSize: tooltipAxisBandSize,\n tooltipEventType: tooltipEventType\n });\n });\n _defineProperty(_assertThisInitialized(_this), \"renderPolarAxis\", function (element, displayName, index) {\n var axisType = get(element, 'type.axisType');\n var axisMap = get(_this.state, \"\".concat(axisType, \"Map\"));\n var axisOption = axisMap && axisMap[element.props[\"\".concat(axisType, \"Id\")]];\n return /*#__PURE__*/cloneElement(element, _objectSpread(_objectSpread({}, axisOption), {}, {\n className: clsx(axisType, axisOption.className),\n key: element.key || \"\".concat(displayName, \"-\").concat(index),\n ticks: getTicksOfAxis(axisOption, true)\n }));\n });\n _defineProperty(_assertThisInitialized(_this), \"renderPolarGrid\", function (element) {\n var _element$props = element.props,\n radialLines = _element$props.radialLines,\n polarAngles = _element$props.polarAngles,\n polarRadius = _element$props.polarRadius;\n var _this$state4 = _this.state,\n radiusAxisMap = _this$state4.radiusAxisMap,\n angleAxisMap = _this$state4.angleAxisMap;\n var radiusAxis = getAnyElementOfObject(radiusAxisMap);\n var angleAxis = getAnyElementOfObject(angleAxisMap);\n var cx = angleAxis.cx,\n cy = angleAxis.cy,\n innerRadius = angleAxis.innerRadius,\n outerRadius = angleAxis.outerRadius;\n return /*#__PURE__*/cloneElement(element, {\n polarAngles: Array.isArray(polarAngles) ? polarAngles : getTicksOfAxis(angleAxis, true).map(function (entry) {\n return entry.coordinate;\n }),\n polarRadius: Array.isArray(polarRadius) ? polarRadius : getTicksOfAxis(radiusAxis, true).map(function (entry) {\n return entry.coordinate;\n }),\n cx: cx,\n cy: cy,\n innerRadius: innerRadius,\n outerRadius: outerRadius,\n key: element.key || 'polar-grid',\n radialLines: radialLines\n });\n });\n /**\n * Draw legend\n * @return {ReactElement} The instance of Legend\n */\n _defineProperty(_assertThisInitialized(_this), \"renderLegend\", function () {\n var formattedGraphicalItems = _this.state.formattedGraphicalItems;\n var _this$props2 = _this.props,\n children = _this$props2.children,\n width = _this$props2.width,\n height = _this$props2.height;\n var margin = _this.props.margin || {};\n var legendWidth = width - (margin.left || 0) - (margin.right || 0);\n var props = getLegendProps({\n children: children,\n formattedGraphicalItems: formattedGraphicalItems,\n legendWidth: legendWidth,\n legendContent: legendContent\n });\n if (!props) {\n return null;\n }\n var item = props.item,\n otherProps = _objectWithoutProperties(props, _excluded);\n return /*#__PURE__*/cloneElement(item, _objectSpread(_objectSpread({}, otherProps), {}, {\n chartWidth: width,\n chartHeight: height,\n margin: margin,\n onBBoxUpdate: _this.handleLegendBBoxUpdate\n }));\n });\n /**\n * Draw Tooltip\n * @return {ReactElement} The instance of Tooltip\n */\n _defineProperty(_assertThisInitialized(_this), \"renderTooltip\", function () {\n var _tooltipItem$props$ac;\n var _this$props3 = _this.props,\n children = _this$props3.children,\n accessibilityLayer = _this$props3.accessibilityLayer;\n var tooltipItem = findChildByType(children, Tooltip);\n if (!tooltipItem) {\n return null;\n }\n var _this$state5 = _this.state,\n isTooltipActive = _this$state5.isTooltipActive,\n activeCoordinate = _this$state5.activeCoordinate,\n activePayload = _this$state5.activePayload,\n activeLabel = _this$state5.activeLabel,\n offset = _this$state5.offset;\n\n // The user can set isActive on the Tooltip,\n // and we respect the user to enable customisation.\n // The Tooltip is active if the user has set isActive, or if the tooltip is active due to a mouse event.\n var isActive = (_tooltipItem$props$ac = tooltipItem.props.active) !== null && _tooltipItem$props$ac !== void 0 ? _tooltipItem$props$ac : isTooltipActive;\n return /*#__PURE__*/cloneElement(tooltipItem, {\n viewBox: _objectSpread(_objectSpread({}, offset), {}, {\n x: offset.left,\n y: offset.top\n }),\n active: isActive,\n label: activeLabel,\n payload: isActive ? activePayload : [],\n coordinate: activeCoordinate,\n accessibilityLayer: accessibilityLayer\n });\n });\n _defineProperty(_assertThisInitialized(_this), \"renderBrush\", function (element) {\n var _this$props4 = _this.props,\n margin = _this$props4.margin,\n data = _this$props4.data;\n var _this$state6 = _this.state,\n offset = _this$state6.offset,\n dataStartIndex = _this$state6.dataStartIndex,\n dataEndIndex = _this$state6.dataEndIndex,\n updateId = _this$state6.updateId;\n\n // TODO: update brush when children update\n return /*#__PURE__*/cloneElement(element, {\n key: element.key || '_recharts-brush',\n onChange: combineEventHandlers(_this.handleBrushChange, element.props.onChange),\n data: data,\n x: isNumber(element.props.x) ? element.props.x : offset.left,\n y: isNumber(element.props.y) ? element.props.y : offset.top + offset.height + offset.brushBottom - (margin.bottom || 0),\n width: isNumber(element.props.width) ? element.props.width : offset.width,\n startIndex: dataStartIndex,\n endIndex: dataEndIndex,\n updateId: \"brush-\".concat(updateId)\n });\n });\n _defineProperty(_assertThisInitialized(_this), \"renderReferenceElement\", function (element, displayName, index) {\n if (!element) {\n return null;\n }\n var _assertThisInitialize = _assertThisInitialized(_this),\n clipPathId = _assertThisInitialize.clipPathId;\n var _this$state7 = _this.state,\n xAxisMap = _this$state7.xAxisMap,\n yAxisMap = _this$state7.yAxisMap,\n offset = _this$state7.offset;\n var _element$props2 = element.props,\n xAxisId = _element$props2.xAxisId,\n yAxisId = _element$props2.yAxisId;\n return /*#__PURE__*/cloneElement(element, {\n key: element.key || \"\".concat(displayName, \"-\").concat(index),\n xAxis: xAxisMap[xAxisId],\n yAxis: yAxisMap[yAxisId],\n viewBox: {\n x: offset.left,\n y: offset.top,\n width: offset.width,\n height: offset.height\n },\n clipPathId: clipPathId\n });\n });\n _defineProperty(_assertThisInitialized(_this), \"renderActivePoints\", function (_ref10) {\n var item = _ref10.item,\n activePoint = _ref10.activePoint,\n basePoint = _ref10.basePoint,\n childIndex = _ref10.childIndex,\n isRange = _ref10.isRange;\n var result = [];\n var key = item.props.key;\n var _item$item$props = item.item.props,\n activeDot = _item$item$props.activeDot,\n dataKey = _item$item$props.dataKey;\n var dotProps = _objectSpread(_objectSpread({\n index: childIndex,\n dataKey: dataKey,\n cx: activePoint.x,\n cy: activePoint.y,\n r: 4,\n fill: getMainColorOfGraphicItem(item.item),\n strokeWidth: 2,\n stroke: '#fff',\n payload: activePoint.payload,\n value: activePoint.value,\n key: \"\".concat(key, \"-activePoint-\").concat(childIndex)\n }, filterProps(activeDot, false)), adaptEventHandlers(activeDot));\n result.push(CategoricalChartWrapper.renderActiveDot(activeDot, dotProps));\n if (basePoint) {\n result.push(CategoricalChartWrapper.renderActiveDot(activeDot, _objectSpread(_objectSpread({}, dotProps), {}, {\n cx: basePoint.x,\n cy: basePoint.y,\n key: \"\".concat(key, \"-basePoint-\").concat(childIndex)\n })));\n } else if (isRange) {\n result.push(null);\n }\n return result;\n });\n _defineProperty(_assertThisInitialized(_this), \"renderGraphicChild\", function (element, displayName, index) {\n var item = _this.filterFormatItem(element, displayName, index);\n if (!item) {\n return null;\n }\n var tooltipEventType = _this.getTooltipEventType();\n var _this$state8 = _this.state,\n isTooltipActive = _this$state8.isTooltipActive,\n tooltipAxis = _this$state8.tooltipAxis,\n activeTooltipIndex = _this$state8.activeTooltipIndex,\n activeLabel = _this$state8.activeLabel;\n var children = _this.props.children;\n var tooltipItem = findChildByType(children, Tooltip);\n var _item$props2 = item.props,\n points = _item$props2.points,\n isRange = _item$props2.isRange,\n baseLine = _item$props2.baseLine;\n var _item$item$props2 = item.item.props,\n activeDot = _item$item$props2.activeDot,\n hide = _item$item$props2.hide,\n activeBar = _item$item$props2.activeBar,\n activeShape = _item$item$props2.activeShape;\n var hasActive = Boolean(!hide && isTooltipActive && tooltipItem && (activeDot || activeBar || activeShape));\n var itemEvents = {};\n if (tooltipEventType !== 'axis' && tooltipItem && tooltipItem.props.trigger === 'click') {\n itemEvents = {\n onClick: combineEventHandlers(_this.handleItemMouseEnter, element.props.onClick)\n };\n } else if (tooltipEventType !== 'axis') {\n itemEvents = {\n onMouseLeave: combineEventHandlers(_this.handleItemMouseLeave, element.props.onMouseLeave),\n onMouseEnter: combineEventHandlers(_this.handleItemMouseEnter, element.props.onMouseEnter)\n };\n }\n var graphicalItem = /*#__PURE__*/cloneElement(element, _objectSpread(_objectSpread({}, item.props), itemEvents));\n function findWithPayload(entry) {\n // TODO needs to verify dataKey is Function\n return typeof tooltipAxis.dataKey === 'function' ? tooltipAxis.dataKey(entry.payload) : null;\n }\n if (hasActive) {\n if (activeTooltipIndex >= 0) {\n var activePoint, basePoint;\n if (tooltipAxis.dataKey && !tooltipAxis.allowDuplicatedCategory) {\n // number transform to string\n var specifiedKey = typeof tooltipAxis.dataKey === 'function' ? findWithPayload : 'payload.'.concat(tooltipAxis.dataKey.toString());\n activePoint = findEntryInArray(points, specifiedKey, activeLabel);\n basePoint = isRange && baseLine && findEntryInArray(baseLine, specifiedKey, activeLabel);\n } else {\n activePoint = points === null || points === void 0 ? void 0 : points[activeTooltipIndex];\n basePoint = isRange && baseLine && baseLine[activeTooltipIndex];\n }\n if (activeShape || activeBar) {\n var activeIndex = element.props.activeIndex !== undefined ? element.props.activeIndex : activeTooltipIndex;\n return [/*#__PURE__*/cloneElement(element, _objectSpread(_objectSpread(_objectSpread({}, item.props), itemEvents), {}, {\n activeIndex: activeIndex\n })), null, null];\n }\n if (!isNil(activePoint)) {\n return [graphicalItem].concat(_toConsumableArray(_this.renderActivePoints({\n item: item,\n activePoint: activePoint,\n basePoint: basePoint,\n childIndex: activeTooltipIndex,\n isRange: isRange\n })));\n }\n } else {\n var _this$getItemByXY;\n /**\n * We hit this block if consumer uses a Tooltip without XAxis and/or YAxis.\n * In which case, this.state.activeTooltipIndex never gets set\n * because the mouse events that trigger that value getting set never get trigged without the axis components.\n *\n * An example usage case is a FunnelChart\n */\n var _ref11 = (_this$getItemByXY = _this.getItemByXY(_this.state.activeCoordinate)) !== null && _this$getItemByXY !== void 0 ? _this$getItemByXY : {\n graphicalItem: graphicalItem\n },\n _ref11$graphicalItem = _ref11.graphicalItem,\n _ref11$graphicalItem$ = _ref11$graphicalItem.item,\n xyItem = _ref11$graphicalItem$ === void 0 ? element : _ref11$graphicalItem$,\n childIndex = _ref11$graphicalItem.childIndex;\n var elementProps = _objectSpread(_objectSpread(_objectSpread({}, item.props), itemEvents), {}, {\n activeIndex: childIndex\n });\n return [/*#__PURE__*/cloneElement(xyItem, elementProps), null, null];\n }\n }\n if (isRange) {\n return [graphicalItem, null, null];\n }\n return [graphicalItem, null];\n });\n _defineProperty(_assertThisInitialized(_this), \"renderCustomized\", function (element, displayName, index) {\n return /*#__PURE__*/cloneElement(element, _objectSpread(_objectSpread({\n key: \"recharts-customized-\".concat(index)\n }, _this.props), _this.state));\n });\n _defineProperty(_assertThisInitialized(_this), \"renderMap\", {\n CartesianGrid: {\n handler: renderAsIs,\n once: true\n },\n ReferenceArea: {\n handler: _this.renderReferenceElement\n },\n ReferenceLine: {\n handler: renderAsIs\n },\n ReferenceDot: {\n handler: _this.renderReferenceElement\n },\n XAxis: {\n handler: renderAsIs\n },\n YAxis: {\n handler: renderAsIs\n },\n Brush: {\n handler: _this.renderBrush,\n once: true\n },\n Bar: {\n handler: _this.renderGraphicChild\n },\n Line: {\n handler: _this.renderGraphicChild\n },\n Area: {\n handler: _this.renderGraphicChild\n },\n Radar: {\n handler: _this.renderGraphicChild\n },\n RadialBar: {\n handler: _this.renderGraphicChild\n },\n Scatter: {\n handler: _this.renderGraphicChild\n },\n Pie: {\n handler: _this.renderGraphicChild\n },\n Funnel: {\n handler: _this.renderGraphicChild\n },\n Tooltip: {\n handler: _this.renderCursor,\n once: true\n },\n PolarGrid: {\n handler: _this.renderPolarGrid,\n once: true\n },\n PolarAngleAxis: {\n handler: _this.renderPolarAxis\n },\n PolarRadiusAxis: {\n handler: _this.renderPolarAxis\n },\n Customized: {\n handler: _this.renderCustomized\n }\n });\n _this.clipPathId = \"\".concat((_props$id = _props.id) !== null && _props$id !== void 0 ? _props$id : uniqueId('recharts'), \"-clip\");\n\n // trigger 60fps\n _this.throttleTriggeredAfterMouseMove = throttle(_this.triggeredAfterMouseMove, (_props$throttleDelay = _props.throttleDelay) !== null && _props$throttleDelay !== void 0 ? _props$throttleDelay : 1000 / 60);\n _this.state = {};\n return _this;\n }\n _createClass(CategoricalChartWrapper, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var _this$props$margin$le, _this$props$margin$to;\n this.addListener();\n this.accessibilityManager.setDetails({\n container: this.container,\n offset: {\n left: (_this$props$margin$le = this.props.margin.left) !== null && _this$props$margin$le !== void 0 ? _this$props$margin$le : 0,\n top: (_this$props$margin$to = this.props.margin.top) !== null && _this$props$margin$to !== void 0 ? _this$props$margin$to : 0\n },\n coordinateList: this.state.tooltipTicks,\n mouseHandlerCallback: this.triggeredAfterMouseMove,\n layout: this.props.layout\n });\n this.displayDefaultTooltip();\n }\n }, {\n key: \"displayDefaultTooltip\",\n value: function displayDefaultTooltip() {\n var _this$props5 = this.props,\n children = _this$props5.children,\n data = _this$props5.data,\n height = _this$props5.height,\n layout = _this$props5.layout;\n var tooltipElem = findChildByType(children, Tooltip);\n // If the chart doesn't include a <Tooltip /> element, there's no tooltip to display\n if (!tooltipElem) {\n return;\n }\n var defaultIndex = tooltipElem.props.defaultIndex;\n\n // Protect against runtime errors\n if (typeof defaultIndex !== 'number' || defaultIndex < 0 || defaultIndex > this.state.tooltipTicks.length) {\n return;\n }\n var activeLabel = this.state.tooltipTicks[defaultIndex] && this.state.tooltipTicks[defaultIndex].value;\n var activePayload = getTooltipContent(this.state, data, defaultIndex, activeLabel);\n var independentAxisCoord = this.state.tooltipTicks[defaultIndex].coordinate;\n var dependentAxisCoord = (this.state.offset.top + height) / 2;\n var isHorizontal = layout === 'horizontal';\n var activeCoordinate = isHorizontal ? {\n x: independentAxisCoord,\n y: dependentAxisCoord\n } : {\n y: independentAxisCoord,\n x: dependentAxisCoord\n };\n\n // Unlike other chart types, scatter plot's tooltip positions rely on both X and Y coordinates. Only the scatter plot\n // element knows its own Y coordinates.\n // If there's a scatter plot, we'll want to grab that element for an interrogation.\n var scatterPlotElement = this.state.formattedGraphicalItems.find(function (_ref12) {\n var item = _ref12.item;\n return item.type.name === 'Scatter';\n });\n if (scatterPlotElement) {\n activeCoordinate = _objectSpread(_objectSpread({}, activeCoordinate), scatterPlotElement.props.points[defaultIndex].tooltipPosition);\n activePayload = scatterPlotElement.props.points[defaultIndex].tooltipPayload;\n }\n var nextState = {\n activeTooltipIndex: defaultIndex,\n isTooltipActive: true,\n activeLabel: activeLabel,\n activePayload: activePayload,\n activeCoordinate: activeCoordinate\n };\n this.setState(nextState);\n this.renderCursor(tooltipElem);\n\n // Make sure that anyone who keyboard-only users who tab to the chart will start their\n // cursors at defaultIndex\n this.accessibilityManager.setIndex(defaultIndex);\n }\n }, {\n key: \"getSnapshotBeforeUpdate\",\n value: function getSnapshotBeforeUpdate(prevProps, prevState) {\n if (!this.props.accessibilityLayer) {\n return null;\n }\n if (this.state.tooltipTicks !== prevState.tooltipTicks) {\n this.accessibilityManager.setDetails({\n coordinateList: this.state.tooltipTicks\n });\n }\n if (this.props.layout !== prevProps.layout) {\n this.accessibilityManager.setDetails({\n layout: this.props.layout\n });\n }\n if (this.props.margin !== prevProps.margin) {\n var _this$props$margin$le2, _this$props$margin$to2;\n this.accessibilityManager.setDetails({\n offset: {\n left: (_this$props$margin$le2 = this.props.margin.left) !== null && _this$props$margin$le2 !== void 0 ? _this$props$margin$le2 : 0,\n top: (_this$props$margin$to2 = this.props.margin.top) !== null && _this$props$margin$to2 !== void 0 ? _this$props$margin$to2 : 0\n }\n });\n }\n\n // Something has to be returned for getSnapshotBeforeUpdate\n return null;\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n // Check to see if the Tooltip updated. If so, re-check default tooltip position\n if (!isChildrenEqual([findChildByType(prevProps.children, Tooltip)], [findChildByType(this.props.children, Tooltip)])) {\n this.displayDefaultTooltip();\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.removeListener();\n this.throttleTriggeredAfterMouseMove.cancel();\n }\n }, {\n key: \"getTooltipEventType\",\n value: function getTooltipEventType() {\n var tooltipItem = findChildByType(this.props.children, Tooltip);\n if (tooltipItem && typeof tooltipItem.props.shared === 'boolean') {\n var eventType = tooltipItem.props.shared ? 'axis' : 'item';\n return validateTooltipEventTypes.indexOf(eventType) >= 0 ? eventType : defaultTooltipEventType;\n }\n return defaultTooltipEventType;\n }\n\n /**\n * Get the information of mouse in chart, return null when the mouse is not in the chart\n * @param {MousePointer} event The event object\n * @return {Object} Mouse data\n */\n }, {\n key: \"getMouseInfo\",\n value: function getMouseInfo(event) {\n if (!this.container) {\n return null;\n }\n var element = this.container;\n var boundingRect = element.getBoundingClientRect();\n var containerOffset = getOffset(boundingRect);\n var e = {\n chartX: Math.round(event.pageX - containerOffset.left),\n chartY: Math.round(event.pageY - containerOffset.top)\n };\n var scale = boundingRect.width / element.offsetWidth || 1;\n var rangeObj = this.inRange(e.chartX, e.chartY, scale);\n if (!rangeObj) {\n return null;\n }\n var _this$state9 = this.state,\n xAxisMap = _this$state9.xAxisMap,\n yAxisMap = _this$state9.yAxisMap;\n var tooltipEventType = this.getTooltipEventType();\n if (tooltipEventType !== 'axis' && xAxisMap && yAxisMap) {\n var xScale = getAnyElementOfObject(xAxisMap).scale;\n var yScale = getAnyElementOfObject(yAxisMap).scale;\n var xValue = xScale && xScale.invert ? xScale.invert(e.chartX) : null;\n var yValue = yScale && yScale.invert ? yScale.invert(e.chartY) : null;\n return _objectSpread(_objectSpread({}, e), {}, {\n xValue: xValue,\n yValue: yValue\n });\n }\n var toolTipData = getTooltipData(this.state, this.props.data, this.props.layout, rangeObj);\n if (toolTipData) {\n return _objectSpread(_objectSpread({}, e), toolTipData);\n }\n return null;\n }\n }, {\n key: \"inRange\",\n value: function inRange(x, y) {\n var scale = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n var layout = this.props.layout;\n var scaledX = x / scale,\n scaledY = y / scale;\n if (layout === 'horizontal' || layout === 'vertical') {\n var offset = this.state.offset;\n var isInRange = scaledX >= offset.left && scaledX <= offset.left + offset.width && scaledY >= offset.top && scaledY <= offset.top + offset.height;\n return isInRange ? {\n x: scaledX,\n y: scaledY\n } : null;\n }\n var _this$state10 = this.state,\n angleAxisMap = _this$state10.angleAxisMap,\n radiusAxisMap = _this$state10.radiusAxisMap;\n if (angleAxisMap && radiusAxisMap) {\n var angleAxis = getAnyElementOfObject(angleAxisMap);\n return inRangeOfSector({\n x: scaledX,\n y: scaledY\n }, angleAxis);\n }\n return null;\n }\n }, {\n key: \"parseEventsOfWrapper\",\n value: function parseEventsOfWrapper() {\n var children = this.props.children;\n var tooltipEventType = this.getTooltipEventType();\n var tooltipItem = findChildByType(children, Tooltip);\n var tooltipEvents = {};\n if (tooltipItem && tooltipEventType === 'axis') {\n if (tooltipItem.props.trigger === 'click') {\n tooltipEvents = {\n onClick: this.handleClick\n };\n } else {\n tooltipEvents = {\n onMouseEnter: this.handleMouseEnter,\n onMouseMove: this.handleMouseMove,\n onMouseLeave: this.handleMouseLeave,\n onTouchMove: this.handleTouchMove,\n onTouchStart: this.handleTouchStart,\n onTouchEnd: this.handleTouchEnd\n };\n }\n }\n\n // @ts-expect-error adaptEventHandlers expects DOM Event but generateCategoricalChart works with React UIEvents\n var outerEvents = adaptEventHandlers(this.props, this.handleOuterEvent);\n return _objectSpread(_objectSpread({}, outerEvents), tooltipEvents);\n }\n }, {\n key: \"addListener\",\n value: function addListener() {\n eventCenter.on(SYNC_EVENT, this.handleReceiveSyncEvent);\n }\n }, {\n key: \"removeListener\",\n value: function removeListener() {\n eventCenter.removeListener(SYNC_EVENT, this.handleReceiveSyncEvent);\n }\n }, {\n key: \"filterFormatItem\",\n value: function filterFormatItem(item, displayName, childIndex) {\n var formattedGraphicalItems = this.state.formattedGraphicalItems;\n for (var i = 0, len = formattedGraphicalItems.length; i < len; i++) {\n var entry = formattedGraphicalItems[i];\n if (entry.item === item || entry.props.key === item.key || displayName === getDisplayName(entry.item.type) && childIndex === entry.childIndex) {\n return entry;\n }\n }\n return null;\n }\n }, {\n key: \"renderClipPath\",\n value: function renderClipPath() {\n var clipPathId = this.clipPathId;\n var _this$state$offset = this.state.offset,\n left = _this$state$offset.left,\n top = _this$state$offset.top,\n height = _this$state$offset.height,\n width = _this$state$offset.width;\n return /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", {\n id: clipPathId\n }, /*#__PURE__*/React.createElement(\"rect\", {\n x: left,\n y: top,\n height: height,\n width: width\n })));\n }\n }, {\n key: \"getXScales\",\n value: function getXScales() {\n var xAxisMap = this.state.xAxisMap;\n return xAxisMap ? Object.entries(xAxisMap).reduce(function (res, _ref13) {\n var _ref14 = _slicedToArray(_ref13, 2),\n axisId = _ref14[0],\n axisProps = _ref14[1];\n return _objectSpread(_objectSpread({}, res), {}, _defineProperty({}, axisId, axisProps.scale));\n }, {}) : null;\n }\n }, {\n key: \"getYScales\",\n value: function getYScales() {\n var yAxisMap = this.state.yAxisMap;\n return yAxisMap ? Object.entries(yAxisMap).reduce(function (res, _ref15) {\n var _ref16 = _slicedToArray(_ref15, 2),\n axisId = _ref16[0],\n axisProps = _ref16[1];\n return _objectSpread(_objectSpread({}, res), {}, _defineProperty({}, axisId, axisProps.scale));\n }, {}) : null;\n }\n }, {\n key: \"getXScaleByAxisId\",\n value: function getXScaleByAxisId(axisId) {\n var _this$state$xAxisMap;\n return (_this$state$xAxisMap = this.state.xAxisMap) === null || _this$state$xAxisMap === void 0 || (_this$state$xAxisMap = _this$state$xAxisMap[axisId]) === null || _this$state$xAxisMap === void 0 ? void 0 : _this$state$xAxisMap.scale;\n }\n }, {\n key: \"getYScaleByAxisId\",\n value: function getYScaleByAxisId(axisId) {\n var _this$state$yAxisMap;\n return (_this$state$yAxisMap = this.state.yAxisMap) === null || _this$state$yAxisMap === void 0 || (_this$state$yAxisMap = _this$state$yAxisMap[axisId]) === null || _this$state$yAxisMap === void 0 ? void 0 : _this$state$yAxisMap.scale;\n }\n }, {\n key: \"getItemByXY\",\n value: function getItemByXY(chartXY) {\n var _this$state11 = this.state,\n formattedGraphicalItems = _this$state11.formattedGraphicalItems,\n activeItem = _this$state11.activeItem;\n if (formattedGraphicalItems && formattedGraphicalItems.length) {\n for (var i = 0, len = formattedGraphicalItems.length; i < len; i++) {\n var graphicalItem = formattedGraphicalItems[i];\n var props = graphicalItem.props,\n item = graphicalItem.item;\n var itemDisplayName = getDisplayName(item.type);\n if (itemDisplayName === 'Bar') {\n var activeBarItem = (props.data || []).find(function (entry) {\n return isInRectangle(chartXY, entry);\n });\n if (activeBarItem) {\n return {\n graphicalItem: graphicalItem,\n payload: activeBarItem\n };\n }\n } else if (itemDisplayName === 'RadialBar') {\n var _activeBarItem = (props.data || []).find(function (entry) {\n return inRangeOfSector(chartXY, entry);\n });\n if (_activeBarItem) {\n return {\n graphicalItem: graphicalItem,\n payload: _activeBarItem\n };\n }\n } else if (isFunnel(graphicalItem, activeItem) || isPie(graphicalItem, activeItem) || isScatter(graphicalItem, activeItem)) {\n var activeIndex = getActiveShapeIndexForTooltip({\n graphicalItem: graphicalItem,\n activeTooltipItem: activeItem,\n itemData: item.props.data\n });\n var childIndex = item.props.activeIndex === undefined ? activeIndex : item.props.activeIndex;\n return {\n graphicalItem: _objectSpread(_objectSpread({}, graphicalItem), {}, {\n childIndex: childIndex\n }),\n payload: isScatter(graphicalItem, activeItem) ? item.props.data[activeIndex] : graphicalItem.props.data[activeIndex]\n };\n }\n }\n }\n return null;\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n if (!validateWidthHeight(this)) {\n return null;\n }\n var _this$props6 = this.props,\n children = _this$props6.children,\n className = _this$props6.className,\n width = _this$props6.width,\n height = _this$props6.height,\n style = _this$props6.style,\n compact = _this$props6.compact,\n title = _this$props6.title,\n desc = _this$props6.desc,\n others = _objectWithoutProperties(_this$props6, _excluded2);\n var attrs = filterProps(others, false);\n\n // The \"compact\" mode is mainly used as the panorama within Brush\n if (compact) {\n return /*#__PURE__*/React.createElement(ChartLayoutContextProvider, {\n state: this.state,\n width: this.props.width,\n height: this.props.height,\n clipPathId: this.clipPathId\n }, /*#__PURE__*/React.createElement(Surface, _extends({}, attrs, {\n width: width,\n height: height,\n title: title,\n desc: desc\n }), this.renderClipPath(), renderByOrder(children, this.renderMap)));\n }\n if (this.props.accessibilityLayer) {\n var _this$props$tabIndex, _this$props$role;\n // Set tabIndex to 0 by default (can be overwritten)\n attrs.tabIndex = (_this$props$tabIndex = this.props.tabIndex) !== null && _this$props$tabIndex !== void 0 ? _this$props$tabIndex : 0;\n // Set role to img by default (can be overwritten)\n attrs.role = (_this$props$role = this.props.role) !== null && _this$props$role !== void 0 ? _this$props$role : 'application';\n attrs.onKeyDown = function (e) {\n _this2.accessibilityManager.keyboardEvent(e);\n // 'onKeyDown' is not currently a supported prop that can be passed through\n // if it's added, this should be added: this.props.onKeyDown(e);\n };\n attrs.onFocus = function () {\n _this2.accessibilityManager.focus();\n // 'onFocus' is not currently a supported prop that can be passed through\n // if it's added, the focus event should be forwarded to the prop\n };\n }\n var events = this.parseEventsOfWrapper();\n return /*#__PURE__*/React.createElement(ChartLayoutContextProvider, {\n state: this.state,\n width: this.props.width,\n height: this.props.height,\n clipPathId: this.clipPathId\n }, /*#__PURE__*/React.createElement(\"div\", _extends({\n className: clsx('recharts-wrapper', className),\n style: _objectSpread({\n position: 'relative',\n cursor: 'default',\n width: width,\n height: height\n }, style)\n }, events, {\n ref: function ref(node) {\n _this2.container = node;\n }\n }), /*#__PURE__*/React.createElement(Surface, _extends({}, attrs, {\n width: width,\n height: height,\n title: title,\n desc: desc,\n style: FULL_WIDTH_AND_HEIGHT\n }), this.renderClipPath(), renderByOrder(children, this.renderMap)), this.renderLegend(), this.renderTooltip()));\n }\n }]);\n return CategoricalChartWrapper;\n }(Component), _defineProperty(_CategoricalChartWrapper, \"displayName\", chartName), _defineProperty(_CategoricalChartWrapper, \"defaultProps\", _objectSpread({\n layout: 'horizontal',\n stackOffset: 'none',\n barCategoryGap: '10%',\n barGap: 4,\n margin: {\n top: 5,\n right: 5,\n bottom: 5,\n left: 5\n },\n reverseStackOrder: false,\n syncMethod: 'index'\n }, defaultProps)), _defineProperty(_CategoricalChartWrapper, \"getDerivedStateFromProps\", function (nextProps, prevState) {\n var dataKey = nextProps.dataKey,\n data = nextProps.data,\n children = nextProps.children,\n width = nextProps.width,\n height = nextProps.height,\n layout = nextProps.layout,\n stackOffset = nextProps.stackOffset,\n margin = nextProps.margin;\n var dataStartIndex = prevState.dataStartIndex,\n dataEndIndex = prevState.dataEndIndex;\n if (prevState.updateId === undefined) {\n var defaultState = createDefaultState(nextProps);\n return _objectSpread(_objectSpread(_objectSpread({}, defaultState), {}, {\n updateId: 0\n }, updateStateOfAxisMapsOffsetAndStackGroups(_objectSpread(_objectSpread({\n props: nextProps\n }, defaultState), {}, {\n updateId: 0\n }), prevState)), {}, {\n prevDataKey: dataKey,\n prevData: data,\n prevWidth: width,\n prevHeight: height,\n prevLayout: layout,\n prevStackOffset: stackOffset,\n prevMargin: margin,\n prevChildren: children\n });\n }\n if (dataKey !== prevState.prevDataKey || data !== prevState.prevData || width !== prevState.prevWidth || height !== prevState.prevHeight || layout !== prevState.prevLayout || stackOffset !== prevState.prevStackOffset || !shallowEqual(margin, prevState.prevMargin)) {\n var _defaultState = createDefaultState(nextProps);\n\n // Fixes https://github.com/recharts/recharts/issues/2143\n var keepFromPrevState = {\n // (chartX, chartY) are (0,0) in default state, but we want to keep the last mouse position to avoid\n // any flickering\n chartX: prevState.chartX,\n chartY: prevState.chartY,\n // The tooltip should stay active when it was active in the previous render. If this is not\n // the case, the tooltip disappears and immediately re-appears, causing a flickering effect\n isTooltipActive: prevState.isTooltipActive\n };\n var updatesToState = _objectSpread(_objectSpread({}, getTooltipData(prevState, data, layout)), {}, {\n updateId: prevState.updateId + 1\n });\n var newState = _objectSpread(_objectSpread(_objectSpread({}, _defaultState), keepFromPrevState), updatesToState);\n return _objectSpread(_objectSpread(_objectSpread({}, newState), updateStateOfAxisMapsOffsetAndStackGroups(_objectSpread({\n props: nextProps\n }, newState), prevState)), {}, {\n prevDataKey: dataKey,\n prevData: data,\n prevWidth: width,\n prevHeight: height,\n prevLayout: layout,\n prevStackOffset: stackOffset,\n prevMargin: margin,\n prevChildren: children\n });\n }\n if (!isChildrenEqual(children, prevState.prevChildren)) {\n var _brush$props$startInd, _brush$props, _brush$props$endIndex, _brush$props2;\n // specifically check for Brush - if it exists and the start and end indexes are different, re-render with the new ones\n var brush = findChildByType(children, Brush);\n var startIndex = brush ? (_brush$props$startInd = (_brush$props = brush.props) === null || _brush$props === void 0 ? void 0 : _brush$props.startIndex) !== null && _brush$props$startInd !== void 0 ? _brush$props$startInd : dataStartIndex : dataStartIndex;\n var endIndex = brush ? (_brush$props$endIndex = (_brush$props2 = brush.props) === null || _brush$props2 === void 0 ? void 0 : _brush$props2.endIndex) !== null && _brush$props$endIndex !== void 0 ? _brush$props$endIndex : dataEndIndex : dataEndIndex;\n var hasDifferentStartOrEndIndex = startIndex !== dataStartIndex || endIndex !== dataEndIndex;\n\n // update configuration in children\n var hasGlobalData = !isNil(data);\n var newUpdateId = hasGlobalData && !hasDifferentStartOrEndIndex ? prevState.updateId : prevState.updateId + 1;\n return _objectSpread(_objectSpread({\n updateId: newUpdateId\n }, updateStateOfAxisMapsOffsetAndStackGroups(_objectSpread(_objectSpread({\n props: nextProps\n }, prevState), {}, {\n updateId: newUpdateId,\n dataStartIndex: startIndex,\n dataEndIndex: endIndex\n }), prevState)), {}, {\n prevChildren: children,\n dataStartIndex: startIndex,\n dataEndIndex: endIndex\n });\n }\n return null;\n }), _defineProperty(_CategoricalChartWrapper, \"renderActiveDot\", function (option, props) {\n var dot;\n if ( /*#__PURE__*/isValidElement(option)) {\n dot = /*#__PURE__*/cloneElement(option, props);\n } else if (isFunction(option)) {\n dot = option(props);\n } else {\n dot = /*#__PURE__*/React.createElement(Dot, props);\n }\n return /*#__PURE__*/React.createElement(Layer, {\n className: \"recharts-active-dot\",\n key: props.key\n }, dot);\n }), _CategoricalChartWrapper;\n};","import { isNumber } from './DataUtils';\n/**\n * Takes a domain and user props to determine whether he provided the domain via props or if we need to calculate it.\n * @param {AxisDomain} domain The potential domain from props\n * @param {Boolean} allowDataOverflow from props\n * @param {String} axisType from props\n * @returns {Boolean} `true` if domain is specified by user\n */\nexport function isDomainSpecifiedByUser(domain, allowDataOverflow, axisType) {\n if (axisType === 'number' && allowDataOverflow === true && Array.isArray(domain)) {\n var domainStart = domain === null || domain === void 0 ? void 0 : domain[0];\n var domainEnd = domain === null || domain === void 0 ? void 0 : domain[1];\n\n /*\n * The `isNumber` check is needed because the user could also provide strings like \"dataMin\" via the domain props.\n * In such case, we have to compute the domain from the data.\n */\n if (!!domainStart && !!domainEnd && isNumber(domainStart) && isNumber(domainEnd)) {\n return true;\n }\n }\n return false;\n}","/**\n * Given an array and a number N, return a new array which contains every nTh\n * element of the input array. For n below 1, an empty array is returned.\n * If isValid is provided, all candidates must suffice the condition, else undefined is returned.\n * @param {T[]} array An input array.\n * @param {integer} n A number\n * @param {Function} isValid A function to evaluate a candidate form the array\n * @returns {T[]} The result array of the same type as the input array.\n */\nexport function getEveryNthWithCondition(array, n, isValid) {\n if (n < 1) {\n return [];\n }\n if (n === 1 && isValid === undefined) {\n return array;\n }\n var result = [];\n for (var i = 0; i < array.length; i += n) {\n if (isValid === undefined || isValid(array[i]) === true) {\n result.push(array[i]);\n } else {\n return undefined;\n }\n }\n return result;\n}","import { getAngledRectangleWidth } from './CartesianUtils';\nimport { getEveryNthWithCondition } from './getEveryNthWithCondition';\nexport function getAngledTickWidth(contentSize, unitSize, angle) {\n var size = {\n width: contentSize.width + unitSize.width,\n height: contentSize.height + unitSize.height\n };\n return getAngledRectangleWidth(size, angle);\n}\nexport function getTickBoundaries(viewBox, sign, sizeKey) {\n var isWidth = sizeKey === 'width';\n var x = viewBox.x,\n y = viewBox.y,\n width = viewBox.width,\n height = viewBox.height;\n if (sign === 1) {\n return {\n start: isWidth ? x : y,\n end: isWidth ? x + width : y + height\n };\n }\n return {\n start: isWidth ? x + width : y + height,\n end: isWidth ? x : y\n };\n}\nexport function isVisible(sign, tickPosition, getSize, start, end) {\n /* Since getSize() is expensive (it reads the ticks' size from the DOM), we do this check first to avoid calculating\n * the tick's size. */\n if (sign * tickPosition < sign * start || sign * tickPosition > sign * end) {\n return false;\n }\n var size = getSize();\n return sign * (tickPosition - sign * size / 2 - start) >= 0 && sign * (tickPosition + sign * size / 2 - end) <= 0;\n}\nexport function getNumberIntervalTicks(ticks, interval) {\n return getEveryNthWithCondition(ticks, interval + 1);\n}","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : String(i); }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport isFunction from 'lodash/isFunction';\nimport { mathSign, isNumber } from '../util/DataUtils';\nimport { getStringSize } from '../util/DOMUtils';\nimport { Global } from '../util/Global';\nimport { isVisible, getTickBoundaries, getNumberIntervalTicks, getAngledTickWidth } from '../util/TickUtils';\nimport { getEquidistantTicks } from './getEquidistantTicks';\nfunction getTicksEnd(sign, boundaries, getTickSize, ticks, minTickGap) {\n var result = (ticks || []).slice();\n var len = result.length;\n var start = boundaries.start;\n var end = boundaries.end;\n var _loop = function _loop(i) {\n var entry = result[i];\n var size;\n var getSize = function getSize() {\n if (size === undefined) {\n size = getTickSize(entry, i);\n }\n return size;\n };\n if (i === len - 1) {\n var gap = sign * (entry.coordinate + sign * getSize() / 2 - end);\n result[i] = entry = _objectSpread(_objectSpread({}, entry), {}, {\n tickCoord: gap > 0 ? entry.coordinate - gap * sign : entry.coordinate\n });\n } else {\n result[i] = entry = _objectSpread(_objectSpread({}, entry), {}, {\n tickCoord: entry.coordinate\n });\n }\n var isShow = isVisible(sign, entry.tickCoord, getSize, start, end);\n if (isShow) {\n end = entry.tickCoord - sign * (getSize() / 2 + minTickGap);\n result[i] = _objectSpread(_objectSpread({}, entry), {}, {\n isShow: true\n });\n }\n };\n for (var i = len - 1; i >= 0; i--) {\n _loop(i);\n }\n return result;\n}\nfunction getTicksStart(sign, boundaries, getTickSize, ticks, minTickGap, preserveEnd) {\n var result = (ticks || []).slice();\n var len = result.length;\n var start = boundaries.start,\n end = boundaries.end;\n if (preserveEnd) {\n // Try to guarantee the tail to be displayed\n var tail = ticks[len - 1];\n var tailSize = getTickSize(tail, len - 1);\n var tailGap = sign * (tail.coordinate + sign * tailSize / 2 - end);\n result[len - 1] = tail = _objectSpread(_objectSpread({}, tail), {}, {\n tickCoord: tailGap > 0 ? tail.coordinate - tailGap * sign : tail.coordinate\n });\n var isTailShow = isVisible(sign, tail.tickCoord, function () {\n return tailSize;\n }, start, end);\n if (isTailShow) {\n end = tail.tickCoord - sign * (tailSize / 2 + minTickGap);\n result[len - 1] = _objectSpread(_objectSpread({}, tail), {}, {\n isShow: true\n });\n }\n }\n var count = preserveEnd ? len - 1 : len;\n var _loop2 = function _loop2(i) {\n var entry = result[i];\n var size;\n var getSize = function getSize() {\n if (size === undefined) {\n size = getTickSize(entry, i);\n }\n return size;\n };\n if (i === 0) {\n var gap = sign * (entry.coordinate - sign * getSize() / 2 - start);\n result[i] = entry = _objectSpread(_objectSpread({}, entry), {}, {\n tickCoord: gap < 0 ? entry.coordinate - gap * sign : entry.coordinate\n });\n } else {\n result[i] = entry = _objectSpread(_objectSpread({}, entry), {}, {\n tickCoord: entry.coordinate\n });\n }\n var isShow = isVisible(sign, entry.tickCoord, getSize, start, end);\n if (isShow) {\n start = entry.tickCoord + sign * (getSize() / 2 + minTickGap);\n result[i] = _objectSpread(_objectSpread({}, entry), {}, {\n isShow: true\n });\n }\n };\n for (var i = 0; i < count; i++) {\n _loop2(i);\n }\n return result;\n}\nexport function getTicks(props, fontSize, letterSpacing) {\n var tick = props.tick,\n ticks = props.ticks,\n viewBox = props.viewBox,\n minTickGap = props.minTickGap,\n orientation = props.orientation,\n interval = props.interval,\n tickFormatter = props.tickFormatter,\n unit = props.unit,\n angle = props.angle;\n if (!ticks || !ticks.length || !tick) {\n return [];\n }\n if (isNumber(interval) || Global.isSsr) {\n return getNumberIntervalTicks(ticks, typeof interval === 'number' && isNumber(interval) ? interval : 0);\n }\n var candidates = [];\n var sizeKey = orientation === 'top' || orientation === 'bottom' ? 'width' : 'height';\n var unitSize = unit && sizeKey === 'width' ? getStringSize(unit, {\n fontSize: fontSize,\n letterSpacing: letterSpacing\n }) : {\n width: 0,\n height: 0\n };\n var getTickSize = function getTickSize(content, index) {\n var value = isFunction(tickFormatter) ? tickFormatter(content.value, index) : content.value;\n // Recharts only supports angles when sizeKey === 'width'\n return sizeKey === 'width' ? getAngledTickWidth(getStringSize(value, {\n fontSize: fontSize,\n letterSpacing: letterSpacing\n }), unitSize, angle) : getStringSize(value, {\n fontSize: fontSize,\n letterSpacing: letterSpacing\n })[sizeKey];\n };\n var sign = ticks.length >= 2 ? mathSign(ticks[1].coordinate - ticks[0].coordinate) : 1;\n var boundaries = getTickBoundaries(viewBox, sign, sizeKey);\n if (interval === 'equidistantPreserveStart') {\n return getEquidistantTicks(sign, boundaries, getTickSize, ticks, minTickGap);\n }\n if (interval === 'preserveStart' || interval === 'preserveStartEnd') {\n candidates = getTicksStart(sign, boundaries, getTickSize, ticks, minTickGap, interval === 'preserveStartEnd');\n } else {\n candidates = getTicksEnd(sign, boundaries, getTickSize, ticks, minTickGap);\n }\n return candidates.filter(function (entry) {\n return entry.isShow;\n });\n}","import { isVisible } from '../util/TickUtils';\nimport { getEveryNthWithCondition } from '../util/getEveryNthWithCondition';\nexport function getEquidistantTicks(sign, boundaries, getTickSize, ticks, minTickGap) {\n var result = (ticks || []).slice();\n var initialStart = boundaries.start,\n end = boundaries.end;\n var index = 0;\n // Premature optimisation idea 1: Estimate a lower bound, and start from there.\n // For now, start from every tick\n var stepsize = 1;\n var start = initialStart;\n var _loop = function _loop() {\n // Given stepsize, evaluate whether every stepsize-th tick can be shown.\n // If it can not, then increase the stepsize by 1, and try again.\n\n var entry = ticks === null || ticks === void 0 ? void 0 : ticks[index];\n\n // Break condition - If we have evaluate all the ticks, then we are done.\n if (entry === undefined) {\n return {\n v: getEveryNthWithCondition(ticks, stepsize)\n };\n }\n\n // Check if the element collides with the next element\n var i = index;\n var size;\n var getSize = function getSize() {\n if (size === undefined) {\n size = getTickSize(entry, i);\n }\n return size;\n };\n var tickCoord = entry.coordinate;\n // We will always show the first tick.\n var isShow = index === 0 || isVisible(sign, tickCoord, getSize, start, end);\n if (!isShow) {\n // Start all over with a larger stepsize\n index = 0;\n start = initialStart;\n stepsize += 1;\n }\n if (isShow) {\n // If it can be shown, update the start\n start = tickCoord + sign * (getSize() / 2 + minTickGap);\n index += stepsize;\n }\n },\n _ret;\n while (stepsize <= result.length) {\n _ret = _loop();\n if (_ret) return _ret.v;\n }\n return [];\n}","var _excluded = [\"viewBox\"],\n _excluded2 = [\"viewBox\"],\n _excluded3 = [\"ticks\"];\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : String(i); }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/**\n * @fileOverview Cartesian Axis\n */\nimport React, { Component } from 'react';\nimport isFunction from 'lodash/isFunction';\nimport get from 'lodash/get';\nimport clsx from 'clsx';\nimport { shallowEqual } from '../util/ShallowEqual';\nimport { Layer } from '../container/Layer';\nimport { Text } from '../component/Text';\nimport { Label } from '../component/Label';\nimport { isNumber } from '../util/DataUtils';\nimport { adaptEventsOfChild } from '../util/types';\nimport { filterProps } from '../util/ReactUtils';\nimport { getTicks } from './getTicks';\n\n/** The orientation of the axis in correspondence to the chart */\n\n/** A unit to be appended to a value */\n\n/** The formatter function of tick */\n\nexport var CartesianAxis = /*#__PURE__*/function (_Component) {\n _inherits(CartesianAxis, _Component);\n function CartesianAxis(props) {\n var _this;\n _classCallCheck(this, CartesianAxis);\n _this = _callSuper(this, CartesianAxis, [props]);\n _this.state = {\n fontSize: '',\n letterSpacing: ''\n };\n return _this;\n }\n _createClass(CartesianAxis, [{\n key: \"shouldComponentUpdate\",\n value: function shouldComponentUpdate(_ref, nextState) {\n var viewBox = _ref.viewBox,\n restProps = _objectWithoutProperties(_ref, _excluded);\n // props.viewBox is sometimes generated every time -\n // check that specially as object equality is likely to fail\n var _this$props = this.props,\n viewBoxOld = _this$props.viewBox,\n restPropsOld = _objectWithoutProperties(_this$props, _excluded2);\n return !shallowEqual(viewBox, viewBoxOld) || !shallowEqual(restProps, restPropsOld) || !shallowEqual(nextState, this.state);\n }\n }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var htmlLayer = this.layerReference;\n if (!htmlLayer) return;\n var tick = htmlLayer.getElementsByClassName('recharts-cartesian-axis-tick-value')[0];\n if (tick) {\n this.setState({\n fontSize: window.getComputedStyle(tick).fontSize,\n letterSpacing: window.getComputedStyle(tick).letterSpacing\n });\n }\n }\n\n /**\n * Calculate the coordinates of endpoints in ticks\n * @param {Object} data The data of a simple tick\n * @return {Object} (x1, y1): The coordinate of endpoint close to tick text\n * (x2, y2): The coordinate of endpoint close to axis\n */\n }, {\n key: \"getTickLineCoord\",\n value: function getTickLineCoord(data) {\n var _this$props2 = this.props,\n x = _this$props2.x,\n y = _this$props2.y,\n width = _this$props2.width,\n height = _this$props2.height,\n orientation = _this$props2.orientation,\n tickSize = _this$props2.tickSize,\n mirror = _this$props2.mirror,\n tickMargin = _this$props2.tickMargin;\n var x1, x2, y1, y2, tx, ty;\n var sign = mirror ? -1 : 1;\n var finalTickSize = data.tickSize || tickSize;\n var tickCoord = isNumber(data.tickCoord) ? data.tickCoord : data.coordinate;\n switch (orientation) {\n case 'top':\n x1 = x2 = data.coordinate;\n y2 = y + +!mirror * height;\n y1 = y2 - sign * finalTickSize;\n ty = y1 - sign * tickMargin;\n tx = tickCoord;\n break;\n case 'left':\n y1 = y2 = data.coordinate;\n x2 = x + +!mirror * width;\n x1 = x2 - sign * finalTickSize;\n tx = x1 - sign * tickMargin;\n ty = tickCoord;\n break;\n case 'right':\n y1 = y2 = data.coordinate;\n x2 = x + +mirror * width;\n x1 = x2 + sign * finalTickSize;\n tx = x1 + sign * tickMargin;\n ty = tickCoord;\n break;\n default:\n x1 = x2 = data.coordinate;\n y2 = y + +mirror * height;\n y1 = y2 + sign * finalTickSize;\n ty = y1 + sign * tickMargin;\n tx = tickCoord;\n break;\n }\n return {\n line: {\n x1: x1,\n y1: y1,\n x2: x2,\n y2: y2\n },\n tick: {\n x: tx,\n y: ty\n }\n };\n }\n }, {\n key: \"getTickTextAnchor\",\n value: function getTickTextAnchor() {\n var _this$props3 = this.props,\n orientation = _this$props3.orientation,\n mirror = _this$props3.mirror;\n var textAnchor;\n switch (orientation) {\n case 'left':\n textAnchor = mirror ? 'start' : 'end';\n break;\n case 'right':\n textAnchor = mirror ? 'end' : 'start';\n break;\n default:\n textAnchor = 'middle';\n break;\n }\n return textAnchor;\n }\n }, {\n key: \"getTickVerticalAnchor\",\n value: function getTickVerticalAnchor() {\n var _this$props4 = this.props,\n orientation = _this$props4.orientation,\n mirror = _this$props4.mirror;\n var verticalAnchor = 'end';\n switch (orientation) {\n case 'left':\n case 'right':\n verticalAnchor = 'middle';\n break;\n case 'top':\n verticalAnchor = mirror ? 'start' : 'end';\n break;\n default:\n verticalAnchor = mirror ? 'end' : 'start';\n break;\n }\n return verticalAnchor;\n }\n }, {\n key: \"renderAxisLine\",\n value: function renderAxisLine() {\n var _this$props5 = this.props,\n x = _this$props5.x,\n y = _this$props5.y,\n width = _this$props5.width,\n height = _this$props5.height,\n orientation = _this$props5.orientation,\n mirror = _this$props5.mirror,\n axisLine = _this$props5.axisLine;\n var props = _objectSpread(_objectSpread(_objectSpread({}, filterProps(this.props, false)), filterProps(axisLine, false)), {}, {\n fill: 'none'\n });\n if (orientation === 'top' || orientation === 'bottom') {\n var needHeight = +(orientation === 'top' && !mirror || orientation === 'bottom' && mirror);\n props = _objectSpread(_objectSpread({}, props), {}, {\n x1: x,\n y1: y + needHeight * height,\n x2: x + width,\n y2: y + needHeight * height\n });\n } else {\n var needWidth = +(orientation === 'left' && !mirror || orientation === 'right' && mirror);\n props = _objectSpread(_objectSpread({}, props), {}, {\n x1: x + needWidth * width,\n y1: y,\n x2: x + needWidth * width,\n y2: y + height\n });\n }\n return /*#__PURE__*/React.createElement(\"line\", _extends({}, props, {\n className: clsx('recharts-cartesian-axis-line', get(axisLine, 'className'))\n }));\n }\n }, {\n key: \"renderTicks\",\n value:\n /**\n * render the ticks\n * @param {Array} ticks The ticks to actually render (overrides what was passed in props)\n * @param {string} fontSize Fontsize to consider for tick spacing\n * @param {string} letterSpacing Letterspacing to consider for tick spacing\n * @return {ReactComponent} renderedTicks\n */\n function renderTicks(ticks, fontSize, letterSpacing) {\n var _this2 = this;\n var _this$props6 = this.props,\n tickLine = _this$props6.tickLine,\n stroke = _this$props6.stroke,\n tick = _this$props6.tick,\n tickFormatter = _this$props6.tickFormatter,\n unit = _this$props6.unit;\n var finalTicks = getTicks(_objectSpread(_objectSpread({}, this.props), {}, {\n ticks: ticks\n }), fontSize, letterSpacing);\n var textAnchor = this.getTickTextAnchor();\n var verticalAnchor = this.getTickVerticalAnchor();\n var axisProps = filterProps(this.props, false);\n var customTickProps = filterProps(tick, false);\n var tickLineProps = _objectSpread(_objectSpread({}, axisProps), {}, {\n fill: 'none'\n }, filterProps(tickLine, false));\n var items = finalTicks.map(function (entry, i) {\n var _this2$getTickLineCoo = _this2.getTickLineCoord(entry),\n lineCoord = _this2$getTickLineCoo.line,\n tickCoord = _this2$getTickLineCoo.tick;\n var tickProps = _objectSpread(_objectSpread(_objectSpread(_objectSpread({\n textAnchor: textAnchor,\n verticalAnchor: verticalAnchor\n }, axisProps), {}, {\n stroke: 'none',\n fill: stroke\n }, customTickProps), tickCoord), {}, {\n index: i,\n payload: entry,\n visibleTicksCount: finalTicks.length,\n tickFormatter: tickFormatter\n });\n return /*#__PURE__*/React.createElement(Layer, _extends({\n className: \"recharts-cartesian-axis-tick\",\n key: \"tick-\".concat(entry.value, \"-\").concat(entry.coordinate, \"-\").concat(entry.tickCoord)\n }, adaptEventsOfChild(_this2.props, entry, i)), tickLine && /*#__PURE__*/React.createElement(\"line\", _extends({}, tickLineProps, lineCoord, {\n className: clsx('recharts-cartesian-axis-tick-line', get(tickLine, 'className'))\n })), tick && CartesianAxis.renderTickItem(tick, tickProps, \"\".concat(isFunction(tickFormatter) ? tickFormatter(entry.value, i) : entry.value).concat(unit || '')));\n });\n return /*#__PURE__*/React.createElement(\"g\", {\n className: \"recharts-cartesian-axis-ticks\"\n }, items);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this3 = this;\n var _this$props7 = this.props,\n axisLine = _this$props7.axisLine,\n width = _this$props7.width,\n height = _this$props7.height,\n ticksGenerator = _this$props7.ticksGenerator,\n className = _this$props7.className,\n hide = _this$props7.hide;\n if (hide) {\n return null;\n }\n var _this$props8 = this.props,\n ticks = _this$props8.ticks,\n noTicksProps = _objectWithoutProperties(_this$props8, _excluded3);\n var finalTicks = ticks;\n if (isFunction(ticksGenerator)) {\n finalTicks = ticks && ticks.length > 0 ? ticksGenerator(this.props) : ticksGenerator(noTicksProps);\n }\n if (width <= 0 || height <= 0 || !finalTicks || !finalTicks.length) {\n return null;\n }\n return /*#__PURE__*/React.createElement(Layer, {\n className: clsx('recharts-cartesian-axis', className),\n ref: function ref(_ref2) {\n _this3.layerReference = _ref2;\n }\n }, axisLine && this.renderAxisLine(), this.renderTicks(finalTicks, this.state.fontSize, this.state.letterSpacing), Label.renderCallByParent(this.props));\n }\n }], [{\n key: \"renderTickItem\",\n value: function renderTickItem(option, props, value) {\n var tickItem;\n if ( /*#__PURE__*/React.isValidElement(option)) {\n tickItem = /*#__PURE__*/React.cloneElement(option, props);\n } else if (isFunction(option)) {\n tickItem = option(props);\n } else {\n tickItem = /*#__PURE__*/React.createElement(Text, _extends({}, props, {\n className: \"recharts-cartesian-axis-tick-value\"\n }), value);\n }\n return tickItem;\n }\n }]);\n return CartesianAxis;\n}(Component);\n_defineProperty(CartesianAxis, \"displayName\", 'CartesianAxis');\n_defineProperty(CartesianAxis, \"defaultProps\", {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n viewBox: {\n x: 0,\n y: 0,\n width: 0,\n height: 0\n },\n // The orientation of axis\n orientation: 'bottom',\n // The ticks\n ticks: [],\n stroke: '#666',\n tickLine: true,\n axisLine: true,\n tick: true,\n mirror: false,\n minTickGap: 5,\n // The width or height of tick\n tickSize: 6,\n tickMargin: 2,\n interval: 'preserveEnd'\n});","import invariant from 'invariant';\n\nvar noop = function noop() {};\n\nfunction readOnlyPropType(handler, name) {\n return function (props, propName) {\n if (props[propName] !== undefined) {\n if (!props[handler]) {\n return new Error(\"You have provided a `\" + propName + \"` prop to `\" + name + \"` \" + (\"without an `\" + handler + \"` handler prop. This will render a read-only field. \") + (\"If the field should be mutable use `\" + defaultKey(propName) + \"`. \") + (\"Otherwise, set `\" + handler + \"`.\"));\n }\n }\n };\n}\n\nexport function uncontrolledPropTypes(controlledValues, displayName) {\n var propTypes = {};\n Object.keys(controlledValues).forEach(function (prop) {\n // add default propTypes for folks that use runtime checks\n propTypes[defaultKey(prop)] = noop;\n\n if (process.env.NODE_ENV !== 'production') {\n var handler = controlledValues[prop];\n !(typeof handler === 'string' && handler.trim().length) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Uncontrollable - [%s]: the prop `%s` needs a valid handler key name in order to make it uncontrollable', displayName, prop) : invariant(false) : void 0;\n propTypes[prop] = readOnlyPropType(handler, displayName);\n }\n });\n return propTypes;\n}\nexport function isProp(props, prop) {\n return props[prop] !== undefined;\n}\nexport function defaultKey(key) {\n return 'default' + key.charAt(0).toUpperCase() + key.substr(1);\n}\n/**\n * Copyright (c) 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\nexport function canAcceptRef(component) {\n return !!component && (typeof component !== 'function' || component.prototype && component.prototype.isReactComponent);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\n\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\n\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\n\nimport { useCallback, useRef, useState } from 'react';\nimport * as Utils from './utils';\n\nfunction useUncontrolledProp(propValue, defaultValue, handler) {\n var wasPropRef = useRef(propValue !== undefined);\n\n var _useState = useState(defaultValue),\n stateValue = _useState[0],\n setState = _useState[1];\n\n var isProp = propValue !== undefined;\n var wasProp = wasPropRef.current;\n wasPropRef.current = isProp;\n /**\n * If a prop switches from controlled to Uncontrolled\n * reset its value to the defaultValue\n */\n\n if (!isProp && wasProp && stateValue !== defaultValue) {\n setState(defaultValue);\n }\n\n return [isProp ? propValue : stateValue, useCallback(function (value) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n if (handler) handler.apply(void 0, [value].concat(args));\n setState(value);\n }, [handler])];\n}\n\nexport { useUncontrolledProp };\nexport default function useUncontrolled(props, config) {\n return Object.keys(config).reduce(function (result, fieldName) {\n var _extends2;\n\n var _ref = result,\n defaultValue = _ref[Utils.defaultKey(fieldName)],\n propsValue = _ref[fieldName],\n rest = _objectWithoutPropertiesLoose(_ref, [Utils.defaultKey(fieldName), fieldName].map(_toPropertyKey));\n\n var handlerName = config[fieldName];\n\n var _useUncontrolledProp = useUncontrolledProp(propsValue, defaultValue, props[handlerName]),\n value = _useUncontrolledProp[0],\n handler = _useUncontrolledProp[1];\n\n return _extends({}, rest, (_extends2 = {}, _extends2[fieldName] = value, _extends2[handlerName] = handler, _extends2));\n }, props);\n}","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nfunction componentWillMount() {\n // Call this.constructor.gDSFP to support sub-classes.\n var state = this.constructor.getDerivedStateFromProps(this.props, this.state);\n if (state !== null && state !== undefined) {\n this.setState(state);\n }\n}\n\nfunction componentWillReceiveProps(nextProps) {\n // Call this.constructor.gDSFP to support sub-classes.\n // Use the setState() updater to ensure state isn't stale in certain edge cases.\n function updater(prevState) {\n var state = this.constructor.getDerivedStateFromProps(nextProps, prevState);\n return state !== null && state !== undefined ? state : null;\n }\n // Binding \"this\" is important for shallow renderer support.\n this.setState(updater.bind(this));\n}\n\nfunction componentWillUpdate(nextProps, nextState) {\n try {\n var prevProps = this.props;\n var prevState = this.state;\n this.props = nextProps;\n this.state = nextState;\n this.__reactInternalSnapshotFlag = true;\n this.__reactInternalSnapshot = this.getSnapshotBeforeUpdate(\n prevProps,\n prevState\n );\n } finally {\n this.props = prevProps;\n this.state = prevState;\n }\n}\n\n// React may warn about cWM/cWRP/cWU methods being deprecated.\n// Add a flag to suppress these warnings for this special case.\ncomponentWillMount.__suppressDeprecationWarning = true;\ncomponentWillReceiveProps.__suppressDeprecationWarning = true;\ncomponentWillUpdate.__suppressDeprecationWarning = true;\n\nfunction polyfill(Component) {\n var prototype = Component.prototype;\n\n if (!prototype || !prototype.isReactComponent) {\n throw new Error('Can only polyfill class components');\n }\n\n if (\n typeof Component.getDerivedStateFromProps !== 'function' &&\n typeof prototype.getSnapshotBeforeUpdate !== 'function'\n ) {\n return Component;\n }\n\n // If new component APIs are defined, \"unsafe\" lifecycles won't be called.\n // Error if any of these lifecycles are present,\n // Because they would work differently between older and newer (16.3+) versions of React.\n var foundWillMountName = null;\n var foundWillReceivePropsName = null;\n var foundWillUpdateName = null;\n if (typeof prototype.componentWillMount === 'function') {\n foundWillMountName = 'componentWillMount';\n } else if (typeof prototype.UNSAFE_componentWillMount === 'function') {\n foundWillMountName = 'UNSAFE_componentWillMount';\n }\n if (typeof prototype.componentWillReceiveProps === 'function') {\n foundWillReceivePropsName = 'componentWillReceiveProps';\n } else if (typeof prototype.UNSAFE_componentWillReceiveProps === 'function') {\n foundWillReceivePropsName = 'UNSAFE_componentWillReceiveProps';\n }\n if (typeof prototype.componentWillUpdate === 'function') {\n foundWillUpdateName = 'componentWillUpdate';\n } else if (typeof prototype.UNSAFE_componentWillUpdate === 'function') {\n foundWillUpdateName = 'UNSAFE_componentWillUpdate';\n }\n if (\n foundWillMountName !== null ||\n foundWillReceivePropsName !== null ||\n foundWillUpdateName !== null\n ) {\n var componentName = Component.displayName || Component.name;\n var newApiName =\n typeof Component.getDerivedStateFromProps === 'function'\n ? 'getDerivedStateFromProps()'\n : 'getSnapshotBeforeUpdate()';\n\n throw Error(\n 'Unsafe legacy lifecycles will not be called for components using new component APIs.\\n\\n' +\n componentName +\n ' uses ' +\n newApiName +\n ' but also contains the following legacy lifecycles:' +\n (foundWillMountName !== null ? '\\n ' + foundWillMountName : '') +\n (foundWillReceivePropsName !== null\n ? '\\n ' + foundWillReceivePropsName\n : '') +\n (foundWillUpdateName !== null ? '\\n ' + foundWillUpdateName : '') +\n '\\n\\nThe above lifecycles should be removed. Learn more about this warning here:\\n' +\n 'https://fb.me/react-async-component-lifecycle-hooks'\n );\n }\n\n // React <= 16.2 does not support static getDerivedStateFromProps.\n // As a workaround, use cWM and cWRP to invoke the new static lifecycle.\n // Newer versions of React will ignore these lifecycles if gDSFP exists.\n if (typeof Component.getDerivedStateFromProps === 'function') {\n prototype.componentWillMount = componentWillMount;\n prototype.componentWillReceiveProps = componentWillReceiveProps;\n }\n\n // React <= 16.2 does not support getSnapshotBeforeUpdate.\n // As a workaround, use cWU to invoke the new lifecycle.\n // Newer versions of React will ignore that lifecycle if gSBU exists.\n if (typeof prototype.getSnapshotBeforeUpdate === 'function') {\n if (typeof prototype.componentDidUpdate !== 'function') {\n throw new Error(\n 'Cannot polyfill getSnapshotBeforeUpdate() for components that do not define componentDidUpdate() on the prototype'\n );\n }\n\n prototype.componentWillUpdate = componentWillUpdate;\n\n var componentDidUpdate = prototype.componentDidUpdate;\n\n prototype.componentDidUpdate = function componentDidUpdatePolyfill(\n prevProps,\n prevState,\n maybeSnapshot\n ) {\n // 16.3+ will not execute our will-update method;\n // It will pass a snapshot value to did-update though.\n // Older versions will require our polyfilled will-update value.\n // We need to handle both cases, but can't just check for the presence of \"maybeSnapshot\",\n // Because for <= 15.x versions this might be a \"prevContext\" object.\n // We also can't just check \"__reactInternalSnapshot\",\n // Because get-snapshot might return a falsy value.\n // So check for the explicit __reactInternalSnapshotFlag flag to determine behavior.\n var snapshot = this.__reactInternalSnapshotFlag\n ? this.__reactInternalSnapshot\n : maybeSnapshot;\n\n componentDidUpdate.call(this, prevProps, prevState, snapshot);\n };\n }\n\n return Component;\n}\n\nexport { polyfill };\n","import * as React from 'react';\nimport { classNamesFunction, getNativeProps, imgProperties } from '../../Utilities';\nimport { IImageProps, IImageStyleProps, IImageStyles, ImageCoverStyle, ImageFit, ImageLoadState } from './Image.types';\n\nconst getClassNames = classNamesFunction<IImageStyleProps, IImageStyles>();\n\nexport interface IImageState {\n loadState?: ImageLoadState;\n}\n\nconst KEY_PREFIX = 'fabricImage';\n\nexport class ImageBase extends React.Component<IImageProps, IImageState> {\n public static defaultProps = {\n shouldFadeIn: true,\n };\n\n private static _svgRegex = /\\.svg$/i;\n\n // Make an initial assumption about the image layout until we can\n // check the rendered element. The value here only takes effect when\n // shouldStartVisible is true.\n private _coverStyle: ImageCoverStyle = ImageCoverStyle.portrait;\n private _imageElement = React.createRef<HTMLImageElement>();\n private _frameElement = React.createRef<HTMLDivElement>();\n\n constructor(props: IImageProps) {\n super(props);\n\n this.state = {\n loadState: ImageLoadState.notLoaded,\n };\n }\n\n public UNSAFE_componentWillReceiveProps(nextProps: IImageProps): void {\n if (nextProps.src !== this.props.src) {\n this.setState({\n loadState: ImageLoadState.notLoaded,\n });\n } else if (this.state.loadState === ImageLoadState.loaded) {\n this._computeCoverStyle(nextProps);\n }\n }\n\n public componentDidUpdate(prevProps: IImageProps, prevState: IImageState) {\n this._checkImageLoaded();\n if (this.props.onLoadingStateChange && prevState.loadState !== this.state.loadState) {\n this.props.onLoadingStateChange(this.state.loadState!);\n }\n }\n\n public render(): JSX.Element {\n const imageProps = getNativeProps<React.ImgHTMLAttributes<HTMLImageElement>>(this.props, imgProperties, [\n 'width',\n 'height',\n ]);\n const {\n src,\n alt,\n width,\n height,\n shouldFadeIn,\n shouldStartVisible,\n className,\n imageFit,\n role,\n maximizeFrame,\n styles,\n theme,\n } = this.props;\n const { loadState } = this.state;\n const coverStyle = this.props.coverStyle !== undefined ? this.props.coverStyle : this._coverStyle;\n const classNames = getClassNames(styles!, {\n theme: theme!,\n className,\n width,\n height,\n maximizeFrame,\n shouldFadeIn,\n shouldStartVisible,\n isLoaded:\n loadState === ImageLoadState.loaded ||\n (loadState === ImageLoadState.notLoaded && this.props.shouldStartVisible),\n isLandscape: coverStyle === ImageCoverStyle.landscape,\n isCenter: imageFit === ImageFit.center,\n isCenterContain: imageFit === ImageFit.centerContain,\n isCenterCover: imageFit === ImageFit.centerCover,\n isContain: imageFit === ImageFit.contain,\n isCover: imageFit === ImageFit.cover,\n isNone: imageFit === ImageFit.none,\n isError: loadState === ImageLoadState.error,\n isNotImageFit: imageFit === undefined,\n });\n\n // If image dimensions aren't specified, the natural size of the image is used.\n return (\n <div className={classNames.root} style={{ width: width, height: height }} ref={this._frameElement}>\n <img\n {...imageProps}\n onLoad={this._onImageLoaded}\n onError={this._onImageError}\n key={KEY_PREFIX + this.props.src || ''}\n className={classNames.image}\n ref={this._imageElement}\n src={src}\n alt={alt}\n role={role}\n />\n </div>\n );\n }\n\n private _onImageLoaded = (ev: React.SyntheticEvent<HTMLImageElement>): void => {\n const { src, onLoad } = this.props;\n if (onLoad) {\n onLoad(ev);\n }\n\n this._computeCoverStyle(this.props);\n\n if (src) {\n this.setState({\n loadState: ImageLoadState.loaded,\n });\n }\n };\n\n private _checkImageLoaded(): void {\n const { src } = this.props;\n const { loadState } = this.state;\n\n if (loadState === ImageLoadState.notLoaded) {\n // testing if naturalWidth and naturalHeight are greater than zero is better than checking\n // .complete, because .complete will also be set to true if the image breaks. However,\n // for some browsers, SVG images do not have a naturalWidth or naturalHeight, so fall back\n // to checking .complete for these images.\n const isLoaded: boolean = this._imageElement.current\n ? (src && this._imageElement.current.naturalWidth > 0 && this._imageElement.current.naturalHeight > 0) ||\n (this._imageElement.current.complete && ImageBase._svgRegex.test(src!))\n : false;\n\n if (isLoaded) {\n this._computeCoverStyle(this.props);\n this.setState({\n loadState: ImageLoadState.loaded,\n });\n }\n }\n }\n\n private _computeCoverStyle(props: IImageProps): void {\n const { imageFit, width, height } = props;\n\n // Do not compute cover style if it was already specified in props\n if (\n (imageFit === ImageFit.cover ||\n imageFit === ImageFit.contain ||\n imageFit === ImageFit.centerContain ||\n imageFit === ImageFit.centerCover) &&\n this.props.coverStyle === undefined &&\n this._imageElement.current &&\n this._frameElement.current\n ) {\n // Determine the desired ratio using the width and height props.\n // If those props aren't available, measure measure the frame.\n let desiredRatio;\n if (\n typeof width === 'number' &&\n typeof height === 'number' &&\n imageFit !== ImageFit.centerContain &&\n imageFit !== ImageFit.centerCover\n ) {\n desiredRatio = width / height;\n } else {\n desiredRatio = this._frameElement.current.clientWidth / this._frameElement.current.clientHeight;\n }\n\n // Examine the source image to determine its original ratio.\n const naturalRatio = this._imageElement.current.naturalWidth / this._imageElement.current.naturalHeight;\n\n // Should we crop from the top or the sides?\n if (naturalRatio > desiredRatio) {\n this._coverStyle = ImageCoverStyle.landscape;\n } else {\n this._coverStyle = ImageCoverStyle.portrait;\n }\n }\n }\n\n private _onImageError = (ev: React.SyntheticEvent<HTMLImageElement>): void => {\n if (this.props.onError) {\n this.props.onError(ev);\n }\n this.setState({\n loadState: ImageLoadState.error,\n });\n };\n}\n","import { AnimationClassNames, getGlobalClassNames, IStyle } from '../../Styling';\nimport { IImageStyleProps, IImageStyles } from './Image.types';\nimport { getWindow } from '../../Utilities';\n\nconst GlobalClassNames = {\n root: 'ms-Image',\n rootMaximizeFrame: 'ms-Image--maximizeFrame',\n image: 'ms-Image-image',\n imageCenter: 'ms-Image-image--center',\n imageContain: 'ms-Image-image--contain',\n imageCover: 'ms-Image-image--cover',\n imageCenterContain: 'ms-Image-image--centerContain',\n imageCenterCover: 'ms-Image-image--centerCover',\n imageNone: 'ms-Image-image--none',\n imageLandscape: 'ms-Image-image--landscape',\n imagePortrait: 'ms-Image-image--portrait',\n};\n\nexport const getStyles = (props: IImageStyleProps): IImageStyles => {\n const {\n className,\n width,\n height,\n maximizeFrame,\n isLoaded,\n shouldFadeIn,\n shouldStartVisible,\n isLandscape,\n isCenter,\n isContain,\n isCover,\n isCenterContain,\n isCenterCover,\n isNone,\n isError,\n isNotImageFit,\n theme,\n } = props;\n\n const classNames = getGlobalClassNames(GlobalClassNames, theme);\n\n const ImageFitStyles: IStyle = {\n position: 'absolute',\n left: '50% /* @noflip */',\n top: '50%',\n transform: 'translate(-50%,-50%)', // @todo test RTL renders transform: translate(50%,-50%);\n };\n\n // Cut the mustard using msMaxTouchPoints to detect IE11 which does not support CSS object-fit\n const window: Window | undefined = getWindow();\n const supportsObjectFit: boolean = window !== undefined && window.navigator.msMaxTouchPoints === undefined;\n const fallbackObjectFitStyles =\n (isContain && isLandscape) || (isCover && !isLandscape)\n ? { width: '100%', height: 'auto' }\n : { width: 'auto', height: '100%' };\n\n return {\n root: [\n classNames.root,\n theme.fonts.medium,\n {\n overflow: 'hidden',\n },\n maximizeFrame && [\n classNames.rootMaximizeFrame,\n {\n height: '100%',\n width: '100%',\n },\n ],\n isLoaded && shouldFadeIn && !shouldStartVisible && AnimationClassNames.fadeIn400,\n (isCenter || isContain || isCover || isCenterContain || isCenterCover) && {\n position: 'relative',\n },\n className,\n ],\n image: [\n classNames.image,\n {\n display: 'block',\n opacity: 0,\n },\n isLoaded && [\n 'is-loaded',\n {\n opacity: 1,\n },\n ],\n isCenter && [classNames.imageCenter, ImageFitStyles],\n isContain && [\n classNames.imageContain,\n supportsObjectFit && {\n width: '100%',\n height: '100%',\n objectFit: 'contain',\n },\n !supportsObjectFit && fallbackObjectFitStyles,\n ImageFitStyles,\n ],\n isCover && [\n classNames.imageCover,\n supportsObjectFit && {\n width: '100%',\n height: '100%',\n objectFit: 'cover',\n },\n !supportsObjectFit && fallbackObjectFitStyles,\n ImageFitStyles,\n ],\n isCenterContain && [\n classNames.imageCenterContain,\n isLandscape && {\n maxWidth: '100%',\n },\n !isLandscape && {\n maxHeight: '100%',\n },\n ImageFitStyles,\n ],\n isCenterCover && [\n classNames.imageCenterCover,\n isLandscape && {\n maxHeight: '100%',\n },\n !isLandscape && {\n maxWidth: '100%',\n },\n ImageFitStyles,\n ],\n isNone && [\n classNames.imageNone,\n {\n width: 'auto',\n height: 'auto',\n },\n ],\n isNotImageFit && [\n !!width &&\n !height && {\n height: 'auto',\n width: '100%',\n },\n !width &&\n !!height && {\n height: '100%',\n width: 'auto',\n },\n !!width &&\n !!height && {\n height: '100%',\n width: '100%',\n },\n ],\n isLandscape && classNames.imageLandscape,\n !isLandscape && classNames.imagePortrait,\n !isLoaded && 'is-notLoaded',\n shouldFadeIn && 'is-fadeIn',\n isError && 'is-error',\n ],\n };\n};\n","import * as React from 'react';\nimport { styled } from '../../Utilities';\nimport { IImageProps, IImageStyleProps, IImageStyles } from './Image.types';\nimport { ImageBase } from './Image.base';\nimport { getStyles } from './Image.styles';\n\nexport const Image: React.FunctionComponent<IImageProps> = styled<IImageProps, IImageStyleProps, IImageStyles>(\n ImageBase,\n getStyles,\n undefined,\n {\n scope: 'Image',\n },\n true,\n);\n","// A packages cache that makes sure that we don't inject the same packageName twice in the same bundle -\n// this cache is local to the module closure inside this bundle\nconst packagesCache: { [name: string]: string } = {};\n\n// Cache access to window to avoid IE11 memory leak.\nlet _win: Window | undefined = undefined;\n\ntry {\n _win = window;\n} catch (e) {\n /* no-op */\n}\n\nexport function setVersion(packageName: string, packageVersion: string): void {\n if (typeof _win !== 'undefined') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const packages = ((_win as any).__packages__ = (_win as any).__packages__ || {});\n\n // We allow either the global packages or local packages caches to invalidate so testing can\n // just clear the global to set this state\n if (!packages[packageName] || !packagesCache[packageName]) {\n packagesCache[packageName] = packageVersion;\n const versions = (packages[packageName] = packages[packageName] || []);\n versions.push(packageVersion);\n }\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n\n/**\n * Returns a single function which will call each of the given functions in the context of the\n * parent.\n */\nexport function appendFunction(parent: any, ...functions: any[]): () => void {\n if (functions.length < 2) {\n return functions[0] as () => void;\n }\n\n return (...args: any[]): void => {\n functions.forEach((f: () => void) => f && f.apply(parent, args));\n };\n}\n","import * as React from 'react';\nimport { appendFunction } from './appendFunction';\n\n/**\n * Extends a component's lifetime methods by appending new functions to the existing lifetime functions.\n */\nexport function extendComponent<T extends React.Component>(parent: T, methods: { [key in keyof T]?: T[key] }): void {\n for (let name in methods) {\n if (methods.hasOwnProperty(name)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n parent[name] = appendFunction(parent, parent[name], methods[name]) as any;\n }\n }\n}\n","import {\n labelProperties,\n audioProperties,\n videoProperties,\n olProperties,\n liProperties,\n anchorProperties,\n buttonProperties,\n inputProperties,\n textAreaProperties,\n selectProperties,\n optionProperties,\n tableProperties,\n trProperties,\n thProperties,\n tdProperties,\n colGroupProperties,\n colProperties,\n formProperties,\n iframeProperties,\n imgProperties,\n htmlElementProperties,\n getNativeProps,\n} from './properties';\nimport * as React from 'react';\n\nconst nativeElementMap: Record<string, Record<string, number>> = {\n label: labelProperties,\n audio: audioProperties,\n video: videoProperties,\n ol: olProperties,\n li: liProperties,\n a: anchorProperties,\n button: buttonProperties,\n input: inputProperties,\n textarea: textAreaProperties,\n select: selectProperties,\n option: optionProperties,\n table: tableProperties,\n tr: trProperties,\n th: thProperties,\n td: tdProperties,\n colGroup: colGroupProperties,\n col: colProperties,\n form: formProperties,\n iframe: iframeProperties,\n img: imgProperties,\n};\n\n/**\n * Given an element tagname and user props, filters the props to only allowed props for the given\n * element type.\n * @param tagName - Tag name (e.g. \"div\")\n * @param props - Props object\n * @param excludedPropNames - List of props to disallow\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function getNativeElementProps<TAttributes extends React.HTMLAttributes<any>>(\n tagName: string,\n props: {},\n excludedPropNames?: string[],\n): TAttributes {\n const allowedPropNames = (tagName && nativeElementMap[tagName]) || htmlElementProperties;\n\n return getNativeProps(props, allowedPropNames, excludedPropNames);\n}\n","import * as React from 'react';\nimport {\n IDetailsRowCheckProps,\n IDetailsCheckboxProps,\n IDetailsRowCheckStyleProps,\n IDetailsRowCheckStyles,\n} from './DetailsRowCheck.types';\nimport { css, styled, classNamesFunction, getNativeElementProps } from '../../Utilities';\nimport { Check } from '../../Check';\nimport { getStyles } from './DetailsRowCheck.styles';\nimport { composeRenderFunction } from '@uifabric/utilities';\nimport { ITheme } from '../../Styling';\n\nconst getClassNames = classNamesFunction<IDetailsRowCheckStyleProps, IDetailsRowCheckStyles>();\n\nconst DetailsRowCheckBase: React.FunctionComponent<IDetailsRowCheckProps> = props => {\n const {\n isVisible = false,\n canSelect = false,\n anySelected = false,\n selected = false,\n isHeader = false,\n className,\n checkClassName,\n styles,\n theme,\n compact,\n onRenderDetailsCheckbox,\n useFastIcons = true, // must be removed from buttonProps\n ...buttonProps\n } = props;\n const defaultCheckboxRender = useFastIcons ? _fastDefaultCheckboxRender : _defaultCheckboxRender;\n\n const onRenderCheckbox = onRenderDetailsCheckbox\n ? composeRenderFunction(onRenderDetailsCheckbox, defaultCheckboxRender)\n : defaultCheckboxRender;\n\n const classNames = getClassNames(styles, {\n theme: theme!,\n canSelect,\n selected,\n anySelected,\n className,\n isHeader,\n isVisible,\n compact,\n });\n\n const detailsCheckboxProps: IDetailsCheckboxProps = {\n checked: selected,\n theme,\n };\n\n const divProps = getNativeElementProps('div', buttonProps, ['aria-label', 'aria-labelledby', 'aria-describedby']);\n\n return canSelect ? (\n <div\n {...buttonProps}\n role=\"checkbox\"\n // eslint-disable-next-line deprecation/deprecation\n className={css(classNames.root, classNames.check)}\n aria-checked={selected}\n data-selection-toggle={true}\n data-automationid=\"DetailsRowCheck\"\n tabIndex={-1}\n >\n {onRenderCheckbox(detailsCheckboxProps)}\n </div>\n ) : (\n // eslint-disable-next-line deprecation/deprecation\n <div {...divProps} className={css(classNames.root, classNames.check)} />\n );\n};\n\nconst FastCheck = React.memo((props: { theme?: ITheme; checked?: boolean; className?: string }) => {\n return <Check theme={props.theme} checked={props.checked} className={props.className} useFastIcons />;\n});\n\nfunction _defaultCheckboxRender(checkboxProps: IDetailsCheckboxProps) {\n return <Check checked={checkboxProps.checked} />;\n}\n\nfunction _fastDefaultCheckboxRender(checkboxProps: IDetailsCheckboxProps) {\n return <FastCheck theme={checkboxProps.theme} checked={checkboxProps.checked} />;\n}\n\nexport const DetailsRowCheck = styled<IDetailsRowCheckProps, IDetailsRowCheckStyleProps, IDetailsRowCheckStyles>(\n DetailsRowCheckBase,\n getStyles,\n undefined,\n { scope: 'DetailsRowCheck' },\n true,\n);\n","const REACT_LIFECYCLE_EXCLUSIONS = [\n 'setState',\n 'render',\n 'componentWillMount',\n 'UNSAFE_componentWillMount',\n 'componentDidMount',\n 'componentWillReceiveProps',\n 'UNSAFE_componentWillReceiveProps',\n 'shouldComponentUpdate',\n 'componentWillUpdate',\n 'getSnapshotBeforeUpdate',\n 'UNSAFE_componentWillUpdate',\n 'componentDidUpdate',\n 'componentWillUnmount',\n];\n\n/**\n * Allows you to hoist methods, except those in an exclusion set from a source object into a destination object.\n *\n * @public\n * @param destination - The instance of the object to hoist the methods onto.\n * @param source - The instance of the object where the methods are hoisted from.\n * @param exclusions - (Optional) What methods to exclude from being hoisted.\n * @returns An array of names of methods that were hoisted.\n */\nexport function hoistMethods(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n destination: any,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n source: any,\n exclusions: string[] = REACT_LIFECYCLE_EXCLUSIONS,\n): string[] {\n let hoisted: string[] = [];\n for (let methodName in source) {\n if (\n typeof source[methodName] === 'function' &&\n destination[methodName] === undefined &&\n (!exclusions || exclusions.indexOf(methodName) === -1)\n ) {\n hoisted.push(methodName);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n destination[methodName] = function(...args: any[]): void {\n source[methodName](...args);\n };\n }\n }\n\n return hoisted;\n}\n\n/**\n * Provides a method for convenience to unhoist hoisted methods.\n *\n * @public\n * @param source - The source object upon which methods were hoisted.\n * @param methodNames - An array of method names to unhoist.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function unhoistMethods(source: any, methodNames: string[]): void {\n methodNames.forEach((methodName: string) => delete source[methodName]);\n}\n","import * as React from 'react';\nimport { hoistMethods, unhoistMethods } from '../../Utilities';\n\nexport class BaseDecorator<TProps, TState> extends React.Component<TProps, TState> {\n protected _composedComponentInstance: React.Component<TProps, TState>;\n\n private _hoisted: string[];\n\n constructor(props: TProps) {\n super(props);\n this._updateComposedComponentRef = this._updateComposedComponentRef.bind(this);\n }\n\n /**\n * Updates the ref to the component composed by the decorator, which will also take care of hoisting\n * (and unhoisting as appropriate) methods from said component.\n *\n * Pass this method as the argument to the 'ref' property of the composed component.\n */\n protected _updateComposedComponentRef(composedComponentInstance: React.Component<TProps, TState>): void {\n this._composedComponentInstance = composedComponentInstance;\n if (composedComponentInstance) {\n this._hoisted = hoistMethods(this, composedComponentInstance);\n } else if (this._hoisted) {\n unhoistMethods(this, this._hoisted);\n }\n }\n}\n","var _excluded = [\"x\", \"y\"];\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : String(i); }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport React from 'react';\nimport invariant from 'tiny-invariant';\nimport { Shape } from './ActiveShapeUtils';\n\n// Rectangle props is expecting x, y, height, width as numbers, name as a string, and radius as a custom type\n// When props are being spread in from a user defined component in Bar,\n// the prop types of an SVGElement have these typed as something else.\n// This function will return the passed in props\n// along with x, y, height as numbers, name as a string, and radius as number | [number, number, number, number]\nfunction typeguardBarRectangleProps(_ref, props) {\n var xProp = _ref.x,\n yProp = _ref.y,\n option = _objectWithoutProperties(_ref, _excluded);\n var xValue = \"\".concat(xProp);\n var x = parseInt(xValue, 10);\n var yValue = \"\".concat(yProp);\n var y = parseInt(yValue, 10);\n var heightValue = \"\".concat(props.height || option.height);\n var height = parseInt(heightValue, 10);\n var widthValue = \"\".concat(props.width || option.width);\n var width = parseInt(widthValue, 10);\n return _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, props), option), x ? {\n x: x\n } : {}), y ? {\n y: y\n } : {}), {}, {\n height: height,\n width: width,\n name: props.name,\n radius: props.radius\n });\n}\nexport function BarRectangle(props) {\n return /*#__PURE__*/React.createElement(Shape, _extends({\n shapeType: \"rectangle\",\n propTransformer: typeguardBarRectangleProps,\n activeClassName: \"recharts-active-bar\"\n }, props));\n}\n/**\n * Safely gets minPointSize from from the minPointSize prop if it is a function\n * @param minPointSize minPointSize as passed to the Bar component\n * @param defaultValue default minPointSize\n * @returns minPointSize\n */\nexport var minPointSizeCallback = function minPointSizeCallback(minPointSize) {\n var defaultValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n return function (value, index) {\n if (typeof minPointSize === 'number') return minPointSize;\n var isValueNumber = typeof value === 'number';\n if (isValueNumber) {\n return minPointSize(value, index);\n }\n !isValueNumber ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"minPointSize callback function received a value with type of \".concat(_typeof(value), \". Currently only numbers are supported.\")) : invariant(false) : void 0;\n return defaultValue;\n };\n};","var _excluded = [\"value\", \"background\"];\nvar _Bar;\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : String(i); }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/**\n * @fileOverview Render a group of bar\n */\nimport React, { PureComponent } from 'react';\nimport clsx from 'clsx';\nimport Animate from 'react-smooth';\nimport isEqual from 'lodash/isEqual';\nimport isNil from 'lodash/isNil';\nimport { Layer } from '../container/Layer';\nimport { ErrorBar } from './ErrorBar';\nimport { Cell } from '../component/Cell';\nimport { LabelList } from '../component/LabelList';\nimport { uniqueId, mathSign, interpolateNumber } from '../util/DataUtils';\nimport { filterProps, findAllByType } from '../util/ReactUtils';\nimport { Global } from '../util/Global';\nimport { getCateCoordinateOfBar, getValueByDataKey, truncateByDomain, getBaseValueOfBar, findPositionOfBar, getTooltipItem } from '../util/ChartUtils';\nimport { adaptEventsOfChild } from '../util/types';\nimport { BarRectangle, minPointSizeCallback } from '../util/BarUtils';\nexport var Bar = /*#__PURE__*/function (_PureComponent) {\n _inherits(Bar, _PureComponent);\n function Bar() {\n var _this;\n _classCallCheck(this, Bar);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _callSuper(this, Bar, [].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n isAnimationFinished: false\n });\n _defineProperty(_assertThisInitialized(_this), \"id\", uniqueId('recharts-bar-'));\n _defineProperty(_assertThisInitialized(_this), \"handleAnimationEnd\", function () {\n var onAnimationEnd = _this.props.onAnimationEnd;\n _this.setState({\n isAnimationFinished: true\n });\n if (onAnimationEnd) {\n onAnimationEnd();\n }\n });\n _defineProperty(_assertThisInitialized(_this), \"handleAnimationStart\", function () {\n var onAnimationStart = _this.props.onAnimationStart;\n _this.setState({\n isAnimationFinished: false\n });\n if (onAnimationStart) {\n onAnimationStart();\n }\n });\n return _this;\n }\n _createClass(Bar, [{\n key: \"renderRectanglesStatically\",\n value: function renderRectanglesStatically(data) {\n var _this2 = this;\n var _this$props = this.props,\n shape = _this$props.shape,\n dataKey = _this$props.dataKey,\n activeIndex = _this$props.activeIndex,\n activeBar = _this$props.activeBar;\n var baseProps = filterProps(this.props, false);\n return data && data.map(function (entry, i) {\n var isActive = i === activeIndex;\n var option = isActive ? activeBar : shape;\n var props = _objectSpread(_objectSpread(_objectSpread({}, baseProps), entry), {}, {\n isActive: isActive,\n option: option,\n index: i,\n dataKey: dataKey,\n onAnimationStart: _this2.handleAnimationStart,\n onAnimationEnd: _this2.handleAnimationEnd\n });\n return /*#__PURE__*/React.createElement(Layer, _extends({\n className: \"recharts-bar-rectangle\"\n }, adaptEventsOfChild(_this2.props, entry, i), {\n key: \"rectangle-\".concat(entry === null || entry === void 0 ? void 0 : entry.x, \"-\").concat(entry === null || entry === void 0 ? void 0 : entry.y, \"-\").concat(entry === null || entry === void 0 ? void 0 : entry.value)\n }), /*#__PURE__*/React.createElement(BarRectangle, props));\n });\n }\n }, {\n key: \"renderRectanglesWithAnimation\",\n value: function renderRectanglesWithAnimation() {\n var _this3 = this;\n var _this$props2 = this.props,\n data = _this$props2.data,\n layout = _this$props2.layout,\n isAnimationActive = _this$props2.isAnimationActive,\n animationBegin = _this$props2.animationBegin,\n animationDuration = _this$props2.animationDuration,\n animationEasing = _this$props2.animationEasing,\n animationId = _this$props2.animationId;\n var prevData = this.state.prevData;\n return /*#__PURE__*/React.createElement(Animate, {\n begin: animationBegin,\n duration: animationDuration,\n isActive: isAnimationActive,\n easing: animationEasing,\n from: {\n t: 0\n },\n to: {\n t: 1\n },\n key: \"bar-\".concat(animationId),\n onAnimationEnd: this.handleAnimationEnd,\n onAnimationStart: this.handleAnimationStart\n }, function (_ref) {\n var t = _ref.t;\n var stepData = data.map(function (entry, index) {\n var prev = prevData && prevData[index];\n if (prev) {\n var interpolatorX = interpolateNumber(prev.x, entry.x);\n var interpolatorY = interpolateNumber(prev.y, entry.y);\n var interpolatorWidth = interpolateNumber(prev.width, entry.width);\n var interpolatorHeight = interpolateNumber(prev.height, entry.height);\n return _objectSpread(_objectSpread({}, entry), {}, {\n x: interpolatorX(t),\n y: interpolatorY(t),\n width: interpolatorWidth(t),\n height: interpolatorHeight(t)\n });\n }\n if (layout === 'horizontal') {\n var _interpolatorHeight = interpolateNumber(0, entry.height);\n var h = _interpolatorHeight(t);\n return _objectSpread(_objectSpread({}, entry), {}, {\n y: entry.y + entry.height - h,\n height: h\n });\n }\n var interpolator = interpolateNumber(0, entry.width);\n var w = interpolator(t);\n return _objectSpread(_objectSpread({}, entry), {}, {\n width: w\n });\n });\n return /*#__PURE__*/React.createElement(Layer, null, _this3.renderRectanglesStatically(stepData));\n });\n }\n }, {\n key: \"renderRectangles\",\n value: function renderRectangles() {\n var _this$props3 = this.props,\n data = _this$props3.data,\n isAnimationActive = _this$props3.isAnimationActive;\n var prevData = this.state.prevData;\n if (isAnimationActive && data && data.length && (!prevData || !isEqual(prevData, data))) {\n return this.renderRectanglesWithAnimation();\n }\n return this.renderRectanglesStatically(data);\n }\n }, {\n key: \"renderBackground\",\n value: function renderBackground() {\n var _this4 = this;\n var _this$props4 = this.props,\n data = _this$props4.data,\n dataKey = _this$props4.dataKey,\n activeIndex = _this$props4.activeIndex;\n var backgroundProps = filterProps(this.props.background, false);\n return data.map(function (entry, i) {\n var value = entry.value,\n background = entry.background,\n rest = _objectWithoutProperties(entry, _excluded);\n if (!background) {\n return null;\n }\n var props = _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, rest), {}, {\n fill: '#eee'\n }, background), backgroundProps), adaptEventsOfChild(_this4.props, entry, i)), {}, {\n onAnimationStart: _this4.handleAnimationStart,\n onAnimationEnd: _this4.handleAnimationEnd,\n dataKey: dataKey,\n index: i,\n key: \"background-bar-\".concat(i),\n className: 'recharts-bar-background-rectangle'\n });\n return /*#__PURE__*/React.createElement(BarRectangle, _extends({\n option: _this4.props.background,\n isActive: i === activeIndex\n }, props));\n });\n }\n }, {\n key: \"renderErrorBar\",\n value: function renderErrorBar(needClip, clipPathId) {\n if (this.props.isAnimationActive && !this.state.isAnimationFinished) {\n return null;\n }\n var _this$props5 = this.props,\n data = _this$props5.data,\n xAxis = _this$props5.xAxis,\n yAxis = _this$props5.yAxis,\n layout = _this$props5.layout,\n children = _this$props5.children;\n var errorBarItems = findAllByType(children, ErrorBar);\n if (!errorBarItems) {\n return null;\n }\n var offset = layout === 'vertical' ? data[0].height / 2 : data[0].width / 2;\n var dataPointFormatter = function dataPointFormatter(dataPoint, dataKey) {\n /**\n * if the value coming from `getComposedData` is an array then this is a stacked bar chart.\n * arr[1] represents end value of the bar since the data is in the form of [startValue, endValue].\n * */\n var value = Array.isArray(dataPoint.value) ? dataPoint.value[1] : dataPoint.value;\n return {\n x: dataPoint.x,\n y: dataPoint.y,\n value: value,\n errorVal: getValueByDataKey(dataPoint, dataKey)\n };\n };\n var errorBarProps = {\n clipPath: needClip ? \"url(#clipPath-\".concat(clipPathId, \")\") : null\n };\n return /*#__PURE__*/React.createElement(Layer, errorBarProps, errorBarItems.map(function (item) {\n return /*#__PURE__*/React.cloneElement(item, {\n key: \"error-bar-\".concat(clipPathId, \"-\").concat(item.props.dataKey),\n data: data,\n xAxis: xAxis,\n yAxis: yAxis,\n layout: layout,\n offset: offset,\n dataPointFormatter: dataPointFormatter\n });\n }));\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props6 = this.props,\n hide = _this$props6.hide,\n data = _this$props6.data,\n className = _this$props6.className,\n xAxis = _this$props6.xAxis,\n yAxis = _this$props6.yAxis,\n left = _this$props6.left,\n top = _this$props6.top,\n width = _this$props6.width,\n height = _this$props6.height,\n isAnimationActive = _this$props6.isAnimationActive,\n background = _this$props6.background,\n id = _this$props6.id;\n if (hide || !data || !data.length) {\n return null;\n }\n var isAnimationFinished = this.state.isAnimationFinished;\n var layerClass = clsx('recharts-bar', className);\n var needClipX = xAxis && xAxis.allowDataOverflow;\n var needClipY = yAxis && yAxis.allowDataOverflow;\n var needClip = needClipX || needClipY;\n var clipPathId = isNil(id) ? this.id : id;\n return /*#__PURE__*/React.createElement(Layer, {\n className: layerClass\n }, needClipX || needClipY ? /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"clipPath-\".concat(clipPathId)\n }, /*#__PURE__*/React.createElement(\"rect\", {\n x: needClipX ? left : left - width / 2,\n y: needClipY ? top : top - height / 2,\n width: needClipX ? width : width * 2,\n height: needClipY ? height : height * 2\n }))) : null, /*#__PURE__*/React.createElement(Layer, {\n className: \"recharts-bar-rectangles\",\n clipPath: needClip ? \"url(#clipPath-\".concat(clipPathId, \")\") : null\n }, background ? this.renderBackground() : null, this.renderRectangles()), this.renderErrorBar(needClip, clipPathId), (!isAnimationActive || isAnimationFinished) && LabelList.renderCallByParent(this.props, data));\n }\n }], [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(nextProps, prevState) {\n if (nextProps.animationId !== prevState.prevAnimationId) {\n return {\n prevAnimationId: nextProps.animationId,\n curData: nextProps.data,\n prevData: prevState.curData\n };\n }\n if (nextProps.data !== prevState.curData) {\n return {\n curData: nextProps.data\n };\n }\n return null;\n }\n }]);\n return Bar;\n}(PureComponent);\n_Bar = Bar;\n_defineProperty(Bar, \"displayName\", 'Bar');\n_defineProperty(Bar, \"defaultProps\", {\n xAxisId: 0,\n yAxisId: 0,\n legendType: 'rect',\n minPointSize: 0,\n hide: false,\n data: [],\n layout: 'vertical',\n activeBar: false,\n isAnimationActive: !Global.isSsr,\n animationBegin: 0,\n animationDuration: 400,\n animationEasing: 'ease'\n});\n/**\n * Compose the data of each group\n * @param {Object} props Props for the component\n * @param {Object} item An instance of Bar\n * @param {Array} barPosition The offset and size of each bar\n * @param {Object} xAxis The configuration of x-axis\n * @param {Object} yAxis The configuration of y-axis\n * @param {Array} stackedData The stacked data of a bar item\n * @return{Array} Composed data\n */\n_defineProperty(Bar, \"getComposedData\", function (_ref2) {\n var props = _ref2.props,\n item = _ref2.item,\n barPosition = _ref2.barPosition,\n bandSize = _ref2.bandSize,\n xAxis = _ref2.xAxis,\n yAxis = _ref2.yAxis,\n xAxisTicks = _ref2.xAxisTicks,\n yAxisTicks = _ref2.yAxisTicks,\n stackedData = _ref2.stackedData,\n dataStartIndex = _ref2.dataStartIndex,\n displayedData = _ref2.displayedData,\n offset = _ref2.offset;\n var pos = findPositionOfBar(barPosition, item);\n if (!pos) {\n return null;\n }\n var layout = props.layout;\n var _item$props = item.props,\n dataKey = _item$props.dataKey,\n children = _item$props.children,\n minPointSizeProp = _item$props.minPointSize;\n var numericAxis = layout === 'horizontal' ? yAxis : xAxis;\n var stackedDomain = stackedData ? numericAxis.scale.domain() : null;\n var baseValue = getBaseValueOfBar({\n numericAxis: numericAxis\n });\n var cells = findAllByType(children, Cell);\n var rects = displayedData.map(function (entry, index) {\n var value, x, y, width, height, background;\n if (stackedData) {\n value = truncateByDomain(stackedData[dataStartIndex + index], stackedDomain);\n } else {\n value = getValueByDataKey(entry, dataKey);\n if (!Array.isArray(value)) {\n value = [baseValue, value];\n }\n }\n var minPointSize = minPointSizeCallback(minPointSizeProp, _Bar.defaultProps.minPointSize)(value[1], index);\n if (layout === 'horizontal') {\n var _ref4;\n var _ref3 = [yAxis.scale(value[0]), yAxis.scale(value[1])],\n baseValueScale = _ref3[0],\n currentValueScale = _ref3[1];\n x = getCateCoordinateOfBar({\n axis: xAxis,\n ticks: xAxisTicks,\n bandSize: bandSize,\n offset: pos.offset,\n entry: entry,\n index: index\n });\n y = (_ref4 = currentValueScale !== null && currentValueScale !== void 0 ? currentValueScale : baseValueScale) !== null && _ref4 !== void 0 ? _ref4 : undefined;\n width = pos.size;\n var computedHeight = baseValueScale - currentValueScale;\n height = Number.isNaN(computedHeight) ? 0 : computedHeight;\n background = {\n x: x,\n y: yAxis.y,\n width: width,\n height: yAxis.height\n };\n if (Math.abs(minPointSize) > 0 && Math.abs(height) < Math.abs(minPointSize)) {\n var delta = mathSign(height || minPointSize) * (Math.abs(minPointSize) - Math.abs(height));\n y -= delta;\n height += delta;\n }\n } else {\n var _ref5 = [xAxis.scale(value[0]), xAxis.scale(value[1])],\n _baseValueScale = _ref5[0],\n _currentValueScale = _ref5[1];\n x = _baseValueScale;\n y = getCateCoordinateOfBar({\n axis: yAxis,\n ticks: yAxisTicks,\n bandSize: bandSize,\n offset: pos.offset,\n entry: entry,\n index: index\n });\n width = _currentValueScale - _baseValueScale;\n height = pos.size;\n background = {\n x: xAxis.x,\n y: y,\n width: xAxis.width,\n height: height\n };\n if (Math.abs(minPointSize) > 0 && Math.abs(width) < Math.abs(minPointSize)) {\n var _delta = mathSign(width || minPointSize) * (Math.abs(minPointSize) - Math.abs(width));\n width += _delta;\n }\n }\n return _objectSpread(_objectSpread(_objectSpread({}, entry), {}, {\n x: x,\n y: y,\n width: width,\n height: height,\n value: stackedData ? value : value[1],\n payload: entry,\n background: background\n }, cells && cells[index] && cells[index].props), {}, {\n tooltipPayload: [getTooltipItem(item, entry)],\n tooltipPosition: {\n x: x + width / 2,\n y: y + height / 2\n }\n });\n });\n return _objectSpread({\n data: rects,\n layout: layout\n }, offset);\n});","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nfunction toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nexport { toPropertyKey as default };","import _typeof from \"./typeof.js\";\nfunction toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nexport { toPrimitive as default };","import { useEffect, useRef } from 'react';\n\n/**\n * Creates a `Ref` whose value is updated in an effect, ensuring the most recent\n * value is the one rendered with. Generally only required for Concurrent mode usage\n * where previous work in `render()` may be discarded before being used.\n *\n * This is safe to access in an event handler.\n *\n * @param value The `Ref` value\n */\nfunction useCommittedRef(value) {\n const ref = useRef(value);\n useEffect(() => {\n ref.current = value;\n }, [value]);\n return ref;\n}\nexport default useCommittedRef;","import { useCallback } from 'react';\nimport useCommittedRef from './useCommittedRef';\nexport default function useEventCallback(fn) {\n const ref = useCommittedRef(fn);\n return useCallback(function (...args) {\n return ref.current && ref.current(...args);\n }, [ref]);\n}","import {\n getGlobalClassNames,\n getFocusStyle,\n HighContrastSelector,\n IStyle,\n getHighContrastNoAdjustStyle,\n} from '../../../../Styling';\nimport { ButtonGlobalClassNames } from '../../../Button/BaseButton.classNames';\nimport { IPeoplePickerItemSelectedStyleProps, IPeoplePickerItemSelectedStyles } from './PeoplePickerItem.types';\n\nconst GlobalClassNames = {\n root: 'ms-PickerPersona-container',\n itemContent: 'ms-PickerItem-content',\n removeButton: 'ms-PickerItem-removeButton',\n isSelected: 'is-selected',\n isInvalid: 'is-invalid',\n};\n\nconst REMOVE_BUTTON_SIZE = 24;\n\nexport function getStyles(props: IPeoplePickerItemSelectedStyleProps): IPeoplePickerItemSelectedStyles {\n const { className, theme, selected, invalid, disabled } = props;\n\n const { palette, semanticColors, fonts } = theme;\n\n const classNames = getGlobalClassNames(GlobalClassNames, theme);\n\n const personaPrimaryTextStyles: IStyle = [\n selected &&\n !invalid &&\n !disabled && {\n color: palette.white,\n selectors: {\n ':hover': {\n color: palette.white,\n },\n [HighContrastSelector]: {\n color: 'HighlightText',\n },\n },\n },\n ((invalid && !selected) || (invalid && selected && disabled)) && {\n color: palette.redDark,\n borderBottom: `2px dotted ${palette.redDark}`,\n selectors: {\n [`.${classNames.root}:hover &`]: {\n // override Persona root:hover selector\n color: palette.redDark,\n },\n },\n },\n invalid &&\n selected &&\n !disabled && {\n color: palette.white,\n borderBottom: `2px dotted ${palette.white}`,\n },\n disabled && {\n selectors: {\n [HighContrastSelector]: {\n color: 'GrayText',\n },\n },\n },\n ];\n\n const personaSecondaryTextStyles: IStyle = [\n selected &&\n !invalid &&\n !disabled && {\n color: palette.white,\n selectors: {\n ':hover': {\n color: palette.white,\n },\n [HighContrastSelector]: {\n color: 'HighlightText',\n },\n },\n },\n ];\n\n const personaCoinInitialsStyles: IStyle = [\n invalid && {\n fontSize: fonts.xLarge.fontSize,\n },\n ];\n\n return {\n root: [\n classNames.root,\n getFocusStyle(theme, { inset: -2 }),\n {\n borderRadius: 15,\n display: 'inline-flex',\n alignItems: 'center',\n background: palette.neutralLighter,\n margin: '1px 2px',\n cursor: 'default',\n userSelect: 'none',\n maxWidth: 300,\n verticalAlign: 'middle',\n minWidth: 0,\n selectors: {\n ':hover': {\n background: !selected && !disabled ? palette.neutralLight : '',\n },\n [HighContrastSelector]: [{ border: '1px solid WindowText' }, disabled && { borderColor: 'GrayText' }],\n },\n },\n selected &&\n !disabled && [\n classNames.isSelected,\n {\n background: palette.themePrimary,\n selectors: {\n [HighContrastSelector]: {\n borderColor: 'HighLight',\n background: 'Highlight',\n ...getHighContrastNoAdjustStyle(),\n },\n },\n },\n ],\n invalid && [classNames.isInvalid],\n invalid &&\n selected &&\n !disabled && {\n background: palette.redDark,\n },\n className,\n ],\n itemContent: [\n classNames.itemContent,\n {\n flex: '0 1 auto',\n minWidth: 0,\n // CSS below is needed for IE 11 to properly truncate long persona names in the picker\n // and to clip the presence indicator (in all browsers)\n maxWidth: '100%',\n overflow: 'hidden',\n },\n ],\n removeButton: [\n classNames.removeButton,\n {\n borderRadius: 15,\n color: palette.neutralPrimary,\n flex: '0 0 auto',\n width: REMOVE_BUTTON_SIZE,\n height: REMOVE_BUTTON_SIZE,\n selectors: {\n ':hover': {\n background: palette.neutralTertiaryAlt,\n color: palette.neutralDark,\n },\n },\n },\n selected && [\n {\n color: palette.white,\n selectors: {\n ':hover': {\n color: palette.white,\n background: palette.themeDark,\n },\n ':active': {\n color: palette.white,\n background: palette.themeDarker,\n },\n [HighContrastSelector]: {\n color: 'HighlightText',\n },\n },\n },\n invalid && {\n selectors: {\n ':hover': {\n background: palette.red,\n },\n ':active': {\n background: palette.redDark,\n },\n },\n },\n ],\n disabled && {\n selectors: {\n [`.${ButtonGlobalClassNames.msButtonIcon}`]: {\n color: semanticColors.buttonText,\n },\n },\n },\n ],\n subComponentStyles: {\n persona: {\n primaryText: personaPrimaryTextStyles,\n secondaryText: personaSecondaryTextStyles,\n },\n personaCoin: {\n initials: personaCoinInitialsStyles,\n },\n },\n };\n}\n","import * as React from 'react';\n\nimport { getId, classNamesFunction, styled, IStyleFunctionOrObject } from '../../../../Utilities';\nimport {\n Persona,\n PersonaSize,\n IPersonaStyleProps,\n IPersonaStyles,\n IPersonaCoinStyleProps,\n IPersonaCoinStyles,\n} from '../../../../Persona';\nimport { IconButton } from '../../../../Button';\nimport { ValidationState } from '../../BasePicker.types';\nimport {\n IPeoplePickerItemSelectedProps,\n IPeoplePickerItemSelectedStyleProps,\n IPeoplePickerItemSelectedStyles,\n} from './PeoplePickerItem.types';\nimport { getStyles } from './PeoplePickerItem.styles';\n\nconst getClassNames = classNamesFunction<IPeoplePickerItemSelectedStyleProps, IPeoplePickerItemSelectedStyles>();\n\nexport const PeoplePickerItemBase = (props: IPeoplePickerItemSelectedProps) => {\n const { item, onRemoveItem, index, selected, removeButtonAriaLabel, styles, theme, className, disabled } = props;\n\n const itemId = getId();\n\n const classNames = getClassNames(styles, {\n theme: theme!,\n className,\n selected,\n disabled,\n invalid: item.ValidationState === ValidationState.warning,\n });\n\n const personaStyles = classNames.subComponentStyles\n ? (classNames.subComponentStyles.persona as IStyleFunctionOrObject<IPersonaStyleProps, IPersonaStyles>)\n : undefined;\n\n const personaCoinStyles = classNames.subComponentStyles\n ? (classNames.subComponentStyles.personaCoin as IStyleFunctionOrObject<IPersonaCoinStyleProps, IPersonaCoinStyles>)\n : undefined;\n\n return (\n <div\n className={classNames.root}\n data-is-focusable={!disabled}\n data-is-sub-focuszone={true}\n data-selection-index={index}\n role={'listitem'}\n aria-labelledby={'selectedItemPersona-' + itemId}\n >\n <div className={classNames.itemContent} id={'selectedItemPersona-' + itemId}>\n <Persona size={PersonaSize.size24} styles={personaStyles} coinProps={{ styles: personaCoinStyles }} {...item} />\n </div>\n <IconButton\n onClick={onRemoveItem}\n disabled={disabled}\n iconProps={{ iconName: 'Cancel', styles: { root: { fontSize: '12px' } } }}\n className={classNames.removeButton}\n ariaLabel={removeButtonAriaLabel}\n />\n </div>\n );\n};\n\nexport const PeoplePickerItem = styled<\n IPeoplePickerItemSelectedProps,\n IPeoplePickerItemSelectedStyleProps,\n IPeoplePickerItemSelectedStyles\n>(PeoplePickerItemBase, getStyles, undefined, { scope: 'PeoplePickerItem' });\n","var baseIsArguments = require('./_baseIsArguments'),\n isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","var mapCacheClear = require('./_mapCacheClear'),\n mapCacheDelete = require('./_mapCacheDelete'),\n mapCacheGet = require('./_mapCacheGet'),\n mapCacheHas = require('./_mapCacheHas'),\n mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","/**\n * 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 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","/**\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","/** 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","/** 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","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = toDate;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nfunction toDate(date) {\n (0, _assertString.default)(date);\n date = Date.parse(date);\n return !isNaN(date) ? new Date(date) : null;\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isFQDN;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nvar _merge = _interopRequireDefault(require(\"./util/merge\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nvar default_fqdn_options = {\n require_tld: true,\n allow_underscores: false,\n allow_trailing_dot: false,\n allow_numeric_tld: false,\n allow_wildcard: false,\n ignore_max_length: false\n};\nfunction isFQDN(str, options) {\n (0, _assertString.default)(str);\n options = (0, _merge.default)(options, default_fqdn_options);\n\n /* Remove the optional trailing dot before checking validity */\n if (options.allow_trailing_dot && str[str.length - 1] === '.') {\n str = str.substring(0, str.length - 1);\n }\n\n /* Remove the optional wildcard before checking validity */\n if (options.allow_wildcard === true && str.indexOf('*.') === 0) {\n str = str.substring(2);\n }\n var parts = str.split('.');\n var tld = parts[parts.length - 1];\n if (options.require_tld) {\n // disallow fqdns without tld\n if (parts.length < 2) {\n return false;\n }\n if (!options.allow_numeric_tld && !/^([a-z\\u00A1-\\u00A8\\u00AA-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]{2,}|xn[a-z0-9-]{2,})$/i.test(tld)) {\n return false;\n }\n\n // disallow spaces\n if (/\\s/.test(tld)) {\n return false;\n }\n }\n\n // reject numeric TLDs\n if (!options.allow_numeric_tld && /^\\d+$/.test(tld)) {\n return false;\n }\n return parts.every(function (part) {\n if (part.length > 63 && !options.ignore_max_length) {\n return false;\n }\n if (!/^[a-z_\\u00a1-\\uffff0-9-]+$/i.test(part)) {\n return false;\n }\n\n // disallow full-width chars\n if (/[\\uff01-\\uff5e]/.test(part)) {\n return false;\n }\n\n // disallow parts starting or ending with hyphen\n if (/^-|-$/.test(part)) {\n return false;\n }\n if (!options.allow_underscores && /_/.test(part)) {\n return false;\n }\n return true;\n });\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isInt;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nvar int = /^(?:[-+]?(?:0|[1-9][0-9]*))$/;\nvar intLeadingZeroes = /^[-+]?[0-9]+$/;\nfunction isInt(str, options) {\n (0, _assertString.default)(str);\n options = options || {};\n\n // Get the regex to use for testing, based on whether\n // leading zeroes are allowed or not.\n var regex = options.allow_leading_zeroes === false ? int : intLeadingZeroes;\n\n // Check min/max/lt/gt\n var minCheckPassed = !options.hasOwnProperty('min') || str >= options.min;\n var maxCheckPassed = !options.hasOwnProperty('max') || str <= options.max;\n var ltCheckPassed = !options.hasOwnProperty('lt') || str < options.lt;\n var gtCheckPassed = !options.hasOwnProperty('gt') || str > options.gt;\n return regex.test(str) && minCheckPassed && maxCheckPassed && ltCheckPassed && gtCheckPassed;\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","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 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 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 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","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = _default;\n\nvar _index = require(\"../../../lib-vendor/d3-path/src/index.js\");\n\nvar _array = _interopRequireDefault(require(\"./array.js\"));\n\nvar _constant = _interopRequireDefault(require(\"./constant.js\"));\n\nvar _linear = _interopRequireDefault(require(\"./curve/linear.js\"));\n\nvar _point = require(\"./point.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _default(x, y) {\n var defined = (0, _constant.default)(true),\n context = null,\n curve = _linear.default,\n output = null;\n x = typeof x === \"function\" ? x : x === undefined ? _point.x : (0, _constant.default)(x);\n y = typeof y === \"function\" ? y : y === undefined ? _point.y : (0, _constant.default)(y);\n\n function line(data) {\n var i,\n n = (data = (0, _array.default)(data)).length,\n d,\n defined0 = false,\n buffer;\n if (context == null) output = curve(buffer = (0, _index.path)());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) output.lineStart();else output.lineEnd();\n }\n\n if (defined0) output.point(+x(d, i, data), +y(d, i, data));\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n line.x = function (_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : (0, _constant.default)(+_), line) : x;\n };\n\n line.y = function (_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : (0, _constant.default)(+_), line) : y;\n };\n\n line.defined = function (_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : (0, _constant.default)(!!_), line) : defined;\n };\n\n line.curve = function (_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), line) : curve;\n };\n\n line.context = function (_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), line) : context;\n };\n\n return line;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.x = x;\nexports.y = y;\n\nfunction x(p) {\n return p[0];\n}\n\nfunction y(p) {\n return p[1];\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nexports.point = point;\n\nvar _math = require(\"../math.js\");\n\nvar _cardinal = require(\"./cardinal.js\");\n\nfunction point(that, x, y) {\n var x1 = that._x1,\n y1 = that._y1,\n x2 = that._x2,\n y2 = that._y2;\n\n if (that._l01_a > _math.epsilon) {\n var a = 2 * that._l01_2a + 3 * that._l01_a * that._l12_a + that._l12_2a,\n n = 3 * that._l01_a * (that._l01_a + that._l12_a);\n x1 = (x1 * a - that._x0 * that._l12_2a + that._x2 * that._l01_2a) / n;\n y1 = (y1 * a - that._y0 * that._l12_2a + that._y2 * that._l01_2a) / n;\n }\n\n if (that._l23_a > _math.epsilon) {\n var b = 2 * that._l23_2a + 3 * that._l23_a * that._l12_a + that._l12_2a,\n m = 3 * that._l23_a * (that._l23_a + that._l12_a);\n x2 = (x2 * b + that._x1 * that._l23_2a - x * that._l12_2a) / m;\n y2 = (y2 * b + that._y1 * that._l23_2a - y * that._l12_2a) / m;\n }\n\n that._context.bezierCurveTo(x1, y1, x2, y2, that._x2, that._y2);\n}\n\nfunction CatmullRom(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\n\nCatmullRom.prototype = {\n areaStart: function () {\n this._line = 0;\n },\n areaEnd: function () {\n this._line = NaN;\n },\n lineStart: function () {\n this._x0 = this._x1 = this._x2 = this._y0 = this._y1 = this._y2 = NaN;\n this._l01_a = this._l12_a = this._l23_a = this._l01_2a = this._l12_2a = this._l23_2a = this._point = 0;\n },\n lineEnd: function () {\n switch (this._point) {\n case 2:\n this._context.lineTo(this._x2, this._y2);\n\n break;\n\n case 3:\n this.point(this._x2, this._y2);\n break;\n }\n\n if (this._line || this._line !== 0 && this._point === 1) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function (x, y) {\n x = +x, y = +y;\n\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n\n switch (this._point) {\n case 0:\n this._point = 1;\n this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y);\n break;\n\n case 1:\n this._point = 2;\n break;\n\n case 2:\n this._point = 3;\n // falls through\n\n default:\n point(this, x, y);\n break;\n }\n\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nvar _default = function custom(alpha) {\n function catmullRom(context) {\n return alpha ? new CatmullRom(context, alpha) : new _cardinal.Cardinal(context, 0);\n }\n\n catmullRom.alpha = function (alpha) {\n return custom(+alpha);\n };\n\n return catmullRom;\n}(0.5);\n\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = _default;\nexports.sum = sum;\n\nvar _none = _interopRequireDefault(require(\"./none.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _default(series) {\n var sums = series.map(sum);\n return (0, _none.default)(series).sort(function (a, b) {\n return sums[a] - sums[b];\n });\n}\n\nfunction sum(series) {\n var s = 0,\n i = -1,\n n = series.length,\n v;\n\n while (++i < n) if (v = +series[i][1]) s += v;\n\n return s;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = ticks;\nexports.tickIncrement = tickIncrement;\nexports.tickStep = tickStep;\nvar e10 = Math.sqrt(50),\n e5 = Math.sqrt(10),\n e2 = Math.sqrt(2);\n\nfunction ticks(start, stop, count) {\n var reverse,\n i = -1,\n n,\n ticks,\n step;\n stop = +stop, start = +start, count = +count;\n if (start === stop && count > 0) return [start];\n if (reverse = stop < start) n = start, start = stop, stop = n;\n if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) return [];\n\n if (step > 0) {\n let r0 = Math.round(start / step),\n r1 = Math.round(stop / step);\n if (r0 * step < start) ++r0;\n if (r1 * step > stop) --r1;\n ticks = new Array(n = r1 - r0 + 1);\n\n while (++i < n) ticks[i] = (r0 + i) * step;\n } else {\n step = -step;\n let r0 = Math.round(start * step),\n r1 = Math.round(stop * step);\n if (r0 / step < start) ++r0;\n if (r1 / step > stop) --r1;\n ticks = new Array(n = r1 - r0 + 1);\n\n while (++i < n) ticks[i] = (r0 + i) / step;\n }\n\n if (reverse) ticks.reverse();\n return ticks;\n}\n\nfunction tickIncrement(start, stop, count) {\n var step = (stop - start) / Math.max(0, count),\n power = Math.floor(Math.log(step) / Math.LN10),\n error = step / Math.pow(10, power);\n return power >= 0 ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power) : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1);\n}\n\nfunction tickStep(start, stop, count) {\n var step0 = Math.abs(stop - start) / Math.max(0, count),\n step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)),\n error = step0 / step1;\n if (error >= e10) step1 *= 10;else if (error >= e5) step1 *= 5;else if (error >= e2) step1 *= 2;\n return stop < start ? -step1 : step1;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = quantile;\nexports.quantileSorted = quantileSorted;\n\nvar _max = _interopRequireDefault(require(\"./max.js\"));\n\nvar _min = _interopRequireDefault(require(\"./min.js\"));\n\nvar _quickselect = _interopRequireDefault(require(\"./quickselect.js\"));\n\nvar _number = _interopRequireWildcard(require(\"./number.js\"));\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction quantile(values, p, valueof) {\n values = Float64Array.from((0, _number.numbers)(values, valueof));\n if (!(n = values.length)) return;\n if ((p = +p) <= 0 || n < 2) return (0, _min.default)(values);\n if (p >= 1) return (0, _max.default)(values);\n var n,\n i = (n - 1) * p,\n i0 = Math.floor(i),\n value0 = (0, _max.default)((0, _quickselect.default)(values, i0).subarray(0, i0 + 1)),\n value1 = (0, _min.default)(values.subarray(i0 + 1));\n return value0 + (value1 - value0) * (i - i0);\n}\n\nfunction quantileSorted(values, p, valueof = _number.default) {\n if (!(n = values.length)) return;\n if ((p = +p) <= 0 || n < 2) return +valueof(values[0], 0, values);\n if (p >= 1) return +valueof(values[n - 1], n - 1, values);\n var n,\n i = (n - 1) * p,\n i0 = Math.floor(i),\n value0 = +valueof(values[i0], i0, values),\n value1 = +valueof(values[i0 + 1], i0 + 1, values);\n return value0 + (value1 - value0) * (i - i0);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = min;\n\nfunction min(values, valueof) {\n let min;\n\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null && (min > value || min === undefined && value >= value)) {\n min = value;\n }\n }\n } else {\n let index = -1;\n\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null && (min > value || min === undefined && value >= value)) {\n min = value;\n }\n }\n }\n\n return min;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"interpolate\", {\n enumerable: true,\n get: function () {\n return _value.default;\n }\n});\nObject.defineProperty(exports, \"interpolateArray\", {\n enumerable: true,\n get: function () {\n return _array.default;\n }\n});\nObject.defineProperty(exports, \"interpolateBasis\", {\n enumerable: true,\n get: function () {\n return _basis.default;\n }\n});\nObject.defineProperty(exports, \"interpolateBasisClosed\", {\n enumerable: true,\n get: function () {\n return _basisClosed.default;\n }\n});\nObject.defineProperty(exports, \"interpolateCubehelix\", {\n enumerable: true,\n get: function () {\n return _cubehelix.default;\n }\n});\nObject.defineProperty(exports, \"interpolateCubehelixLong\", {\n enumerable: true,\n get: function () {\n return _cubehelix.cubehelixLong;\n }\n});\nObject.defineProperty(exports, \"interpolateDate\", {\n enumerable: true,\n get: function () {\n return _date.default;\n }\n});\nObject.defineProperty(exports, \"interpolateDiscrete\", {\n enumerable: true,\n get: function () {\n return _discrete.default;\n }\n});\nObject.defineProperty(exports, \"interpolateHcl\", {\n enumerable: true,\n get: function () {\n return _hcl.default;\n }\n});\nObject.defineProperty(exports, \"interpolateHclLong\", {\n enumerable: true,\n get: function () {\n return _hcl.hclLong;\n }\n});\nObject.defineProperty(exports, \"interpolateHsl\", {\n enumerable: true,\n get: function () {\n return _hsl.default;\n }\n});\nObject.defineProperty(exports, \"interpolateHslLong\", {\n enumerable: true,\n get: function () {\n return _hsl.hslLong;\n }\n});\nObject.defineProperty(exports, \"interpolateHue\", {\n enumerable: true,\n get: function () {\n return _hue.default;\n }\n});\nObject.defineProperty(exports, \"interpolateLab\", {\n enumerable: true,\n get: function () {\n return _lab.default;\n }\n});\nObject.defineProperty(exports, \"interpolateNumber\", {\n enumerable: true,\n get: function () {\n return _number.default;\n }\n});\nObject.defineProperty(exports, \"interpolateNumberArray\", {\n enumerable: true,\n get: function () {\n return _numberArray.default;\n }\n});\nObject.defineProperty(exports, \"interpolateObject\", {\n enumerable: true,\n get: function () {\n return _object.default;\n }\n});\nObject.defineProperty(exports, \"interpolateRgb\", {\n enumerable: true,\n get: function () {\n return _rgb.default;\n }\n});\nObject.defineProperty(exports, \"interpolateRgbBasis\", {\n enumerable: true,\n get: function () {\n return _rgb.rgbBasis;\n }\n});\nObject.defineProperty(exports, \"interpolateRgbBasisClosed\", {\n enumerable: true,\n get: function () {\n return _rgb.rgbBasisClosed;\n }\n});\nObject.defineProperty(exports, \"interpolateRound\", {\n enumerable: true,\n get: function () {\n return _round.default;\n }\n});\nObject.defineProperty(exports, \"interpolateString\", {\n enumerable: true,\n get: function () {\n return _string.default;\n }\n});\nObject.defineProperty(exports, \"interpolateTransformCss\", {\n enumerable: true,\n get: function () {\n return _index.interpolateTransformCss;\n }\n});\nObject.defineProperty(exports, \"interpolateTransformSvg\", {\n enumerable: true,\n get: function () {\n return _index.interpolateTransformSvg;\n }\n});\nObject.defineProperty(exports, \"interpolateZoom\", {\n enumerable: true,\n get: function () {\n return _zoom.default;\n }\n});\nObject.defineProperty(exports, \"piecewise\", {\n enumerable: true,\n get: function () {\n return _piecewise.default;\n }\n});\nObject.defineProperty(exports, \"quantize\", {\n enumerable: true,\n get: function () {\n return _quantize.default;\n }\n});\n\nvar _value = _interopRequireDefault(require(\"./value.js\"));\n\nvar _array = _interopRequireDefault(require(\"./array.js\"));\n\nvar _basis = _interopRequireDefault(require(\"./basis.js\"));\n\nvar _basisClosed = _interopRequireDefault(require(\"./basisClosed.js\"));\n\nvar _date = _interopRequireDefault(require(\"./date.js\"));\n\nvar _discrete = _interopRequireDefault(require(\"./discrete.js\"));\n\nvar _hue = _interopRequireDefault(require(\"./hue.js\"));\n\nvar _number = _interopRequireDefault(require(\"./number.js\"));\n\nvar _numberArray = _interopRequireDefault(require(\"./numberArray.js\"));\n\nvar _object = _interopRequireDefault(require(\"./object.js\"));\n\nvar _round = _interopRequireDefault(require(\"./round.js\"));\n\nvar _string = _interopRequireDefault(require(\"./string.js\"));\n\nvar _index = require(\"./transform/index.js\");\n\nvar _zoom = _interopRequireDefault(require(\"./zoom.js\"));\n\nvar _rgb = _interopRequireWildcard(require(\"./rgb.js\"));\n\nvar _hsl = _interopRequireWildcard(require(\"./hsl.js\"));\n\nvar _lab = _interopRequireDefault(require(\"./lab.js\"));\n\nvar _hcl = _interopRequireWildcard(require(\"./hcl.js\"));\n\nvar _cubehelix = _interopRequireWildcard(require(\"./cubehelix.js\"));\n\nvar _piecewise = _interopRequireDefault(require(\"./piecewise.js\"));\n\nvar _quantize = _interopRequireDefault(require(\"./quantize.js\"));\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Color = Color;\nexports.Rgb = Rgb;\nexports.darker = exports.brighter = void 0;\nexports.default = color;\nexports.hsl = hsl;\nexports.hslConvert = hslConvert;\nexports.rgb = rgb;\nexports.rgbConvert = rgbConvert;\n\nvar _define = _interopRequireWildcard(require(\"./define.js\"));\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction Color() {}\n\nvar darker = 0.7;\nexports.darker = darker;\nvar brighter = 1 / darker;\nexports.brighter = brighter;\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(`^rgb\\\\(${reI},${reI},${reI}\\\\)$`),\n reRgbPercent = new RegExp(`^rgb\\\\(${reP},${reP},${reP}\\\\)$`),\n reRgbaInteger = new RegExp(`^rgba\\\\(${reI},${reI},${reI},${reN}\\\\)$`),\n reRgbaPercent = new RegExp(`^rgba\\\\(${reP},${reP},${reP},${reN}\\\\)$`),\n reHslPercent = new RegExp(`^hsl\\\\(${reN},${reP},${reP}\\\\)$`),\n reHslaPercent = new RegExp(`^hsla\\\\(${reN},${reP},${reP},${reN}\\\\)$`);\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n(0, _define.default)(Color, color, {\n copy(channels) {\n return Object.assign(new this.constructor(), this, channels);\n },\n\n displayable() {\n return this.rgb().displayable();\n },\n\n hex: color_formatHex,\n // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHex8: color_formatHex8,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHex8() {\n return this.rgb().formatHex8();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nfunction color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb(m >> 8 & 0xf | m >> 4 & 0xf0, m >> 4 & 0xf | m & 0xf0, (m & 0xf) << 4 | m & 0xf, 1) // #f00\n : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? rgba(m >> 12 & 0xf | m >> 8 & 0xf0, m >> 8 & 0xf | m >> 4 & 0xf0, m >> 4 & 0xf | m & 0xf0, ((m & 0xf) << 4 | m & 0xf) / 0xff) // #f000\n : null // invalid hex\n ) : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0) : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nfunction rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb();\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nfunction rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nfunction Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\n(0, _define.default)(Rgb, rgb, (0, _define.extend)(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n\n rgb() {\n return this;\n },\n\n clamp() {\n return new Rgb(clampi(this.r), clampi(this.g), clampi(this.b), clampa(this.opacity));\n },\n\n displayable() {\n return -0.5 <= this.r && this.r < 255.5 && -0.5 <= this.g && this.g < 255.5 && -0.5 <= this.b && this.b < 255.5 && 0 <= this.opacity && this.opacity <= 1;\n },\n\n hex: rgb_formatHex,\n // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatHex8: rgb_formatHex8,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}`;\n}\n\nfunction rgb_formatHex8() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}${hex((isNaN(this.opacity) ? 1 : this.opacity) * 255)}`;\n}\n\nfunction rgb_formatRgb() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"rgb(\" : \"rgba(\"}${clampi(this.r)}, ${clampi(this.g)}, ${clampi(this.b)}${a === 1 ? \")\" : `, ${a})`}`;\n}\n\nfunction clampa(opacity) {\n return isNaN(opacity) ? 1 : Math.max(0, Math.min(1, opacity));\n}\n\nfunction clampi(value) {\n return Math.max(0, Math.min(255, Math.round(value) || 0));\n}\n\nfunction hex(value) {\n value = clampi(value);\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;else if (l <= 0 || l >= 1) h = s = NaN;else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nfunction hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl();\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;else if (g === max) h = (b - r) / s + 2;else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n\n return new Hsl(h, s, l, o.opacity);\n}\n\nfunction hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\n(0, _define.default)(Hsl, hsl, (0, _define.extend)(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n\n rgb() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2), hsl2rgb(h, m1, m2), hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2), this.opacity);\n },\n\n clamp() {\n return new Hsl(clamph(this.h), clampt(this.s), clampt(this.l), clampa(this.opacity));\n },\n\n displayable() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s)) && 0 <= this.l && this.l <= 1 && 0 <= this.opacity && this.opacity <= 1;\n },\n\n formatHsl() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"hsl(\" : \"hsla(\"}${clamph(this.h)}, ${clampt(this.s) * 100}%, ${clampt(this.l) * 100}%${a === 1 ? \")\" : `, ${a})`}`;\n }\n\n}));\n\nfunction clamph(value) {\n value = (value || 0) % 360;\n return value < 0 ? value + 360 : value;\n}\n\nfunction clampt(value) {\n return Math.max(0, Math.min(1, value || 0));\n}\n/* From FvD 13.37, CSS Color Module Level 3 */\n\n\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60 : h < 180 ? m2 : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60 : m1) * 255;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = _default;\nexports.extend = extend;\n\nfunction _default(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nfunction extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n\n for (var key in definition) prototype[key] = definition[key];\n\n return prototype;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.basis = basis;\nexports.default = _default;\n\nfunction basis(t1, v0, v1, v2, v3) {\n var t2 = t1 * t1,\n t3 = t2 * t1;\n return ((1 - 3 * t1 + 3 * t2 - t3) * v0 + (4 - 6 * t2 + 3 * t3) * v1 + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2 + t3 * v3) / 6;\n}\n\nfunction _default(values) {\n var n = values.length - 1;\n return function (t) {\n var i = t <= 0 ? t = 0 : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n v1 = values[i],\n v2 = values[i + 1],\n v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = _default;\nexports.isNumberArray = isNumberArray;\n\nfunction _default(a, b) {\n if (!b) b = [];\n var n = a ? Math.min(b.length, a.length) : 0,\n c = b.slice(),\n i;\n return function (t) {\n for (i = 0; i < n; ++i) c[i] = a[i] * (1 - t) + b[i] * t;\n\n return c;\n };\n}\n\nfunction isNumberArray(x) {\n return ArrayBuffer.isView(x) && !(x instanceof DataView);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = number;\n\nfunction number(x) {\n return +x;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = log;\nexports.loggish = loggish;\n\nvar _index = require(\"../../../lib-vendor/d3-array/src/index.js\");\n\nvar _index2 = require(\"../../../lib-vendor/d3-format/src/index.js\");\n\nvar _nice = _interopRequireDefault(require(\"./nice.js\"));\n\nvar _continuous = require(\"./continuous.js\");\n\nvar _init = require(\"./init.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction transformLog(x) {\n return Math.log(x);\n}\n\nfunction transformExp(x) {\n return Math.exp(x);\n}\n\nfunction transformLogn(x) {\n return -Math.log(-x);\n}\n\nfunction transformExpn(x) {\n return -Math.exp(-x);\n}\n\nfunction pow10(x) {\n return isFinite(x) ? +(\"1e\" + x) : x < 0 ? 0 : x;\n}\n\nfunction powp(base) {\n return base === 10 ? pow10 : base === Math.E ? Math.exp : x => Math.pow(base, x);\n}\n\nfunction logp(base) {\n return base === Math.E ? Math.log : base === 10 && Math.log10 || base === 2 && Math.log2 || (base = Math.log(base), x => Math.log(x) / base);\n}\n\nfunction reflect(f) {\n return (x, k) => -f(-x, k);\n}\n\nfunction loggish(transform) {\n const scale = transform(transformLog, transformExp);\n const domain = scale.domain;\n let base = 10;\n let logs;\n let pows;\n\n function rescale() {\n logs = logp(base), pows = powp(base);\n\n if (domain()[0] < 0) {\n logs = reflect(logs), pows = reflect(pows);\n transform(transformLogn, transformExpn);\n } else {\n transform(transformLog, transformExp);\n }\n\n return scale;\n }\n\n scale.base = function (_) {\n return arguments.length ? (base = +_, rescale()) : base;\n };\n\n scale.domain = function (_) {\n return arguments.length ? (domain(_), rescale()) : domain();\n };\n\n scale.ticks = count => {\n const d = domain();\n let u = d[0];\n let v = d[d.length - 1];\n const r = v < u;\n if (r) [u, v] = [v, u];\n let i = logs(u);\n let j = logs(v);\n let k;\n let t;\n const n = count == null ? 10 : +count;\n let z = [];\n\n if (!(base % 1) && j - i < n) {\n i = Math.floor(i), j = Math.ceil(j);\n if (u > 0) for (; i <= j; ++i) {\n for (k = 1; k < base; ++k) {\n t = i < 0 ? k / pows(-i) : k * pows(i);\n if (t < u) continue;\n if (t > v) break;\n z.push(t);\n }\n } else for (; i <= j; ++i) {\n for (k = base - 1; k >= 1; --k) {\n t = i > 0 ? k / pows(-i) : k * pows(i);\n if (t < u) continue;\n if (t > v) break;\n z.push(t);\n }\n }\n if (z.length * 2 < n) z = (0, _index.ticks)(u, v, n);\n } else {\n z = (0, _index.ticks)(i, j, Math.min(j - i, n)).map(pows);\n }\n\n return r ? z.reverse() : z;\n };\n\n scale.tickFormat = (count, specifier) => {\n if (count == null) count = 10;\n if (specifier == null) specifier = base === 10 ? \"s\" : \",\";\n\n if (typeof specifier !== \"function\") {\n if (!(base % 1) && (specifier = (0, _index2.formatSpecifier)(specifier)).precision == null) specifier.trim = true;\n specifier = (0, _index2.format)(specifier);\n }\n\n if (count === Infinity) return specifier;\n const k = Math.max(1, base * count / scale.ticks().length); // TODO fast estimate?\n\n return d => {\n let i = d / pows(Math.round(logs(d)));\n if (i * base < base - 0.5) i *= base;\n return i <= k ? specifier(d) : \"\";\n };\n };\n\n scale.nice = () => {\n return domain((0, _nice.default)(domain(), {\n floor: x => pows(Math.floor(logs(x))),\n ceil: x => pows(Math.ceil(logs(x)))\n }));\n };\n\n return scale;\n}\n\nfunction log() {\n const scale = loggish((0, _continuous.transformer)()).domain([1, 10]);\n\n scale.copy = () => (0, _continuous.copy)(scale, log()).base(scale.base());\n\n _init.initRange.apply(scale, arguments);\n\n return scale;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = symlog;\nexports.symlogish = symlogish;\n\nvar _linear = require(\"./linear.js\");\n\nvar _continuous = require(\"./continuous.js\");\n\nvar _init = require(\"./init.js\");\n\nfunction transformSymlog(c) {\n return function (x) {\n return Math.sign(x) * Math.log1p(Math.abs(x / c));\n };\n}\n\nfunction transformSymexp(c) {\n return function (x) {\n return Math.sign(x) * Math.expm1(Math.abs(x)) * c;\n };\n}\n\nfunction symlogish(transform) {\n var c = 1,\n scale = transform(transformSymlog(c), transformSymexp(c));\n\n scale.constant = function (_) {\n return arguments.length ? transform(transformSymlog(c = +_), transformSymexp(c)) : c;\n };\n\n return (0, _linear.linearish)(scale);\n}\n\nfunction symlog() {\n var scale = symlogish((0, _continuous.transformer)());\n\n scale.copy = function () {\n return (0, _continuous.copy)(scale, symlog()).constant(scale.constant());\n };\n\n return _init.initRange.apply(scale, arguments);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = pow;\nexports.powish = powish;\nexports.sqrt = sqrt;\n\nvar _linear = require(\"./linear.js\");\n\nvar _continuous = require(\"./continuous.js\");\n\nvar _init = require(\"./init.js\");\n\nfunction transformPow(exponent) {\n return function (x) {\n return x < 0 ? -Math.pow(-x, exponent) : Math.pow(x, exponent);\n };\n}\n\nfunction transformSqrt(x) {\n return x < 0 ? -Math.sqrt(-x) : Math.sqrt(x);\n}\n\nfunction transformSquare(x) {\n return x < 0 ? -x * x : x * x;\n}\n\nfunction powish(transform) {\n var scale = transform(_continuous.identity, _continuous.identity),\n exponent = 1;\n\n function rescale() {\n return exponent === 1 ? transform(_continuous.identity, _continuous.identity) : exponent === 0.5 ? transform(transformSqrt, transformSquare) : transform(transformPow(exponent), transformPow(1 / exponent));\n }\n\n scale.exponent = function (_) {\n return arguments.length ? (exponent = +_, rescale()) : exponent;\n };\n\n return (0, _linear.linearish)(scale);\n}\n\nfunction pow() {\n var scale = powish((0, _continuous.transformer)());\n\n scale.copy = function () {\n return (0, _continuous.copy)(scale, pow()).exponent(scale.exponent());\n };\n\n _init.initRange.apply(scale, arguments);\n\n return scale;\n}\n\nfunction sqrt() {\n return pow.apply(null, arguments).exponent(0.5);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"timeDay\", {\n enumerable: true,\n get: function () {\n return _day.default;\n }\n});\nObject.defineProperty(exports, \"timeDays\", {\n enumerable: true,\n get: function () {\n return _day.days;\n }\n});\nObject.defineProperty(exports, \"timeFriday\", {\n enumerable: true,\n get: function () {\n return _week.friday;\n }\n});\nObject.defineProperty(exports, \"timeFridays\", {\n enumerable: true,\n get: function () {\n return _week.fridays;\n }\n});\nObject.defineProperty(exports, \"timeHour\", {\n enumerable: true,\n get: function () {\n return _hour.default;\n }\n});\nObject.defineProperty(exports, \"timeHours\", {\n enumerable: true,\n get: function () {\n return _hour.hours;\n }\n});\nObject.defineProperty(exports, \"timeInterval\", {\n enumerable: true,\n get: function () {\n return _interval.default;\n }\n});\nObject.defineProperty(exports, \"timeMillisecond\", {\n enumerable: true,\n get: function () {\n return _millisecond.default;\n }\n});\nObject.defineProperty(exports, \"timeMilliseconds\", {\n enumerable: true,\n get: function () {\n return _millisecond.milliseconds;\n }\n});\nObject.defineProperty(exports, \"timeMinute\", {\n enumerable: true,\n get: function () {\n return _minute.default;\n }\n});\nObject.defineProperty(exports, \"timeMinutes\", {\n enumerable: true,\n get: function () {\n return _minute.minutes;\n }\n});\nObject.defineProperty(exports, \"timeMonday\", {\n enumerable: true,\n get: function () {\n return _week.monday;\n }\n});\nObject.defineProperty(exports, \"timeMondays\", {\n enumerable: true,\n get: function () {\n return _week.mondays;\n }\n});\nObject.defineProperty(exports, \"timeMonth\", {\n enumerable: true,\n get: function () {\n return _month.default;\n }\n});\nObject.defineProperty(exports, \"timeMonths\", {\n enumerable: true,\n get: function () {\n return _month.months;\n }\n});\nObject.defineProperty(exports, \"timeSaturday\", {\n enumerable: true,\n get: function () {\n return _week.saturday;\n }\n});\nObject.defineProperty(exports, \"timeSaturdays\", {\n enumerable: true,\n get: function () {\n return _week.saturdays;\n }\n});\nObject.defineProperty(exports, \"timeSecond\", {\n enumerable: true,\n get: function () {\n return _second.default;\n }\n});\nObject.defineProperty(exports, \"timeSeconds\", {\n enumerable: true,\n get: function () {\n return _second.seconds;\n }\n});\nObject.defineProperty(exports, \"timeSunday\", {\n enumerable: true,\n get: function () {\n return _week.sunday;\n }\n});\nObject.defineProperty(exports, \"timeSundays\", {\n enumerable: true,\n get: function () {\n return _week.sundays;\n }\n});\nObject.defineProperty(exports, \"timeThursday\", {\n enumerable: true,\n get: function () {\n return _week.thursday;\n }\n});\nObject.defineProperty(exports, \"timeThursdays\", {\n enumerable: true,\n get: function () {\n return _week.thursdays;\n }\n});\nObject.defineProperty(exports, \"timeTickInterval\", {\n enumerable: true,\n get: function () {\n return _ticks.timeTickInterval;\n }\n});\nObject.defineProperty(exports, \"timeTicks\", {\n enumerable: true,\n get: function () {\n return _ticks.timeTicks;\n }\n});\nObject.defineProperty(exports, \"timeTuesday\", {\n enumerable: true,\n get: function () {\n return _week.tuesday;\n }\n});\nObject.defineProperty(exports, \"timeTuesdays\", {\n enumerable: true,\n get: function () {\n return _week.tuesdays;\n }\n});\nObject.defineProperty(exports, \"timeWednesday\", {\n enumerable: true,\n get: function () {\n return _week.wednesday;\n }\n});\nObject.defineProperty(exports, \"timeWednesdays\", {\n enumerable: true,\n get: function () {\n return _week.wednesdays;\n }\n});\nObject.defineProperty(exports, \"timeWeek\", {\n enumerable: true,\n get: function () {\n return _week.sunday;\n }\n});\nObject.defineProperty(exports, \"timeWeeks\", {\n enumerable: true,\n get: function () {\n return _week.sundays;\n }\n});\nObject.defineProperty(exports, \"timeYear\", {\n enumerable: true,\n get: function () {\n return _year.default;\n }\n});\nObject.defineProperty(exports, \"timeYears\", {\n enumerable: true,\n get: function () {\n return _year.years;\n }\n});\nObject.defineProperty(exports, \"utcDay\", {\n enumerable: true,\n get: function () {\n return _utcDay.default;\n }\n});\nObject.defineProperty(exports, \"utcDays\", {\n enumerable: true,\n get: function () {\n return _utcDay.utcDays;\n }\n});\nObject.defineProperty(exports, \"utcFriday\", {\n enumerable: true,\n get: function () {\n return _utcWeek.utcFriday;\n }\n});\nObject.defineProperty(exports, \"utcFridays\", {\n enumerable: true,\n get: function () {\n return _utcWeek.utcFridays;\n }\n});\nObject.defineProperty(exports, \"utcHour\", {\n enumerable: true,\n get: function () {\n return _utcHour.default;\n }\n});\nObject.defineProperty(exports, \"utcHours\", {\n enumerable: true,\n get: function () {\n return _utcHour.utcHours;\n }\n});\nObject.defineProperty(exports, \"utcMillisecond\", {\n enumerable: true,\n get: function () {\n return _millisecond.default;\n }\n});\nObject.defineProperty(exports, \"utcMilliseconds\", {\n enumerable: true,\n get: function () {\n return _millisecond.milliseconds;\n }\n});\nObject.defineProperty(exports, \"utcMinute\", {\n enumerable: true,\n get: function () {\n return _utcMinute.default;\n }\n});\nObject.defineProperty(exports, \"utcMinutes\", {\n enumerable: true,\n get: function () {\n return _utcMinute.utcMinutes;\n }\n});\nObject.defineProperty(exports, \"utcMonday\", {\n enumerable: true,\n get: function () {\n return _utcWeek.utcMonday;\n }\n});\nObject.defineProperty(exports, \"utcMondays\", {\n enumerable: true,\n get: function () {\n return _utcWeek.utcMondays;\n }\n});\nObject.defineProperty(exports, \"utcMonth\", {\n enumerable: true,\n get: function () {\n return _utcMonth.default;\n }\n});\nObject.defineProperty(exports, \"utcMonths\", {\n enumerable: true,\n get: function () {\n return _utcMonth.utcMonths;\n }\n});\nObject.defineProperty(exports, \"utcSaturday\", {\n enumerable: true,\n get: function () {\n return _utcWeek.utcSaturday;\n }\n});\nObject.defineProperty(exports, \"utcSaturdays\", {\n enumerable: true,\n get: function () {\n return _utcWeek.utcSaturdays;\n }\n});\nObject.defineProperty(exports, \"utcSecond\", {\n enumerable: true,\n get: function () {\n return _second.default;\n }\n});\nObject.defineProperty(exports, \"utcSeconds\", {\n enumerable: true,\n get: function () {\n return _second.seconds;\n }\n});\nObject.defineProperty(exports, \"utcSunday\", {\n enumerable: true,\n get: function () {\n return _utcWeek.utcSunday;\n }\n});\nObject.defineProperty(exports, \"utcSundays\", {\n enumerable: true,\n get: function () {\n return _utcWeek.utcSundays;\n }\n});\nObject.defineProperty(exports, \"utcThursday\", {\n enumerable: true,\n get: function () {\n return _utcWeek.utcThursday;\n }\n});\nObject.defineProperty(exports, \"utcThursdays\", {\n enumerable: true,\n get: function () {\n return _utcWeek.utcThursdays;\n }\n});\nObject.defineProperty(exports, \"utcTickInterval\", {\n enumerable: true,\n get: function () {\n return _ticks.utcTickInterval;\n }\n});\nObject.defineProperty(exports, \"utcTicks\", {\n enumerable: true,\n get: function () {\n return _ticks.utcTicks;\n }\n});\nObject.defineProperty(exports, \"utcTuesday\", {\n enumerable: true,\n get: function () {\n return _utcWeek.utcTuesday;\n }\n});\nObject.defineProperty(exports, \"utcTuesdays\", {\n enumerable: true,\n get: function () {\n return _utcWeek.utcTuesdays;\n }\n});\nObject.defineProperty(exports, \"utcWednesday\", {\n enumerable: true,\n get: function () {\n return _utcWeek.utcWednesday;\n }\n});\nObject.defineProperty(exports, \"utcWednesdays\", {\n enumerable: true,\n get: function () {\n return _utcWeek.utcWednesdays;\n }\n});\nObject.defineProperty(exports, \"utcWeek\", {\n enumerable: true,\n get: function () {\n return _utcWeek.utcSunday;\n }\n});\nObject.defineProperty(exports, \"utcWeeks\", {\n enumerable: true,\n get: function () {\n return _utcWeek.utcSundays;\n }\n});\nObject.defineProperty(exports, \"utcYear\", {\n enumerable: true,\n get: function () {\n return _utcYear.default;\n }\n});\nObject.defineProperty(exports, \"utcYears\", {\n enumerable: true,\n get: function () {\n return _utcYear.utcYears;\n }\n});\n\nvar _interval = _interopRequireDefault(require(\"./interval.js\"));\n\nvar _millisecond = _interopRequireWildcard(require(\"./millisecond.js\"));\n\nvar _second = _interopRequireWildcard(require(\"./second.js\"));\n\nvar _minute = _interopRequireWildcard(require(\"./minute.js\"));\n\nvar _hour = _interopRequireWildcard(require(\"./hour.js\"));\n\nvar _day = _interopRequireWildcard(require(\"./day.js\"));\n\nvar _week = require(\"./week.js\");\n\nvar _month = _interopRequireWildcard(require(\"./month.js\"));\n\nvar _year = _interopRequireWildcard(require(\"./year.js\"));\n\nvar _utcMinute = _interopRequireWildcard(require(\"./utcMinute.js\"));\n\nvar _utcHour = _interopRequireWildcard(require(\"./utcHour.js\"));\n\nvar _utcDay = _interopRequireWildcard(require(\"./utcDay.js\"));\n\nvar _utcWeek = require(\"./utcWeek.js\");\n\nvar _utcMonth = _interopRequireWildcard(require(\"./utcMonth.js\"));\n\nvar _utcYear = _interopRequireWildcard(require(\"./utcYear.js\"));\n\nvar _ticks = require(\"./ticks.js\");\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = defaultLocale;\nexports.utcParse = exports.utcFormat = exports.timeParse = exports.timeFormat = void 0;\n\nvar _locale = _interopRequireDefault(require(\"./locale.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar locale;\nvar timeFormat;\nexports.timeFormat = timeFormat;\nvar timeParse;\nexports.timeParse = timeParse;\nvar utcFormat;\nexports.utcFormat = utcFormat;\nvar utcParse;\nexports.utcParse = utcParse;\ndefaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nfunction defaultLocale(definition) {\n locale = (0, _locale.default)(definition);\n exports.timeFormat = timeFormat = locale.format;\n exports.timeParse = timeParse = locale.parse;\n exports.utcFormat = utcFormat = locale.utcFormat;\n exports.utcParse = utcParse = locale.utcParse;\n return locale;\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 baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar numberTag = '[object Number]';\n\n/**\n * Checks if `value` is classified as a `Number` primitive or object.\n *\n * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are\n * classified as numbers, use the `_.isFinite` method.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a number, else `false`.\n * @example\n *\n * _.isNumber(3);\n * // => true\n *\n * _.isNumber(Number.MIN_VALUE);\n * // => true\n *\n * _.isNumber(Infinity);\n * // => true\n *\n * _.isNumber('3');\n * // => false\n */\nfunction isNumber(value) {\n return typeof value == 'number' ||\n (isObjectLike(value) && baseGetTag(value) == numberTag);\n}\n\nmodule.exports = isNumber;\n","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : String(i); }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport { Legend } from '../component/Legend';\nimport { getMainColorOfGraphicItem } from './ChartUtils';\nimport { findChildByType } from './ReactUtils';\nexport var getLegendProps = function getLegendProps(_ref) {\n var children = _ref.children,\n formattedGraphicalItems = _ref.formattedGraphicalItems,\n legendWidth = _ref.legendWidth,\n legendContent = _ref.legendContent;\n var legendItem = findChildByType(children, Legend);\n if (!legendItem) {\n return null;\n }\n var legendData;\n if (legendItem.props && legendItem.props.payload) {\n legendData = legendItem.props && legendItem.props.payload;\n } else if (legendContent === 'children') {\n legendData = (formattedGraphicalItems || []).reduce(function (result, _ref2) {\n var item = _ref2.item,\n props = _ref2.props;\n var data = props.sectors || props.data || [];\n return result.concat(data.map(function (entry) {\n return {\n type: legendItem.props.iconType || item.props.legendType,\n value: entry.name,\n color: entry.fill,\n payload: entry\n };\n }));\n }, []);\n } else {\n legendData = (formattedGraphicalItems || []).map(function (_ref3) {\n var item = _ref3.item;\n var _item$props = item.props,\n dataKey = _item$props.dataKey,\n name = _item$props.name,\n legendType = _item$props.legendType,\n hide = _item$props.hide;\n return {\n inactive: hide,\n dataKey: dataKey,\n type: legendItem.props.iconType || legendType || 'square',\n color: getMainColorOfGraphicItem(item),\n value: name || dataKey,\n // @ts-expect-error property strokeDasharray is required in Payload but optional in props\n payload: item.props\n };\n });\n }\n return _objectSpread(_objectSpread(_objectSpread({}, legendItem.props), Legend.getWithHeight(legendItem, legendWidth)), {}, {\n payload: legendData,\n item: legendItem\n });\n};","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\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 invariant = function(condition, format, a, b, c, d, e, f) {\n if (process.env.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","var isarray = require('isarray')\n\n/**\n * Expose `pathToRegexp`.\n */\nmodule.exports = pathToRegexp\nmodule.exports.parse = parse\nmodule.exports.compile = compile\nmodule.exports.tokensToFunction = tokensToFunction\nmodule.exports.tokensToRegExp = tokensToRegExp\n\n/**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\nvar PATH_REGEXP = new RegExp([\n // Match escaped characters that would otherwise appear in future matches.\n // This allows the user to escape special characters that won't transform.\n '(\\\\\\\\.)',\n // Match Express-style parameters and un-named parameters with a prefix\n // and optional suffixes. Matches appear as:\n //\n // \"/:test(\\\\d+)?\" => [\"/\", \"test\", \"\\d+\", undefined, \"?\", undefined]\n // \"/route(\\\\d+)\" => [undefined, undefined, undefined, \"\\d+\", undefined, undefined]\n // \"/*\" => [\"/\", undefined, undefined, undefined, undefined, \"*\"]\n '([\\\\/.])?(?:(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?|(\\\\*))'\n].join('|'), 'g')\n\n/**\n * Parse a string for the raw tokens.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!Array}\n */\nfunction parse (str, options) {\n var tokens = []\n var key = 0\n var index = 0\n var path = ''\n var defaultDelimiter = options && options.delimiter || '/'\n var res\n\n while ((res = PATH_REGEXP.exec(str)) != null) {\n var m = res[0]\n var escaped = res[1]\n var offset = res.index\n path += str.slice(index, offset)\n index = offset + m.length\n\n // Ignore already escaped sequences.\n if (escaped) {\n path += escaped[1]\n continue\n }\n\n var next = str[index]\n var prefix = res[2]\n var name = res[3]\n var capture = res[4]\n var group = res[5]\n var modifier = res[6]\n var asterisk = res[7]\n\n // Push the current path onto the tokens.\n if (path) {\n tokens.push(path)\n path = ''\n }\n\n var partial = prefix != null && next != null && next !== prefix\n var repeat = modifier === '+' || modifier === '*'\n var optional = modifier === '?' || modifier === '*'\n var delimiter = prefix || defaultDelimiter\n var pattern = capture || group\n var prevText = prefix || (typeof tokens[tokens.length - 1] === 'string' ? tokens[tokens.length - 1] : '')\n\n tokens.push({\n name: name || key++,\n prefix: prefix || '',\n delimiter: delimiter,\n optional: optional,\n repeat: repeat,\n partial: partial,\n asterisk: !!asterisk,\n pattern: pattern ? escapeGroup(pattern) : (asterisk ? '.*' : restrictBacktrack(delimiter, prevText))\n })\n }\n\n // Match any characters still remaining.\n if (index < str.length) {\n path += str.substr(index)\n }\n\n // If the path exists, push it onto the end.\n if (path) {\n tokens.push(path)\n }\n\n return tokens\n}\n\nfunction restrictBacktrack(delimiter, prevText) {\n if (!prevText || prevText.indexOf(delimiter) > -1) {\n return '[^' + escapeString(delimiter) + ']+?'\n }\n\n return escapeString(prevText) + '|(?:(?!' + escapeString(prevText) + ')[^' + escapeString(delimiter) + '])+?'\n}\n\n/**\n * Compile a string to a template function for the path.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!function(Object=, Object=)}\n */\nfunction compile (str, options) {\n return tokensToFunction(parse(str, options), options)\n}\n\n/**\n * Prettier encoding of URI path segments.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeURIComponentPretty (str) {\n return encodeURI(str).replace(/[\\/?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Encode the asterisk parameter. Similar to `pretty`, but allows slashes.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeAsterisk (str) {\n return encodeURI(str).replace(/[?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Expose a method for transforming tokens into the path function.\n */\nfunction tokensToFunction (tokens, options) {\n // Compile all the tokens into regexps.\n var matches = new Array(tokens.length)\n\n // Compile all the patterns before compilation.\n for (var i = 0; i < tokens.length; i++) {\n if (typeof tokens[i] === 'object') {\n matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$', flags(options))\n }\n }\n\n return function (obj, opts) {\n var path = ''\n var data = obj || {}\n var options = opts || {}\n var encode = options.pretty ? encodeURIComponentPretty : encodeURIComponent\n\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n path += token\n\n continue\n }\n\n var value = data[token.name]\n var segment\n\n if (value == null) {\n if (token.optional) {\n // Prepend partial segment prefixes.\n if (token.partial) {\n path += token.prefix\n }\n\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to be defined')\n }\n }\n\n if (isarray(value)) {\n if (!token.repeat) {\n throw new TypeError('Expected \"' + token.name + '\" to not repeat, but received `' + JSON.stringify(value) + '`')\n }\n\n if (value.length === 0) {\n if (token.optional) {\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to not be empty')\n }\n }\n\n for (var j = 0; j < value.length; j++) {\n segment = encode(value[j])\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\", but received `' + JSON.stringify(segment) + '`')\n }\n\n path += (j === 0 ? token.prefix : token.delimiter) + segment\n }\n\n continue\n }\n\n segment = token.asterisk ? encodeAsterisk(value) : encode(value)\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but received \"' + segment + '\"')\n }\n\n path += token.prefix + segment\n }\n\n return path\n }\n}\n\n/**\n * Escape a regular expression string.\n *\n * @param {string} str\n * @return {string}\n */\nfunction escapeString (str) {\n return str.replace(/([.+*?=^!:${}()[\\]|\\/\\\\])/g, '\\\\$1')\n}\n\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param {string} group\n * @return {string}\n */\nfunction escapeGroup (group) {\n return group.replace(/([=!:$\\/()])/g, '\\\\$1')\n}\n\n/**\n * Attach the keys as a property of the regexp.\n *\n * @param {!RegExp} re\n * @param {Array} keys\n * @return {!RegExp}\n */\nfunction attachKeys (re, keys) {\n re.keys = keys\n return re\n}\n\n/**\n * Get the flags for a regexp from the options.\n *\n * @param {Object} options\n * @return {string}\n */\nfunction flags (options) {\n return options && options.sensitive ? '' : 'i'\n}\n\n/**\n * Pull out keys from a regexp.\n *\n * @param {!RegExp} path\n * @param {!Array} keys\n * @return {!RegExp}\n */\nfunction regexpToRegexp (path, keys) {\n // Use a negative lookahead to match only capturing groups.\n var groups = path.source.match(/\\((?!\\?)/g)\n\n if (groups) {\n for (var i = 0; i < groups.length; i++) {\n keys.push({\n name: i,\n prefix: null,\n delimiter: null,\n optional: false,\n repeat: false,\n partial: false,\n asterisk: false,\n pattern: null\n })\n }\n }\n\n return attachKeys(path, keys)\n}\n\n/**\n * Transform an array into a regexp.\n *\n * @param {!Array} path\n * @param {Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction arrayToRegexp (path, keys, options) {\n var parts = []\n\n for (var i = 0; i < path.length; i++) {\n parts.push(pathToRegexp(path[i], keys, options).source)\n }\n\n var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options))\n\n return attachKeys(regexp, keys)\n}\n\n/**\n * Create a path regexp from string input.\n *\n * @param {string} path\n * @param {!Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction stringToRegexp (path, keys, options) {\n return tokensToRegExp(parse(path, options), keys, options)\n}\n\n/**\n * Expose a function for taking tokens and returning a RegExp.\n *\n * @param {!Array} tokens\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction tokensToRegExp (tokens, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options)\n keys = []\n }\n\n options = options || {}\n\n var strict = options.strict\n var end = options.end !== false\n var route = ''\n\n // Iterate over the tokens and create our regexp string.\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n route += escapeString(token)\n } else {\n var prefix = escapeString(token.prefix)\n var capture = '(?:' + token.pattern + ')'\n\n keys.push(token)\n\n if (token.repeat) {\n capture += '(?:' + prefix + capture + ')*'\n }\n\n if (token.optional) {\n if (!token.partial) {\n capture = '(?:' + prefix + '(' + capture + '))?'\n } else {\n capture = prefix + '(' + capture + ')?'\n }\n } else {\n capture = prefix + '(' + capture + ')'\n }\n\n route += capture\n }\n }\n\n var delimiter = escapeString(options.delimiter || '/')\n var endsWithDelimiter = route.slice(-delimiter.length) === delimiter\n\n // In non-strict mode we allow a slash at the end of match. If the path to\n // match already ends with a slash, we remove it for consistency. The slash\n // is valid at the end of a path match, not in the middle. This is important\n // in non-ending mode, where \"/test/\" shouldn't match \"/test//route\".\n if (!strict) {\n route = (endsWithDelimiter ? route.slice(0, -delimiter.length) : route) + '(?:' + delimiter + '(?=$))?'\n }\n\n if (end) {\n route += '$'\n } else {\n // In non-ending mode, we need the capturing groups to match as much as\n // possible by using a positive lookahead to the end or next path segment.\n route += strict && endsWithDelimiter ? '' : '(?=' + delimiter + '|$)'\n }\n\n return attachKeys(new RegExp('^' + route, flags(options)), keys)\n}\n\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n *\n * @param {(string|RegExp|Array)} path\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction pathToRegexp (path, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options)\n keys = []\n }\n\n options = options || {}\n\n if (path instanceof RegExp) {\n return regexpToRegexp(path, /** @type {!Array} */ (keys))\n }\n\n if (isarray(path)) {\n return arrayToRegexp(/** @type {!Array} */ (path), /** @type {!Array} */ (keys), options)\n }\n\n return stringToRegexp(/** @type {string} */ (path), /** @type {!Array} */ (keys), options)\n}\n","import { ISettingsMap, warn } from './warn';\n/**\n * Warns when a deprecated props are being used.\n *\n * @public\n * @param componentName - The name of the component being used.\n * @param props - The props passed into the component.\n * @param deprecationMap - The map of deprecations, where key is the prop name and the value is\n * either null or a replacement prop name.\n */\nexport function warnDeprecations<P>(componentName: string, props: P, deprecationMap: ISettingsMap<P>): void {\n if (process.env.NODE_ENV !== 'production') {\n for (const propName in deprecationMap) {\n if (props && propName in props) {\n let deprecationMessage = `${componentName} property '${propName}' was used but has been deprecated.`;\n const replacementPropName = deprecationMap[propName];\n if (replacementPropName) {\n deprecationMessage += ` Use '${replacementPropName}' instead.`;\n }\n warn(deprecationMessage);\n }\n }\n }\n}\n","import { getWindow } from './dom/getWindow';\nimport { Stylesheet } from '@uifabric/merge-styles';\n\n// Initialize global window id.\nconst CURRENT_ID_PROPERTY = '__currentId__';\nconst DEFAULT_ID_STRING = 'id__';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nlet _global: any = getWindow() || {};\n\nif (_global[CURRENT_ID_PROPERTY] === undefined) {\n _global[CURRENT_ID_PROPERTY] = 0;\n}\n\nlet _initializedStylesheetResets = false;\n\n/**\n * Generates a unique id in the global scope (this spans across duplicate copies of the same library.)\n *\n * @public\n */\nexport function getId(prefix?: string): string {\n if (!_initializedStylesheetResets) {\n // Configure ids to reset on stylesheet resets.\n const stylesheet = Stylesheet.getInstance();\n\n if (stylesheet && stylesheet.onReset) {\n stylesheet.onReset(resetIds);\n }\n _initializedStylesheetResets = true;\n }\n\n let index = _global[CURRENT_ID_PROPERTY]++;\n\n return (prefix === undefined ? DEFAULT_ID_STRING : prefix) + index;\n}\n\n/**\n * Resets id counter to an (optional) number.\n *\n * @public\n */\nexport function resetIds(counter: number = 0): void {\n _global[CURRENT_ID_PROPERTY] = counter;\n}\n","export const DATA_PORTAL_ATTRIBUTE = 'data-portal-element';\n\n/**\n * Identify element as a portal by setting an attribute.\n * @param element - Element to mark as a portal.\n */\nexport function setPortalAttribute(element: HTMLElement): void {\n element.setAttribute(DATA_PORTAL_ATTRIBUTE, 'true');\n}\n","import * as React from 'react';\nimport { TooltipHostBase } from './TooltipHost.base';\nimport { TooltipDelay, ITooltipProps } from './Tooltip.types';\nimport { ICalloutProps } from '../../Callout';\nimport { DirectionalHint } from '../../common/DirectionalHint';\nimport { IRefObject, IStyleFunctionOrObject } from '../../Utilities';\nimport { IStyle, ITheme } from '../../Styling';\n\n/**\n * {@docCategory Tooltip}\n */\nexport interface ITooltipHost {\n /**\n * Shows the tooltip.\n */\n show: () => void;\n\n /**\n * Dismisses the tooltip.\n */\n dismiss: () => void;\n}\n\n/**\n * {@docCategory Tooltip}\n */\nexport enum TooltipOverflowMode {\n /** Only show tooltip if parent DOM element is overflowing */\n Parent,\n\n /**\n * Only show tooltip if tooltip host's content is overflowing.\n * Note that this does not check the children for overflow, only the TooltipHost root.\n */\n Self,\n}\n\n/**\n * TooltipHost props. Note that native props (such as `id`, `className`, and `aria-` props) are\n * passed through to the Tooltip itself, rather than being used on the host element.\n * {@docCategory Tooltip}\n */\nexport interface ITooltipHostProps extends React.HTMLAttributes<HTMLDivElement | TooltipHostBase> {\n /**\n * Optional callback to access the ITooltipHost interface. Use this instead of ref for accessing\n * the public methods and properties of the component.\n */\n componentRef?: IRefObject<ITooltipHost>;\n\n /**\n * Additional properties to pass through for Callout.\n */\n calloutProps?: ICalloutProps;\n\n /**\n * Number of milliseconds to delay closing the tooltip, so that the user has time to hover over\n * the tooltip and interact with it. Hovering over the tooltip will count as hovering over the\n * host, so that the tooltip will stay open if the user is actively interacting with it.\n */\n closeDelay?: number;\n\n /**\n * Content to display in the Tooltip.\n */\n content?: string | JSX.Element | JSX.Element[];\n\n /**\n * Length of delay before showing the tooltip on hover.\n * @defaultvalue TooltipDelay.medium\n */\n delay?: TooltipDelay;\n\n /**\n * How the tooltip should be anchored to its `targetElement`.\n * @defaultvalue DirectionalHint.topCenter\n */\n directionalHint?: DirectionalHint;\n\n /**\n * How the element should be positioned in RTL layouts.\n * If not specified, a mirror of `directionalHint` will be used.\n */\n directionalHintForRTL?: DirectionalHint;\n\n /**\n * Class name to apply to tooltip host.\n */\n hostClassName?: string;\n\n /**\n * Class name to apply to the *tooltip itself*, not the host.\n * To apply a class to the host, use `hostClassName` or `styles.root`.\n */\n className?: string;\n\n /**\n * If this is unset (the default), the tooltip is always shown even if there's no overflow.\n *\n * If set, only show the tooltip if the specified element (`Self` or `Parent`) has overflow.\n * When set to `Parent`, the parent element is also used as the tooltip's target element.\n *\n * Note that even with `Self` mode, the TooltipHost *does not* check whether any children have overflow.\n */\n overflowMode?: TooltipOverflowMode;\n\n /**\n * Whether or not to mark the TooltipHost root element as described by the tooltip.\n * If not specified, the caller should pass an `id` to the TooltipHost (to be passed through to\n * the Tooltip) and mark the appropriate element as `aria-describedby` the `id`.\n * @defaultvalue true\n */\n setAriaDescribedBy?: boolean;\n\n /**\n * Additional properties to pass through for Tooltip.\n */\n tooltipProps?: ITooltipProps;\n\n /**\n * Optional ID to pass through to the tooltip (not used on the host itself).\n * Auto-generated if not provided.\n */\n id?: string;\n\n /**\n * Call to provide customized styling that will layer on top of the variant rules.\n */\n styles?: IStyleFunctionOrObject<ITooltipHostStyleProps, ITooltipHostStyles>;\n\n /**\n * Theme provided by higher-order component.\n */\n theme?: ITheme;\n\n /**\n * Notifies when tooltip becomes visible or hidden, whatever the trigger was.\n */\n onTooltipToggle?(isTooltipVisible: boolean): void;\n}\n\n/**\n * {@docCategory Tooltip}\n */\nexport interface ITooltipHostStyleProps {\n theme: ITheme;\n className?: string;\n}\n\n/**\n * {@docCategory Tooltip}\n */\nexport interface ITooltipHostStyles {\n /**\n * Style for the host wrapper element.\n */\n root: IStyle;\n}\n","\"use strict\";\n\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _toDate = _interopRequireDefault(require(\"./lib/toDate\"));\nvar _toFloat = _interopRequireDefault(require(\"./lib/toFloat\"));\nvar _toInt = _interopRequireDefault(require(\"./lib/toInt\"));\nvar _toBoolean = _interopRequireDefault(require(\"./lib/toBoolean\"));\nvar _equals = _interopRequireDefault(require(\"./lib/equals\"));\nvar _contains = _interopRequireDefault(require(\"./lib/contains\"));\nvar _matches = _interopRequireDefault(require(\"./lib/matches\"));\nvar _isEmail = _interopRequireDefault(require(\"./lib/isEmail\"));\nvar _isURL = _interopRequireDefault(require(\"./lib/isURL\"));\nvar _isMACAddress = _interopRequireDefault(require(\"./lib/isMACAddress\"));\nvar _isIP = _interopRequireDefault(require(\"./lib/isIP\"));\nvar _isIPRange = _interopRequireDefault(require(\"./lib/isIPRange\"));\nvar _isFQDN = _interopRequireDefault(require(\"./lib/isFQDN\"));\nvar _isDate = _interopRequireDefault(require(\"./lib/isDate\"));\nvar _isTime = _interopRequireDefault(require(\"./lib/isTime\"));\nvar _isBoolean = _interopRequireDefault(require(\"./lib/isBoolean\"));\nvar _isLocale = _interopRequireDefault(require(\"./lib/isLocale\"));\nvar _isAbaRouting = _interopRequireDefault(require(\"./lib/isAbaRouting\"));\nvar _isAlpha = _interopRequireWildcard(require(\"./lib/isAlpha\"));\nvar _isAlphanumeric = _interopRequireWildcard(require(\"./lib/isAlphanumeric\"));\nvar _isNumeric = _interopRequireDefault(require(\"./lib/isNumeric\"));\nvar _isPassportNumber = _interopRequireDefault(require(\"./lib/isPassportNumber\"));\nvar _isPort = _interopRequireDefault(require(\"./lib/isPort\"));\nvar _isLowercase = _interopRequireDefault(require(\"./lib/isLowercase\"));\nvar _isUppercase = _interopRequireDefault(require(\"./lib/isUppercase\"));\nvar _isIMEI = _interopRequireDefault(require(\"./lib/isIMEI\"));\nvar _isAscii = _interopRequireDefault(require(\"./lib/isAscii\"));\nvar _isFullWidth = _interopRequireDefault(require(\"./lib/isFullWidth\"));\nvar _isHalfWidth = _interopRequireDefault(require(\"./lib/isHalfWidth\"));\nvar _isVariableWidth = _interopRequireDefault(require(\"./lib/isVariableWidth\"));\nvar _isMultibyte = _interopRequireDefault(require(\"./lib/isMultibyte\"));\nvar _isSemVer = _interopRequireDefault(require(\"./lib/isSemVer\"));\nvar _isSurrogatePair = _interopRequireDefault(require(\"./lib/isSurrogatePair\"));\nvar _isInt = _interopRequireDefault(require(\"./lib/isInt\"));\nvar _isFloat = _interopRequireWildcard(require(\"./lib/isFloat\"));\nvar _isDecimal = _interopRequireDefault(require(\"./lib/isDecimal\"));\nvar _isHexadecimal = _interopRequireDefault(require(\"./lib/isHexadecimal\"));\nvar _isOctal = _interopRequireDefault(require(\"./lib/isOctal\"));\nvar _isDivisibleBy = _interopRequireDefault(require(\"./lib/isDivisibleBy\"));\nvar _isHexColor = _interopRequireDefault(require(\"./lib/isHexColor\"));\nvar _isRgbColor = _interopRequireDefault(require(\"./lib/isRgbColor\"));\nvar _isHSL = _interopRequireDefault(require(\"./lib/isHSL\"));\nvar _isISRC = _interopRequireDefault(require(\"./lib/isISRC\"));\nvar _isIBAN = _interopRequireWildcard(require(\"./lib/isIBAN\"));\nvar _isBIC = _interopRequireDefault(require(\"./lib/isBIC\"));\nvar _isMD = _interopRequireDefault(require(\"./lib/isMD5\"));\nvar _isHash = _interopRequireDefault(require(\"./lib/isHash\"));\nvar _isJWT = _interopRequireDefault(require(\"./lib/isJWT\"));\nvar _isJSON = _interopRequireDefault(require(\"./lib/isJSON\"));\nvar _isEmpty = _interopRequireDefault(require(\"./lib/isEmpty\"));\nvar _isLength = _interopRequireDefault(require(\"./lib/isLength\"));\nvar _isByteLength = _interopRequireDefault(require(\"./lib/isByteLength\"));\nvar _isUUID = _interopRequireDefault(require(\"./lib/isUUID\"));\nvar _isMongoId = _interopRequireDefault(require(\"./lib/isMongoId\"));\nvar _isAfter = _interopRequireDefault(require(\"./lib/isAfter\"));\nvar _isBefore = _interopRequireDefault(require(\"./lib/isBefore\"));\nvar _isIn = _interopRequireDefault(require(\"./lib/isIn\"));\nvar _isLuhnNumber = _interopRequireDefault(require(\"./lib/isLuhnNumber\"));\nvar _isCreditCard = _interopRequireDefault(require(\"./lib/isCreditCard\"));\nvar _isIdentityCard = _interopRequireDefault(require(\"./lib/isIdentityCard\"));\nvar _isEAN = _interopRequireDefault(require(\"./lib/isEAN\"));\nvar _isISIN = _interopRequireDefault(require(\"./lib/isISIN\"));\nvar _isISBN = _interopRequireDefault(require(\"./lib/isISBN\"));\nvar _isISSN = _interopRequireDefault(require(\"./lib/isISSN\"));\nvar _isTaxID = _interopRequireDefault(require(\"./lib/isTaxID\"));\nvar _isMobilePhone = _interopRequireWildcard(require(\"./lib/isMobilePhone\"));\nvar _isEthereumAddress = _interopRequireDefault(require(\"./lib/isEthereumAddress\"));\nvar _isCurrency = _interopRequireDefault(require(\"./lib/isCurrency\"));\nvar _isBtcAddress = _interopRequireDefault(require(\"./lib/isBtcAddress\"));\nvar _isISO = require(\"./lib/isISO6346\");\nvar _isISO2 = _interopRequireDefault(require(\"./lib/isISO6391\"));\nvar _isISO3 = _interopRequireDefault(require(\"./lib/isISO8601\"));\nvar _isRFC = _interopRequireDefault(require(\"./lib/isRFC3339\"));\nvar _isISO31661Alpha = _interopRequireDefault(require(\"./lib/isISO31661Alpha2\"));\nvar _isISO31661Alpha2 = _interopRequireDefault(require(\"./lib/isISO31661Alpha3\"));\nvar _isISO4 = _interopRequireDefault(require(\"./lib/isISO4217\"));\nvar _isBase = _interopRequireDefault(require(\"./lib/isBase32\"));\nvar _isBase2 = _interopRequireDefault(require(\"./lib/isBase58\"));\nvar _isBase3 = _interopRequireDefault(require(\"./lib/isBase64\"));\nvar _isDataURI = _interopRequireDefault(require(\"./lib/isDataURI\"));\nvar _isMagnetURI = _interopRequireDefault(require(\"./lib/isMagnetURI\"));\nvar _isMailtoURI = _interopRequireDefault(require(\"./lib/isMailtoURI\"));\nvar _isMimeType = _interopRequireDefault(require(\"./lib/isMimeType\"));\nvar _isLatLong = _interopRequireDefault(require(\"./lib/isLatLong\"));\nvar _isPostalCode = _interopRequireWildcard(require(\"./lib/isPostalCode\"));\nvar _ltrim = _interopRequireDefault(require(\"./lib/ltrim\"));\nvar _rtrim = _interopRequireDefault(require(\"./lib/rtrim\"));\nvar _trim = _interopRequireDefault(require(\"./lib/trim\"));\nvar _escape = _interopRequireDefault(require(\"./lib/escape\"));\nvar _unescape = _interopRequireDefault(require(\"./lib/unescape\"));\nvar _stripLow = _interopRequireDefault(require(\"./lib/stripLow\"));\nvar _whitelist = _interopRequireDefault(require(\"./lib/whitelist\"));\nvar _blacklist = _interopRequireDefault(require(\"./lib/blacklist\"));\nvar _isWhitelisted = _interopRequireDefault(require(\"./lib/isWhitelisted\"));\nvar _normalizeEmail = _interopRequireDefault(require(\"./lib/normalizeEmail\"));\nvar _isSlug = _interopRequireDefault(require(\"./lib/isSlug\"));\nvar _isLicensePlate = _interopRequireDefault(require(\"./lib/isLicensePlate\"));\nvar _isStrongPassword = _interopRequireDefault(require(\"./lib/isStrongPassword\"));\nvar _isVAT = _interopRequireDefault(require(\"./lib/isVAT\"));\nfunction _getRequireWildcardCache(e) { if (\"function\" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }\nfunction _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || \"object\" != _typeof(e) && \"function\" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if (\"default\" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nvar version = '13.12.0';\nvar validator = {\n version: version,\n toDate: _toDate.default,\n toFloat: _toFloat.default,\n toInt: _toInt.default,\n toBoolean: _toBoolean.default,\n equals: _equals.default,\n contains: _contains.default,\n matches: _matches.default,\n isEmail: _isEmail.default,\n isURL: _isURL.default,\n isMACAddress: _isMACAddress.default,\n isIP: _isIP.default,\n isIPRange: _isIPRange.default,\n isFQDN: _isFQDN.default,\n isBoolean: _isBoolean.default,\n isIBAN: _isIBAN.default,\n isBIC: _isBIC.default,\n isAbaRouting: _isAbaRouting.default,\n isAlpha: _isAlpha.default,\n isAlphaLocales: _isAlpha.locales,\n isAlphanumeric: _isAlphanumeric.default,\n isAlphanumericLocales: _isAlphanumeric.locales,\n isNumeric: _isNumeric.default,\n isPassportNumber: _isPassportNumber.default,\n isPort: _isPort.default,\n isLowercase: _isLowercase.default,\n isUppercase: _isUppercase.default,\n isAscii: _isAscii.default,\n isFullWidth: _isFullWidth.default,\n isHalfWidth: _isHalfWidth.default,\n isVariableWidth: _isVariableWidth.default,\n isMultibyte: _isMultibyte.default,\n isSemVer: _isSemVer.default,\n isSurrogatePair: _isSurrogatePair.default,\n isInt: _isInt.default,\n isIMEI: _isIMEI.default,\n isFloat: _isFloat.default,\n isFloatLocales: _isFloat.locales,\n isDecimal: _isDecimal.default,\n isHexadecimal: _isHexadecimal.default,\n isOctal: _isOctal.default,\n isDivisibleBy: _isDivisibleBy.default,\n isHexColor: _isHexColor.default,\n isRgbColor: _isRgbColor.default,\n isHSL: _isHSL.default,\n isISRC: _isISRC.default,\n isMD5: _isMD.default,\n isHash: _isHash.default,\n isJWT: _isJWT.default,\n isJSON: _isJSON.default,\n isEmpty: _isEmpty.default,\n isLength: _isLength.default,\n isLocale: _isLocale.default,\n isByteLength: _isByteLength.default,\n isUUID: _isUUID.default,\n isMongoId: _isMongoId.default,\n isAfter: _isAfter.default,\n isBefore: _isBefore.default,\n isIn: _isIn.default,\n isLuhnNumber: _isLuhnNumber.default,\n isCreditCard: _isCreditCard.default,\n isIdentityCard: _isIdentityCard.default,\n isEAN: _isEAN.default,\n isISIN: _isISIN.default,\n isISBN: _isISBN.default,\n isISSN: _isISSN.default,\n isMobilePhone: _isMobilePhone.default,\n isMobilePhoneLocales: _isMobilePhone.locales,\n isPostalCode: _isPostalCode.default,\n isPostalCodeLocales: _isPostalCode.locales,\n isEthereumAddress: _isEthereumAddress.default,\n isCurrency: _isCurrency.default,\n isBtcAddress: _isBtcAddress.default,\n isISO6346: _isISO.isISO6346,\n isFreightContainerID: _isISO.isFreightContainerID,\n isISO6391: _isISO2.default,\n isISO8601: _isISO3.default,\n isRFC3339: _isRFC.default,\n isISO31661Alpha2: _isISO31661Alpha.default,\n isISO31661Alpha3: _isISO31661Alpha2.default,\n isISO4217: _isISO4.default,\n isBase32: _isBase.default,\n isBase58: _isBase2.default,\n isBase64: _isBase3.default,\n isDataURI: _isDataURI.default,\n isMagnetURI: _isMagnetURI.default,\n isMailtoURI: _isMailtoURI.default,\n isMimeType: _isMimeType.default,\n isLatLong: _isLatLong.default,\n ltrim: _ltrim.default,\n rtrim: _rtrim.default,\n trim: _trim.default,\n escape: _escape.default,\n unescape: _unescape.default,\n stripLow: _stripLow.default,\n whitelist: _whitelist.default,\n blacklist: _blacklist.default,\n isWhitelisted: _isWhitelisted.default,\n normalizeEmail: _normalizeEmail.default,\n toString: toString,\n isSlug: _isSlug.default,\n isStrongPassword: _isStrongPassword.default,\n isTaxID: _isTaxID.default,\n isDate: _isDate.default,\n isTime: _isTime.default,\n isLicensePlate: _isLicensePlate.default,\n isVAT: _isVAT.default,\n ibanLocales: _isIBAN.locales\n};\nvar _default = exports.default = validator;\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","// Copyright (c) 2013 Pieroxy <pieroxy@pieroxy.net>\n// This work is free. You can redistribute it and/or modify it\n// under the terms of the WTFPL, Version 2\n// For more information see LICENSE.txt or http://www.wtfpl.net/\n//\n// For more information, the home page:\n// http://pieroxy.net/blog/pages/lz-string/testing.html\n//\n// LZ-based compression algorithm, version 1.4.5\nvar LZString = (function() {\n\n// private property\nvar f = String.fromCharCode;\nvar keyStrBase64 = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\nvar keyStrUriSafe = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-$\";\nvar baseReverseDic = {};\n\nfunction getBaseValue(alphabet, character) {\n if (!baseReverseDic[alphabet]) {\n baseReverseDic[alphabet] = {};\n for (var i=0 ; i<alphabet.length ; i++) {\n baseReverseDic[alphabet][alphabet.charAt(i)] = i;\n }\n }\n return baseReverseDic[alphabet][character];\n}\n\nvar LZString = {\n compressToBase64 : function (input) {\n if (input == null) return \"\";\n var res = LZString._compress(input, 6, function(a){return keyStrBase64.charAt(a);});\n switch (res.length % 4) { // To produce valid Base64\n default: // When could this happen ?\n case 0 : return res;\n case 1 : return res+\"===\";\n case 2 : return res+\"==\";\n case 3 : return res+\"=\";\n }\n },\n\n decompressFromBase64 : function (input) {\n if (input == null) return \"\";\n if (input == \"\") return null;\n return LZString._decompress(input.length, 32, function(index) { return getBaseValue(keyStrBase64, input.charAt(index)); });\n },\n\n compressToUTF16 : function (input) {\n if (input == null) return \"\";\n return LZString._compress(input, 15, function(a){return f(a+32);}) + \" \";\n },\n\n decompressFromUTF16: function (compressed) {\n if (compressed == null) return \"\";\n if (compressed == \"\") return null;\n return LZString._decompress(compressed.length, 16384, function(index) { return compressed.charCodeAt(index) - 32; });\n },\n\n //compress into uint8array (UCS-2 big endian format)\n compressToUint8Array: function (uncompressed) {\n var compressed = LZString.compress(uncompressed);\n var buf=new Uint8Array(compressed.length*2); // 2 bytes per character\n\n for (var i=0, TotalLen=compressed.length; i<TotalLen; i++) {\n var current_value = compressed.charCodeAt(i);\n buf[i*2] = current_value >>> 8;\n buf[i*2+1] = current_value % 256;\n }\n return buf;\n },\n\n //decompress from uint8array (UCS-2 big endian format)\n decompressFromUint8Array:function (compressed) {\n if (compressed===null || compressed===undefined){\n return LZString.decompress(compressed);\n } else {\n var buf=new Array(compressed.length/2); // 2 bytes per character\n for (var i=0, TotalLen=buf.length; i<TotalLen; i++) {\n buf[i]=compressed[i*2]*256+compressed[i*2+1];\n }\n\n var result = [];\n buf.forEach(function (c) {\n result.push(f(c));\n });\n return LZString.decompress(result.join(''));\n\n }\n\n },\n\n\n //compress into a string that is already URI encoded\n compressToEncodedURIComponent: function (input) {\n if (input == null) return \"\";\n return LZString._compress(input, 6, function(a){return keyStrUriSafe.charAt(a);});\n },\n\n //decompress from an output of compressToEncodedURIComponent\n decompressFromEncodedURIComponent:function (input) {\n if (input == null) return \"\";\n if (input == \"\") return null;\n input = input.replace(/ /g, \"+\");\n return LZString._decompress(input.length, 32, function(index) { return getBaseValue(keyStrUriSafe, input.charAt(index)); });\n },\n\n compress: function (uncompressed) {\n return LZString._compress(uncompressed, 16, function(a){return f(a);});\n },\n _compress: function (uncompressed, bitsPerChar, getCharFromInt) {\n if (uncompressed == null) return \"\";\n var i, value,\n context_dictionary= {},\n context_dictionaryToCreate= {},\n context_c=\"\",\n context_wc=\"\",\n context_w=\"\",\n context_enlargeIn= 2, // Compensate for the first entry which should not count\n context_dictSize= 3,\n context_numBits= 2,\n context_data=[],\n context_data_val=0,\n context_data_position=0,\n ii;\n\n for (ii = 0; ii < uncompressed.length; ii += 1) {\n context_c = uncompressed.charAt(ii);\n if (!Object.prototype.hasOwnProperty.call(context_dictionary,context_c)) {\n context_dictionary[context_c] = context_dictSize++;\n context_dictionaryToCreate[context_c] = true;\n }\n\n context_wc = context_w + context_c;\n if (Object.prototype.hasOwnProperty.call(context_dictionary,context_wc)) {\n context_w = context_wc;\n } else {\n if (Object.prototype.hasOwnProperty.call(context_dictionaryToCreate,context_w)) {\n if (context_w.charCodeAt(0)<256) {\n for (i=0 ; i<context_numBits ; i++) {\n context_data_val = (context_data_val << 1);\n if (context_data_position == bitsPerChar-1) {\n context_data_position = 0;\n context_data.push(getCharFromInt(context_data_val));\n context_data_val = 0;\n } else {\n context_data_position++;\n }\n }\n value = context_w.charCodeAt(0);\n for (i=0 ; i<8 ; i++) {\n context_data_val = (context_data_val << 1) | (value&1);\n if (context_data_position == bitsPerChar-1) {\n context_data_position = 0;\n context_data.push(getCharFromInt(context_data_val));\n context_data_val = 0;\n } else {\n context_data_position++;\n }\n value = value >> 1;\n }\n } else {\n value = 1;\n for (i=0 ; i<context_numBits ; i++) {\n context_data_val = (context_data_val << 1) | value;\n if (context_data_position ==bitsPerChar-1) {\n context_data_position = 0;\n context_data.push(getCharFromInt(context_data_val));\n context_data_val = 0;\n } else {\n context_data_position++;\n }\n value = 0;\n }\n value = context_w.charCodeAt(0);\n for (i=0 ; i<16 ; i++) {\n context_data_val = (context_data_val << 1) | (value&1);\n if (context_data_position == bitsPerChar-1) {\n context_data_position = 0;\n context_data.push(getCharFromInt(context_data_val));\n context_data_val = 0;\n } else {\n context_data_position++;\n }\n value = value >> 1;\n }\n }\n context_enlargeIn--;\n if (context_enlargeIn == 0) {\n context_enlargeIn = Math.pow(2, context_numBits);\n context_numBits++;\n }\n delete context_dictionaryToCreate[context_w];\n } else {\n value = context_dictionary[context_w];\n for (i=0 ; i<context_numBits ; i++) {\n context_data_val = (context_data_val << 1) | (value&1);\n if (context_data_position == bitsPerChar-1) {\n context_data_position = 0;\n context_data.push(getCharFromInt(context_data_val));\n context_data_val = 0;\n } else {\n context_data_position++;\n }\n value = value >> 1;\n }\n\n\n }\n context_enlargeIn--;\n if (context_enlargeIn == 0) {\n context_enlargeIn = Math.pow(2, context_numBits);\n context_numBits++;\n }\n // Add wc to the dictionary.\n context_dictionary[context_wc] = context_dictSize++;\n context_w = String(context_c);\n }\n }\n\n // Output the code for w.\n if (context_w !== \"\") {\n if (Object.prototype.hasOwnProperty.call(context_dictionaryToCreate,context_w)) {\n if (context_w.charCodeAt(0)<256) {\n for (i=0 ; i<context_numBits ; i++) {\n context_data_val = (context_data_val << 1);\n if (context_data_position == bitsPerChar-1) {\n context_data_position = 0;\n context_data.push(getCharFromInt(context_data_val));\n context_data_val = 0;\n } else {\n context_data_position++;\n }\n }\n value = context_w.charCodeAt(0);\n for (i=0 ; i<8 ; i++) {\n context_data_val = (context_data_val << 1) | (value&1);\n if (context_data_position == bitsPerChar-1) {\n context_data_position = 0;\n context_data.push(getCharFromInt(context_data_val));\n context_data_val = 0;\n } else {\n context_data_position++;\n }\n value = value >> 1;\n }\n } else {\n value = 1;\n for (i=0 ; i<context_numBits ; i++) {\n context_data_val = (context_data_val << 1) | value;\n if (context_data_position == bitsPerChar-1) {\n context_data_position = 0;\n context_data.push(getCharFromInt(context_data_val));\n context_data_val = 0;\n } else {\n context_data_position++;\n }\n value = 0;\n }\n value = context_w.charCodeAt(0);\n for (i=0 ; i<16 ; i++) {\n context_data_val = (context_data_val << 1) | (value&1);\n if (context_data_position == bitsPerChar-1) {\n context_data_position = 0;\n context_data.push(getCharFromInt(context_data_val));\n context_data_val = 0;\n } else {\n context_data_position++;\n }\n value = value >> 1;\n }\n }\n context_enlargeIn--;\n if (context_enlargeIn == 0) {\n context_enlargeIn = Math.pow(2, context_numBits);\n context_numBits++;\n }\n delete context_dictionaryToCreate[context_w];\n } else {\n value = context_dictionary[context_w];\n for (i=0 ; i<context_numBits ; i++) {\n context_data_val = (context_data_val << 1) | (value&1);\n if (context_data_position == bitsPerChar-1) {\n context_data_position = 0;\n context_data.push(getCharFromInt(context_data_val));\n context_data_val = 0;\n } else {\n context_data_position++;\n }\n value = value >> 1;\n }\n\n\n }\n context_enlargeIn--;\n if (context_enlargeIn == 0) {\n context_enlargeIn = Math.pow(2, context_numBits);\n context_numBits++;\n }\n }\n\n // Mark the end of the stream\n value = 2;\n for (i=0 ; i<context_numBits ; i++) {\n context_data_val = (context_data_val << 1) | (value&1);\n if (context_data_position == bitsPerChar-1) {\n context_data_position = 0;\n context_data.push(getCharFromInt(context_data_val));\n context_data_val = 0;\n } else {\n context_data_position++;\n }\n value = value >> 1;\n }\n\n // Flush the last char\n while (true) {\n context_data_val = (context_data_val << 1);\n if (context_data_position == bitsPerChar-1) {\n context_data.push(getCharFromInt(context_data_val));\n break;\n }\n else context_data_position++;\n }\n return context_data.join('');\n },\n\n decompress: function (compressed) {\n if (compressed == null) return \"\";\n if (compressed == \"\") return null;\n return LZString._decompress(compressed.length, 32768, function(index) { return compressed.charCodeAt(index); });\n },\n\n _decompress: function (length, resetValue, getNextValue) {\n var dictionary = [],\n next,\n enlargeIn = 4,\n dictSize = 4,\n numBits = 3,\n entry = \"\",\n result = [],\n i,\n w,\n bits, resb, maxpower, power,\n c,\n data = {val:getNextValue(0), position:resetValue, index:1};\n\n for (i = 0; i < 3; i += 1) {\n dictionary[i] = i;\n }\n\n bits = 0;\n maxpower = Math.pow(2,2);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n\n switch (next = bits) {\n case 0:\n bits = 0;\n maxpower = Math.pow(2,8);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n c = f(bits);\n break;\n case 1:\n bits = 0;\n maxpower = Math.pow(2,16);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n c = f(bits);\n break;\n case 2:\n return \"\";\n }\n dictionary[3] = c;\n w = c;\n result.push(c);\n while (true) {\n if (data.index > length) {\n return \"\";\n }\n\n bits = 0;\n maxpower = Math.pow(2,numBits);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n\n switch (c = bits) {\n case 0:\n bits = 0;\n maxpower = Math.pow(2,8);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n\n dictionary[dictSize++] = f(bits);\n c = dictSize-1;\n enlargeIn--;\n break;\n case 1:\n bits = 0;\n maxpower = Math.pow(2,16);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n dictionary[dictSize++] = f(bits);\n c = dictSize-1;\n enlargeIn--;\n break;\n case 2:\n return result.join('');\n }\n\n if (enlargeIn == 0) {\n enlargeIn = Math.pow(2, numBits);\n numBits++;\n }\n\n if (dictionary[c]) {\n entry = dictionary[c];\n } else {\n if (c === dictSize) {\n entry = w + w.charAt(0);\n } else {\n return null;\n }\n }\n result.push(entry);\n\n // Add w+entry[0] to the dictionary.\n dictionary[dictSize++] = w + entry.charAt(0);\n enlargeIn--;\n\n w = entry;\n\n if (enlargeIn == 0) {\n enlargeIn = Math.pow(2, numBits);\n numBits++;\n }\n\n }\n }\n};\n return LZString;\n})();\n\nif (typeof define === 'function' && define.amd) {\n define(function () { return LZString; });\n} else if( typeof module !== 'undefined' && module != null ) {\n module.exports = LZString\n} else if( typeof angular !== 'undefined' && angular != null ) {\n angular.module('LZString', [])\n .factory('LZString', function () {\n return LZString;\n });\n}\n","// src/index.ts\nfunction createThunkMiddleware(extraArgument) {\n const middleware = ({ dispatch, getState }) => (next) => (action) => {\n if (typeof action === \"function\") {\n return action(dispatch, getState, extraArgument);\n }\n return next(action);\n };\n return middleware;\n}\nvar thunk = createThunkMiddleware();\nvar withExtraArgument = createThunkMiddleware;\nexport {\n thunk,\n withExtraArgument\n};\n","var baseIteratee = require('./_baseIteratee'),\n baseUniq = require('./_baseUniq');\n\n/**\n * This method is like `_.uniq` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * uniqueness is computed. The order of result values is determined by the\n * order they occur in the array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\nfunction uniqBy(array, iteratee) {\n return (array && array.length) ? baseUniq(array, baseIteratee(iteratee, 2)) : [];\n}\n\nmodule.exports = uniqBy;\n","function memoize(fn) {\n var cache = Object.create(null);\n return function (arg) {\n if (cache[arg] === undefined) cache[arg] = fn(arg);\n return cache[arg];\n };\n}\n\nexport { memoize as default };\n","import memoize from '@emotion/memoize';\n\nvar reactPropsRegex = /^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|abbr|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|disableRemotePlayback|download|draggable|encType|enterKeyHint|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|translate|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|incremental|fallback|inert|itemProp|itemScope|itemType|itemID|itemRef|on|option|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/; // https://esbench.com/bench/5bfee68a4cd7e6009ef61d23\n\nvar isPropValid = /* #__PURE__ */memoize(function (prop) {\n return reactPropsRegex.test(prop) || prop.charCodeAt(0) === 111\n /* o */\n && prop.charCodeAt(1) === 110\n /* n */\n && prop.charCodeAt(2) < 91;\n}\n/* Z+1 */\n);\n\nexport { isPropValid as default };\n","import { getGlobalClassNames } from '../../../Styling';\nimport { IStackItemComponent, IStackItemStyles, IStackItemStylesReturnType } from './StackItem.types';\n\nconst GlobalClassNames = {\n root: 'ms-StackItem',\n};\n\nconst alignMap: { [key: string]: string } = {\n start: 'flex-start',\n end: 'flex-end',\n};\n\nexport const StackItemStyles: IStackItemComponent['styles'] = (props, theme, tokens): IStackItemStylesReturnType => {\n const { grow, shrink, disableShrink, align, verticalFill, order, className } = props;\n\n const classNames = getGlobalClassNames(GlobalClassNames, theme);\n\n return {\n root: [\n theme.fonts.medium,\n classNames.root,\n {\n margin: tokens.margin,\n padding: tokens.padding,\n height: verticalFill ? '100%' : 'auto',\n width: 'auto',\n },\n grow && { flexGrow: grow === true ? 1 : grow },\n (disableShrink || (!grow && !shrink)) && {\n flexShrink: 0,\n },\n shrink &&\n !disableShrink && {\n flexShrink: 1,\n },\n align && {\n alignSelf: alignMap[align] || align,\n },\n order && {\n order: order,\n },\n className,\n ],\n // TODO: this cast may be hiding some potential issues with styling and name\n // lookups and should be removed\n } as IStackItemStyles;\n};\n","/** @jsxRuntime classic */\n/** @jsx withSlots */\nimport * as React from 'react';\nimport { withSlots, createComponent, getSlots } from '../../../Foundation';\nimport { getNativeProps, htmlElementProperties } from '../../../Utilities';\nimport { IStackItemComponent, IStackItemProps, IStackItemSlots } from './StackItem.types';\nimport { StackItemStyles as styles } from './StackItem.styles';\n\nconst StackItemView: IStackItemComponent['view'] = props => {\n const { children } = props;\n const nativeProps = getNativeProps<React.HTMLAttributes<HTMLDivElement>>(props, htmlElementProperties);\n if (React.Children.count(children) < 1) {\n return null;\n }\n\n const Slots = getSlots<IStackItemProps, IStackItemSlots>(props, {\n root: 'div',\n });\n\n return <Slots.root {...nativeProps}>{children}</Slots.root>;\n};\n\nexport const StackItem: React.FunctionComponent<IStackItemProps> = createComponent(StackItemView, {\n displayName: 'StackItem',\n styles,\n});\n\nexport default StackItem;\n","import * as React from 'react';\nimport { IBaseProps } from './BaseComponent.types';\nimport { extendComponent } from './extendComponent';\n\n/**\n * Helper to manage componentRef resolution. Internally appends logic to\n * lifetime methods to resolve componentRef to the passed in object.\n *\n * Usage: call initializeComponentRef(this) in the constructor,\n */\nexport function initializeComponentRef<TProps extends IBaseProps, TState>(obj: React.Component<TProps, TState>): void {\n extendComponent(obj, {\n componentDidMount: _onMount,\n componentDidUpdate: _onUpdate,\n componentWillUnmount: _onUnmount,\n });\n}\n\nfunction _onMount(): void {\n _setComponentRef(this.props.componentRef, this);\n}\n\nfunction _onUpdate(prevProps: IBaseProps): void {\n if (prevProps.componentRef !== this.props.componentRef) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _setComponentRef((prevProps as any).componentRef, null);\n _setComponentRef(this.props.componentRef, this);\n }\n}\n\nfunction _onUnmount(): void {\n _setComponentRef(this.props.componentRef, null);\n}\n\nfunction _setComponentRef<TInterface>(componentRef: React.RefObject<TInterface>, value: TInterface | null): void {\n if (componentRef) {\n if (typeof componentRef === 'object') {\n (componentRef as { current: TInterface | null }).current = value;\n } else if (typeof componentRef === 'function') {\n (componentRef as Function)(value);\n }\n }\n}\n","import { getParent } from './getParent';\n/**\n * Determines whether or not a parent element contains a given child element.\n * If `allowVirtualParents` is true, this method may return `true` if the child\n * has the parent in its virtual element hierarchy.\n *\n * @public\n */\nexport function elementContains(\n parent: HTMLElement | null,\n child: HTMLElement | null,\n allowVirtualParents: boolean = true,\n): boolean {\n let isContained = false;\n\n if (parent && child) {\n if (allowVirtualParents) {\n if (parent === child) {\n isContained = true;\n } else {\n isContained = false;\n\n while (child) {\n const nextParent: HTMLElement | null = getParent(child);\n\n if (nextParent === parent) {\n isContained = true;\n break;\n }\n\n child = nextParent;\n }\n }\n } else if (parent.contains) {\n isContained = parent.contains(child);\n }\n }\n\n return isContained;\n}\n","export function on(\n element: Element | Window | Document,\n eventName: string,\n callback: (ev: Event) => void,\n options?: boolean,\n): () => void {\n element.addEventListener(eventName, callback, options);\n\n return () => element.removeEventListener(eventName, callback, options);\n}\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","/**\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","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var identity = require('./identity'),\n overRest = require('./_overRest'),\n setToString = require('./_setToString');\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\nmodule.exports = baseRest;\n","/**\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 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","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n","var SetCache = require('./_SetCache'),\n arrayIncludes = require('./_arrayIncludes'),\n arrayIncludesWith = require('./_arrayIncludesWith'),\n cacheHas = require('./_cacheHas'),\n createSet = require('./_createSet'),\n setToArray = require('./_setToArray');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\nfunction baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n}\n\nmodule.exports = baseUniq;\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 * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = baseFindIndex;\n","/**\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 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 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","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nmodule.exports = mapToArray;\n","var 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","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","/**\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","/**\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","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { createEnumStyle } from \"@microsoft/applicationinsights-core-js\";\r\n/**\r\n * Defines the level of severity for the event.\r\n */\r\nexport var SeverityLevel = createEnumStyle({\r\n Verbose: 0 /* eSeverityLevel.Verbose */,\r\n Information: 1 /* eSeverityLevel.Information */,\r\n Warning: 2 /* eSeverityLevel.Warning */,\r\n Error: 3 /* eSeverityLevel.Error */,\r\n Critical: 4 /* eSeverityLevel.Critical */\r\n});\r\n//# sourceMappingURL=SeverityLevel.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = toFloat;\nvar _isFloat = _interopRequireDefault(require(\"./isFloat\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nfunction toFloat(str) {\n if (!(0, _isFloat.default)(str)) return NaN;\n return parseFloat(str);\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isFloat;\nexports.locales = void 0;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nvar _alpha = require(\"./alpha\");\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nfunction isFloat(str, options) {\n (0, _assertString.default)(str);\n options = options || {};\n var float = new RegExp(\"^(?:[-+])?(?:[0-9]+)?(?:\\\\\".concat(options.locale ? _alpha.decimal[options.locale] : '.', \"[0-9]*)?(?:[eE][\\\\+\\\\-]?(?:[0-9]+))?$\"));\n if (str === '' || str === '.' || str === ',' || str === '-' || str === '+') {\n return false;\n }\n var value = parseFloat(str.replace(',', '.'));\n return float.test(str) && (!options.hasOwnProperty('min') || value >= options.min) && (!options.hasOwnProperty('max') || value <= options.max) && (!options.hasOwnProperty('lt') || value < options.lt) && (!options.hasOwnProperty('gt') || value > options.gt);\n}\nvar locales = exports.locales = Object.keys(_alpha.decimal);","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = toString;\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction toString(input) {\n if (_typeof(input) === 'object' && input !== null) {\n if (typeof input.toString === 'function') {\n input = input.toString();\n } else {\n input = '[object Object]';\n }\n } else if (input === null || typeof input === 'undefined' || isNaN(input) && !input.length) {\n input = '';\n }\n return String(input);\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isEmail;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nvar _isByteLength = _interopRequireDefault(require(\"./isByteLength\"));\nvar _isFQDN = _interopRequireDefault(require(\"./isFQDN\"));\nvar _isIP = _interopRequireDefault(require(\"./isIP\"));\nvar _merge = _interopRequireDefault(require(\"./util/merge\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nvar default_email_options = {\n allow_display_name: false,\n allow_underscores: false,\n require_display_name: false,\n allow_utf8_local_part: true,\n require_tld: true,\n blacklisted_chars: '',\n ignore_max_length: false,\n host_blacklist: [],\n host_whitelist: []\n};\n\n/* eslint-disable max-len */\n/* eslint-disable no-control-regex */\nvar splitNameAddress = /^([^\\x00-\\x1F\\x7F-\\x9F\\cX]+)</i;\nvar emailUserPart = /^[a-z\\d!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]+$/i;\nvar gmailUserPart = /^[a-z\\d]+$/;\nvar quotedEmailUser = /^([\\s\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f\\x21\\x23-\\x5b\\x5d-\\x7e]|(\\\\[\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]))*$/i;\nvar emailUserUtf8Part = /^[a-z\\d!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~\\u00A1-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]+$/i;\nvar quotedEmailUserUtf8 = /^([\\s\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f\\x21\\x23-\\x5b\\x5d-\\x7e\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]|(\\\\[\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))*$/i;\nvar defaultMaxEmailLength = 254;\n/* eslint-enable max-len */\n/* eslint-enable no-control-regex */\n\n/**\n * Validate display name according to the RFC2822: https://tools.ietf.org/html/rfc2822#appendix-A.1.2\n * @param {String} display_name\n */\nfunction validateDisplayName(display_name) {\n var display_name_without_quotes = display_name.replace(/^\"(.+)\"$/, '$1');\n // display name with only spaces is not valid\n if (!display_name_without_quotes.trim()) {\n return false;\n }\n\n // check whether display name contains illegal character\n var contains_illegal = /[\\.\";<>]/.test(display_name_without_quotes);\n if (contains_illegal) {\n // if contains illegal characters,\n // must to be enclosed in double-quotes, otherwise it's not a valid display name\n if (display_name_without_quotes === display_name) {\n return false;\n }\n\n // the quotes in display name must start with character symbol \\\n var all_start_with_back_slash = display_name_without_quotes.split('\"').length === display_name_without_quotes.split('\\\\\"').length;\n if (!all_start_with_back_slash) {\n return false;\n }\n }\n return true;\n}\nfunction isEmail(str, options) {\n (0, _assertString.default)(str);\n options = (0, _merge.default)(options, default_email_options);\n if (options.require_display_name || options.allow_display_name) {\n var display_email = str.match(splitNameAddress);\n if (display_email) {\n var display_name = display_email[1];\n\n // Remove display name and angle brackets to get email address\n // Can be done in the regex but will introduce a ReDOS (See #1597 for more info)\n str = str.replace(display_name, '').replace(/(^<|>$)/g, '');\n\n // sometimes need to trim the last space to get the display name\n // because there may be a space between display name and email address\n // eg. myname <address@gmail.com>\n // the display name is `myname` instead of `myname `, so need to trim the last space\n if (display_name.endsWith(' ')) {\n display_name = display_name.slice(0, -1);\n }\n if (!validateDisplayName(display_name)) {\n return false;\n }\n } else if (options.require_display_name) {\n return false;\n }\n }\n if (!options.ignore_max_length && str.length > defaultMaxEmailLength) {\n return false;\n }\n var parts = str.split('@');\n var domain = parts.pop();\n var lower_domain = domain.toLowerCase();\n if (options.host_blacklist.includes(lower_domain)) {\n return false;\n }\n if (options.host_whitelist.length > 0 && !options.host_whitelist.includes(lower_domain)) {\n return false;\n }\n var user = parts.join('@');\n if (options.domain_specific_validation && (lower_domain === 'gmail.com' || lower_domain === 'googlemail.com')) {\n /*\n Previously we removed dots for gmail addresses before validating.\n This was removed because it allows `multiple..dots@gmail.com`\n to be reported as valid, but it is not.\n Gmail only normalizes single dots, removing them from here is pointless,\n should be done in normalizeEmail\n */\n user = user.toLowerCase();\n\n // Removing sub-address from username before gmail validation\n var username = user.split('+')[0];\n\n // Dots are not included in gmail length restriction\n if (!(0, _isByteLength.default)(username.replace(/\\./g, ''), {\n min: 6,\n max: 30\n })) {\n return false;\n }\n var _user_parts = username.split('.');\n for (var i = 0; i < _user_parts.length; i++) {\n if (!gmailUserPart.test(_user_parts[i])) {\n return false;\n }\n }\n }\n if (options.ignore_max_length === false && (!(0, _isByteLength.default)(user, {\n max: 64\n }) || !(0, _isByteLength.default)(domain, {\n max: 254\n }))) {\n return false;\n }\n if (!(0, _isFQDN.default)(domain, {\n require_tld: options.require_tld,\n ignore_max_length: options.ignore_max_length,\n allow_underscores: options.allow_underscores\n })) {\n if (!options.allow_ip_domain) {\n return false;\n }\n if (!(0, _isIP.default)(domain)) {\n if (!domain.startsWith('[') || !domain.endsWith(']')) {\n return false;\n }\n var noBracketdomain = domain.slice(1, -1);\n if (noBracketdomain.length === 0 || !(0, _isIP.default)(noBracketdomain)) {\n return false;\n }\n }\n }\n if (user[0] === '\"') {\n user = user.slice(1, user.length - 1);\n return options.allow_utf8_local_part ? quotedEmailUserUtf8.test(user) : quotedEmailUser.test(user);\n }\n var pattern = options.allow_utf8_local_part ? emailUserUtf8Part : emailUserPart;\n var user_parts = user.split('.');\n for (var _i = 0; _i < user_parts.length; _i++) {\n if (!pattern.test(user_parts[_i])) {\n return false;\n }\n }\n if (options.blacklisted_chars) {\n if (user.search(new RegExp(\"[\".concat(options.blacklisted_chars, \"]+\"), 'g')) !== -1) return false;\n }\n return true;\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isByteLength;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\n/* eslint-disable prefer-rest-params */\nfunction isByteLength(str, options) {\n (0, _assertString.default)(str);\n var min;\n var max;\n if (_typeof(options) === 'object') {\n min = options.min || 0;\n max = options.max;\n } else {\n // backwards compatibility: isByteLength(str, min [, max])\n min = arguments[1];\n max = arguments[2];\n }\n var len = encodeURI(str).split(/%..|./).length - 1;\n return len >= min && (typeof max === 'undefined' || len <= max);\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isDate;\nvar _merge = _interopRequireDefault(require(\"./util/merge\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nvar default_date_options = {\n format: 'YYYY/MM/DD',\n delimiters: ['/', '-'],\n strictMode: false\n};\nfunction isValidFormat(format) {\n return /(^(y{4}|y{2})[.\\/-](m{1,2})[.\\/-](d{1,2})$)|(^(m{1,2})[.\\/-](d{1,2})[.\\/-]((y{4}|y{2})$))|(^(d{1,2})[.\\/-](m{1,2})[.\\/-]((y{4}|y{2})$))/gi.test(format);\n}\nfunction zip(date, format) {\n var zippedArr = [],\n len = Math.min(date.length, format.length);\n for (var i = 0; i < len; i++) {\n zippedArr.push([date[i], format[i]]);\n }\n return zippedArr;\n}\nfunction isDate(input, options) {\n if (typeof options === 'string') {\n // Allow backward compatibility for old format isDate(input [, format])\n options = (0, _merge.default)({\n format: options\n }, default_date_options);\n } else {\n options = (0, _merge.default)(options, default_date_options);\n }\n if (typeof input === 'string' && isValidFormat(options.format)) {\n var formatDelimiter = options.delimiters.find(function (delimiter) {\n return options.format.indexOf(delimiter) !== -1;\n });\n var dateDelimiter = options.strictMode ? formatDelimiter : options.delimiters.find(function (delimiter) {\n return input.indexOf(delimiter) !== -1;\n });\n var dateAndFormat = zip(input.split(dateDelimiter), options.format.toLowerCase().split(formatDelimiter));\n var dateObj = {};\n var _iterator = _createForOfIteratorHelper(dateAndFormat),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var _step$value = _slicedToArray(_step.value, 2),\n dateWord = _step$value[0],\n formatWord = _step$value[1];\n if (dateWord.length !== formatWord.length) {\n return false;\n }\n dateObj[formatWord.charAt(0)] = dateWord;\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n var fullYear = dateObj.y;\n\n // Check if the year starts with a hyphen\n if (fullYear.startsWith('-')) {\n return false; // Hyphen before year is not allowed\n }\n if (dateObj.y.length === 2) {\n var parsedYear = parseInt(dateObj.y, 10);\n if (isNaN(parsedYear)) {\n return false;\n }\n var currentYearLastTwoDigits = new Date().getFullYear() % 100;\n if (parsedYear < currentYearLastTwoDigits) {\n fullYear = \"20\".concat(dateObj.y);\n } else {\n fullYear = \"19\".concat(dateObj.y);\n }\n }\n var month = dateObj.m;\n if (dateObj.m.length === 1) {\n month = \"0\".concat(dateObj.m);\n }\n var day = dateObj.d;\n if (dateObj.d.length === 1) {\n day = \"0\".concat(dateObj.d);\n }\n return new Date(\"\".concat(fullYear, \"-\").concat(month, \"-\").concat(day, \"T00:00:00.000Z\")).getUTCDate() === +dateObj.d;\n }\n if (!options.strictMode) {\n return Object.prototype.toString.call(input) === '[object Date]' && isFinite(input);\n }\n return false;\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isFullWidth;\nexports.fullWidth = void 0;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nvar fullWidth = exports.fullWidth = /[^\\u0020-\\u007E\\uFF61-\\uFF9F\\uFFA0-\\uFFDC\\uFFE8-\\uFFEE0-9a-zA-Z]/;\nfunction isFullWidth(str) {\n (0, _assertString.default)(str);\n return fullWidth.test(str);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isHalfWidth;\nexports.halfWidth = void 0;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nvar halfWidth = exports.halfWidth = /[\\u0020-\\u007E\\uFF61-\\uFF9F\\uFFA0-\\uFFDC\\uFFE8-\\uFFEE0-9a-zA-Z]/;\nfunction isHalfWidth(str) {\n (0, _assertString.default)(str);\n return halfWidth.test(str);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isHexadecimal;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nvar hexadecimal = /^(0x|0h)?[0-9A-F]+$/i;\nfunction isHexadecimal(str) {\n (0, _assertString.default)(str);\n return hexadecimal.test(str);\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.CountryCodes = void 0;\nexports.default = isISO31661Alpha2;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n// from https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2\nvar validISO31661Alpha2CountriesCodes = new Set(['AD', 'AE', 'AF', 'AG', 'AI', 'AL', 'AM', 'AO', 'AQ', 'AR', 'AS', 'AT', 'AU', 'AW', 'AX', 'AZ', 'BA', 'BB', 'BD', 'BE', 'BF', 'BG', 'BH', 'BI', 'BJ', 'BL', 'BM', 'BN', 'BO', 'BQ', 'BR', 'BS', 'BT', 'BV', 'BW', 'BY', 'BZ', 'CA', 'CC', 'CD', 'CF', 'CG', 'CH', 'CI', 'CK', 'CL', 'CM', 'CN', 'CO', 'CR', 'CU', 'CV', 'CW', 'CX', 'CY', 'CZ', 'DE', 'DJ', 'DK', 'DM', 'DO', 'DZ', 'EC', 'EE', 'EG', 'EH', 'ER', 'ES', 'ET', 'FI', 'FJ', 'FK', 'FM', 'FO', 'FR', 'GA', 'GB', 'GD', 'GE', 'GF', 'GG', 'GH', 'GI', 'GL', 'GM', 'GN', 'GP', 'GQ', 'GR', 'GS', 'GT', 'GU', 'GW', 'GY', 'HK', 'HM', 'HN', 'HR', 'HT', 'HU', 'ID', 'IE', 'IL', 'IM', 'IN', 'IO', 'IQ', 'IR', 'IS', 'IT', 'JE', 'JM', 'JO', 'JP', 'KE', 'KG', 'KH', 'KI', 'KM', 'KN', 'KP', 'KR', 'KW', 'KY', 'KZ', 'LA', 'LB', 'LC', 'LI', 'LK', 'LR', 'LS', 'LT', 'LU', 'LV', 'LY', 'MA', 'MC', 'MD', 'ME', 'MF', 'MG', 'MH', 'MK', 'ML', 'MM', 'MN', 'MO', 'MP', 'MQ', 'MR', 'MS', 'MT', 'MU', 'MV', 'MW', 'MX', 'MY', 'MZ', 'NA', 'NC', 'NE', 'NF', 'NG', 'NI', 'NL', 'NO', 'NP', 'NR', 'NU', 'NZ', 'OM', 'PA', 'PE', 'PF', 'PG', 'PH', 'PK', 'PL', 'PM', 'PN', 'PR', 'PS', 'PT', 'PW', 'PY', 'QA', 'RE', 'RO', 'RS', 'RU', 'RW', 'SA', 'SB', 'SC', 'SD', 'SE', 'SG', 'SH', 'SI', 'SJ', 'SK', 'SL', 'SM', 'SN', 'SO', 'SR', 'SS', 'ST', 'SV', 'SX', 'SY', 'SZ', 'TC', 'TD', 'TF', 'TG', 'TH', 'TJ', 'TK', 'TL', 'TM', 'TN', 'TO', 'TR', 'TT', 'TV', 'TW', 'TZ', 'UA', 'UG', 'UM', 'US', 'UY', 'UZ', 'VA', 'VC', 'VE', 'VG', 'VI', 'VN', 'VU', 'WF', 'WS', 'YE', 'YT', 'ZA', 'ZM', 'ZW']);\nfunction isISO31661Alpha2(str) {\n (0, _assertString.default)(str);\n return validISO31661Alpha2CountriesCodes.has(str.toUpperCase());\n}\nvar CountryCodes = exports.CountryCodes = validISO31661Alpha2CountriesCodes;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isBase64;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nvar _merge = _interopRequireDefault(require(\"./util/merge\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nvar notBase64 = /[^A-Z0-9+\\/=]/i;\nvar urlSafeBase64 = /^[A-Z0-9_\\-]*$/i;\nvar defaultBase64Options = {\n urlSafe: false\n};\nfunction isBase64(str, options) {\n (0, _assertString.default)(str);\n options = (0, _merge.default)(options, defaultBase64Options);\n var len = str.length;\n if (options.urlSafe) {\n return urlSafeBase64.test(str);\n }\n if (len % 4 !== 0 || notBase64.test(str)) {\n return false;\n }\n var firstPaddingChar = str.indexOf('=');\n return firstPaddingChar === -1 || firstPaddingChar === len - 1 || firstPaddingChar === len - 2 && str[len - 1] === '=';\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isLuhnNumber;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nfunction isLuhnNumber(str) {\n (0, _assertString.default)(str);\n var sanitized = str.replace(/[- ]+/g, '');\n var sum = 0;\n var digit;\n var tmpNum;\n var shouldDouble;\n for (var i = sanitized.length - 1; i >= 0; i--) {\n digit = sanitized.substring(i, i + 1);\n tmpNum = parseInt(digit, 10);\n if (shouldDouble) {\n tmpNum *= 2;\n if (tmpNum >= 10) {\n sum += tmpNum % 10 + 1;\n } else {\n sum += tmpNum;\n }\n } else {\n sum += tmpNum;\n }\n shouldDouble = !shouldDouble;\n }\n return !!(sum % 10 === 0 ? sanitized : false);\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.iso7064Check = iso7064Check;\nexports.luhnCheck = luhnCheck;\nexports.reverseMultiplyAndSum = reverseMultiplyAndSum;\nexports.verhoeffCheck = verhoeffCheck;\n/**\n * Algorithmic validation functions\n * May be used as is or implemented in the workflow of other validators.\n */\n\n/*\n * ISO 7064 validation function\n * Called with a string of numbers (incl. check digit)\n * to validate according to ISO 7064 (MOD 11, 10).\n */\nfunction iso7064Check(str) {\n var checkvalue = 10;\n for (var i = 0; i < str.length - 1; i++) {\n checkvalue = (parseInt(str[i], 10) + checkvalue) % 10 === 0 ? 10 * 2 % 11 : (parseInt(str[i], 10) + checkvalue) % 10 * 2 % 11;\n }\n checkvalue = checkvalue === 1 ? 0 : 11 - checkvalue;\n return checkvalue === parseInt(str[10], 10);\n}\n\n/*\n * Luhn (mod 10) validation function\n * Called with a string of numbers (incl. check digit)\n * to validate according to the Luhn algorithm.\n */\nfunction luhnCheck(str) {\n var checksum = 0;\n var second = false;\n for (var i = str.length - 1; i >= 0; i--) {\n if (second) {\n var product = parseInt(str[i], 10) * 2;\n if (product > 9) {\n // sum digits of product and add to checksum\n checksum += product.toString().split('').map(function (a) {\n return parseInt(a, 10);\n }).reduce(function (a, b) {\n return a + b;\n }, 0);\n } else {\n checksum += product;\n }\n } else {\n checksum += parseInt(str[i], 10);\n }\n second = !second;\n }\n return checksum % 10 === 0;\n}\n\n/*\n * Reverse TIN multiplication and summation helper function\n * Called with an array of single-digit integers and a base multiplier\n * to calculate the sum of the digits multiplied in reverse.\n * Normally used in variations of MOD 11 algorithmic checks.\n */\nfunction reverseMultiplyAndSum(digits, base) {\n var total = 0;\n for (var i = 0; i < digits.length; i++) {\n total += digits[i] * (base - i);\n }\n return total;\n}\n\n/*\n * Verhoeff validation helper function\n * Called with a string of numbers\n * to validate according to the Verhoeff algorithm.\n */\nfunction verhoeffCheck(str) {\n var d_table = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 0, 6, 7, 8, 9, 5], [2, 3, 4, 0, 1, 7, 8, 9, 5, 6], [3, 4, 0, 1, 2, 8, 9, 5, 6, 7], [4, 0, 1, 2, 3, 9, 5, 6, 7, 8], [5, 9, 8, 7, 6, 0, 4, 3, 2, 1], [6, 5, 9, 8, 7, 1, 0, 4, 3, 2], [7, 6, 5, 9, 8, 2, 1, 0, 4, 3], [8, 7, 6, 5, 9, 3, 2, 1, 0, 4], [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]];\n var p_table = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 5, 7, 6, 2, 8, 3, 0, 9, 4], [5, 8, 0, 3, 7, 9, 6, 1, 4, 2], [8, 9, 1, 6, 0, 4, 3, 5, 2, 7], [9, 4, 5, 3, 1, 2, 6, 8, 7, 0], [4, 2, 8, 6, 5, 7, 3, 9, 0, 1], [2, 7, 9, 3, 8, 0, 6, 4, 1, 5], [7, 0, 4, 6, 9, 1, 3, 2, 5, 8]];\n\n // Copy (to prevent replacement) and reverse\n var str_copy = str.split('').reverse().join('');\n var checksum = 0;\n for (var i = 0; i < str_copy.length; i++) {\n checksum = d_table[checksum][p_table[i % 8][parseInt(str_copy[i], 10)]];\n }\n return checksum === 0;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = trim;\nvar _rtrim = _interopRequireDefault(require(\"./rtrim\"));\nvar _ltrim = _interopRequireDefault(require(\"./ltrim\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nfunction trim(str, chars) {\n return (0, _rtrim.default)((0, _ltrim.default)(str, chars), chars);\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = rtrim;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nfunction rtrim(str, chars) {\n (0, _assertString.default)(str);\n if (chars) {\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#Escaping\n var pattern = new RegExp(\"[\".concat(chars.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&'), \"]+$\"), 'g');\n return str.replace(pattern, '');\n }\n // Use a faster and more safe than regex trim method https://blog.stevenlevithan.com/archives/faster-trim-javascript\n var strIndex = str.length - 1;\n while (/\\s/.test(str.charAt(strIndex))) {\n strIndex -= 1;\n }\n return str.slice(0, strIndex + 1);\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = ltrim;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nfunction ltrim(str, chars) {\n (0, _assertString.default)(str);\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#Escaping\n var pattern = chars ? new RegExp(\"^[\".concat(chars.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&'), \"]+\"), 'g') : /^\\s+/g;\n return str.replace(pattern, '');\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = blacklist;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nfunction blacklist(str, chars) {\n (0, _assertString.default)(str);\n return str.replace(new RegExp(\"[\".concat(chars, \"]+\"), 'g'), '');\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","/**\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","var ListCache = require('./_ListCache'),\n stackClear = require('./_stackClear'),\n stackDelete = require('./_stackDelete'),\n stackGet = require('./_stackGet'),\n stackHas = require('./_stackHas'),\n stackSet = require('./_stackSet');\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nmodule.exports = Stack;\n","var 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 // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\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","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arraySome;\n","var isObject = require('./isObject');\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\nmodule.exports = isStrictComparable;\n","/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n}\n\nmodule.exports = matchesStrictComparable;\n","var 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 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 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 baseEach = require('./_baseEach'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n}\n\nmodule.exports = baseMap;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsZWJ = '\\\\u200d';\n\n/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\nvar reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n/**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\nfunction hasUnicode(string) {\n return reHasUnicode.test(string);\n}\n\nmodule.exports = hasUnicode;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = _default;\n\nvar _index = require(\"../../../lib-vendor/d3-path/src/index.js\");\n\nvar _array = _interopRequireDefault(require(\"./array.js\"));\n\nvar _constant = _interopRequireDefault(require(\"./constant.js\"));\n\nvar _linear = _interopRequireDefault(require(\"./curve/linear.js\"));\n\nvar _line = _interopRequireDefault(require(\"./line.js\"));\n\nvar _point = require(\"./point.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _default(x0, y0, y1) {\n var x1 = null,\n defined = (0, _constant.default)(true),\n context = null,\n curve = _linear.default,\n output = null;\n x0 = typeof x0 === \"function\" ? x0 : x0 === undefined ? _point.x : (0, _constant.default)(+x0);\n y0 = typeof y0 === \"function\" ? y0 : y0 === undefined ? (0, _constant.default)(0) : (0, _constant.default)(+y0);\n y1 = typeof y1 === \"function\" ? y1 : y1 === undefined ? _point.y : (0, _constant.default)(+y1);\n\n function area(data) {\n var i,\n j,\n k,\n n = (data = (0, _array.default)(data)).length,\n d,\n defined0 = false,\n buffer,\n x0z = new Array(n),\n y0z = new Array(n);\n if (context == null) output = curve(buffer = (0, _index.path)());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) {\n j = i;\n output.areaStart();\n output.lineStart();\n } else {\n output.lineEnd();\n output.lineStart();\n\n for (k = i - 1; k >= j; --k) {\n output.point(x0z[k], y0z[k]);\n }\n\n output.lineEnd();\n output.areaEnd();\n }\n }\n\n if (defined0) {\n x0z[i] = +x0(d, i, data), y0z[i] = +y0(d, i, data);\n output.point(x1 ? +x1(d, i, data) : x0z[i], y1 ? +y1(d, i, data) : y0z[i]);\n }\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n function arealine() {\n return (0, _line.default)().defined(defined).curve(curve).context(context);\n }\n\n area.x = function (_) {\n return arguments.length ? (x0 = typeof _ === \"function\" ? _ : (0, _constant.default)(+_), x1 = null, area) : x0;\n };\n\n area.x0 = function (_) {\n return arguments.length ? (x0 = typeof _ === \"function\" ? _ : (0, _constant.default)(+_), area) : x0;\n };\n\n area.x1 = function (_) {\n return arguments.length ? (x1 = _ == null ? null : typeof _ === \"function\" ? _ : (0, _constant.default)(+_), area) : x1;\n };\n\n area.y = function (_) {\n return arguments.length ? (y0 = typeof _ === \"function\" ? _ : (0, _constant.default)(+_), y1 = null, area) : y0;\n };\n\n area.y0 = function (_) {\n return arguments.length ? (y0 = typeof _ === \"function\" ? _ : (0, _constant.default)(+_), area) : y0;\n };\n\n area.y1 = function (_) {\n return arguments.length ? (y1 = _ == null ? null : typeof _ === \"function\" ? _ : (0, _constant.default)(+_), area) : y1;\n };\n\n area.lineX0 = area.lineY0 = function () {\n return arealine().x(x0).y(y0);\n };\n\n area.lineY1 = function () {\n return arealine().x(x0).y(y1);\n };\n\n area.lineX1 = function () {\n return arealine().x(x1).y(y0);\n };\n\n area.defined = function (_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : (0, _constant.default)(!!_), area) : defined;\n };\n\n area.curve = function (_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), area) : curve;\n };\n\n area.context = function (_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), area) : context;\n };\n\n return area;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.curveRadialLinear = void 0;\nexports.default = curveRadial;\n\nvar _linear = _interopRequireDefault(require(\"./linear.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar curveRadialLinear = curveRadial(_linear.default);\nexports.curveRadialLinear = curveRadialLinear;\n\nfunction Radial(curve) {\n this._curve = curve;\n}\n\nRadial.prototype = {\n areaStart: function () {\n this._curve.areaStart();\n },\n areaEnd: function () {\n this._curve.areaEnd();\n },\n lineStart: function () {\n this._curve.lineStart();\n },\n lineEnd: function () {\n this._curve.lineEnd();\n },\n point: function (a, r) {\n this._curve.point(r * Math.sin(a), r * -Math.cos(a));\n }\n};\n\nfunction curveRadial(curve) {\n function radial(context) {\n return new Radial(curve(context));\n }\n\n radial._curve = curve;\n return radial;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = _default;\nexports.lineRadial = lineRadial;\n\nvar _radial = _interopRequireWildcard(require(\"./curve/radial.js\"));\n\nvar _line = _interopRequireDefault(require(\"./line.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction lineRadial(l) {\n var c = l.curve;\n l.angle = l.x, delete l.x;\n l.radius = l.y, delete l.y;\n\n l.curve = function (_) {\n return arguments.length ? c((0, _radial.default)(_)) : c()._curve;\n };\n\n return l;\n}\n\nfunction _default() {\n return lineRadial((0, _line.default)().curve(_radial.curveRadialLinear));\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = _default;\n\nfunction _default(x, y) {\n return [(y = +y) * Math.cos(x -= Math.PI / 2), y * Math.sin(x)];\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.bumpRadial = bumpRadial;\nexports.bumpX = bumpX;\nexports.bumpY = bumpY;\n\nvar _pointRadial = _interopRequireDefault(require(\"../pointRadial.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nclass Bump {\n constructor(context, x) {\n this._context = context;\n this._x = x;\n }\n\n areaStart() {\n this._line = 0;\n }\n\n areaEnd() {\n this._line = NaN;\n }\n\n lineStart() {\n this._point = 0;\n }\n\n lineEnd() {\n if (this._line || this._line !== 0 && this._point === 1) this._context.closePath();\n this._line = 1 - this._line;\n }\n\n point(x, y) {\n x = +x, y = +y;\n\n switch (this._point) {\n case 0:\n {\n this._point = 1;\n if (this._line) this._context.lineTo(x, y);else this._context.moveTo(x, y);\n break;\n }\n\n case 1:\n this._point = 2;\n // falls through\n\n default:\n {\n if (this._x) this._context.bezierCurveTo(this._x0 = (this._x0 + x) / 2, this._y0, this._x0, y, x, y);else this._context.bezierCurveTo(this._x0, this._y0 = (this._y0 + y) / 2, x, this._y0, x, y);\n break;\n }\n }\n\n this._x0 = x, this._y0 = y;\n }\n\n}\n\nclass BumpRadial {\n constructor(context) {\n this._context = context;\n }\n\n lineStart() {\n this._point = 0;\n }\n\n lineEnd() {}\n\n point(x, y) {\n x = +x, y = +y;\n\n if (this._point++ === 0) {\n this._x0 = x, this._y0 = y;\n } else {\n const p0 = (0, _pointRadial.default)(this._x0, this._y0);\n const p1 = (0, _pointRadial.default)(this._x0, this._y0 = (this._y0 + y) / 2);\n const p2 = (0, _pointRadial.default)(x, this._y0);\n const p3 = (0, _pointRadial.default)(x, y);\n\n this._context.moveTo(...p0);\n\n this._context.bezierCurveTo(...p1, ...p2, ...p3);\n }\n }\n\n}\n\nfunction bumpX(context) {\n return new Bump(context, true);\n}\n\nfunction bumpY(context) {\n return new Bump(context, false);\n}\n\nfunction bumpRadial(context) {\n return new BumpRadial(context);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _math = require(\"../math.js\");\n\nconst sqrt3 = (0, _math.sqrt)(3);\nvar _default = {\n draw(context, size) {\n const r = (0, _math.sqrt)(size + (0, _math.min)(size / 28, 0.75)) * 0.59436;\n const t = r / 2;\n const u = t * sqrt3;\n context.moveTo(0, r);\n context.lineTo(0, -r);\n context.moveTo(-u, -t);\n context.lineTo(u, t);\n context.moveTo(-u, t);\n context.lineTo(u, -t);\n }\n\n};\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _math = require(\"../math.js\");\n\nvar _default = {\n draw(context, size) {\n const r = (0, _math.sqrt)(size / _math.pi);\n context.moveTo(r, 0);\n context.arc(0, 0, r, 0, _math.tau);\n }\n\n};\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _math = require(\"../math.js\");\n\nvar _default = {\n draw(context, size) {\n const r = (0, _math.sqrt)(size / 5) / 2;\n context.moveTo(-3 * r, -r);\n context.lineTo(-r, -r);\n context.lineTo(-r, -3 * r);\n context.lineTo(r, -3 * r);\n context.lineTo(r, -r);\n context.lineTo(3 * r, -r);\n context.lineTo(3 * r, r);\n context.lineTo(r, r);\n context.lineTo(r, 3 * r);\n context.lineTo(-r, 3 * r);\n context.lineTo(-r, r);\n context.lineTo(-3 * r, r);\n context.closePath();\n }\n\n};\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _math = require(\"../math.js\");\n\nconst tan30 = (0, _math.sqrt)(1 / 3);\nconst tan30_2 = tan30 * 2;\nvar _default = {\n draw(context, size) {\n const y = (0, _math.sqrt)(size / tan30_2);\n const x = y * tan30;\n context.moveTo(0, -y);\n context.lineTo(x, 0);\n context.lineTo(0, y);\n context.lineTo(-x, 0);\n context.closePath();\n }\n\n};\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _math = require(\"../math.js\");\n\nvar _default = {\n draw(context, size) {\n const r = (0, _math.sqrt)(size) * 0.62625;\n context.moveTo(0, -r);\n context.lineTo(r, 0);\n context.lineTo(0, r);\n context.lineTo(-r, 0);\n context.closePath();\n }\n\n};\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _math = require(\"../math.js\");\n\nvar _default = {\n draw(context, size) {\n const r = (0, _math.sqrt)(size - (0, _math.min)(size / 7, 2)) * 0.87559;\n context.moveTo(-r, 0);\n context.lineTo(r, 0);\n context.moveTo(0, r);\n context.lineTo(0, -r);\n }\n\n};\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _math = require(\"../math.js\");\n\nvar _default = {\n draw(context, size) {\n const w = (0, _math.sqrt)(size);\n const x = -w / 2;\n context.rect(x, x, w, w);\n }\n\n};\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _math = require(\"../math.js\");\n\nvar _default = {\n draw(context, size) {\n const r = (0, _math.sqrt)(size) * 0.4431;\n context.moveTo(r, r);\n context.lineTo(r, -r);\n context.lineTo(-r, -r);\n context.lineTo(-r, r);\n context.closePath();\n }\n\n};\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _math = require(\"../math.js\");\n\nconst ka = 0.89081309152928522810;\nconst kr = (0, _math.sin)(_math.pi / 10) / (0, _math.sin)(7 * _math.pi / 10);\nconst kx = (0, _math.sin)(_math.tau / 10) * kr;\nconst ky = -(0, _math.cos)(_math.tau / 10) * kr;\nvar _default = {\n draw(context, size) {\n const r = (0, _math.sqrt)(size * ka);\n const x = kx * r;\n const y = ky * r;\n context.moveTo(0, -r);\n context.lineTo(x, y);\n\n for (let i = 1; i < 5; ++i) {\n const a = _math.tau * i / 5;\n const c = (0, _math.cos)(a);\n const s = (0, _math.sin)(a);\n context.lineTo(s * r, -c * r);\n context.lineTo(c * x - s * y, s * x + c * y);\n }\n\n context.closePath();\n }\n\n};\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _math = require(\"../math.js\");\n\nconst sqrt3 = (0, _math.sqrt)(3);\nvar _default = {\n draw(context, size) {\n const y = -(0, _math.sqrt)(size / (sqrt3 * 3));\n context.moveTo(0, y * 2);\n context.lineTo(-sqrt3 * y, -y);\n context.lineTo(sqrt3 * y, -y);\n context.closePath();\n }\n\n};\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _math = require(\"../math.js\");\n\nconst sqrt3 = (0, _math.sqrt)(3);\nvar _default = {\n draw(context, size) {\n const s = (0, _math.sqrt)(size) * 0.6824;\n const t = s / 2;\n const u = s * sqrt3 / 2; // cos(Math.PI / 6)\n\n context.moveTo(0, -s);\n context.lineTo(u, t);\n context.lineTo(-u, t);\n context.closePath();\n }\n\n};\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _math = require(\"../math.js\");\n\nconst c = -0.5;\nconst s = (0, _math.sqrt)(3) / 2;\nconst k = 1 / (0, _math.sqrt)(12);\nconst a = (k / 2 + 1) * 3;\nvar _default = {\n draw(context, size) {\n const r = (0, _math.sqrt)(size / a);\n const x0 = r / 2,\n y0 = r * k;\n const x1 = x0,\n y1 = r * k + r;\n const x2 = -x1,\n y2 = y1;\n context.moveTo(x0, y0);\n context.lineTo(x1, y1);\n context.lineTo(x2, y2);\n context.lineTo(c * x0 - s * y0, s * x0 + c * y0);\n context.lineTo(c * x1 - s * y1, s * x1 + c * y1);\n context.lineTo(c * x2 - s * y2, s * x2 + c * y2);\n context.lineTo(c * x0 + s * y0, c * y0 - s * x0);\n context.lineTo(c * x1 + s * y1, c * y1 - s * x1);\n context.lineTo(c * x2 + s * y2, c * y2 - s * x2);\n context.closePath();\n }\n\n};\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _math = require(\"../math.js\");\n\nvar _default = {\n draw(context, size) {\n const r = (0, _math.sqrt)(size - (0, _math.min)(size / 6, 1.7)) * 0.6189;\n context.moveTo(-r, -r);\n context.lineTo(r, r);\n context.moveTo(-r, r);\n context.lineTo(r, -r);\n }\n\n};\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.CardinalClosed = CardinalClosed;\nexports.default = void 0;\n\nvar _noop = _interopRequireDefault(require(\"../noop.js\"));\n\nvar _cardinal = require(\"./cardinal.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction CardinalClosed(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinalClosed.prototype = {\n areaStart: _noop.default,\n areaEnd: _noop.default,\n lineStart: function () {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 = this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN;\n this._point = 0;\n },\n lineEnd: function () {\n switch (this._point) {\n case 1:\n {\n this._context.moveTo(this._x3, this._y3);\n\n this._context.closePath();\n\n break;\n }\n\n case 2:\n {\n this._context.lineTo(this._x3, this._y3);\n\n this._context.closePath();\n\n break;\n }\n\n case 3:\n {\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n this.point(this._x5, this._y5);\n break;\n }\n }\n },\n point: function (x, y) {\n x = +x, y = +y;\n\n switch (this._point) {\n case 0:\n this._point = 1;\n this._x3 = x, this._y3 = y;\n break;\n\n case 1:\n this._point = 2;\n\n this._context.moveTo(this._x4 = x, this._y4 = y);\n\n break;\n\n case 2:\n this._point = 3;\n this._x5 = x, this._y5 = y;\n break;\n\n default:\n (0, _cardinal.point)(this, x, y);\n break;\n }\n\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nvar _default = function custom(tension) {\n function cardinal(context) {\n return new CardinalClosed(context, tension);\n }\n\n cardinal.tension = function (tension) {\n return custom(+tension);\n };\n\n return cardinal;\n}(0);\n\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.CardinalOpen = CardinalOpen;\nexports.default = void 0;\n\nvar _cardinal = require(\"./cardinal.js\");\n\nfunction CardinalOpen(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinalOpen.prototype = {\n areaStart: function () {\n this._line = 0;\n },\n areaEnd: function () {\n this._line = NaN;\n },\n lineStart: function () {\n this._x0 = this._x1 = this._x2 = this._y0 = this._y1 = this._y2 = NaN;\n this._point = 0;\n },\n lineEnd: function () {\n if (this._line || this._line !== 0 && this._point === 3) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function (x, y) {\n x = +x, y = +y;\n\n switch (this._point) {\n case 0:\n this._point = 1;\n break;\n\n case 1:\n this._point = 2;\n break;\n\n case 2:\n this._point = 3;\n this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2);\n break;\n\n case 3:\n this._point = 4;\n // falls through\n\n default:\n (0, _cardinal.point)(this, x, y);\n break;\n }\n\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nvar _default = function custom(tension) {\n function cardinal(context) {\n return new CardinalOpen(context, tension);\n }\n\n cardinal.tension = function (tension) {\n return custom(+tension);\n };\n\n return cardinal;\n}(0);\n\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = _default;\n\nvar _none = _interopRequireDefault(require(\"./none.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _default(series) {\n var peaks = series.map(peak);\n return (0, _none.default)(series).sort(function (a, b) {\n return peaks[a] - peaks[b];\n });\n}\n\nfunction peak(series) {\n var i = -1,\n j = 0,\n n = series.length,\n vi,\n vj = -Infinity;\n\n while (++i < n) if ((vi = +series[i][1]) > vj) vj = vi, j = i;\n\n return j;\n}","var toNumber = require('./toNumber');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_INTEGER = 1.7976931348623157e+308;\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n}\n\nmodule.exports = toFinite;\n","var baseTrim = require('./_baseTrim'),\n isObject = require('./isObject'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\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 = baseTrim(value);\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","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.bisectRight = exports.bisectLeft = exports.bisectCenter = void 0;\n\nvar _ascending = _interopRequireDefault(require(\"./ascending.js\"));\n\nvar _bisector = _interopRequireDefault(require(\"./bisector.js\"));\n\nvar _number = _interopRequireDefault(require(\"./number.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nconst ascendingBisect = (0, _bisector.default)(_ascending.default);\nconst bisectRight = ascendingBisect.right;\nexports.bisectRight = bisectRight;\nconst bisectLeft = ascendingBisect.left;\nexports.bisectLeft = bisectLeft;\nconst bisectCenter = (0, _bisector.default)(_number.default).center;\nexports.bisectCenter = bisectCenter;\nvar _default = bisectRight;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = bisector;\n\nvar _ascending = _interopRequireDefault(require(\"./ascending.js\"));\n\nvar _descending = _interopRequireDefault(require(\"./descending.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction bisector(f) {\n let compare1, compare2, delta; // If an accessor is specified, promote it to a comparator. In this case we\n // can test whether the search value is (self-) comparable. We can’t do this\n // for a comparator (except for specific, known comparators) because we can’t\n // tell if the comparator is symmetric, and an asymmetric comparator can’t be\n // used to test whether a single value is comparable.\n\n if (f.length !== 2) {\n compare1 = _ascending.default;\n\n compare2 = (d, x) => (0, _ascending.default)(f(d), x);\n\n delta = (d, x) => f(d) - x;\n } else {\n compare1 = f === _ascending.default || f === _descending.default ? f : zero;\n compare2 = f;\n delta = f;\n }\n\n function left(a, x, lo = 0, hi = a.length) {\n if (lo < hi) {\n if (compare1(x, x) !== 0) return hi;\n\n do {\n const mid = lo + hi >>> 1;\n if (compare2(a[mid], x) < 0) lo = mid + 1;else hi = mid;\n } while (lo < hi);\n }\n\n return lo;\n }\n\n function right(a, x, lo = 0, hi = a.length) {\n if (lo < hi) {\n if (compare1(x, x) !== 0) return hi;\n\n do {\n const mid = lo + hi >>> 1;\n if (compare2(a[mid], x) <= 0) lo = mid + 1;else hi = mid;\n } while (lo < hi);\n }\n\n return lo;\n }\n\n function center(a, x, lo = 0, hi = a.length) {\n const i = left(a, x, lo, hi - 1);\n return i > lo && delta(a[i - 1], x) > -delta(a[i], x) ? i - 1 : i;\n }\n\n return {\n left,\n center,\n right\n };\n}\n\nfunction zero() {\n return 0;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = descending;\n\nfunction descending(a, b) {\n return a == null || b == null ? NaN : b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = number;\nexports.numbers = numbers;\n\nfunction number(x) {\n return x === null ? NaN : +x;\n}\n\nfunction* numbers(values, valueof) {\n if (valueof === undefined) {\n for (let value of values) {\n if (value != null && (value = +value) >= value) {\n yield value;\n }\n }\n } else {\n let index = -1;\n\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n yield value;\n }\n }\n }\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = deviation;\n\nvar _variance = _interopRequireDefault(require(\"./variance.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction deviation(values, valueof) {\n const v = (0, _variance.default)(values, valueof);\n return v ? Math.sqrt(v) : v;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = variance;\n\nfunction variance(values, valueof) {\n let count = 0;\n let delta;\n let mean = 0;\n let sum = 0;\n\n if (valueof === undefined) {\n for (let value of values) {\n if (value != null && (value = +value) >= value) {\n delta = value - mean;\n mean += delta / ++count;\n sum += delta * (value - mean);\n }\n }\n } else {\n let index = -1;\n\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n delta = value - mean;\n mean += delta / ++count;\n sum += delta * (value - mean);\n }\n }\n }\n\n if (count > 1) return sum / (count - 1);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = extent;\n\nfunction extent(values, valueof) {\n let min;\n let max;\n\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null) {\n if (min === undefined) {\n if (value >= value) min = max = value;\n } else {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n } else {\n let index = -1;\n\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null) {\n if (min === undefined) {\n if (value >= value) min = max = value;\n } else {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n }\n\n return [min, max];\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = group;\nexports.flatGroup = flatGroup;\nexports.flatRollup = flatRollup;\nexports.groups = groups;\nexports.index = index;\nexports.indexes = indexes;\nexports.rollup = rollup;\nexports.rollups = rollups;\n\nvar _index = require(\"../../../lib-vendor/internmap/src/index.js\");\n\nvar _identity = _interopRequireDefault(require(\"./identity.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction group(values, ...keys) {\n return nest(values, _identity.default, _identity.default, keys);\n}\n\nfunction groups(values, ...keys) {\n return nest(values, Array.from, _identity.default, keys);\n}\n\nfunction flatten(groups, keys) {\n for (let i = 1, n = keys.length; i < n; ++i) {\n groups = groups.flatMap(g => g.pop().map(([key, value]) => [...g, key, value]));\n }\n\n return groups;\n}\n\nfunction flatGroup(values, ...keys) {\n return flatten(groups(values, ...keys), keys);\n}\n\nfunction flatRollup(values, reduce, ...keys) {\n return flatten(rollups(values, reduce, ...keys), keys);\n}\n\nfunction rollup(values, reduce, ...keys) {\n return nest(values, _identity.default, reduce, keys);\n}\n\nfunction rollups(values, reduce, ...keys) {\n return nest(values, Array.from, reduce, keys);\n}\n\nfunction index(values, ...keys) {\n return nest(values, _identity.default, unique, keys);\n}\n\nfunction indexes(values, ...keys) {\n return nest(values, Array.from, unique, keys);\n}\n\nfunction unique(values) {\n if (values.length !== 1) throw new Error(\"duplicate key\");\n return values[0];\n}\n\nfunction nest(values, map, reduce, keys) {\n return function regroup(values, i) {\n if (i >= keys.length) return reduce(values);\n const groups = new _index.InternMap();\n const keyof = keys[i++];\n let index = -1;\n\n for (const value of values) {\n const key = keyof(value, ++index, values);\n const group = groups.get(key);\n if (group) group.push(value);else groups.set(key, [value]);\n }\n\n for (const [key, values] of groups) {\n groups.set(key, regroup(values, i));\n }\n\n return map(groups);\n }(values, 0);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = identity;\n\nfunction identity(x) {\n return x;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = permute;\n\nfunction permute(source, keys) {\n return Array.from(keys, key => source[key]);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = nice;\n\nvar _ticks = require(\"./ticks.js\");\n\nfunction nice(start, stop, count) {\n let prestep;\n\n while (true) {\n const step = (0, _ticks.tickIncrement)(start, stop, count);\n\n if (step === prestep || step === 0 || !isFinite(step)) {\n return [start, stop];\n } else if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n } else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n }\n\n prestep = step;\n }\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = thresholdSturges;\n\nvar _count = _interopRequireDefault(require(\"../count.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction thresholdSturges(values) {\n return Math.ceil(Math.log((0, _count.default)(values)) / Math.LN2) + 1;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = max;\n\nfunction max(values, valueof) {\n let max;\n\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null && (max < value || max === undefined && value >= value)) {\n max = value;\n }\n }\n } else {\n let index = -1;\n\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null && (max < value || max === undefined && value >= value)) {\n max = value;\n }\n }\n }\n\n return max;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = quickselect;\n\nvar _sort = require(\"./sort.js\");\n\n// Based on https://github.com/mourner/quickselect\n// ISC license, Copyright 2018 Vladimir Agafonkin.\nfunction quickselect(array, k, left = 0, right = array.length - 1, compare) {\n compare = compare === undefined ? _sort.ascendingDefined : (0, _sort.compareDefined)(compare);\n\n while (right > left) {\n if (right - left > 600) {\n const n = right - left + 1;\n const m = k - left + 1;\n const z = Math.log(n);\n const s = 0.5 * Math.exp(2 * z / 3);\n const sd = 0.5 * Math.sqrt(z * s * (n - s) / n) * (m - n / 2 < 0 ? -1 : 1);\n const newLeft = Math.max(left, Math.floor(k - m * s / n + sd));\n const newRight = Math.min(right, Math.floor(k + (n - m) * s / n + sd));\n quickselect(array, k, newLeft, newRight, compare);\n }\n\n const t = array[k];\n let i = left;\n let j = right;\n swap(array, left, k);\n if (compare(array[right], t) > 0) swap(array, left, right);\n\n while (i < j) {\n swap(array, i, j), ++i, --j;\n\n while (compare(array[i], t) < 0) ++i;\n\n while (compare(array[j], t) > 0) --j;\n }\n\n if (compare(array[left], t) === 0) swap(array, left, j);else ++j, swap(array, j, right);\n if (j <= k) left = j + 1;\n if (k <= j) right = j - 1;\n }\n\n return array;\n}\n\nfunction swap(array, i, j) {\n const t = array[i];\n array[i] = array[j];\n array[j] = t;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = maxIndex;\n\nfunction maxIndex(values, valueof) {\n let max;\n let maxIndex = -1;\n let index = -1;\n\n if (valueof === undefined) {\n for (const value of values) {\n ++index;\n\n if (value != null && (max < value || max === undefined && value >= value)) {\n max = value, maxIndex = index;\n }\n }\n } else {\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null && (max < value || max === undefined && value >= value)) {\n max = value, maxIndex = index;\n }\n }\n }\n\n return maxIndex;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = minIndex;\n\nfunction minIndex(values, valueof) {\n let min;\n let minIndex = -1;\n let index = -1;\n\n if (valueof === undefined) {\n for (const value of values) {\n ++index;\n\n if (value != null && (min > value || min === undefined && value >= value)) {\n min = value, minIndex = index;\n }\n }\n } else {\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null && (min > value || min === undefined && value >= value)) {\n min = value, minIndex = index;\n }\n }\n }\n\n return minIndex;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = leastIndex;\n\nvar _ascending = _interopRequireDefault(require(\"./ascending.js\"));\n\nvar _minIndex = _interopRequireDefault(require(\"./minIndex.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction leastIndex(values, compare = _ascending.default) {\n if (compare.length === 1) return (0, _minIndex.default)(values, compare);\n let minValue;\n let min = -1;\n let index = -1;\n\n for (const value of values) {\n ++index;\n\n if (min < 0 ? compare(value, value) === 0 : compare(value, minValue) < 0) {\n minValue = value;\n min = index;\n }\n }\n\n return min;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = transpose;\n\nvar _min = _interopRequireDefault(require(\"./min.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction transpose(matrix) {\n if (!(n = matrix.length)) return [];\n\n for (var i = -1, m = (0, _min.default)(matrix, length), transpose = new Array(m); ++i < m;) {\n for (var j = -1, n, row = transpose[i] = new Array(n); ++j < n;) {\n row[j] = matrix[j][i];\n }\n }\n\n return transpose;\n}\n\nfunction length(d) {\n return d.length;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = superset;\n\nfunction superset(values, other) {\n const iterator = values[Symbol.iterator](),\n set = new Set();\n\n for (const o of other) {\n const io = intern(o);\n if (set.has(io)) continue;\n let value, done;\n\n while (({\n value,\n done\n } = iterator.next())) {\n if (done) return false;\n const ivalue = intern(value);\n set.add(ivalue);\n if (Object.is(io, ivalue)) break;\n }\n }\n\n return true;\n}\n\nfunction intern(value) {\n return value !== null && typeof value === \"object\" ? value.valueOf() : value;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = ordinal;\nexports.implicit = void 0;\n\nvar _index = require(\"../../../lib-vendor/d3-array/src/index.js\");\n\nvar _init = require(\"./init.js\");\n\nconst implicit = Symbol(\"implicit\");\nexports.implicit = implicit;\n\nfunction ordinal() {\n var index = new _index.InternMap(),\n domain = [],\n range = [],\n unknown = implicit;\n\n function scale(d) {\n let i = index.get(d);\n\n if (i === undefined) {\n if (unknown !== implicit) return unknown;\n index.set(d, i = domain.push(d) - 1);\n }\n\n return range[i % range.length];\n }\n\n scale.domain = function (_) {\n if (!arguments.length) return domain.slice();\n domain = [], index = new _index.InternMap();\n\n for (const value of _) {\n if (index.has(value)) continue;\n index.set(value, domain.push(value) - 1);\n }\n\n return scale;\n };\n\n scale.range = function (_) {\n return arguments.length ? (range = Array.from(_), scale) : range.slice();\n };\n\n scale.unknown = function (_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function () {\n return ordinal(domain, range).unknown(unknown);\n };\n\n _init.initRange.apply(scale, arguments);\n\n return scale;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.radians = exports.degrees = void 0;\nconst radians = Math.PI / 180;\nexports.radians = radians;\nconst degrees = 180 / Math.PI;\nexports.degrees = degrees;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.rgbBasisClosed = exports.rgbBasis = exports.default = void 0;\n\nvar _index = require(\"../../../lib-vendor/d3-color/src/index.js\");\n\nvar _basis = _interopRequireDefault(require(\"./basis.js\"));\n\nvar _basisClosed = _interopRequireDefault(require(\"./basisClosed.js\"));\n\nvar _color = _interopRequireWildcard(require(\"./color.js\"));\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _default = function rgbGamma(y) {\n var color = (0, _color.gamma)(y);\n\n function rgb(start, end) {\n var r = color((start = (0, _index.rgb)(start)).r, (end = (0, _index.rgb)(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = (0, _color.default)(start.opacity, end.opacity);\n return function (t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n return rgb;\n}(1);\n\nexports.default = _default;\n\nfunction rgbSpline(spline) {\n return function (colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i,\n color;\n\n for (i = 0; i < n; ++i) {\n color = (0, _index.rgb)(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function (t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nvar rgbBasis = rgbSpline(_basis.default);\nexports.rgbBasis = rgbBasis;\nvar rgbBasisClosed = rgbSpline(_basisClosed.default);\nexports.rgbBasisClosed = rgbBasisClosed;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = _default;\n\nvar _basis = require(\"./basis.js\");\n\nfunction _default(values) {\n var n = values.length;\n return function (t) {\n var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n v0 = values[(i + n - 1) % n],\n v1 = values[i % n],\n v2 = values[(i + 1) % n],\n v3 = values[(i + 2) % n];\n return (0, _basis.basis)((t - i / n) * n, v0, v1, v2, v3);\n };\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _default = x => () => x;\n\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = _default;\nexports.genericArray = genericArray;\n\nvar _value = _interopRequireDefault(require(\"./value.js\"));\n\nvar _numberArray = _interopRequireWildcard(require(\"./numberArray.js\"));\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _default(a, b) {\n return ((0, _numberArray.isNumberArray)(b) ? _numberArray.default : genericArray)(a, b);\n}\n\nfunction genericArray(a, b) {\n var nb = b ? b.length : 0,\n na = a ? Math.min(nb, a.length) : 0,\n x = new Array(na),\n c = new Array(nb),\n i;\n\n for (i = 0; i < na; ++i) x[i] = (0, _value.default)(a[i], b[i]);\n\n for (; i < nb; ++i) c[i] = b[i];\n\n return function (t) {\n for (i = 0; i < na; ++i) c[i] = x[i](t);\n\n return c;\n };\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = _default;\n\nfunction _default(a, b) {\n var d = new Date();\n return a = +a, b = +b, function (t) {\n return d.setTime(a * (1 - t) + b * t), d;\n };\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = _default;\n\nvar _value = _interopRequireDefault(require(\"./value.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _default(a, b) {\n var i = {},\n c = {},\n k;\n if (a === null || typeof a !== \"object\") a = {};\n if (b === null || typeof b !== \"object\") b = {};\n\n for (k in b) {\n if (k in a) {\n i[k] = (0, _value.default)(a[k], b[k]);\n } else {\n c[k] = b[k];\n }\n }\n\n return function (t) {\n for (k in i) c[k] = i[k](t);\n\n return c;\n };\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = _default;\n\nvar _number = _interopRequireDefault(require(\"./number.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function () {\n return b;\n };\n}\n\nfunction one(b) {\n return function (t) {\n return b(t) + \"\";\n };\n}\n\nfunction _default(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0,\n // scan index for next number in b\n am,\n // current match in a\n bm,\n // current match in b\n bs,\n // string preceding current number in b, if any\n i = -1,\n // index in s\n s = [],\n // string constants and placeholders\n q = []; // number interpolators\n // Coerce inputs to strings.\n\n a = a + \"\", b = b + \"\"; // Interpolate pairs of numbers in a & b.\n\n while ((am = reA.exec(a)) && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) {\n // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n if ((am = am[0]) === (bm = bm[0])) {\n // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else {\n // interpolate non-matching numbers\n s[++i] = null;\n q.push({\n i: i,\n x: (0, _number.default)(am, bm)\n });\n }\n\n bi = reB.lastIndex;\n } // Add remains of b.\n\n\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n } // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n\n\n return s.length < 2 ? q[0] ? one(q[0].x) : zero(b) : (b = q.length, function (t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n\n return s.join(\"\");\n });\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = tickFormat;\n\nvar _index = require(\"../../../lib-vendor/d3-array/src/index.js\");\n\nvar _index2 = require(\"../../../lib-vendor/d3-format/src/index.js\");\n\nfunction tickFormat(start, stop, count, specifier) {\n var step = (0, _index.tickStep)(start, stop, count),\n precision;\n specifier = (0, _index2.formatSpecifier)(specifier == null ? \",f\" : specifier);\n\n switch (specifier.type) {\n case \"s\":\n {\n var value = Math.max(Math.abs(start), Math.abs(stop));\n if (specifier.precision == null && !isNaN(precision = (0, _index2.precisionPrefix)(step, value))) specifier.precision = precision;\n return (0, _index2.formatPrefix)(specifier, value);\n }\n\n case \"\":\n case \"e\":\n case \"g\":\n case \"p\":\n case \"r\":\n {\n if (specifier.precision == null && !isNaN(precision = (0, _index2.precisionRound)(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === \"e\");\n break;\n }\n\n case \"f\":\n case \"%\":\n {\n if (specifier.precision == null && !isNaN(precision = (0, _index2.precisionFixed)(step))) specifier.precision = precision - (specifier.type === \"%\") * 2;\n break;\n }\n }\n\n return (0, _index2.format)(specifier);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"FormatSpecifier\", {\n enumerable: true,\n get: function () {\n return _formatSpecifier.FormatSpecifier;\n }\n});\nObject.defineProperty(exports, \"format\", {\n enumerable: true,\n get: function () {\n return _defaultLocale.format;\n }\n});\nObject.defineProperty(exports, \"formatDefaultLocale\", {\n enumerable: true,\n get: function () {\n return _defaultLocale.default;\n }\n});\nObject.defineProperty(exports, \"formatLocale\", {\n enumerable: true,\n get: function () {\n return _locale.default;\n }\n});\nObject.defineProperty(exports, \"formatPrefix\", {\n enumerable: true,\n get: function () {\n return _defaultLocale.formatPrefix;\n }\n});\nObject.defineProperty(exports, \"formatSpecifier\", {\n enumerable: true,\n get: function () {\n return _formatSpecifier.default;\n }\n});\nObject.defineProperty(exports, \"precisionFixed\", {\n enumerable: true,\n get: function () {\n return _precisionFixed.default;\n }\n});\nObject.defineProperty(exports, \"precisionPrefix\", {\n enumerable: true,\n get: function () {\n return _precisionPrefix.default;\n }\n});\nObject.defineProperty(exports, \"precisionRound\", {\n enumerable: true,\n get: function () {\n return _precisionRound.default;\n }\n});\n\nvar _defaultLocale = _interopRequireWildcard(require(\"./defaultLocale.js\"));\n\nvar _locale = _interopRequireDefault(require(\"./locale.js\"));\n\nvar _formatSpecifier = _interopRequireWildcard(require(\"./formatSpecifier.js\"));\n\nvar _precisionFixed = _interopRequireDefault(require(\"./precisionFixed.js\"));\n\nvar _precisionPrefix = _interopRequireDefault(require(\"./precisionPrefix.js\"));\n\nvar _precisionRound = _interopRequireDefault(require(\"./precisionRound.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = _default;\n\nvar _exponent = _interopRequireDefault(require(\"./exponent.js\"));\n\nvar _formatGroup = _interopRequireDefault(require(\"./formatGroup.js\"));\n\nvar _formatNumerals = _interopRequireDefault(require(\"./formatNumerals.js\"));\n\nvar _formatSpecifier = _interopRequireDefault(require(\"./formatSpecifier.js\"));\n\nvar _formatTrim = _interopRequireDefault(require(\"./formatTrim.js\"));\n\nvar _formatTypes = _interopRequireDefault(require(\"./formatTypes.js\"));\n\nvar _formatPrefixAuto = require(\"./formatPrefixAuto.js\");\n\nvar _identity = _interopRequireDefault(require(\"./identity.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar map = Array.prototype.map,\n prefixes = [\"y\", \"z\", \"a\", \"f\", \"p\", \"n\", \"µ\", \"m\", \"\", \"k\", \"M\", \"G\", \"T\", \"P\", \"E\", \"Z\", \"Y\"];\n\nfunction _default(locale) {\n var group = locale.grouping === undefined || locale.thousands === undefined ? _identity.default : (0, _formatGroup.default)(map.call(locale.grouping, Number), locale.thousands + \"\"),\n currencyPrefix = locale.currency === undefined ? \"\" : locale.currency[0] + \"\",\n currencySuffix = locale.currency === undefined ? \"\" : locale.currency[1] + \"\",\n decimal = locale.decimal === undefined ? \".\" : locale.decimal + \"\",\n numerals = locale.numerals === undefined ? _identity.default : (0, _formatNumerals.default)(map.call(locale.numerals, String)),\n percent = locale.percent === undefined ? \"%\" : locale.percent + \"\",\n minus = locale.minus === undefined ? \"−\" : locale.minus + \"\",\n nan = locale.nan === undefined ? \"NaN\" : locale.nan + \"\";\n\n function newFormat(specifier) {\n specifier = (0, _formatSpecifier.default)(specifier);\n var fill = specifier.fill,\n align = specifier.align,\n sign = specifier.sign,\n symbol = specifier.symbol,\n zero = specifier.zero,\n width = specifier.width,\n comma = specifier.comma,\n precision = specifier.precision,\n trim = specifier.trim,\n type = specifier.type; // The \"n\" type is an alias for \",g\".\n\n if (type === \"n\") comma = true, type = \"g\"; // The \"\" type, and any invalid type, is an alias for \".12~g\".\n else if (!_formatTypes.default[type]) precision === undefined && (precision = 12), trim = true, type = \"g\"; // If zero fill is specified, padding goes after sign and before digits.\n\n if (zero || fill === \"0\" && align === \"=\") zero = true, fill = \"0\", align = \"=\"; // Compute the prefix and suffix.\n // For SI-prefix, the suffix is lazily computed.\n\n var prefix = symbol === \"$\" ? currencyPrefix : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n suffix = symbol === \"$\" ? currencySuffix : /[%p]/.test(type) ? percent : \"\"; // What format function should we use?\n // Is this an integer type?\n // Can this type generate exponential notation?\n\n var formatType = _formatTypes.default[type],\n maybeSuffix = /[defgprs%]/.test(type); // Set the default precision if not specified,\n // or clamp the specified precision to the supported range.\n // For significant precision, it must be in [1, 21].\n // For fixed precision, it must be in [0, 20].\n\n precision = precision === undefined ? 6 : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision)) : Math.max(0, Math.min(20, precision));\n\n function format(value) {\n var valuePrefix = prefix,\n valueSuffix = suffix,\n i,\n n,\n c;\n\n if (type === \"c\") {\n valueSuffix = formatType(value) + valueSuffix;\n value = \"\";\n } else {\n value = +value; // Determine the sign. -0 is not less than 0, but 1 / -0 is!\n\n var valueNegative = value < 0 || 1 / value < 0; // Perform the initial formatting.\n\n value = isNaN(value) ? nan : formatType(Math.abs(value), precision); // Trim insignificant zeros.\n\n if (trim) value = (0, _formatTrim.default)(value); // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign.\n\n if (valueNegative && +value === 0 && sign !== \"+\") valueNegative = false; // Compute the prefix and suffix.\n\n valuePrefix = (valueNegative ? sign === \"(\" ? sign : minus : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n valueSuffix = (type === \"s\" ? prefixes[8 + _formatPrefixAuto.prefixExponent / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\"); // Break the formatted value into the integer “value†part that can be\n // grouped, and fractional or exponential “suffix†part that is not.\n\n if (maybeSuffix) {\n i = -1, n = value.length;\n\n while (++i < n) {\n if (c = value.charCodeAt(i), 48 > c || c > 57) {\n valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n value = value.slice(0, i);\n break;\n }\n }\n }\n } // If the fill character is not \"0\", grouping is applied before padding.\n\n\n if (comma && !zero) value = group(value, Infinity); // Compute the padding.\n\n var length = valuePrefix.length + value.length + valueSuffix.length,\n padding = length < width ? new Array(width - length + 1).join(fill) : \"\"; // If the fill character is \"0\", grouping is applied after padding.\n\n if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\"; // Reconstruct the final output based on the desired alignment.\n\n switch (align) {\n case \"<\":\n value = valuePrefix + value + valueSuffix + padding;\n break;\n\n case \"=\":\n value = valuePrefix + padding + value + valueSuffix;\n break;\n\n case \"^\":\n value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length);\n break;\n\n default:\n value = padding + valuePrefix + value + valueSuffix;\n break;\n }\n\n return numerals(value);\n }\n\n format.toString = function () {\n return specifier + \"\";\n };\n\n return format;\n }\n\n function formatPrefix(specifier, value) {\n var f = newFormat((specifier = (0, _formatSpecifier.default)(specifier), specifier.type = \"f\", specifier)),\n e = Math.max(-8, Math.min(8, Math.floor((0, _exponent.default)(value) / 3))) * 3,\n k = Math.pow(10, -e),\n prefix = prefixes[8 + e / 3];\n return function (value) {\n return f(k * value) + prefix;\n };\n }\n\n return {\n format: newFormat,\n formatPrefix: formatPrefix\n };\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.FormatSpecifier = FormatSpecifier;\nexports.default = formatSpecifier;\n// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\nfunction formatSpecifier(specifier) {\n if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n var match;\n return new FormatSpecifier({\n fill: match[1],\n align: match[2],\n sign: match[3],\n symbol: match[4],\n zero: match[5],\n width: match[6],\n comma: match[7],\n precision: match[8] && match[8].slice(1),\n trim: match[9],\n type: match[10]\n });\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nfunction FormatSpecifier(specifier) {\n this.fill = specifier.fill === undefined ? \" \" : specifier.fill + \"\";\n this.align = specifier.align === undefined ? \">\" : specifier.align + \"\";\n this.sign = specifier.sign === undefined ? \"-\" : specifier.sign + \"\";\n this.symbol = specifier.symbol === undefined ? \"\" : specifier.symbol + \"\";\n this.zero = !!specifier.zero;\n this.width = specifier.width === undefined ? undefined : +specifier.width;\n this.comma = !!specifier.comma;\n this.precision = specifier.precision === undefined ? undefined : +specifier.precision;\n this.trim = !!specifier.trim;\n this.type = specifier.type === undefined ? \"\" : specifier.type + \"\";\n}\n\nFormatSpecifier.prototype.toString = function () {\n return this.fill + this.align + this.sign + this.symbol + (this.zero ? \"0\" : \"\") + (this.width === undefined ? \"\" : Math.max(1, this.width | 0)) + (this.comma ? \",\" : \"\") + (this.precision === undefined ? \"\" : \".\" + Math.max(0, this.precision | 0)) + (this.trim ? \"~\" : \"\") + this.type;\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = _default;\nexports.prefixExponent = void 0;\n\nvar _formatDecimal = require(\"./formatDecimal.js\");\n\nvar prefixExponent;\nexports.prefixExponent = prefixExponent;\n\nfunction _default(x, p) {\n var d = (0, _formatDecimal.formatDecimalParts)(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1],\n i = exponent - (exports.prefixExponent = prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n n = coefficient.length;\n return i === n ? coefficient : i > n ? coefficient + new Array(i - n + 1).join(\"0\") : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i) : \"0.\" + new Array(1 - i).join(\"0\") + (0, _formatDecimal.formatDecimalParts)(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = nice;\n\nfunction nice(domain, interval) {\n domain = domain.slice();\n var i0 = 0,\n i1 = domain.length - 1,\n x0 = domain[i0],\n x1 = domain[i1],\n t;\n\n if (x1 < x0) {\n t = i0, i0 = i1, i1 = t;\n t = x0, x0 = x1, x1 = t;\n }\n\n domain[i0] = interval.floor(x0);\n domain[i1] = interval.ceil(x1);\n return domain;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.calendar = calendar;\nexports.default = time;\n\nvar _index = require(\"../../../lib-vendor/d3-time/src/index.js\");\n\nvar _index2 = require(\"../../../lib-vendor/d3-time-format/src/index.js\");\n\nvar _continuous = _interopRequireWildcard(require(\"./continuous.js\"));\n\nvar _init = require(\"./init.js\");\n\nvar _nice = _interopRequireDefault(require(\"./nice.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction date(t) {\n return new Date(t);\n}\n\nfunction number(t) {\n return t instanceof Date ? +t : +new Date(+t);\n}\n\nfunction calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format) {\n var scale = (0, _continuous.default)(),\n invert = scale.invert,\n domain = scale.domain;\n var formatMillisecond = format(\".%L\"),\n formatSecond = format(\":%S\"),\n formatMinute = format(\"%I:%M\"),\n formatHour = format(\"%I %p\"),\n formatDay = format(\"%a %d\"),\n formatWeek = format(\"%b %d\"),\n formatMonth = format(\"%B\"),\n formatYear = format(\"%Y\");\n\n function tickFormat(date) {\n return (second(date) < date ? formatMillisecond : minute(date) < date ? formatSecond : hour(date) < date ? formatMinute : day(date) < date ? formatHour : month(date) < date ? week(date) < date ? formatDay : formatWeek : year(date) < date ? formatMonth : formatYear)(date);\n }\n\n scale.invert = function (y) {\n return new Date(invert(y));\n };\n\n scale.domain = function (_) {\n return arguments.length ? domain(Array.from(_, number)) : domain().map(date);\n };\n\n scale.ticks = function (interval) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], interval == null ? 10 : interval);\n };\n\n scale.tickFormat = function (count, specifier) {\n return specifier == null ? tickFormat : format(specifier);\n };\n\n scale.nice = function (interval) {\n var d = domain();\n if (!interval || typeof interval.range !== \"function\") interval = tickInterval(d[0], d[d.length - 1], interval == null ? 10 : interval);\n return interval ? domain((0, _nice.default)(d, interval)) : scale;\n };\n\n scale.copy = function () {\n return (0, _continuous.copy)(scale, calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format));\n };\n\n return scale;\n}\n\nfunction time() {\n return _init.initRange.apply(calendar(_index.timeTicks, _index.timeTickInterval, _index.timeYear, _index.timeMonth, _index.timeWeek, _index.timeDay, _index.timeHour, _index.timeMinute, _index.timeSecond, _index2.timeFormat).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]), arguments);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.milliseconds = exports.default = void 0;\n\nvar _interval = _interopRequireDefault(require(\"./interval.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar millisecond = (0, _interval.default)(function () {// noop\n}, function (date, step) {\n date.setTime(+date + step);\n}, function (start, end) {\n return end - start;\n}); // An optimized implementation for this simple case.\n\nmillisecond.every = function (k) {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return (0, _interval.default)(function (date) {\n date.setTime(Math.floor(date / k) * k);\n }, function (date, step) {\n date.setTime(+date + step * k);\n }, function (start, end) {\n return (end - start) / k;\n });\n};\n\nvar _default = millisecond;\nexports.default = _default;\nvar milliseconds = millisecond.range;\nexports.milliseconds = milliseconds;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.seconds = exports.default = void 0;\n\nvar _interval = _interopRequireDefault(require(\"./interval.js\"));\n\nvar _duration = require(\"./duration.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar second = (0, _interval.default)(function (date) {\n date.setTime(date - date.getMilliseconds());\n}, function (date, step) {\n date.setTime(+date + step * _duration.durationSecond);\n}, function (start, end) {\n return (end - start) / _duration.durationSecond;\n}, function (date) {\n return date.getUTCSeconds();\n});\nvar _default = second;\nexports.default = _default;\nvar seconds = second.range;\nexports.seconds = seconds;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.minutes = exports.default = void 0;\n\nvar _interval = _interopRequireDefault(require(\"./interval.js\"));\n\nvar _duration = require(\"./duration.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar minute = (0, _interval.default)(function (date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * _duration.durationSecond);\n}, function (date, step) {\n date.setTime(+date + step * _duration.durationMinute);\n}, function (start, end) {\n return (end - start) / _duration.durationMinute;\n}, function (date) {\n return date.getMinutes();\n});\nvar _default = minute;\nexports.default = _default;\nvar minutes = minute.range;\nexports.minutes = minutes;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.hours = exports.default = void 0;\n\nvar _interval = _interopRequireDefault(require(\"./interval.js\"));\n\nvar _duration = require(\"./duration.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar hour = (0, _interval.default)(function (date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * _duration.durationSecond - date.getMinutes() * _duration.durationMinute);\n}, function (date, step) {\n date.setTime(+date + step * _duration.durationHour);\n}, function (start, end) {\n return (end - start) / _duration.durationHour;\n}, function (date) {\n return date.getHours();\n});\nvar _default = hour;\nexports.default = _default;\nvar hours = hour.range;\nexports.hours = hours;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.days = void 0;\n\nvar _interval = _interopRequireDefault(require(\"./interval.js\"));\n\nvar _duration = require(\"./duration.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar day = (0, _interval.default)(date => date.setHours(0, 0, 0, 0), (date, step) => date.setDate(date.getDate() + step), (start, end) => (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * _duration.durationMinute) / _duration.durationDay, date => date.getDate() - 1);\nvar _default = day;\nexports.default = _default;\nvar days = day.range;\nexports.days = days;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.wednesdays = exports.wednesday = exports.tuesdays = exports.tuesday = exports.thursdays = exports.thursday = exports.sundays = exports.sunday = exports.saturdays = exports.saturday = exports.mondays = exports.monday = exports.fridays = exports.friday = void 0;\n\nvar _interval = _interopRequireDefault(require(\"./interval.js\"));\n\nvar _duration = require(\"./duration.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction weekday(i) {\n return (0, _interval.default)(function (date) {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, function (date, step) {\n date.setDate(date.getDate() + step * 7);\n }, function (start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * _duration.durationMinute) / _duration.durationWeek;\n });\n}\n\nvar sunday = weekday(0);\nexports.sunday = sunday;\nvar monday = weekday(1);\nexports.monday = monday;\nvar tuesday = weekday(2);\nexports.tuesday = tuesday;\nvar wednesday = weekday(3);\nexports.wednesday = wednesday;\nvar thursday = weekday(4);\nexports.thursday = thursday;\nvar friday = weekday(5);\nexports.friday = friday;\nvar saturday = weekday(6);\nexports.saturday = saturday;\nvar sundays = sunday.range;\nexports.sundays = sundays;\nvar mondays = monday.range;\nexports.mondays = mondays;\nvar tuesdays = tuesday.range;\nexports.tuesdays = tuesdays;\nvar wednesdays = wednesday.range;\nexports.wednesdays = wednesdays;\nvar thursdays = thursday.range;\nexports.thursdays = thursdays;\nvar fridays = friday.range;\nexports.fridays = fridays;\nvar saturdays = saturday.range;\nexports.saturdays = saturdays;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.months = exports.default = void 0;\n\nvar _interval = _interopRequireDefault(require(\"./interval.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar month = (0, _interval.default)(function (date) {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, function (date, step) {\n date.setMonth(date.getMonth() + step);\n}, function (start, end) {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, function (date) {\n return date.getMonth();\n});\nvar _default = month;\nexports.default = _default;\nvar months = month.range;\nexports.months = months;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.years = exports.default = void 0;\n\nvar _interval = _interopRequireDefault(require(\"./interval.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar year = (0, _interval.default)(function (date) {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, function (date, step) {\n date.setFullYear(date.getFullYear() + step);\n}, function (start, end) {\n return end.getFullYear() - start.getFullYear();\n}, function (date) {\n return date.getFullYear();\n}); // An optimized implementation for this simple case.\n\nyear.every = function (k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : (0, _interval.default)(function (date) {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, function (date, step) {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nvar _default = year;\nexports.default = _default;\nvar years = year.range;\nexports.years = years;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.utcMinutes = exports.default = void 0;\n\nvar _interval = _interopRequireDefault(require(\"./interval.js\"));\n\nvar _duration = require(\"./duration.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar utcMinute = (0, _interval.default)(function (date) {\n date.setUTCSeconds(0, 0);\n}, function (date, step) {\n date.setTime(+date + step * _duration.durationMinute);\n}, function (start, end) {\n return (end - start) / _duration.durationMinute;\n}, function (date) {\n return date.getUTCMinutes();\n});\nvar _default = utcMinute;\nexports.default = _default;\nvar utcMinutes = utcMinute.range;\nexports.utcMinutes = utcMinutes;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.utcHours = exports.default = void 0;\n\nvar _interval = _interopRequireDefault(require(\"./interval.js\"));\n\nvar _duration = require(\"./duration.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar utcHour = (0, _interval.default)(function (date) {\n date.setUTCMinutes(0, 0, 0);\n}, function (date, step) {\n date.setTime(+date + step * _duration.durationHour);\n}, function (start, end) {\n return (end - start) / _duration.durationHour;\n}, function (date) {\n return date.getUTCHours();\n});\nvar _default = utcHour;\nexports.default = _default;\nvar utcHours = utcHour.range;\nexports.utcHours = utcHours;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.utcDays = exports.default = void 0;\n\nvar _interval = _interopRequireDefault(require(\"./interval.js\"));\n\nvar _duration = require(\"./duration.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar utcDay = (0, _interval.default)(function (date) {\n date.setUTCHours(0, 0, 0, 0);\n}, function (date, step) {\n date.setUTCDate(date.getUTCDate() + step);\n}, function (start, end) {\n return (end - start) / _duration.durationDay;\n}, function (date) {\n return date.getUTCDate() - 1;\n});\nvar _default = utcDay;\nexports.default = _default;\nvar utcDays = utcDay.range;\nexports.utcDays = utcDays;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.utcWednesdays = exports.utcWednesday = exports.utcTuesdays = exports.utcTuesday = exports.utcThursdays = exports.utcThursday = exports.utcSundays = exports.utcSunday = exports.utcSaturdays = exports.utcSaturday = exports.utcMondays = exports.utcMonday = exports.utcFridays = exports.utcFriday = void 0;\n\nvar _interval = _interopRequireDefault(require(\"./interval.js\"));\n\nvar _duration = require(\"./duration.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction utcWeekday(i) {\n return (0, _interval.default)(function (date) {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, function (date, step) {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, function (start, end) {\n return (end - start) / _duration.durationWeek;\n });\n}\n\nvar utcSunday = utcWeekday(0);\nexports.utcSunday = utcSunday;\nvar utcMonday = utcWeekday(1);\nexports.utcMonday = utcMonday;\nvar utcTuesday = utcWeekday(2);\nexports.utcTuesday = utcTuesday;\nvar utcWednesday = utcWeekday(3);\nexports.utcWednesday = utcWednesday;\nvar utcThursday = utcWeekday(4);\nexports.utcThursday = utcThursday;\nvar utcFriday = utcWeekday(5);\nexports.utcFriday = utcFriday;\nvar utcSaturday = utcWeekday(6);\nexports.utcSaturday = utcSaturday;\nvar utcSundays = utcSunday.range;\nexports.utcSundays = utcSundays;\nvar utcMondays = utcMonday.range;\nexports.utcMondays = utcMondays;\nvar utcTuesdays = utcTuesday.range;\nexports.utcTuesdays = utcTuesdays;\nvar utcWednesdays = utcWednesday.range;\nexports.utcWednesdays = utcWednesdays;\nvar utcThursdays = utcThursday.range;\nexports.utcThursdays = utcThursdays;\nvar utcFridays = utcFriday.range;\nexports.utcFridays = utcFridays;\nvar utcSaturdays = utcSaturday.range;\nexports.utcSaturdays = utcSaturdays;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.utcMonths = exports.default = void 0;\n\nvar _interval = _interopRequireDefault(require(\"./interval.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar utcMonth = (0, _interval.default)(function (date) {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n}, function (date, step) {\n date.setUTCMonth(date.getUTCMonth() + step);\n}, function (start, end) {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, function (date) {\n return date.getUTCMonth();\n});\nvar _default = utcMonth;\nexports.default = _default;\nvar utcMonths = utcMonth.range;\nexports.utcMonths = utcMonths;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.utcYears = exports.default = void 0;\n\nvar _interval = _interopRequireDefault(require(\"./interval.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar utcYear = (0, _interval.default)(function (date) {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, function (date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, function (start, end) {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, function (date) {\n return date.getUTCFullYear();\n}); // An optimized implementation for this simple case.\n\nutcYear.every = function (k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : (0, _interval.default)(function (date) {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, function (date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nvar _default = utcYear;\nexports.default = _default;\nvar utcYears = utcYear.range;\nexports.utcYears = utcYears;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"isoFormat\", {\n enumerable: true,\n get: function () {\n return _isoFormat.default;\n }\n});\nObject.defineProperty(exports, \"isoParse\", {\n enumerable: true,\n get: function () {\n return _isoParse.default;\n }\n});\nObject.defineProperty(exports, \"timeFormat\", {\n enumerable: true,\n get: function () {\n return _defaultLocale.timeFormat;\n }\n});\nObject.defineProperty(exports, \"timeFormatDefaultLocale\", {\n enumerable: true,\n get: function () {\n return _defaultLocale.default;\n }\n});\nObject.defineProperty(exports, \"timeFormatLocale\", {\n enumerable: true,\n get: function () {\n return _locale.default;\n }\n});\nObject.defineProperty(exports, \"timeParse\", {\n enumerable: true,\n get: function () {\n return _defaultLocale.timeParse;\n }\n});\nObject.defineProperty(exports, \"utcFormat\", {\n enumerable: true,\n get: function () {\n return _defaultLocale.utcFormat;\n }\n});\nObject.defineProperty(exports, \"utcParse\", {\n enumerable: true,\n get: function () {\n return _defaultLocale.utcParse;\n }\n});\n\nvar _defaultLocale = _interopRequireWildcard(require(\"./defaultLocale.js\"));\n\nvar _locale = _interopRequireDefault(require(\"./locale.js\"));\n\nvar _isoFormat = _interopRequireDefault(require(\"./isoFormat.js\"));\n\nvar _isoParse = _interopRequireDefault(require(\"./isoParse.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = formatLocale;\n\nvar _index = require(\"../../../lib-vendor/d3-time/src/index.js\");\n\nfunction localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newDate(y, m, d) {\n return {\n y: y,\n m: m,\n d: d,\n H: 0,\n M: 0,\n S: 0,\n L: 0\n };\n}\n\nfunction formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"f\": formatMicroseconds,\n \"g\": formatYearISO,\n \"G\": formatFullYearISO,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"q\": formatQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatSeconds,\n \"u\": formatWeekdayNumberMonday,\n \"U\": formatWeekNumberSunday,\n \"V\": formatWeekNumberISO,\n \"w\": formatWeekdayNumberSunday,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"f\": formatUTCMicroseconds,\n \"g\": formatUTCYearISO,\n \"G\": formatUTCFullYearISO,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"q\": formatUTCQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatUTCSeconds,\n \"u\": formatUTCWeekdayNumberMonday,\n \"U\": formatUTCWeekNumberSunday,\n \"V\": formatUTCWeekNumberISO,\n \"w\": formatUTCWeekdayNumberSunday,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"f\": parseMicroseconds,\n \"g\": parseYear,\n \"G\": parseFullYear,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"q\": parseQuarter,\n \"Q\": parseUnixTimestamp,\n \"s\": parseUnixTimestampSeconds,\n \"S\": parseSeconds,\n \"u\": parseWeekdayNumberMonday,\n \"U\": parseWeekNumberSunday,\n \"V\": parseWeekNumberISO,\n \"w\": parseWeekdayNumberSunday,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n }; // These recursive directive definitions must be deferred.\n\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n function newFormat(specifier, formats) {\n return function (date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n if (!(date instanceof Date)) date = new Date(+date);\n\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n\n function newParse(specifier, Z) {\n return function (string) {\n var d = newDate(1900, undefined, 1),\n i = parseSpecifier(d, specifier, string += \"\", 0),\n week,\n day;\n if (i != string.length) return null; // If a UNIX timestamp is specified, return it.\n\n if (\"Q\" in d) return new Date(d.Q);\n if (\"s\" in d) return new Date(d.s * 1000 + (\"L\" in d ? d.L : 0)); // If this is utcParse, never use the local timezone.\n\n if (Z && !(\"Z\" in d)) d.Z = 0; // The am-pm flag is 0 for AM, and 1 for PM.\n\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12; // If the month was not specified, inherit from the quarter.\n\n if (d.m === undefined) d.m = \"q\" in d ? d.q : 0; // Convert day-of-week and week-of-year to day-of-year.\n\n if (\"V\" in d) {\n if (d.V < 1 || d.V > 53) return null;\n if (!(\"w\" in d)) d.w = 1;\n\n if (\"Z\" in d) {\n week = utcDate(newDate(d.y, 0, 1)), day = week.getUTCDay();\n week = day > 4 || day === 0 ? _index.utcMonday.ceil(week) : (0, _index.utcMonday)(week);\n week = _index.utcDay.offset(week, (d.V - 1) * 7);\n d.y = week.getUTCFullYear();\n d.m = week.getUTCMonth();\n d.d = week.getUTCDate() + (d.w + 6) % 7;\n } else {\n week = localDate(newDate(d.y, 0, 1)), day = week.getDay();\n week = day > 4 || day === 0 ? _index.timeMonday.ceil(week) : (0, _index.timeMonday)(week);\n week = _index.timeDay.offset(week, (d.V - 1) * 7);\n d.y = week.getFullYear();\n d.m = week.getMonth();\n d.d = week.getDate() + (d.w + 6) % 7;\n }\n } else if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"u\" in d ? d.u % 7 : \"W\" in d ? 1 : 0;\n day = \"Z\" in d ? utcDate(newDate(d.y, 0, 1)).getUTCDay() : localDate(newDate(d.y, 0, 1)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n } // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n\n\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n } // Otherwise, all fields are in local time.\n\n\n return localDate(d);\n };\n }\n\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || (j = parse(d, string, j)) < 0) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n\n return j;\n }\n\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n\n function formatQuarter(d) {\n return 1 + ~~(d.getMonth() / 3);\n }\n\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n\n function formatUTCQuarter(d) {\n return 1 + ~~(d.getUTCMonth() / 3);\n }\n\n return {\n format: function (specifier) {\n var f = newFormat(specifier += \"\", formats);\n\n f.toString = function () {\n return specifier;\n };\n\n return f;\n },\n parse: function (specifier) {\n var p = newParse(specifier += \"\", false);\n\n p.toString = function () {\n return specifier;\n };\n\n return p;\n },\n utcFormat: function (specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n\n f.toString = function () {\n return specifier;\n };\n\n return f;\n },\n utcParse: function (specifier) {\n var p = newParse(specifier += \"\", true);\n\n p.toString = function () {\n return specifier;\n };\n\n return p;\n }\n };\n}\n\nvar pads = {\n \"-\": \"\",\n \"_\": \" \",\n \"0\": \"0\"\n},\n numberRe = /^\\s*\\d+/,\n // note: ignores next directive\npercentRe = /^%/,\n requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\n\nfunction pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n return new Map(names.map((name, i) => [name.toLowerCase(), i]));\n}\n\nfunction parseWeekdayNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekdayNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.u = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberISO(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.V = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseQuarter(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.q = n[0] * 3 - 3, i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMicroseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 6));\n return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n}\n\nfunction parseUnixTimestamp(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseUnixTimestampSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.s = +n[0], i + n[0].length) : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n return pad(1 + _index.timeDay.count((0, _index.timeYear)(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMicroseconds(d, p) {\n return formatMilliseconds(d, p) + \"000\";\n}\n\nfunction formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekdayNumberMonday(d) {\n var day = d.getDay();\n return day === 0 ? 7 : day;\n}\n\nfunction formatWeekNumberSunday(d, p) {\n return pad(_index.timeSunday.count((0, _index.timeYear)(d) - 1, d), p, 2);\n}\n\nfunction dISO(d) {\n var day = d.getDay();\n return day >= 4 || day === 0 ? (0, _index.timeThursday)(d) : _index.timeThursday.ceil(d);\n}\n\nfunction formatWeekNumberISO(d, p) {\n d = dISO(d);\n return pad(_index.timeThursday.count((0, _index.timeYear)(d), d) + ((0, _index.timeYear)(d).getDay() === 4), p, 2);\n}\n\nfunction formatWeekdayNumberSunday(d) {\n return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n return pad(_index.timeMonday.count((0, _index.timeYear)(d) - 1, d), p, 2);\n}\n\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatYearISO(d, p) {\n d = dISO(d);\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatFullYearISO(d, p) {\n var day = d.getDay();\n d = day >= 4 || day === 0 ? (0, _index.timeThursday)(d) : _index.timeThursday.ceil(d);\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\")) + pad(z / 60 | 0, \"0\", 2) + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n return pad(1 + _index.utcDay.count((0, _index.utcYear)(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMicroseconds(d, p) {\n return formatUTCMilliseconds(d, p) + \"000\";\n}\n\nfunction formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekdayNumberMonday(d) {\n var dow = d.getUTCDay();\n return dow === 0 ? 7 : dow;\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n return pad(_index.utcSunday.count((0, _index.utcYear)(d) - 1, d), p, 2);\n}\n\nfunction UTCdISO(d) {\n var day = d.getUTCDay();\n return day >= 4 || day === 0 ? (0, _index.utcThursday)(d) : _index.utcThursday.ceil(d);\n}\n\nfunction formatUTCWeekNumberISO(d, p) {\n d = UTCdISO(d);\n return pad(_index.utcThursday.count((0, _index.utcYear)(d), d) + ((0, _index.utcYear)(d).getUTCDay() === 4), p, 2);\n}\n\nfunction formatUTCWeekdayNumberSunday(d) {\n return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n return pad(_index.utcMonday.count((0, _index.utcYear)(d) - 1, d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCYearISO(d, p) {\n d = UTCdISO(d);\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCFullYearISO(d, p) {\n var day = d.getUTCDay();\n d = day >= 4 || day === 0 ? (0, _index.utcThursday)(d) : _index.utcThursday.ceil(d);\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n return \"%\";\n}\n\nfunction formatUnixTimestamp(d) {\n return +d;\n}\n\nfunction formatUnixTimestampSeconds(d) {\n return Math.floor(+d / 1000);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.isoSpecifier = exports.default = void 0;\n\nvar _defaultLocale = require(\"./defaultLocale.js\");\n\nvar isoSpecifier = \"%Y-%m-%dT%H:%M:%S.%LZ\";\nexports.isoSpecifier = isoSpecifier;\n\nfunction formatIsoNative(date) {\n return date.toISOString();\n}\n\nvar formatIso = Date.prototype.toISOString ? formatIsoNative : (0, _defaultLocale.utcFormat)(isoSpecifier);\nvar _default = formatIso;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.copy = copy;\nexports.default = sequential;\nexports.sequentialLog = sequentialLog;\nexports.sequentialPow = sequentialPow;\nexports.sequentialSqrt = sequentialSqrt;\nexports.sequentialSymlog = sequentialSymlog;\n\nvar _index = require(\"../../../lib-vendor/d3-interpolate/src/index.js\");\n\nvar _continuous = require(\"./continuous.js\");\n\nvar _init = require(\"./init.js\");\n\nvar _linear = require(\"./linear.js\");\n\nvar _log = require(\"./log.js\");\n\nvar _symlog = require(\"./symlog.js\");\n\nvar _pow = require(\"./pow.js\");\n\nfunction transformer() {\n var x0 = 0,\n x1 = 1,\n t0,\n t1,\n k10,\n transform,\n interpolator = _continuous.identity,\n clamp = false,\n unknown;\n\n function scale(x) {\n return x == null || isNaN(x = +x) ? unknown : interpolator(k10 === 0 ? 0.5 : (x = (transform(x) - t0) * k10, clamp ? Math.max(0, Math.min(1, x)) : x));\n }\n\n scale.domain = function (_) {\n return arguments.length ? ([x0, x1] = _, t0 = transform(x0 = +x0), t1 = transform(x1 = +x1), k10 = t0 === t1 ? 0 : 1 / (t1 - t0), scale) : [x0, x1];\n };\n\n scale.clamp = function (_) {\n return arguments.length ? (clamp = !!_, scale) : clamp;\n };\n\n scale.interpolator = function (_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n\n function range(interpolate) {\n return function (_) {\n var r0, r1;\n return arguments.length ? ([r0, r1] = _, interpolator = interpolate(r0, r1), scale) : [interpolator(0), interpolator(1)];\n };\n }\n\n scale.range = range(_index.interpolate);\n scale.rangeRound = range(_index.interpolateRound);\n\n scale.unknown = function (_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function (t) {\n transform = t, t0 = t(x0), t1 = t(x1), k10 = t0 === t1 ? 0 : 1 / (t1 - t0);\n return scale;\n };\n}\n\nfunction copy(source, target) {\n return target.domain(source.domain()).interpolator(source.interpolator()).clamp(source.clamp()).unknown(source.unknown());\n}\n\nfunction sequential() {\n var scale = (0, _linear.linearish)(transformer()(_continuous.identity));\n\n scale.copy = function () {\n return copy(scale, sequential());\n };\n\n return _init.initInterpolator.apply(scale, arguments);\n}\n\nfunction sequentialLog() {\n var scale = (0, _log.loggish)(transformer()).domain([1, 10]);\n\n scale.copy = function () {\n return copy(scale, sequentialLog()).base(scale.base());\n };\n\n return _init.initInterpolator.apply(scale, arguments);\n}\n\nfunction sequentialSymlog() {\n var scale = (0, _symlog.symlogish)(transformer());\n\n scale.copy = function () {\n return copy(scale, sequentialSymlog()).constant(scale.constant());\n };\n\n return _init.initInterpolator.apply(scale, arguments);\n}\n\nfunction sequentialPow() {\n var scale = (0, _pow.powish)(transformer());\n\n scale.copy = function () {\n return copy(scale, sequentialPow()).exponent(scale.exponent());\n };\n\n return _init.initInterpolator.apply(scale, arguments);\n}\n\nfunction sequentialSqrt() {\n return sequentialPow.apply(null, arguments).exponent(0.5);\n}","/**\n * The base implementation of `_.gt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n */\nfunction baseGt(value, other) {\n return value > other;\n}\n\nmodule.exports = baseGt;\n","/**\n * The base implementation of `_.lt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n */\nfunction baseLt(value, other) {\n return value < other;\n}\n\nmodule.exports = baseLt;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","import { getWindow } from './dom/getWindow';\n\n/**\n * Storing global state in local module variables has issues when more than one copy\n * if the module gets loaded on the page (due to a bundling error or simply by consuming\n * a prebundled script.)\n *\n * This file contains helpers to deal with the getting and setting local state, and allows\n * callers to get called back when it mutates.\n */\n\nconst GLOBAL_SETTINGS_PROP_NAME = '__globalSettings__';\nconst CALLBACK_STATE_PROP_NAME = '__callbacks__';\n\nlet _counter = 0;\n\n/**\n * Change description used for change callbacks in GlobalSettings.\n *\n * @public\n * {@docCategory IChangeDescription}\n */\nexport interface IChangeDescription {\n key: string;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n oldValue: any;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n value: any;\n}\n\n/**\n * Change event callback.\n *\n * @public\n * {@docCategory IChangeEventCallback}\n */\nexport interface IChangeEventCallback {\n __id__?: string;\n (changeDescription?: IChangeDescription): void;\n}\n\n/**\n * Global settings helper, which stores settings in the global (window) namespace.\n * If window is not provided, it will store settings in module scope. Provides a\n * way to observe changes as well when their values change.\n *\n * @public\n * {@docCategory GlobalSettings}\n */\nexport class GlobalSettings {\n public static getValue<T>(key: string, defaultValue?: T | (() => T)): T {\n const globalSettings = _getGlobalSettings();\n\n if (globalSettings[key] === undefined) {\n globalSettings[key] = typeof defaultValue === 'function' ? (defaultValue as Function)() : defaultValue;\n }\n\n return globalSettings[key];\n }\n\n public static setValue<T>(key: string, value: T): T {\n const globalSettings = _getGlobalSettings();\n const callbacks = globalSettings[CALLBACK_STATE_PROP_NAME];\n let oldValue = globalSettings[key];\n\n if (value !== oldValue) {\n globalSettings[key] = value;\n\n let changeDescription = {\n oldValue,\n value,\n key,\n };\n\n for (let id in callbacks) {\n if (callbacks.hasOwnProperty(id)) {\n callbacks[id](changeDescription);\n }\n }\n }\n\n return value;\n }\n\n public static addChangeListener(cb: IChangeEventCallback): void {\n // Note: we use generated ids on the callbacks to create a map of the callbacks, which optimizes removal.\n // (It's faster to delete a key than it is to look up the index of an object and splice an array.)\n let id = cb.__id__;\n const callbacks = _getCallbacks();\n\n if (!id) {\n id = cb.__id__ = String(_counter++);\n }\n\n callbacks[id] = cb;\n }\n\n public static removeChangeListener(cb: IChangeEventCallback): void {\n const callbacks = _getCallbacks();\n delete callbacks[cb.__id__ as string];\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _getGlobalSettings(): { [key: string]: any } {\n const win = getWindow();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const globalObj: { [key: string]: any } = win || {};\n\n if (!globalObj[GLOBAL_SETTINGS_PROP_NAME]) {\n globalObj[GLOBAL_SETTINGS_PROP_NAME] = {\n [CALLBACK_STATE_PROP_NAME]: {},\n };\n }\n\n return globalObj[GLOBAL_SETTINGS_PROP_NAME];\n}\n\nfunction _getCallbacks(): { [key: string]: () => void } {\n const globalSettings = _getGlobalSettings();\n return globalSettings[CALLBACK_STATE_PROP_NAME];\n}\n","//\n\nmodule.exports = function shallowEqual(objA, objB, compare, compareContext) {\n var ret = compare ? compare.call(compareContext, objA, objB) : void 0;\n\n if (ret !== void 0) {\n return !!ret;\n }\n\n if (objA === objB) {\n return true;\n }\n\n if (typeof objA !== \"object\" || !objA || typeof objB !== \"object\" || !objB) {\n return false;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n\n if (keysA.length !== keysB.length) {\n return false;\n }\n\n var bHasOwnProperty = Object.prototype.hasOwnProperty.bind(objB);\n\n // Test for A's keys different from B.\n for (var idx = 0; idx < keysA.length; idx++) {\n var key = keysA[idx];\n\n if (!bHasOwnProperty(key)) {\n return false;\n }\n\n var valueA = objA[key];\n var valueB = objB[key];\n\n ret = compare ? compare.call(compareContext, valueA, valueB, key) : void 0;\n\n if (ret === false || (ret === void 0 && valueA !== valueB)) {\n return false;\n }\n }\n\n return true;\n};\n","function stylis_min (W) {\n function M(d, c, e, h, a) {\n for (var m = 0, b = 0, v = 0, n = 0, q, g, x = 0, K = 0, k, u = k = q = 0, l = 0, r = 0, I = 0, t = 0, B = e.length, J = B - 1, y, f = '', p = '', F = '', G = '', C; l < B;) {\n g = e.charCodeAt(l);\n l === J && 0 !== b + n + v + m && (0 !== b && (g = 47 === b ? 10 : 47), n = v = m = 0, B++, J++);\n\n if (0 === b + n + v + m) {\n if (l === J && (0 < r && (f = f.replace(N, '')), 0 < f.trim().length)) {\n switch (g) {\n case 32:\n case 9:\n case 59:\n case 13:\n case 10:\n break;\n\n default:\n f += e.charAt(l);\n }\n\n g = 59;\n }\n\n switch (g) {\n case 123:\n f = f.trim();\n q = f.charCodeAt(0);\n k = 1;\n\n for (t = ++l; l < B;) {\n switch (g = e.charCodeAt(l)) {\n case 123:\n k++;\n break;\n\n case 125:\n k--;\n break;\n\n case 47:\n switch (g = e.charCodeAt(l + 1)) {\n case 42:\n case 47:\n a: {\n for (u = l + 1; u < J; ++u) {\n switch (e.charCodeAt(u)) {\n case 47:\n if (42 === g && 42 === e.charCodeAt(u - 1) && l + 2 !== u) {\n l = u + 1;\n break a;\n }\n\n break;\n\n case 10:\n if (47 === g) {\n l = u + 1;\n break a;\n }\n\n }\n }\n\n l = u;\n }\n\n }\n\n break;\n\n case 91:\n g++;\n\n case 40:\n g++;\n\n case 34:\n case 39:\n for (; l++ < J && e.charCodeAt(l) !== g;) {\n }\n\n }\n\n if (0 === k) break;\n l++;\n }\n\n k = e.substring(t, l);\n 0 === q && (q = (f = f.replace(ca, '').trim()).charCodeAt(0));\n\n switch (q) {\n case 64:\n 0 < r && (f = f.replace(N, ''));\n g = f.charCodeAt(1);\n\n switch (g) {\n case 100:\n case 109:\n case 115:\n case 45:\n r = c;\n break;\n\n default:\n r = O;\n }\n\n k = M(c, r, k, g, a + 1);\n t = k.length;\n 0 < A && (r = X(O, f, I), C = H(3, k, r, c, D, z, t, g, a, h), f = r.join(''), void 0 !== C && 0 === (t = (k = C.trim()).length) && (g = 0, k = ''));\n if (0 < t) switch (g) {\n case 115:\n f = f.replace(da, ea);\n\n case 100:\n case 109:\n case 45:\n k = f + '{' + k + '}';\n break;\n\n case 107:\n f = f.replace(fa, '$1 $2');\n k = f + '{' + k + '}';\n k = 1 === w || 2 === w && L('@' + k, 3) ? '@-webkit-' + k + '@' + k : '@' + k;\n break;\n\n default:\n k = f + k, 112 === h && (k = (p += k, ''));\n } else k = '';\n break;\n\n default:\n k = M(c, X(c, f, I), k, h, a + 1);\n }\n\n F += k;\n k = I = r = u = q = 0;\n f = '';\n g = e.charCodeAt(++l);\n break;\n\n case 125:\n case 59:\n f = (0 < r ? f.replace(N, '') : f).trim();\n if (1 < (t = f.length)) switch (0 === u && (q = f.charCodeAt(0), 45 === q || 96 < q && 123 > q) && (t = (f = f.replace(' ', ':')).length), 0 < A && void 0 !== (C = H(1, f, c, d, D, z, p.length, h, a, h)) && 0 === (t = (f = C.trim()).length) && (f = '\\x00\\x00'), q = f.charCodeAt(0), g = f.charCodeAt(1), q) {\n case 0:\n break;\n\n case 64:\n if (105 === g || 99 === g) {\n G += f + e.charAt(l);\n break;\n }\n\n default:\n 58 !== f.charCodeAt(t - 1) && (p += P(f, q, g, f.charCodeAt(2)));\n }\n I = r = u = q = 0;\n f = '';\n g = e.charCodeAt(++l);\n }\n }\n\n switch (g) {\n case 13:\n case 10:\n 47 === b ? b = 0 : 0 === 1 + q && 107 !== h && 0 < f.length && (r = 1, f += '\\x00');\n 0 < A * Y && H(0, f, c, d, D, z, p.length, h, a, h);\n z = 1;\n D++;\n break;\n\n case 59:\n case 125:\n if (0 === b + n + v + m) {\n z++;\n break;\n }\n\n default:\n z++;\n y = e.charAt(l);\n\n switch (g) {\n case 9:\n case 32:\n if (0 === n + m + b) switch (x) {\n case 44:\n case 58:\n case 9:\n case 32:\n y = '';\n break;\n\n default:\n 32 !== g && (y = ' ');\n }\n break;\n\n case 0:\n y = '\\\\0';\n break;\n\n case 12:\n y = '\\\\f';\n break;\n\n case 11:\n y = '\\\\v';\n break;\n\n case 38:\n 0 === n + b + m && (r = I = 1, y = '\\f' + y);\n break;\n\n case 108:\n if (0 === n + b + m + E && 0 < u) switch (l - u) {\n case 2:\n 112 === x && 58 === e.charCodeAt(l - 3) && (E = x);\n\n case 8:\n 111 === K && (E = K);\n }\n break;\n\n case 58:\n 0 === n + b + m && (u = l);\n break;\n\n case 44:\n 0 === b + v + n + m && (r = 1, y += '\\r');\n break;\n\n case 34:\n case 39:\n 0 === b && (n = n === g ? 0 : 0 === n ? g : n);\n break;\n\n case 91:\n 0 === n + b + v && m++;\n break;\n\n case 93:\n 0 === n + b + v && m--;\n break;\n\n case 41:\n 0 === n + b + m && v--;\n break;\n\n case 40:\n if (0 === n + b + m) {\n if (0 === q) switch (2 * x + 3 * K) {\n case 533:\n break;\n\n default:\n q = 1;\n }\n v++;\n }\n\n break;\n\n case 64:\n 0 === b + v + n + m + u + k && (k = 1);\n break;\n\n case 42:\n case 47:\n if (!(0 < n + m + v)) switch (b) {\n case 0:\n switch (2 * g + 3 * e.charCodeAt(l + 1)) {\n case 235:\n b = 47;\n break;\n\n case 220:\n t = l, b = 42;\n }\n\n break;\n\n case 42:\n 47 === g && 42 === x && t + 2 !== l && (33 === e.charCodeAt(t + 2) && (p += e.substring(t, l + 1)), y = '', b = 0);\n }\n }\n\n 0 === b && (f += y);\n }\n\n K = x;\n x = g;\n l++;\n }\n\n t = p.length;\n\n if (0 < t) {\n r = c;\n if (0 < A && (C = H(2, p, r, d, D, z, t, h, a, h), void 0 !== C && 0 === (p = C).length)) return G + p + F;\n p = r.join(',') + '{' + p + '}';\n\n if (0 !== w * E) {\n 2 !== w || L(p, 2) || (E = 0);\n\n switch (E) {\n case 111:\n p = p.replace(ha, ':-moz-$1') + p;\n break;\n\n case 112:\n p = p.replace(Q, '::-webkit-input-$1') + p.replace(Q, '::-moz-$1') + p.replace(Q, ':-ms-input-$1') + p;\n }\n\n E = 0;\n }\n }\n\n return G + p + F;\n }\n\n function X(d, c, e) {\n var h = c.trim().split(ia);\n c = h;\n var a = h.length,\n m = d.length;\n\n switch (m) {\n case 0:\n case 1:\n var b = 0;\n\n for (d = 0 === m ? '' : d[0] + ' '; b < a; ++b) {\n c[b] = Z(d, c[b], e).trim();\n }\n\n break;\n\n default:\n var v = b = 0;\n\n for (c = []; b < a; ++b) {\n for (var n = 0; n < m; ++n) {\n c[v++] = Z(d[n] + ' ', h[b], e).trim();\n }\n }\n\n }\n\n return c;\n }\n\n function Z(d, c, e) {\n var h = c.charCodeAt(0);\n 33 > h && (h = (c = c.trim()).charCodeAt(0));\n\n switch (h) {\n case 38:\n return c.replace(F, '$1' + d.trim());\n\n case 58:\n return d.trim() + c.replace(F, '$1' + d.trim());\n\n default:\n if (0 < 1 * e && 0 < c.indexOf('\\f')) return c.replace(F, (58 === d.charCodeAt(0) ? '' : '$1') + d.trim());\n }\n\n return d + c;\n }\n\n function P(d, c, e, h) {\n var a = d + ';',\n m = 2 * c + 3 * e + 4 * h;\n\n if (944 === m) {\n d = a.indexOf(':', 9) + 1;\n var b = a.substring(d, a.length - 1).trim();\n b = a.substring(0, d).trim() + b + ';';\n return 1 === w || 2 === w && L(b, 1) ? '-webkit-' + b + b : b;\n }\n\n if (0 === w || 2 === w && !L(a, 1)) return a;\n\n switch (m) {\n case 1015:\n return 97 === a.charCodeAt(10) ? '-webkit-' + a + a : a;\n\n case 951:\n return 116 === a.charCodeAt(3) ? '-webkit-' + a + a : a;\n\n case 963:\n return 110 === a.charCodeAt(5) ? '-webkit-' + a + a : a;\n\n case 1009:\n if (100 !== a.charCodeAt(4)) break;\n\n case 969:\n case 942:\n return '-webkit-' + a + a;\n\n case 978:\n return '-webkit-' + a + '-moz-' + a + a;\n\n case 1019:\n case 983:\n return '-webkit-' + a + '-moz-' + a + '-ms-' + a + a;\n\n case 883:\n if (45 === a.charCodeAt(8)) return '-webkit-' + a + a;\n if (0 < a.indexOf('image-set(', 11)) return a.replace(ja, '$1-webkit-$2') + a;\n break;\n\n case 932:\n if (45 === a.charCodeAt(4)) switch (a.charCodeAt(5)) {\n case 103:\n return '-webkit-box-' + a.replace('-grow', '') + '-webkit-' + a + '-ms-' + a.replace('grow', 'positive') + a;\n\n case 115:\n return '-webkit-' + a + '-ms-' + a.replace('shrink', 'negative') + a;\n\n case 98:\n return '-webkit-' + a + '-ms-' + a.replace('basis', 'preferred-size') + a;\n }\n return '-webkit-' + a + '-ms-' + a + a;\n\n case 964:\n return '-webkit-' + a + '-ms-flex-' + a + a;\n\n case 1023:\n if (99 !== a.charCodeAt(8)) break;\n b = a.substring(a.indexOf(':', 15)).replace('flex-', '').replace('space-between', 'justify');\n return '-webkit-box-pack' + b + '-webkit-' + a + '-ms-flex-pack' + b + a;\n\n case 1005:\n return ka.test(a) ? a.replace(aa, ':-webkit-') + a.replace(aa, ':-moz-') + a : a;\n\n case 1e3:\n b = a.substring(13).trim();\n c = b.indexOf('-') + 1;\n\n switch (b.charCodeAt(0) + b.charCodeAt(c)) {\n case 226:\n b = a.replace(G, 'tb');\n break;\n\n case 232:\n b = a.replace(G, 'tb-rl');\n break;\n\n case 220:\n b = a.replace(G, 'lr');\n break;\n\n default:\n return a;\n }\n\n return '-webkit-' + a + '-ms-' + b + a;\n\n case 1017:\n if (-1 === a.indexOf('sticky', 9)) break;\n\n case 975:\n c = (a = d).length - 10;\n b = (33 === a.charCodeAt(c) ? a.substring(0, c) : a).substring(d.indexOf(':', 7) + 1).trim();\n\n switch (m = b.charCodeAt(0) + (b.charCodeAt(7) | 0)) {\n case 203:\n if (111 > b.charCodeAt(8)) break;\n\n case 115:\n a = a.replace(b, '-webkit-' + b) + ';' + a;\n break;\n\n case 207:\n case 102:\n a = a.replace(b, '-webkit-' + (102 < m ? 'inline-' : '') + 'box') + ';' + a.replace(b, '-webkit-' + b) + ';' + a.replace(b, '-ms-' + b + 'box') + ';' + a;\n }\n\n return a + ';';\n\n case 938:\n if (45 === a.charCodeAt(5)) switch (a.charCodeAt(6)) {\n case 105:\n return b = a.replace('-items', ''), '-webkit-' + a + '-webkit-box-' + b + '-ms-flex-' + b + a;\n\n case 115:\n return '-webkit-' + a + '-ms-flex-item-' + a.replace(ba, '') + a;\n\n default:\n return '-webkit-' + a + '-ms-flex-line-pack' + a.replace('align-content', '').replace(ba, '') + a;\n }\n break;\n\n case 973:\n case 989:\n if (45 !== a.charCodeAt(3) || 122 === a.charCodeAt(4)) break;\n\n case 931:\n case 953:\n if (!0 === la.test(d)) return 115 === (b = d.substring(d.indexOf(':') + 1)).charCodeAt(0) ? P(d.replace('stretch', 'fill-available'), c, e, h).replace(':fill-available', ':stretch') : a.replace(b, '-webkit-' + b) + a.replace(b, '-moz-' + b.replace('fill-', '')) + a;\n break;\n\n case 962:\n if (a = '-webkit-' + a + (102 === a.charCodeAt(5) ? '-ms-' + a : '') + a, 211 === e + h && 105 === a.charCodeAt(13) && 0 < a.indexOf('transform', 10)) return a.substring(0, a.indexOf(';', 27) + 1).replace(ma, '$1-webkit-$2') + a;\n }\n\n return a;\n }\n\n function L(d, c) {\n var e = d.indexOf(1 === c ? ':' : '{'),\n h = d.substring(0, 3 !== c ? e : 10);\n e = d.substring(e + 1, d.length - 1);\n return R(2 !== c ? h : h.replace(na, '$1'), e, c);\n }\n\n function ea(d, c) {\n var e = P(c, c.charCodeAt(0), c.charCodeAt(1), c.charCodeAt(2));\n return e !== c + ';' ? e.replace(oa, ' or ($1)').substring(4) : '(' + c + ')';\n }\n\n function H(d, c, e, h, a, m, b, v, n, q) {\n for (var g = 0, x = c, w; g < A; ++g) {\n switch (w = S[g].call(B, d, x, e, h, a, m, b, v, n, q)) {\n case void 0:\n case !1:\n case !0:\n case null:\n break;\n\n default:\n x = w;\n }\n }\n\n if (x !== c) return x;\n }\n\n function T(d) {\n switch (d) {\n case void 0:\n case null:\n A = S.length = 0;\n break;\n\n default:\n if ('function' === typeof d) S[A++] = d;else if ('object' === typeof d) for (var c = 0, e = d.length; c < e; ++c) {\n T(d[c]);\n } else Y = !!d | 0;\n }\n\n return T;\n }\n\n function U(d) {\n d = d.prefix;\n void 0 !== d && (R = null, d ? 'function' !== typeof d ? w = 1 : (w = 2, R = d) : w = 0);\n return U;\n }\n\n function B(d, c) {\n var e = d;\n 33 > e.charCodeAt(0) && (e = e.trim());\n V = e;\n e = [V];\n\n if (0 < A) {\n var h = H(-1, c, e, e, D, z, 0, 0, 0, 0);\n void 0 !== h && 'string' === typeof h && (c = h);\n }\n\n var a = M(O, e, c, 0, 0);\n 0 < A && (h = H(-2, a, e, e, D, z, a.length, 0, 0, 0), void 0 !== h && (a = h));\n V = '';\n E = 0;\n z = D = 1;\n return a;\n }\n\n var ca = /^\\0+/g,\n N = /[\\0\\r\\f]/g,\n aa = /: */g,\n ka = /zoo|gra/,\n ma = /([,: ])(transform)/g,\n ia = /,\\r+?/g,\n F = /([\\t\\r\\n ])*\\f?&/g,\n fa = /@(k\\w+)\\s*(\\S*)\\s*/,\n Q = /::(place)/g,\n ha = /:(read-only)/g,\n G = /[svh]\\w+-[tblr]{2}/,\n da = /\\(\\s*(.*)\\s*\\)/g,\n oa = /([\\s\\S]*?);/g,\n ba = /-self|flex-/g,\n na = /[^]*?(:[rp][el]a[\\w-]+)[^]*/,\n la = /stretch|:\\s*\\w+\\-(?:conte|avail)/,\n ja = /([^-])(image-set\\()/,\n z = 1,\n D = 1,\n E = 0,\n w = 1,\n O = [],\n S = [],\n A = 0,\n R = null,\n Y = 0,\n V = '';\n B.use = T;\n B.set = U;\n void 0 !== W && U(W);\n return B;\n}\n\nexport default stylis_min;\n","var unitlessKeys = {\n animationIterationCount: 1,\n borderImageOutset: 1,\n borderImageSlice: 1,\n borderImageWidth: 1,\n boxFlex: 1,\n boxFlexGroup: 1,\n boxOrdinalGroup: 1,\n columnCount: 1,\n columns: 1,\n flex: 1,\n flexGrow: 1,\n flexPositive: 1,\n flexShrink: 1,\n flexNegative: 1,\n flexOrder: 1,\n gridRow: 1,\n gridRowEnd: 1,\n gridRowSpan: 1,\n gridRowStart: 1,\n gridColumn: 1,\n gridColumnEnd: 1,\n gridColumnSpan: 1,\n gridColumnStart: 1,\n msGridRow: 1,\n msGridRowSpan: 1,\n msGridColumn: 1,\n msGridColumnSpan: 1,\n fontWeight: 1,\n lineHeight: 1,\n opacity: 1,\n order: 1,\n orphans: 1,\n tabSize: 1,\n widows: 1,\n zIndex: 1,\n zoom: 1,\n WebkitLineClamp: 1,\n // SVG-related properties\n fillOpacity: 1,\n floodOpacity: 1,\n stopOpacity: 1,\n strokeDasharray: 1,\n strokeDashoffset: 1,\n strokeMiterlimit: 1,\n strokeOpacity: 1,\n strokeWidth: 1\n};\n\nexport default unitlessKeys;\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","import root from './_root.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 allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n}\n\nexport default cloneBuffer;\n","\n/**\n * Topological sorting function\n *\n * @param {Array} edges\n * @returns {Array}\n */\n\nmodule.exports = function(edges) {\n return toposort(uniqueNodes(edges), edges)\n}\n\nmodule.exports.array = toposort\n\nfunction toposort(nodes, edges) {\n var cursor = nodes.length\n , sorted = new Array(cursor)\n , visited = {}\n , i = cursor\n // Better data structures make algorithm much faster.\n , outgoingEdges = makeOutgoingEdges(edges)\n , nodesHash = makeNodesHash(nodes)\n\n // check for unknown nodes\n edges.forEach(function(edge) {\n if (!nodesHash.has(edge[0]) || !nodesHash.has(edge[1])) {\n throw new Error('Unknown node. There is an unknown node in the supplied edges.')\n }\n })\n\n while (i--) {\n if (!visited[i]) visit(nodes[i], i, new Set())\n }\n\n return sorted\n\n function visit(node, i, predecessors) {\n if(predecessors.has(node)) {\n var nodeRep\n try {\n nodeRep = \", node was:\" + JSON.stringify(node)\n } catch(e) {\n nodeRep = \"\"\n }\n throw new Error('Cyclic dependency' + nodeRep)\n }\n\n if (!nodesHash.has(node)) {\n throw new Error('Found unknown node. Make sure to provided all involved nodes. Unknown node: '+JSON.stringify(node))\n }\n\n if (visited[i]) return;\n visited[i] = true\n\n var outgoing = outgoingEdges.get(node) || new Set()\n outgoing = Array.from(outgoing)\n\n if (i = outgoing.length) {\n predecessors.add(node)\n do {\n var child = outgoing[--i]\n visit(child, nodesHash.get(child), predecessors)\n } while (i)\n predecessors.delete(node)\n }\n\n sorted[--cursor] = node\n }\n}\n\nfunction uniqueNodes(arr){\n var res = new Set()\n for (var i = 0, len = arr.length; i < len; i++) {\n var edge = arr[i]\n res.add(edge[0])\n res.add(edge[1])\n }\n return Array.from(res)\n}\n\nfunction makeOutgoingEdges(arr){\n var edges = new Map()\n for (var i = 0, len = arr.length; i < len; i++) {\n var edge = arr[i]\n if (!edges.has(edge[0])) edges.set(edge[0], new Set())\n if (!edges.has(edge[1])) edges.set(edge[1], new Set())\n edges.get(edge[0]).add(edge[1])\n }\n return edges\n}\n\nfunction makeNodesHash(arr){\n var res = new Map()\n for (var i = 0, len = arr.length; i < len; i++) {\n res.set(arr[i], i)\n }\n return res\n}\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","import root from './_root.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 allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n}\n\nexport default cloneBuffer;\n","var baseFlatten = require('./_baseFlatten'),\n baseRest = require('./_baseRest'),\n baseUniq = require('./_baseUniq'),\n isArrayLikeObject = require('./isArrayLikeObject');\n\n/**\n * Creates an array of unique values, in order, from all given arrays using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.union([2], [1, 2]);\n * // => [2, 1]\n */\nvar union = baseRest(function(arrays) {\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));\n});\n\nmodule.exports = union;\n","import * as React from 'react';\n\nimport { IFontIconProps } from './Icon.types';\nimport { classNames, MS_ICON } from './Icon.styles';\nimport { css, getNativeProps, htmlElementProperties, memoizeFunction } from '../../Utilities';\nimport { getIcon, IIconRecord, IIconSubsetRecord } from '../../Styling';\n\nexport interface IIconContent {\n children?: string | JSX.Element;\n iconClassName?: string;\n fontFamily?: string;\n mergeImageProps?: boolean;\n}\n\nexport const getIconContent = memoizeFunction(\n (iconName?: string): IIconContent | null => {\n const { code, subset }: Pick<IIconRecord, 'code'> & { subset: Partial<IIconSubsetRecord> } = getIcon(iconName) || {\n subset: {},\n code: undefined,\n };\n\n if (!code) {\n return null;\n }\n\n return {\n children: code,\n iconClassName: subset.className,\n fontFamily: subset.fontFace && subset.fontFace.fontFamily,\n mergeImageProps: subset.mergeImageProps,\n };\n },\n undefined,\n true /*ignoreNullOrUndefinedResult */,\n);\n\n/**\n * Fast icon component which only supports font glyphs (not images) and can't be targeted by customizations.\n * To style the icon, use `className` or reference `ms-Icon` in CSS.\n * {@docCategory Icon}\n */\nexport const FontIcon: React.FunctionComponent<IFontIconProps> = props => {\n const { iconName, className, style = {} } = props;\n const iconContent = getIconContent(iconName) || {};\n const { iconClassName, children, fontFamily, mergeImageProps } = iconContent;\n\n const nativeProps = getNativeProps<React.HTMLAttributes<HTMLElement>>(props, htmlElementProperties);\n const accessibleName = props['aria-label'] || props.title;\n const containerProps =\n props['aria-label'] || props['aria-labelledby'] || props.title\n ? {\n role: mergeImageProps ? undefined : 'img',\n }\n : {\n 'aria-hidden': true,\n };\n\n let finalChildren = children;\n\n if (mergeImageProps) {\n if (typeof children === 'object' && typeof children.props === 'object' && accessibleName) {\n finalChildren = React.cloneElement(children, { alt: accessibleName });\n }\n }\n\n return (\n <i\n data-icon-name={iconName}\n {...containerProps}\n {...nativeProps}\n {...(mergeImageProps\n ? {\n title: undefined,\n 'aria-label': undefined,\n }\n : {})}\n className={css(MS_ICON, classNames.root, iconClassName, !iconName && classNames.placeholder, className)}\n // Apply the font family this way to ensure it doesn't get overridden by Fabric Core ms-Icon styles\n // https://github.com/microsoft/fluentui/issues/10449\n style={{ fontFamily, ...style }}\n >\n {finalChildren}\n </i>\n );\n};\n\n/**\n * Memoized helper for rendering a FontIcon.\n * @param iconName - The name of the icon to use from the icon font.\n * @param className - Class name for styling the icon.\n * @param ariaLabel - Label for the icon for the benefit of screen readers.\n * {@docCategory Icon}\n */\nexport const getFontIcon = memoizeFunction((iconName: string, className?: string, ariaLabel?: string) => {\n return FontIcon({ iconName, className, 'aria-label': ariaLabel });\n});\n","import * as React from 'react';\nimport { mergeCss } from '@uifabric/merge-styles';\nimport { IStyle, ITheme } from '@uifabric/styling';\nimport { getRTL, memoizeFunction } from '@uifabric/utilities';\nimport { assign } from './utilities';\nimport { IFactoryOptions } from './IComponent';\nimport {\n ISlottableReactType,\n ISlot,\n ISlots,\n ISlotDefinition,\n ISlotFactory,\n ISlotProp,\n ISlottableProps,\n ISlotOptions,\n IDefaultSlotProps,\n IProcessedSlotProps,\n ValidProps,\n ValidShorthand,\n} from './ISlots';\n\n/**\n * This function is required for any module that uses slots.\n *\n * This function is a slot resolver that automatically evaluates slot functions to generate React elements.\n * A byproduct of this resolver is that it removes slots from the React hierarchy by bypassing React.createElement.\n *\n * To use this function on a per-file basis, use the jsx directive targeting withSlots.\n * This directive must be the FIRST LINE in the file to work correctly.\n * Usage of this pragma also requires withSlots import statement.\n *\n * See React.createElement\n */\n// Can't use typeof on React.createElement since it's overloaded. Approximate createElement's signature for now\n// and widen as needed.\nexport function withSlots<P>(\n type: ISlot<P> | React.FunctionComponent<P> | string,\n props?: (React.Attributes & P) | null,\n ...children: React.ReactNode[]\n): ReturnType<React.FunctionComponent<P>> {\n const slotType = type as ISlot<P>;\n if (slotType.isSlot) {\n // Since we are bypassing createElement, use React.Children.toArray to make sure children are\n // properly assigned keys.\n // TODO: should this be mutating? does React mutate children subprop with createElement?\n // TODO: will toArray clobber existing keys?\n // TODO: React generates warnings because it doesn't detect hidden member _store that is set in createElement.\n // Even children passed to createElement without keys don't generate this warning.\n // Is there a better way to prevent slots from appearing in hierarchy? toArray doesn't address root issue.\n children = React.Children.toArray(children);\n\n // TODO: There is something weird going on here with children embedded in props vs. rest args.\n // Comment out these lines to see. Make sure this function is doing the right things.\n if (children.length === 0) {\n return slotType(props);\n }\n\n return slotType({ ...(props as any), children });\n } else {\n // TODO: Are there some cases where children should NOT be spread? Also, spreading reraises perf question.\n // Children had to be spread to avoid breaking KeytipData in Toggle.view:\n // react-dom.development.js:18931 Uncaught TypeError: children is not a function\n // Without spread, function child is a child array of one element\n // TODO: is there a reason this can't be:\n // return React.createElement.apply(this, arguments);\n return React.createElement(type, props, ...children);\n }\n}\n\n/**\n * This function creates factories that render ouput depending on the user ISlotProp props passed in.\n * @param DefaultComponent - Base component to render when not overridden by user props.\n * @param options - Factory options, including defaultProp value for shorthand prop mapping.\n * @returns ISlotFactory function used for rendering slots.\n */\nexport function createFactory<TProps extends ValidProps, TShorthandProp extends ValidShorthand = never>(\n DefaultComponent: React.ComponentType<TProps>,\n options: IFactoryOptions<TProps> = {},\n): ISlotFactory<TProps, TShorthandProp> {\n const { defaultProp = 'children' } = options;\n\n const result: ISlotFactory<TProps, TShorthandProp> = (\n componentProps,\n userProps,\n userSlotOptions,\n defaultStyles,\n theme,\n ) => {\n // If they passed in raw JSX, just return that.\n if (React.isValidElement(userProps)) {\n return userProps;\n }\n\n const flattenedUserProps: TProps | undefined = _translateShorthand(defaultProp as string, userProps);\n const finalProps = _constructFinalProps(defaultStyles, theme, componentProps, flattenedUserProps);\n\n if (userSlotOptions) {\n if (userSlotOptions.component) {\n // TODO: Remove cast if possible. This cast is needed because TS errors on the intrinsic portion of ReactType.\n // return <userSlotOptions.component {...finalProps} />;\n const UserComponent = userSlotOptions.component as React.ComponentType<TProps>;\n return <UserComponent {...finalProps} />;\n }\n\n if (userSlotOptions.render) {\n return userSlotOptions.render(finalProps, DefaultComponent);\n }\n }\n\n return <DefaultComponent {...finalProps} />;\n };\n\n return result;\n}\n\n/**\n * Default factory for components without explicit factories.\n */\nconst defaultFactory = memoizeFunction(type => createFactory(type));\n\n/**\n * This function generates slots that can be used in JSX given a definition of slots and their corresponding types.\n * @param userProps - Props as pass to component.\n * @param slots - Slot definition object defining the default slot component for each slot.\n * @returns A set of created slots that components can render in JSX.\n */\nexport function getSlots<TComponentProps extends ISlottableProps<TComponentSlots>, TComponentSlots>(\n userProps: TComponentProps,\n slots: ISlotDefinition<Required<TComponentSlots>>,\n): ISlots<Required<TComponentSlots>> {\n const result: ISlots<Required<TComponentSlots>> = {} as ISlots<Required<TComponentSlots>>;\n\n // userProps already has default props mixed in by createComponent. Recast here to gain typing for this function.\n const mixedProps = userProps as TComponentProps & IDefaultSlotProps<TComponentSlots>;\n\n for (const name in slots) {\n if (slots.hasOwnProperty(name)) {\n // This closure method requires the use of withSlots to prevent unnecessary rerenders. This is because React\n // detects each closure as a different component (since it is a new instance) from the previous one and then\n // forces a rerender of the entire slot subtree. For now, the only way to avoid this is to use withSlots, which\n // bypasses the call to React.createElement.\n const slot: ISlots<Required<TComponentSlots>>[keyof TComponentSlots] = (componentProps, ...args: any[]) => {\n if (args.length > 0) {\n // If React.createElement is being incorrectly used with slots, there will be additional arguments.\n // We can detect these additional arguments and error on their presence.\n throw new Error('Any module using getSlots must use withSlots. Please see withSlots javadoc for more info.');\n }\n // TODO: having TS infer types here seems to cause infinite loop.\n // use explicit types or casting to preserve typing if possible.\n // TODO: this should be a lookup on TProps property instead of being TProps directly, which is probably\n // causing the infinite loop\n return _renderSlot<any, any, any>(\n slots[name],\n // TODO: this cast to any is hiding a relationship issue between the first two args\n componentProps as any,\n mixedProps[name],\n mixedProps.slots && mixedProps.slots[name],\n // _defaultStyles should always be present, but a check for existence is added to make view tests\n // easier to use.\n mixedProps._defaultStyles && mixedProps._defaultStyles[name],\n (mixedProps as any).theme,\n );\n };\n slot.isSlot = true;\n result[name] = slot;\n }\n }\n\n return result;\n}\n\n/**\n * Helper function that translates shorthand as needed.\n * @param defaultProp\n * @param slotProps\n */\nfunction _translateShorthand<TProps extends ValidProps, TShorthandProp extends ValidShorthand>(\n defaultProp: string,\n slotProps: ISlotProp<TProps, TShorthandProp>,\n): TProps | undefined {\n let transformedProps: TProps | undefined;\n\n if (typeof slotProps === 'string' || typeof slotProps === 'number' || typeof slotProps === 'boolean') {\n transformedProps = {\n [defaultProp]: slotProps as any,\n } as TProps;\n } else {\n transformedProps = slotProps as TProps;\n }\n\n return transformedProps;\n}\n\n/**\n * Helper function that constructs final styles and props given a series of props ordered by increasing priority.\n */\nfunction _constructFinalProps<TProps extends IProcessedSlotProps>(\n defaultStyles: IStyle,\n theme?: ITheme,\n ...allProps: (TProps | undefined)[]\n): TProps {\n const finalProps: TProps = {} as any;\n const classNames: (string | undefined)[] = [];\n\n for (const props of allProps) {\n classNames.push(props && props.className);\n assign(finalProps, props);\n }\n\n finalProps.className = mergeCss([defaultStyles, classNames], { rtl: getRTL(theme) });\n\n return finalProps;\n}\n\n/**\n * Render a slot given component and user props. Uses component factory if available, otherwise falls back\n * to default factory.\n * @param ComponentType Factory component type.\n * @param componentProps The properties passed into slot from within the component.\n * @param userProps The user properties passed in from outside of the component.\n */\nfunction _renderSlot<\n TSlotComponent extends ISlottableReactType<TSlotProps, TSlotShorthand>,\n TSlotProps extends ValidProps,\n TSlotShorthand extends ValidShorthand\n>(\n ComponentType: TSlotComponent,\n componentProps: TSlotProps,\n userProps: ISlotProp<TSlotProps, TSlotShorthand>,\n slotOptions: ISlotOptions<TSlotProps> | undefined,\n defaultStyles: IStyle,\n theme?: ITheme,\n): ReturnType<React.FunctionComponent> {\n if (ComponentType.create !== undefined) {\n return ComponentType.create(componentProps, userProps, slotOptions, defaultStyles);\n } else {\n // TODO: need to resolve typing / generic issues passing through memoizeFunction. for now, cast to 'unknown'\n return ((defaultFactory(ComponentType) as unknown) as ISlotFactory<TSlotProps, TSlotShorthand>)(\n componentProps,\n userProps,\n slotOptions,\n defaultStyles,\n theme,\n );\n }\n}\n","/**\n * Compares a to b and b to a.\n *\n * @public\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function shallowCompare<TA extends any, TB extends any>(a: TA, b: TB): boolean {\n for (let propName in a) {\n if (a.hasOwnProperty(propName)) {\n if (!b.hasOwnProperty(propName) || b[propName] !== a[propName]) {\n return false;\n }\n }\n }\n for (let propName in b) {\n if (b.hasOwnProperty(propName)) {\n if (!a.hasOwnProperty(propName)) {\n return false;\n }\n }\n }\n return true;\n}\n\n/**\n * Makes a resulting merge of a bunch of objects. Pass in the target object followed by 1 or more\n * objects as arguments and they will be merged sequentially into the target. Note that this will\n * shallow merge; it will not create new cloned values for target members.\n *\n * @public\n * @param target - Target object to merge following object arguments into.\n * @param args - One or more objects that will be mixed into the target in the order they are provided.\n * @returns Resulting merged target.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function assign(target: any, ...args: any[]): any {\n return filteredAssign.apply(this, [null, target].concat(args));\n}\n\n/**\n * Makes a resulting merge of a bunch of objects, but allows a filter function to be passed in to filter\n * the resulting merges. This allows for scenarios where you want to merge \"everything except that one thing\"\n * or \"properties that start with data-\". Note that this will shallow merge; it will not create new cloned\n * values for target members.\n *\n * @public\n * @param isAllowed - Callback to determine if the given propName is allowed in the result.\n * @param target - Target object to merge following object arguments into.\n * @param args - One or more objects that will be mixed into the target in the order they are provided.\n * @returns Resulting merged target.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function filteredAssign(isAllowed: (propName: string) => boolean, target: any, ...args: any[]): any {\n target = target || {};\n\n for (let sourceObject of args) {\n if (sourceObject) {\n for (let propName in sourceObject) {\n if (sourceObject.hasOwnProperty(propName) && (!isAllowed || isAllowed(propName))) {\n target[propName] = sourceObject[propName];\n }\n }\n }\n }\n\n return target;\n}\n\n/**\n * Takes an enum and iterates over each value of the enum (as a string), running the callback on each,\n * returning a mapped array.\n * @param theEnum - Enum to iterate over\n * @param callback - The first parameter the name of the entry, and the second parameter is the value\n * of that entry, which is the value you'd normally use when using the enum (usually a number).\n */\nexport function mapEnumByName<T>(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n theEnum: any,\n callback: (name?: string, value?: string | number) => T | undefined,\n): (T | undefined)[] | undefined {\n // map<any> to satisfy compiler since it doesn't realize we strip out undefineds in the .filter() call\n return Object.keys(theEnum)\n .map<T | undefined>((p: string | number) => {\n // map on each property name as a string\n if (String(Number(p)) !== p) {\n // if the property is not just a number (because enums in TypeScript will map both ways)\n return callback(p as string, theEnum[p]);\n }\n return undefined;\n })\n .filter((v: T | undefined) => !!v); // only return elements with values\n}\n\n/**\n * Get all values in an object dictionary\n *\n * @param obj - The dictionary to get values for\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function values<T>(obj: any): T[] {\n return Object.keys(obj).reduce((arr: T[], key: string): T[] => {\n arr.push(obj[key]);\n return arr;\n }, []);\n}\n\n/**\n * Tiny helper to do the minimal amount of work in duplicating an object but omitting some\n * props. This ends up faster than using object ...rest or reduce to filter.\n *\n * This behaves very much like filteredAssign, but does not merge many objects together,\n * uses an exclusion object map, and avoids spreads all for optimal performance.\n *\n * See perf test for background:\n * https://jsperf.com/omit-vs-rest-vs-reduce/1\n *\n * @param obj - The object to clone\n * @param exclusions - The array of keys to exclude\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function omit<TObj extends Record<string, any>>(obj: TObj, exclusions: (keyof TObj)[]): TObj {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const result: Record<string, any> = {};\n\n for (const key in obj) {\n if (exclusions.indexOf(key) === -1 && obj.hasOwnProperty(key)) {\n result[key] = obj[key];\n }\n }\n\n return result as TObj;\n}\n","/**\n * Helper to find the index of an item within an array, using a callback to\n * determine the match.\n *\n * @public\n * @param array - Array to search.\n * @param cb - Callback which returns true on matches.\n * @param fromIndex - Optional index to start from (defaults to 0)\n */\nexport function findIndex<T>(array: T[], cb: (item: T, index: number) => boolean, fromIndex: number = 0): number {\n let index = -1;\n\n for (let i = fromIndex; array && i < array.length; i++) {\n if (cb(array[i], i)) {\n index = i;\n break;\n }\n }\n\n return index;\n}\n\n/**\n * Helper to find the first item within an array that satisfies the callback.\n * @param array - Array to search\n * @param cb - Callback which returns true on matches\n */\nexport function find<T>(array: T[], cb: (item: T, index: number) => boolean): T | undefined {\n let index = findIndex(array, cb);\n\n if (index < 0) {\n return undefined;\n }\n\n return array[index];\n}\n\n/**\n * Creates an array of a given size and helper method to populate.\n *\n * @public\n * @param size - Size of array.\n * @param getItem - Callback to populate given cell index.\n */\nexport function createArray<T>(size: number, getItem: (index: number) => T): T[] {\n let array: T[] = [];\n\n for (let i = 0; i < size; i++) {\n array.push(getItem(i));\n }\n\n return array;\n}\n\n/**\n * Convert the given array to a matrix with columnCount number\n * of columns.\n *\n * @public\n * @param items - The array to convert\n * @param columnCount - The number of columns for the resulting matrix\n * @returns A matrix of items\n */\nexport function toMatrix<T>(items: T[], columnCount: number): T[][] {\n return items.reduce((rows: T[][], currentValue: T, index: number) => {\n if (index % columnCount === 0) {\n rows.push([currentValue]);\n } else {\n rows[rows.length - 1].push(currentValue);\n }\n return rows;\n }, [] as T[][]);\n}\n\n/**\n * Given an array, it returns a new array that does not contain the item at the given index.\n * @param array - The array to operate on\n * @param index - The index of the element to remove\n */\nexport function removeIndex<T>(array: T[], index: number): T[] {\n return array.filter((_: T, i: number) => index !== i);\n}\n\n/**\n * Given an array, this function returns a new array where the element at a given index has been replaced.\n * @param array - The array to operate on\n * @param newElement - The element that will be placed in the new array\n * @param index - The index of the element that should be replaced\n */\nexport function replaceElement<T>(array: T[], newElement: T, index: number): T[] {\n const copy = array.slice();\n copy[index] = newElement;\n return copy;\n}\n\n/**\n * Given an array, this function returns a new array where an element has been inserted at the given index.\n * @param array - The array to operate on\n * @param index - The index where an element should be inserted\n * @param itemToAdd - The element to insert\n */\nexport function addElementAtIndex<T>(array: T[], index: number, itemToAdd: T): T[] {\n const copy = array.slice();\n copy.splice(index, 0, itemToAdd);\n return copy;\n}\n\n/**\n * Given an array where each element is of type T or T[], flatten it into an array of T\n * @param array - The array where each element can optionally also be an array\n */\nexport function flatten<T>(array: (T | T[])[]): T[] {\n let result: T[] = [];\n array.forEach((item: T | T[]): T[] => (result = result.concat(item)));\n return result;\n}\n\n/**\n * Returns a boolean indicating if the two given arrays are equal in length and values.\n *\n * @param array1 - First array to compare\n * @param array2 - Second array to compare\n * @returns True if the arrays are the same length and have the same values in the same positions, false otherwise.\n */\nexport function arraysEqual<T>(array1: T[], array2: T[]): boolean {\n if (array1.length !== array2.length) {\n return false;\n }\n for (let i = 0; i < array1.length; i++) {\n if (array1[i] !== array2[i]) {\n return false;\n }\n }\n return true;\n}\n","/**\n * Allows you to hoist static functions in components.\n * Created for the purpose of fixing broken static functions in classes\n * that utilize decorators.\n *\n * @public\n * @param source - The object where the methods are hoisted from.\n * @param dest - The object to hoist the methods onto.\n * @returns The dest object with methods added\n */\n\nexport function hoistStatics<TSource extends Object, TDest>(source: TSource, dest: TDest): TDest {\n for (const name in source) {\n if (source.hasOwnProperty(name)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (dest as any)[name] = source[name];\n }\n }\n\n return dest;\n}\n","import { IKeytipProps } from '../../Keytip';\nimport { EventGroup, getId } from '../../Utilities';\nimport { KeytipEvents } from '../../utilities/keytips/KeytipConstants';\n\nexport interface IUniqueKeytip {\n uniqueID: string;\n keytip: IKeytipProps;\n}\n\n/**\n * This class is responsible for handling registering, updating, and unregistering of keytips\n */\nexport class KeytipManager {\n private static _instance: KeytipManager = new KeytipManager();\n\n public keytips: { [key: string]: IUniqueKeytip } = {};\n public persistedKeytips: { [key: string]: IUniqueKeytip } = {};\n public sequenceMapping: { [key: string]: IKeytipProps } = {};\n\n // This is (and should be) updated and kept in sync\n // with the inKeytipMode in KeytipLayer.\n public inKeytipMode = false;\n\n // Boolean that gets checked before entering keytip mode by the KeytipLayer\n // Used for an override in special cases (e.g. Disable entering keytip mode when a modal is shown)\n public shouldEnterKeytipMode = true;\n\n // Boolean to indicate whether to delay firing an event to update subscribers of\n // keytip data changed.\n public delayUpdatingKeytipChange = false;\n\n /**\n * Static function to get singleton KeytipManager instance\n *\n * @returns Singleton KeytipManager instance\n */\n public static getInstance(): KeytipManager {\n return this._instance;\n }\n\n /**\n * Initialization code to set set parameters to define\n * how the KeytipManager handles keytip data.\n *\n * @param delayUpdatingKeytipChange - T/F if we should delay notifiying keytip subscribers\n * of keytip changes\n */\n public init(delayUpdatingKeytipChange: boolean) {\n this.delayUpdatingKeytipChange = delayUpdatingKeytipChange;\n }\n\n /**\n * Registers a keytip\n *\n * @param keytipProps - Keytip to register\n * @param persisted - T/F if this keytip should be persisted, default is false\n * @returns Unique ID for this keytip\n */\n public register(keytipProps: IKeytipProps, persisted: boolean = false): string {\n let props: IKeytipProps = keytipProps;\n if (!persisted) {\n // Add the overflowSetSequence if necessary\n props = this.addParentOverflow(keytipProps);\n this.sequenceMapping[props.keySequences.toString()] = props;\n }\n // Create a unique keytip\n const uniqueKeytip: IUniqueKeytip = this._getUniqueKtp(props);\n // Add to dictionary\n persisted\n ? (this.persistedKeytips[uniqueKeytip.uniqueID] = uniqueKeytip)\n : (this.keytips[uniqueKeytip.uniqueID] = uniqueKeytip);\n\n // We only want to add something new if we are currently showing keytip mode\n if (this.inKeytipMode || !this.delayUpdatingKeytipChange) {\n const event = persisted ? KeytipEvents.PERSISTED_KEYTIP_ADDED : KeytipEvents.KEYTIP_ADDED;\n EventGroup.raise(this, event, {\n keytip: props,\n uniqueID: uniqueKeytip.uniqueID,\n });\n }\n\n return uniqueKeytip.uniqueID;\n }\n\n /**\n * Update a keytip\n *\n * @param keytipProps - Keytip to update\n * @param uniqueID - Unique ID of this keytip\n */\n public update(keytipProps: IKeytipProps, uniqueID: string): void {\n const newKeytipProps = this.addParentOverflow(keytipProps);\n const uniqueKeytip = this._getUniqueKtp(newKeytipProps, uniqueID);\n const oldKeyTip = this.keytips[uniqueID];\n if (oldKeyTip) {\n // Update everything except 'visible'\n uniqueKeytip.keytip.visible = oldKeyTip.keytip.visible;\n // Update keytip in this.keytips\n this.keytips[uniqueID] = uniqueKeytip;\n\n // Update the sequence to be up to date\n delete this.sequenceMapping[oldKeyTip.keytip.keySequences.toString()];\n this.sequenceMapping[uniqueKeytip.keytip.keySequences.toString()] = uniqueKeytip.keytip;\n\n // Raise event only if we are currently in keytip mode\n if (this.inKeytipMode || !this.delayUpdatingKeytipChange) {\n EventGroup.raise(this, KeytipEvents.KEYTIP_UPDATED, {\n keytip: uniqueKeytip.keytip,\n uniqueID: uniqueKeytip.uniqueID,\n });\n }\n }\n }\n\n /**\n * Unregisters a keytip\n *\n * @param keytipToRemove - IKeytipProps of the keytip to remove\n * @param uniqueID - Unique ID of this keytip\n * @param persisted - T/F if this keytip should be persisted, default is false\n */\n public unregister(keytipToRemove: IKeytipProps, uniqueID: string, persisted: boolean = false): void {\n persisted ? delete this.persistedKeytips[uniqueID] : delete this.keytips[uniqueID];\n !persisted && delete this.sequenceMapping[keytipToRemove.keySequences.toString()];\n\n const event = persisted ? KeytipEvents.PERSISTED_KEYTIP_REMOVED : KeytipEvents.KEYTIP_REMOVED;\n // Update keytips only if we're in keytip mode\n if (this.inKeytipMode || !this.delayUpdatingKeytipChange) {\n EventGroup.raise(this, event, {\n keytip: keytipToRemove,\n uniqueID: uniqueID,\n });\n }\n }\n\n /**\n * Manual call to enter keytip mode\n */\n public enterKeytipMode(): void {\n EventGroup.raise(this, KeytipEvents.ENTER_KEYTIP_MODE);\n }\n\n /**\n * Manual call to exit keytip mode\n */\n public exitKeytipMode(): void {\n EventGroup.raise(this, KeytipEvents.EXIT_KEYTIP_MODE);\n }\n\n /**\n * Gets all IKeytipProps from this.keytips\n *\n * @returns All keytips stored in the manager\n */\n public getKeytips(): IKeytipProps[] {\n return Object.keys(this.keytips).map(key => this.keytips[key].keytip);\n }\n\n /**\n * Adds the overflowSetSequence to the keytipProps if its parent keytip also has it\n *\n * @param keytipProps - Keytip props to add overflowSetSequence to if necessary\n * @returns - Modified keytip props, if needed to be modified\n */\n public addParentOverflow(keytipProps: IKeytipProps): IKeytipProps {\n const fullSequence = [...keytipProps.keySequences];\n fullSequence.pop();\n if (fullSequence.length !== 0) {\n const parentKeytip = this.sequenceMapping[fullSequence.toString()];\n if (parentKeytip && parentKeytip.overflowSetSequence) {\n return {\n ...keytipProps,\n overflowSetSequence: parentKeytip.overflowSetSequence,\n };\n }\n }\n return keytipProps;\n }\n\n /**\n * Public function to bind for overflow items that have a submenu\n */\n public menuExecute(overflowButtonSequences: string[], keytipSequences: string[]) {\n EventGroup.raise(this, KeytipEvents.PERSISTED_KEYTIP_EXECUTE, {\n overflowButtonSequences,\n keytipSequences,\n });\n }\n\n /**\n * Creates an IUniqueKeytip object\n *\n * @param keytipProps - IKeytipProps\n * @param uniqueID - Unique ID, will default to the next unique ID if not passed\n * @returns IUniqueKeytip object\n */\n private _getUniqueKtp(keytipProps: IKeytipProps, uniqueID: string = getId()): IUniqueKeytip {\n return { keytip: { ...keytipProps }, uniqueID };\n }\n}\n","import { warn } from './warn';\n/**\n * Warns when props are required if a condition is met.\n *\n * @public\n * @param componentName - The name of the component being used.\n * @param props - The props passed into the component.\n * @param requiredProps - The name of the props that are required when the condition is met.\n * @param conditionalPropName - The name of the prop that the condition is based on.\n * @param condition - Whether the condition is met.\n */\nexport function warnConditionallyRequiredProps<P>(\n componentName: string,\n props: P,\n requiredProps: string[],\n conditionalPropName: string,\n condition: boolean,\n): void {\n if (condition === true && process.env.NODE_ENV !== 'production') {\n for (const requiredPropName of requiredProps) {\n if (!(requiredPropName in props)) {\n warn(`${componentName} property '${requiredPropName}' is required when '${conditionalPropName}' is used.'`);\n }\n }\n }\n}\n","import { ISettingsMap, warn } from './warn';\n/**\n * Warns when two props which are mutually exclusive are both being used.\n *\n * @public\n * @param componentName - The name of the component being used.\n * @param props - The props passed into the component.\n * @param exclusiveMap - A map where the key is a parameter, and the value is the other parameter.\n */\nexport function warnMutuallyExclusive<P>(componentName: string, props: P, exclusiveMap: ISettingsMap<P>): void {\n if (process.env.NODE_ENV !== 'production') {\n for (const propName in exclusiveMap) {\n if (props && props[propName] !== undefined) {\n let propInExclusiveMapValue = exclusiveMap[propName];\n if (propInExclusiveMapValue && props[propInExclusiveMapValue as keyof P] !== undefined) {\n warn(\n `${componentName} property '${propName}' is mutually exclusive with '${exclusiveMap[propName]}'. ` +\n `Use one or the other.`,\n );\n }\n }\n }\n }\n}\n","module.exports = require('./toPairs');\n","import * as React from 'react';\nimport { getNativeProps, divProperties, initializeComponentRef, warnDeprecations } from '../../Utilities';\nimport { IPivotItemProps } from './PivotItem.types';\n\nconst COMPONENT_NAME = 'PivotItem';\n\nexport class PivotItem extends React.Component<IPivotItemProps, {}> {\n constructor(props: IPivotItemProps) {\n super(props);\n\n initializeComponentRef(this);\n warnDeprecations(COMPONENT_NAME, props, {\n linkText: 'headerText',\n });\n }\n\n public render(): JSX.Element {\n return <div {...getNativeProps(this.props, divProperties)}>{this.props.children}</div>;\n }\n}\n","import type { Api } from '@reduxjs/toolkit/query';\nimport type { BaseQueryApi, BaseQueryArg, BaseQueryError, BaseQueryExtraOptions, BaseQueryFn, BaseQueryMeta, BaseQueryResult, QueryReturnValue } from './baseQueryTypes';\nimport type { QuerySubState, RootState } from './core';\nimport type { CacheCollectionQueryExtraOptions } from './core/buildMiddleware/cacheCollection';\nimport type { CacheLifecycleMutationExtraOptions, CacheLifecycleQueryExtraOptions } from './core/buildMiddleware/cacheLifecycle';\nimport type { QueryLifecycleMutationExtraOptions, QueryLifecycleQueryExtraOptions } from './core/buildMiddleware/queryLifecycle';\nimport type { SerializeQueryArgs } from './defaultSerializeQueryArgs';\nimport type { NEVER } from './fakeBaseQuery';\nimport type { CastAny, HasRequiredProps, MaybePromise, NonUndefined, OmitFromUnion, UnwrapPromise } from './tsHelpers';\nconst resultType = /* @__PURE__ */Symbol();\nconst baseQuery = /* @__PURE__ */Symbol();\ntype EndpointDefinitionWithQuery<QueryArg, BaseQuery extends BaseQueryFn, ResultType> = {\n /**\n * `query` can be a function that returns either a `string` or an `object` which is passed to your `baseQuery`. If you are using [fetchBaseQuery](./fetchBaseQuery), this can return either a `string` or an `object` of properties in `FetchArgs`. If you use your own custom [`baseQuery`](../../rtk-query/usage/customizing-queries), you can customize this behavior to your liking.\n *\n * @example\n *\n * ```ts\n * // codeblock-meta title=\"query example\"\n *\n * import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react'\n * interface Post {\n * id: number\n * name: string\n * }\n * type PostsResponse = Post[]\n *\n * const api = createApi({\n * baseQuery: fetchBaseQuery({ baseUrl: '/' }),\n * tagTypes: ['Post'],\n * endpoints: (build) => ({\n * getPosts: build.query<PostsResponse, void>({\n * // highlight-start\n * query: () => 'posts',\n * // highlight-end\n * }),\n * addPost: build.mutation<Post, Partial<Post>>({\n * // highlight-start\n * query: (body) => ({\n * url: `posts`,\n * method: 'POST',\n * body,\n * }),\n * // highlight-end\n * invalidatesTags: [{ type: 'Post', id: 'LIST' }],\n * }),\n * })\n * })\n * ```\n */\n query(arg: QueryArg): BaseQueryArg<BaseQuery>;\n queryFn?: never;\n /**\n * A function to manipulate the data returned by a query or mutation.\n */\n transformResponse?(baseQueryReturnValue: BaseQueryResult<BaseQuery>, meta: BaseQueryMeta<BaseQuery>, arg: QueryArg): ResultType | Promise<ResultType>;\n /**\n * A function to manipulate the data returned by a failed query or mutation.\n */\n transformErrorResponse?(baseQueryReturnValue: BaseQueryError<BaseQuery>, meta: BaseQueryMeta<BaseQuery>, arg: QueryArg): unknown;\n /**\n * Defaults to `true`.\n *\n * Most apps should leave this setting on. The only time it can be a performance issue\n * is if an API returns extremely large amounts of data (e.g. 10,000 rows per request) and\n * you're unable to paginate it.\n *\n * For details of how this works, please see the below. When it is set to `false`,\n * every request will cause subscribed components to rerender, even when the data has not changed.\n *\n * @see https://redux-toolkit.js.org/api/other-exports#copywithstructuralsharing\n */\n structuralSharing?: boolean;\n};\ntype EndpointDefinitionWithQueryFn<QueryArg, BaseQuery extends BaseQueryFn, ResultType> = {\n /**\n * Can be used in place of `query` as an inline function that bypasses `baseQuery` completely for the endpoint.\n *\n * @example\n * ```ts\n * // codeblock-meta title=\"Basic queryFn example\"\n *\n * import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react'\n * interface Post {\n * id: number\n * name: string\n * }\n * type PostsResponse = Post[]\n *\n * const api = createApi({\n * baseQuery: fetchBaseQuery({ baseUrl: '/' }),\n * endpoints: (build) => ({\n * getPosts: build.query<PostsResponse, void>({\n * query: () => 'posts',\n * }),\n * flipCoin: build.query<'heads' | 'tails', void>({\n * // highlight-start\n * queryFn(arg, queryApi, extraOptions, baseQuery) {\n * const randomVal = Math.random()\n * if (randomVal < 0.45) {\n * return { data: 'heads' }\n * }\n * if (randomVal < 0.9) {\n * return { data: 'tails' }\n * }\n * return { error: { status: 500, statusText: 'Internal Server Error', data: \"Coin landed on its edge!\" } }\n * }\n * // highlight-end\n * })\n * })\n * })\n * ```\n */\n queryFn(arg: QueryArg, api: BaseQueryApi, extraOptions: BaseQueryExtraOptions<BaseQuery>, baseQuery: (arg: Parameters<BaseQuery>[0]) => ReturnType<BaseQuery>): MaybePromise<QueryReturnValue<ResultType, BaseQueryError<BaseQuery>, BaseQueryMeta<BaseQuery>>>;\n query?: never;\n transformResponse?: never;\n transformErrorResponse?: never;\n /**\n * Defaults to `true`.\n *\n * Most apps should leave this setting on. The only time it can be a performance issue\n * is if an API returns extremely large amounts of data (e.g. 10,000 rows per request) and\n * you're unable to paginate it.\n *\n * For details of how this works, please see the below. When it is set to `false`,\n * every request will cause subscribed components to rerender, even when the data has not changed.\n *\n * @see https://redux-toolkit.js.org/api/other-exports#copywithstructuralsharing\n */\n structuralSharing?: boolean;\n};\ntype BaseEndpointTypes<QueryArg, BaseQuery extends BaseQueryFn, ResultType> = {\n QueryArg: QueryArg;\n BaseQuery: BaseQuery;\n ResultType: ResultType;\n};\nexport type BaseEndpointDefinition<QueryArg, BaseQuery extends BaseQueryFn, ResultType> = (([CastAny<BaseQueryResult<BaseQuery>, {}>] extends [NEVER] ? never : EndpointDefinitionWithQuery<QueryArg, BaseQuery, ResultType>) | EndpointDefinitionWithQueryFn<QueryArg, BaseQuery, ResultType>) & {\n /* phantom type */\n [resultType]?: ResultType;\n /* phantom type */\n [baseQuery]?: BaseQuery;\n} & HasRequiredProps<BaseQueryExtraOptions<BaseQuery>, {\n extraOptions: BaseQueryExtraOptions<BaseQuery>;\n}, {\n extraOptions?: BaseQueryExtraOptions<BaseQuery>;\n}>;\nexport enum DefinitionType {\n query = 'query',\n mutation = 'mutation',\n}\nexport type GetResultDescriptionFn<TagTypes extends string, ResultType, QueryArg, ErrorType, MetaType> = (result: ResultType | undefined, error: ErrorType | undefined, arg: QueryArg, meta: MetaType) => ReadonlyArray<TagDescription<TagTypes>>;\nexport type FullTagDescription<TagType> = {\n type: TagType;\n id?: number | string;\n};\nexport type TagDescription<TagType> = TagType | FullTagDescription<TagType>;\nexport type ResultDescription<TagTypes extends string, ResultType, QueryArg, ErrorType, MetaType> = ReadonlyArray<TagDescription<TagTypes>> | GetResultDescriptionFn<TagTypes, ResultType, QueryArg, ErrorType, MetaType>;\ntype QueryTypes<QueryArg, BaseQuery extends BaseQueryFn, TagTypes extends string, ResultType, ReducerPath extends string = string> = BaseEndpointTypes<QueryArg, BaseQuery, ResultType> & {\n /**\n * The endpoint definition type. To be used with some internal generic types.\n * @example\n * ```ts\n * const useMyWrappedHook: UseQuery<typeof api.endpoints.query.Types.QueryDefinition> = ...\n * ```\n */\n QueryDefinition: QueryDefinition<QueryArg, BaseQuery, TagTypes, ResultType, ReducerPath>;\n TagTypes: TagTypes;\n ReducerPath: ReducerPath;\n};\n\n/**\n * @public\n */\nexport interface QueryExtraOptions<TagTypes extends string, ResultType, QueryArg, BaseQuery extends BaseQueryFn, ReducerPath extends string = string> extends CacheLifecycleQueryExtraOptions<ResultType, QueryArg, BaseQuery, ReducerPath>, QueryLifecycleQueryExtraOptions<ResultType, QueryArg, BaseQuery, ReducerPath>, CacheCollectionQueryExtraOptions {\n type: DefinitionType.query;\n\n /**\n * Used by `query` endpoints. Determines which 'tag' is attached to the cached data returned by the query.\n * Expects an array of tag type strings, an array of objects of tag types with ids, or a function that returns such an array.\n * 1. `['Post']` - equivalent to `2`\n * 2. `[{ type: 'Post' }]` - equivalent to `1`\n * 3. `[{ type: 'Post', id: 1 }]`\n * 4. `(result, error, arg) => ['Post']` - equivalent to `5`\n * 5. `(result, error, arg) => [{ type: 'Post' }]` - equivalent to `4`\n * 6. `(result, error, arg) => [{ type: 'Post', id: 1 }]`\n *\n * @example\n *\n * ```ts\n * // codeblock-meta title=\"providesTags example\"\n *\n * import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react'\n * interface Post {\n * id: number\n * name: string\n * }\n * type PostsResponse = Post[]\n *\n * const api = createApi({\n * baseQuery: fetchBaseQuery({ baseUrl: '/' }),\n * tagTypes: ['Posts'],\n * endpoints: (build) => ({\n * getPosts: build.query<PostsResponse, void>({\n * query: () => 'posts',\n * // highlight-start\n * providesTags: (result) =>\n * result\n * ? [\n * ...result.map(({ id }) => ({ type: 'Posts' as const, id })),\n * { type: 'Posts', id: 'LIST' },\n * ]\n * : [{ type: 'Posts', id: 'LIST' }],\n * // highlight-end\n * })\n * })\n * })\n * ```\n */\n providesTags?: ResultDescription<TagTypes, ResultType, QueryArg, BaseQueryError<BaseQuery>, BaseQueryMeta<BaseQuery>>;\n /**\n * Not to be used. A query should not invalidate tags in the cache.\n */\n invalidatesTags?: never;\n\n /**\n * Can be provided to return a custom cache key value based on the query arguments.\n *\n * This is primarily intended for cases where a non-serializable value is passed as part of the query arg object and should be excluded from the cache key. It may also be used for cases where an endpoint should only have a single cache entry, such as an infinite loading / pagination implementation.\n *\n * Unlike the `createApi` version which can _only_ return a string, this per-endpoint option can also return an an object, number, or boolean. If it returns a string, that value will be used as the cache key directly. If it returns an object / number / boolean, that value will be passed to the built-in `defaultSerializeQueryArgs`. This simplifies the use case of stripping out args you don't want included in the cache key.\n *\n *\n * @example\n *\n * ```ts\n * // codeblock-meta title=\"serializeQueryArgs : exclude value\"\n *\n * import { createApi, fetchBaseQuery, defaultSerializeQueryArgs } from '@reduxjs/toolkit/query/react'\n * interface Post {\n * id: number\n * name: string\n * }\n *\n * interface MyApiClient {\n * fetchPost: (id: string) => Promise<Post>\n * }\n *\n * createApi({\n * baseQuery: fetchBaseQuery({ baseUrl: '/' }),\n * endpoints: (build) => ({\n * // Example: an endpoint with an API client passed in as an argument,\n * // but only the item ID should be used as the cache key\n * getPost: build.query<Post, { id: string; client: MyApiClient }>({\n * queryFn: async ({ id, client }) => {\n * const post = await client.fetchPost(id)\n * return { data: post }\n * },\n * // highlight-start\n * serializeQueryArgs: ({ queryArgs, endpointDefinition, endpointName }) => {\n * const { id } = queryArgs\n * // This can return a string, an object, a number, or a boolean.\n * // If it returns an object, number or boolean, that value\n * // will be serialized automatically via `defaultSerializeQueryArgs`\n * return { id } // omit `client` from the cache key\n *\n * // Alternately, you can use `defaultSerializeQueryArgs` yourself:\n * // return defaultSerializeQueryArgs({\n * // endpointName,\n * // queryArgs: { id },\n * // endpointDefinition\n * // })\n * // Or create and return a string yourself:\n * // return `getPost(${id})`\n * },\n * // highlight-end\n * }),\n * }),\n *})\n * ```\n */\n serializeQueryArgs?: SerializeQueryArgs<QueryArg, string | number | boolean | Record<any, any>>;\n\n /**\n * Can be provided to merge an incoming response value into the current cache data.\n * If supplied, no automatic structural sharing will be applied - it's up to\n * you to update the cache appropriately.\n *\n * Since RTKQ normally replaces cache entries with the new response, you will usually\n * need to use this with the `serializeQueryArgs` or `forceRefetch` options to keep\n * an existing cache entry so that it can be updated.\n *\n * Since this is wrapped with Immer, you may either mutate the `currentCacheValue` directly,\n * or return a new value, but _not_ both at once.\n *\n * Will only be called if the existing `currentCacheData` is _not_ `undefined` - on first response,\n * the cache entry will just save the response data directly.\n *\n * Useful if you don't want a new request to completely override the current cache value,\n * maybe because you have manually updated it from another source and don't want those\n * updates to get lost.\n *\n *\n * @example\n *\n * ```ts\n * // codeblock-meta title=\"merge: pagination\"\n *\n * import { createApi, fetchBaseQuery, defaultSerializeQueryArgs } from '@reduxjs/toolkit/query/react'\n * interface Post {\n * id: number\n * name: string\n * }\n *\n * createApi({\n * baseQuery: fetchBaseQuery({ baseUrl: '/' }),\n * endpoints: (build) => ({\n * listItems: build.query<string[], number>({\n * query: (pageNumber) => `/listItems?page=${pageNumber}`,\n * // Only have one cache entry because the arg always maps to one string\n * serializeQueryArgs: ({ endpointName }) => {\n * return endpointName\n * },\n * // Always merge incoming data to the cache entry\n * merge: (currentCache, newItems) => {\n * currentCache.push(...newItems)\n * },\n * // Refetch when the page arg changes\n * forceRefetch({ currentArg, previousArg }) {\n * return currentArg !== previousArg\n * },\n * }),\n * }),\n *})\n * ```\n */\n merge?(currentCacheData: ResultType, responseData: ResultType, otherArgs: {\n arg: QueryArg;\n baseQueryMeta: BaseQueryMeta<BaseQuery>;\n requestId: string;\n fulfilledTimeStamp: number;\n }): ResultType | void;\n\n /**\n * Check to see if the endpoint should force a refetch in cases where it normally wouldn't.\n * This is primarily useful for \"infinite scroll\" / pagination use cases where\n * RTKQ is keeping a single cache entry that is added to over time, in combination\n * with `serializeQueryArgs` returning a fixed cache key and a `merge` callback\n * set to add incoming data to the cache entry each time.\n *\n * @example\n *\n * ```ts\n * // codeblock-meta title=\"forceRefresh: pagination\"\n *\n * import { createApi, fetchBaseQuery, defaultSerializeQueryArgs } from '@reduxjs/toolkit/query/react'\n * interface Post {\n * id: number\n * name: string\n * }\n *\n * createApi({\n * baseQuery: fetchBaseQuery({ baseUrl: '/' }),\n * endpoints: (build) => ({\n * listItems: build.query<string[], number>({\n * query: (pageNumber) => `/listItems?page=${pageNumber}`,\n * // Only have one cache entry because the arg always maps to one string\n * serializeQueryArgs: ({ endpointName }) => {\n * return endpointName\n * },\n * // Always merge incoming data to the cache entry\n * merge: (currentCache, newItems) => {\n * currentCache.push(...newItems)\n * },\n * // Refetch when the page arg changes\n * forceRefetch({ currentArg, previousArg }) {\n * return currentArg !== previousArg\n * },\n * }),\n * }),\n *})\n * ```\n */\n forceRefetch?(params: {\n currentArg: QueryArg | undefined;\n previousArg: QueryArg | undefined;\n state: RootState<any, any, string>;\n endpointState?: QuerySubState<any>;\n }): boolean;\n\n /**\n * All of these are `undefined` at runtime, purely to be used in TypeScript declarations!\n */\n Types?: QueryTypes<QueryArg, BaseQuery, TagTypes, ResultType, ReducerPath>;\n}\nexport type QueryDefinition<QueryArg, BaseQuery extends BaseQueryFn, TagTypes extends string, ResultType, ReducerPath extends string = string> = BaseEndpointDefinition<QueryArg, BaseQuery, ResultType> & QueryExtraOptions<TagTypes, ResultType, QueryArg, BaseQuery, ReducerPath>;\ntype MutationTypes<QueryArg, BaseQuery extends BaseQueryFn, TagTypes extends string, ResultType, ReducerPath extends string = string> = BaseEndpointTypes<QueryArg, BaseQuery, ResultType> & {\n /**\n * The endpoint definition type. To be used with some internal generic types.\n * @example\n * ```ts\n * const useMyWrappedHook: UseMutation<typeof api.endpoints.query.Types.MutationDefinition> = ...\n * ```\n */\n MutationDefinition: MutationDefinition<QueryArg, BaseQuery, TagTypes, ResultType, ReducerPath>;\n TagTypes: TagTypes;\n ReducerPath: ReducerPath;\n};\n\n/**\n * @public\n */\nexport interface MutationExtraOptions<TagTypes extends string, ResultType, QueryArg, BaseQuery extends BaseQueryFn, ReducerPath extends string = string> extends CacheLifecycleMutationExtraOptions<ResultType, QueryArg, BaseQuery, ReducerPath>, QueryLifecycleMutationExtraOptions<ResultType, QueryArg, BaseQuery, ReducerPath> {\n type: DefinitionType.mutation;\n\n /**\n * Used by `mutation` endpoints. Determines which cached data should be either re-fetched or removed from the cache.\n * Expects the same shapes as `providesTags`.\n *\n * @example\n *\n * ```ts\n * // codeblock-meta title=\"invalidatesTags example\"\n * import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react'\n * interface Post {\n * id: number\n * name: string\n * }\n * type PostsResponse = Post[]\n *\n * const api = createApi({\n * baseQuery: fetchBaseQuery({ baseUrl: '/' }),\n * tagTypes: ['Posts'],\n * endpoints: (build) => ({\n * getPosts: build.query<PostsResponse, void>({\n * query: () => 'posts',\n * providesTags: (result) =>\n * result\n * ? [\n * ...result.map(({ id }) => ({ type: 'Posts' as const, id })),\n * { type: 'Posts', id: 'LIST' },\n * ]\n * : [{ type: 'Posts', id: 'LIST' }],\n * }),\n * addPost: build.mutation<Post, Partial<Post>>({\n * query(body) {\n * return {\n * url: `posts`,\n * method: 'POST',\n * body,\n * }\n * },\n * // highlight-start\n * invalidatesTags: [{ type: 'Posts', id: 'LIST' }],\n * // highlight-end\n * }),\n * })\n * })\n * ```\n */\n invalidatesTags?: ResultDescription<TagTypes, ResultType, QueryArg, BaseQueryError<BaseQuery>, BaseQueryMeta<BaseQuery>>;\n /**\n * Not to be used. A mutation should not provide tags to the cache.\n */\n providesTags?: never;\n\n /**\n * All of these are `undefined` at runtime, purely to be used in TypeScript declarations!\n */\n Types?: MutationTypes<QueryArg, BaseQuery, TagTypes, ResultType, ReducerPath>;\n}\nexport type MutationDefinition<QueryArg, BaseQuery extends BaseQueryFn, TagTypes extends string, ResultType, ReducerPath extends string = string> = BaseEndpointDefinition<QueryArg, BaseQuery, ResultType> & MutationExtraOptions<TagTypes, ResultType, QueryArg, BaseQuery, ReducerPath>;\nexport type EndpointDefinition<QueryArg, BaseQuery extends BaseQueryFn, TagTypes extends string, ResultType, ReducerPath extends string = string> = QueryDefinition<QueryArg, BaseQuery, TagTypes, ResultType, ReducerPath> | MutationDefinition<QueryArg, BaseQuery, TagTypes, ResultType, ReducerPath>;\nexport type EndpointDefinitions = Record<string, EndpointDefinition<any, any, any, any>>;\nexport function isQueryDefinition(e: EndpointDefinition<any, any, any, any>): e is QueryDefinition<any, any, any, any> {\n return e.type === DefinitionType.query;\n}\nexport function isMutationDefinition(e: EndpointDefinition<any, any, any, any>): e is MutationDefinition<any, any, any, any> {\n return e.type === DefinitionType.mutation;\n}\nexport type EndpointBuilder<BaseQuery extends BaseQueryFn, TagTypes extends string, ReducerPath extends string> = {\n /**\n * An endpoint definition that retrieves data, and may provide tags to the cache.\n *\n * @example\n * ```js\n * // codeblock-meta title=\"Example of all query endpoint options\"\n * const api = createApi({\n * baseQuery,\n * endpoints: (build) => ({\n * getPost: build.query({\n * query: (id) => ({ url: `post/${id}` }),\n * // Pick out data and prevent nested properties in a hook or selector\n * transformResponse: (response) => response.data,\n * // Pick out error and prevent nested properties in a hook or selector\n * transformErrorResponse: (response) => response.error,\n * // `result` is the server response\n * providesTags: (result, error, id) => [{ type: 'Post', id }],\n * // trigger side effects or optimistic updates\n * onQueryStarted(id, { dispatch, getState, extra, requestId, queryFulfilled, getCacheEntry, updateCachedData }) {},\n * // handle subscriptions etc\n * onCacheEntryAdded(id, { dispatch, getState, extra, requestId, cacheEntryRemoved, cacheDataLoaded, getCacheEntry, updateCachedData }) {},\n * }),\n * }),\n *});\n *```\n */\n query<ResultType, QueryArg>(definition: OmitFromUnion<QueryDefinition<QueryArg, BaseQuery, TagTypes, ResultType, ReducerPath>, 'type'>): QueryDefinition<QueryArg, BaseQuery, TagTypes, ResultType, ReducerPath>;\n /**\n * An endpoint definition that alters data on the server or will possibly invalidate the cache.\n *\n * @example\n * ```js\n * // codeblock-meta title=\"Example of all mutation endpoint options\"\n * const api = createApi({\n * baseQuery,\n * endpoints: (build) => ({\n * updatePost: build.mutation({\n * query: ({ id, ...patch }) => ({ url: `post/${id}`, method: 'PATCH', body: patch }),\n * // Pick out data and prevent nested properties in a hook or selector\n * transformResponse: (response) => response.data,\n * // Pick out error and prevent nested properties in a hook or selector\n * transformErrorResponse: (response) => response.error,\n * // `result` is the server response\n * invalidatesTags: (result, error, id) => [{ type: 'Post', id }],\n * // trigger side effects or optimistic updates\n * onQueryStarted(id, { dispatch, getState, extra, requestId, queryFulfilled, getCacheEntry }) {},\n * // handle subscriptions etc\n * onCacheEntryAdded(id, { dispatch, getState, extra, requestId, cacheEntryRemoved, cacheDataLoaded, getCacheEntry }) {},\n * }),\n * }),\n * });\n * ```\n */\n mutation<ResultType, QueryArg>(definition: OmitFromUnion<MutationDefinition<QueryArg, BaseQuery, TagTypes, ResultType, ReducerPath>, 'type'>): MutationDefinition<QueryArg, BaseQuery, TagTypes, ResultType, ReducerPath>;\n};\nexport type AssertTagTypes = <T extends FullTagDescription<string>>(t: T) => T;\nexport function calculateProvidedBy<ResultType, QueryArg, ErrorType, MetaType>(description: ResultDescription<string, ResultType, QueryArg, ErrorType, MetaType> | undefined, result: ResultType | undefined, error: ErrorType | undefined, queryArg: QueryArg, meta: MetaType | undefined, assertTagTypes: AssertTagTypes): readonly FullTagDescription<string>[] {\n if (isFunction(description)) {\n return description((result as ResultType), (error as undefined), queryArg, (meta as MetaType)).map(expandTagDescription).map(assertTagTypes);\n }\n if (Array.isArray(description)) {\n return description.map(expandTagDescription).map(assertTagTypes);\n }\n return [];\n}\nfunction isFunction<T>(t: T): t is Extract<T, Function> {\n return typeof t === 'function';\n}\nexport function expandTagDescription(description: TagDescription<string>): FullTagDescription<string> {\n return typeof description === 'string' ? {\n type: description\n } : description;\n}\nexport type QueryArgFrom<D extends BaseEndpointDefinition<any, any, any>> = D extends BaseEndpointDefinition<infer QA, any, any> ? QA : unknown;\nexport type ResultTypeFrom<D extends BaseEndpointDefinition<any, any, any>> = D extends BaseEndpointDefinition<any, any, infer RT> ? RT : unknown;\nexport type ReducerPathFrom<D extends EndpointDefinition<any, any, any, any, any>> = D extends EndpointDefinition<any, any, any, any, infer RP> ? RP : unknown;\nexport type TagTypesFrom<D extends EndpointDefinition<any, any, any, any>> = D extends EndpointDefinition<any, any, infer RP, any> ? RP : unknown;\nexport type TagTypesFromApi<T> = T extends Api<any, any, any, infer TagTypes> ? TagTypes : never;\nexport type DefinitionsFromApi<T> = T extends Api<any, infer Definitions, any, any> ? Definitions : never;\nexport type TransformedResponse<NewDefinitions extends EndpointDefinitions, K, ResultType> = K extends keyof NewDefinitions ? NewDefinitions[K]['transformResponse'] extends undefined ? ResultType : UnwrapPromise<ReturnType<NonUndefined<NewDefinitions[K]['transformResponse']>>> : ResultType;\nexport type OverrideResultType<Definition, NewResultType> = Definition extends QueryDefinition<infer QueryArg, infer BaseQuery, infer TagTypes, any, infer ReducerPath> ? QueryDefinition<QueryArg, BaseQuery, TagTypes, NewResultType, ReducerPath> : Definition extends MutationDefinition<infer QueryArg, infer BaseQuery, infer TagTypes, any, infer ReducerPath> ? MutationDefinition<QueryArg, BaseQuery, TagTypes, NewResultType, ReducerPath> : never;\nexport type UpdateDefinitions<Definitions extends EndpointDefinitions, NewTagTypes extends string, NewDefinitions extends EndpointDefinitions> = { [K in keyof Definitions]: Definitions[K] extends QueryDefinition<infer QueryArg, infer BaseQuery, any, infer ResultType, infer ReducerPath> ? QueryDefinition<QueryArg, BaseQuery, NewTagTypes, TransformedResponse<NewDefinitions, K, ResultType>, ReducerPath> : Definitions[K] extends MutationDefinition<infer QueryArg, infer BaseQuery, any, infer ResultType, infer ReducerPath> ? MutationDefinition<QueryArg, BaseQuery, NewTagTypes, TransformedResponse<NewDefinitions, K, ResultType>, ReducerPath> : never };","export type Id<T> = { [K in keyof T]: T[K] } & {};\nexport type WithRequiredProp<T, K extends keyof T> = Omit<T, K> & Required<Pick<T, K>>;\nexport type Override<T1, T2> = T2 extends any ? Omit<T1, keyof T2> & T2 : never;\nexport function assertCast<T>(v: any): asserts v is T {}\nexport function safeAssign<T extends object>(target: T, ...args: Array<Partial<NoInfer<T>>>): T {\n return Object.assign(target, ...args);\n}\n\n/**\n * Convert a Union type `(A|B)` to an intersection type `(A&B)`\n */\nexport type UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends (k: infer I) => void ? I : never;\nexport type NonOptionalKeys<T> = { [K in keyof T]-?: undefined extends T[K] ? never : K }[keyof T];\nexport type HasRequiredProps<T, True, False> = NonOptionalKeys<T> extends never ? False : True;\nexport type OptionalIfAllPropsOptional<T> = HasRequiredProps<T, T, T | never>;\nexport type NoInfer<T> = [T][T extends any ? 0 : never];\nexport type NonUndefined<T> = T extends undefined ? never : T;\nexport type UnwrapPromise<T> = T extends PromiseLike<infer V> ? V : T;\nexport type MaybePromise<T> = T | PromiseLike<T>;\nexport type OmitFromUnion<T, K extends keyof T> = T extends any ? Omit<T, K> : never;\nexport type IsAny<T, True, False = never> = true | false extends (T extends never ? true : false) ? True : False;\nexport type CastAny<T, CastTo> = IsAny<T, CastTo, T>;","export function capitalize(str: string) {\n return str.replace(str[0], str[0].toUpperCase());\n}","import type { QueryCacheKey } from './core/apiState';\nimport type { EndpointDefinition } from './endpointDefinitions';\nimport { isPlainObject } from './core/rtkImports';\nconst cache: WeakMap<any, string> | undefined = WeakMap ? new WeakMap() : undefined;\nexport const defaultSerializeQueryArgs: SerializeQueryArgs<any> = ({\n endpointName,\n queryArgs\n}) => {\n let serialized = '';\n const cached = cache?.get(queryArgs);\n if (typeof cached === 'string') {\n serialized = cached;\n } else {\n const stringified = JSON.stringify(queryArgs, (key, value) => {\n // Handle bigints\n value = typeof value === 'bigint' ? {\n $bigint: value.toString()\n } : value;\n // Sort the object keys before stringifying, to prevent useQuery({ a: 1, b: 2 }) having a different cache key than useQuery({ b: 2, a: 1 })\n value = isPlainObject(value) ? Object.keys(value).sort().reduce<any>((acc, key) => {\n acc[key] = (value as any)[key];\n return acc;\n }, {}) : value;\n return value;\n });\n if (isPlainObject(queryArgs)) {\n cache?.set(queryArgs, stringified);\n }\n serialized = stringified;\n }\n return `${endpointName}(${serialized})`;\n};\nexport type SerializeQueryArgs<QueryArgs, ReturnType = string> = (_: {\n queryArgs: QueryArgs;\n endpointDefinition: EndpointDefinition<any, any, any, any>;\n endpointName: string;\n}) => ReturnType;\nexport type InternalSerializeQueryArgs = (_: {\n queryArgs: any;\n endpointDefinition: EndpointDefinition<any, any, any, any>;\n endpointName: string;\n}) => QueryCacheKey;","export const UNINITIALIZED_VALUE = Symbol();\nexport type UninitializedValue = typeof UNINITIALIZED_VALUE;","import { useEffect, useRef, useMemo } from 'react';\nimport type { SerializeQueryArgs } from '@reduxjs/toolkit/query';\nimport type { EndpointDefinition } from '@reduxjs/toolkit/query';\nexport function useStableQueryArgs<T>(queryArgs: T, serialize: SerializeQueryArgs<any>, endpointDefinition: EndpointDefinition<any, any, any, any>, endpointName: string) {\n const incoming = useMemo(() => ({\n queryArgs,\n serialized: typeof queryArgs == 'object' ? serialize({\n queryArgs,\n endpointDefinition,\n endpointName\n }) : queryArgs\n }), [queryArgs, serialize, endpointDefinition, endpointName]);\n const cache = useRef(incoming);\n useEffect(() => {\n if (cache.current.serialized !== incoming.serialized) {\n cache.current = incoming;\n }\n }, [incoming]);\n return cache.current.serialized === incoming.serialized ? cache.current.queryArgs : queryArgs;\n}","import { useEffect, useRef } from 'react';\nimport { shallowEqual } from 'react-redux';\nexport function useShallowStableValue<T>(value: T) {\n const cache = useRef(value);\n useEffect(() => {\n if (!shallowEqual(cache.current, value)) {\n cache.current = value;\n }\n }, [value]);\n return shallowEqual(cache.current, value) ? cache.current : value;\n}","import { formatProdErrorMessage as _formatProdErrorMessage, formatProdErrorMessage as _formatProdErrorMessage2 } from \"@reduxjs/toolkit\";\nimport type { Selector, ThunkAction, ThunkDispatch, UnknownAction } from '@reduxjs/toolkit';\nimport type { Api, ApiContext, ApiEndpointMutation, ApiEndpointQuery, BaseQueryFn, CoreModule, EndpointDefinitions, MutationActionCreatorResult, MutationDefinition, MutationResultSelectorResult, PrefetchOptions, QueryActionCreatorResult, QueryArgFrom, QueryDefinition, QueryKeys, QueryResultSelectorResult, QuerySubState, ResultTypeFrom, RootState, SerializeQueryArgs, SkipToken, SubscriptionOptions, TSHelpersId, TSHelpersNoInfer, TSHelpersOverride } from '@reduxjs/toolkit/query';\nimport { QueryStatus, skipToken } from '@reduxjs/toolkit/query';\nimport type { DependencyList } from 'react';\nimport { useCallback, useDebugValue, useEffect, useLayoutEffect, useMemo, useRef, useState } from 'react';\nimport { shallowEqual } from 'react-redux';\nimport type { SubscriptionSelectors } from '../core';\nimport { defaultSerializeQueryArgs } from '../defaultSerializeQueryArgs';\nimport type { UninitializedValue } from './constants';\nimport { UNINITIALIZED_VALUE } from './constants';\nimport type { ReactHooksModuleOptions } from './module';\nimport { useStableQueryArgs } from './useSerializedStableValue';\nimport { useShallowStableValue } from './useShallowStableValue';\n\n// Copy-pasted from React-Redux\nconst canUseDOM = () => !!(typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof window.document.createElement !== 'undefined');\nconst isDOM = /* @__PURE__ */canUseDOM();\n\n// Under React Native, we know that we always want to use useLayoutEffect\n\nconst isRunningInReactNative = () => typeof navigator !== 'undefined' && navigator.product === 'ReactNative';\nconst isReactNative = /* @__PURE__ */isRunningInReactNative();\nconst getUseIsomorphicLayoutEffect = () => isDOM || isReactNative ? useLayoutEffect : useEffect;\nexport const useIsomorphicLayoutEffect = /* @__PURE__ */getUseIsomorphicLayoutEffect();\nexport type QueryHooks<Definition extends QueryDefinition<any, any, any, any, any>> = {\n useQuery: UseQuery<Definition>;\n useLazyQuery: UseLazyQuery<Definition>;\n useQuerySubscription: UseQuerySubscription<Definition>;\n useLazyQuerySubscription: UseLazyQuerySubscription<Definition>;\n useQueryState: UseQueryState<Definition>;\n};\nexport type MutationHooks<Definition extends MutationDefinition<any, any, any, any, any>> = {\n useMutation: UseMutation<Definition>;\n};\n\n/**\n * A React hook that automatically triggers fetches of data from an endpoint, 'subscribes' the component to the cached data, and reads the request status and cached data from the Redux store. The component will re-render as the loading status changes and the data becomes available.\n *\n * The query arg is used as a cache key. Changing the query arg will tell the hook to re-fetch the data if it does not exist in the cache already, and the hook will return the data for that query arg once it's available.\n *\n * This hook combines the functionality of both [`useQueryState`](#usequerystate) and [`useQuerySubscription`](#usequerysubscription) together, and is intended to be used in the majority of situations.\n *\n * #### Features\n *\n * - Automatically triggers requests to retrieve data based on the hook argument and whether cached data exists by default\n * - 'Subscribes' the component to keep cached data in the store, and 'unsubscribes' when the component unmounts\n * - Accepts polling/re-fetching options to trigger automatic re-fetches when the corresponding criteria is met\n * - Returns the latest request status and cached data from the Redux store\n * - Re-renders as the request status changes and data becomes available\n */\nexport type UseQuery<D extends QueryDefinition<any, any, any, any>> = <R extends Record<string, any> = UseQueryStateDefaultResult<D>>(arg: QueryArgFrom<D> | SkipToken, options?: UseQuerySubscriptionOptions & UseQueryStateOptions<D, R>) => UseQueryHookResult<D, R>;\nexport type TypedUseQuery<ResultType, QueryArg, BaseQuery extends BaseQueryFn> = UseQuery<QueryDefinition<QueryArg, BaseQuery, string, ResultType, string>>;\nexport type UseQueryHookResult<D extends QueryDefinition<any, any, any, any>, R = UseQueryStateDefaultResult<D>> = UseQueryStateResult<D, R> & UseQuerySubscriptionResult<D>;\n\n/**\n * Helper type to manually type the result\n * of the `useQuery` hook in userland code.\n */\nexport type TypedUseQueryHookResult<ResultType, QueryArg, BaseQuery extends BaseQueryFn, R = UseQueryStateDefaultResult<QueryDefinition<QueryArg, BaseQuery, string, ResultType, string>>> = TypedUseQueryStateResult<ResultType, QueryArg, BaseQuery, R> & TypedUseQuerySubscriptionResult<ResultType, QueryArg, BaseQuery>;\ntype UseQuerySubscriptionOptions = SubscriptionOptions & {\n /**\n * Prevents a query from automatically running.\n *\n * @remarks\n * When `skip` is true (or `skipToken` is passed in as `arg`):\n *\n * - **If the query has cached data:**\n * * The cached data **will not be used** on the initial load, and will ignore updates from any identical query until the `skip` condition is removed\n * * The query will have a status of `uninitialized`\n * * If `skip: false` is set after the initial load, the cached result will be used\n * - **If the query does not have cached data:**\n * * The query will have a status of `uninitialized`\n * * The query will not exist in the state when viewed with the dev tools\n * * The query will not automatically fetch on mount\n * * The query will not automatically run when additional components with the same query are added that do run\n *\n * @example\n * ```tsx\n * // codeblock-meta no-transpile title=\"Skip example\"\n * const Pokemon = ({ name, skip }: { name: string; skip: boolean }) => {\n * const { data, error, status } = useGetPokemonByNameQuery(name, {\n * skip,\n * });\n *\n * return (\n * <div>\n * {name} - {status}\n * </div>\n * );\n * };\n * ```\n */\n skip?: boolean;\n /**\n * Defaults to `false`. This setting allows you to control whether if a cached result is already available, RTK Query will only serve a cached result, or if it should `refetch` when set to `true` or if an adequate amount of time has passed since the last successful query result.\n * - `false` - Will not cause a query to be performed _unless_ it does not exist yet.\n * - `true` - Will always refetch when a new subscriber to a query is added. Behaves the same as calling the `refetch` callback or passing `forceRefetch: true` in the action creator.\n * - `number` - **Value is in seconds**. If a number is provided and there is an existing query in the cache, it will compare the current time vs the last fulfilled timestamp, and only refetch if enough time has elapsed.\n *\n * If you specify this option alongside `skip: true`, this **will not be evaluated** until `skip` is false.\n */\n refetchOnMountOrArgChange?: boolean | number;\n};\n\n/**\n * A React hook that automatically triggers fetches of data from an endpoint, and 'subscribes' the component to the cached data.\n *\n * The query arg is used as a cache key. Changing the query arg will tell the hook to re-fetch the data if it does not exist in the cache already.\n *\n * Note that this hook does not return a request status or cached data. For that use-case, see [`useQuery`](#usequery) or [`useQueryState`](#usequerystate).\n *\n * #### Features\n *\n * - Automatically triggers requests to retrieve data based on the hook argument and whether cached data exists by default\n * - 'Subscribes' the component to keep cached data in the store, and 'unsubscribes' when the component unmounts\n * - Accepts polling/re-fetching options to trigger automatic re-fetches when the corresponding criteria is met\n */\nexport type UseQuerySubscription<D extends QueryDefinition<any, any, any, any>> = (arg: QueryArgFrom<D> | SkipToken, options?: UseQuerySubscriptionOptions) => UseQuerySubscriptionResult<D>;\nexport type TypedUseQuerySubscription<ResultType, QueryArg, BaseQuery extends BaseQueryFn> = UseQuerySubscription<QueryDefinition<QueryArg, BaseQuery, string, ResultType, string>>;\nexport type UseQuerySubscriptionResult<D extends QueryDefinition<any, any, any, any>> = Pick<QueryActionCreatorResult<D>, 'refetch'>;\n\n/**\n * Helper type to manually type the result\n * of the `useQuerySubscription` hook in userland code.\n */\nexport type TypedUseQuerySubscriptionResult<ResultType, QueryArg, BaseQuery extends BaseQueryFn> = UseQuerySubscriptionResult<QueryDefinition<QueryArg, BaseQuery, string, ResultType, string>>;\nexport type UseLazyQueryLastPromiseInfo<D extends QueryDefinition<any, any, any, any>> = {\n lastArg: QueryArgFrom<D>;\n};\n\n/**\n * A React hook similar to [`useQuery`](#usequery), but with manual control over when the data fetching occurs.\n *\n * This hook includes the functionality of [`useLazyQuerySubscription`](#uselazyquerysubscription).\n *\n * #### Features\n *\n * - Manual control over firing a request to retrieve data\n * - 'Subscribes' the component to keep cached data in the store, and 'unsubscribes' when the component unmounts\n * - Returns the latest request status and cached data from the Redux store\n * - Re-renders as the request status changes and data becomes available\n * - Accepts polling/re-fetching options to trigger automatic re-fetches when the corresponding criteria is met and the fetch has been manually called at least once\n *\n * #### Note\n *\n * When the trigger function returned from a LazyQuery is called, it always initiates a new request to the server even if there is cached data. Set `preferCacheValue`(the second argument to the function) as `true` if you want it to immediately return a cached value if one exists.\n */\nexport type UseLazyQuery<D extends QueryDefinition<any, any, any, any>> = <R extends Record<string, any> = UseQueryStateDefaultResult<D>>(options?: SubscriptionOptions & Omit<UseQueryStateOptions<D, R>, 'skip'>) => [LazyQueryTrigger<D>, UseQueryStateResult<D, R>, UseLazyQueryLastPromiseInfo<D>];\nexport type TypedUseLazyQuery<ResultType, QueryArg, BaseQuery extends BaseQueryFn> = UseLazyQuery<QueryDefinition<QueryArg, BaseQuery, string, ResultType, string>>;\nexport type LazyQueryTrigger<D extends QueryDefinition<any, any, any, any>> = {\n /**\n * Triggers a lazy query.\n *\n * By default, this will start a new request even if there is already a value in the cache.\n * If you want to use the cache value and only start a request if there is no cache value, set the second argument to `true`.\n *\n * @remarks\n * If you need to access the error or success payload immediately after a lazy query, you can chain .unwrap().\n *\n * @example\n * ```ts\n * // codeblock-meta title=\"Using .unwrap with async await\"\n * try {\n * const payload = await getUserById(1).unwrap();\n * console.log('fulfilled', payload)\n * } catch (error) {\n * console.error('rejected', error);\n * }\n * ```\n */\n (arg: QueryArgFrom<D>, preferCacheValue?: boolean): QueryActionCreatorResult<D>;\n};\nexport type TypedLazyQueryTrigger<ResultType, QueryArg, BaseQuery extends BaseQueryFn> = LazyQueryTrigger<QueryDefinition<QueryArg, BaseQuery, string, ResultType, string>>;\n\n/**\n * A React hook similar to [`useQuerySubscription`](#usequerysubscription), but with manual control over when the data fetching occurs.\n *\n * Note that this hook does not return a request status or cached data. For that use-case, see [`useLazyQuery`](#uselazyquery).\n *\n * #### Features\n *\n * - Manual control over firing a request to retrieve data\n * - 'Subscribes' the component to keep cached data in the store, and 'unsubscribes' when the component unmounts\n * - Accepts polling/re-fetching options to trigger automatic re-fetches when the corresponding criteria is met and the fetch has been manually called at least once\n */\nexport type UseLazyQuerySubscription<D extends QueryDefinition<any, any, any, any>> = (options?: SubscriptionOptions) => readonly [LazyQueryTrigger<D>, QueryArgFrom<D> | UninitializedValue];\nexport type TypedUseLazyQuerySubscription<ResultType, QueryArg, BaseQuery extends BaseQueryFn> = UseLazyQuerySubscription<QueryDefinition<QueryArg, BaseQuery, string, ResultType, string>>;\nexport type QueryStateSelector<R extends Record<string, any>, D extends QueryDefinition<any, any, any, any>> = (state: UseQueryStateDefaultResult<D>) => R;\n\n/**\n * A React hook that reads the request status and cached data from the Redux store. The component will re-render as the loading status changes and the data becomes available.\n *\n * Note that this hook does not trigger fetching new data. For that use-case, see [`useQuery`](#usequery) or [`useQuerySubscription`](#usequerysubscription).\n *\n * #### Features\n *\n * - Returns the latest request status and cached data from the Redux store\n * - Re-renders as the request status changes and data becomes available\n */\nexport type UseQueryState<D extends QueryDefinition<any, any, any, any>> = <R extends Record<string, any> = UseQueryStateDefaultResult<D>>(arg: QueryArgFrom<D> | SkipToken, options?: UseQueryStateOptions<D, R>) => UseQueryStateResult<D, R>;\nexport type TypedUseQueryState<ResultType, QueryArg, BaseQuery extends BaseQueryFn> = UseQueryState<QueryDefinition<QueryArg, BaseQuery, string, ResultType, string>>;\n\n/**\n * @internal\n */\nexport type UseQueryStateOptions<D extends QueryDefinition<any, any, any, any>, R extends Record<string, any>> = {\n /**\n * Prevents a query from automatically running.\n *\n * @remarks\n * When skip is true:\n *\n * - **If the query has cached data:**\n * * The cached data **will not be used** on the initial load, and will ignore updates from any identical query until the `skip` condition is removed\n * * The query will have a status of `uninitialized`\n * * If `skip: false` is set after skipping the initial load, the cached result will be used\n * - **If the query does not have cached data:**\n * * The query will have a status of `uninitialized`\n * * The query will not exist in the state when viewed with the dev tools\n * * The query will not automatically fetch on mount\n * * The query will not automatically run when additional components with the same query are added that do run\n *\n * @example\n * ```ts\n * // codeblock-meta title=\"Skip example\"\n * const Pokemon = ({ name, skip }: { name: string; skip: boolean }) => {\n * const { data, error, status } = useGetPokemonByNameQuery(name, {\n * skip,\n * });\n *\n * return (\n * <div>\n * {name} - {status}\n * </div>\n * );\n * };\n * ```\n */\n skip?: boolean;\n /**\n * `selectFromResult` allows you to get a specific segment from a query result in a performant manner.\n * When using this feature, the component will not rerender unless the underlying data of the selected item has changed.\n * If the selected item is one element in a larger collection, it will disregard changes to elements in the same collection.\n *\n * @example\n * ```ts\n * // codeblock-meta title=\"Using selectFromResult to extract a single result\"\n * function PostsList() {\n * const { data: posts } = api.useGetPostsQuery();\n *\n * return (\n * <ul>\n * {posts?.data?.map((post) => (\n * <PostById key={post.id} id={post.id} />\n * ))}\n * </ul>\n * );\n * }\n *\n * function PostById({ id }: { id: number }) {\n * // Will select the post with the given id, and will only rerender if the given posts data changes\n * const { post } = api.useGetPostsQuery(undefined, {\n * selectFromResult: ({ data }) => ({ post: data?.find((post) => post.id === id) }),\n * });\n *\n * return <li>{post?.name}</li>;\n * }\n * ```\n */\n selectFromResult?: QueryStateSelector<R, D>;\n};\n\n/**\n * Provides a way to define a \"pre-typed\" version of\n * {@linkcode UseQueryStateOptions} with specific options for a given query.\n * This is particularly useful for setting default query behaviors such as\n * refetching strategies, which can be overridden as needed.\n *\n * @example\n * <caption>#### __Create a `useQuery` hook with default options__</caption>\n *\n * ```ts\n * import type {\n * SubscriptionOptions,\n * TypedUseQueryStateOptions,\n * } from '@reduxjs/toolkit/query/react'\n * import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react'\n *\n * type Post = {\n * id: number\n * name: string\n * }\n *\n * const api = createApi({\n * baseQuery: fetchBaseQuery({ baseUrl: '/' }),\n * tagTypes: ['Post'],\n * endpoints: (build) => ({\n * getPosts: build.query<Post[], void>({\n * query: () => 'posts',\n * }),\n * }),\n * })\n *\n * const { useGetPostsQuery } = api\n *\n * export const useGetPostsQueryWithDefaults = <\n * SelectedResult extends Record<string, any>,\n * >(\n * overrideOptions: TypedUseQueryStateOptions<\n * Post[],\n * void,\n * ReturnType<typeof fetchBaseQuery>,\n * SelectedResult\n * > &\n * SubscriptionOptions,\n * ) =>\n * useGetPostsQuery(undefined, {\n * // Insert default options here\n *\n * refetchOnMountOrArgChange: true,\n * refetchOnFocus: true,\n * ...overrideOptions,\n * })\n * ```\n *\n * @template ResultType - The type of the result `data` returned by the query.\n * @template QueryArg - The type of the argument passed into the query.\n * @template BaseQuery - The type of the base query function being used.\n * @template SelectedResult - The type of the selected result returned by the __`selectFromResult`__ function.\n *\n * @since 2.7.8\n * @public\n */\nexport type TypedUseQueryStateOptions<ResultType, QueryArg, BaseQuery extends BaseQueryFn, SelectedResult extends Record<string, any> = UseQueryStateDefaultResult<QueryDefinition<QueryArg, BaseQuery, string, ResultType, string>>> = UseQueryStateOptions<QueryDefinition<QueryArg, BaseQuery, string, ResultType, string>, SelectedResult>;\nexport type UseQueryStateResult<_ extends QueryDefinition<any, any, any, any>, R> = TSHelpersNoInfer<R>;\n\n/**\n * Helper type to manually type the result\n * of the `useQueryState` hook in userland code.\n */\nexport type TypedUseQueryStateResult<ResultType, QueryArg, BaseQuery extends BaseQueryFn, R = UseQueryStateDefaultResult<QueryDefinition<QueryArg, BaseQuery, string, ResultType, string>>> = TSHelpersNoInfer<R>;\ntype UseQueryStateBaseResult<D extends QueryDefinition<any, any, any, any>> = QuerySubState<D> & {\n /**\n * Where `data` tries to hold data as much as possible, also re-using\n * data from the last arguments passed into the hook, this property\n * will always contain the received data from the query, for the current query arguments.\n */\n currentData?: ResultTypeFrom<D>;\n /**\n * Query has not started yet.\n */\n isUninitialized: false;\n /**\n * Query is currently loading for the first time. No data yet.\n */\n isLoading: false;\n /**\n * Query is currently fetching, but might have data from an earlier request.\n */\n isFetching: false;\n /**\n * Query has data from a successful load.\n */\n isSuccess: false;\n /**\n * Query is currently in \"error\" state.\n */\n isError: false;\n};\ntype UseQueryStateDefaultResult<D extends QueryDefinition<any, any, any, any>> = TSHelpersId<TSHelpersOverride<Extract<UseQueryStateBaseResult<D>, {\n status: QueryStatus.uninitialized;\n}>, {\n isUninitialized: true;\n}> | TSHelpersOverride<UseQueryStateBaseResult<D>, {\n isLoading: true;\n isFetching: boolean;\n data: undefined;\n} | ({\n isSuccess: true;\n isFetching: true;\n error: undefined;\n} & Required<Pick<UseQueryStateBaseResult<D>, 'data' | 'fulfilledTimeStamp'>>) | ({\n isSuccess: true;\n isFetching: false;\n error: undefined;\n} & Required<Pick<UseQueryStateBaseResult<D>, 'data' | 'fulfilledTimeStamp' | 'currentData'>>) | ({\n isError: true;\n} & Required<Pick<UseQueryStateBaseResult<D>, 'error'>>)>> & {\n /**\n * @deprecated Included for completeness, but discouraged.\n * Please use the `isLoading`, `isFetching`, `isSuccess`, `isError`\n * and `isUninitialized` flags instead\n */\n status: QueryStatus;\n};\nexport type MutationStateSelector<R extends Record<string, any>, D extends MutationDefinition<any, any, any, any>> = (state: MutationResultSelectorResult<D>) => R;\nexport type UseMutationStateOptions<D extends MutationDefinition<any, any, any, any>, R extends Record<string, any>> = {\n selectFromResult?: MutationStateSelector<R, D>;\n fixedCacheKey?: string;\n};\nexport type UseMutationStateResult<D extends MutationDefinition<any, any, any, any>, R> = TSHelpersNoInfer<R> & {\n originalArgs?: QueryArgFrom<D>;\n /**\n * Resets the hook state to its initial `uninitialized` state.\n * This will also remove the last result from the cache.\n */\n reset: () => void;\n};\n\n/**\n * Helper type to manually type the result\n * of the `useMutation` hook in userland code.\n */\nexport type TypedUseMutationResult<ResultType, QueryArg, BaseQuery extends BaseQueryFn, R = MutationResultSelectorResult<MutationDefinition<QueryArg, BaseQuery, string, ResultType, string>>> = UseMutationStateResult<MutationDefinition<QueryArg, BaseQuery, string, ResultType, string>, R>;\n\n/**\n * A React hook that lets you trigger an update request for a given endpoint, and subscribes the component to read the request status from the Redux store. The component will re-render as the loading status changes.\n *\n * #### Features\n *\n * - Manual control over firing a request to alter data on the server or possibly invalidate the cache\n * - 'Subscribes' the component to keep cached data in the store, and 'unsubscribes' when the component unmounts\n * - Returns the latest request status and cached data from the Redux store\n * - Re-renders as the request status changes and data becomes available\n */\nexport type UseMutation<D extends MutationDefinition<any, any, any, any>> = <R extends Record<string, any> = MutationResultSelectorResult<D>>(options?: UseMutationStateOptions<D, R>) => readonly [MutationTrigger<D>, UseMutationStateResult<D, R>];\nexport type TypedUseMutation<ResultType, QueryArg, BaseQuery extends BaseQueryFn> = UseMutation<MutationDefinition<QueryArg, BaseQuery, string, ResultType, string>>;\nexport type MutationTrigger<D extends MutationDefinition<any, any, any, any>> = {\n /**\n * Triggers the mutation and returns a Promise.\n * @remarks\n * If you need to access the error or success payload immediately after a mutation, you can chain .unwrap().\n *\n * @example\n * ```ts\n * // codeblock-meta title=\"Using .unwrap with async await\"\n * try {\n * const payload = await addPost({ id: 1, name: 'Example' }).unwrap();\n * console.log('fulfilled', payload)\n * } catch (error) {\n * console.error('rejected', error);\n * }\n * ```\n */\n (arg: QueryArgFrom<D>): MutationActionCreatorResult<D>;\n};\nexport type TypedMutationTrigger<ResultType, QueryArg, BaseQuery extends BaseQueryFn> = MutationTrigger<MutationDefinition<QueryArg, BaseQuery, string, ResultType, string>>;\n\n/**\n * Wrapper around `defaultQueryStateSelector` to be used in `useQuery`.\n * We want the initial render to already come back with\n * `{ isUninitialized: false, isFetching: true, isLoading: true }`\n * to prevent that the library user has to do an additional check for `isUninitialized`/\n */\nconst noPendingQueryStateSelector: QueryStateSelector<any, any> = selected => {\n if (selected.isUninitialized) {\n return ({\n ...selected,\n isUninitialized: false,\n isFetching: true,\n isLoading: selected.data !== undefined ? false : true,\n status: QueryStatus.pending\n } as any);\n }\n return selected;\n};\ntype GenericPrefetchThunk = (endpointName: any, arg: any, options: PrefetchOptions) => ThunkAction<void, any, any, UnknownAction>;\n\n/**\n *\n * @param opts.api - An API with defined endpoints to create hooks for\n * @param opts.moduleOptions.batch - The version of the `batchedUpdates` function to be used\n * @param opts.moduleOptions.useDispatch - The version of the `useDispatch` hook to be used\n * @param opts.moduleOptions.useSelector - The version of the `useSelector` hook to be used\n * @returns An object containing functions to generate hooks based on an endpoint\n */\nexport function buildHooks<Definitions extends EndpointDefinitions>({\n api,\n moduleOptions: {\n batch,\n hooks: {\n useDispatch,\n useSelector,\n useStore\n },\n unstable__sideEffectsInRender,\n createSelector\n },\n serializeQueryArgs,\n context\n}: {\n api: Api<any, Definitions, any, any, CoreModule>;\n moduleOptions: Required<ReactHooksModuleOptions>;\n serializeQueryArgs: SerializeQueryArgs<any>;\n context: ApiContext<Definitions>;\n}) {\n const usePossiblyImmediateEffect: (effect: () => void | undefined, deps?: DependencyList) => void = unstable__sideEffectsInRender ? cb => cb() : useEffect;\n return {\n buildQueryHooks,\n buildMutationHook,\n usePrefetch\n };\n function queryStatePreSelector(currentState: QueryResultSelectorResult<any>, lastResult: UseQueryStateDefaultResult<any> | undefined, queryArgs: any): UseQueryStateDefaultResult<any> {\n // if we had a last result and the current result is uninitialized,\n // we might have called `api.util.resetApiState`\n // in this case, reset the hook\n if (lastResult?.endpointName && currentState.isUninitialized) {\n const {\n endpointName\n } = lastResult;\n const endpointDefinition = context.endpointDefinitions[endpointName];\n if (serializeQueryArgs({\n queryArgs: lastResult.originalArgs,\n endpointDefinition,\n endpointName\n }) === serializeQueryArgs({\n queryArgs,\n endpointDefinition,\n endpointName\n })) lastResult = undefined;\n }\n\n // data is the last known good request result we have tracked - or if none has been tracked yet the last good result for the current args\n let data = currentState.isSuccess ? currentState.data : lastResult?.data;\n if (data === undefined) data = currentState.data;\n const hasData = data !== undefined;\n\n // isFetching = true any time a request is in flight\n const isFetching = currentState.isLoading;\n // isLoading = true only when loading while no data is present yet (initial load with no data in the cache)\n const isLoading = (!lastResult || lastResult.isLoading || lastResult.isUninitialized) && !hasData && isFetching;\n // isSuccess = true when data is present\n const isSuccess = currentState.isSuccess || isFetching && hasData;\n return ({\n ...currentState,\n data,\n currentData: currentState.data,\n isFetching,\n isLoading,\n isSuccess\n } as UseQueryStateDefaultResult<any>);\n }\n function usePrefetch<EndpointName extends QueryKeys<Definitions>>(endpointName: EndpointName, defaultOptions?: PrefetchOptions) {\n const dispatch = useDispatch<ThunkDispatch<any, any, UnknownAction>>();\n const stableDefaultOptions = useShallowStableValue(defaultOptions);\n return useCallback((arg: any, options?: PrefetchOptions) => dispatch((api.util.prefetch as GenericPrefetchThunk)(endpointName, arg, {\n ...stableDefaultOptions,\n ...options\n })), [endpointName, dispatch, stableDefaultOptions]);\n }\n function buildQueryHooks(name: string): QueryHooks<any> {\n const useQuerySubscription: UseQuerySubscription<any> = (arg: any, {\n refetchOnReconnect,\n refetchOnFocus,\n refetchOnMountOrArgChange,\n skip = false,\n pollingInterval = 0,\n skipPollingIfUnfocused = false\n } = {}) => {\n const {\n initiate\n } = (api.endpoints[name] as ApiEndpointQuery<QueryDefinition<any, any, any, any, any>, Definitions>);\n const dispatch = useDispatch<ThunkDispatch<any, any, UnknownAction>>();\n\n // TODO: Change this to `useRef<SubscriptionSelectors>(undefined)` after upgrading to React 19.\n /**\n * @todo Change this to `useRef<SubscriptionSelectors>(undefined)` after upgrading to React 19.\n */\n const subscriptionSelectorsRef = useRef<SubscriptionSelectors | undefined>(undefined);\n if (!subscriptionSelectorsRef.current) {\n const returnedValue = dispatch(api.internalActions.internal_getRTKQSubscriptions());\n if (process.env.NODE_ENV !== 'production') {\n if (typeof returnedValue !== 'object' || typeof returnedValue?.type === 'string') {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage(37) : `Warning: Middleware for RTK-Query API at reducerPath \"${api.reducerPath}\" has not been added to the store.\n You must add the middleware for RTK-Query to function correctly!`);\n }\n }\n subscriptionSelectorsRef.current = ((returnedValue as unknown) as SubscriptionSelectors);\n }\n const stableArg = useStableQueryArgs(skip ? skipToken : arg,\n // Even if the user provided a per-endpoint `serializeQueryArgs` with\n // a consistent return value, _here_ we want to use the default behavior\n // so we can tell if _anything_ actually changed. Otherwise, we can end up\n // with a case where the query args did change but the serialization doesn't,\n // and then we never try to initiate a refetch.\n defaultSerializeQueryArgs, context.endpointDefinitions[name], name);\n const stableSubscriptionOptions = useShallowStableValue({\n refetchOnReconnect,\n refetchOnFocus,\n pollingInterval,\n skipPollingIfUnfocused\n });\n const lastRenderHadSubscription = useRef(false);\n\n // TODO: Change this to `useRef<QueryActionCreatorResult<any>>(undefined)` after upgrading to React 19.\n /**\n * @todo Change this to `useRef<QueryActionCreatorResult<any>>(undefined)` after upgrading to React 19.\n */\n const promiseRef = useRef<QueryActionCreatorResult<any> | undefined>(undefined);\n let {\n queryCacheKey,\n requestId\n } = promiseRef.current || {};\n\n // HACK We've saved the middleware subscription lookup callbacks into a ref,\n // so we can directly check here if the subscription exists for this query.\n let currentRenderHasSubscription = false;\n if (queryCacheKey && requestId) {\n currentRenderHasSubscription = subscriptionSelectorsRef.current.isRequestSubscribed(queryCacheKey, requestId);\n }\n const subscriptionRemoved = !currentRenderHasSubscription && lastRenderHadSubscription.current;\n usePossiblyImmediateEffect(() => {\n lastRenderHadSubscription.current = currentRenderHasSubscription;\n });\n usePossiblyImmediateEffect((): void | undefined => {\n if (subscriptionRemoved) {\n promiseRef.current = undefined;\n }\n }, [subscriptionRemoved]);\n usePossiblyImmediateEffect((): void | undefined => {\n const lastPromise = promiseRef.current;\n if (typeof process !== 'undefined' && process.env.NODE_ENV === 'removeMeOnCompilation') {\n // this is only present to enforce the rule of hooks to keep `isSubscribed` in the dependency array\n console.log(subscriptionRemoved);\n }\n if (stableArg === skipToken) {\n lastPromise?.unsubscribe();\n promiseRef.current = undefined;\n return;\n }\n const lastSubscriptionOptions = promiseRef.current?.subscriptionOptions;\n if (!lastPromise || lastPromise.arg !== stableArg) {\n lastPromise?.unsubscribe();\n const promise = dispatch(initiate(stableArg, {\n subscriptionOptions: stableSubscriptionOptions,\n forceRefetch: refetchOnMountOrArgChange\n }));\n promiseRef.current = promise;\n } else if (stableSubscriptionOptions !== lastSubscriptionOptions) {\n lastPromise.updateSubscriptionOptions(stableSubscriptionOptions);\n }\n }, [dispatch, initiate, refetchOnMountOrArgChange, stableArg, stableSubscriptionOptions, subscriptionRemoved]);\n useEffect(() => {\n return () => {\n promiseRef.current?.unsubscribe();\n promiseRef.current = undefined;\n };\n }, []);\n return useMemo(() => ({\n /**\n * A method to manually refetch data for the query\n */\n refetch: () => {\n if (!promiseRef.current) throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage2(38) : 'Cannot refetch a query that has not been started yet.');\n return promiseRef.current?.refetch();\n }\n }), []);\n };\n const useLazyQuerySubscription: UseLazyQuerySubscription<any> = ({\n refetchOnReconnect,\n refetchOnFocus,\n pollingInterval = 0,\n skipPollingIfUnfocused = false\n } = {}) => {\n const {\n initiate\n } = (api.endpoints[name] as ApiEndpointQuery<QueryDefinition<any, any, any, any, any>, Definitions>);\n const dispatch = useDispatch<ThunkDispatch<any, any, UnknownAction>>();\n const [arg, setArg] = useState<any>(UNINITIALIZED_VALUE);\n\n // TODO: Change this to `useRef<QueryActionCreatorResult<any>>(undefined)` after upgrading to React 19.\n /**\n * @todo Change this to `useRef<QueryActionCreatorResult<any>>(undefined)` after upgrading to React 19.\n */\n const promiseRef = useRef<QueryActionCreatorResult<any> | undefined>(undefined);\n const stableSubscriptionOptions = useShallowStableValue({\n refetchOnReconnect,\n refetchOnFocus,\n pollingInterval,\n skipPollingIfUnfocused\n });\n usePossiblyImmediateEffect(() => {\n const lastSubscriptionOptions = promiseRef.current?.subscriptionOptions;\n if (stableSubscriptionOptions !== lastSubscriptionOptions) {\n promiseRef.current?.updateSubscriptionOptions(stableSubscriptionOptions);\n }\n }, [stableSubscriptionOptions]);\n const subscriptionOptionsRef = useRef(stableSubscriptionOptions);\n usePossiblyImmediateEffect(() => {\n subscriptionOptionsRef.current = stableSubscriptionOptions;\n }, [stableSubscriptionOptions]);\n const trigger = useCallback(function (arg: any, preferCacheValue = false) {\n let promise: QueryActionCreatorResult<any>;\n batch(() => {\n promiseRef.current?.unsubscribe();\n promiseRef.current = promise = dispatch(initiate(arg, {\n subscriptionOptions: subscriptionOptionsRef.current,\n forceRefetch: !preferCacheValue\n }));\n setArg(arg);\n });\n return promise!;\n }, [dispatch, initiate]);\n\n /* cleanup on unmount */\n useEffect(() => {\n return () => {\n promiseRef?.current?.unsubscribe();\n };\n }, []);\n\n /* if \"cleanup on unmount\" was triggered from a fast refresh, we want to reinstate the query */\n useEffect(() => {\n if (arg !== UNINITIALIZED_VALUE && !promiseRef.current) {\n trigger(arg, true);\n }\n }, [arg, trigger]);\n return useMemo(() => ([trigger, arg] as const), [trigger, arg]);\n };\n const useQueryState: UseQueryState<any> = (arg: any, {\n skip = false,\n selectFromResult\n } = {}) => {\n const {\n select\n } = (api.endpoints[name] as ApiEndpointQuery<QueryDefinition<any, any, any, any, any>, Definitions>);\n const stableArg = useStableQueryArgs(skip ? skipToken : arg, serializeQueryArgs, context.endpointDefinitions[name], name);\n type ApiRootState = Parameters<ReturnType<typeof select>>[0];\n const lastValue = useRef<any>(undefined);\n const selectDefaultResult: Selector<ApiRootState, any, [any]> = useMemo(() => createSelector([select(stableArg), (_: ApiRootState, lastResult: any) => lastResult, (_: ApiRootState) => stableArg], queryStatePreSelector, {\n memoizeOptions: {\n resultEqualityCheck: shallowEqual\n }\n }), [select, stableArg]);\n const querySelector: Selector<ApiRootState, any, [any]> = useMemo(() => selectFromResult ? createSelector([selectDefaultResult], selectFromResult, {\n devModeChecks: {\n identityFunctionCheck: 'never'\n }\n }) : selectDefaultResult, [selectDefaultResult, selectFromResult]);\n const currentState = useSelector((state: RootState<Definitions, any, any>) => querySelector(state, lastValue.current), shallowEqual);\n const store = useStore<RootState<Definitions, any, any>>();\n const newLastValue = selectDefaultResult(store.getState(), lastValue.current);\n useIsomorphicLayoutEffect(() => {\n lastValue.current = newLastValue;\n }, [newLastValue]);\n return currentState;\n };\n return {\n useQueryState,\n useQuerySubscription,\n useLazyQuerySubscription,\n useLazyQuery(options) {\n const [trigger, arg] = useLazyQuerySubscription(options);\n const queryStateResults = useQueryState(arg, {\n ...options,\n skip: arg === UNINITIALIZED_VALUE\n });\n const info = useMemo(() => ({\n lastArg: arg\n }), [arg]);\n return useMemo(() => [trigger, queryStateResults, info], [trigger, queryStateResults, info]);\n },\n useQuery(arg, options) {\n const querySubscriptionResults = useQuerySubscription(arg, options);\n const queryStateResults = useQueryState(arg, {\n selectFromResult: arg === skipToken || options?.skip ? undefined : noPendingQueryStateSelector,\n ...options\n });\n const {\n data,\n status,\n isLoading,\n isSuccess,\n isError,\n error\n } = queryStateResults;\n useDebugValue({\n data,\n status,\n isLoading,\n isSuccess,\n isError,\n error\n });\n return useMemo(() => ({\n ...queryStateResults,\n ...querySubscriptionResults\n }), [queryStateResults, querySubscriptionResults]);\n }\n };\n }\n function buildMutationHook(name: string): UseMutation<any> {\n return ({\n selectFromResult,\n fixedCacheKey\n } = {}) => {\n const {\n select,\n initiate\n } = (api.endpoints[name] as ApiEndpointMutation<MutationDefinition<any, any, any, any, any>, Definitions>);\n const dispatch = useDispatch<ThunkDispatch<any, any, UnknownAction>>();\n const [promise, setPromise] = useState<MutationActionCreatorResult<any>>();\n useEffect(() => () => {\n if (!promise?.arg.fixedCacheKey) {\n promise?.reset();\n }\n }, [promise]);\n const triggerMutation = useCallback(function (arg: Parameters<typeof initiate>['0']) {\n const promise = dispatch(initiate(arg, {\n fixedCacheKey\n }));\n setPromise(promise);\n return promise;\n }, [dispatch, initiate, fixedCacheKey]);\n const {\n requestId\n } = promise || {};\n const selectDefaultResult = useMemo(() => select({\n fixedCacheKey,\n requestId: promise?.requestId\n }), [fixedCacheKey, promise, select]);\n const mutationSelector = useMemo((): Selector<RootState<Definitions, any, any>, any> => selectFromResult ? createSelector([selectDefaultResult], selectFromResult) : selectDefaultResult, [selectFromResult, selectDefaultResult]);\n const currentState = useSelector(mutationSelector, shallowEqual);\n const originalArgs = fixedCacheKey == null ? promise?.arg.originalArgs : undefined;\n const reset = useCallback(() => {\n batch(() => {\n if (promise) {\n setPromise(undefined);\n }\n if (fixedCacheKey) {\n dispatch(api.internalActions.removeMutationResult({\n requestId,\n fixedCacheKey\n }));\n }\n });\n }, [dispatch, fixedCacheKey, promise, requestId]);\n const {\n endpointName,\n data,\n status,\n isLoading,\n isSuccess,\n isError,\n error\n } = currentState;\n useDebugValue({\n endpointName,\n data,\n status,\n isLoading,\n isSuccess,\n isError,\n error\n });\n const finalState = useMemo(() => ({\n ...currentState,\n originalArgs,\n reset\n }), [currentState, originalArgs, reset]);\n return useMemo(() => ([triggerMutation, finalState] as const), [triggerMutation, finalState]);\n };\n }\n}","import { formatProdErrorMessage as _formatProdErrorMessage } from \"@reduxjs/toolkit\";\nimport type { Api, BaseQueryFn, EndpointDefinitions, Module, MutationDefinition, PrefetchOptions, QueryArgFrom, QueryDefinition, QueryKeys } from '@reduxjs/toolkit/query';\nimport { batch as rrBatch, useDispatch as rrUseDispatch, useSelector as rrUseSelector, useStore as rrUseStore } from 'react-redux';\nimport { createSelector as _createSelector } from 'reselect';\nimport { isMutationDefinition, isQueryDefinition } from '../endpointDefinitions';\nimport { safeAssign } from '../tsHelpers';\nimport { capitalize, countObjectKeys } from '../utils';\nimport type { MutationHooks, QueryHooks } from './buildHooks';\nimport { buildHooks } from './buildHooks';\nimport type { HooksWithUniqueNames } from './namedHooks';\nexport const reactHooksModuleName = /* @__PURE__ */Symbol();\nexport type ReactHooksModule = typeof reactHooksModuleName;\ndeclare module '@reduxjs/toolkit/query' {\n export interface ApiModules<\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n BaseQuery extends BaseQueryFn, Definitions extends EndpointDefinitions,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ReducerPath extends string,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n TagTypes extends string> {\n [reactHooksModuleName]: {\n /**\n * Endpoints based on the input endpoints provided to `createApi`, containing `select`, `hooks` and `action matchers`.\n */\n endpoints: { [K in keyof Definitions]: Definitions[K] extends QueryDefinition<any, any, any, any, any> ? QueryHooks<Definitions[K]> : Definitions[K] extends MutationDefinition<any, any, any, any, any> ? MutationHooks<Definitions[K]> : never };\n /**\n * A hook that accepts a string endpoint name, and provides a callback that when called, pre-fetches the data for that endpoint.\n */\n usePrefetch<EndpointName extends QueryKeys<Definitions>>(endpointName: EndpointName, options?: PrefetchOptions): (arg: QueryArgFrom<Definitions[EndpointName]>, options?: PrefetchOptions) => void;\n } & HooksWithUniqueNames<Definitions>;\n }\n}\ntype RR = typeof import('react-redux');\nexport interface ReactHooksModuleOptions {\n /**\n * The hooks from React Redux to be used\n */\n hooks?: {\n /**\n * The version of the `useDispatch` hook to be used\n */\n useDispatch: RR['useDispatch'];\n /**\n * The version of the `useSelector` hook to be used\n */\n useSelector: RR['useSelector'];\n /**\n * The version of the `useStore` hook to be used\n */\n useStore: RR['useStore'];\n };\n /**\n * The version of the `batchedUpdates` function to be used\n */\n batch?: RR['batch'];\n /**\n * Enables performing asynchronous tasks immediately within a render.\n *\n * @example\n *\n * ```ts\n * import {\n * buildCreateApi,\n * coreModule,\n * reactHooksModule\n * } from '@reduxjs/toolkit/query/react'\n *\n * const createApi = buildCreateApi(\n * coreModule(),\n * reactHooksModule({ unstable__sideEffectsInRender: true })\n * )\n * ```\n */\n unstable__sideEffectsInRender?: boolean;\n /**\n * A selector creator (usually from `reselect`, or matching the same signature)\n */\n createSelector?: typeof _createSelector;\n}\n\n/**\n * Creates a module that generates react hooks from endpoints, for use with `buildCreateApi`.\n *\n * @example\n * ```ts\n * const MyContext = React.createContext<ReactReduxContextValue | null>(null);\n * const customCreateApi = buildCreateApi(\n * coreModule(),\n * reactHooksModule({\n * hooks: {\n * useDispatch: createDispatchHook(MyContext),\n * useSelector: createSelectorHook(MyContext),\n * useStore: createStoreHook(MyContext)\n * }\n * })\n * );\n * ```\n *\n * @returns A module for use with `buildCreateApi`\n */\nexport const reactHooksModule = ({\n batch = rrBatch,\n hooks = {\n useDispatch: rrUseDispatch,\n useSelector: rrUseSelector,\n useStore: rrUseStore\n },\n createSelector = _createSelector,\n unstable__sideEffectsInRender = false,\n ...rest\n}: ReactHooksModuleOptions = {}): Module<ReactHooksModule> => {\n if (process.env.NODE_ENV !== 'production') {\n const hookNames = (['useDispatch', 'useSelector', 'useStore'] as const);\n let warned = false;\n for (const hookName of hookNames) {\n // warn for old hook options\n if (countObjectKeys(rest) > 0) {\n if ((rest as Partial<typeof hooks>)[hookName]) {\n if (!warned) {\n console.warn('As of RTK 2.0, the hooks now need to be specified as one object, provided under a `hooks` key:' + '\\n`reactHooksModule({ hooks: { useDispatch, useSelector, useStore } })`');\n warned = true;\n }\n }\n // migrate\n // @ts-ignore\n hooks[hookName] = rest[hookName];\n }\n // then make sure we have them all\n if (typeof hooks[hookName] !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage(36) : `When using custom hooks for context, all ${hookNames.length} hooks need to be provided: ${hookNames.join(', ')}.\\nHook ${hookName} was either not provided or not a function.`);\n }\n }\n }\n return {\n name: reactHooksModuleName,\n init(api, {\n serializeQueryArgs\n }, context) {\n const anyApi = ((api as any) as Api<any, Record<string, any>, any, any, ReactHooksModule>);\n const {\n buildQueryHooks,\n buildMutationHook,\n usePrefetch\n } = buildHooks({\n api,\n moduleOptions: {\n batch,\n hooks,\n unstable__sideEffectsInRender,\n createSelector\n },\n serializeQueryArgs,\n context\n });\n safeAssign(anyApi, {\n usePrefetch\n });\n safeAssign(context, {\n batch\n });\n return {\n injectEndpoint(endpointName, definition) {\n if (isQueryDefinition(definition)) {\n const {\n useQuery,\n useLazyQuery,\n useLazyQuerySubscription,\n useQueryState,\n useQuerySubscription\n } = buildQueryHooks(endpointName);\n safeAssign(anyApi.endpoints[endpointName], {\n useQuery,\n useLazyQuery,\n useLazyQuerySubscription,\n useQueryState,\n useQuerySubscription\n });\n (api as any)[`use${capitalize(endpointName)}Query`] = useQuery;\n (api as any)[`useLazy${capitalize(endpointName)}Query`] = useLazyQuery;\n } else if (isMutationDefinition(definition)) {\n const useMutation = buildMutationHook(endpointName);\n safeAssign(anyApi.endpoints[endpointName], {\n useMutation\n });\n (api as any)[`use${capitalize(endpointName)}Mutation`] = useMutation;\n }\n }\n };\n }\n };\n};","// This must remain here so that the `mangleErrors.cjs` build script\n// does not have to import this into each source file it rewrites.\nimport { formatProdErrorMessage } from '@reduxjs/toolkit';\nimport { buildCreateApi, coreModule } from '@reduxjs/toolkit/query';\nimport { reactHooksModule, reactHooksModuleName } from './module';\nexport * from '@reduxjs/toolkit/query';\nexport { ApiProvider } from './ApiProvider';\nconst createApi = /* @__PURE__ */buildCreateApi(coreModule(), reactHooksModule());\nexport type { TypedUseMutationResult, TypedUseQueryHookResult, TypedUseQueryStateResult, TypedUseQuerySubscriptionResult, TypedLazyQueryTrigger, TypedUseLazyQuery, TypedUseMutation, TypedMutationTrigger, TypedUseQueryState, TypedUseQuery, TypedUseQuerySubscription, TypedUseLazyQuerySubscription, TypedUseQueryStateOptions } from './buildHooks';\nexport { UNINITIALIZED_VALUE } from './constants';\nexport { createApi, reactHooksModule, reactHooksModuleName };","var debounce = require('./debounce'),\n isObject = require('./isObject');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n}\n\nmodule.exports = throttle;\n","var baseFlatten = require('./_baseFlatten'),\n map = require('./map');\n\n/**\n * Creates a flattened array of values by running each element in `collection`\n * thru `iteratee` and flattening the mapped results. The iteratee is invoked\n * with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [n, n];\n * }\n *\n * _.flatMap([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\nfunction flatMap(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), 1);\n}\n\nmodule.exports = flatMap;\n","var createFind = require('./_createFind'),\n findIndex = require('./findIndex');\n\n/**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * 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 inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\nvar find = createFind(findIndex);\n\nmodule.exports = find;\n","var baseAssignValue = require('./_baseAssignValue'),\n baseForOwn = require('./_baseForOwn'),\n baseIteratee = require('./_baseIteratee');\n\n/**\n * Creates an object with the same keys as `object` and values generated\n * by running each own enumerable string keyed property of `object` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapKeys\n * @example\n *\n * var users = {\n * 'fred': { 'user': 'fred', 'age': 40 },\n * 'pebbles': { 'user': 'pebbles', 'age': 1 }\n * };\n *\n * _.mapValues(users, function(o) { return o.age; });\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n *\n * // The `_.property` iteratee shorthand.\n * _.mapValues(users, 'age');\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n */\nfunction mapValues(object, iteratee) {\n var result = {};\n iteratee = baseIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, key, iteratee(value, key, object));\n });\n return result;\n}\n\nmodule.exports = mapValues;\n","import {\n AnyEqualityComparator,\n Cache,\n CircularState,\n Dictionary,\n State,\n TypeEqualityComparator,\n} from './internalTypes';\n\nconst { getOwnPropertyNames, getOwnPropertySymbols } = Object;\nconst { hasOwnProperty } = Object.prototype;\n\n/**\n * Combine two comparators into a single comparators.\n */\nexport function combineComparators<Meta>(\n comparatorA: AnyEqualityComparator<Meta>,\n comparatorB: AnyEqualityComparator<Meta>,\n) {\n return function isEqual<A, B>(a: A, b: B, state: State<Meta>) {\n return comparatorA(a, b, state) && comparatorB(a, b, state);\n };\n}\n\n/**\n * Wrap the provided `areItemsEqual` method to manage the circular state, allowing\n * for circular references to be safely included in the comparison without creating\n * stack overflows.\n */\nexport function createIsCircular<\n AreItemsEqual extends TypeEqualityComparator<any, any>,\n>(areItemsEqual: AreItemsEqual): AreItemsEqual {\n return function isCircular(\n a: any,\n b: any,\n state: CircularState<Cache<any, any>>,\n ) {\n if (!a || !b || typeof a !== 'object' || typeof b !== 'object') {\n return areItemsEqual(a, b, state);\n }\n\n const { cache } = state;\n\n const cachedA = cache.get(a);\n const cachedB = cache.get(b);\n\n if (cachedA && cachedB) {\n return cachedA === b && cachedB === a;\n }\n\n cache.set(a, b);\n cache.set(b, a);\n\n const result = areItemsEqual(a, b, state);\n\n cache.delete(a);\n cache.delete(b);\n\n return result;\n } as AreItemsEqual;\n}\n\n/**\n * Get the properties to strictly examine, which include both own properties that are\n * not enumerable and symbol properties.\n */\nexport function getStrictProperties(\n object: Dictionary,\n): Array<string | symbol> {\n return (getOwnPropertyNames(object) as Array<string | symbol>).concat(\n getOwnPropertySymbols(object),\n );\n}\n\n/**\n * Whether the object contains the property passed as an own property.\n */\nexport const hasOwn =\n Object.hasOwn ||\n ((object: Dictionary, property: number | string | symbol) =>\n hasOwnProperty.call(object, property));\n\n/**\n * Whether the values passed are strictly equal or both NaN.\n */\nexport function sameValueZeroEqual(a: any, b: any): boolean {\n return a || b ? a === b : a === b || (a !== a && b !== b);\n}\n","import { getStrictProperties, hasOwn, sameValueZeroEqual } from './utils';\nimport type {\n Dictionary,\n PrimitiveWrapper,\n State,\n TypedArray,\n} from './internalTypes';\n\nconst OWNER = '_owner';\n\nconst { getOwnPropertyDescriptor, keys } = Object;\n\n/**\n * Whether the arrays are equal in value.\n */\nexport function areArraysEqual(a: any[], b: any[], state: State<any>) {\n let index = a.length;\n\n if (b.length !== index) {\n return false;\n }\n\n while (index-- > 0) {\n if (!state.equals(a[index], b[index], index, index, a, b, state)) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Whether the dates passed are equal in value.\n */\nexport function areDatesEqual(a: Date, b: Date): boolean {\n return sameValueZeroEqual(a.getTime(), b.getTime());\n}\n\n/**\n * Whether the `Map`s are equal in value.\n */\nexport function areMapsEqual(\n a: Map<any, any>,\n b: Map<any, any>,\n state: State<any>,\n): boolean {\n if (a.size !== b.size) {\n return false;\n }\n\n const matchedIndices: Record<number, true> = {};\n const aIterable = a.entries();\n\n let index = 0;\n let aResult: IteratorResult<[any, any]>;\n let bResult: IteratorResult<[any, any]>;\n\n while ((aResult = aIterable.next())) {\n if (aResult.done) {\n break;\n }\n\n const bIterable = b.entries();\n\n let hasMatch = false;\n let matchIndex = 0;\n\n while ((bResult = bIterable.next())) {\n if (bResult.done) {\n break;\n }\n\n const [aKey, aValue] = aResult.value;\n const [bKey, bValue] = bResult.value;\n\n if (\n !hasMatch &&\n !matchedIndices[matchIndex] &&\n (hasMatch =\n state.equals(aKey, bKey, index, matchIndex, a, b, state) &&\n state.equals(aValue, bValue, aKey, bKey, a, b, state))\n ) {\n matchedIndices[matchIndex] = true;\n }\n\n matchIndex++;\n }\n\n if (!hasMatch) {\n return false;\n }\n\n index++;\n }\n\n return true;\n}\n\n/**\n * Whether the objects are equal in value.\n */\nexport function areObjectsEqual(\n a: Dictionary,\n b: Dictionary,\n state: State<any>,\n): boolean {\n const properties = keys(a);\n\n let index = properties.length;\n\n if (keys(b).length !== index) {\n return false;\n }\n\n let property: string;\n\n // Decrementing `while` showed faster results than either incrementing or\n // decrementing `for` loop and than an incrementing `while` loop. Declarative\n // methods like `some` / `every` were not used to avoid incurring the garbage\n // cost of anonymous callbacks.\n while (index-- > 0) {\n property = properties[index]!;\n\n if (\n property === OWNER &&\n (a.$$typeof || b.$$typeof) &&\n a.$$typeof !== b.$$typeof\n ) {\n return false;\n }\n\n if (\n !hasOwn(b, property) ||\n !state.equals(a[property], b[property], property, property, a, b, state)\n ) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Whether the objects are equal in value with strict property checking.\n */\nexport function areObjectsEqualStrict(\n a: Dictionary,\n b: Dictionary,\n state: State<any>,\n): boolean {\n const properties = getStrictProperties(a);\n\n let index = properties.length;\n\n if (getStrictProperties(b).length !== index) {\n return false;\n }\n\n let property: string | symbol;\n let descriptorA: ReturnType<typeof getOwnPropertyDescriptor>;\n let descriptorB: ReturnType<typeof getOwnPropertyDescriptor>;\n\n // Decrementing `while` showed faster results than either incrementing or\n // decrementing `for` loop and than an incrementing `while` loop. Declarative\n // methods like `some` / `every` were not used to avoid incurring the garbage\n // cost of anonymous callbacks.\n while (index-- > 0) {\n property = properties[index]!;\n\n if (\n property === OWNER &&\n (a.$$typeof || b.$$typeof) &&\n a.$$typeof !== b.$$typeof\n ) {\n return false;\n }\n\n if (!hasOwn(b, property)) {\n return false;\n }\n\n if (\n !state.equals(a[property], b[property], property, property, a, b, state)\n ) {\n return false;\n }\n\n descriptorA = getOwnPropertyDescriptor(a, property);\n descriptorB = getOwnPropertyDescriptor(b, property);\n\n if (\n (descriptorA || descriptorB) &&\n (!descriptorA ||\n !descriptorB ||\n descriptorA.configurable !== descriptorB.configurable ||\n descriptorA.enumerable !== descriptorB.enumerable ||\n descriptorA.writable !== descriptorB.writable)\n ) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Whether the primitive wrappers passed are equal in value.\n */\nexport function arePrimitiveWrappersEqual(\n a: PrimitiveWrapper,\n b: PrimitiveWrapper,\n): boolean {\n return sameValueZeroEqual(a.valueOf(), b.valueOf());\n}\n\n/**\n * Whether the regexps passed are equal in value.\n */\nexport function areRegExpsEqual(a: RegExp, b: RegExp): boolean {\n return a.source === b.source && a.flags === b.flags;\n}\n\n/**\n * Whether the `Set`s are equal in value.\n */\nexport function areSetsEqual(\n a: Set<any>,\n b: Set<any>,\n state: State<any>,\n): boolean {\n if (a.size !== b.size) {\n return false;\n }\n\n const matchedIndices: Record<number, true> = {};\n const aIterable = a.values();\n\n let aResult: IteratorResult<any>;\n let bResult: IteratorResult<any>;\n\n while ((aResult = aIterable.next())) {\n if (aResult.done) {\n break;\n }\n\n const bIterable = b.values();\n\n let hasMatch = false;\n let matchIndex = 0;\n\n while ((bResult = bIterable.next())) {\n if (bResult.done) {\n break;\n }\n\n if (\n !hasMatch &&\n !matchedIndices[matchIndex] &&\n (hasMatch = state.equals(\n aResult.value,\n bResult.value,\n aResult.value,\n bResult.value,\n a,\n b,\n state,\n ))\n ) {\n matchedIndices[matchIndex] = true;\n }\n\n matchIndex++;\n }\n\n if (!hasMatch) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Whether the TypedArray instances are equal in value.\n */\nexport function areTypedArraysEqual(a: TypedArray, b: TypedArray) {\n let index = a.length;\n\n if (b.length !== index) {\n return false;\n }\n\n while (index-- > 0) {\n if (a[index] !== b[index]) {\n return false;\n }\n }\n\n return true;\n}\n","import {\n areArraysEqual as areArraysEqualDefault,\n areDatesEqual as areDatesEqualDefault,\n areMapsEqual as areMapsEqualDefault,\n areObjectsEqual as areObjectsEqualDefault,\n areObjectsEqualStrict as areObjectsEqualStrictDefault,\n arePrimitiveWrappersEqual as arePrimitiveWrappersEqualDefault,\n areRegExpsEqual as areRegExpsEqualDefault,\n areSetsEqual as areSetsEqualDefault,\n areTypedArraysEqual,\n} from './equals';\nimport { combineComparators, createIsCircular } from './utils';\nimport type {\n ComparatorConfig,\n CreateState,\n CustomEqualCreatorOptions,\n EqualityComparator,\n InternalEqualityComparator,\n State,\n} from './internalTypes';\n\nconst ARGUMENTS_TAG = '[object Arguments]';\nconst BOOLEAN_TAG = '[object Boolean]';\nconst DATE_TAG = '[object Date]';\nconst MAP_TAG = '[object Map]';\nconst NUMBER_TAG = '[object Number]';\nconst OBJECT_TAG = '[object Object]';\nconst REG_EXP_TAG = '[object RegExp]';\nconst SET_TAG = '[object Set]';\nconst STRING_TAG = '[object String]';\n\nconst { isArray } = Array;\nconst isTypedArray =\n typeof ArrayBuffer === 'function' && ArrayBuffer.isView\n ? ArrayBuffer.isView\n : null;\nconst { assign } = Object;\nconst getTag = Object.prototype.toString.call.bind(\n Object.prototype.toString,\n) as (a: object) => string;\n\ninterface CreateIsEqualOptions<Meta> {\n circular: boolean;\n comparator: EqualityComparator<Meta>;\n createState: CreateState<Meta> | undefined;\n equals: InternalEqualityComparator<Meta>;\n strict: boolean;\n}\n\n/**\n * Create a comparator method based on the type-specific equality comparators passed.\n */\nexport function createEqualityComparator<Meta>({\n areArraysEqual,\n areDatesEqual,\n areMapsEqual,\n areObjectsEqual,\n arePrimitiveWrappersEqual,\n areRegExpsEqual,\n areSetsEqual,\n areTypedArraysEqual,\n}: ComparatorConfig<Meta>): EqualityComparator<Meta> {\n /**\n * compare the value of the two objects and return true if they are equivalent in values\n */\n return function comparator(a: any, b: any, state: State<Meta>): boolean {\n // If the items are strictly equal, no need to do a value comparison.\n if (a === b) {\n return true;\n }\n\n // If the items are not non-nullish objects, then the only possibility\n // of them being equal but not strictly is if they are both `NaN`. Since\n // `NaN` is uniquely not equal to itself, we can use self-comparison of\n // both objects, which is faster than `isNaN()`.\n if (\n a == null ||\n b == null ||\n typeof a !== 'object' ||\n typeof b !== 'object'\n ) {\n return a !== a && b !== b;\n }\n\n const constructor = a.constructor;\n\n // Checks are listed in order of commonality of use-case:\n // 1. Common complex object types (plain object, array)\n // 2. Common data values (date, regexp)\n // 3. Less-common complex object types (map, set)\n // 4. Less-common data values (promise, primitive wrappers)\n // Inherently this is both subjective and assumptive, however\n // when reviewing comparable libraries in the wild this order\n // appears to be generally consistent.\n\n // Constructors should match, otherwise there is potential for false positives\n // between class and subclass or custom object and POJO.\n if (constructor !== b.constructor) {\n return false;\n }\n\n // `isPlainObject` only checks against the object's own realm. Cross-realm\n // comparisons are rare, and will be handled in the ultimate fallback, so\n // we can avoid capturing the string tag.\n if (constructor === Object) {\n return areObjectsEqual(a, b, state);\n }\n\n // `isArray()` works on subclasses and is cross-realm, so we can avoid capturing\n // the string tag or doing an `instanceof` check.\n if (isArray(a)) {\n return areArraysEqual(a, b, state);\n }\n\n // `isTypedArray()` works on all possible TypedArray classes, so we can avoid\n // capturing the string tag or comparing against all possible constructors.\n if (isTypedArray != null && isTypedArray(a)) {\n return areTypedArraysEqual(a, b, state);\n }\n\n // Try to fast-path equality checks for other complex object types in the\n // same realm to avoid capturing the string tag. Strict equality is used\n // instead of `instanceof` because it is more performant for the common\n // use-case. If someone is subclassing a native class, it will be handled\n // with the string tag comparison.\n\n if (constructor === Date) {\n return areDatesEqual(a, b, state);\n }\n\n if (constructor === RegExp) {\n return areRegExpsEqual(a, b, state);\n }\n\n if (constructor === Map) {\n return areMapsEqual(a, b, state);\n }\n\n if (constructor === Set) {\n return areSetsEqual(a, b, state);\n }\n\n // Since this is a custom object, capture the string tag to determing its type.\n // This is reasonably performant in modern environments like v8 and SpiderMonkey.\n const tag = getTag(a);\n\n if (tag === DATE_TAG) {\n return areDatesEqual(a, b, state);\n }\n\n if (tag === REG_EXP_TAG) {\n return areRegExpsEqual(a, b, state);\n }\n\n if (tag === MAP_TAG) {\n return areMapsEqual(a, b, state);\n }\n\n if (tag === SET_TAG) {\n return areSetsEqual(a, b, state);\n }\n\n if (tag === OBJECT_TAG) {\n // The exception for value comparison is custom `Promise`-like class instances. These should\n // be treated the same as standard `Promise` objects, which means strict equality, and if\n // it reaches this point then that strict equality comparison has already failed.\n return (\n typeof a.then !== 'function' &&\n typeof b.then !== 'function' &&\n areObjectsEqual(a, b, state)\n );\n }\n\n // If an arguments tag, it should be treated as a standard object.\n if (tag === ARGUMENTS_TAG) {\n return areObjectsEqual(a, b, state);\n }\n\n // As the penultimate fallback, check if the values passed are primitive wrappers. This\n // is very rare in modern JS, which is why it is deprioritized compared to all other object\n // types.\n if (tag === BOOLEAN_TAG || tag === NUMBER_TAG || tag === STRING_TAG) {\n return arePrimitiveWrappersEqual(a, b, state);\n }\n\n // If not matching any tags that require a specific type of comparison, then we hard-code false because\n // the only thing remaining is strict equality, which has already been compared. This is for a few reasons:\n // - Certain types that cannot be introspected (e.g., `WeakMap`). For these types, this is the only\n // comparison that can be made.\n // - For types that can be introspected, but rarely have requirements to be compared\n // (`ArrayBuffer`, `DataView`, etc.), the cost is avoided to prioritize the common\n // use-cases (may be included in a future release, if requested enough).\n // - For types that can be introspected but do not have an objective definition of what\n // equality is (`Error`, etc.), the subjective decision is to be conservative and strictly compare.\n // In all cases, these decisions should be reevaluated based on changes to the language and\n // common development practices.\n return false;\n };\n}\n\n/**\n * Create the configuration object used for building comparators.\n */\nexport function createEqualityComparatorConfig<Meta>({\n circular,\n createCustomConfig,\n strict,\n}: CustomEqualCreatorOptions<Meta>): ComparatorConfig<Meta> {\n let config = {\n areArraysEqual: strict\n ? areObjectsEqualStrictDefault\n : areArraysEqualDefault,\n areDatesEqual: areDatesEqualDefault,\n areMapsEqual: strict\n ? combineComparators(areMapsEqualDefault, areObjectsEqualStrictDefault)\n : areMapsEqualDefault,\n areObjectsEqual: strict\n ? areObjectsEqualStrictDefault\n : areObjectsEqualDefault,\n arePrimitiveWrappersEqual: arePrimitiveWrappersEqualDefault,\n areRegExpsEqual: areRegExpsEqualDefault,\n areSetsEqual: strict\n ? combineComparators(areSetsEqualDefault, areObjectsEqualStrictDefault)\n : areSetsEqualDefault,\n areTypedArraysEqual: strict\n ? areObjectsEqualStrictDefault\n : areTypedArraysEqual,\n };\n\n if (createCustomConfig) {\n config = assign({}, config, createCustomConfig(config));\n }\n\n if (circular) {\n const areArraysEqual = createIsCircular(config.areArraysEqual);\n const areMapsEqual = createIsCircular(config.areMapsEqual);\n const areObjectsEqual = createIsCircular(config.areObjectsEqual);\n const areSetsEqual = createIsCircular(config.areSetsEqual);\n\n config = assign({}, config, {\n areArraysEqual,\n areMapsEqual,\n areObjectsEqual,\n areSetsEqual,\n });\n }\n\n return config;\n}\n\n/**\n * Default equality comparator pass-through, used as the standard `isEqual` creator for\n * use inside the built comparator.\n */\nexport function createInternalEqualityComparator<Meta>(\n compare: EqualityComparator<Meta>,\n): InternalEqualityComparator<Meta> {\n return function (\n a: any,\n b: any,\n _indexOrKeyA: any,\n _indexOrKeyB: any,\n _parentA: any,\n _parentB: any,\n state: State<Meta>,\n ) {\n return compare(a, b, state);\n };\n}\n\n/**\n * Create the `isEqual` function used by the consuming application.\n */\nexport function createIsEqual<Meta>({\n circular,\n comparator,\n createState,\n equals,\n strict,\n}: CreateIsEqualOptions<Meta>) {\n if (createState) {\n return function isEqual<A, B>(a: A, b: B): boolean {\n const { cache = circular ? new WeakMap() : undefined, meta } =\n createState!();\n\n return comparator(a, b, {\n cache,\n equals,\n meta,\n strict,\n } as State<Meta>);\n };\n }\n\n if (circular) {\n return function isEqual<A, B>(a: A, b: B): boolean {\n return comparator(a, b, {\n cache: new WeakMap(),\n equals,\n meta: undefined as Meta,\n strict,\n } as State<Meta>);\n };\n }\n\n const state = {\n cache: undefined,\n equals,\n meta: undefined,\n strict,\n } as State<Meta>;\n\n return function isEqual<A, B>(a: A, b: B): boolean {\n return comparator(a, b, state);\n };\n}\n","import {\n createEqualityComparatorConfig,\n createEqualityComparator,\n createInternalEqualityComparator,\n createIsEqual,\n} from './comparator';\nimport type { CustomEqualCreatorOptions } from './internalTypes';\nimport { sameValueZeroEqual } from './utils';\n\nexport { sameValueZeroEqual };\nexport * from './internalTypes';\n\n/**\n * Whether the items passed are deeply-equal in value.\n */\nexport const deepEqual = createCustomEqual();\n\n/**\n * Whether the items passed are deeply-equal in value based on strict comparison.\n */\nexport const strictDeepEqual = createCustomEqual({ strict: true });\n\n/**\n * Whether the items passed are deeply-equal in value, including circular references.\n */\nexport const circularDeepEqual = createCustomEqual({ circular: true });\n\n/**\n * Whether the items passed are deeply-equal in value, including circular references,\n * based on strict comparison.\n */\nexport const strictCircularDeepEqual = createCustomEqual({\n circular: true,\n strict: true,\n});\n\n/**\n * Whether the items passed are shallowly-equal in value.\n */\nexport const shallowEqual = createCustomEqual({\n createInternalComparator: () => sameValueZeroEqual,\n});\n\n/**\n * Whether the items passed are shallowly-equal in value based on strict comparison\n */\nexport const strictShallowEqual = createCustomEqual({\n strict: true,\n createInternalComparator: () => sameValueZeroEqual,\n});\n\n/**\n * Whether the items passed are shallowly-equal in value, including circular references.\n */\nexport const circularShallowEqual = createCustomEqual({\n circular: true,\n createInternalComparator: () => sameValueZeroEqual,\n});\n\n/**\n * Whether the items passed are shallowly-equal in value, including circular references,\n * based on strict comparison.\n */\nexport const strictCircularShallowEqual = createCustomEqual({\n circular: true,\n createInternalComparator: () => sameValueZeroEqual,\n strict: true,\n});\n\n/**\n * Create a custom equality comparison method.\n *\n * This can be done to create very targeted comparisons in extreme hot-path scenarios\n * where the standard methods are not performant enough, but can also be used to provide\n * support for legacy environments that do not support expected features like\n * `RegExp.prototype.flags` out of the box.\n */\nexport function createCustomEqual<Meta = undefined>(\n options: CustomEqualCreatorOptions<Meta> = {},\n) {\n const {\n circular = false,\n createInternalComparator: createCustomInternalComparator,\n createState,\n strict = false,\n } = options;\n\n const config = createEqualityComparatorConfig<Meta>(options);\n const comparator = createEqualityComparator(config);\n const equals = createCustomInternalComparator\n ? createCustomInternalComparator(comparator)\n : createInternalEqualityComparator(comparator);\n\n return createIsEqual({ circular, comparator, createState, equals, strict });\n}\n","var baseGetTag = require('./_baseGetTag'),\n getPrototype = require('./_getPrototype'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\nmodule.exports = isPlainObject;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]';\n\n/**\n * Checks if `value` is classified as a boolean primitive or object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a boolean, else `false`.\n * @example\n *\n * _.isBoolean(false);\n * // => true\n *\n * _.isBoolean(null);\n * // => false\n */\nfunction isBoolean(value) {\n return value === true || value === false ||\n (isObjectLike(value) && baseGetTag(value) == boolTag);\n}\n\nmodule.exports = isBoolean;\n","/**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\nfunction last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n}\n\nmodule.exports = last;\n","'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n Events.prototype = Object.create(null);\n\n //\n // This hack is needed because the `__proto__` property is still inherited in\n // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n //\n if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @private\n */\nfunction EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n}\n\n/**\n * Add a listener for a given event.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} once Specify if the listener is a one-time listener.\n * @returns {EventEmitter}\n * @private\n */\nfunction addListener(emitter, event, fn, context, once) {\n if (typeof fn !== 'function') {\n throw new TypeError('The listener must be a function');\n }\n\n var listener = new EE(fn, context || emitter, once)\n , evt = prefix ? prefix + event : event;\n\n if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;\n else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\n else emitter._events[evt] = [emitter._events[evt], listener];\n\n return emitter;\n}\n\n/**\n * Clear event by name.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} evt The Event name.\n * @private\n */\nfunction clearEvent(emitter, evt) {\n if (--emitter._eventsCount === 0) emitter._events = new Events();\n else delete emitter._events[evt];\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @public\n */\nfunction EventEmitter() {\n this._events = new Events();\n this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n var names = []\n , events\n , name;\n\n if (this._eventsCount === 0) return names;\n\n for (name in (events = this._events)) {\n if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n }\n\n if (Object.getOwnPropertySymbols) {\n return names.concat(Object.getOwnPropertySymbols(events));\n }\n\n return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Array} The registered listeners.\n * @public\n */\nEventEmitter.prototype.listeners = function listeners(event) {\n var evt = prefix ? prefix + event : event\n , handlers = this._events[evt];\n\n if (!handlers) return [];\n if (handlers.fn) return [handlers.fn];\n\n for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n ee[i] = handlers[i].fn;\n }\n\n return ee;\n};\n\n/**\n * Return the number of listeners listening to a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Number} The number of listeners.\n * @public\n */\nEventEmitter.prototype.listenerCount = function listenerCount(event) {\n var evt = prefix ? prefix + event : event\n , listeners = this._events[evt];\n\n if (!listeners) return 0;\n if (listeners.fn) return 1;\n return listeners.length;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return false;\n\n var listeners = this._events[evt]\n , len = arguments.length\n , args\n , i;\n\n if (listeners.fn) {\n if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n switch (len) {\n case 1: return listeners.fn.call(listeners.context), true;\n case 2: return listeners.fn.call(listeners.context, a1), true;\n case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n }\n\n for (i = 1, args = new Array(len -1); i < len; i++) {\n args[i - 1] = arguments[i];\n }\n\n listeners.fn.apply(listeners.context, args);\n } else {\n var length = listeners.length\n , j;\n\n for (i = 0; i < length; i++) {\n if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n switch (len) {\n case 1: listeners[i].fn.call(listeners[i].context); break;\n case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n default:\n if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n args[j - 1] = arguments[j];\n }\n\n listeners[i].fn.apply(listeners[i].context, args);\n }\n }\n }\n\n return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n return addListener(this, event, fn, context, false);\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n return addListener(this, event, fn, context, true);\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {*} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return this;\n if (!fn) {\n clearEvent(this, evt);\n return this;\n }\n\n var listeners = this._events[evt];\n\n if (listeners.fn) {\n if (\n listeners.fn === fn &&\n (!once || listeners.once) &&\n (!context || listeners.context === context)\n ) {\n clearEvent(this, evt);\n }\n } else {\n for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n if (\n listeners[i].fn !== fn ||\n (once && !listeners[i].once) ||\n (context && listeners[i].context !== context)\n ) {\n events.push(listeners[i]);\n }\n }\n\n //\n // Reset the array, or remove it completely if we have no more listeners.\n //\n if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n else clearEvent(this, evt);\n }\n\n return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {(String|Symbol)} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n var evt;\n\n if (event) {\n evt = prefix ? prefix + event : event;\n if (this._events[evt]) clearEvent(this, evt);\n } else {\n this._events = new Events();\n this._eventsCount = 0;\n }\n\n return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n module.exports = EventEmitter;\n}\n","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n/**\n * @fileOverview X Axis\n */\n\nimport React from 'react';\nimport clsx from 'clsx';\nimport { useChartHeight, useChartWidth, useXAxisOrThrow } from '../context/chartLayoutContext';\nimport { CartesianAxis } from './CartesianAxis';\nimport { getTicksOfAxis } from '../util/ChartUtils';\n\n/** Define of XAxis props */\n\nexport var XAxis = function XAxis(_ref) {\n var xAxisId = _ref.xAxisId;\n var width = useChartWidth();\n var height = useChartHeight();\n var axisOptions = useXAxisOrThrow(xAxisId);\n if (axisOptions == null) {\n return null;\n }\n return (\n /*#__PURE__*/\n // @ts-expect-error the axisOptions type is not exactly what CartesianAxis is expecting.\n React.createElement(CartesianAxis, _extends({}, axisOptions, {\n className: clsx(\"recharts-\".concat(axisOptions.axisType, \" \").concat(axisOptions.axisType), axisOptions.className),\n viewBox: {\n x: 0,\n y: 0,\n width: width,\n height: height\n },\n ticksGenerator: function ticksGenerator(axis) {\n return getTicksOfAxis(axis, true);\n }\n }))\n );\n};\nXAxis.displayName = 'XAxis';\nXAxis.defaultProps = {\n allowDecimals: true,\n hide: false,\n orientation: 'bottom',\n width: 0,\n height: 30,\n mirror: false,\n xAxisId: 0,\n tickCount: 5,\n type: 'category',\n padding: {\n left: 0,\n right: 0\n },\n allowDataOverflow: false,\n scale: 'auto',\n reversed: false,\n allowDuplicatedCategory: true\n};","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n/**\n * @fileOverview Y Axis\n */\nimport React from 'react';\nimport clsx from 'clsx';\nimport { useChartHeight, useChartWidth, useYAxisOrThrow } from '../context/chartLayoutContext';\nimport { CartesianAxis } from './CartesianAxis';\nimport { getTicksOfAxis } from '../util/ChartUtils';\nexport var YAxis = function YAxis(_ref) {\n var yAxisId = _ref.yAxisId;\n var width = useChartWidth();\n var height = useChartHeight();\n var axisOptions = useYAxisOrThrow(yAxisId);\n if (axisOptions == null) {\n return null;\n }\n return (\n /*#__PURE__*/\n // @ts-expect-error the axisOptions type is not exactly what CartesianAxis is expecting.\n React.createElement(CartesianAxis, _extends({}, axisOptions, {\n className: clsx(\"recharts-\".concat(axisOptions.axisType, \" \").concat(axisOptions.axisType), axisOptions.className),\n viewBox: {\n x: 0,\n y: 0,\n width: width,\n height: height\n },\n ticksGenerator: function ticksGenerator(axis) {\n return getTicksOfAxis(axis, true);\n }\n }))\n );\n};\nYAxis.displayName = 'YAxis';\nYAxis.defaultProps = {\n allowDuplicatedCategory: true,\n allowDecimals: true,\n hide: false,\n orientation: 'left',\n width: 60,\n height: 0,\n mirror: false,\n yAxisId: 0,\n tickCount: 5,\n type: 'number',\n padding: {\n top: 0,\n bottom: 0\n },\n allowDataOverflow: false,\n scale: 'auto',\n reversed: false\n};","var _Pie;\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : String(i); }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/**\n * @fileOverview Render sectors of a pie\n */\nimport React, { PureComponent } from 'react';\nimport Animate from 'react-smooth';\nimport get from 'lodash/get';\nimport isEqual from 'lodash/isEqual';\nimport isNil from 'lodash/isNil';\nimport isFunction from 'lodash/isFunction';\nimport clsx from 'clsx';\nimport { Layer } from '../container/Layer';\nimport { Curve } from '../shape/Curve';\nimport { Text } from '../component/Text';\nimport { Label } from '../component/Label';\nimport { LabelList } from '../component/LabelList';\nimport { Cell } from '../component/Cell';\nimport { findAllByType, filterProps } from '../util/ReactUtils';\nimport { Global } from '../util/Global';\nimport { polarToCartesian, getMaxRadius } from '../util/PolarUtils';\nimport { isNumber, getPercentValue, mathSign, interpolateNumber, uniqueId } from '../util/DataUtils';\nimport { getValueByDataKey } from '../util/ChartUtils';\nimport { warn } from '../util/LogUtils';\nimport { adaptEventsOfChild } from '../util/types';\nimport { Shape } from '../util/ActiveShapeUtils';\nexport var Pie = /*#__PURE__*/function (_PureComponent) {\n _inherits(Pie, _PureComponent);\n function Pie(props) {\n var _this;\n _classCallCheck(this, Pie);\n _this = _callSuper(this, Pie, [props]);\n _defineProperty(_assertThisInitialized(_this), \"pieRef\", null);\n _defineProperty(_assertThisInitialized(_this), \"sectorRefs\", []);\n _defineProperty(_assertThisInitialized(_this), \"id\", uniqueId('recharts-pie-'));\n _defineProperty(_assertThisInitialized(_this), \"handleAnimationEnd\", function () {\n var onAnimationEnd = _this.props.onAnimationEnd;\n _this.setState({\n isAnimationFinished: true\n });\n if (isFunction(onAnimationEnd)) {\n onAnimationEnd();\n }\n });\n _defineProperty(_assertThisInitialized(_this), \"handleAnimationStart\", function () {\n var onAnimationStart = _this.props.onAnimationStart;\n _this.setState({\n isAnimationFinished: false\n });\n if (isFunction(onAnimationStart)) {\n onAnimationStart();\n }\n });\n _this.state = {\n isAnimationFinished: !props.isAnimationActive,\n prevIsAnimationActive: props.isAnimationActive,\n prevAnimationId: props.animationId,\n sectorToFocus: 0\n };\n return _this;\n }\n _createClass(Pie, [{\n key: \"isActiveIndex\",\n value: function isActiveIndex(i) {\n var activeIndex = this.props.activeIndex;\n if (Array.isArray(activeIndex)) {\n return activeIndex.indexOf(i) !== -1;\n }\n return i === activeIndex;\n }\n }, {\n key: \"hasActiveIndex\",\n value: function hasActiveIndex() {\n var activeIndex = this.props.activeIndex;\n return Array.isArray(activeIndex) ? activeIndex.length !== 0 : activeIndex || activeIndex === 0;\n }\n }, {\n key: \"renderLabels\",\n value: function renderLabels(sectors) {\n var isAnimationActive = this.props.isAnimationActive;\n if (isAnimationActive && !this.state.isAnimationFinished) {\n return null;\n }\n var _this$props = this.props,\n label = _this$props.label,\n labelLine = _this$props.labelLine,\n dataKey = _this$props.dataKey,\n valueKey = _this$props.valueKey;\n var pieProps = filterProps(this.props, false);\n var customLabelProps = filterProps(label, false);\n var customLabelLineProps = filterProps(labelLine, false);\n var offsetRadius = label && label.offsetRadius || 20;\n var labels = sectors.map(function (entry, i) {\n var midAngle = (entry.startAngle + entry.endAngle) / 2;\n var endPoint = polarToCartesian(entry.cx, entry.cy, entry.outerRadius + offsetRadius, midAngle);\n var labelProps = _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, pieProps), entry), {}, {\n stroke: 'none'\n }, customLabelProps), {}, {\n index: i,\n textAnchor: Pie.getTextAnchor(endPoint.x, entry.cx)\n }, endPoint);\n var lineProps = _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, pieProps), entry), {}, {\n fill: 'none',\n stroke: entry.fill\n }, customLabelLineProps), {}, {\n index: i,\n points: [polarToCartesian(entry.cx, entry.cy, entry.outerRadius, midAngle), endPoint],\n key: 'line'\n });\n var realDataKey = dataKey;\n // TODO: compatible to lower versions\n if (isNil(dataKey) && isNil(valueKey)) {\n realDataKey = 'value';\n } else if (isNil(dataKey)) {\n realDataKey = valueKey;\n }\n return (\n /*#__PURE__*/\n // eslint-disable-next-line react/no-array-index-key\n React.createElement(Layer, {\n key: \"label-\".concat(entry.startAngle, \"-\").concat(entry.endAngle, \"-\").concat(entry.midAngle, \"-\").concat(i)\n }, labelLine && Pie.renderLabelLineItem(labelLine, lineProps), Pie.renderLabelItem(label, labelProps, getValueByDataKey(entry, realDataKey)))\n );\n });\n return /*#__PURE__*/React.createElement(Layer, {\n className: \"recharts-pie-labels\"\n }, labels);\n }\n }, {\n key: \"renderSectorsStatically\",\n value: function renderSectorsStatically(sectors) {\n var _this2 = this;\n var _this$props2 = this.props,\n activeShape = _this$props2.activeShape,\n blendStroke = _this$props2.blendStroke,\n inactiveShapeProp = _this$props2.inactiveShape;\n return sectors.map(function (entry, i) {\n if ((entry === null || entry === void 0 ? void 0 : entry.startAngle) === 0 && (entry === null || entry === void 0 ? void 0 : entry.endAngle) === 0 && sectors.length !== 1) return null;\n var isActive = _this2.isActiveIndex(i);\n var inactiveShape = inactiveShapeProp && _this2.hasActiveIndex() ? inactiveShapeProp : null;\n var sectorOptions = isActive ? activeShape : inactiveShape;\n var sectorProps = _objectSpread(_objectSpread({}, entry), {}, {\n stroke: blendStroke ? entry.fill : entry.stroke,\n tabIndex: -1\n });\n return /*#__PURE__*/React.createElement(Layer, _extends({\n ref: function ref(_ref) {\n if (_ref && !_this2.sectorRefs.includes(_ref)) {\n _this2.sectorRefs.push(_ref);\n }\n },\n tabIndex: -1,\n className: \"recharts-pie-sector\"\n }, adaptEventsOfChild(_this2.props, entry, i), {\n // eslint-disable-next-line react/no-array-index-key\n key: \"sector-\".concat(entry === null || entry === void 0 ? void 0 : entry.startAngle, \"-\").concat(entry === null || entry === void 0 ? void 0 : entry.endAngle, \"-\").concat(entry.midAngle, \"-\").concat(i)\n }), /*#__PURE__*/React.createElement(Shape, _extends({\n option: sectorOptions,\n isActive: isActive,\n shapeType: \"sector\"\n }, sectorProps)));\n });\n }\n }, {\n key: \"renderSectorsWithAnimation\",\n value: function renderSectorsWithAnimation() {\n var _this3 = this;\n var _this$props3 = this.props,\n sectors = _this$props3.sectors,\n isAnimationActive = _this$props3.isAnimationActive,\n animationBegin = _this$props3.animationBegin,\n animationDuration = _this$props3.animationDuration,\n animationEasing = _this$props3.animationEasing,\n animationId = _this$props3.animationId;\n var _this$state = this.state,\n prevSectors = _this$state.prevSectors,\n prevIsAnimationActive = _this$state.prevIsAnimationActive;\n return /*#__PURE__*/React.createElement(Animate, {\n begin: animationBegin,\n duration: animationDuration,\n isActive: isAnimationActive,\n easing: animationEasing,\n from: {\n t: 0\n },\n to: {\n t: 1\n },\n key: \"pie-\".concat(animationId, \"-\").concat(prevIsAnimationActive),\n onAnimationStart: this.handleAnimationStart,\n onAnimationEnd: this.handleAnimationEnd\n }, function (_ref2) {\n var t = _ref2.t;\n var stepData = [];\n var first = sectors && sectors[0];\n var curAngle = first.startAngle;\n sectors.forEach(function (entry, index) {\n var prev = prevSectors && prevSectors[index];\n var paddingAngle = index > 0 ? get(entry, 'paddingAngle', 0) : 0;\n if (prev) {\n var angleIp = interpolateNumber(prev.endAngle - prev.startAngle, entry.endAngle - entry.startAngle);\n var latest = _objectSpread(_objectSpread({}, entry), {}, {\n startAngle: curAngle + paddingAngle,\n endAngle: curAngle + angleIp(t) + paddingAngle\n });\n stepData.push(latest);\n curAngle = latest.endAngle;\n } else {\n var endAngle = entry.endAngle,\n startAngle = entry.startAngle;\n var interpolatorAngle = interpolateNumber(0, endAngle - startAngle);\n var deltaAngle = interpolatorAngle(t);\n var _latest = _objectSpread(_objectSpread({}, entry), {}, {\n startAngle: curAngle + paddingAngle,\n endAngle: curAngle + deltaAngle + paddingAngle\n });\n stepData.push(_latest);\n curAngle = _latest.endAngle;\n }\n });\n return /*#__PURE__*/React.createElement(Layer, null, _this3.renderSectorsStatically(stepData));\n });\n }\n }, {\n key: \"attachKeyboardHandlers\",\n value: function attachKeyboardHandlers(pieRef) {\n var _this4 = this;\n // eslint-disable-next-line no-param-reassign\n pieRef.onkeydown = function (e) {\n if (!e.altKey) {\n switch (e.key) {\n case 'ArrowLeft':\n {\n var next = ++_this4.state.sectorToFocus % _this4.sectorRefs.length;\n _this4.sectorRefs[next].focus();\n _this4.setState({\n sectorToFocus: next\n });\n break;\n }\n case 'ArrowRight':\n {\n var _next = --_this4.state.sectorToFocus < 0 ? _this4.sectorRefs.length - 1 : _this4.state.sectorToFocus % _this4.sectorRefs.length;\n _this4.sectorRefs[_next].focus();\n _this4.setState({\n sectorToFocus: _next\n });\n break;\n }\n case 'Escape':\n {\n _this4.sectorRefs[_this4.state.sectorToFocus].blur();\n _this4.setState({\n sectorToFocus: 0\n });\n break;\n }\n default:\n {\n // There is nothing to do here\n }\n }\n }\n };\n }\n }, {\n key: \"renderSectors\",\n value: function renderSectors() {\n var _this$props4 = this.props,\n sectors = _this$props4.sectors,\n isAnimationActive = _this$props4.isAnimationActive;\n var prevSectors = this.state.prevSectors;\n if (isAnimationActive && sectors && sectors.length && (!prevSectors || !isEqual(prevSectors, sectors))) {\n return this.renderSectorsWithAnimation();\n }\n return this.renderSectorsStatically(sectors);\n }\n }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n if (this.pieRef) {\n this.attachKeyboardHandlers(this.pieRef);\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this5 = this;\n var _this$props5 = this.props,\n hide = _this$props5.hide,\n sectors = _this$props5.sectors,\n className = _this$props5.className,\n label = _this$props5.label,\n cx = _this$props5.cx,\n cy = _this$props5.cy,\n innerRadius = _this$props5.innerRadius,\n outerRadius = _this$props5.outerRadius,\n isAnimationActive = _this$props5.isAnimationActive;\n var isAnimationFinished = this.state.isAnimationFinished;\n if (hide || !sectors || !sectors.length || !isNumber(cx) || !isNumber(cy) || !isNumber(innerRadius) || !isNumber(outerRadius)) {\n return null;\n }\n var layerClass = clsx('recharts-pie', className);\n return /*#__PURE__*/React.createElement(Layer, {\n tabIndex: this.props.rootTabIndex,\n className: layerClass,\n ref: function ref(_ref3) {\n _this5.pieRef = _ref3;\n }\n }, this.renderSectors(), label && this.renderLabels(sectors), Label.renderCallByParent(this.props, null, false), (!isAnimationActive || isAnimationFinished) && LabelList.renderCallByParent(this.props, sectors, false));\n }\n }], [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(nextProps, prevState) {\n if (prevState.prevIsAnimationActive !== nextProps.isAnimationActive) {\n return {\n prevIsAnimationActive: nextProps.isAnimationActive,\n prevAnimationId: nextProps.animationId,\n curSectors: nextProps.sectors,\n prevSectors: [],\n isAnimationFinished: true\n };\n }\n if (nextProps.isAnimationActive && nextProps.animationId !== prevState.prevAnimationId) {\n return {\n prevAnimationId: nextProps.animationId,\n curSectors: nextProps.sectors,\n prevSectors: prevState.curSectors,\n isAnimationFinished: true\n };\n }\n if (nextProps.sectors !== prevState.curSectors) {\n return {\n curSectors: nextProps.sectors,\n isAnimationFinished: true\n };\n }\n return null;\n }\n }, {\n key: \"getTextAnchor\",\n value: function getTextAnchor(x, cx) {\n if (x > cx) {\n return 'start';\n }\n if (x < cx) {\n return 'end';\n }\n return 'middle';\n }\n }, {\n key: \"renderLabelLineItem\",\n value: function renderLabelLineItem(option, props) {\n if ( /*#__PURE__*/React.isValidElement(option)) {\n return /*#__PURE__*/React.cloneElement(option, props);\n }\n if (isFunction(option)) {\n return option(props);\n }\n var className = clsx('recharts-pie-label-line', typeof option !== 'boolean' ? option.className : '');\n return /*#__PURE__*/React.createElement(Curve, _extends({}, props, {\n type: \"linear\",\n className: className\n }));\n }\n }, {\n key: \"renderLabelItem\",\n value: function renderLabelItem(option, props, value) {\n if ( /*#__PURE__*/React.isValidElement(option)) {\n return /*#__PURE__*/React.cloneElement(option, props);\n }\n var label = value;\n if (isFunction(option)) {\n label = option(props);\n if ( /*#__PURE__*/React.isValidElement(label)) {\n return label;\n }\n }\n var className = clsx('recharts-pie-label-text', typeof option !== 'boolean' && !isFunction(option) ? option.className : '');\n return /*#__PURE__*/React.createElement(Text, _extends({}, props, {\n alignmentBaseline: \"middle\",\n className: className\n }), label);\n }\n }]);\n return Pie;\n}(PureComponent);\n_Pie = Pie;\n_defineProperty(Pie, \"displayName\", 'Pie');\n_defineProperty(Pie, \"defaultProps\", {\n stroke: '#fff',\n fill: '#808080',\n legendType: 'rect',\n cx: '50%',\n cy: '50%',\n startAngle: 0,\n endAngle: 360,\n innerRadius: 0,\n outerRadius: '80%',\n paddingAngle: 0,\n labelLine: true,\n hide: false,\n minAngle: 0,\n isAnimationActive: !Global.isSsr,\n animationBegin: 400,\n animationDuration: 1500,\n animationEasing: 'ease',\n nameKey: 'name',\n blendStroke: false,\n rootTabIndex: 0\n});\n_defineProperty(Pie, \"parseDeltaAngle\", function (startAngle, endAngle) {\n var sign = mathSign(endAngle - startAngle);\n var deltaAngle = Math.min(Math.abs(endAngle - startAngle), 360);\n return sign * deltaAngle;\n});\n_defineProperty(Pie, \"getRealPieData\", function (item) {\n var _item$props = item.props,\n data = _item$props.data,\n children = _item$props.children;\n var presentationProps = filterProps(item.props, false);\n var cells = findAllByType(children, Cell);\n if (data && data.length) {\n return data.map(function (entry, index) {\n return _objectSpread(_objectSpread(_objectSpread({\n payload: entry\n }, presentationProps), entry), cells && cells[index] && cells[index].props);\n });\n }\n if (cells && cells.length) {\n return cells.map(function (cell) {\n return _objectSpread(_objectSpread({}, presentationProps), cell.props);\n });\n }\n return [];\n});\n_defineProperty(Pie, \"parseCoordinateOfPie\", function (item, offset) {\n var top = offset.top,\n left = offset.left,\n width = offset.width,\n height = offset.height;\n var maxPieRadius = getMaxRadius(width, height);\n var cx = left + getPercentValue(item.props.cx, width, width / 2);\n var cy = top + getPercentValue(item.props.cy, height, height / 2);\n var innerRadius = getPercentValue(item.props.innerRadius, maxPieRadius, 0);\n var outerRadius = getPercentValue(item.props.outerRadius, maxPieRadius, maxPieRadius * 0.8);\n var maxRadius = item.props.maxRadius || Math.sqrt(width * width + height * height) / 2;\n return {\n cx: cx,\n cy: cy,\n innerRadius: innerRadius,\n outerRadius: outerRadius,\n maxRadius: maxRadius\n };\n});\n_defineProperty(Pie, \"getComposedData\", function (_ref4) {\n var item = _ref4.item,\n offset = _ref4.offset;\n var pieData = _Pie.getRealPieData(item);\n if (!pieData || !pieData.length) {\n return null;\n }\n var _item$props2 = item.props,\n cornerRadius = _item$props2.cornerRadius,\n startAngle = _item$props2.startAngle,\n endAngle = _item$props2.endAngle,\n paddingAngle = _item$props2.paddingAngle,\n dataKey = _item$props2.dataKey,\n nameKey = _item$props2.nameKey,\n valueKey = _item$props2.valueKey,\n tooltipType = _item$props2.tooltipType;\n var minAngle = Math.abs(item.props.minAngle);\n var coordinate = _Pie.parseCoordinateOfPie(item, offset);\n var deltaAngle = _Pie.parseDeltaAngle(startAngle, endAngle);\n var absDeltaAngle = Math.abs(deltaAngle);\n var realDataKey = dataKey;\n if (isNil(dataKey) && isNil(valueKey)) {\n warn(false, \"Use \\\"dataKey\\\" to specify the value of pie,\\n the props \\\"valueKey\\\" will be deprecated in 1.1.0\");\n realDataKey = 'value';\n } else if (isNil(dataKey)) {\n warn(false, \"Use \\\"dataKey\\\" to specify the value of pie,\\n the props \\\"valueKey\\\" will be deprecated in 1.1.0\");\n realDataKey = valueKey;\n }\n var notZeroItemCount = pieData.filter(function (entry) {\n return getValueByDataKey(entry, realDataKey, 0) !== 0;\n }).length;\n var totalPadingAngle = (absDeltaAngle >= 360 ? notZeroItemCount : notZeroItemCount - 1) * paddingAngle;\n var realTotalAngle = absDeltaAngle - notZeroItemCount * minAngle - totalPadingAngle;\n var sum = pieData.reduce(function (result, entry) {\n var val = getValueByDataKey(entry, realDataKey, 0);\n return result + (isNumber(val) ? val : 0);\n }, 0);\n var sectors;\n if (sum > 0) {\n var prev;\n sectors = pieData.map(function (entry, i) {\n var val = getValueByDataKey(entry, realDataKey, 0);\n var name = getValueByDataKey(entry, nameKey, i);\n var percent = (isNumber(val) ? val : 0) / sum;\n var tempStartAngle;\n if (i) {\n tempStartAngle = prev.endAngle + mathSign(deltaAngle) * paddingAngle * (val !== 0 ? 1 : 0);\n } else {\n tempStartAngle = startAngle;\n }\n var tempEndAngle = tempStartAngle + mathSign(deltaAngle) * ((val !== 0 ? minAngle : 0) + percent * realTotalAngle);\n var midAngle = (tempStartAngle + tempEndAngle) / 2;\n var middleRadius = (coordinate.innerRadius + coordinate.outerRadius) / 2;\n var tooltipPayload = [{\n name: name,\n value: val,\n payload: entry,\n dataKey: realDataKey,\n type: tooltipType\n }];\n var tooltipPosition = polarToCartesian(coordinate.cx, coordinate.cy, middleRadius, midAngle);\n prev = _objectSpread(_objectSpread(_objectSpread({\n percent: percent,\n cornerRadius: cornerRadius,\n name: name,\n tooltipPayload: tooltipPayload,\n midAngle: midAngle,\n middleRadius: middleRadius,\n tooltipPosition: tooltipPosition\n }, entry), coordinate), {}, {\n value: getValueByDataKey(entry, realDataKey),\n startAngle: tempStartAngle,\n endAngle: tempEndAngle,\n payload: entry,\n paddingAngle: mathSign(deltaAngle) * paddingAngle\n });\n return prev;\n });\n }\n return _objectSpread(_objectSpread({}, coordinate), {}, {\n sectors: sectors,\n data: pieData\n });\n});","var baseExtremum = require('./_baseExtremum'),\n baseGt = require('./_baseGt'),\n baseIteratee = require('./_baseIteratee');\n\n/**\n * This method is like `_.max` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * the value is ranked. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {*} Returns the maximum value.\n * @example\n *\n * var objects = [{ 'n': 1 }, { 'n': 2 }];\n *\n * _.maxBy(objects, function(o) { return o.n; });\n * // => { 'n': 2 }\n *\n * // The `_.property` iteratee shorthand.\n * _.maxBy(objects, 'n');\n * // => { 'n': 2 }\n */\nfunction maxBy(array, iteratee) {\n return (array && array.length)\n ? baseExtremum(array, baseIteratee(iteratee, 2), baseGt)\n : undefined;\n}\n\nmodule.exports = maxBy;\n","var baseExtremum = require('./_baseExtremum'),\n baseIteratee = require('./_baseIteratee'),\n baseLt = require('./_baseLt');\n\n/**\n * This method is like `_.min` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * the value is ranked. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {*} Returns the minimum value.\n * @example\n *\n * var objects = [{ 'n': 1 }, { 'n': 2 }];\n *\n * _.minBy(objects, function(o) { return o.n; });\n * // => { 'n': 1 }\n *\n * // The `_.property` iteratee shorthand.\n * _.minBy(objects, 'n');\n * // => { 'n': 1 }\n */\nfunction minBy(array, iteratee) {\n return (array && array.length)\n ? baseExtremum(array, baseIteratee(iteratee, 2), baseLt)\n : undefined;\n}\n\nmodule.exports = minBy;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"className\", \"as\"];\nimport classNames from 'classnames';\nimport React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar NavbarBrand = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n className = _ref.className,\n as = _ref.as,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n bsPrefix = useBootstrapPrefix(bsPrefix, 'navbar-brand');\n var Component = as || (props.href ? 'a' : 'span');\n return /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n ref: ref,\n className: classNames(className, bsPrefix)\n }));\n});\nNavbarBrand.displayName = 'NavbarBrand';\nexport default NavbarBrand;","/**\n * Returns the owner document of a given element.\n * \n * @param node the element\n */\nexport default function ownerDocument(node) {\n return node && node.ownerDocument || document;\n}","export default !!(typeof window !== 'undefined' && window.document && window.document.createElement);","function deferred() {\n var def = {};\n def.promise = new Promise(function (resolve, reject) {\n def.resolve = resolve;\n def.reject = reject;\n });\n return def;\n}\nfunction arrayOfDeferred(length) {\n var arr = [];\n\n for (var i = 0; i < length; i++) {\n arr.push(deferred());\n }\n\n return arr;\n}\n\nexport default deferred;\nexport { arrayOfDeferred };\n","import { CHANNEL_END_TYPE, MULTICAST, MATCH, SAGA_ACTION, CANCEL, SELF_CANCELLATION, TERMINATE, TASK, TASK_CANCEL, IO } from '@redux-saga/symbols';\nexport { CANCEL, SAGA_LOCATION } from '@redux-saga/symbols';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport _objectWithoutPropertiesLoose from '@babel/runtime/helpers/esm/objectWithoutPropertiesLoose';\nimport { string as string$1, array as array$1, stringableFunc, func, symbol as symbol$1, buffer, notUndef, promise, iterator, undef, object, channel as channel$1 } from '@redux-saga/is';\nimport { k as kTrue, e as expanding, c as check, o as once, r as remove, n as none, i as internalErr, T as TAKE, P as PUT, A as ALL, R as RACE, C as CALL, a as CPS, F as FORK, J as JOIN, b as CANCEL$1, S as SELECT, d as ACTION_CHANNEL, f as CANCELLED$1, g as FLUSH, G as GET_CONTEXT, h as SET_CONTEXT, j as getMetaInfo, l as createAllStyleChildCallbacks, m as createEmptyArray, p as assignWithSymbols, q as makeIterator, s as shouldComplete, t as noop, u as flatMap, v as getLocation, w as createSetContextWarning, x as asyncIteratorSymbol, y as shouldCancel, z as shouldTerminate, B as compose, D as logError, E as wrapSagaDispatch, H as identity } from './io-22ea0cf9.js';\nexport { I as buffers, K as detach } from './io-22ea0cf9.js';\nimport deferred from '@redux-saga/deferred';\nimport '@redux-saga/delay-p';\n\nvar queue = [];\n/**\n Variable to hold a counting semaphore\n - Incrementing adds a lock and puts the scheduler in a `suspended` state (if it's not\n already suspended)\n - Decrementing releases a lock. Zero locks puts the scheduler in a `released` state. This\n triggers flushing the queued tasks.\n**/\n\nvar semaphore = 0;\n/**\n Executes a task 'atomically'. Tasks scheduled during this execution will be queued\n and flushed after this task has finished (assuming the scheduler endup in a released\n state).\n**/\n\nfunction exec(task) {\n try {\n suspend();\n task();\n } finally {\n release();\n }\n}\n/**\n Executes or queues a task depending on the state of the scheduler (`suspended` or `released`)\n**/\n\n\nfunction asap(task) {\n queue.push(task);\n\n if (!semaphore) {\n suspend();\n flush();\n }\n}\n/**\n * Puts the scheduler in a `suspended` state and executes a task immediately.\n */\n\nfunction immediately(task) {\n try {\n suspend();\n return task();\n } finally {\n flush();\n }\n}\n/**\n Puts the scheduler in a `suspended` state. Scheduled tasks will be queued until the\n scheduler is released.\n**/\n\nfunction suspend() {\n semaphore++;\n}\n/**\n Puts the scheduler in a `released` state.\n**/\n\n\nfunction release() {\n semaphore--;\n}\n/**\n Releases the current lock. Executes all queued tasks if the scheduler is in the released state.\n**/\n\n\nfunction flush() {\n release();\n var task;\n\n while (!semaphore && (task = queue.shift()) !== undefined) {\n exec(task);\n }\n}\n\nvar array = function array(patterns) {\n return function (input) {\n return patterns.some(function (p) {\n return matcher(p)(input);\n });\n };\n};\nvar predicate = function predicate(_predicate) {\n return function (input) {\n return _predicate(input);\n };\n};\nvar string = function string(pattern) {\n return function (input) {\n return input.type === String(pattern);\n };\n};\nvar symbol = function symbol(pattern) {\n return function (input) {\n return input.type === pattern;\n };\n};\nvar wildcard = function wildcard() {\n return kTrue;\n};\nfunction matcher(pattern) {\n // prettier-ignore\n var matcherCreator = pattern === '*' ? wildcard : string$1(pattern) ? string : array$1(pattern) ? array : stringableFunc(pattern) ? string : func(pattern) ? predicate : symbol$1(pattern) ? symbol : null;\n\n if (matcherCreator === null) {\n throw new Error(\"invalid pattern: \" + pattern);\n }\n\n return matcherCreator(pattern);\n}\n\nvar END = {\n type: CHANNEL_END_TYPE\n};\nvar isEnd = function isEnd(a) {\n return a && a.type === CHANNEL_END_TYPE;\n};\nvar CLOSED_CHANNEL_WITH_TAKERS = 'Cannot have a closed channel with pending takers';\nvar INVALID_BUFFER = 'invalid buffer passed to channel factory function';\nvar UNDEFINED_INPUT_ERROR = \"Saga or channel was provided with an undefined action\\nHints:\\n - check that your Action Creator returns a non-undefined value\\n - if the Saga was started using runSaga, check that your subscribe source provides the action to its listeners\";\nfunction channel(buffer$1) {\n if (buffer$1 === void 0) {\n buffer$1 = expanding();\n }\n\n var closed = false;\n var takers = [];\n\n if (process.env.NODE_ENV !== 'production') {\n check(buffer$1, buffer, INVALID_BUFFER);\n }\n\n function checkForbiddenStates() {\n if (closed && takers.length) {\n throw internalErr(CLOSED_CHANNEL_WITH_TAKERS);\n }\n\n if (takers.length && !buffer$1.isEmpty()) {\n throw internalErr('Cannot have pending takers with non empty buffer');\n }\n }\n\n function put(input) {\n if (process.env.NODE_ENV !== 'production') {\n checkForbiddenStates();\n check(input, notUndef, UNDEFINED_INPUT_ERROR);\n }\n\n if (closed) {\n return;\n }\n\n if (takers.length === 0) {\n return buffer$1.put(input);\n }\n\n var cb = takers.shift();\n cb(input);\n }\n\n function take(cb) {\n if (process.env.NODE_ENV !== 'production') {\n checkForbiddenStates();\n check(cb, func, \"channel.take's callback must be a function\");\n }\n\n if (closed && buffer$1.isEmpty()) {\n cb(END);\n } else if (!buffer$1.isEmpty()) {\n cb(buffer$1.take());\n } else {\n takers.push(cb);\n\n cb.cancel = function () {\n remove(takers, cb);\n };\n }\n }\n\n function flush(cb) {\n if (process.env.NODE_ENV !== 'production') {\n checkForbiddenStates();\n check(cb, func, \"channel.flush' callback must be a function\");\n }\n\n if (closed && buffer$1.isEmpty()) {\n cb(END);\n return;\n }\n\n cb(buffer$1.flush());\n }\n\n function close() {\n if (process.env.NODE_ENV !== 'production') {\n checkForbiddenStates();\n }\n\n if (closed) {\n return;\n }\n\n closed = true;\n var arr = takers;\n takers = [];\n\n for (var i = 0, len = arr.length; i < len; i++) {\n var taker = arr[i];\n taker(END);\n }\n }\n\n return {\n take: take,\n put: put,\n flush: flush,\n close: close\n };\n}\nfunction eventChannel(subscribe, buffer) {\n if (buffer === void 0) {\n buffer = none();\n }\n\n var closed = false;\n var unsubscribe;\n var chan = channel(buffer);\n\n var close = function close() {\n if (closed) {\n return;\n }\n\n closed = true;\n\n if (func(unsubscribe)) {\n unsubscribe();\n }\n\n chan.close();\n };\n\n unsubscribe = subscribe(function (input) {\n if (isEnd(input)) {\n close();\n return;\n }\n\n chan.put(input);\n });\n\n if (process.env.NODE_ENV !== 'production') {\n check(unsubscribe, func, 'in eventChannel: subscribe should return a function to unsubscribe');\n }\n\n unsubscribe = once(unsubscribe);\n\n if (closed) {\n unsubscribe();\n }\n\n return {\n take: chan.take,\n flush: chan.flush,\n close: close\n };\n}\nfunction multicastChannel() {\n var _ref;\n\n var closed = false;\n var currentTakers = [];\n var nextTakers = currentTakers;\n\n function checkForbiddenStates() {\n if (closed && nextTakers.length) {\n throw internalErr(CLOSED_CHANNEL_WITH_TAKERS);\n }\n }\n\n var ensureCanMutateNextTakers = function ensureCanMutateNextTakers() {\n if (nextTakers !== currentTakers) {\n return;\n }\n\n nextTakers = currentTakers.slice();\n };\n\n var close = function close() {\n if (process.env.NODE_ENV !== 'production') {\n checkForbiddenStates();\n }\n\n closed = true;\n var takers = currentTakers = nextTakers;\n nextTakers = [];\n takers.forEach(function (taker) {\n taker(END);\n });\n };\n\n return _ref = {}, _ref[MULTICAST] = true, _ref.put = function put(input) {\n if (process.env.NODE_ENV !== 'production') {\n checkForbiddenStates();\n check(input, notUndef, UNDEFINED_INPUT_ERROR);\n }\n\n if (closed) {\n return;\n }\n\n if (isEnd(input)) {\n close();\n return;\n }\n\n var takers = currentTakers = nextTakers;\n\n for (var i = 0, len = takers.length; i < len; i++) {\n var taker = takers[i];\n\n if (taker[MATCH](input)) {\n taker.cancel();\n taker(input);\n }\n }\n }, _ref.take = function take(cb, matcher) {\n if (matcher === void 0) {\n matcher = wildcard;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n checkForbiddenStates();\n }\n\n if (closed) {\n cb(END);\n return;\n }\n\n cb[MATCH] = matcher;\n ensureCanMutateNextTakers();\n nextTakers.push(cb);\n cb.cancel = once(function () {\n ensureCanMutateNextTakers();\n remove(nextTakers, cb);\n });\n }, _ref.close = close, _ref;\n}\nfunction stdChannel() {\n var chan = multicastChannel();\n var put = chan.put;\n\n chan.put = function (input) {\n if (input[SAGA_ACTION]) {\n put(input);\n return;\n }\n\n asap(function () {\n put(input);\n });\n };\n\n return chan;\n}\n\nvar RUNNING = 0;\nvar CANCELLED = 1;\nvar ABORTED = 2;\nvar DONE = 3;\n\nfunction resolvePromise(promise, cb) {\n var cancelPromise = promise[CANCEL];\n\n if (func(cancelPromise)) {\n cb.cancel = cancelPromise;\n }\n\n promise.then(cb, function (error) {\n cb(error, true);\n });\n}\n\nvar current = 0;\nvar nextSagaId = (function () {\n return ++current;\n});\n\nvar _effectRunnerMap;\n\nfunction getIteratorMetaInfo(iterator, fn) {\n if (iterator.isSagaIterator) {\n return {\n name: iterator.meta.name\n };\n }\n\n return getMetaInfo(fn);\n}\n\nfunction createTaskIterator(_ref) {\n var context = _ref.context,\n fn = _ref.fn,\n args = _ref.args;\n\n // catch synchronous failures; see #152 and #441\n try {\n var result = fn.apply(context, args); // i.e. a generator function returns an iterator\n\n if (iterator(result)) {\n return result;\n }\n\n var resolved = false;\n\n var next = function next(arg) {\n if (!resolved) {\n resolved = true; // Only promises returned from fork will be interpreted. See #1573\n\n return {\n value: result,\n done: !promise(result)\n };\n } else {\n return {\n value: arg,\n done: true\n };\n }\n };\n\n return makeIterator(next);\n } catch (err) {\n // do not bubble up synchronous failures for detached forks\n // instead create a failed task. See #152 and #441\n return makeIterator(function () {\n throw err;\n });\n }\n}\n\nfunction runPutEffect(env, _ref2, cb) {\n var channel = _ref2.channel,\n action = _ref2.action,\n resolve = _ref2.resolve;\n\n /**\n Schedule the put in case another saga is holding a lock.\n The put will be executed atomically. ie nested puts will execute after\n this put has terminated.\n **/\n asap(function () {\n var result;\n\n try {\n result = (channel ? channel.put : env.dispatch)(action);\n } catch (error) {\n cb(error, true);\n return;\n }\n\n if (resolve && promise(result)) {\n resolvePromise(result, cb);\n } else {\n cb(result);\n }\n }); // Put effects are non cancellables\n}\n\nfunction runTakeEffect(env, _ref3, cb) {\n var _ref3$channel = _ref3.channel,\n channel = _ref3$channel === void 0 ? env.channel : _ref3$channel,\n pattern = _ref3.pattern,\n maybe = _ref3.maybe;\n\n var takeCb = function takeCb(input) {\n if (input instanceof Error) {\n cb(input, true);\n return;\n }\n\n if (isEnd(input) && !maybe) {\n cb(TERMINATE);\n return;\n }\n\n cb(input);\n };\n\n try {\n channel.take(takeCb, notUndef(pattern) ? matcher(pattern) : null);\n } catch (err) {\n cb(err, true);\n return;\n }\n\n cb.cancel = takeCb.cancel;\n}\n\nfunction runCallEffect(env, _ref4, cb, _ref5) {\n var context = _ref4.context,\n fn = _ref4.fn,\n args = _ref4.args;\n var task = _ref5.task;\n\n // catch synchronous failures; see #152\n try {\n var result = fn.apply(context, args);\n\n if (promise(result)) {\n resolvePromise(result, cb);\n return;\n }\n\n if (iterator(result)) {\n // resolve iterator\n proc(env, result, task.context, current, getMetaInfo(fn),\n /* isRoot */\n false, cb);\n return;\n }\n\n cb(result);\n } catch (error) {\n cb(error, true);\n }\n}\n\nfunction runCPSEffect(env, _ref6, cb) {\n var context = _ref6.context,\n fn = _ref6.fn,\n args = _ref6.args;\n\n // CPS (ie node style functions) can define their own cancellation logic\n // by setting cancel field on the cb\n // catch synchronous failures; see #152\n try {\n var cpsCb = function cpsCb(err, res) {\n if (undef(err)) {\n cb(res);\n } else {\n cb(err, true);\n }\n };\n\n fn.apply(context, args.concat(cpsCb));\n\n if (cpsCb.cancel) {\n cb.cancel = cpsCb.cancel;\n }\n } catch (error) {\n cb(error, true);\n }\n}\n\nfunction runForkEffect(env, _ref7, cb, _ref8) {\n var context = _ref7.context,\n fn = _ref7.fn,\n args = _ref7.args,\n detached = _ref7.detached;\n var parent = _ref8.task;\n var taskIterator = createTaskIterator({\n context: context,\n fn: fn,\n args: args\n });\n var meta = getIteratorMetaInfo(taskIterator, fn);\n immediately(function () {\n var child = proc(env, taskIterator, parent.context, current, meta, detached, undefined);\n\n if (detached) {\n cb(child);\n } else {\n if (child.isRunning()) {\n parent.queue.addTask(child);\n cb(child);\n } else if (child.isAborted()) {\n parent.queue.abort(child.error());\n } else {\n cb(child);\n }\n }\n }); // Fork effects are non cancellables\n}\n\nfunction runJoinEffect(env, taskOrTasks, cb, _ref9) {\n var task = _ref9.task;\n\n var joinSingleTask = function joinSingleTask(taskToJoin, cb) {\n if (taskToJoin.isRunning()) {\n var joiner = {\n task: task,\n cb: cb\n };\n\n cb.cancel = function () {\n if (taskToJoin.isRunning()) remove(taskToJoin.joiners, joiner);\n };\n\n taskToJoin.joiners.push(joiner);\n } else {\n if (taskToJoin.isAborted()) {\n cb(taskToJoin.error(), true);\n } else {\n cb(taskToJoin.result());\n }\n }\n };\n\n if (array$1(taskOrTasks)) {\n if (taskOrTasks.length === 0) {\n cb([]);\n return;\n }\n\n var childCallbacks = createAllStyleChildCallbacks(taskOrTasks, cb);\n taskOrTasks.forEach(function (t, i) {\n joinSingleTask(t, childCallbacks[i]);\n });\n } else {\n joinSingleTask(taskOrTasks, cb);\n }\n}\n\nfunction cancelSingleTask(taskToCancel) {\n if (taskToCancel.isRunning()) {\n taskToCancel.cancel();\n }\n}\n\nfunction runCancelEffect(env, taskOrTasks, cb, _ref10) {\n var task = _ref10.task;\n\n if (taskOrTasks === SELF_CANCELLATION) {\n cancelSingleTask(task);\n } else if (array$1(taskOrTasks)) {\n taskOrTasks.forEach(cancelSingleTask);\n } else {\n cancelSingleTask(taskOrTasks);\n }\n\n cb(); // cancel effects are non cancellables\n}\n\nfunction runAllEffect(env, effects, cb, _ref11) {\n var digestEffect = _ref11.digestEffect;\n var effectId = current;\n var keys = Object.keys(effects);\n\n if (keys.length === 0) {\n cb(array$1(effects) ? [] : {});\n return;\n }\n\n var childCallbacks = createAllStyleChildCallbacks(effects, cb);\n keys.forEach(function (key) {\n digestEffect(effects[key], effectId, childCallbacks[key], key);\n });\n}\n\nfunction runRaceEffect(env, effects, cb, _ref12) {\n var digestEffect = _ref12.digestEffect;\n var effectId = current;\n var keys = Object.keys(effects);\n var response = array$1(effects) ? createEmptyArray(keys.length) : {};\n var childCbs = {};\n var completed = false;\n keys.forEach(function (key) {\n var chCbAtKey = function chCbAtKey(res, isErr) {\n if (completed) {\n return;\n }\n\n if (isErr || shouldComplete(res)) {\n // Race Auto cancellation\n cb.cancel();\n cb(res, isErr);\n } else {\n cb.cancel();\n completed = true;\n response[key] = res;\n cb(response);\n }\n };\n\n chCbAtKey.cancel = noop;\n childCbs[key] = chCbAtKey;\n });\n\n cb.cancel = function () {\n // prevents unnecessary cancellation\n if (!completed) {\n completed = true;\n keys.forEach(function (key) {\n return childCbs[key].cancel();\n });\n }\n };\n\n keys.forEach(function (key) {\n if (completed) {\n return;\n }\n\n digestEffect(effects[key], effectId, childCbs[key], key);\n });\n}\n\nfunction runSelectEffect(env, _ref13, cb) {\n var selector = _ref13.selector,\n args = _ref13.args;\n\n try {\n var state = selector.apply(void 0, [env.getState()].concat(args));\n cb(state);\n } catch (error) {\n cb(error, true);\n }\n}\n\nfunction runChannelEffect(env, _ref14, cb) {\n var pattern = _ref14.pattern,\n buffer = _ref14.buffer;\n var chan = channel(buffer);\n var match = matcher(pattern);\n\n var taker = function taker(action) {\n if (!isEnd(action)) {\n env.channel.take(taker, match);\n }\n\n chan.put(action);\n };\n\n var close = chan.close;\n\n chan.close = function () {\n taker.cancel();\n close();\n };\n\n env.channel.take(taker, match);\n cb(chan);\n}\n\nfunction runCancelledEffect(env, data, cb, _ref15) {\n var task = _ref15.task;\n cb(task.isCancelled());\n}\n\nfunction runFlushEffect(env, channel, cb) {\n channel.flush(cb);\n}\n\nfunction runGetContextEffect(env, prop, cb, _ref16) {\n var task = _ref16.task;\n cb(task.context[prop]);\n}\n\nfunction runSetContextEffect(env, props, cb, _ref17) {\n var task = _ref17.task;\n assignWithSymbols(task.context, props);\n cb();\n}\n\nvar effectRunnerMap = (_effectRunnerMap = {}, _effectRunnerMap[TAKE] = runTakeEffect, _effectRunnerMap[PUT] = runPutEffect, _effectRunnerMap[ALL] = runAllEffect, _effectRunnerMap[RACE] = runRaceEffect, _effectRunnerMap[CALL] = runCallEffect, _effectRunnerMap[CPS] = runCPSEffect, _effectRunnerMap[FORK] = runForkEffect, _effectRunnerMap[JOIN] = runJoinEffect, _effectRunnerMap[CANCEL$1] = runCancelEffect, _effectRunnerMap[SELECT] = runSelectEffect, _effectRunnerMap[ACTION_CHANNEL] = runChannelEffect, _effectRunnerMap[CANCELLED$1] = runCancelledEffect, _effectRunnerMap[FLUSH] = runFlushEffect, _effectRunnerMap[GET_CONTEXT] = runGetContextEffect, _effectRunnerMap[SET_CONTEXT] = runSetContextEffect, _effectRunnerMap);\n\n/**\n Used to track a parent task and its forks\n In the fork model, forked tasks are attached by default to their parent\n We model this using the concept of Parent task && main Task\n main task is the main flow of the current Generator, the parent tasks is the\n aggregation of the main tasks + all its forked tasks.\n Thus the whole model represents an execution tree with multiple branches (vs the\n linear execution tree in sequential (non parallel) programming)\n\n A parent tasks has the following semantics\n - It completes if all its forks either complete or all cancelled\n - If it's cancelled, all forks are cancelled as well\n - It aborts if any uncaught error bubbles up from forks\n - If it completes, the return value is the one returned by the main task\n **/\n\nfunction forkQueue(mainTask, onAbort, cont) {\n var tasks = [];\n var result;\n var completed = false;\n addTask(mainTask);\n\n var getTasks = function getTasks() {\n return tasks;\n };\n\n function abort(err) {\n onAbort();\n cancelAll();\n cont(err, true);\n }\n\n function addTask(task) {\n tasks.push(task);\n\n task.cont = function (res, isErr) {\n if (completed) {\n return;\n }\n\n remove(tasks, task);\n task.cont = noop;\n\n if (isErr) {\n abort(res);\n } else {\n if (task === mainTask) {\n result = res;\n }\n\n if (!tasks.length) {\n completed = true;\n cont(result);\n }\n }\n };\n }\n\n function cancelAll() {\n if (completed) {\n return;\n }\n\n completed = true;\n tasks.forEach(function (t) {\n t.cont = noop;\n t.cancel();\n });\n tasks = [];\n }\n\n return {\n addTask: addTask,\n cancelAll: cancelAll,\n abort: abort,\n getTasks: getTasks\n };\n}\n\n// there can be only a single saga error created at any given moment\n\nfunction formatLocation(fileName, lineNumber) {\n return fileName + \"?\" + lineNumber;\n}\n\nfunction effectLocationAsString(effect) {\n var location = getLocation(effect);\n\n if (location) {\n var code = location.code,\n fileName = location.fileName,\n lineNumber = location.lineNumber;\n var source = code + \" \" + formatLocation(fileName, lineNumber);\n return source;\n }\n\n return '';\n}\n\nfunction sagaLocationAsString(sagaMeta) {\n var name = sagaMeta.name,\n location = sagaMeta.location;\n\n if (location) {\n return name + \" \" + formatLocation(location.fileName, location.lineNumber);\n }\n\n return name;\n}\n\nfunction cancelledTasksAsString(sagaStack) {\n var cancelledTasks = flatMap(function (i) {\n return i.cancelledTasks;\n }, sagaStack);\n\n if (!cancelledTasks.length) {\n return '';\n }\n\n return ['Tasks cancelled due to error:'].concat(cancelledTasks).join('\\n');\n}\n\nvar crashedEffect = null;\nvar sagaStack = [];\nvar addSagaFrame = function addSagaFrame(frame) {\n frame.crashedEffect = crashedEffect;\n sagaStack.push(frame);\n};\nvar clear = function clear() {\n crashedEffect = null;\n sagaStack.length = 0;\n}; // this sets crashed effect for the soon-to-be-reported saga frame\n// this slightly streatches the singleton nature of this module into wrong direction\n// as it's even less obvious what's the data flow here, but it is what it is for now\n\nvar setCrashedEffect = function setCrashedEffect(effect) {\n crashedEffect = effect;\n};\n/**\n @returns {string}\n\n @example\n The above error occurred in task errorInPutSaga {pathToFile}\n when executing effect put({type: 'REDUCER_ACTION_ERROR_IN_PUT'}) {pathToFile}\n created by fetchSaga {pathToFile}\n created by rootSaga {pathToFile}\n*/\n\nvar toString = function toString() {\n var firstSaga = sagaStack[0],\n otherSagas = sagaStack.slice(1);\n var crashedEffectLocation = firstSaga.crashedEffect ? effectLocationAsString(firstSaga.crashedEffect) : null;\n var errorMessage = \"The above error occurred in task \" + sagaLocationAsString(firstSaga.meta) + (crashedEffectLocation ? \" \\n when executing effect \" + crashedEffectLocation : '');\n return [errorMessage].concat(otherSagas.map(function (s) {\n return \" created by \" + sagaLocationAsString(s.meta);\n }), [cancelledTasksAsString(sagaStack)]).join('\\n');\n};\n\nfunction newTask(env, mainTask, parentContext, parentEffectId, meta, isRoot, cont) {\n var _task;\n\n if (cont === void 0) {\n cont = noop;\n }\n\n var status = RUNNING;\n var taskResult;\n var taskError;\n var deferredEnd = null;\n var cancelledDueToErrorTasks = [];\n var context = Object.create(parentContext);\n var queue = forkQueue(mainTask, function onAbort() {\n cancelledDueToErrorTasks.push.apply(cancelledDueToErrorTasks, queue.getTasks().map(function (t) {\n return t.meta.name;\n }));\n }, end);\n /**\n This may be called by a parent generator to trigger/propagate cancellation\n cancel all pending tasks (including the main task), then end the current task.\n Cancellation propagates down to the whole execution tree held by this Parent task\n It's also propagated to all joiners of this task and their execution tree/joiners\n Cancellation is noop for terminated/Cancelled tasks tasks\n **/\n\n function cancel() {\n if (status === RUNNING) {\n // Setting status to CANCELLED does not necessarily mean that the task/iterators are stopped\n // effects in the iterator's finally block will still be executed\n status = CANCELLED;\n queue.cancelAll(); // Ending with a TASK_CANCEL will propagate the Cancellation to all joiners\n\n end(TASK_CANCEL, false);\n }\n }\n\n function end(result, isErr) {\n if (!isErr) {\n // The status here may be RUNNING or CANCELLED\n // If the status is CANCELLED, then we do not need to change it here\n if (result === TASK_CANCEL) {\n status = CANCELLED;\n } else if (status !== CANCELLED) {\n status = DONE;\n }\n\n taskResult = result;\n deferredEnd && deferredEnd.resolve(result);\n } else {\n status = ABORTED;\n addSagaFrame({\n meta: meta,\n cancelledTasks: cancelledDueToErrorTasks\n });\n\n if (task.isRoot) {\n var sagaStack = toString(); // we've dumped the saga stack to string and are passing it to user's code\n // we know that it won't be needed anymore and we need to clear it\n\n clear();\n env.onError(result, {\n sagaStack: sagaStack\n });\n }\n\n taskError = result;\n deferredEnd && deferredEnd.reject(result);\n }\n\n task.cont(result, isErr);\n task.joiners.forEach(function (joiner) {\n joiner.cb(result, isErr);\n });\n task.joiners = null;\n }\n\n function setContext(props) {\n if (process.env.NODE_ENV !== 'production') {\n check(props, object, createSetContextWarning('task', props));\n }\n\n assignWithSymbols(context, props);\n }\n\n function toPromise() {\n if (deferredEnd) {\n return deferredEnd.promise;\n }\n\n deferredEnd = deferred();\n\n if (status === ABORTED) {\n deferredEnd.reject(taskError);\n } else if (status !== RUNNING) {\n deferredEnd.resolve(taskResult);\n }\n\n return deferredEnd.promise;\n }\n\n var task = (_task = {}, _task[TASK] = true, _task.id = parentEffectId, _task.meta = meta, _task.isRoot = isRoot, _task.context = context, _task.joiners = [], _task.queue = queue, _task.cancel = cancel, _task.cont = cont, _task.end = end, _task.setContext = setContext, _task.toPromise = toPromise, _task.isRunning = function isRunning() {\n return status === RUNNING;\n }, _task.isCancelled = function isCancelled() {\n return status === CANCELLED || status === RUNNING && mainTask.status === CANCELLED;\n }, _task.isAborted = function isAborted() {\n return status === ABORTED;\n }, _task.result = function result() {\n return taskResult;\n }, _task.error = function error() {\n return taskError;\n }, _task);\n return task;\n}\n\nfunction proc(env, iterator$1, parentContext, parentEffectId, meta, isRoot, cont) {\n if (process.env.NODE_ENV !== 'production' && iterator$1[asyncIteratorSymbol]) {\n throw new Error(\"redux-saga doesn't support async generators, please use only regular ones\");\n }\n\n var finalRunEffect = env.finalizeRunEffect(runEffect);\n /**\n Tracks the current effect cancellation\n Each time the generator progresses. calling runEffect will set a new value\n on it. It allows propagating cancellation to child effects\n **/\n\n next.cancel = noop;\n /** Creates a main task to track the main flow */\n\n var mainTask = {\n meta: meta,\n cancel: cancelMain,\n status: RUNNING\n };\n /**\n Creates a new task descriptor for this generator.\n A task is the aggregation of it's mainTask and all it's forked tasks.\n **/\n\n var task = newTask(env, mainTask, parentContext, parentEffectId, meta, isRoot, cont);\n var executingContext = {\n task: task,\n digestEffect: digestEffect\n };\n /**\n cancellation of the main task. We'll simply resume the Generator with a TASK_CANCEL\n **/\n\n function cancelMain() {\n if (mainTask.status === RUNNING) {\n mainTask.status = CANCELLED;\n next(TASK_CANCEL);\n }\n }\n /**\n attaches cancellation logic to this task's continuation\n this will permit cancellation to propagate down the call chain\n **/\n\n\n if (cont) {\n cont.cancel = task.cancel;\n } // kicks up the generator\n\n\n next(); // then return the task descriptor to the caller\n\n return task;\n /**\n * This is the generator driver\n * It's a recursive async/continuation function which calls itself\n * until the generator terminates or throws\n * @param {internal commands(TASK_CANCEL | TERMINATE) | any} arg - value, generator will be resumed with.\n * @param {boolean} isErr - the flag shows if effect finished with an error\n *\n * receives either (command | effect result, false) or (any thrown thing, true)\n */\n\n function next(arg, isErr) {\n try {\n var result;\n\n if (isErr) {\n result = iterator$1.throw(arg); // user handled the error, we can clear bookkept values\n\n clear();\n } else if (shouldCancel(arg)) {\n /**\n getting TASK_CANCEL automatically cancels the main task\n We can get this value here\n - By cancelling the parent task manually\n - By joining a Cancelled task\n **/\n mainTask.status = CANCELLED;\n /**\n Cancels the current effect; this will propagate the cancellation down to any called tasks\n **/\n\n next.cancel();\n /**\n If this Generator has a `return` method then invokes it\n This will jump to the finally block\n **/\n\n result = func(iterator$1.return) ? iterator$1.return(TASK_CANCEL) : {\n done: true,\n value: TASK_CANCEL\n };\n } else if (shouldTerminate(arg)) {\n // We get TERMINATE flag, i.e. by taking from a channel that ended using `take` (and not `takem` used to trap End of channels)\n result = func(iterator$1.return) ? iterator$1.return() : {\n done: true\n };\n } else {\n result = iterator$1.next(arg);\n }\n\n if (!result.done) {\n digestEffect(result.value, parentEffectId, next);\n } else {\n /**\n This Generator has ended, terminate the main task and notify the fork queue\n **/\n if (mainTask.status !== CANCELLED) {\n mainTask.status = DONE;\n }\n\n mainTask.cont(result.value);\n }\n } catch (error) {\n if (mainTask.status === CANCELLED) {\n throw error;\n }\n\n mainTask.status = ABORTED;\n mainTask.cont(error, true);\n }\n }\n\n function runEffect(effect, effectId, currCb) {\n /**\n each effect runner must attach its own logic of cancellation to the provided callback\n it allows this generator to propagate cancellation downward.\n ATTENTION! effect runners must setup the cancel logic by setting cb.cancel = [cancelMethod]\n And the setup must occur before calling the callback\n This is a sort of inversion of control: called async functions are responsible\n of completing the flow by calling the provided continuation; while caller functions\n are responsible for aborting the current flow by calling the attached cancel function\n Library users can attach their own cancellation logic to promises by defining a\n promise[CANCEL] method in their returned promises\n ATTENTION! calling cancel must have no effect on an already completed or cancelled effect\n **/\n if (promise(effect)) {\n resolvePromise(effect, currCb);\n } else if (iterator(effect)) {\n // resolve iterator\n proc(env, effect, task.context, effectId, meta,\n /* isRoot */\n false, currCb);\n } else if (effect && effect[IO]) {\n var effectRunner = effectRunnerMap[effect.type];\n effectRunner(env, effect.payload, currCb, executingContext);\n } else {\n // anything else returned as is\n currCb(effect);\n }\n }\n\n function digestEffect(effect, parentEffectId, cb, label) {\n if (label === void 0) {\n label = '';\n }\n\n var effectId = nextSagaId();\n env.sagaMonitor && env.sagaMonitor.effectTriggered({\n effectId: effectId,\n parentEffectId: parentEffectId,\n label: label,\n effect: effect\n });\n /**\n completion callback and cancel callback are mutually exclusive\n We can't cancel an already completed effect\n And We can't complete an already cancelled effectId\n **/\n\n var effectSettled; // Completion callback passed to the appropriate effect runner\n\n function currCb(res, isErr) {\n if (effectSettled) {\n return;\n }\n\n effectSettled = true;\n cb.cancel = noop; // defensive measure\n\n if (env.sagaMonitor) {\n if (isErr) {\n env.sagaMonitor.effectRejected(effectId, res);\n } else {\n env.sagaMonitor.effectResolved(effectId, res);\n }\n }\n\n if (isErr) {\n setCrashedEffect(effect);\n }\n\n cb(res, isErr);\n } // tracks down the current cancel\n\n\n currCb.cancel = noop; // setup cancellation logic on the parent cb\n\n cb.cancel = function () {\n // prevents cancelling an already completed effect\n if (effectSettled) {\n return;\n }\n\n effectSettled = true;\n currCb.cancel(); // propagates cancel downward\n\n currCb.cancel = noop; // defensive measure\n\n env.sagaMonitor && env.sagaMonitor.effectCancelled(effectId);\n };\n\n finalRunEffect(effect, effectId, currCb);\n }\n}\n\nvar RUN_SAGA_SIGNATURE = 'runSaga(options, saga, ...args)';\nvar NON_GENERATOR_ERR = RUN_SAGA_SIGNATURE + \": saga argument must be a Generator function!\";\nfunction runSaga(_ref, saga) {\n var _ref$channel = _ref.channel,\n channel = _ref$channel === void 0 ? stdChannel() : _ref$channel,\n dispatch = _ref.dispatch,\n getState = _ref.getState,\n _ref$context = _ref.context,\n context = _ref$context === void 0 ? {} : _ref$context,\n sagaMonitor = _ref.sagaMonitor,\n effectMiddlewares = _ref.effectMiddlewares,\n _ref$onError = _ref.onError,\n onError = _ref$onError === void 0 ? logError : _ref$onError;\n\n if (process.env.NODE_ENV !== 'production') {\n check(saga, func, NON_GENERATOR_ERR);\n }\n\n for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n args[_key - 2] = arguments[_key];\n }\n\n var iterator$1 = saga.apply(void 0, args);\n\n if (process.env.NODE_ENV !== 'production') {\n check(iterator$1, iterator, NON_GENERATOR_ERR);\n }\n\n var effectId = nextSagaId();\n\n if (sagaMonitor) {\n // monitors are expected to have a certain interface, let's fill-in any missing ones\n sagaMonitor.rootSagaStarted = sagaMonitor.rootSagaStarted || noop;\n sagaMonitor.effectTriggered = sagaMonitor.effectTriggered || noop;\n sagaMonitor.effectResolved = sagaMonitor.effectResolved || noop;\n sagaMonitor.effectRejected = sagaMonitor.effectRejected || noop;\n sagaMonitor.effectCancelled = sagaMonitor.effectCancelled || noop;\n sagaMonitor.actionDispatched = sagaMonitor.actionDispatched || noop;\n sagaMonitor.rootSagaStarted({\n effectId: effectId,\n saga: saga,\n args: args\n });\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (notUndef(dispatch)) {\n check(dispatch, func, 'dispatch must be a function');\n }\n\n if (notUndef(getState)) {\n check(getState, func, 'getState must be a function');\n }\n\n if (notUndef(effectMiddlewares)) {\n var MIDDLEWARE_TYPE_ERROR = 'effectMiddlewares must be an array of functions';\n check(effectMiddlewares, array$1, MIDDLEWARE_TYPE_ERROR);\n effectMiddlewares.forEach(function (effectMiddleware) {\n return check(effectMiddleware, func, MIDDLEWARE_TYPE_ERROR);\n });\n }\n\n check(onError, func, 'onError passed to the redux-saga is not a function!');\n }\n\n var finalizeRunEffect;\n\n if (effectMiddlewares) {\n var middleware = compose.apply(void 0, effectMiddlewares);\n\n finalizeRunEffect = function finalizeRunEffect(runEffect) {\n return function (effect, effectId, currCb) {\n var plainRunEffect = function plainRunEffect(eff) {\n return runEffect(eff, effectId, currCb);\n };\n\n return middleware(plainRunEffect)(effect);\n };\n };\n } else {\n finalizeRunEffect = identity;\n }\n\n var env = {\n channel: channel,\n dispatch: wrapSagaDispatch(dispatch),\n getState: getState,\n sagaMonitor: sagaMonitor,\n onError: onError,\n finalizeRunEffect: finalizeRunEffect\n };\n return immediately(function () {\n var task = proc(env, iterator$1, context, effectId, getMetaInfo(saga),\n /* isRoot */\n true, undefined);\n\n if (sagaMonitor) {\n sagaMonitor.effectResolved(effectId, task);\n }\n\n return task;\n });\n}\n\nfunction sagaMiddlewareFactory(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n _ref$context = _ref.context,\n context = _ref$context === void 0 ? {} : _ref$context,\n _ref$channel = _ref.channel,\n channel = _ref$channel === void 0 ? stdChannel() : _ref$channel,\n sagaMonitor = _ref.sagaMonitor,\n options = _objectWithoutPropertiesLoose(_ref, [\"context\", \"channel\", \"sagaMonitor\"]);\n\n var boundRunSaga;\n\n if (process.env.NODE_ENV !== 'production') {\n check(channel, channel$1, 'options.channel passed to the Saga middleware is not a channel');\n }\n\n function sagaMiddleware(_ref2) {\n var getState = _ref2.getState,\n dispatch = _ref2.dispatch;\n boundRunSaga = runSaga.bind(null, _extends({}, options, {\n context: context,\n channel: channel,\n dispatch: dispatch,\n getState: getState,\n sagaMonitor: sagaMonitor\n }));\n return function (next) {\n return function (action) {\n if (sagaMonitor && sagaMonitor.actionDispatched) {\n sagaMonitor.actionDispatched(action);\n }\n\n var result = next(action); // hit reducers\n\n channel.put(action);\n return result;\n };\n };\n }\n\n sagaMiddleware.run = function () {\n if (process.env.NODE_ENV !== 'production' && !boundRunSaga) {\n throw new Error('Before running a Saga, you must mount the Saga middleware on the Store using applyMiddleware');\n }\n\n return boundRunSaga.apply(void 0, arguments);\n };\n\n sagaMiddleware.setContext = function (props) {\n if (process.env.NODE_ENV !== 'production') {\n check(props, object, createSetContextWarning('sagaMiddleware', props));\n }\n\n assignWithSymbols(context, props);\n };\n\n return sagaMiddleware;\n}\n\nexport default sagaMiddlewareFactory;\nexport { END, channel, eventChannel, isEnd, multicastChannel, runSaga, stdChannel };\n","import createSagaMiddleware__default from '@redux-saga/core';\nexport * from '@redux-saga/core';\n\n\n\nexport default createSagaMiddleware__default;\n","import * as React from 'react';\nimport { IColumn } from './DetailsList.types';\nimport { css } from '../../Utilities';\nimport { IDetailsRowFieldsProps } from './DetailsRowFields.types';\nimport { DEFAULT_CELL_STYLE_PROPS } from './DetailsRow.styles';\n\nconst getCellText = (item: any, column: IColumn): string => {\n let value = item && column && column.fieldName ? item[column.fieldName] : '';\n\n if (value === null || value === undefined) {\n value = '';\n }\n\n if (typeof value === 'boolean') {\n return value.toString();\n }\n\n return value;\n};\n\n/**\n * Component for rendering a row's cells in a `DetailsList`.\n *\n * {@docCategory DetailsList}\n */\nexport const DetailsRowFields: React.FunctionComponent<IDetailsRowFieldsProps> = props => {\n const {\n columns,\n columnStartIndex,\n rowClassNames,\n cellStyleProps = DEFAULT_CELL_STYLE_PROPS,\n item,\n itemIndex,\n onRenderItemColumn,\n getCellValueKey,\n cellsByColumn,\n enableUpdateAnimations,\n rowHeaderId,\n } = props;\n\n const cellValueKeysRef = React.useRef<{\n [columnKey: string]: string | undefined;\n }>();\n\n const cellValueKeys = cellValueKeysRef.current || (cellValueKeysRef.current = {});\n\n return (\n <div className={rowClassNames.fields} data-automationid=\"DetailsRowFields\" role=\"presentation\">\n {columns.map((column, columnIndex) => {\n const width: string | number =\n typeof column.calculatedWidth === 'undefined'\n ? 'auto'\n : column.calculatedWidth +\n cellStyleProps.cellLeftPadding +\n cellStyleProps.cellRightPadding +\n (column.isPadded ? cellStyleProps.cellExtraRightPadding : 0);\n\n const { onRender = onRenderItemColumn, getValueKey = getCellValueKey } = column;\n const cellContentsRender =\n cellsByColumn && column.key in cellsByColumn\n ? cellsByColumn[column.key]\n : onRender\n ? onRender(item, itemIndex, column)\n : getCellText(item, column);\n\n const previousValueKey = cellValueKeys[column.key];\n\n const cellValueKey = enableUpdateAnimations && getValueKey ? getValueKey(item, itemIndex, column) : undefined;\n\n let showAnimation = false;\n\n if (cellValueKey !== undefined && previousValueKey !== undefined && cellValueKey !== previousValueKey) {\n showAnimation = true;\n }\n\n cellValueKeys[column.key] = cellValueKey;\n\n // generate a key that auto-dirties when content changes, to force the container to re-render,\n // to trigger animation\n const key = `${column.key}${cellValueKey !== undefined ? `-${cellValueKey}` : ''}`;\n return (\n <div\n key={key}\n id={column.isRowHeader ? rowHeaderId : undefined}\n role={column.isRowHeader ? 'rowheader' : 'gridcell'}\n aria-readonly\n aria-colindex={columnIndex + columnStartIndex + 1}\n className={css(\n column.className,\n column.isMultiline && rowClassNames.isMultiline,\n column.isRowHeader && rowClassNames.isRowHeader,\n rowClassNames.cell,\n column.isPadded ? rowClassNames.cellPadded : rowClassNames.cellUnpadded,\n showAnimation && rowClassNames.cellAnimation,\n )}\n style={{ width }}\n data-automationid=\"DetailsRowCell\"\n data-automation-key={column.key}\n >\n {cellContentsRender}\n </div>\n );\n })}\n </div>\n );\n};\n","import * as React from 'react';\nimport {\n initializeComponentRef,\n EventGroup,\n IDisposable,\n css,\n shallowCompare,\n getNativeProps,\n divProperties,\n} from '../../Utilities';\nimport { IColumn, CheckboxVisibility } from './DetailsList.types';\nimport { DetailsRowCheck } from './DetailsRowCheck';\nimport { GroupSpacer } from '../GroupedList/GroupSpacer';\nimport { DetailsRowFields } from './DetailsRowFields';\nimport { FocusZone, FocusZoneDirection, IFocusZone } from '../../FocusZone';\nimport { SelectionMode, SELECTION_CHANGE } from '../../utilities/selection/interfaces';\nimport { CollapseAllVisibility } from '../../GroupedList';\nimport { IDragDropOptions } from './../../utilities/dragdrop/interfaces';\nimport { IDetailsRowBaseProps } from './DetailsRow.types';\nimport { IDetailsRowCheckProps } from './DetailsRowCheck.types';\nimport { IDetailsRowStyleProps, IDetailsRowStyles } from './DetailsRow.types';\nimport { classNamesFunction, getId } from '../../Utilities';\nimport { IDetailsRowFieldsProps } from './DetailsRowFields.types';\nimport { IProcessedStyleSet } from '../../Styling';\n\nconst getClassNames = classNamesFunction<IDetailsRowStyleProps, IDetailsRowStyles>();\n\nexport interface IDetailsRowSelectionState {\n isSelected: boolean;\n isSelectionModal: boolean;\n}\n\nexport interface IDetailsRowState {\n selectionState: IDetailsRowSelectionState;\n columnMeasureInfo?: {\n index: number;\n column: IColumn;\n onMeasureDone: (measuredWidth: number) => void;\n };\n isDropping?: boolean;\n}\n\nconst DEFAULT_DROPPING_CSS_CLASS = 'is-dropping';\n\nconst NO_COLUMNS: IColumn[] = [];\n\nexport class DetailsRowBase extends React.Component<IDetailsRowBaseProps, IDetailsRowState> {\n private _events: EventGroup;\n private _root = React.createRef<HTMLElement>();\n private _cellMeasurer = React.createRef<HTMLSpanElement>();\n private _focusZone = React.createRef<IFocusZone>();\n private _droppingClassNames: string;\n /** Whether this.props.onDidMount has been called */\n private _onDidMountCalled: boolean;\n private _dragDropSubscription: IDisposable;\n\n private _classNames: IProcessedStyleSet<IDetailsRowStyles>;\n private _rowClassNames: IDetailsRowFieldsProps['rowClassNames'];\n private _ariaRowDescriptionId: string;\n\n public static getDerivedStateFromProps(\n nextProps: IDetailsRowBaseProps,\n previousState: IDetailsRowState,\n ): IDetailsRowState {\n return {\n ...previousState,\n selectionState: getSelectionState(nextProps),\n };\n }\n\n constructor(props: IDetailsRowBaseProps) {\n super(props);\n\n initializeComponentRef(this);\n this._events = new EventGroup(this);\n\n this.state = {\n selectionState: getSelectionState(props),\n columnMeasureInfo: undefined,\n isDropping: false,\n };\n\n this._droppingClassNames = '';\n }\n public componentDidMount(): void {\n const { dragDropHelper, selection, item, onDidMount } = this.props;\n\n if (dragDropHelper && this._root.current) {\n this._dragDropSubscription = dragDropHelper.subscribe(\n this._root.current,\n this._events,\n this._getRowDragDropOptions(),\n );\n }\n\n if (selection) {\n this._events.on(selection, SELECTION_CHANGE, this._onSelectionChanged);\n }\n\n if (onDidMount && item) {\n // If the item appears later, we should wait for it before calling this method.\n this._onDidMountCalled = true;\n onDidMount(this);\n }\n }\n\n public componentDidUpdate(previousProps: IDetailsRowBaseProps) {\n const state = this.state;\n const { item, onDidMount } = this.props;\n const { columnMeasureInfo } = state;\n\n if (\n this.props.itemIndex !== previousProps.itemIndex ||\n this.props.item !== previousProps.item ||\n this.props.dragDropHelper !== previousProps.dragDropHelper\n ) {\n if (this._dragDropSubscription) {\n this._dragDropSubscription.dispose();\n delete this._dragDropSubscription;\n }\n\n if (this.props.dragDropHelper && this._root.current) {\n this._dragDropSubscription = this.props.dragDropHelper.subscribe(\n this._root.current,\n this._events,\n this._getRowDragDropOptions(),\n );\n }\n }\n\n if (columnMeasureInfo && columnMeasureInfo.index >= 0 && this._cellMeasurer.current) {\n const newWidth = this._cellMeasurer.current.getBoundingClientRect().width;\n\n columnMeasureInfo.onMeasureDone(newWidth);\n\n this.setState({\n columnMeasureInfo: undefined,\n });\n }\n\n if (item && onDidMount && !this._onDidMountCalled) {\n this._onDidMountCalled = true;\n onDidMount(this);\n }\n }\n\n public componentWillUnmount(): void {\n const { item, onWillUnmount } = this.props;\n\n // Only call the onWillUnmount callback if we have an item.\n if (onWillUnmount && item) {\n onWillUnmount(this);\n }\n\n if (this._dragDropSubscription) {\n this._dragDropSubscription.dispose();\n delete this._dragDropSubscription;\n }\n\n this._events.dispose();\n }\n\n public shouldComponentUpdate(nextProps: IDetailsRowBaseProps, nextState: IDetailsRowState): boolean {\n if (this.props.useReducedRowRenderer) {\n const newSelectionState = getSelectionState(nextProps);\n if (this.state.selectionState.isSelected !== newSelectionState.isSelected) {\n return true;\n }\n return !shallowCompare(this.props, nextProps);\n } else {\n return true;\n }\n }\n\n public render(): JSX.Element {\n const {\n className,\n columns = NO_COLUMNS,\n dragDropEvents,\n item,\n itemIndex,\n flatIndexOffset = 2,\n id,\n onRenderCheck = this._onRenderCheck,\n onRenderDetailsCheckbox,\n onRenderItemColumn,\n getCellValueKey,\n selectionMode,\n rowWidth = 0,\n checkboxVisibility,\n getRowAriaLabel,\n getRowAriaDescription,\n getRowAriaDescribedBy,\n checkButtonAriaLabel,\n checkboxCellClassName,\n /** Alias rowFieldsAs as RowFields and default to DetailsRowFields if rowFieldsAs does not exist */\n rowFieldsAs: RowFields = DetailsRowFields,\n selection,\n indentWidth,\n enableUpdateAnimations,\n compact,\n theme,\n styles,\n cellsByColumn,\n groupNestingDepth,\n useFastIcons = true,\n cellStyleProps,\n disabled = false,\n group,\n } = this.props;\n const { columnMeasureInfo, isDropping } = this.state;\n const { isSelected = false, isSelectionModal = false } = this.state.selectionState;\n const isDraggable = dragDropEvents ? !!(dragDropEvents.canDrag && dragDropEvents.canDrag(item)) : undefined;\n const droppingClassName = isDropping ? this._droppingClassNames || DEFAULT_DROPPING_CSS_CLASS : '';\n const ariaLabel = getRowAriaLabel ? getRowAriaLabel(item) : undefined;\n const ariaRowDescription = getRowAriaDescription ? getRowAriaDescription(item) : undefined;\n const ariaDescribedBy = getRowAriaDescribedBy ? getRowAriaDescribedBy(item) : undefined;\n const canSelect = !!selection && selection.canSelectItem(item, itemIndex) && !disabled;\n const isContentUnselectable = selectionMode === SelectionMode.multiple;\n const showCheckbox = selectionMode !== SelectionMode.none && checkboxVisibility !== CheckboxVisibility.hidden;\n const ariaSelected = selectionMode === SelectionMode.none ? undefined : isSelected;\n const ariaPositionInSet = group ? itemIndex - group.startIndex + 1 : undefined;\n const ariaSetSize = group ? group.count : undefined;\n\n this._classNames = {\n ...this._classNames,\n ...getClassNames(styles, {\n theme: theme!,\n isSelected,\n canSelect: !isContentUnselectable,\n anySelected: isSelectionModal,\n checkboxCellClassName,\n droppingClassName,\n className,\n compact,\n enableUpdateAnimations,\n cellStyleProps,\n disabled,\n }),\n };\n\n const rowClassNames: IDetailsRowFieldsProps['rowClassNames'] = {\n isMultiline: this._classNames.isMultiline,\n isRowHeader: this._classNames.isRowHeader,\n cell: this._classNames.cell,\n cellAnimation: this._classNames.cellAnimation,\n cellPadded: this._classNames.cellPadded,\n cellUnpadded: this._classNames.cellUnpadded,\n fields: this._classNames.fields,\n };\n\n // Only re-assign rowClassNames when classNames have changed.\n // Otherwise, they will cause DetailsRowFields to unnecessarily\n // re-render, see https://github.com/microsoft/fluentui/pull/8799.\n // Refactor DetailsRowFields to generate own styles to remove need for this.\n if (!shallowCompare(this._rowClassNames || {}, rowClassNames)) {\n this._rowClassNames = rowClassNames;\n }\n\n const rowFields = (\n <RowFields\n rowClassNames={this._rowClassNames}\n rowHeaderId={`${id}-header`}\n cellsByColumn={cellsByColumn}\n columns={columns}\n item={item}\n itemIndex={itemIndex}\n columnStartIndex={(showCheckbox ? 1 : 0) + (groupNestingDepth ? 1 : 0)}\n onRenderItemColumn={onRenderItemColumn}\n getCellValueKey={getCellValueKey}\n enableUpdateAnimations={enableUpdateAnimations}\n cellStyleProps={cellStyleProps}\n />\n );\n\n const defaultRole = 'row';\n const role = this.props.role ? this.props.role : defaultRole;\n this._ariaRowDescriptionId = getId('DetailsRow-description');\n\n return (\n <FocusZone\n data-is-focusable={true}\n {...getNativeProps(this.props, divProperties)}\n {...(typeof isDraggable === 'boolean'\n ? {\n 'data-is-draggable': isDraggable, // This data attribute is used by some host applications.\n draggable: isDraggable,\n }\n : {})}\n direction={FocusZoneDirection.horizontal}\n elementRef={this._root}\n componentRef={this._focusZone}\n role={role}\n aria-label={ariaLabel}\n aria-disabled={disabled || undefined}\n aria-describedby={ariaRowDescription ? this._ariaRowDescriptionId : ariaDescribedBy}\n className={this._classNames.root}\n data-selection-index={itemIndex}\n data-selection-touch-invoke={true}\n data-selection-disabled={disabled || undefined}\n data-item-index={itemIndex}\n aria-rowindex={ariaPositionInSet === undefined ? itemIndex + flatIndexOffset : undefined}\n aria-level={(groupNestingDepth && groupNestingDepth + 1) || undefined}\n aria-posinset={ariaPositionInSet}\n aria-setsize={ariaSetSize}\n data-automationid=\"DetailsRow\"\n style={{ minWidth: rowWidth }}\n aria-selected={ariaSelected}\n allowFocusRoot={true}\n >\n {ariaRowDescription ? (\n <span key=\"description\" role=\"presentation\" hidden={true} id={this._ariaRowDescriptionId}>\n {ariaRowDescription}\n </span>\n ) : null}\n {showCheckbox && (\n <div role=\"gridcell\" aria-colindex={1} data-selection-toggle={true} className={this._classNames.checkCell}>\n {onRenderCheck({\n id: id ? `${id}-checkbox` : undefined,\n selected: isSelected,\n anySelected: isSelectionModal,\n 'aria-label': checkButtonAriaLabel,\n 'aria-labelledby': id ? `${id}-checkbox ${id}-header` : undefined,\n canSelect,\n compact,\n className: this._classNames.check,\n theme,\n isVisible: checkboxVisibility === CheckboxVisibility.always,\n onRenderDetailsCheckbox: onRenderDetailsCheckbox,\n useFastIcons,\n })}\n </div>\n )}\n\n <GroupSpacer\n indentWidth={indentWidth}\n role=\"gridcell\"\n count={groupNestingDepth! - (this.props.collapseAllVisibility === CollapseAllVisibility.hidden ? 1 : 0)}\n />\n\n {item && rowFields}\n {columnMeasureInfo && (\n <span\n role=\"presentation\"\n className={css(this._classNames.cellMeasurer, this._classNames.cell)}\n ref={this._cellMeasurer}\n >\n <RowFields\n rowClassNames={this._rowClassNames}\n rowHeaderId={`${id}-header`}\n columns={[columnMeasureInfo.column]}\n item={item}\n itemIndex={itemIndex}\n columnStartIndex={(showCheckbox ? 1 : 0) + (groupNestingDepth ? 1 : 0) + columns.length}\n onRenderItemColumn={onRenderItemColumn}\n getCellValueKey={getCellValueKey}\n />\n </span>\n )}\n\n <span\n role=\"checkbox\"\n className={this._classNames.checkCover}\n aria-checked={isSelected}\n data-selection-toggle={true}\n />\n </FocusZone>\n );\n }\n\n /**\n * measure cell at index. and call the call back with the measured cell width when finish measure\n *\n * @param index - The cell index\n * @param onMeasureDone - The call back function when finish measure\n */\n public measureCell(index: number, onMeasureDone: (width: number) => void): void {\n const { columns = NO_COLUMNS } = this.props;\n const column: IColumn = { ...columns[index] };\n\n column.minWidth = 0;\n column.maxWidth = 999999;\n\n delete column.calculatedWidth;\n\n this.setState({\n columnMeasureInfo: {\n index,\n column,\n onMeasureDone,\n },\n });\n }\n\n public focus(forceIntoFirstElement: boolean = false): boolean {\n return !!this._focusZone.current?.focus(forceIntoFirstElement);\n }\n\n protected _onRenderCheck(props: IDetailsRowCheckProps) {\n return <DetailsRowCheck {...props} />;\n }\n\n private _onSelectionChanged = (): void => {\n const selectionState = getSelectionState(this.props);\n\n if (!shallowCompare(selectionState, this.state.selectionState)) {\n this.setState({\n selectionState: selectionState,\n });\n }\n };\n\n private _getRowDragDropOptions(): IDragDropOptions {\n const { item, itemIndex, dragDropEvents, eventsToRegister } = this.props;\n const options = {\n eventMap: eventsToRegister,\n selectionIndex: itemIndex,\n context: { data: item, index: itemIndex },\n canDrag: dragDropEvents!.canDrag,\n canDrop: dragDropEvents!.canDrop,\n onDragStart: dragDropEvents!.onDragStart,\n updateDropState: this._updateDroppingState,\n onDrop: dragDropEvents!.onDrop,\n onDragEnd: dragDropEvents!.onDragEnd,\n onDragOver: dragDropEvents!.onDragOver,\n };\n\n return options;\n }\n\n /**\n * update isDropping state based on the input value, which is used to change style during drag and drop\n *\n * when change to true, that means drag enter. we will add default dropping class name\n * or the custom dropping class name (return result from onDragEnter) to the root elemet.\n *\n * when change to false, that means drag leave. we will remove the dropping class name from root element.\n *\n * @param newValue - New isDropping state value\n * @param event - The event trigger dropping state change which can be dragenter, dragleave etc\n */\n private _updateDroppingState = (newValue: boolean, event: DragEvent): void => {\n const { isDropping } = this.state;\n const { dragDropEvents, item } = this.props;\n\n if (!newValue) {\n if (dragDropEvents!.onDragLeave) {\n dragDropEvents!.onDragLeave(item, event);\n }\n } else if (dragDropEvents!.onDragEnter) {\n this._droppingClassNames = dragDropEvents!.onDragEnter(item, event);\n }\n\n if (isDropping !== newValue) {\n this.setState({ isDropping: newValue });\n }\n };\n}\n\nfunction getSelectionState(props: IDetailsRowBaseProps): IDetailsRowSelectionState {\n const { itemIndex, selection } = props;\n\n return {\n isSelected: !!selection?.isIndexSelected(itemIndex),\n isSelectionModal: !!selection?.isModal?.(),\n };\n}\n","import * as React from 'react';\nimport { styled } from '../../Utilities';\nimport { IDetailsRowProps, IDetailsRowBaseProps, IDetailsRowStyleProps, IDetailsRowStyles } from './DetailsRow.types';\nimport { DetailsRowBase } from './DetailsRow.base';\nimport { getDetailsRowStyles } from './DetailsRow.styles';\n\nexport { IDetailsRowProps, IDetailsRowBaseProps };\n\nexport const DetailsRow: React.FunctionComponent<IDetailsRowBaseProps> = styled<\n IDetailsRowBaseProps,\n IDetailsRowStyleProps,\n IDetailsRowStyles\n>(DetailsRowBase, getDetailsRowStyles, undefined, {\n scope: 'DetailsRow',\n});\n","import { IButtonStyles } from '../Button.types';\nimport { ITheme, concatStyleSets, FontWeights } from '../../../Styling';\nimport { memoizeFunction } from '../../../Utilities';\nimport { getStyles as getBaseButtonStyles } from '../BaseButton.styles';\nimport { getStyles as getSplitButtonStyles } from '../SplitButton/SplitButton.styles';\n\nimport { primaryStyles, standardStyles } from '../ButtonThemes';\n\nconst DEFAULT_BUTTON_HEIGHT = '32px';\nconst DEFAULT_BUTTON_MIN_WIDTH = '80px';\n\nexport const getStyles = memoizeFunction(\n (theme: ITheme, customStyles?: IButtonStyles, primary?: boolean): IButtonStyles => {\n const baseButtonStyles: IButtonStyles = getBaseButtonStyles(theme);\n const splitButtonStyles: IButtonStyles = getSplitButtonStyles(theme);\n const defaultButtonStyles: IButtonStyles = {\n root: {\n minWidth: DEFAULT_BUTTON_MIN_WIDTH,\n height: DEFAULT_BUTTON_HEIGHT,\n },\n label: {\n fontWeight: FontWeights.semibold,\n },\n };\n\n return concatStyleSets(\n baseButtonStyles,\n defaultButtonStyles,\n primary ? primaryStyles(theme) : standardStyles(theme),\n splitButtonStyles,\n customStyles,\n )!;\n },\n);\n","import { IButtonStyles } from './Button.types';\nimport { ITheme, HighContrastSelector, IRawStyle, getHighContrastNoAdjustStyle } from '../../Styling';\nimport { IsFocusVisibleClassName } from '../../Utilities';\n\nconst splitButtonDividerBaseStyles = (): IRawStyle => {\n return {\n position: 'absolute',\n width: 1,\n right: 31,\n top: 8,\n bottom: 8,\n };\n};\n\nexport function standardStyles(theme: ITheme): IButtonStyles {\n const { semanticColors: s, palette: p } = theme;\n\n const buttonBackground = s.buttonBackground;\n const buttonBackgroundPressed = s.buttonBackgroundPressed;\n const buttonBackgroundHovered = s.buttonBackgroundHovered;\n const buttonBackgroundDisabled = s.buttonBackgroundDisabled;\n\n const buttonText = s.buttonText;\n const buttonTextHovered = s.buttonTextHovered;\n const buttonTextDisabled = s.buttonTextDisabled;\n const buttonTextChecked = s.buttonTextChecked;\n const buttonTextCheckedHovered = s.buttonTextCheckedHovered;\n\n return {\n root: {\n backgroundColor: buttonBackground,\n color: buttonText,\n },\n\n rootHovered: {\n backgroundColor: buttonBackgroundHovered,\n color: buttonTextHovered,\n selectors: {\n [HighContrastSelector]: {\n borderColor: 'Highlight',\n color: 'Highlight',\n },\n },\n },\n\n rootPressed: {\n backgroundColor: buttonBackgroundPressed,\n color: buttonTextChecked,\n },\n\n rootExpanded: {\n backgroundColor: buttonBackgroundPressed,\n color: buttonTextChecked,\n },\n\n rootChecked: {\n backgroundColor: buttonBackgroundPressed,\n color: buttonTextChecked,\n },\n\n rootCheckedHovered: {\n backgroundColor: buttonBackgroundPressed,\n color: buttonTextCheckedHovered,\n },\n\n rootDisabled: {\n color: buttonTextDisabled,\n backgroundColor: buttonBackgroundDisabled,\n selectors: {\n [HighContrastSelector]: {\n color: 'GrayText',\n borderColor: 'GrayText',\n backgroundColor: 'Window',\n },\n },\n },\n\n // Split button styles\n splitButtonContainer: {\n selectors: {\n [HighContrastSelector]: {\n border: 'none',\n },\n },\n },\n\n splitButtonMenuButton: {\n color: p.white,\n backgroundColor: 'transparent',\n selectors: {\n ':hover': {\n backgroundColor: p.neutralLight,\n selectors: {\n [HighContrastSelector]: {\n color: 'Highlight',\n },\n },\n },\n },\n },\n\n splitButtonMenuButtonDisabled: {\n backgroundColor: s.buttonBackgroundDisabled,\n selectors: {\n ':hover': {\n backgroundColor: s.buttonBackgroundDisabled,\n },\n },\n },\n\n splitButtonDivider: {\n ...splitButtonDividerBaseStyles(),\n backgroundColor: p.neutralTertiaryAlt,\n selectors: {\n [HighContrastSelector]: {\n backgroundColor: 'WindowText',\n },\n },\n },\n\n splitButtonDividerDisabled: {\n backgroundColor: theme.palette.neutralTertiaryAlt,\n },\n\n splitButtonMenuButtonChecked: {\n backgroundColor: p.neutralQuaternaryAlt,\n selectors: {\n ':hover': {\n backgroundColor: p.neutralQuaternaryAlt,\n },\n },\n },\n\n splitButtonMenuButtonExpanded: {\n backgroundColor: p.neutralQuaternaryAlt,\n selectors: {\n ':hover': {\n backgroundColor: p.neutralQuaternaryAlt,\n },\n },\n },\n\n splitButtonMenuIcon: {\n color: s.buttonText,\n },\n\n splitButtonMenuIconDisabled: {\n color: s.buttonTextDisabled,\n },\n };\n}\n\nexport function primaryStyles(theme: ITheme): IButtonStyles {\n const { palette: p, semanticColors: s } = theme;\n\n return {\n root: {\n backgroundColor: s.primaryButtonBackground,\n border: `1px solid ${s.primaryButtonBackground}`,\n color: s.primaryButtonText,\n selectors: {\n [HighContrastSelector]: {\n color: 'Window',\n backgroundColor: 'WindowText',\n borderColor: 'WindowText',\n ...getHighContrastNoAdjustStyle(),\n },\n [`.${IsFocusVisibleClassName} &:focus`]: {\n selectors: {\n ':after': {\n border: `none`,\n outlineColor: p.white,\n },\n },\n },\n },\n },\n\n rootHovered: {\n backgroundColor: s.primaryButtonBackgroundHovered,\n border: `1px solid ${s.primaryButtonBackgroundHovered}`,\n color: s.primaryButtonTextHovered,\n selectors: {\n [HighContrastSelector]: {\n color: 'Window',\n backgroundColor: 'Highlight',\n borderColor: 'Highlight',\n },\n },\n },\n\n rootPressed: {\n backgroundColor: s.primaryButtonBackgroundPressed,\n border: `1px solid ${s.primaryButtonBackgroundPressed}`,\n color: s.primaryButtonTextPressed,\n selectors: {\n [HighContrastSelector]: {\n color: 'Window',\n backgroundColor: 'WindowText',\n borderColor: 'WindowText',\n ...getHighContrastNoAdjustStyle(),\n },\n },\n },\n\n rootExpanded: {\n backgroundColor: s.primaryButtonBackgroundPressed,\n color: s.primaryButtonTextPressed,\n },\n\n rootChecked: {\n backgroundColor: s.primaryButtonBackgroundPressed,\n color: s.primaryButtonTextPressed,\n },\n\n rootCheckedHovered: {\n backgroundColor: s.primaryButtonBackgroundPressed,\n color: s.primaryButtonTextPressed,\n },\n\n rootDisabled: {\n color: s.primaryButtonTextDisabled,\n backgroundColor: s.primaryButtonBackgroundDisabled,\n selectors: {\n [HighContrastSelector]: {\n color: 'GrayText',\n borderColor: 'GrayText',\n backgroundColor: 'Window',\n },\n },\n },\n\n // Split button styles\n splitButtonContainer: {\n selectors: {\n [HighContrastSelector]: {\n border: 'none',\n },\n },\n },\n\n splitButtonDivider: {\n ...splitButtonDividerBaseStyles(),\n backgroundColor: p.white,\n selectors: {\n [HighContrastSelector]: {\n backgroundColor: 'Window',\n },\n },\n },\n\n splitButtonMenuButton: {\n backgroundColor: s.primaryButtonBackground,\n color: s.primaryButtonText,\n selectors: {\n [HighContrastSelector]: {\n backgroundColor: 'WindowText',\n },\n ':hover': {\n backgroundColor: s.primaryButtonBackgroundHovered,\n selectors: {\n [HighContrastSelector]: {\n color: 'Highlight',\n },\n },\n },\n },\n },\n\n splitButtonMenuButtonDisabled: {\n backgroundColor: s.primaryButtonBackgroundDisabled,\n selectors: {\n ':hover': {\n backgroundColor: s.primaryButtonBackgroundDisabled,\n },\n },\n },\n\n splitButtonMenuButtonChecked: {\n backgroundColor: s.primaryButtonBackgroundPressed,\n selectors: {\n ':hover': {\n backgroundColor: s.primaryButtonBackgroundPressed,\n },\n },\n },\n\n splitButtonMenuButtonExpanded: {\n backgroundColor: s.primaryButtonBackgroundPressed,\n selectors: {\n ':hover': {\n backgroundColor: s.primaryButtonBackgroundPressed,\n },\n },\n },\n\n splitButtonMenuIcon: {\n color: s.primaryButtonText,\n },\n\n splitButtonMenuIconDisabled: {\n color: p.neutralTertiary,\n\n selectors: {\n [HighContrastSelector]: {\n color: 'GrayText',\n },\n },\n },\n };\n}\n","import * as React from 'react';\nimport { BaseButton } from '../BaseButton';\nimport { customizable, nullRender } from '../../../Utilities';\nimport { IButtonProps } from '../Button.types';\nimport { getStyles } from './DefaultButton.styles';\n\n/**\n * {@docCategory Button}\n */\n@customizable('DefaultButton', ['theme', 'styles'], true)\nexport class DefaultButton extends React.Component<IButtonProps, {}> {\n public render(): JSX.Element {\n const { primary = false, styles, theme } = this.props;\n\n return (\n <BaseButton\n {...this.props}\n variantClassName={primary ? 'ms-Button--primary' : 'ms-Button--default'}\n styles={getStyles(theme!, styles, primary)}\n onRenderDescription={nullRender}\n />\n );\n }\n}\n","import { IButtonStyles } from '../Button.types';\nimport { ITheme, concatStyleSets, HighContrastSelector } from '../../../Styling';\nimport { memoizeFunction } from '../../../Utilities';\nimport { getStyles as getBaseButtonStyles } from '../BaseButton.styles';\n\nconst DEFAULT_BUTTON_HEIGHT = '40px';\nconst DEFAULT_PADDING = '0 4px';\n\nexport const getStyles = memoizeFunction(\n (theme: ITheme, customStyles?: IButtonStyles): IButtonStyles => {\n const baseButtonStyles: IButtonStyles = getBaseButtonStyles(theme);\n const actionButtonStyles: IButtonStyles = {\n root: {\n padding: DEFAULT_PADDING,\n height: DEFAULT_BUTTON_HEIGHT,\n color: theme.palette.neutralPrimary,\n backgroundColor: 'transparent',\n border: '1px solid transparent',\n },\n\n rootHovered: {\n color: theme.palette.themePrimary,\n selectors: {\n [HighContrastSelector]: {\n borderColor: 'Highlight',\n color: 'Highlight',\n },\n },\n },\n\n iconHovered: {\n color: theme.palette.themePrimary,\n },\n\n rootPressed: {\n color: theme.palette.black,\n },\n\n rootExpanded: {\n color: theme.palette.themePrimary,\n },\n\n iconPressed: {\n color: theme.palette.themeDarker,\n },\n\n rootDisabled: {\n color: theme.palette.neutralTertiary,\n backgroundColor: 'transparent',\n borderColor: 'transparent',\n },\n\n rootChecked: {\n color: theme.palette.black,\n },\n\n iconChecked: {\n color: theme.palette.themeDarker,\n },\n\n flexContainer: {\n justifyContent: 'flex-start',\n },\n\n icon: {\n color: theme.palette.themeDarkAlt,\n },\n\n iconDisabled: {\n color: 'inherit',\n },\n\n menuIcon: {\n color: theme.palette.neutralSecondary,\n },\n\n textContainer: {\n flexGrow: 0,\n },\n };\n\n return concatStyleSets(baseButtonStyles, actionButtonStyles, customStyles)!;\n },\n);\n","import * as React from 'react';\nimport { BaseButton } from '../BaseButton';\nimport { customizable, nullRender } from '../../../Utilities';\nimport { IButtonProps } from '../Button.types';\nimport { getStyles } from './ActionButton.styles';\n\n/**\n * {@docCategory Button}\n */\n@customizable('ActionButton', ['theme', 'styles'], true)\nexport class ActionButton extends React.Component<IButtonProps, {}> {\n public render(): JSX.Element {\n const { styles, theme } = this.props;\n\n return (\n <BaseButton\n {...this.props}\n variantClassName=\"ms-Button--action ms-Button--command\"\n styles={getStyles(theme!, styles)}\n onRenderDescription={nullRender}\n />\n );\n }\n}\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"active\", \"className\", \"eventKey\", \"onSelect\", \"onClick\", \"as\"];\nimport classNames from 'classnames';\nimport React, { useContext } from 'react';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport warning from 'warning';\nimport NavContext from './NavContext';\nimport SelectableContext, { makeEventKey } from './SelectableContext';\nvar defaultProps = {\n disabled: false\n};\nvar AbstractNavItem = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var active = _ref.active,\n className = _ref.className,\n eventKey = _ref.eventKey,\n onSelect = _ref.onSelect,\n onClick = _ref.onClick,\n Component = _ref.as,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var navKey = makeEventKey(eventKey, props.href);\n var parentOnSelect = useContext(SelectableContext);\n var navContext = useContext(NavContext);\n var isActive = active;\n\n if (navContext) {\n if (!props.role && navContext.role === 'tablist') props.role = 'tab';\n var contextControllerId = navContext.getControllerId(navKey);\n var contextControlledId = navContext.getControlledId(navKey);\n process.env.NODE_ENV !== \"production\" ? warning(!contextControllerId || !props.id, \"[react-bootstrap] The provided id '\" + props.id + \"' was overwritten by the current navContext with '\" + contextControllerId + \"'.\") : void 0;\n process.env.NODE_ENV !== \"production\" ? warning(!contextControlledId || !props['aria-controls'], \"[react-bootstrap] The provided aria-controls value '\" + props['aria-controls'] + \"' was overwritten by the current navContext with '\" + contextControlledId + \"'.\") : void 0;\n props['data-rb-event-key'] = navKey;\n props.id = contextControllerId || props.id;\n props['aria-controls'] = contextControlledId || props['aria-controls'];\n isActive = active == null && navKey != null ? navContext.activeKey === navKey : active;\n }\n\n if (props.role === 'tab') {\n if (props.disabled) {\n props.tabIndex = -1;\n props['aria-disabled'] = true;\n }\n\n props['aria-selected'] = isActive;\n }\n\n var handleOnclick = useEventCallback(function (e) {\n if (onClick) onClick(e);\n if (navKey == null) return;\n if (onSelect) onSelect(navKey, e);\n if (parentOnSelect) parentOnSelect(navKey, e);\n });\n return /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n ref: ref,\n onClick: handleOnclick,\n className: classNames(className, isActive && 'active')\n }));\n});\nAbstractNavItem.defaultProps = defaultProps;\nexport default AbstractNavItem;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"disabled\", \"className\", \"href\", \"eventKey\", \"onSelect\", \"as\"];\nimport classNames from 'classnames';\nimport React from 'react';\nimport SafeAnchor from './SafeAnchor';\nimport AbstractNavItem from './AbstractNavItem';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar defaultProps = {\n disabled: false,\n as: SafeAnchor\n};\nvar NavLink = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n disabled = _ref.disabled,\n className = _ref.className,\n href = _ref.href,\n eventKey = _ref.eventKey,\n onSelect = _ref.onSelect,\n as = _ref.as,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n bsPrefix = useBootstrapPrefix(bsPrefix, 'nav-link');\n return /*#__PURE__*/React.createElement(AbstractNavItem, _extends({}, props, {\n href: href,\n ref: ref,\n eventKey: eventKey,\n as: as,\n disabled: disabled,\n onSelect: onSelect,\n className: classNames(className, bsPrefix, disabled && 'disabled')\n }));\n});\nNavLink.displayName = 'NavLink';\nNavLink.defaultProps = defaultProps;\nexport default NavLink;","import { extractStyleParts } from './extractStyleParts';\nimport { IStyle, IStyleBaseArray } from './IStyle';\nimport { IStyleOptions } from './IStyleOptions';\nimport { getStyleOptions } from './StyleOptionsState';\nimport { styleToClassName } from './styleToClassName';\n\n/**\n * Concatenation helper, which can merge class names together. Skips over falsey values.\n *\n * @public\n */\nexport function mergeStyles(...args: (IStyle | IStyleBaseArray | false | null | undefined)[]): string {\n return mergeCss(args, getStyleOptions());\n}\n\n/**\n * Concatenation helper, which can merge class names together. Skips over falsey values.\n * Accepts a set of options that will be used when calculating styles.\n *\n * @public\n */\nexport function mergeCss(\n args: (IStyle | IStyleBaseArray | false | null | undefined) | (IStyle | IStyleBaseArray | false | null | undefined)[],\n options?: IStyleOptions,\n): string {\n const styleArgs = args instanceof Array ? args : [args];\n const { classes, objects } = extractStyleParts(styleArgs);\n\n if (objects.length) {\n classes.push(styleToClassName(options || {}, objects));\n }\n\n return classes.join(' ');\n}\n","/**\n * Dictionary of booleans.\n *\n * @internal\n */\nexport interface IDictionary {\n [className: string]: boolean;\n}\n\n/**\n * Serializable object.\n *\n * @internal\n */\nexport interface ISerializableObject {\n toString?: () => string;\n}\n\n/**\n * css input type.\n *\n * @internal\n */\nexport type ICssInput = string | ISerializableObject | IDictionary | null | undefined | boolean;\n\n/**\n * Concatination helper, which can merge class names together. Skips over falsey values.\n *\n * @public\n */\nexport function css(...args: ICssInput[]): string {\n let classes = [];\n\n for (let arg of args) {\n if (arg) {\n if (typeof arg === 'string') {\n classes.push(arg);\n } else if (arg.hasOwnProperty('toString') && typeof arg.toString === 'function') {\n classes.push(arg.toString());\n } else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n for (let key in arg as any) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if ((arg as any)[key]) {\n classes.push(key);\n }\n }\n }\n }\n }\n\n return classes.join(' ');\n}\n","import { getWindow } from './dom/getWindow';\n\nexport const isIE11 = (): boolean => {\n const win = getWindow();\n\n if (!win?.navigator?.userAgent) {\n return false;\n }\n\n return win.navigator.userAgent.indexOf('rv:11.0') > -1;\n};\n","import { elementContainsAttribute } from './dom/elementContainsAttribute';\nimport { elementContains } from './dom/elementContains';\nimport { getParent } from './dom/getParent';\nimport { getWindow } from './dom/getWindow';\nimport { getDocument } from './dom/getDocument';\n\nconst IS_FOCUSABLE_ATTRIBUTE = 'data-is-focusable';\nconst IS_VISIBLE_ATTRIBUTE = 'data-is-visible';\nconst FOCUSZONE_ID_ATTRIBUTE = 'data-focuszone-id';\nconst FOCUSZONE_SUB_ATTRIBUTE = 'data-is-sub-focuszone';\n\n/**\n * Gets the first focusable element.\n *\n * @public\n */\nexport function getFirstFocusable(\n rootElement: HTMLElement,\n currentElement: HTMLElement,\n includeElementsInFocusZones?: boolean,\n): HTMLElement | null {\n return getNextElement(\n rootElement,\n currentElement,\n true /*checkNode*/,\n false /*suppressParentTraversal*/,\n false /*suppressChildTraversal*/,\n includeElementsInFocusZones,\n );\n}\n\n/**\n * Gets the last focusable element.\n *\n * @public\n */\nexport function getLastFocusable(\n rootElement: HTMLElement,\n currentElement: HTMLElement,\n includeElementsInFocusZones?: boolean,\n): HTMLElement | null {\n return getPreviousElement(\n rootElement,\n currentElement,\n true /*checkNode*/,\n false /*suppressParentTraversal*/,\n true /*traverseChildren*/,\n includeElementsInFocusZones,\n );\n}\n\n/**\n * Gets the first tabbable element. (The difference between focusable and tabbable is that tabbable elements are\n * focusable elements that also have tabIndex != -1.)\n * @param rootElement - The parent element to search beneath.\n * @param currentElement - The descendant of rootElement to start the search at. This element is the first one checked,\n * and iteration continues forward. Typical use passes rootElement.firstChild.\n * @param includeElementsInFocusZones - true if traversal should go into FocusZone descendants.\n * @param checkNode - Include currentElement in search when true. Defaults to true.\n * @public\n */\nexport function getFirstTabbable(\n rootElement: HTMLElement,\n currentElement: HTMLElement,\n includeElementsInFocusZones?: boolean,\n checkNode: boolean = true,\n): HTMLElement | null {\n return getNextElement(\n rootElement,\n currentElement,\n checkNode,\n false /*suppressParentTraversal*/,\n false /*suppressChildTraversal*/,\n includeElementsInFocusZones,\n false /*allowFocusRoot*/,\n true /*tabbable*/,\n );\n}\n\n/**\n * Gets the last tabbable element. (The difference between focusable and tabbable is that tabbable elements are\n * focusable elements that also have tabIndex != -1.)\n * @param rootElement - The parent element to search beneath.\n * @param currentElement - The descendant of rootElement to start the search at. This element is the first one checked,\n * and iteration continues in reverse. Typical use passes rootElement.lastChild.\n * @param includeElementsInFocusZones - true if traversal should go into FocusZone descendants.\n * @param checkNode - Include currentElement in search when true. Defaults to true.\n * @public\n */\nexport function getLastTabbable(\n rootElement: HTMLElement,\n currentElement: HTMLElement,\n includeElementsInFocusZones?: boolean,\n checkNode: boolean = true,\n): HTMLElement | null {\n return getPreviousElement(\n rootElement,\n currentElement,\n checkNode,\n false /*suppressParentTraversal*/,\n true /*traverseChildren*/,\n includeElementsInFocusZones,\n false /*allowFocusRoot*/,\n true /*tabbable*/,\n );\n}\n\n/**\n * Attempts to focus the first focusable element that is a child or child's child of the rootElement.\n *\n * @public\n * @param rootElement - Element to start the search for a focusable child.\n * @returns True if focus was set, false if it was not.\n */\nexport function focusFirstChild(rootElement: HTMLElement): boolean {\n let element: HTMLElement | null = getNextElement(rootElement, rootElement, true, false, false, true);\n\n if (element) {\n focusAsync(element);\n return true;\n }\n return false;\n}\n\n/**\n * Traverse to find the previous element.\n * If tabbable is true, the element must have tabIndex != -1.\n *\n * @public\n */\nexport function getPreviousElement(\n rootElement: HTMLElement,\n currentElement: HTMLElement | null,\n checkNode?: boolean,\n suppressParentTraversal?: boolean,\n traverseChildren?: boolean,\n includeElementsInFocusZones?: boolean,\n allowFocusRoot?: boolean,\n tabbable?: boolean,\n): HTMLElement | null {\n if (!currentElement || (!allowFocusRoot && currentElement === rootElement)) {\n return null;\n }\n\n let isCurrentElementVisible = isElementVisible(currentElement);\n\n // Check its children.\n if (\n traverseChildren &&\n isCurrentElementVisible &&\n (includeElementsInFocusZones || !(isElementFocusZone(currentElement) || isElementFocusSubZone(currentElement)))\n ) {\n const childMatch = getPreviousElement(\n rootElement,\n currentElement.lastElementChild as HTMLElement,\n true,\n true,\n true,\n includeElementsInFocusZones,\n allowFocusRoot,\n tabbable,\n );\n\n if (childMatch) {\n if ((tabbable && isElementTabbable(childMatch, true)) || !tabbable) {\n return childMatch;\n }\n\n const childMatchSiblingMatch = getPreviousElement(\n rootElement,\n childMatch.previousElementSibling as HTMLElement,\n true,\n true,\n true,\n includeElementsInFocusZones,\n allowFocusRoot,\n tabbable,\n );\n if (childMatchSiblingMatch) {\n return childMatchSiblingMatch;\n }\n\n let childMatchParent = childMatch.parentElement;\n\n // At this point if we have not found any potential matches\n // start looking at the rest of the subtree under the currentParent.\n // NOTE: We do not want to recurse here because doing so could\n // cause elements to get skipped.\n while (childMatchParent && childMatchParent !== currentElement) {\n const childMatchParentMatch = getPreviousElement(\n rootElement,\n childMatchParent.previousElementSibling as HTMLElement,\n true,\n true,\n true,\n includeElementsInFocusZones,\n allowFocusRoot,\n tabbable,\n );\n\n if (childMatchParentMatch) {\n return childMatchParentMatch;\n }\n\n childMatchParent = childMatchParent.parentElement;\n }\n }\n }\n\n // Check the current node, if it's not the first traversal.\n if (checkNode && isCurrentElementVisible && isElementTabbable(currentElement, tabbable)) {\n return currentElement;\n }\n\n // Check its previous sibling.\n const siblingMatch = getPreviousElement(\n rootElement,\n currentElement.previousElementSibling as HTMLElement,\n true,\n true,\n true,\n includeElementsInFocusZones,\n allowFocusRoot,\n tabbable,\n );\n\n if (siblingMatch) {\n return siblingMatch;\n }\n\n // Check its parent.\n if (!suppressParentTraversal) {\n return getPreviousElement(\n rootElement,\n currentElement.parentElement,\n true,\n false,\n false,\n includeElementsInFocusZones,\n allowFocusRoot,\n tabbable,\n );\n }\n\n return null;\n}\n\n/**\n * Traverse to find the next focusable element.\n * If tabbable is true, the element must have tabIndex != -1.\n *\n * @public\n * @param checkNode - Include currentElement in search when true.\n */\nexport function getNextElement(\n rootElement: HTMLElement,\n currentElement: HTMLElement | null,\n checkNode?: boolean,\n suppressParentTraversal?: boolean,\n suppressChildTraversal?: boolean,\n includeElementsInFocusZones?: boolean,\n allowFocusRoot?: boolean,\n tabbable?: boolean,\n): HTMLElement | null {\n if (!currentElement || (currentElement === rootElement && suppressChildTraversal && !allowFocusRoot)) {\n return null;\n }\n\n let isCurrentElementVisible = isElementVisible(currentElement);\n\n // Check the current node, if it's not the first traversal.\n if (checkNode && isCurrentElementVisible && isElementTabbable(currentElement, tabbable)) {\n return currentElement;\n }\n\n // Check its children.\n if (\n !suppressChildTraversal &&\n isCurrentElementVisible &&\n (includeElementsInFocusZones || !(isElementFocusZone(currentElement) || isElementFocusSubZone(currentElement)))\n ) {\n const childMatch = getNextElement(\n rootElement,\n currentElement.firstElementChild as HTMLElement,\n true,\n true,\n false,\n includeElementsInFocusZones,\n allowFocusRoot,\n tabbable,\n );\n\n if (childMatch) {\n return childMatch;\n }\n }\n\n if (currentElement === rootElement) {\n return null;\n }\n\n // Check its sibling.\n const siblingMatch = getNextElement(\n rootElement,\n currentElement.nextElementSibling as HTMLElement,\n true,\n true,\n false,\n includeElementsInFocusZones,\n allowFocusRoot,\n tabbable,\n );\n\n if (siblingMatch) {\n return siblingMatch;\n }\n\n if (!suppressParentTraversal) {\n return getNextElement(\n rootElement,\n currentElement.parentElement,\n false,\n false,\n true,\n includeElementsInFocusZones,\n allowFocusRoot,\n tabbable,\n );\n }\n\n return null;\n}\n\n/**\n * Determines if an element is visible.\n *\n * @public\n */\nexport function isElementVisible(element: HTMLElement | undefined | null): boolean {\n // If the element is not valid, return false.\n if (!element || !element.getAttribute) {\n return false;\n }\n\n const visibilityAttribute = element.getAttribute(IS_VISIBLE_ATTRIBUTE);\n\n // If the element is explicitly marked with the visibility attribute, return that value as boolean.\n if (visibilityAttribute !== null && visibilityAttribute !== undefined) {\n return visibilityAttribute === 'true';\n }\n\n // Fallback to other methods of determining actual visibility.\n return (\n element.offsetHeight !== 0 ||\n element.offsetParent !== null ||\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (element as any).isVisible === true\n ); // used as a workaround for testing.\n}\n\n/**\n * Determines if an element can receive focus programmatically or via a mouse click.\n * If checkTabIndex is true, additionally checks to ensure the element can be focused with the tab key,\n * meaning tabIndex != -1.\n *\n * @public\n */\nexport function isElementTabbable(element: HTMLElement, checkTabIndex?: boolean): boolean {\n // If this element is null or is disabled, it is not considered tabbable.\n if (!element || (element as HTMLButtonElement).disabled) {\n return false;\n }\n\n let tabIndex = 0;\n let tabIndexAttributeValue = null;\n\n if (element && element.getAttribute) {\n tabIndexAttributeValue = element.getAttribute('tabIndex');\n\n if (tabIndexAttributeValue) {\n tabIndex = parseInt(tabIndexAttributeValue, 10);\n }\n }\n\n let isFocusableAttribute = element.getAttribute ? element.getAttribute(IS_FOCUSABLE_ATTRIBUTE) : null;\n let isTabIndexSet = tabIndexAttributeValue !== null && tabIndex >= 0;\n\n const result =\n !!element &&\n isFocusableAttribute !== 'false' &&\n (element.tagName === 'A' ||\n element.tagName === 'BUTTON' ||\n element.tagName === 'INPUT' ||\n element.tagName === 'TEXTAREA' ||\n element.tagName === 'SELECT' ||\n isFocusableAttribute === 'true' ||\n isTabIndexSet);\n\n return checkTabIndex ? tabIndex !== -1 && result : result;\n}\n\n/**\n * Determines if a given element is a focus zone.\n *\n * @public\n */\nexport function isElementFocusZone(element?: HTMLElement): boolean {\n return !!(element && element.getAttribute && !!element.getAttribute(FOCUSZONE_ID_ATTRIBUTE));\n}\n\n/**\n * Determines if a given element is a focus sub zone.\n *\n * @public\n */\nexport function isElementFocusSubZone(element?: HTMLElement): boolean {\n return !!(element && element.getAttribute && element.getAttribute(FOCUSZONE_SUB_ATTRIBUTE) === 'true');\n}\n\n/**\n * Determines if an element, or any of its children, contain focus.\n *\n * @public\n */\nexport function doesElementContainFocus(element: HTMLElement): boolean {\n let document = getDocument(element);\n let currentActiveElement: HTMLElement | undefined = document && (document.activeElement as HTMLElement);\n if (currentActiveElement && elementContains(element, currentActiveElement)) {\n return true;\n }\n return false;\n}\n\n/**\n * Determines if an, or any of its ancestors, sepcificies that it doesn't want focus to wrap\n * @param element - element to start searching from\n * @param noWrapDataAttribute - the no wrap data attribute to match (either)\n * @returns true if focus should wrap, false otherwise\n */\nexport function shouldWrapFocus(\n element: HTMLElement,\n noWrapDataAttribute: 'data-no-vertical-wrap' | 'data-no-horizontal-wrap',\n): boolean {\n return elementContainsAttribute(element, noWrapDataAttribute) === 'true' ? false : true;\n}\n\nlet targetToFocusOnNextRepaint: HTMLElement | { focus: () => void } | null | undefined = undefined;\n\n/**\n * Sets focus to an element asynchronously. The focus will be set at the next browser repaint,\n * meaning it won't cause any extra recalculations. If more than one focusAsync is called during one frame,\n * only the latest called focusAsync element will actually be focused\n * @param element - The element to focus\n */\nexport function focusAsync(element: HTMLElement | { focus: () => void } | undefined | null): void {\n if (element) {\n // An element was already queued to be focused, so replace that one with the new element\n if (targetToFocusOnNextRepaint) {\n targetToFocusOnNextRepaint = element;\n return;\n }\n\n targetToFocusOnNextRepaint = element;\n\n const win = getWindow(element as Element);\n\n if (win) {\n // element.focus() is a no-op if the element is no longer in the DOM, meaning this is always safe\n win.requestAnimationFrame(() => {\n const focusableElement = targetToFocusOnNextRepaint as HTMLElement | null;\n\n // We are done focusing for this frame, so reset the queued focus element\n targetToFocusOnNextRepaint = undefined;\n\n if (focusableElement) {\n if (focusableElement.getAttribute && focusableElement.getAttribute(IS_FOCUSABLE_ATTRIBUTE) === 'true') {\n // Normally, a FocusZone would be responsible for setting the tabindex values on all its descendants.\n // However, even this animation frame callback can pre-empt the rendering of a FocusZone's child elements,\n // so it may be necessary to set the tabindex directly here.\n if (!focusableElement.getAttribute('tabindex')) {\n focusableElement.setAttribute('tabindex', '0');\n }\n }\n\n focusableElement.focus();\n }\n });\n }\n }\n}\n\n/**\n * Finds the closest focusable element via an index path from a parent. See\n * `getElementIndexPath` for getting an index path from an element to a child.\n */\nexport function getFocusableByIndexPath(parent: HTMLElement, path: number[]): HTMLElement | undefined {\n let element = parent;\n\n for (const index of path) {\n const nextChild = element.children[Math.min(index, element.children.length - 1)] as HTMLElement;\n\n if (!nextChild) {\n break;\n }\n element = nextChild;\n }\n\n element =\n isElementTabbable(element) && isElementVisible(element)\n ? element\n : getNextElement(parent, element, true) || getPreviousElement(parent, element)!;\n\n return element as HTMLElement;\n}\n\n/**\n * Finds the element index path from a parent element to a child element.\n *\n * If you had this node structure: \"A has children [B, C] and C has child D\",\n * the index path from A to D would be [1, 0], or `parent.chidren[1].children[0]`.\n */\nexport function getElementIndexPath(fromElement: HTMLElement, toElement: HTMLElement): number[] {\n const path: number[] = [];\n\n while (toElement && fromElement && toElement !== fromElement) {\n const parent = getParent(toElement, true);\n\n if (parent === null) {\n return [];\n }\n\n path.unshift(Array.prototype.indexOf.call(parent.children, toElement));\n toElement = parent;\n }\n\n return path;\n}\n","import { findElementRecursive } from './findElementRecursive';\n\n/**\n * Determines if an element, or any of its ancestors, contain the given attribute\n * @param element - element to start searching at\n * @param attribute - the attribute to search for\n * @returns the value of the first instance found\n */\nexport function elementContainsAttribute(element: HTMLElement, attribute: string): string | null {\n const elementMatch = findElementRecursive(element, (testElement: HTMLElement) => testElement.hasAttribute(attribute));\n\n return elementMatch && elementMatch.getAttribute(attribute);\n}\n","/** @license React v16.14.0\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var l=require(\"object-assign\"),n=\"function\"===typeof Symbol&&Symbol.for,p=n?Symbol.for(\"react.element\"):60103,q=n?Symbol.for(\"react.portal\"):60106,r=n?Symbol.for(\"react.fragment\"):60107,t=n?Symbol.for(\"react.strict_mode\"):60108,u=n?Symbol.for(\"react.profiler\"):60114,v=n?Symbol.for(\"react.provider\"):60109,w=n?Symbol.for(\"react.context\"):60110,x=n?Symbol.for(\"react.forward_ref\"):60112,y=n?Symbol.for(\"react.suspense\"):60113,z=n?Symbol.for(\"react.memo\"):60115,A=n?Symbol.for(\"react.lazy\"):\n60116,B=\"function\"===typeof Symbol&&Symbol.iterator;function C(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;c<arguments.length;c++)b+=\"&args[]=\"+encodeURIComponent(arguments[c]);return\"Minified React error #\"+a+\"; visit \"+b+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}\nvar D={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},E={};function F(a,b,c){this.props=a;this.context=b;this.refs=E;this.updater=c||D}F.prototype.isReactComponent={};F.prototype.setState=function(a,b){if(\"object\"!==typeof a&&\"function\"!==typeof a&&null!=a)throw Error(C(85));this.updater.enqueueSetState(this,a,b,\"setState\")};F.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,\"forceUpdate\")};\nfunction G(){}G.prototype=F.prototype;function H(a,b,c){this.props=a;this.context=b;this.refs=E;this.updater=c||D}var I=H.prototype=new G;I.constructor=H;l(I,F.prototype);I.isPureReactComponent=!0;var J={current:null},K=Object.prototype.hasOwnProperty,L={key:!0,ref:!0,__self:!0,__source:!0};\nfunction M(a,b,c){var e,d={},g=null,k=null;if(null!=b)for(e in void 0!==b.ref&&(k=b.ref),void 0!==b.key&&(g=\"\"+b.key),b)K.call(b,e)&&!L.hasOwnProperty(e)&&(d[e]=b[e]);var f=arguments.length-2;if(1===f)d.children=c;else if(1<f){for(var h=Array(f),m=0;m<f;m++)h[m]=arguments[m+2];d.children=h}if(a&&a.defaultProps)for(e in f=a.defaultProps,f)void 0===d[e]&&(d[e]=f[e]);return{$$typeof:p,type:a,key:g,ref:k,props:d,_owner:J.current}}\nfunction N(a,b){return{$$typeof:p,type:a.type,key:b,ref:a.ref,props:a.props,_owner:a._owner}}function O(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===p}function escape(a){var b={\"=\":\"=0\",\":\":\"=2\"};return\"$\"+(\"\"+a).replace(/[=:]/g,function(a){return b[a]})}var P=/\\/+/g,Q=[];function R(a,b,c,e){if(Q.length){var d=Q.pop();d.result=a;d.keyPrefix=b;d.func=c;d.context=e;d.count=0;return d}return{result:a,keyPrefix:b,func:c,context:e,count:0}}\nfunction S(a){a.result=null;a.keyPrefix=null;a.func=null;a.context=null;a.count=0;10>Q.length&&Q.push(a)}\nfunction T(a,b,c,e){var d=typeof a;if(\"undefined\"===d||\"boolean\"===d)a=null;var g=!1;if(null===a)g=!0;else switch(d){case \"string\":case \"number\":g=!0;break;case \"object\":switch(a.$$typeof){case p:case q:g=!0}}if(g)return c(e,a,\"\"===b?\".\"+U(a,0):b),1;g=0;b=\"\"===b?\".\":b+\":\";if(Array.isArray(a))for(var k=0;k<a.length;k++){d=a[k];var f=b+U(d,k);g+=T(d,f,c,e)}else if(null===a||\"object\"!==typeof a?f=null:(f=B&&a[B]||a[\"@@iterator\"],f=\"function\"===typeof f?f:null),\"function\"===typeof f)for(a=f.call(a),k=\n0;!(d=a.next()).done;)d=d.value,f=b+U(d,k++),g+=T(d,f,c,e);else if(\"object\"===d)throw c=\"\"+a,Error(C(31,\"[object Object]\"===c?\"object with keys {\"+Object.keys(a).join(\", \")+\"}\":c,\"\"));return g}function V(a,b,c){return null==a?0:T(a,\"\",b,c)}function U(a,b){return\"object\"===typeof a&&null!==a&&null!=a.key?escape(a.key):b.toString(36)}function W(a,b){a.func.call(a.context,b,a.count++)}\nfunction aa(a,b,c){var e=a.result,d=a.keyPrefix;a=a.func.call(a.context,b,a.count++);Array.isArray(a)?X(a,e,c,function(a){return a}):null!=a&&(O(a)&&(a=N(a,d+(!a.key||b&&b.key===a.key?\"\":(\"\"+a.key).replace(P,\"$&/\")+\"/\")+c)),e.push(a))}function X(a,b,c,e,d){var g=\"\";null!=c&&(g=(\"\"+c).replace(P,\"$&/\")+\"/\");b=R(b,g,e,d);V(a,aa,b);S(b)}var Y={current:null};function Z(){var a=Y.current;if(null===a)throw Error(C(321));return a}\nvar ba={ReactCurrentDispatcher:Y,ReactCurrentBatchConfig:{suspense:null},ReactCurrentOwner:J,IsSomeRendererActing:{current:!1},assign:l};exports.Children={map:function(a,b,c){if(null==a)return a;var e=[];X(a,e,null,b,c);return e},forEach:function(a,b,c){if(null==a)return a;b=R(null,null,b,c);V(a,W,b);S(b)},count:function(a){return V(a,function(){return null},null)},toArray:function(a){var b=[];X(a,b,null,function(a){return a});return b},only:function(a){if(!O(a))throw Error(C(143));return a}};\nexports.Component=F;exports.Fragment=r;exports.Profiler=u;exports.PureComponent=H;exports.StrictMode=t;exports.Suspense=y;exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=ba;\nexports.cloneElement=function(a,b,c){if(null===a||void 0===a)throw Error(C(267,a));var e=l({},a.props),d=a.key,g=a.ref,k=a._owner;if(null!=b){void 0!==b.ref&&(g=b.ref,k=J.current);void 0!==b.key&&(d=\"\"+b.key);if(a.type&&a.type.defaultProps)var f=a.type.defaultProps;for(h in b)K.call(b,h)&&!L.hasOwnProperty(h)&&(e[h]=void 0===b[h]&&void 0!==f?f[h]:b[h])}var h=arguments.length-2;if(1===h)e.children=c;else if(1<h){f=Array(h);for(var m=0;m<h;m++)f[m]=arguments[m+2];e.children=f}return{$$typeof:p,type:a.type,\nkey:d,ref:g,props:e,_owner:k}};exports.createContext=function(a,b){void 0===b&&(b=null);a={$$typeof:w,_calculateChangedBits:b,_currentValue:a,_currentValue2:a,_threadCount:0,Provider:null,Consumer:null};a.Provider={$$typeof:v,_context:a};return a.Consumer=a};exports.createElement=M;exports.createFactory=function(a){var b=M.bind(null,a);b.type=a;return b};exports.createRef=function(){return{current:null}};exports.forwardRef=function(a){return{$$typeof:x,render:a}};exports.isValidElement=O;\nexports.lazy=function(a){return{$$typeof:A,_ctor:a,_status:-1,_result:null}};exports.memo=function(a,b){return{$$typeof:z,type:a,compare:void 0===b?null:b}};exports.useCallback=function(a,b){return Z().useCallback(a,b)};exports.useContext=function(a,b){return Z().useContext(a,b)};exports.useDebugValue=function(){};exports.useEffect=function(a,b){return Z().useEffect(a,b)};exports.useImperativeHandle=function(a,b,c){return Z().useImperativeHandle(a,b,c)};\nexports.useLayoutEffect=function(a,b){return Z().useLayoutEffect(a,b)};exports.useMemo=function(a,b){return Z().useMemo(a,b)};exports.useReducer=function(a,b,c){return Z().useReducer(a,b,c)};exports.useRef=function(a){return Z().useRef(a)};exports.useState=function(a){return Z().useState(a)};exports.version=\"16.14.0\";\n","/** @license React v16.14.0\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),n=require(\"object-assign\"),r=require(\"scheduler\");function u(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;c<arguments.length;c++)b+=\"&args[]=\"+encodeURIComponent(arguments[c]);return\"Minified React error #\"+a+\"; visit \"+b+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}if(!aa)throw Error(u(227));\nfunction ba(a,b,c,d,e,f,g,h,k){var l=Array.prototype.slice.call(arguments,3);try{b.apply(c,l)}catch(m){this.onError(m)}}var da=!1,ea=null,fa=!1,ha=null,ia={onError:function(a){da=!0;ea=a}};function ja(a,b,c,d,e,f,g,h,k){da=!1;ea=null;ba.apply(ia,arguments)}function ka(a,b,c,d,e,f,g,h,k){ja.apply(this,arguments);if(da){if(da){var l=ea;da=!1;ea=null}else throw Error(u(198));fa||(fa=!0,ha=l)}}var la=null,ma=null,na=null;\nfunction oa(a,b,c){var d=a.type||\"unknown-event\";a.currentTarget=na(c);ka(d,b,void 0,a);a.currentTarget=null}var pa=null,qa={};\nfunction ra(){if(pa)for(var a in qa){var b=qa[a],c=pa.indexOf(a);if(!(-1<c))throw Error(u(96,a));if(!sa[c]){if(!b.extractEvents)throw Error(u(97,a));sa[c]=b;c=b.eventTypes;for(var d in c){var e=void 0;var f=c[d],g=b,h=d;if(ta.hasOwnProperty(h))throw Error(u(99,h));ta[h]=f;var k=f.phasedRegistrationNames;if(k){for(e in k)k.hasOwnProperty(e)&&ua(k[e],g,h);e=!0}else f.registrationName?(ua(f.registrationName,g,h),e=!0):e=!1;if(!e)throw Error(u(98,d,a));}}}}\nfunction ua(a,b,c){if(va[a])throw Error(u(100,a));va[a]=b;wa[a]=b.eventTypes[c].dependencies}var sa=[],ta={},va={},wa={};function xa(a){var b=!1,c;for(c in a)if(a.hasOwnProperty(c)){var d=a[c];if(!qa.hasOwnProperty(c)||qa[c]!==d){if(qa[c])throw Error(u(102,c));qa[c]=d;b=!0}}b&&ra()}var ya=!(\"undefined\"===typeof window||\"undefined\"===typeof window.document||\"undefined\"===typeof window.document.createElement),za=null,Aa=null,Ba=null;\nfunction Ca(a){if(a=ma(a)){if(\"function\"!==typeof za)throw Error(u(280));var b=a.stateNode;b&&(b=la(b),za(a.stateNode,a.type,b))}}function Da(a){Aa?Ba?Ba.push(a):Ba=[a]:Aa=a}function Ea(){if(Aa){var a=Aa,b=Ba;Ba=Aa=null;Ca(a);if(b)for(a=0;a<b.length;a++)Ca(b[a])}}function Fa(a,b){return a(b)}function Ga(a,b,c,d,e){return a(b,c,d,e)}function Ha(){}var Ia=Fa,Ja=!1,Ka=!1;function La(){if(null!==Aa||null!==Ba)Ha(),Ea()}\nfunction Ma(a,b,c){if(Ka)return a(b,c);Ka=!0;try{return Ia(a,b,c)}finally{Ka=!1,La()}}var Na=/^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$/,Oa=Object.prototype.hasOwnProperty,Pa={},Qa={};\nfunction Ra(a){if(Oa.call(Qa,a))return!0;if(Oa.call(Pa,a))return!1;if(Na.test(a))return Qa[a]=!0;Pa[a]=!0;return!1}function Sa(a,b,c,d){if(null!==c&&0===c.type)return!1;switch(typeof b){case \"function\":case \"symbol\":return!0;case \"boolean\":if(d)return!1;if(null!==c)return!c.acceptsBooleans;a=a.toLowerCase().slice(0,5);return\"data-\"!==a&&\"aria-\"!==a;default:return!1}}\nfunction Ta(a,b,c,d){if(null===b||\"undefined\"===typeof b||Sa(a,b,c,d))return!0;if(d)return!1;if(null!==c)switch(c.type){case 3:return!b;case 4:return!1===b;case 5:return isNaN(b);case 6:return isNaN(b)||1>b}return!1}function v(a,b,c,d,e,f){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f}var C={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){C[a]=new v(a,0,!1,a,null,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];C[b]=new v(b,1,!1,a[1],null,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){C[a]=new v(a,2,!1,a.toLowerCase(),null,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){C[a]=new v(a,2,!1,a,null,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){C[a]=new v(a,3,!1,a.toLowerCase(),null,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){C[a]=new v(a,3,!0,a,null,!1)});[\"capture\",\"download\"].forEach(function(a){C[a]=new v(a,4,!1,a,null,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){C[a]=new v(a,6,!1,a,null,!1)});[\"rowSpan\",\"start\"].forEach(function(a){C[a]=new v(a,5,!1,a.toLowerCase(),null,!1)});var Ua=/[\\-:]([a-z])/g;function Va(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(Ua,\nVa);C[b]=new v(b,1,!1,a,null,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(Ua,Va);C[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(Ua,Va);C[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){C[a]=new v(a,1,!1,a.toLowerCase(),null,!1)});\nC.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){C[a]=new v(a,1,!1,a.toLowerCase(),null,!0)});var Wa=aa.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;Wa.hasOwnProperty(\"ReactCurrentDispatcher\")||(Wa.ReactCurrentDispatcher={current:null});Wa.hasOwnProperty(\"ReactCurrentBatchConfig\")||(Wa.ReactCurrentBatchConfig={suspense:null});\nfunction Xa(a,b,c,d){var e=C.hasOwnProperty(b)?C[b]:null;var f=null!==e?0===e.type:d?!1:!(2<b.length)||\"o\"!==b[0]&&\"O\"!==b[0]||\"n\"!==b[1]&&\"N\"!==b[1]?!1:!0;f||(Ta(b,c,e,d)&&(c=null),d||null===e?Ra(b)&&(null===c?a.removeAttribute(b):a.setAttribute(b,\"\"+c)):e.mustUseProperty?a[e.propertyName]=null===c?3===e.type?!1:\"\":c:(b=e.attributeName,d=e.attributeNamespace,null===c?a.removeAttribute(b):(e=e.type,c=3===e||4===e&&!0===c?\"\":\"\"+c,d?a.setAttributeNS(d,b,c):a.setAttribute(b,c))))}\nvar Ya=/^(.*)[\\\\\\/]/,E=\"function\"===typeof Symbol&&Symbol.for,Za=E?Symbol.for(\"react.element\"):60103,$a=E?Symbol.for(\"react.portal\"):60106,ab=E?Symbol.for(\"react.fragment\"):60107,bb=E?Symbol.for(\"react.strict_mode\"):60108,cb=E?Symbol.for(\"react.profiler\"):60114,db=E?Symbol.for(\"react.provider\"):60109,eb=E?Symbol.for(\"react.context\"):60110,fb=E?Symbol.for(\"react.concurrent_mode\"):60111,gb=E?Symbol.for(\"react.forward_ref\"):60112,hb=E?Symbol.for(\"react.suspense\"):60113,ib=E?Symbol.for(\"react.suspense_list\"):\n60120,jb=E?Symbol.for(\"react.memo\"):60115,kb=E?Symbol.for(\"react.lazy\"):60116,lb=E?Symbol.for(\"react.block\"):60121,mb=\"function\"===typeof Symbol&&Symbol.iterator;function nb(a){if(null===a||\"object\"!==typeof a)return null;a=mb&&a[mb]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}function ob(a){if(-1===a._status){a._status=0;var b=a._ctor;b=b();a._result=b;b.then(function(b){0===a._status&&(b=b.default,a._status=1,a._result=b)},function(b){0===a._status&&(a._status=2,a._result=b)})}}\nfunction pb(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ab:return\"Fragment\";case $a:return\"Portal\";case cb:return\"Profiler\";case bb:return\"StrictMode\";case hb:return\"Suspense\";case ib:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case eb:return\"Context.Consumer\";case db:return\"Context.Provider\";case gb:var b=a.render;b=b.displayName||b.name||\"\";return a.displayName||(\"\"!==b?\"ForwardRef(\"+b+\")\":\n\"ForwardRef\");case jb:return pb(a.type);case lb:return pb(a.render);case kb:if(a=1===a._status?a._result:null)return pb(a)}return null}function qb(a){var b=\"\";do{a:switch(a.tag){case 3:case 4:case 6:case 7:case 10:case 9:var c=\"\";break a;default:var d=a._debugOwner,e=a._debugSource,f=pb(a.type);c=null;d&&(c=pb(d.type));d=f;f=\"\";e?f=\" (at \"+e.fileName.replace(Ya,\"\")+\":\"+e.lineNumber+\")\":c&&(f=\" (created by \"+c+\")\");c=\"\\n in \"+(d||\"Unknown\")+f}b+=c;a=a.return}while(a);return b}\nfunction rb(a){switch(typeof a){case \"boolean\":case \"number\":case \"object\":case \"string\":case \"undefined\":return a;default:return\"\"}}function sb(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction tb(a){var b=sb(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function xb(a){a._valueTracker||(a._valueTracker=tb(a))}function yb(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=sb(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function zb(a,b){var c=b.checked;return n({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}\nfunction Ab(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=rb(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function Bb(a,b){b=b.checked;null!=b&&Xa(a,\"checked\",b,!1)}\nfunction Cb(a,b){Bb(a,b);var c=rb(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?Db(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&Db(a,b.type,rb(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction Eb(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction Db(a,b,c){if(\"number\"!==b||a.ownerDocument.activeElement!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}function Fb(a){var b=\"\";aa.Children.forEach(a,function(a){null!=a&&(b+=a)});return b}function Gb(a,b){a=n({children:void 0},b);if(b=Fb(b.children))a.children=b;return a}\nfunction Hb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e<c.length;e++)b[\"$\"+c[e]]=!0;for(c=0;c<a.length;c++)e=b.hasOwnProperty(\"$\"+a[c].value),a[c].selected!==e&&(a[c].selected=e),e&&d&&(a[c].defaultSelected=!0)}else{c=\"\"+rb(c);b=null;for(e=0;e<a.length;e++){if(a[e].value===c){a[e].selected=!0;d&&(a[e].defaultSelected=!0);return}null!==b||a[e].disabled||(b=a[e])}null!==b&&(b.selected=!0)}}\nfunction Ib(a,b){if(null!=b.dangerouslySetInnerHTML)throw Error(u(91));return n({},b,{value:void 0,defaultValue:void 0,children:\"\"+a._wrapperState.initialValue})}function Jb(a,b){var c=b.value;if(null==c){c=b.children;b=b.defaultValue;if(null!=c){if(null!=b)throw Error(u(92));if(Array.isArray(c)){if(!(1>=c.length))throw Error(u(93));c=c[0]}b=c}null==b&&(b=\"\");c=b}a._wrapperState={initialValue:rb(c)}}\nfunction Kb(a,b){var c=rb(b.value),d=rb(b.defaultValue);null!=c&&(c=\"\"+c,c!==a.value&&(a.value=c),null==b.defaultValue&&a.defaultValue!==c&&(a.defaultValue=c));null!=d&&(a.defaultValue=\"\"+d)}function Lb(a){var b=a.textContent;b===a._wrapperState.initialValue&&\"\"!==b&&null!==b&&(a.value=b)}var Mb={html:\"http://www.w3.org/1999/xhtml\",mathml:\"http://www.w3.org/1998/Math/MathML\",svg:\"http://www.w3.org/2000/svg\"};\nfunction Nb(a){switch(a){case \"svg\":return\"http://www.w3.org/2000/svg\";case \"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}function Ob(a,b){return null==a||\"http://www.w3.org/1999/xhtml\"===a?Nb(b):\"http://www.w3.org/2000/svg\"===a&&\"foreignObject\"===b?\"http://www.w3.org/1999/xhtml\":a}\nvar Pb,Qb=function(a){return\"undefined\"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(b,c,d,e){MSApp.execUnsafeLocalFunction(function(){return a(b,c,d,e)})}:a}(function(a,b){if(a.namespaceURI!==Mb.svg||\"innerHTML\"in a)a.innerHTML=b;else{Pb=Pb||document.createElement(\"div\");Pb.innerHTML=\"<svg>\"+b.valueOf().toString()+\"</svg>\";for(b=Pb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction Rb(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}function Sb(a,b){var c={};c[a.toLowerCase()]=b.toLowerCase();c[\"Webkit\"+a]=\"webkit\"+b;c[\"Moz\"+a]=\"moz\"+b;return c}var Tb={animationend:Sb(\"Animation\",\"AnimationEnd\"),animationiteration:Sb(\"Animation\",\"AnimationIteration\"),animationstart:Sb(\"Animation\",\"AnimationStart\"),transitionend:Sb(\"Transition\",\"TransitionEnd\")},Ub={},Vb={};\nya&&(Vb=document.createElement(\"div\").style,\"AnimationEvent\"in window||(delete Tb.animationend.animation,delete Tb.animationiteration.animation,delete Tb.animationstart.animation),\"TransitionEvent\"in window||delete Tb.transitionend.transition);function Wb(a){if(Ub[a])return Ub[a];if(!Tb[a])return a;var b=Tb[a],c;for(c in b)if(b.hasOwnProperty(c)&&c in Vb)return Ub[a]=b[c];return a}\nvar Xb=Wb(\"animationend\"),Yb=Wb(\"animationiteration\"),Zb=Wb(\"animationstart\"),$b=Wb(\"transitionend\"),ac=\"abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange seeked seeking stalled suspend timeupdate volumechange waiting\".split(\" \"),bc=new (\"function\"===typeof WeakMap?WeakMap:Map);function cc(a){var b=bc.get(a);void 0===b&&(b=new Map,bc.set(a,b));return b}\nfunction dc(a){var b=a,c=a;if(a.alternate)for(;b.return;)b=b.return;else{a=b;do b=a,0!==(b.effectTag&1026)&&(c=b.return),a=b.return;while(a)}return 3===b.tag?c:null}function ec(a){if(13===a.tag){var b=a.memoizedState;null===b&&(a=a.alternate,null!==a&&(b=a.memoizedState));if(null!==b)return b.dehydrated}return null}function fc(a){if(dc(a)!==a)throw Error(u(188));}\nfunction gc(a){var b=a.alternate;if(!b){b=dc(a);if(null===b)throw Error(u(188));return b!==a?null:a}for(var c=a,d=b;;){var e=c.return;if(null===e)break;var f=e.alternate;if(null===f){d=e.return;if(null!==d){c=d;continue}break}if(e.child===f.child){for(f=e.child;f;){if(f===c)return fc(e),a;if(f===d)return fc(e),b;f=f.sibling}throw Error(u(188));}if(c.return!==d.return)c=e,d=f;else{for(var g=!1,h=e.child;h;){if(h===c){g=!0;c=e;d=f;break}if(h===d){g=!0;d=e;c=f;break}h=h.sibling}if(!g){for(h=f.child;h;){if(h===\nc){g=!0;c=f;d=e;break}if(h===d){g=!0;d=f;c=e;break}h=h.sibling}if(!g)throw Error(u(189));}}if(c.alternate!==d)throw Error(u(190));}if(3!==c.tag)throw Error(u(188));return c.stateNode.current===c?a:b}function hc(a){a=gc(a);if(!a)return null;for(var b=a;;){if(5===b.tag||6===b.tag)return b;if(b.child)b.child.return=b,b=b.child;else{if(b===a)break;for(;!b.sibling;){if(!b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}}return null}\nfunction ic(a,b){if(null==b)throw Error(u(30));if(null==a)return b;if(Array.isArray(a)){if(Array.isArray(b))return a.push.apply(a,b),a;a.push(b);return a}return Array.isArray(b)?[a].concat(b):[a,b]}function jc(a,b,c){Array.isArray(a)?a.forEach(b,c):a&&b.call(c,a)}var kc=null;\nfunction lc(a){if(a){var b=a._dispatchListeners,c=a._dispatchInstances;if(Array.isArray(b))for(var d=0;d<b.length&&!a.isPropagationStopped();d++)oa(a,b[d],c[d]);else b&&oa(a,b,c);a._dispatchListeners=null;a._dispatchInstances=null;a.isPersistent()||a.constructor.release(a)}}function mc(a){null!==a&&(kc=ic(kc,a));a=kc;kc=null;if(a){jc(a,lc);if(kc)throw Error(u(95));if(fa)throw a=ha,fa=!1,ha=null,a;}}\nfunction nc(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}function oc(a){if(!ya)return!1;a=\"on\"+a;var b=a in document;b||(b=document.createElement(\"div\"),b.setAttribute(a,\"return;\"),b=\"function\"===typeof b[a]);return b}var pc=[];function qc(a){a.topLevelType=null;a.nativeEvent=null;a.targetInst=null;a.ancestors.length=0;10>pc.length&&pc.push(a)}\nfunction rc(a,b,c,d){if(pc.length){var e=pc.pop();e.topLevelType=a;e.eventSystemFlags=d;e.nativeEvent=b;e.targetInst=c;return e}return{topLevelType:a,eventSystemFlags:d,nativeEvent:b,targetInst:c,ancestors:[]}}\nfunction sc(a){var b=a.targetInst,c=b;do{if(!c){a.ancestors.push(c);break}var d=c;if(3===d.tag)d=d.stateNode.containerInfo;else{for(;d.return;)d=d.return;d=3!==d.tag?null:d.stateNode.containerInfo}if(!d)break;b=c.tag;5!==b&&6!==b||a.ancestors.push(c);c=tc(d)}while(c);for(c=0;c<a.ancestors.length;c++){b=a.ancestors[c];var e=nc(a.nativeEvent);d=a.topLevelType;var f=a.nativeEvent,g=a.eventSystemFlags;0===c&&(g|=64);for(var h=null,k=0;k<sa.length;k++){var l=sa[k];l&&(l=l.extractEvents(d,b,f,e,g))&&(h=\nic(h,l))}mc(h)}}function uc(a,b,c){if(!c.has(a)){switch(a){case \"scroll\":vc(b,\"scroll\",!0);break;case \"focus\":case \"blur\":vc(b,\"focus\",!0);vc(b,\"blur\",!0);c.set(\"blur\",null);c.set(\"focus\",null);break;case \"cancel\":case \"close\":oc(a)&&vc(b,a,!0);break;case \"invalid\":case \"submit\":case \"reset\":break;default:-1===ac.indexOf(a)&&F(a,b)}c.set(a,null)}}\nvar wc,xc,yc,zc=!1,Ac=[],Bc=null,Cc=null,Dc=null,Ec=new Map,Fc=new Map,Gc=[],Hc=\"mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput close cancel copy cut paste click change contextmenu reset submit\".split(\" \"),Ic=\"focus blur dragenter dragleave mouseover mouseout pointerover pointerout gotpointercapture lostpointercapture\".split(\" \");\nfunction Jc(a,b){var c=cc(b);Hc.forEach(function(a){uc(a,b,c)});Ic.forEach(function(a){uc(a,b,c)})}function Kc(a,b,c,d,e){return{blockedOn:a,topLevelType:b,eventSystemFlags:c|32,nativeEvent:e,container:d}}\nfunction Lc(a,b){switch(a){case \"focus\":case \"blur\":Bc=null;break;case \"dragenter\":case \"dragleave\":Cc=null;break;case \"mouseover\":case \"mouseout\":Dc=null;break;case \"pointerover\":case \"pointerout\":Ec.delete(b.pointerId);break;case \"gotpointercapture\":case \"lostpointercapture\":Fc.delete(b.pointerId)}}function Mc(a,b,c,d,e,f){if(null===a||a.nativeEvent!==f)return a=Kc(b,c,d,e,f),null!==b&&(b=Nc(b),null!==b&&xc(b)),a;a.eventSystemFlags|=d;return a}\nfunction Oc(a,b,c,d,e){switch(b){case \"focus\":return Bc=Mc(Bc,a,b,c,d,e),!0;case \"dragenter\":return Cc=Mc(Cc,a,b,c,d,e),!0;case \"mouseover\":return Dc=Mc(Dc,a,b,c,d,e),!0;case \"pointerover\":var f=e.pointerId;Ec.set(f,Mc(Ec.get(f)||null,a,b,c,d,e));return!0;case \"gotpointercapture\":return f=e.pointerId,Fc.set(f,Mc(Fc.get(f)||null,a,b,c,d,e)),!0}return!1}\nfunction Pc(a){var b=tc(a.target);if(null!==b){var c=dc(b);if(null!==c)if(b=c.tag,13===b){if(b=ec(c),null!==b){a.blockedOn=b;r.unstable_runWithPriority(a.priority,function(){yc(c)});return}}else if(3===b&&c.stateNode.hydrate){a.blockedOn=3===c.tag?c.stateNode.containerInfo:null;return}}a.blockedOn=null}function Qc(a){if(null!==a.blockedOn)return!1;var b=Rc(a.topLevelType,a.eventSystemFlags,a.container,a.nativeEvent);if(null!==b){var c=Nc(b);null!==c&&xc(c);a.blockedOn=b;return!1}return!0}\nfunction Sc(a,b,c){Qc(a)&&c.delete(b)}function Tc(){for(zc=!1;0<Ac.length;){var a=Ac[0];if(null!==a.blockedOn){a=Nc(a.blockedOn);null!==a&&wc(a);break}var b=Rc(a.topLevelType,a.eventSystemFlags,a.container,a.nativeEvent);null!==b?a.blockedOn=b:Ac.shift()}null!==Bc&&Qc(Bc)&&(Bc=null);null!==Cc&&Qc(Cc)&&(Cc=null);null!==Dc&&Qc(Dc)&&(Dc=null);Ec.forEach(Sc);Fc.forEach(Sc)}function Uc(a,b){a.blockedOn===b&&(a.blockedOn=null,zc||(zc=!0,r.unstable_scheduleCallback(r.unstable_NormalPriority,Tc)))}\nfunction Vc(a){function b(b){return Uc(b,a)}if(0<Ac.length){Uc(Ac[0],a);for(var c=1;c<Ac.length;c++){var d=Ac[c];d.blockedOn===a&&(d.blockedOn=null)}}null!==Bc&&Uc(Bc,a);null!==Cc&&Uc(Cc,a);null!==Dc&&Uc(Dc,a);Ec.forEach(b);Fc.forEach(b);for(c=0;c<Gc.length;c++)d=Gc[c],d.blockedOn===a&&(d.blockedOn=null);for(;0<Gc.length&&(c=Gc[0],null===c.blockedOn);)Pc(c),null===c.blockedOn&&Gc.shift()}\nvar Wc={},Yc=new Map,Zc=new Map,$c=[\"abort\",\"abort\",Xb,\"animationEnd\",Yb,\"animationIteration\",Zb,\"animationStart\",\"canplay\",\"canPlay\",\"canplaythrough\",\"canPlayThrough\",\"durationchange\",\"durationChange\",\"emptied\",\"emptied\",\"encrypted\",\"encrypted\",\"ended\",\"ended\",\"error\",\"error\",\"gotpointercapture\",\"gotPointerCapture\",\"load\",\"load\",\"loadeddata\",\"loadedData\",\"loadedmetadata\",\"loadedMetadata\",\"loadstart\",\"loadStart\",\"lostpointercapture\",\"lostPointerCapture\",\"playing\",\"playing\",\"progress\",\"progress\",\"seeking\",\n\"seeking\",\"stalled\",\"stalled\",\"suspend\",\"suspend\",\"timeupdate\",\"timeUpdate\",$b,\"transitionEnd\",\"waiting\",\"waiting\"];function ad(a,b){for(var c=0;c<a.length;c+=2){var d=a[c],e=a[c+1],f=\"on\"+(e[0].toUpperCase()+e.slice(1));f={phasedRegistrationNames:{bubbled:f,captured:f+\"Capture\"},dependencies:[d],eventPriority:b};Zc.set(d,b);Yc.set(d,f);Wc[e]=f}}\nad(\"blur blur cancel cancel click click close close contextmenu contextMenu copy copy cut cut auxclick auxClick dblclick doubleClick dragend dragEnd dragstart dragStart drop drop focus focus input input invalid invalid keydown keyDown keypress keyPress keyup keyUp mousedown mouseDown mouseup mouseUp paste paste pause pause play play pointercancel pointerCancel pointerdown pointerDown pointerup pointerUp ratechange rateChange reset reset seeked seeked submit submit touchcancel touchCancel touchend touchEnd touchstart touchStart volumechange volumeChange\".split(\" \"),0);\nad(\"drag drag dragenter dragEnter dragexit dragExit dragleave dragLeave dragover dragOver mousemove mouseMove mouseout mouseOut mouseover mouseOver pointermove pointerMove pointerout pointerOut pointerover pointerOver scroll scroll toggle toggle touchmove touchMove wheel wheel\".split(\" \"),1);ad($c,2);for(var bd=\"change selectionchange textInput compositionstart compositionend compositionupdate\".split(\" \"),cd=0;cd<bd.length;cd++)Zc.set(bd[cd],0);\nvar dd=r.unstable_UserBlockingPriority,ed=r.unstable_runWithPriority,fd=!0;function F(a,b){vc(b,a,!1)}function vc(a,b,c){var d=Zc.get(b);switch(void 0===d?2:d){case 0:d=gd.bind(null,b,1,a);break;case 1:d=hd.bind(null,b,1,a);break;default:d=id.bind(null,b,1,a)}c?a.addEventListener(b,d,!0):a.addEventListener(b,d,!1)}function gd(a,b,c,d){Ja||Ha();var e=id,f=Ja;Ja=!0;try{Ga(e,a,b,c,d)}finally{(Ja=f)||La()}}function hd(a,b,c,d){ed(dd,id.bind(null,a,b,c,d))}\nfunction id(a,b,c,d){if(fd)if(0<Ac.length&&-1<Hc.indexOf(a))a=Kc(null,a,b,c,d),Ac.push(a);else{var e=Rc(a,b,c,d);if(null===e)Lc(a,d);else if(-1<Hc.indexOf(a))a=Kc(e,a,b,c,d),Ac.push(a);else if(!Oc(e,a,b,c,d)){Lc(a,d);a=rc(a,d,null,b);try{Ma(sc,a)}finally{qc(a)}}}}\nfunction Rc(a,b,c,d){c=nc(d);c=tc(c);if(null!==c){var e=dc(c);if(null===e)c=null;else{var f=e.tag;if(13===f){c=ec(e);if(null!==c)return c;c=null}else if(3===f){if(e.stateNode.hydrate)return 3===e.tag?e.stateNode.containerInfo:null;c=null}else e!==c&&(c=null)}}a=rc(a,d,c,b);try{Ma(sc,a)}finally{qc(a)}return null}\nvar jd={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,\nfloodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},kd=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(jd).forEach(function(a){kd.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);jd[b]=jd[a]})});function ld(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||jd.hasOwnProperty(a)&&jd[a]?(\"\"+b).trim():b+\"px\"}\nfunction md(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=ld(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var nd=n({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction od(a,b){if(b){if(nd[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(u(137,a,\"\"));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(u(60));if(!(\"object\"===typeof b.dangerouslySetInnerHTML&&\"__html\"in b.dangerouslySetInnerHTML))throw Error(u(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(u(62,\"\"));}}\nfunction pd(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var qd=Mb.html;function rd(a,b){a=9===a.nodeType||11===a.nodeType?a:a.ownerDocument;var c=cc(a);b=wa[b];for(var d=0;d<b.length;d++)uc(b[d],a,c)}function sd(){}\nfunction td(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}function ud(a){for(;a&&a.firstChild;)a=a.firstChild;return a}function vd(a,b){var c=ud(a);a=0;for(var d;c;){if(3===c.nodeType){d=a+c.textContent.length;if(a<=b&&d>=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=ud(c)}}\nfunction wd(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?wd(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}function xd(){for(var a=window,b=td();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=td(a.document)}return b}\nfunction yd(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}var zd=\"$\",Ad=\"/$\",Bd=\"$?\",Cd=\"$!\",Dd=null,Ed=null;function Fd(a,b){switch(a){case \"button\":case \"input\":case \"select\":case \"textarea\":return!!b.autoFocus}return!1}\nfunction Gd(a,b){return\"textarea\"===a||\"option\"===a||\"noscript\"===a||\"string\"===typeof b.children||\"number\"===typeof b.children||\"object\"===typeof b.dangerouslySetInnerHTML&&null!==b.dangerouslySetInnerHTML&&null!=b.dangerouslySetInnerHTML.__html}var Hd=\"function\"===typeof setTimeout?setTimeout:void 0,Id=\"function\"===typeof clearTimeout?clearTimeout:void 0;function Jd(a){for(;null!=a;a=a.nextSibling){var b=a.nodeType;if(1===b||3===b)break}return a}\nfunction Kd(a){a=a.previousSibling;for(var b=0;a;){if(8===a.nodeType){var c=a.data;if(c===zd||c===Cd||c===Bd){if(0===b)return a;b--}else c===Ad&&b++}a=a.previousSibling}return null}var Ld=Math.random().toString(36).slice(2),Md=\"__reactInternalInstance$\"+Ld,Nd=\"__reactEventHandlers$\"+Ld,Od=\"__reactContainere$\"+Ld;\nfunction tc(a){var b=a[Md];if(b)return b;for(var c=a.parentNode;c;){if(b=c[Od]||c[Md]){c=b.alternate;if(null!==b.child||null!==c&&null!==c.child)for(a=Kd(a);null!==a;){if(c=a[Md])return c;a=Kd(a)}return b}a=c;c=a.parentNode}return null}function Nc(a){a=a[Md]||a[Od];return!a||5!==a.tag&&6!==a.tag&&13!==a.tag&&3!==a.tag?null:a}function Pd(a){if(5===a.tag||6===a.tag)return a.stateNode;throw Error(u(33));}function Qd(a){return a[Nd]||null}\nfunction Rd(a){do a=a.return;while(a&&5!==a.tag);return a?a:null}\nfunction Sd(a,b){var c=a.stateNode;if(!c)return null;var d=la(c);if(!d)return null;c=d[b];a:switch(b){case \"onClick\":case \"onClickCapture\":case \"onDoubleClick\":case \"onDoubleClickCapture\":case \"onMouseDown\":case \"onMouseDownCapture\":case \"onMouseMove\":case \"onMouseMoveCapture\":case \"onMouseUp\":case \"onMouseUpCapture\":case \"onMouseEnter\":(d=!d.disabled)||(a=a.type,d=!(\"button\"===a||\"input\"===a||\"select\"===a||\"textarea\"===a));a=!d;break a;default:a=!1}if(a)return null;if(c&&\"function\"!==typeof c)throw Error(u(231,\nb,typeof c));return c}function Td(a,b,c){if(b=Sd(a,c.dispatchConfig.phasedRegistrationNames[b]))c._dispatchListeners=ic(c._dispatchListeners,b),c._dispatchInstances=ic(c._dispatchInstances,a)}function Ud(a){if(a&&a.dispatchConfig.phasedRegistrationNames){for(var b=a._targetInst,c=[];b;)c.push(b),b=Rd(b);for(b=c.length;0<b--;)Td(c[b],\"captured\",a);for(b=0;b<c.length;b++)Td(c[b],\"bubbled\",a)}}\nfunction Vd(a,b,c){a&&c&&c.dispatchConfig.registrationName&&(b=Sd(a,c.dispatchConfig.registrationName))&&(c._dispatchListeners=ic(c._dispatchListeners,b),c._dispatchInstances=ic(c._dispatchInstances,a))}function Wd(a){a&&a.dispatchConfig.registrationName&&Vd(a._targetInst,null,a)}function Xd(a){jc(a,Ud)}var Yd=null,Zd=null,$d=null;\nfunction ae(){if($d)return $d;var a,b=Zd,c=b.length,d,e=\"value\"in Yd?Yd.value:Yd.textContent,f=e.length;for(a=0;a<c&&b[a]===e[a];a++);var g=c-a;for(d=1;d<=g&&b[c-d]===e[f-d];d++);return $d=e.slice(a,1<d?1-d:void 0)}function be(){return!0}function ce(){return!1}\nfunction G(a,b,c,d){this.dispatchConfig=a;this._targetInst=b;this.nativeEvent=c;a=this.constructor.Interface;for(var e in a)a.hasOwnProperty(e)&&((b=a[e])?this[e]=b(c):\"target\"===e?this.target=d:this[e]=c[e]);this.isDefaultPrevented=(null!=c.defaultPrevented?c.defaultPrevented:!1===c.returnValue)?be:ce;this.isPropagationStopped=ce;return this}\nn(G.prototype,{preventDefault:function(){this.defaultPrevented=!0;var a=this.nativeEvent;a&&(a.preventDefault?a.preventDefault():\"unknown\"!==typeof a.returnValue&&(a.returnValue=!1),this.isDefaultPrevented=be)},stopPropagation:function(){var a=this.nativeEvent;a&&(a.stopPropagation?a.stopPropagation():\"unknown\"!==typeof a.cancelBubble&&(a.cancelBubble=!0),this.isPropagationStopped=be)},persist:function(){this.isPersistent=be},isPersistent:ce,destructor:function(){var a=this.constructor.Interface,\nb;for(b in a)this[b]=null;this.nativeEvent=this._targetInst=this.dispatchConfig=null;this.isPropagationStopped=this.isDefaultPrevented=ce;this._dispatchInstances=this._dispatchListeners=null}});G.Interface={type:null,target:null,currentTarget:function(){return null},eventPhase:null,bubbles:null,cancelable:null,timeStamp:function(a){return a.timeStamp||Date.now()},defaultPrevented:null,isTrusted:null};\nG.extend=function(a){function b(){}function c(){return d.apply(this,arguments)}var d=this;b.prototype=d.prototype;var e=new b;n(e,c.prototype);c.prototype=e;c.prototype.constructor=c;c.Interface=n({},d.Interface,a);c.extend=d.extend;de(c);return c};de(G);function ee(a,b,c,d){if(this.eventPool.length){var e=this.eventPool.pop();this.call(e,a,b,c,d);return e}return new this(a,b,c,d)}\nfunction fe(a){if(!(a instanceof this))throw Error(u(279));a.destructor();10>this.eventPool.length&&this.eventPool.push(a)}function de(a){a.eventPool=[];a.getPooled=ee;a.release=fe}var ge=G.extend({data:null}),he=G.extend({data:null}),ie=[9,13,27,32],je=ya&&\"CompositionEvent\"in window,ke=null;ya&&\"documentMode\"in document&&(ke=document.documentMode);\nvar le=ya&&\"TextEvent\"in window&&!ke,me=ya&&(!je||ke&&8<ke&&11>=ke),ne=String.fromCharCode(32),oe={beforeInput:{phasedRegistrationNames:{bubbled:\"onBeforeInput\",captured:\"onBeforeInputCapture\"},dependencies:[\"compositionend\",\"keypress\",\"textInput\",\"paste\"]},compositionEnd:{phasedRegistrationNames:{bubbled:\"onCompositionEnd\",captured:\"onCompositionEndCapture\"},dependencies:\"blur compositionend keydown keypress keyup mousedown\".split(\" \")},compositionStart:{phasedRegistrationNames:{bubbled:\"onCompositionStart\",\ncaptured:\"onCompositionStartCapture\"},dependencies:\"blur compositionstart keydown keypress keyup mousedown\".split(\" \")},compositionUpdate:{phasedRegistrationNames:{bubbled:\"onCompositionUpdate\",captured:\"onCompositionUpdateCapture\"},dependencies:\"blur compositionupdate keydown keypress keyup mousedown\".split(\" \")}},pe=!1;\nfunction qe(a,b){switch(a){case \"keyup\":return-1!==ie.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"blur\":return!0;default:return!1}}function re(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var se=!1;function te(a,b){switch(a){case \"compositionend\":return re(b);case \"keypress\":if(32!==b.which)return null;pe=!0;return ne;case \"textInput\":return a=b.data,a===ne&&pe?null:a;default:return null}}\nfunction ue(a,b){if(se)return\"compositionend\"===a||!je&&qe(a,b)?(a=ae(),$d=Zd=Yd=null,se=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1<b.char.length)return b.char;if(b.which)return String.fromCharCode(b.which)}return null;case \"compositionend\":return me&&\"ko\"!==b.locale?null:b.data;default:return null}}\nvar ve={eventTypes:oe,extractEvents:function(a,b,c,d){var e;if(je)b:{switch(a){case \"compositionstart\":var f=oe.compositionStart;break b;case \"compositionend\":f=oe.compositionEnd;break b;case \"compositionupdate\":f=oe.compositionUpdate;break b}f=void 0}else se?qe(a,c)&&(f=oe.compositionEnd):\"keydown\"===a&&229===c.keyCode&&(f=oe.compositionStart);f?(me&&\"ko\"!==c.locale&&(se||f!==oe.compositionStart?f===oe.compositionEnd&&se&&(e=ae()):(Yd=d,Zd=\"value\"in Yd?Yd.value:Yd.textContent,se=!0)),f=ge.getPooled(f,\nb,c,d),e?f.data=e:(e=re(c),null!==e&&(f.data=e)),Xd(f),e=f):e=null;(a=le?te(a,c):ue(a,c))?(b=he.getPooled(oe.beforeInput,b,c,d),b.data=a,Xd(b)):b=null;return null===e?b:null===b?e:[e,b]}},we={color:!0,date:!0,datetime:!0,\"datetime-local\":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function xe(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return\"input\"===b?!!we[a.type]:\"textarea\"===b?!0:!1}\nvar ye={change:{phasedRegistrationNames:{bubbled:\"onChange\",captured:\"onChangeCapture\"},dependencies:\"blur change click focus input keydown keyup selectionchange\".split(\" \")}};function ze(a,b,c){a=G.getPooled(ye.change,a,b,c);a.type=\"change\";Da(c);Xd(a);return a}var Ae=null,Be=null;function Ce(a){mc(a)}function De(a){var b=Pd(a);if(yb(b))return a}function Ee(a,b){if(\"change\"===a)return b}var Fe=!1;ya&&(Fe=oc(\"input\")&&(!document.documentMode||9<document.documentMode));\nfunction Ge(){Ae&&(Ae.detachEvent(\"onpropertychange\",He),Be=Ae=null)}function He(a){if(\"value\"===a.propertyName&&De(Be))if(a=ze(Be,a,nc(a)),Ja)mc(a);else{Ja=!0;try{Fa(Ce,a)}finally{Ja=!1,La()}}}function Ie(a,b,c){\"focus\"===a?(Ge(),Ae=b,Be=c,Ae.attachEvent(\"onpropertychange\",He)):\"blur\"===a&&Ge()}function Je(a){if(\"selectionchange\"===a||\"keyup\"===a||\"keydown\"===a)return De(Be)}function Ke(a,b){if(\"click\"===a)return De(b)}function Le(a,b){if(\"input\"===a||\"change\"===a)return De(b)}\nvar Me={eventTypes:ye,_isInputEventSupported:Fe,extractEvents:function(a,b,c,d){var e=b?Pd(b):window,f=e.nodeName&&e.nodeName.toLowerCase();if(\"select\"===f||\"input\"===f&&\"file\"===e.type)var g=Ee;else if(xe(e))if(Fe)g=Le;else{g=Je;var h=Ie}else(f=e.nodeName)&&\"input\"===f.toLowerCase()&&(\"checkbox\"===e.type||\"radio\"===e.type)&&(g=Ke);if(g&&(g=g(a,b)))return ze(g,c,d);h&&h(a,e,b);\"blur\"===a&&(a=e._wrapperState)&&a.controlled&&\"number\"===e.type&&Db(e,\"number\",e.value)}},Ne=G.extend({view:null,detail:null}),\nOe={Alt:\"altKey\",Control:\"ctrlKey\",Meta:\"metaKey\",Shift:\"shiftKey\"};function Pe(a){var b=this.nativeEvent;return b.getModifierState?b.getModifierState(a):(a=Oe[a])?!!b[a]:!1}function Qe(){return Pe}\nvar Re=0,Se=0,Te=!1,Ue=!1,Ve=Ne.extend({screenX:null,screenY:null,clientX:null,clientY:null,pageX:null,pageY:null,ctrlKey:null,shiftKey:null,altKey:null,metaKey:null,getModifierState:Qe,button:null,buttons:null,relatedTarget:function(a){return a.relatedTarget||(a.fromElement===a.srcElement?a.toElement:a.fromElement)},movementX:function(a){if(\"movementX\"in a)return a.movementX;var b=Re;Re=a.screenX;return Te?\"mousemove\"===a.type?a.screenX-b:0:(Te=!0,0)},movementY:function(a){if(\"movementY\"in a)return a.movementY;\nvar b=Se;Se=a.screenY;return Ue?\"mousemove\"===a.type?a.screenY-b:0:(Ue=!0,0)}}),We=Ve.extend({pointerId:null,width:null,height:null,pressure:null,tangentialPressure:null,tiltX:null,tiltY:null,twist:null,pointerType:null,isPrimary:null}),Xe={mouseEnter:{registrationName:\"onMouseEnter\",dependencies:[\"mouseout\",\"mouseover\"]},mouseLeave:{registrationName:\"onMouseLeave\",dependencies:[\"mouseout\",\"mouseover\"]},pointerEnter:{registrationName:\"onPointerEnter\",dependencies:[\"pointerout\",\"pointerover\"]},pointerLeave:{registrationName:\"onPointerLeave\",\ndependencies:[\"pointerout\",\"pointerover\"]}},Ye={eventTypes:Xe,extractEvents:function(a,b,c,d,e){var f=\"mouseover\"===a||\"pointerover\"===a,g=\"mouseout\"===a||\"pointerout\"===a;if(f&&0===(e&32)&&(c.relatedTarget||c.fromElement)||!g&&!f)return null;f=d.window===d?d:(f=d.ownerDocument)?f.defaultView||f.parentWindow:window;if(g){if(g=b,b=(b=c.relatedTarget||c.toElement)?tc(b):null,null!==b){var h=dc(b);if(b!==h||5!==b.tag&&6!==b.tag)b=null}}else g=null;if(g===b)return null;if(\"mouseout\"===a||\"mouseover\"===\na){var k=Ve;var l=Xe.mouseLeave;var m=Xe.mouseEnter;var p=\"mouse\"}else if(\"pointerout\"===a||\"pointerover\"===a)k=We,l=Xe.pointerLeave,m=Xe.pointerEnter,p=\"pointer\";a=null==g?f:Pd(g);f=null==b?f:Pd(b);l=k.getPooled(l,g,c,d);l.type=p+\"leave\";l.target=a;l.relatedTarget=f;c=k.getPooled(m,b,c,d);c.type=p+\"enter\";c.target=f;c.relatedTarget=a;d=g;p=b;if(d&&p)a:{k=d;m=p;g=0;for(a=k;a;a=Rd(a))g++;a=0;for(b=m;b;b=Rd(b))a++;for(;0<g-a;)k=Rd(k),g--;for(;0<a-g;)m=Rd(m),a--;for(;g--;){if(k===m||k===m.alternate)break a;\nk=Rd(k);m=Rd(m)}k=null}else k=null;m=k;for(k=[];d&&d!==m;){g=d.alternate;if(null!==g&&g===m)break;k.push(d);d=Rd(d)}for(d=[];p&&p!==m;){g=p.alternate;if(null!==g&&g===m)break;d.push(p);p=Rd(p)}for(p=0;p<k.length;p++)Vd(k[p],\"bubbled\",l);for(p=d.length;0<p--;)Vd(d[p],\"captured\",c);return 0===(e&64)?[l]:[l,c]}};function Ze(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var $e=\"function\"===typeof Object.is?Object.is:Ze,af=Object.prototype.hasOwnProperty;\nfunction bf(a,b){if($e(a,b))return!0;if(\"object\"!==typeof a||null===a||\"object\"!==typeof b||null===b)return!1;var c=Object.keys(a),d=Object.keys(b);if(c.length!==d.length)return!1;for(d=0;d<c.length;d++)if(!af.call(b,c[d])||!$e(a[c[d]],b[c[d]]))return!1;return!0}\nvar cf=ya&&\"documentMode\"in document&&11>=document.documentMode,df={select:{phasedRegistrationNames:{bubbled:\"onSelect\",captured:\"onSelectCapture\"},dependencies:\"blur contextmenu dragend focus keydown keyup mousedown mouseup selectionchange\".split(\" \")}},ef=null,ff=null,gf=null,hf=!1;\nfunction jf(a,b){var c=b.window===b?b.document:9===b.nodeType?b:b.ownerDocument;if(hf||null==ef||ef!==td(c))return null;c=ef;\"selectionStart\"in c&&yd(c)?c={start:c.selectionStart,end:c.selectionEnd}:(c=(c.ownerDocument&&c.ownerDocument.defaultView||window).getSelection(),c={anchorNode:c.anchorNode,anchorOffset:c.anchorOffset,focusNode:c.focusNode,focusOffset:c.focusOffset});return gf&&bf(gf,c)?null:(gf=c,a=G.getPooled(df.select,ff,a,b),a.type=\"select\",a.target=ef,Xd(a),a)}\nvar kf={eventTypes:df,extractEvents:function(a,b,c,d,e,f){e=f||(d.window===d?d.document:9===d.nodeType?d:d.ownerDocument);if(!(f=!e)){a:{e=cc(e);f=wa.onSelect;for(var g=0;g<f.length;g++)if(!e.has(f[g])){e=!1;break a}e=!0}f=!e}if(f)return null;e=b?Pd(b):window;switch(a){case \"focus\":if(xe(e)||\"true\"===e.contentEditable)ef=e,ff=b,gf=null;break;case \"blur\":gf=ff=ef=null;break;case \"mousedown\":hf=!0;break;case \"contextmenu\":case \"mouseup\":case \"dragend\":return hf=!1,jf(c,d);case \"selectionchange\":if(cf)break;\ncase \"keydown\":case \"keyup\":return jf(c,d)}return null}},lf=G.extend({animationName:null,elapsedTime:null,pseudoElement:null}),mf=G.extend({clipboardData:function(a){return\"clipboardData\"in a?a.clipboardData:window.clipboardData}}),nf=Ne.extend({relatedTarget:null});function of(a){var b=a.keyCode;\"charCode\"in a?(a=a.charCode,0===a&&13===b&&(a=13)):a=b;10===a&&(a=13);return 32<=a||13===a?a:0}\nvar pf={Esc:\"Escape\",Spacebar:\" \",Left:\"ArrowLeft\",Up:\"ArrowUp\",Right:\"ArrowRight\",Down:\"ArrowDown\",Del:\"Delete\",Win:\"OS\",Menu:\"ContextMenu\",Apps:\"ContextMenu\",Scroll:\"ScrollLock\",MozPrintableKey:\"Unidentified\"},qf={8:\"Backspace\",9:\"Tab\",12:\"Clear\",13:\"Enter\",16:\"Shift\",17:\"Control\",18:\"Alt\",19:\"Pause\",20:\"CapsLock\",27:\"Escape\",32:\" \",33:\"PageUp\",34:\"PageDown\",35:\"End\",36:\"Home\",37:\"ArrowLeft\",38:\"ArrowUp\",39:\"ArrowRight\",40:\"ArrowDown\",45:\"Insert\",46:\"Delete\",112:\"F1\",113:\"F2\",114:\"F3\",115:\"F4\",\n116:\"F5\",117:\"F6\",118:\"F7\",119:\"F8\",120:\"F9\",121:\"F10\",122:\"F11\",123:\"F12\",144:\"NumLock\",145:\"ScrollLock\",224:\"Meta\"},rf=Ne.extend({key:function(a){if(a.key){var b=pf[a.key]||a.key;if(\"Unidentified\"!==b)return b}return\"keypress\"===a.type?(a=of(a),13===a?\"Enter\":String.fromCharCode(a)):\"keydown\"===a.type||\"keyup\"===a.type?qf[a.keyCode]||\"Unidentified\":\"\"},location:null,ctrlKey:null,shiftKey:null,altKey:null,metaKey:null,repeat:null,locale:null,getModifierState:Qe,charCode:function(a){return\"keypress\"===\na.type?of(a):0},keyCode:function(a){return\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0},which:function(a){return\"keypress\"===a.type?of(a):\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0}}),sf=Ve.extend({dataTransfer:null}),tf=Ne.extend({touches:null,targetTouches:null,changedTouches:null,altKey:null,metaKey:null,ctrlKey:null,shiftKey:null,getModifierState:Qe}),uf=G.extend({propertyName:null,elapsedTime:null,pseudoElement:null}),vf=Ve.extend({deltaX:function(a){return\"deltaX\"in a?a.deltaX:\"wheelDeltaX\"in\na?-a.wheelDeltaX:0},deltaY:function(a){return\"deltaY\"in a?a.deltaY:\"wheelDeltaY\"in a?-a.wheelDeltaY:\"wheelDelta\"in a?-a.wheelDelta:0},deltaZ:null,deltaMode:null}),wf={eventTypes:Wc,extractEvents:function(a,b,c,d){var e=Yc.get(a);if(!e)return null;switch(a){case \"keypress\":if(0===of(c))return null;case \"keydown\":case \"keyup\":a=rf;break;case \"blur\":case \"focus\":a=nf;break;case \"click\":if(2===c.button)return null;case \"auxclick\":case \"dblclick\":case \"mousedown\":case \"mousemove\":case \"mouseup\":case \"mouseout\":case \"mouseover\":case \"contextmenu\":a=\nVe;break;case \"drag\":case \"dragend\":case \"dragenter\":case \"dragexit\":case \"dragleave\":case \"dragover\":case \"dragstart\":case \"drop\":a=sf;break;case \"touchcancel\":case \"touchend\":case \"touchmove\":case \"touchstart\":a=tf;break;case Xb:case Yb:case Zb:a=lf;break;case $b:a=uf;break;case \"scroll\":a=Ne;break;case \"wheel\":a=vf;break;case \"copy\":case \"cut\":case \"paste\":a=mf;break;case \"gotpointercapture\":case \"lostpointercapture\":case \"pointercancel\":case \"pointerdown\":case \"pointermove\":case \"pointerout\":case \"pointerover\":case \"pointerup\":a=\nWe;break;default:a=G}b=a.getPooled(e,b,c,d);Xd(b);return b}};if(pa)throw Error(u(101));pa=Array.prototype.slice.call(\"ResponderEventPlugin SimpleEventPlugin EnterLeaveEventPlugin ChangeEventPlugin SelectEventPlugin BeforeInputEventPlugin\".split(\" \"));ra();var xf=Nc;la=Qd;ma=xf;na=Pd;xa({SimpleEventPlugin:wf,EnterLeaveEventPlugin:Ye,ChangeEventPlugin:Me,SelectEventPlugin:kf,BeforeInputEventPlugin:ve});var yf=[],zf=-1;function H(a){0>zf||(a.current=yf[zf],yf[zf]=null,zf--)}\nfunction I(a,b){zf++;yf[zf]=a.current;a.current=b}var Af={},J={current:Af},K={current:!1},Bf=Af;function Cf(a,b){var c=a.type.contextTypes;if(!c)return Af;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}function L(a){a=a.childContextTypes;return null!==a&&void 0!==a}\nfunction Df(){H(K);H(J)}function Ef(a,b,c){if(J.current!==Af)throw Error(u(168));I(J,b);I(K,c)}function Ff(a,b,c){var d=a.stateNode;a=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in a))throw Error(u(108,pb(b)||\"Unknown\",e));return n({},c,{},d)}function Gf(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Af;Bf=J.current;I(J,a);I(K,K.current);return!0}\nfunction Hf(a,b,c){var d=a.stateNode;if(!d)throw Error(u(169));c?(a=Ff(a,b,Bf),d.__reactInternalMemoizedMergedChildContext=a,H(K),H(J),I(J,a)):H(K);I(K,c)}\nvar If=r.unstable_runWithPriority,Jf=r.unstable_scheduleCallback,Kf=r.unstable_cancelCallback,Lf=r.unstable_requestPaint,Mf=r.unstable_now,Nf=r.unstable_getCurrentPriorityLevel,Of=r.unstable_ImmediatePriority,Pf=r.unstable_UserBlockingPriority,Qf=r.unstable_NormalPriority,Rf=r.unstable_LowPriority,Sf=r.unstable_IdlePriority,Tf={},Uf=r.unstable_shouldYield,Vf=void 0!==Lf?Lf:function(){},Wf=null,Xf=null,Yf=!1,Zf=Mf(),$f=1E4>Zf?Mf:function(){return Mf()-Zf};\nfunction ag(){switch(Nf()){case Of:return 99;case Pf:return 98;case Qf:return 97;case Rf:return 96;case Sf:return 95;default:throw Error(u(332));}}function bg(a){switch(a){case 99:return Of;case 98:return Pf;case 97:return Qf;case 96:return Rf;case 95:return Sf;default:throw Error(u(332));}}function cg(a,b){a=bg(a);return If(a,b)}function dg(a,b,c){a=bg(a);return Jf(a,b,c)}function eg(a){null===Wf?(Wf=[a],Xf=Jf(Of,fg)):Wf.push(a);return Tf}function gg(){if(null!==Xf){var a=Xf;Xf=null;Kf(a)}fg()}\nfunction fg(){if(!Yf&&null!==Wf){Yf=!0;var a=0;try{var b=Wf;cg(99,function(){for(;a<b.length;a++){var c=b[a];do c=c(!0);while(null!==c)}});Wf=null}catch(c){throw null!==Wf&&(Wf=Wf.slice(a+1)),Jf(Of,gg),c;}finally{Yf=!1}}}function hg(a,b,c){c/=10;return 1073741821-(((1073741821-a+b/10)/c|0)+1)*c}function ig(a,b){if(a&&a.defaultProps){b=n({},b);a=a.defaultProps;for(var c in a)void 0===b[c]&&(b[c]=a[c])}return b}var jg={current:null},kg=null,lg=null,mg=null;function ng(){mg=lg=kg=null}\nfunction og(a){var b=jg.current;H(jg);a.type._context._currentValue=b}function pg(a,b){for(;null!==a;){var c=a.alternate;if(a.childExpirationTime<b)a.childExpirationTime=b,null!==c&&c.childExpirationTime<b&&(c.childExpirationTime=b);else if(null!==c&&c.childExpirationTime<b)c.childExpirationTime=b;else break;a=a.return}}function qg(a,b){kg=a;mg=lg=null;a=a.dependencies;null!==a&&null!==a.firstContext&&(a.expirationTime>=b&&(rg=!0),a.firstContext=null)}\nfunction sg(a,b){if(mg!==a&&!1!==b&&0!==b){if(\"number\"!==typeof b||1073741823===b)mg=a,b=1073741823;b={context:a,observedBits:b,next:null};if(null===lg){if(null===kg)throw Error(u(308));lg=b;kg.dependencies={expirationTime:0,firstContext:b,responders:null}}else lg=lg.next=b}return a._currentValue}var tg=!1;function ug(a){a.updateQueue={baseState:a.memoizedState,baseQueue:null,shared:{pending:null},effects:null}}\nfunction vg(a,b){a=a.updateQueue;b.updateQueue===a&&(b.updateQueue={baseState:a.baseState,baseQueue:a.baseQueue,shared:a.shared,effects:a.effects})}function wg(a,b){a={expirationTime:a,suspenseConfig:b,tag:0,payload:null,callback:null,next:null};return a.next=a}function xg(a,b){a=a.updateQueue;if(null!==a){a=a.shared;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}}\nfunction yg(a,b){var c=a.alternate;null!==c&&vg(c,a);a=a.updateQueue;c=a.baseQueue;null===c?(a.baseQueue=b.next=b,b.next=b):(b.next=c.next,c.next=b)}\nfunction zg(a,b,c,d){var e=a.updateQueue;tg=!1;var f=e.baseQueue,g=e.shared.pending;if(null!==g){if(null!==f){var h=f.next;f.next=g.next;g.next=h}f=g;e.shared.pending=null;h=a.alternate;null!==h&&(h=h.updateQueue,null!==h&&(h.baseQueue=g))}if(null!==f){h=f.next;var k=e.baseState,l=0,m=null,p=null,x=null;if(null!==h){var z=h;do{g=z.expirationTime;if(g<d){var ca={expirationTime:z.expirationTime,suspenseConfig:z.suspenseConfig,tag:z.tag,payload:z.payload,callback:z.callback,next:null};null===x?(p=x=\nca,m=k):x=x.next=ca;g>l&&(l=g)}else{null!==x&&(x=x.next={expirationTime:1073741823,suspenseConfig:z.suspenseConfig,tag:z.tag,payload:z.payload,callback:z.callback,next:null});Ag(g,z.suspenseConfig);a:{var D=a,t=z;g=b;ca=c;switch(t.tag){case 1:D=t.payload;if(\"function\"===typeof D){k=D.call(ca,k,g);break a}k=D;break a;case 3:D.effectTag=D.effectTag&-4097|64;case 0:D=t.payload;g=\"function\"===typeof D?D.call(ca,k,g):D;if(null===g||void 0===g)break a;k=n({},k,g);break a;case 2:tg=!0}}null!==z.callback&&\n(a.effectTag|=32,g=e.effects,null===g?e.effects=[z]:g.push(z))}z=z.next;if(null===z||z===h)if(g=e.shared.pending,null===g)break;else z=f.next=g.next,g.next=h,e.baseQueue=f=g,e.shared.pending=null}while(1)}null===x?m=k:x.next=p;e.baseState=m;e.baseQueue=x;Bg(l);a.expirationTime=l;a.memoizedState=k}}\nfunction Cg(a,b,c){a=b.effects;b.effects=null;if(null!==a)for(b=0;b<a.length;b++){var d=a[b],e=d.callback;if(null!==e){d.callback=null;d=e;e=c;if(\"function\"!==typeof d)throw Error(u(191,d));d.call(e)}}}var Dg=Wa.ReactCurrentBatchConfig,Eg=(new aa.Component).refs;function Fg(a,b,c,d){b=a.memoizedState;c=c(d,b);c=null===c||void 0===c?b:n({},b,c);a.memoizedState=c;0===a.expirationTime&&(a.updateQueue.baseState=c)}\nvar Jg={isMounted:function(a){return(a=a._reactInternalFiber)?dc(a)===a:!1},enqueueSetState:function(a,b,c){a=a._reactInternalFiber;var d=Gg(),e=Dg.suspense;d=Hg(d,a,e);e=wg(d,e);e.payload=b;void 0!==c&&null!==c&&(e.callback=c);xg(a,e);Ig(a,d)},enqueueReplaceState:function(a,b,c){a=a._reactInternalFiber;var d=Gg(),e=Dg.suspense;d=Hg(d,a,e);e=wg(d,e);e.tag=1;e.payload=b;void 0!==c&&null!==c&&(e.callback=c);xg(a,e);Ig(a,d)},enqueueForceUpdate:function(a,b){a=a._reactInternalFiber;var c=Gg(),d=Dg.suspense;\nc=Hg(c,a,d);d=wg(c,d);d.tag=2;void 0!==b&&null!==b&&(d.callback=b);xg(a,d);Ig(a,c)}};function Kg(a,b,c,d,e,f,g){a=a.stateNode;return\"function\"===typeof a.shouldComponentUpdate?a.shouldComponentUpdate(d,f,g):b.prototype&&b.prototype.isPureReactComponent?!bf(c,d)||!bf(e,f):!0}\nfunction Lg(a,b,c){var d=!1,e=Af;var f=b.contextType;\"object\"===typeof f&&null!==f?f=sg(f):(e=L(b)?Bf:J.current,d=b.contextTypes,f=(d=null!==d&&void 0!==d)?Cf(a,e):Af);b=new b(c,f);a.memoizedState=null!==b.state&&void 0!==b.state?b.state:null;b.updater=Jg;a.stateNode=b;b._reactInternalFiber=a;d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=e,a.__reactInternalMemoizedMaskedChildContext=f);return b}\nfunction Mg(a,b,c,d){a=b.state;\"function\"===typeof b.componentWillReceiveProps&&b.componentWillReceiveProps(c,d);\"function\"===typeof b.UNSAFE_componentWillReceiveProps&&b.UNSAFE_componentWillReceiveProps(c,d);b.state!==a&&Jg.enqueueReplaceState(b,b.state,null)}\nfunction Ng(a,b,c,d){var e=a.stateNode;e.props=c;e.state=a.memoizedState;e.refs=Eg;ug(a);var f=b.contextType;\"object\"===typeof f&&null!==f?e.context=sg(f):(f=L(b)?Bf:J.current,e.context=Cf(a,f));zg(a,c,e,d);e.state=a.memoizedState;f=b.getDerivedStateFromProps;\"function\"===typeof f&&(Fg(a,b,f,c),e.state=a.memoizedState);\"function\"===typeof b.getDerivedStateFromProps||\"function\"===typeof e.getSnapshotBeforeUpdate||\"function\"!==typeof e.UNSAFE_componentWillMount&&\"function\"!==typeof e.componentWillMount||\n(b=e.state,\"function\"===typeof e.componentWillMount&&e.componentWillMount(),\"function\"===typeof e.UNSAFE_componentWillMount&&e.UNSAFE_componentWillMount(),b!==e.state&&Jg.enqueueReplaceState(e,e.state,null),zg(a,c,e,d),e.state=a.memoizedState);\"function\"===typeof e.componentDidMount&&(a.effectTag|=4)}var Og=Array.isArray;\nfunction Pg(a,b,c){a=c.ref;if(null!==a&&\"function\"!==typeof a&&\"object\"!==typeof a){if(c._owner){c=c._owner;if(c){if(1!==c.tag)throw Error(u(309));var d=c.stateNode}if(!d)throw Error(u(147,a));var e=\"\"+a;if(null!==b&&null!==b.ref&&\"function\"===typeof b.ref&&b.ref._stringRef===e)return b.ref;b=function(a){var b=d.refs;b===Eg&&(b=d.refs={});null===a?delete b[e]:b[e]=a};b._stringRef=e;return b}if(\"string\"!==typeof a)throw Error(u(284));if(!c._owner)throw Error(u(290,a));}return a}\nfunction Qg(a,b){if(\"textarea\"!==a.type)throw Error(u(31,\"[object Object]\"===Object.prototype.toString.call(b)?\"object with keys {\"+Object.keys(b).join(\", \")+\"}\":b,\"\"));}\nfunction Rg(a){function b(b,c){if(a){var d=b.lastEffect;null!==d?(d.nextEffect=c,b.lastEffect=c):b.firstEffect=b.lastEffect=c;c.nextEffect=null;c.effectTag=8}}function c(c,d){if(!a)return null;for(;null!==d;)b(c,d),d=d.sibling;return null}function d(a,b){for(a=new Map;null!==b;)null!==b.key?a.set(b.key,b):a.set(b.index,b),b=b.sibling;return a}function e(a,b){a=Sg(a,b);a.index=0;a.sibling=null;return a}function f(b,c,d){b.index=d;if(!a)return c;d=b.alternate;if(null!==d)return d=d.index,d<c?(b.effectTag=\n2,c):d;b.effectTag=2;return c}function g(b){a&&null===b.alternate&&(b.effectTag=2);return b}function h(a,b,c,d){if(null===b||6!==b.tag)return b=Tg(c,a.mode,d),b.return=a,b;b=e(b,c);b.return=a;return b}function k(a,b,c,d){if(null!==b&&b.elementType===c.type)return d=e(b,c.props),d.ref=Pg(a,b,c),d.return=a,d;d=Ug(c.type,c.key,c.props,null,a.mode,d);d.ref=Pg(a,b,c);d.return=a;return d}function l(a,b,c,d){if(null===b||4!==b.tag||b.stateNode.containerInfo!==c.containerInfo||b.stateNode.implementation!==\nc.implementation)return b=Vg(c,a.mode,d),b.return=a,b;b=e(b,c.children||[]);b.return=a;return b}function m(a,b,c,d,f){if(null===b||7!==b.tag)return b=Wg(c,a.mode,d,f),b.return=a,b;b=e(b,c);b.return=a;return b}function p(a,b,c){if(\"string\"===typeof b||\"number\"===typeof b)return b=Tg(\"\"+b,a.mode,c),b.return=a,b;if(\"object\"===typeof b&&null!==b){switch(b.$$typeof){case Za:return c=Ug(b.type,b.key,b.props,null,a.mode,c),c.ref=Pg(a,null,b),c.return=a,c;case $a:return b=Vg(b,a.mode,c),b.return=a,b}if(Og(b)||\nnb(b))return b=Wg(b,a.mode,c,null),b.return=a,b;Qg(a,b)}return null}function x(a,b,c,d){var e=null!==b?b.key:null;if(\"string\"===typeof c||\"number\"===typeof c)return null!==e?null:h(a,b,\"\"+c,d);if(\"object\"===typeof c&&null!==c){switch(c.$$typeof){case Za:return c.key===e?c.type===ab?m(a,b,c.props.children,d,e):k(a,b,c,d):null;case $a:return c.key===e?l(a,b,c,d):null}if(Og(c)||nb(c))return null!==e?null:m(a,b,c,d,null);Qg(a,c)}return null}function z(a,b,c,d,e){if(\"string\"===typeof d||\"number\"===typeof d)return a=\na.get(c)||null,h(b,a,\"\"+d,e);if(\"object\"===typeof d&&null!==d){switch(d.$$typeof){case Za:return a=a.get(null===d.key?c:d.key)||null,d.type===ab?m(b,a,d.props.children,e,d.key):k(b,a,d,e);case $a:return a=a.get(null===d.key?c:d.key)||null,l(b,a,d,e)}if(Og(d)||nb(d))return a=a.get(c)||null,m(b,a,d,e,null);Qg(b,d)}return null}function ca(e,g,h,k){for(var l=null,t=null,m=g,y=g=0,A=null;null!==m&&y<h.length;y++){m.index>y?(A=m,m=null):A=m.sibling;var q=x(e,m,h[y],k);if(null===q){null===m&&(m=A);break}a&&\nm&&null===q.alternate&&b(e,m);g=f(q,g,y);null===t?l=q:t.sibling=q;t=q;m=A}if(y===h.length)return c(e,m),l;if(null===m){for(;y<h.length;y++)m=p(e,h[y],k),null!==m&&(g=f(m,g,y),null===t?l=m:t.sibling=m,t=m);return l}for(m=d(e,m);y<h.length;y++)A=z(m,e,y,h[y],k),null!==A&&(a&&null!==A.alternate&&m.delete(null===A.key?y:A.key),g=f(A,g,y),null===t?l=A:t.sibling=A,t=A);a&&m.forEach(function(a){return b(e,a)});return l}function D(e,g,h,l){var k=nb(h);if(\"function\"!==typeof k)throw Error(u(150));h=k.call(h);\nif(null==h)throw Error(u(151));for(var m=k=null,t=g,y=g=0,A=null,q=h.next();null!==t&&!q.done;y++,q=h.next()){t.index>y?(A=t,t=null):A=t.sibling;var D=x(e,t,q.value,l);if(null===D){null===t&&(t=A);break}a&&t&&null===D.alternate&&b(e,t);g=f(D,g,y);null===m?k=D:m.sibling=D;m=D;t=A}if(q.done)return c(e,t),k;if(null===t){for(;!q.done;y++,q=h.next())q=p(e,q.value,l),null!==q&&(g=f(q,g,y),null===m?k=q:m.sibling=q,m=q);return k}for(t=d(e,t);!q.done;y++,q=h.next())q=z(t,e,y,q.value,l),null!==q&&(a&&null!==\nq.alternate&&t.delete(null===q.key?y:q.key),g=f(q,g,y),null===m?k=q:m.sibling=q,m=q);a&&t.forEach(function(a){return b(e,a)});return k}return function(a,d,f,h){var k=\"object\"===typeof f&&null!==f&&f.type===ab&&null===f.key;k&&(f=f.props.children);var l=\"object\"===typeof f&&null!==f;if(l)switch(f.$$typeof){case Za:a:{l=f.key;for(k=d;null!==k;){if(k.key===l){switch(k.tag){case 7:if(f.type===ab){c(a,k.sibling);d=e(k,f.props.children);d.return=a;a=d;break a}break;default:if(k.elementType===f.type){c(a,\nk.sibling);d=e(k,f.props);d.ref=Pg(a,k,f);d.return=a;a=d;break a}}c(a,k);break}else b(a,k);k=k.sibling}f.type===ab?(d=Wg(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Ug(f.type,f.key,f.props,null,a.mode,h),h.ref=Pg(a,d,f),h.return=a,a=h)}return g(a);case $a:a:{for(k=f.key;null!==d;){if(d.key===k)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=\nd.sibling}d=Vg(f,a.mode,h);d.return=a;a=d}return g(a)}if(\"string\"===typeof f||\"number\"===typeof f)return f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):(c(a,d),d=Tg(f,a.mode,h),d.return=a,a=d),g(a);if(Og(f))return ca(a,d,f,h);if(nb(f))return D(a,d,f,h);l&&Qg(a,f);if(\"undefined\"===typeof f&&!k)switch(a.tag){case 1:case 0:throw a=a.type,Error(u(152,a.displayName||a.name||\"Component\"));}return c(a,d)}}var Xg=Rg(!0),Yg=Rg(!1),Zg={},$g={current:Zg},ah={current:Zg},bh={current:Zg};\nfunction ch(a){if(a===Zg)throw Error(u(174));return a}function dh(a,b){I(bh,b);I(ah,a);I($g,Zg);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:Ob(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=Ob(b,a)}H($g);I($g,b)}function eh(){H($g);H(ah);H(bh)}function fh(a){ch(bh.current);var b=ch($g.current);var c=Ob(b,a.type);b!==c&&(I(ah,a),I($g,c))}function gh(a){ah.current===a&&(H($g),H(ah))}var M={current:0};\nfunction hh(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||c.data===Bd||c.data===Cd))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.effectTag&64))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}function ih(a,b){return{responder:a,props:b}}\nvar jh=Wa.ReactCurrentDispatcher,kh=Wa.ReactCurrentBatchConfig,lh=0,N=null,O=null,P=null,mh=!1;function Q(){throw Error(u(321));}function nh(a,b){if(null===b)return!1;for(var c=0;c<b.length&&c<a.length;c++)if(!$e(a[c],b[c]))return!1;return!0}\nfunction oh(a,b,c,d,e,f){lh=f;N=b;b.memoizedState=null;b.updateQueue=null;b.expirationTime=0;jh.current=null===a||null===a.memoizedState?ph:qh;a=c(d,e);if(b.expirationTime===lh){f=0;do{b.expirationTime=0;if(!(25>f))throw Error(u(301));f+=1;P=O=null;b.updateQueue=null;jh.current=rh;a=c(d,e)}while(b.expirationTime===lh)}jh.current=sh;b=null!==O&&null!==O.next;lh=0;P=O=N=null;mh=!1;if(b)throw Error(u(300));return a}\nfunction th(){var a={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};null===P?N.memoizedState=P=a:P=P.next=a;return P}function uh(){if(null===O){var a=N.alternate;a=null!==a?a.memoizedState:null}else a=O.next;var b=null===P?N.memoizedState:P.next;if(null!==b)P=b,O=a;else{if(null===a)throw Error(u(310));O=a;a={memoizedState:O.memoizedState,baseState:O.baseState,baseQueue:O.baseQueue,queue:O.queue,next:null};null===P?N.memoizedState=P=a:P=P.next=a}return P}\nfunction vh(a,b){return\"function\"===typeof b?b(a):b}\nfunction wh(a){var b=uh(),c=b.queue;if(null===c)throw Error(u(311));c.lastRenderedReducer=a;var d=O,e=d.baseQueue,f=c.pending;if(null!==f){if(null!==e){var g=e.next;e.next=f.next;f.next=g}d.baseQueue=e=f;c.pending=null}if(null!==e){e=e.next;d=d.baseState;var h=g=f=null,k=e;do{var l=k.expirationTime;if(l<lh){var m={expirationTime:k.expirationTime,suspenseConfig:k.suspenseConfig,action:k.action,eagerReducer:k.eagerReducer,eagerState:k.eagerState,next:null};null===h?(g=h=m,f=d):h=h.next=m;l>N.expirationTime&&\n(N.expirationTime=l,Bg(l))}else null!==h&&(h=h.next={expirationTime:1073741823,suspenseConfig:k.suspenseConfig,action:k.action,eagerReducer:k.eagerReducer,eagerState:k.eagerState,next:null}),Ag(l,k.suspenseConfig),d=k.eagerReducer===a?k.eagerState:a(d,k.action);k=k.next}while(null!==k&&k!==e);null===h?f=d:h.next=g;$e(d,b.memoizedState)||(rg=!0);b.memoizedState=d;b.baseState=f;b.baseQueue=h;c.lastRenderedState=d}return[b.memoizedState,c.dispatch]}\nfunction xh(a){var b=uh(),c=b.queue;if(null===c)throw Error(u(311));c.lastRenderedReducer=a;var d=c.dispatch,e=c.pending,f=b.memoizedState;if(null!==e){c.pending=null;var g=e=e.next;do f=a(f,g.action),g=g.next;while(g!==e);$e(f,b.memoizedState)||(rg=!0);b.memoizedState=f;null===b.baseQueue&&(b.baseState=f);c.lastRenderedState=f}return[f,d]}\nfunction yh(a){var b=th();\"function\"===typeof a&&(a=a());b.memoizedState=b.baseState=a;a=b.queue={pending:null,dispatch:null,lastRenderedReducer:vh,lastRenderedState:a};a=a.dispatch=zh.bind(null,N,a);return[b.memoizedState,a]}function Ah(a,b,c,d){a={tag:a,create:b,destroy:c,deps:d,next:null};b=N.updateQueue;null===b?(b={lastEffect:null},N.updateQueue=b,b.lastEffect=a.next=a):(c=b.lastEffect,null===c?b.lastEffect=a.next=a:(d=c.next,c.next=a,a.next=d,b.lastEffect=a));return a}\nfunction Bh(){return uh().memoizedState}function Ch(a,b,c,d){var e=th();N.effectTag|=a;e.memoizedState=Ah(1|b,c,void 0,void 0===d?null:d)}function Dh(a,b,c,d){var e=uh();d=void 0===d?null:d;var f=void 0;if(null!==O){var g=O.memoizedState;f=g.destroy;if(null!==d&&nh(d,g.deps)){Ah(b,c,f,d);return}}N.effectTag|=a;e.memoizedState=Ah(1|b,c,f,d)}function Eh(a,b){return Ch(516,4,a,b)}function Fh(a,b){return Dh(516,4,a,b)}function Gh(a,b){return Dh(4,2,a,b)}\nfunction Hh(a,b){if(\"function\"===typeof b)return a=a(),b(a),function(){b(null)};if(null!==b&&void 0!==b)return a=a(),b.current=a,function(){b.current=null}}function Ih(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return Dh(4,2,Hh.bind(null,b,a),c)}function Jh(){}function Kh(a,b){th().memoizedState=[a,void 0===b?null:b];return a}function Lh(a,b){var c=uh();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&nh(b,d[1]))return d[0];c.memoizedState=[a,b];return a}\nfunction Mh(a,b){var c=uh();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&nh(b,d[1]))return d[0];a=a();c.memoizedState=[a,b];return a}function Nh(a,b,c){var d=ag();cg(98>d?98:d,function(){a(!0)});cg(97<d?97:d,function(){var d=kh.suspense;kh.suspense=void 0===b?null:b;try{a(!1),c()}finally{kh.suspense=d}})}\nfunction zh(a,b,c){var d=Gg(),e=Dg.suspense;d=Hg(d,a,e);e={expirationTime:d,suspenseConfig:e,action:c,eagerReducer:null,eagerState:null,next:null};var f=b.pending;null===f?e.next=e:(e.next=f.next,f.next=e);b.pending=e;f=a.alternate;if(a===N||null!==f&&f===N)mh=!0,e.expirationTime=lh,N.expirationTime=lh;else{if(0===a.expirationTime&&(null===f||0===f.expirationTime)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.eagerReducer=f;e.eagerState=h;if($e(h,g))return}catch(k){}finally{}Ig(a,\nd)}}\nvar sh={readContext:sg,useCallback:Q,useContext:Q,useEffect:Q,useImperativeHandle:Q,useLayoutEffect:Q,useMemo:Q,useReducer:Q,useRef:Q,useState:Q,useDebugValue:Q,useResponder:Q,useDeferredValue:Q,useTransition:Q},ph={readContext:sg,useCallback:Kh,useContext:sg,useEffect:Eh,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return Ch(4,2,Hh.bind(null,b,a),c)},useLayoutEffect:function(a,b){return Ch(4,2,a,b)},useMemo:function(a,b){var c=th();b=void 0===b?null:b;a=a();c.memoizedState=[a,\nb];return a},useReducer:function(a,b,c){var d=th();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a=d.queue={pending:null,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};a=a.dispatch=zh.bind(null,N,a);return[d.memoizedState,a]},useRef:function(a){var b=th();a={current:a};return b.memoizedState=a},useState:yh,useDebugValue:Jh,useResponder:ih,useDeferredValue:function(a,b){var c=yh(a),d=c[0],e=c[1];Eh(function(){var c=kh.suspense;kh.suspense=void 0===b?null:b;try{e(a)}finally{kh.suspense=\nc}},[a,b]);return d},useTransition:function(a){var b=yh(!1),c=b[0];b=b[1];return[Kh(Nh.bind(null,b,a),[b,a]),c]}},qh={readContext:sg,useCallback:Lh,useContext:sg,useEffect:Fh,useImperativeHandle:Ih,useLayoutEffect:Gh,useMemo:Mh,useReducer:wh,useRef:Bh,useState:function(){return wh(vh)},useDebugValue:Jh,useResponder:ih,useDeferredValue:function(a,b){var c=wh(vh),d=c[0],e=c[1];Fh(function(){var c=kh.suspense;kh.suspense=void 0===b?null:b;try{e(a)}finally{kh.suspense=c}},[a,b]);return d},useTransition:function(a){var b=\nwh(vh),c=b[0];b=b[1];return[Lh(Nh.bind(null,b,a),[b,a]),c]}},rh={readContext:sg,useCallback:Lh,useContext:sg,useEffect:Fh,useImperativeHandle:Ih,useLayoutEffect:Gh,useMemo:Mh,useReducer:xh,useRef:Bh,useState:function(){return xh(vh)},useDebugValue:Jh,useResponder:ih,useDeferredValue:function(a,b){var c=xh(vh),d=c[0],e=c[1];Fh(function(){var c=kh.suspense;kh.suspense=void 0===b?null:b;try{e(a)}finally{kh.suspense=c}},[a,b]);return d},useTransition:function(a){var b=xh(vh),c=b[0];b=b[1];return[Lh(Nh.bind(null,\nb,a),[b,a]),c]}},Oh=null,Ph=null,Qh=!1;function Rh(a,b){var c=Sh(5,null,null,0);c.elementType=\"DELETED\";c.type=\"DELETED\";c.stateNode=b;c.return=a;c.effectTag=8;null!==a.lastEffect?(a.lastEffect.nextEffect=c,a.lastEffect=c):a.firstEffect=a.lastEffect=c}\nfunction Th(a,b){switch(a.tag){case 5:var c=a.type;b=1!==b.nodeType||c.toLowerCase()!==b.nodeName.toLowerCase()?null:b;return null!==b?(a.stateNode=b,!0):!1;case 6:return b=\"\"===a.pendingProps||3!==b.nodeType?null:b,null!==b?(a.stateNode=b,!0):!1;case 13:return!1;default:return!1}}\nfunction Uh(a){if(Qh){var b=Ph;if(b){var c=b;if(!Th(a,b)){b=Jd(c.nextSibling);if(!b||!Th(a,b)){a.effectTag=a.effectTag&-1025|2;Qh=!1;Oh=a;return}Rh(Oh,c)}Oh=a;Ph=Jd(b.firstChild)}else a.effectTag=a.effectTag&-1025|2,Qh=!1,Oh=a}}function Vh(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag&&13!==a.tag;)a=a.return;Oh=a}\nfunction Wh(a){if(a!==Oh)return!1;if(!Qh)return Vh(a),Qh=!0,!1;var b=a.type;if(5!==a.tag||\"head\"!==b&&\"body\"!==b&&!Gd(b,a.memoizedProps))for(b=Ph;b;)Rh(a,b),b=Jd(b.nextSibling);Vh(a);if(13===a.tag){a=a.memoizedState;a=null!==a?a.dehydrated:null;if(!a)throw Error(u(317));a:{a=a.nextSibling;for(b=0;a;){if(8===a.nodeType){var c=a.data;if(c===Ad){if(0===b){Ph=Jd(a.nextSibling);break a}b--}else c!==zd&&c!==Cd&&c!==Bd||b++}a=a.nextSibling}Ph=null}}else Ph=Oh?Jd(a.stateNode.nextSibling):null;return!0}\nfunction Xh(){Ph=Oh=null;Qh=!1}var Yh=Wa.ReactCurrentOwner,rg=!1;function R(a,b,c,d){b.child=null===a?Yg(b,null,c,d):Xg(b,a.child,c,d)}function Zh(a,b,c,d,e){c=c.render;var f=b.ref;qg(b,e);d=oh(a,b,c,d,f,e);if(null!==a&&!rg)return b.updateQueue=a.updateQueue,b.effectTag&=-517,a.expirationTime<=e&&(a.expirationTime=0),$h(a,b,e);b.effectTag|=1;R(a,b,d,e);return b.child}\nfunction ai(a,b,c,d,e,f){if(null===a){var g=c.type;if(\"function\"===typeof g&&!bi(g)&&void 0===g.defaultProps&&null===c.compare&&void 0===c.defaultProps)return b.tag=15,b.type=g,ci(a,b,g,d,e,f);a=Ug(c.type,null,d,null,b.mode,f);a.ref=b.ref;a.return=b;return b.child=a}g=a.child;if(e<f&&(e=g.memoizedProps,c=c.compare,c=null!==c?c:bf,c(e,d)&&a.ref===b.ref))return $h(a,b,f);b.effectTag|=1;a=Sg(g,d);a.ref=b.ref;a.return=b;return b.child=a}\nfunction ci(a,b,c,d,e,f){return null!==a&&bf(a.memoizedProps,d)&&a.ref===b.ref&&(rg=!1,e<f)?(b.expirationTime=a.expirationTime,$h(a,b,f)):di(a,b,c,d,f)}function ei(a,b){var c=b.ref;if(null===a&&null!==c||null!==a&&a.ref!==c)b.effectTag|=128}function di(a,b,c,d,e){var f=L(c)?Bf:J.current;f=Cf(b,f);qg(b,e);c=oh(a,b,c,d,f,e);if(null!==a&&!rg)return b.updateQueue=a.updateQueue,b.effectTag&=-517,a.expirationTime<=e&&(a.expirationTime=0),$h(a,b,e);b.effectTag|=1;R(a,b,c,e);return b.child}\nfunction fi(a,b,c,d,e){if(L(c)){var f=!0;Gf(b)}else f=!1;qg(b,e);if(null===b.stateNode)null!==a&&(a.alternate=null,b.alternate=null,b.effectTag|=2),Lg(b,c,d),Ng(b,c,d,e),d=!0;else if(null===a){var g=b.stateNode,h=b.memoizedProps;g.props=h;var k=g.context,l=c.contextType;\"object\"===typeof l&&null!==l?l=sg(l):(l=L(c)?Bf:J.current,l=Cf(b,l));var m=c.getDerivedStateFromProps,p=\"function\"===typeof m||\"function\"===typeof g.getSnapshotBeforeUpdate;p||\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\n\"function\"!==typeof g.componentWillReceiveProps||(h!==d||k!==l)&&Mg(b,g,d,l);tg=!1;var x=b.memoizedState;g.state=x;zg(b,d,g,e);k=b.memoizedState;h!==d||x!==k||K.current||tg?(\"function\"===typeof m&&(Fg(b,c,m,d),k=b.memoizedState),(h=tg||Kg(b,c,h,d,x,k,l))?(p||\"function\"!==typeof g.UNSAFE_componentWillMount&&\"function\"!==typeof g.componentWillMount||(\"function\"===typeof g.componentWillMount&&g.componentWillMount(),\"function\"===typeof g.UNSAFE_componentWillMount&&g.UNSAFE_componentWillMount()),\"function\"===\ntypeof g.componentDidMount&&(b.effectTag|=4)):(\"function\"===typeof g.componentDidMount&&(b.effectTag|=4),b.memoizedProps=d,b.memoizedState=k),g.props=d,g.state=k,g.context=l,d=h):(\"function\"===typeof g.componentDidMount&&(b.effectTag|=4),d=!1)}else g=b.stateNode,vg(a,b),h=b.memoizedProps,g.props=b.type===b.elementType?h:ig(b.type,h),k=g.context,l=c.contextType,\"object\"===typeof l&&null!==l?l=sg(l):(l=L(c)?Bf:J.current,l=Cf(b,l)),m=c.getDerivedStateFromProps,(p=\"function\"===typeof m||\"function\"===\ntypeof g.getSnapshotBeforeUpdate)||\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\"function\"!==typeof g.componentWillReceiveProps||(h!==d||k!==l)&&Mg(b,g,d,l),tg=!1,k=b.memoizedState,g.state=k,zg(b,d,g,e),x=b.memoizedState,h!==d||k!==x||K.current||tg?(\"function\"===typeof m&&(Fg(b,c,m,d),x=b.memoizedState),(m=tg||Kg(b,c,h,d,k,x,l))?(p||\"function\"!==typeof g.UNSAFE_componentWillUpdate&&\"function\"!==typeof g.componentWillUpdate||(\"function\"===typeof g.componentWillUpdate&&g.componentWillUpdate(d,\nx,l),\"function\"===typeof g.UNSAFE_componentWillUpdate&&g.UNSAFE_componentWillUpdate(d,x,l)),\"function\"===typeof g.componentDidUpdate&&(b.effectTag|=4),\"function\"===typeof g.getSnapshotBeforeUpdate&&(b.effectTag|=256)):(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&k===a.memoizedState||(b.effectTag|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&k===a.memoizedState||(b.effectTag|=256),b.memoizedProps=d,b.memoizedState=x),g.props=d,g.state=x,g.context=l,d=m):\n(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&k===a.memoizedState||(b.effectTag|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&k===a.memoizedState||(b.effectTag|=256),d=!1);return gi(a,b,c,d,f,e)}\nfunction gi(a,b,c,d,e,f){ei(a,b);var g=0!==(b.effectTag&64);if(!d&&!g)return e&&Hf(b,c,!1),$h(a,b,f);d=b.stateNode;Yh.current=b;var h=g&&\"function\"!==typeof c.getDerivedStateFromError?null:d.render();b.effectTag|=1;null!==a&&g?(b.child=Xg(b,a.child,null,f),b.child=Xg(b,null,h,f)):R(a,b,h,f);b.memoizedState=d.state;e&&Hf(b,c,!0);return b.child}function hi(a){var b=a.stateNode;b.pendingContext?Ef(a,b.pendingContext,b.pendingContext!==b.context):b.context&&Ef(a,b.context,!1);dh(a,b.containerInfo)}\nvar ii={dehydrated:null,retryTime:0};\nfunction ji(a,b,c){var d=b.mode,e=b.pendingProps,f=M.current,g=!1,h;(h=0!==(b.effectTag&64))||(h=0!==(f&2)&&(null===a||null!==a.memoizedState));h?(g=!0,b.effectTag&=-65):null!==a&&null===a.memoizedState||void 0===e.fallback||!0===e.unstable_avoidThisFallback||(f|=1);I(M,f&1);if(null===a){void 0!==e.fallback&&Uh(b);if(g){g=e.fallback;e=Wg(null,d,0,null);e.return=b;if(0===(b.mode&2))for(a=null!==b.memoizedState?b.child.child:b.child,e.child=a;null!==a;)a.return=e,a=a.sibling;c=Wg(g,d,c,null);c.return=\nb;e.sibling=c;b.memoizedState=ii;b.child=e;return c}d=e.children;b.memoizedState=null;return b.child=Yg(b,null,d,c)}if(null!==a.memoizedState){a=a.child;d=a.sibling;if(g){e=e.fallback;c=Sg(a,a.pendingProps);c.return=b;if(0===(b.mode&2)&&(g=null!==b.memoizedState?b.child.child:b.child,g!==a.child))for(c.child=g;null!==g;)g.return=c,g=g.sibling;d=Sg(d,e);d.return=b;c.sibling=d;c.childExpirationTime=0;b.memoizedState=ii;b.child=c;return d}c=Xg(b,a.child,e.children,c);b.memoizedState=null;return b.child=\nc}a=a.child;if(g){g=e.fallback;e=Wg(null,d,0,null);e.return=b;e.child=a;null!==a&&(a.return=e);if(0===(b.mode&2))for(a=null!==b.memoizedState?b.child.child:b.child,e.child=a;null!==a;)a.return=e,a=a.sibling;c=Wg(g,d,c,null);c.return=b;e.sibling=c;c.effectTag|=2;e.childExpirationTime=0;b.memoizedState=ii;b.child=e;return c}b.memoizedState=null;return b.child=Xg(b,a,e.children,c)}\nfunction ki(a,b){a.expirationTime<b&&(a.expirationTime=b);var c=a.alternate;null!==c&&c.expirationTime<b&&(c.expirationTime=b);pg(a.return,b)}function li(a,b,c,d,e,f){var g=a.memoizedState;null===g?a.memoizedState={isBackwards:b,rendering:null,renderingStartTime:0,last:d,tail:c,tailExpiration:0,tailMode:e,lastEffect:f}:(g.isBackwards=b,g.rendering=null,g.renderingStartTime=0,g.last=d,g.tail=c,g.tailExpiration=0,g.tailMode=e,g.lastEffect=f)}\nfunction mi(a,b,c){var d=b.pendingProps,e=d.revealOrder,f=d.tail;R(a,b,d.children,c);d=M.current;if(0!==(d&2))d=d&1|2,b.effectTag|=64;else{if(null!==a&&0!==(a.effectTag&64))a:for(a=b.child;null!==a;){if(13===a.tag)null!==a.memoizedState&&ki(a,c);else if(19===a.tag)ki(a,c);else if(null!==a.child){a.child.return=a;a=a.child;continue}if(a===b)break a;for(;null===a.sibling;){if(null===a.return||a.return===b)break a;a=a.return}a.sibling.return=a.return;a=a.sibling}d&=1}I(M,d);if(0===(b.mode&2))b.memoizedState=\nnull;else switch(e){case \"forwards\":c=b.child;for(e=null;null!==c;)a=c.alternate,null!==a&&null===hh(a)&&(e=c),c=c.sibling;c=e;null===c?(e=b.child,b.child=null):(e=c.sibling,c.sibling=null);li(b,!1,e,c,f,b.lastEffect);break;case \"backwards\":c=null;e=b.child;for(b.child=null;null!==e;){a=e.alternate;if(null!==a&&null===hh(a)){b.child=e;break}a=e.sibling;e.sibling=c;c=e;e=a}li(b,!0,c,null,f,b.lastEffect);break;case \"together\":li(b,!1,null,null,void 0,b.lastEffect);break;default:b.memoizedState=null}return b.child}\nfunction $h(a,b,c){null!==a&&(b.dependencies=a.dependencies);var d=b.expirationTime;0!==d&&Bg(d);if(b.childExpirationTime<c)return null;if(null!==a&&b.child!==a.child)throw Error(u(153));if(null!==b.child){a=b.child;c=Sg(a,a.pendingProps);b.child=c;for(c.return=b;null!==a.sibling;)a=a.sibling,c=c.sibling=Sg(a,a.pendingProps),c.return=b;c.sibling=null}return b.child}var ni,oi,pi,qi;\nni=function(a,b){for(var c=b.child;null!==c;){if(5===c.tag||6===c.tag)a.appendChild(c.stateNode);else if(4!==c.tag&&null!==c.child){c.child.return=c;c=c.child;continue}if(c===b)break;for(;null===c.sibling;){if(null===c.return||c.return===b)return;c=c.return}c.sibling.return=c.return;c=c.sibling}};oi=function(){};\npi=function(a,b,c,d,e){var f=a.memoizedProps;if(f!==d){var g=b.stateNode;ch($g.current);a=null;switch(c){case \"input\":f=zb(g,f);d=zb(g,d);a=[];break;case \"option\":f=Gb(g,f);d=Gb(g,d);a=[];break;case \"select\":f=n({},f,{value:void 0});d=n({},d,{value:void 0});a=[];break;case \"textarea\":f=Ib(g,f);d=Ib(g,d);a=[];break;default:\"function\"!==typeof f.onClick&&\"function\"===typeof d.onClick&&(g.onclick=sd)}od(c,d);var h,k;c=null;for(h in f)if(!d.hasOwnProperty(h)&&f.hasOwnProperty(h)&&null!=f[h])if(\"style\"===\nh)for(k in g=f[h],g)g.hasOwnProperty(k)&&(c||(c={}),c[k]=\"\");else\"dangerouslySetInnerHTML\"!==h&&\"children\"!==h&&\"suppressContentEditableWarning\"!==h&&\"suppressHydrationWarning\"!==h&&\"autoFocus\"!==h&&(va.hasOwnProperty(h)?a||(a=[]):(a=a||[]).push(h,null));for(h in d){var l=d[h];g=null!=f?f[h]:void 0;if(d.hasOwnProperty(h)&&l!==g&&(null!=l||null!=g))if(\"style\"===h)if(g){for(k in g)!g.hasOwnProperty(k)||l&&l.hasOwnProperty(k)||(c||(c={}),c[k]=\"\");for(k in l)l.hasOwnProperty(k)&&g[k]!==l[k]&&(c||(c={}),\nc[k]=l[k])}else c||(a||(a=[]),a.push(h,c)),c=l;else\"dangerouslySetInnerHTML\"===h?(l=l?l.__html:void 0,g=g?g.__html:void 0,null!=l&&g!==l&&(a=a||[]).push(h,l)):\"children\"===h?g===l||\"string\"!==typeof l&&\"number\"!==typeof l||(a=a||[]).push(h,\"\"+l):\"suppressContentEditableWarning\"!==h&&\"suppressHydrationWarning\"!==h&&(va.hasOwnProperty(h)?(null!=l&&rd(e,h),a||g===l||(a=[])):(a=a||[]).push(h,l))}c&&(a=a||[]).push(\"style\",c);e=a;if(b.updateQueue=e)b.effectTag|=4}};\nqi=function(a,b,c,d){c!==d&&(b.effectTag|=4)};function ri(a,b){switch(a.tailMode){case \"hidden\":b=a.tail;for(var c=null;null!==b;)null!==b.alternate&&(c=b),b=b.sibling;null===c?a.tail=null:c.sibling=null;break;case \"collapsed\":c=a.tail;for(var d=null;null!==c;)null!==c.alternate&&(d=c),c=c.sibling;null===d?b||null===a.tail?a.tail=null:a.tail.sibling=null:d.sibling=null}}\nfunction si(a,b,c){var d=b.pendingProps;switch(b.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return null;case 1:return L(b.type)&&Df(),null;case 3:return eh(),H(K),H(J),c=b.stateNode,c.pendingContext&&(c.context=c.pendingContext,c.pendingContext=null),null!==a&&null!==a.child||!Wh(b)||(b.effectTag|=4),oi(b),null;case 5:gh(b);c=ch(bh.current);var e=b.type;if(null!==a&&null!=b.stateNode)pi(a,b,e,d,c),a.ref!==b.ref&&(b.effectTag|=128);else{if(!d){if(null===b.stateNode)throw Error(u(166));\nreturn null}a=ch($g.current);if(Wh(b)){d=b.stateNode;e=b.type;var f=b.memoizedProps;d[Md]=b;d[Nd]=f;switch(e){case \"iframe\":case \"object\":case \"embed\":F(\"load\",d);break;case \"video\":case \"audio\":for(a=0;a<ac.length;a++)F(ac[a],d);break;case \"source\":F(\"error\",d);break;case \"img\":case \"image\":case \"link\":F(\"error\",d);F(\"load\",d);break;case \"form\":F(\"reset\",d);F(\"submit\",d);break;case \"details\":F(\"toggle\",d);break;case \"input\":Ab(d,f);F(\"invalid\",d);rd(c,\"onChange\");break;case \"select\":d._wrapperState=\n{wasMultiple:!!f.multiple};F(\"invalid\",d);rd(c,\"onChange\");break;case \"textarea\":Jb(d,f),F(\"invalid\",d),rd(c,\"onChange\")}od(e,f);a=null;for(var g in f)if(f.hasOwnProperty(g)){var h=f[g];\"children\"===g?\"string\"===typeof h?d.textContent!==h&&(a=[\"children\",h]):\"number\"===typeof h&&d.textContent!==\"\"+h&&(a=[\"children\",\"\"+h]):va.hasOwnProperty(g)&&null!=h&&rd(c,g)}switch(e){case \"input\":xb(d);Eb(d,f,!0);break;case \"textarea\":xb(d);Lb(d);break;case \"select\":case \"option\":break;default:\"function\"===typeof f.onClick&&\n(d.onclick=sd)}c=a;b.updateQueue=c;null!==c&&(b.effectTag|=4)}else{g=9===c.nodeType?c:c.ownerDocument;a===qd&&(a=Nb(e));a===qd?\"script\"===e?(a=g.createElement(\"div\"),a.innerHTML=\"<script>\\x3c/script>\",a=a.removeChild(a.firstChild)):\"string\"===typeof d.is?a=g.createElement(e,{is:d.is}):(a=g.createElement(e),\"select\"===e&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,e);a[Md]=b;a[Nd]=d;ni(a,b,!1,!1);b.stateNode=a;g=pd(e,d);switch(e){case \"iframe\":case \"object\":case \"embed\":F(\"load\",\na);h=d;break;case \"video\":case \"audio\":for(h=0;h<ac.length;h++)F(ac[h],a);h=d;break;case \"source\":F(\"error\",a);h=d;break;case \"img\":case \"image\":case \"link\":F(\"error\",a);F(\"load\",a);h=d;break;case \"form\":F(\"reset\",a);F(\"submit\",a);h=d;break;case \"details\":F(\"toggle\",a);h=d;break;case \"input\":Ab(a,d);h=zb(a,d);F(\"invalid\",a);rd(c,\"onChange\");break;case \"option\":h=Gb(a,d);break;case \"select\":a._wrapperState={wasMultiple:!!d.multiple};h=n({},d,{value:void 0});F(\"invalid\",a);rd(c,\"onChange\");break;case \"textarea\":Jb(a,\nd);h=Ib(a,d);F(\"invalid\",a);rd(c,\"onChange\");break;default:h=d}od(e,h);var k=h;for(f in k)if(k.hasOwnProperty(f)){var l=k[f];\"style\"===f?md(a,l):\"dangerouslySetInnerHTML\"===f?(l=l?l.__html:void 0,null!=l&&Qb(a,l)):\"children\"===f?\"string\"===typeof l?(\"textarea\"!==e||\"\"!==l)&&Rb(a,l):\"number\"===typeof l&&Rb(a,\"\"+l):\"suppressContentEditableWarning\"!==f&&\"suppressHydrationWarning\"!==f&&\"autoFocus\"!==f&&(va.hasOwnProperty(f)?null!=l&&rd(c,f):null!=l&&Xa(a,f,l,g))}switch(e){case \"input\":xb(a);Eb(a,d,!1);\nbreak;case \"textarea\":xb(a);Lb(a);break;case \"option\":null!=d.value&&a.setAttribute(\"value\",\"\"+rb(d.value));break;case \"select\":a.multiple=!!d.multiple;c=d.value;null!=c?Hb(a,!!d.multiple,c,!1):null!=d.defaultValue&&Hb(a,!!d.multiple,d.defaultValue,!0);break;default:\"function\"===typeof h.onClick&&(a.onclick=sd)}Fd(e,d)&&(b.effectTag|=4)}null!==b.ref&&(b.effectTag|=128)}return null;case 6:if(a&&null!=b.stateNode)qi(a,b,a.memoizedProps,d);else{if(\"string\"!==typeof d&&null===b.stateNode)throw Error(u(166));\nc=ch(bh.current);ch($g.current);Wh(b)?(c=b.stateNode,d=b.memoizedProps,c[Md]=b,c.nodeValue!==d&&(b.effectTag|=4)):(c=(9===c.nodeType?c:c.ownerDocument).createTextNode(d),c[Md]=b,b.stateNode=c)}return null;case 13:H(M);d=b.memoizedState;if(0!==(b.effectTag&64))return b.expirationTime=c,b;c=null!==d;d=!1;null===a?void 0!==b.memoizedProps.fallback&&Wh(b):(e=a.memoizedState,d=null!==e,c||null===e||(e=a.child.sibling,null!==e&&(f=b.firstEffect,null!==f?(b.firstEffect=e,e.nextEffect=f):(b.firstEffect=b.lastEffect=\ne,e.nextEffect=null),e.effectTag=8)));if(c&&!d&&0!==(b.mode&2))if(null===a&&!0!==b.memoizedProps.unstable_avoidThisFallback||0!==(M.current&1))S===ti&&(S=ui);else{if(S===ti||S===ui)S=vi;0!==wi&&null!==T&&(xi(T,U),yi(T,wi))}if(c||d)b.effectTag|=4;return null;case 4:return eh(),oi(b),null;case 10:return og(b),null;case 17:return L(b.type)&&Df(),null;case 19:H(M);d=b.memoizedState;if(null===d)return null;e=0!==(b.effectTag&64);f=d.rendering;if(null===f)if(e)ri(d,!1);else{if(S!==ti||null!==a&&0!==(a.effectTag&\n64))for(f=b.child;null!==f;){a=hh(f);if(null!==a){b.effectTag|=64;ri(d,!1);e=a.updateQueue;null!==e&&(b.updateQueue=e,b.effectTag|=4);null===d.lastEffect&&(b.firstEffect=null);b.lastEffect=d.lastEffect;for(d=b.child;null!==d;)e=d,f=c,e.effectTag&=2,e.nextEffect=null,e.firstEffect=null,e.lastEffect=null,a=e.alternate,null===a?(e.childExpirationTime=0,e.expirationTime=f,e.child=null,e.memoizedProps=null,e.memoizedState=null,e.updateQueue=null,e.dependencies=null):(e.childExpirationTime=a.childExpirationTime,\ne.expirationTime=a.expirationTime,e.child=a.child,e.memoizedProps=a.memoizedProps,e.memoizedState=a.memoizedState,e.updateQueue=a.updateQueue,f=a.dependencies,e.dependencies=null===f?null:{expirationTime:f.expirationTime,firstContext:f.firstContext,responders:f.responders}),d=d.sibling;I(M,M.current&1|2);return b.child}f=f.sibling}}else{if(!e)if(a=hh(f),null!==a){if(b.effectTag|=64,e=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.effectTag|=4),ri(d,!0),null===d.tail&&\"hidden\"===d.tailMode&&!f.alternate)return b=\nb.lastEffect=d.lastEffect,null!==b&&(b.nextEffect=null),null}else 2*$f()-d.renderingStartTime>d.tailExpiration&&1<c&&(b.effectTag|=64,e=!0,ri(d,!1),b.expirationTime=b.childExpirationTime=c-1);d.isBackwards?(f.sibling=b.child,b.child=f):(c=d.last,null!==c?c.sibling=f:b.child=f,d.last=f)}return null!==d.tail?(0===d.tailExpiration&&(d.tailExpiration=$f()+500),c=d.tail,d.rendering=c,d.tail=c.sibling,d.lastEffect=b.lastEffect,d.renderingStartTime=$f(),c.sibling=null,b=M.current,I(M,e?b&1|2:b&1),c):null}throw Error(u(156,\nb.tag));}function zi(a){switch(a.tag){case 1:L(a.type)&&Df();var b=a.effectTag;return b&4096?(a.effectTag=b&-4097|64,a):null;case 3:eh();H(K);H(J);b=a.effectTag;if(0!==(b&64))throw Error(u(285));a.effectTag=b&-4097|64;return a;case 5:return gh(a),null;case 13:return H(M),b=a.effectTag,b&4096?(a.effectTag=b&-4097|64,a):null;case 19:return H(M),null;case 4:return eh(),null;case 10:return og(a),null;default:return null}}function Ai(a,b){return{value:a,source:b,stack:qb(b)}}\nvar Bi=\"function\"===typeof WeakSet?WeakSet:Set;function Ci(a,b){var c=b.source,d=b.stack;null===d&&null!==c&&(d=qb(c));null!==c&&pb(c.type);b=b.value;null!==a&&1===a.tag&&pb(a.type);try{console.error(b)}catch(e){setTimeout(function(){throw e;})}}function Di(a,b){try{b.props=a.memoizedProps,b.state=a.memoizedState,b.componentWillUnmount()}catch(c){Ei(a,c)}}function Fi(a){var b=a.ref;if(null!==b)if(\"function\"===typeof b)try{b(null)}catch(c){Ei(a,c)}else b.current=null}\nfunction Gi(a,b){switch(b.tag){case 0:case 11:case 15:case 22:return;case 1:if(b.effectTag&256&&null!==a){var c=a.memoizedProps,d=a.memoizedState;a=b.stateNode;b=a.getSnapshotBeforeUpdate(b.elementType===b.type?c:ig(b.type,c),d);a.__reactInternalSnapshotBeforeUpdate=b}return;case 3:case 5:case 6:case 4:case 17:return}throw Error(u(163));}\nfunction Hi(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.destroy;c.destroy=void 0;void 0!==d&&d()}c=c.next}while(c!==b)}}function Ii(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}\nfunction Ji(a,b,c){switch(c.tag){case 0:case 11:case 15:case 22:Ii(3,c);return;case 1:a=c.stateNode;if(c.effectTag&4)if(null===b)a.componentDidMount();else{var d=c.elementType===c.type?b.memoizedProps:ig(c.type,b.memoizedProps);a.componentDidUpdate(d,b.memoizedState,a.__reactInternalSnapshotBeforeUpdate)}b=c.updateQueue;null!==b&&Cg(c,b,a);return;case 3:b=c.updateQueue;if(null!==b){a=null;if(null!==c.child)switch(c.child.tag){case 5:a=c.child.stateNode;break;case 1:a=c.child.stateNode}Cg(c,b,a)}return;\ncase 5:a=c.stateNode;null===b&&c.effectTag&4&&Fd(c.type,c.memoizedProps)&&a.focus();return;case 6:return;case 4:return;case 12:return;case 13:null===c.memoizedState&&(c=c.alternate,null!==c&&(c=c.memoizedState,null!==c&&(c=c.dehydrated,null!==c&&Vc(c))));return;case 19:case 17:case 20:case 21:return}throw Error(u(163));}\nfunction Ki(a,b,c){\"function\"===typeof Li&&Li(b);switch(b.tag){case 0:case 11:case 14:case 15:case 22:a=b.updateQueue;if(null!==a&&(a=a.lastEffect,null!==a)){var d=a.next;cg(97<c?97:c,function(){var a=d;do{var c=a.destroy;if(void 0!==c){var g=b;try{c()}catch(h){Ei(g,h)}}a=a.next}while(a!==d)})}break;case 1:Fi(b);c=b.stateNode;\"function\"===typeof c.componentWillUnmount&&Di(b,c);break;case 5:Fi(b);break;case 4:Mi(a,b,c)}}\nfunction Ni(a){var b=a.alternate;a.return=null;a.child=null;a.memoizedState=null;a.updateQueue=null;a.dependencies=null;a.alternate=null;a.firstEffect=null;a.lastEffect=null;a.pendingProps=null;a.memoizedProps=null;a.stateNode=null;null!==b&&Ni(b)}function Oi(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Pi(a){a:{for(var b=a.return;null!==b;){if(Oi(b)){var c=b;break a}b=b.return}throw Error(u(160));}b=c.stateNode;switch(c.tag){case 5:var d=!1;break;case 3:b=b.containerInfo;d=!0;break;case 4:b=b.containerInfo;d=!0;break;default:throw Error(u(161));}c.effectTag&16&&(Rb(b,\"\"),c.effectTag&=-17);a:b:for(c=a;;){for(;null===c.sibling;){if(null===c.return||Oi(c.return)){c=null;break a}c=c.return}c.sibling.return=c.return;for(c=c.sibling;5!==c.tag&&6!==c.tag&&18!==c.tag;){if(c.effectTag&2)continue b;\nif(null===c.child||4===c.tag)continue b;else c.child.return=c,c=c.child}if(!(c.effectTag&2)){c=c.stateNode;break a}}d?Qi(a,c,b):Ri(a,c,b)}\nfunction Qi(a,b,c){var d=a.tag,e=5===d||6===d;if(e)a=e?a.stateNode:a.stateNode.instance,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=sd));else if(4!==d&&(a=a.child,null!==a))for(Qi(a,b,c),a=a.sibling;null!==a;)Qi(a,b,c),a=a.sibling}\nfunction Ri(a,b,c){var d=a.tag,e=5===d||6===d;if(e)a=e?a.stateNode:a.stateNode.instance,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Ri(a,b,c),a=a.sibling;null!==a;)Ri(a,b,c),a=a.sibling}\nfunction Mi(a,b,c){for(var d=b,e=!1,f,g;;){if(!e){e=d.return;a:for(;;){if(null===e)throw Error(u(160));f=e.stateNode;switch(e.tag){case 5:g=!1;break a;case 3:f=f.containerInfo;g=!0;break a;case 4:f=f.containerInfo;g=!0;break a}e=e.return}e=!0}if(5===d.tag||6===d.tag){a:for(var h=a,k=d,l=c,m=k;;)if(Ki(h,m,l),null!==m.child&&4!==m.tag)m.child.return=m,m=m.child;else{if(m===k)break a;for(;null===m.sibling;){if(null===m.return||m.return===k)break a;m=m.return}m.sibling.return=m.return;m=m.sibling}g?(h=\nf,k=d.stateNode,8===h.nodeType?h.parentNode.removeChild(k):h.removeChild(k)):f.removeChild(d.stateNode)}else if(4===d.tag){if(null!==d.child){f=d.stateNode.containerInfo;g=!0;d.child.return=d;d=d.child;continue}}else if(Ki(a,d,c),null!==d.child){d.child.return=d;d=d.child;continue}if(d===b)break;for(;null===d.sibling;){if(null===d.return||d.return===b)return;d=d.return;4===d.tag&&(e=!1)}d.sibling.return=d.return;d=d.sibling}}\nfunction Si(a,b){switch(b.tag){case 0:case 11:case 14:case 15:case 22:Hi(3,b);return;case 1:return;case 5:var c=b.stateNode;if(null!=c){var d=b.memoizedProps,e=null!==a?a.memoizedProps:d;a=b.type;var f=b.updateQueue;b.updateQueue=null;if(null!==f){c[Nd]=d;\"input\"===a&&\"radio\"===d.type&&null!=d.name&&Bb(c,d);pd(a,e);b=pd(a,d);for(e=0;e<f.length;e+=2){var g=f[e],h=f[e+1];\"style\"===g?md(c,h):\"dangerouslySetInnerHTML\"===g?Qb(c,h):\"children\"===g?Rb(c,h):Xa(c,g,h,b)}switch(a){case \"input\":Cb(c,d);break;\ncase \"textarea\":Kb(c,d);break;case \"select\":b=c._wrapperState.wasMultiple,c._wrapperState.wasMultiple=!!d.multiple,a=d.value,null!=a?Hb(c,!!d.multiple,a,!1):b!==!!d.multiple&&(null!=d.defaultValue?Hb(c,!!d.multiple,d.defaultValue,!0):Hb(c,!!d.multiple,d.multiple?[]:\"\",!1))}}}return;case 6:if(null===b.stateNode)throw Error(u(162));b.stateNode.nodeValue=b.memoizedProps;return;case 3:b=b.stateNode;b.hydrate&&(b.hydrate=!1,Vc(b.containerInfo));return;case 12:return;case 13:c=b;null===b.memoizedState?\nd=!1:(d=!0,c=b.child,Ti=$f());if(null!==c)a:for(a=c;;){if(5===a.tag)f=a.stateNode,d?(f=f.style,\"function\"===typeof f.setProperty?f.setProperty(\"display\",\"none\",\"important\"):f.display=\"none\"):(f=a.stateNode,e=a.memoizedProps.style,e=void 0!==e&&null!==e&&e.hasOwnProperty(\"display\")?e.display:null,f.style.display=ld(\"display\",e));else if(6===a.tag)a.stateNode.nodeValue=d?\"\":a.memoizedProps;else if(13===a.tag&&null!==a.memoizedState&&null===a.memoizedState.dehydrated){f=a.child.sibling;f.return=a;a=\nf;continue}else if(null!==a.child){a.child.return=a;a=a.child;continue}if(a===c)break;for(;null===a.sibling;){if(null===a.return||a.return===c)break a;a=a.return}a.sibling.return=a.return;a=a.sibling}Ui(b);return;case 19:Ui(b);return;case 17:return}throw Error(u(163));}function Ui(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Bi);b.forEach(function(b){var d=Vi.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nvar Wi=\"function\"===typeof WeakMap?WeakMap:Map;function Xi(a,b,c){c=wg(c,null);c.tag=3;c.payload={element:null};var d=b.value;c.callback=function(){Yi||(Yi=!0,Zi=d);Ci(a,b)};return c}\nfunction $i(a,b,c){c=wg(c,null);c.tag=3;var d=a.type.getDerivedStateFromError;if(\"function\"===typeof d){var e=b.value;c.payload=function(){Ci(a,b);return d(e)}}var f=a.stateNode;null!==f&&\"function\"===typeof f.componentDidCatch&&(c.callback=function(){\"function\"!==typeof d&&(null===aj?aj=new Set([this]):aj.add(this),Ci(a,b));var c=b.stack;this.componentDidCatch(b.value,{componentStack:null!==c?c:\"\"})});return c}\nvar bj=Math.ceil,cj=Wa.ReactCurrentDispatcher,dj=Wa.ReactCurrentOwner,V=0,ej=8,fj=16,gj=32,ti=0,hj=1,ij=2,ui=3,vi=4,jj=5,W=V,T=null,X=null,U=0,S=ti,kj=null,lj=1073741823,mj=1073741823,nj=null,wi=0,oj=!1,Ti=0,pj=500,Y=null,Yi=!1,Zi=null,aj=null,qj=!1,rj=null,sj=90,tj=null,uj=0,vj=null,wj=0;function Gg(){return(W&(fj|gj))!==V?1073741821-($f()/10|0):0!==wj?wj:wj=1073741821-($f()/10|0)}\nfunction Hg(a,b,c){b=b.mode;if(0===(b&2))return 1073741823;var d=ag();if(0===(b&4))return 99===d?1073741823:1073741822;if((W&fj)!==V)return U;if(null!==c)a=hg(a,c.timeoutMs|0||5E3,250);else switch(d){case 99:a=1073741823;break;case 98:a=hg(a,150,100);break;case 97:case 96:a=hg(a,5E3,250);break;case 95:a=2;break;default:throw Error(u(326));}null!==T&&a===U&&--a;return a}\nfunction Ig(a,b){if(50<uj)throw uj=0,vj=null,Error(u(185));a=xj(a,b);if(null!==a){var c=ag();1073741823===b?(W&ej)!==V&&(W&(fj|gj))===V?yj(a):(Z(a),W===V&&gg()):Z(a);(W&4)===V||98!==c&&99!==c||(null===tj?tj=new Map([[a,b]]):(c=tj.get(a),(void 0===c||c>b)&&tj.set(a,b)))}}\nfunction xj(a,b){a.expirationTime<b&&(a.expirationTime=b);var c=a.alternate;null!==c&&c.expirationTime<b&&(c.expirationTime=b);var d=a.return,e=null;if(null===d&&3===a.tag)e=a.stateNode;else for(;null!==d;){c=d.alternate;d.childExpirationTime<b&&(d.childExpirationTime=b);null!==c&&c.childExpirationTime<b&&(c.childExpirationTime=b);if(null===d.return&&3===d.tag){e=d.stateNode;break}d=d.return}null!==e&&(T===e&&(Bg(b),S===vi&&xi(e,U)),yi(e,b));return e}\nfunction zj(a){var b=a.lastExpiredTime;if(0!==b)return b;b=a.firstPendingTime;if(!Aj(a,b))return b;var c=a.lastPingedTime;a=a.nextKnownPendingLevel;a=c>a?c:a;return 2>=a&&b!==a?0:a}\nfunction Z(a){if(0!==a.lastExpiredTime)a.callbackExpirationTime=1073741823,a.callbackPriority=99,a.callbackNode=eg(yj.bind(null,a));else{var b=zj(a),c=a.callbackNode;if(0===b)null!==c&&(a.callbackNode=null,a.callbackExpirationTime=0,a.callbackPriority=90);else{var d=Gg();1073741823===b?d=99:1===b||2===b?d=95:(d=10*(1073741821-b)-10*(1073741821-d),d=0>=d?99:250>=d?98:5250>=d?97:95);if(null!==c){var e=a.callbackPriority;if(a.callbackExpirationTime===b&&e>=d)return;c!==Tf&&Kf(c)}a.callbackExpirationTime=\nb;a.callbackPriority=d;b=1073741823===b?eg(yj.bind(null,a)):dg(d,Bj.bind(null,a),{timeout:10*(1073741821-b)-$f()});a.callbackNode=b}}}\nfunction Bj(a,b){wj=0;if(b)return b=Gg(),Cj(a,b),Z(a),null;var c=zj(a);if(0!==c){b=a.callbackNode;if((W&(fj|gj))!==V)throw Error(u(327));Dj();a===T&&c===U||Ej(a,c);if(null!==X){var d=W;W|=fj;var e=Fj();do try{Gj();break}catch(h){Hj(a,h)}while(1);ng();W=d;cj.current=e;if(S===hj)throw b=kj,Ej(a,c),xi(a,c),Z(a),b;if(null===X)switch(e=a.finishedWork=a.current.alternate,a.finishedExpirationTime=c,d=S,T=null,d){case ti:case hj:throw Error(u(345));case ij:Cj(a,2<c?2:c);break;case ui:xi(a,c);d=a.lastSuspendedTime;\nc===d&&(a.nextKnownPendingLevel=Ij(e));if(1073741823===lj&&(e=Ti+pj-$f(),10<e)){if(oj){var f=a.lastPingedTime;if(0===f||f>=c){a.lastPingedTime=c;Ej(a,c);break}}f=zj(a);if(0!==f&&f!==c)break;if(0!==d&&d!==c){a.lastPingedTime=d;break}a.timeoutHandle=Hd(Jj.bind(null,a),e);break}Jj(a);break;case vi:xi(a,c);d=a.lastSuspendedTime;c===d&&(a.nextKnownPendingLevel=Ij(e));if(oj&&(e=a.lastPingedTime,0===e||e>=c)){a.lastPingedTime=c;Ej(a,c);break}e=zj(a);if(0!==e&&e!==c)break;if(0!==d&&d!==c){a.lastPingedTime=\nd;break}1073741823!==mj?d=10*(1073741821-mj)-$f():1073741823===lj?d=0:(d=10*(1073741821-lj)-5E3,e=$f(),c=10*(1073741821-c)-e,d=e-d,0>d&&(d=0),d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*bj(d/1960))-d,c<d&&(d=c));if(10<d){a.timeoutHandle=Hd(Jj.bind(null,a),d);break}Jj(a);break;case jj:if(1073741823!==lj&&null!==nj){f=lj;var g=nj;d=g.busyMinDurationMs|0;0>=d?d=0:(e=g.busyDelayMs|0,f=$f()-(10*(1073741821-f)-(g.timeoutMs|0||5E3)),d=f<=e?0:e+d-f);if(10<d){xi(a,c);a.timeoutHandle=\nHd(Jj.bind(null,a),d);break}}Jj(a);break;default:throw Error(u(329));}Z(a);if(a.callbackNode===b)return Bj.bind(null,a)}}return null}\nfunction yj(a){var b=a.lastExpiredTime;b=0!==b?b:1073741823;if((W&(fj|gj))!==V)throw Error(u(327));Dj();a===T&&b===U||Ej(a,b);if(null!==X){var c=W;W|=fj;var d=Fj();do try{Kj();break}catch(e){Hj(a,e)}while(1);ng();W=c;cj.current=d;if(S===hj)throw c=kj,Ej(a,b),xi(a,b),Z(a),c;if(null!==X)throw Error(u(261));a.finishedWork=a.current.alternate;a.finishedExpirationTime=b;T=null;Jj(a);Z(a)}return null}function Lj(){if(null!==tj){var a=tj;tj=null;a.forEach(function(a,c){Cj(c,a);Z(c)});gg()}}\nfunction Mj(a,b){var c=W;W|=1;try{return a(b)}finally{W=c,W===V&&gg()}}function Nj(a,b){var c=W;W&=-2;W|=ej;try{return a(b)}finally{W=c,W===V&&gg()}}\nfunction Ej(a,b){a.finishedWork=null;a.finishedExpirationTime=0;var c=a.timeoutHandle;-1!==c&&(a.timeoutHandle=-1,Id(c));if(null!==X)for(c=X.return;null!==c;){var d=c;switch(d.tag){case 1:d=d.type.childContextTypes;null!==d&&void 0!==d&&Df();break;case 3:eh();H(K);H(J);break;case 5:gh(d);break;case 4:eh();break;case 13:H(M);break;case 19:H(M);break;case 10:og(d)}c=c.return}T=a;X=Sg(a.current,null);U=b;S=ti;kj=null;mj=lj=1073741823;nj=null;wi=0;oj=!1}\nfunction Hj(a,b){do{try{ng();jh.current=sh;if(mh)for(var c=N.memoizedState;null!==c;){var d=c.queue;null!==d&&(d.pending=null);c=c.next}lh=0;P=O=N=null;mh=!1;if(null===X||null===X.return)return S=hj,kj=b,X=null;a:{var e=a,f=X.return,g=X,h=b;b=U;g.effectTag|=2048;g.firstEffect=g.lastEffect=null;if(null!==h&&\"object\"===typeof h&&\"function\"===typeof h.then){var k=h;if(0===(g.mode&2)){var l=g.alternate;l?(g.updateQueue=l.updateQueue,g.memoizedState=l.memoizedState,g.expirationTime=l.expirationTime):(g.updateQueue=\nnull,g.memoizedState=null)}var m=0!==(M.current&1),p=f;do{var x;if(x=13===p.tag){var z=p.memoizedState;if(null!==z)x=null!==z.dehydrated?!0:!1;else{var ca=p.memoizedProps;x=void 0===ca.fallback?!1:!0!==ca.unstable_avoidThisFallback?!0:m?!1:!0}}if(x){var D=p.updateQueue;if(null===D){var t=new Set;t.add(k);p.updateQueue=t}else D.add(k);if(0===(p.mode&2)){p.effectTag|=64;g.effectTag&=-2981;if(1===g.tag)if(null===g.alternate)g.tag=17;else{var y=wg(1073741823,null);y.tag=2;xg(g,y)}g.expirationTime=1073741823;\nbreak a}h=void 0;g=b;var A=e.pingCache;null===A?(A=e.pingCache=new Wi,h=new Set,A.set(k,h)):(h=A.get(k),void 0===h&&(h=new Set,A.set(k,h)));if(!h.has(g)){h.add(g);var q=Oj.bind(null,e,k,g);k.then(q,q)}p.effectTag|=4096;p.expirationTime=b;break a}p=p.return}while(null!==p);h=Error((pb(g.type)||\"A React component\")+\" suspended while rendering, but no fallback UI was specified.\\n\\nAdd a <Suspense fallback=...> component higher in the tree to provide a loading indicator or placeholder to display.\"+qb(g))}S!==\njj&&(S=ij);h=Ai(h,g);p=f;do{switch(p.tag){case 3:k=h;p.effectTag|=4096;p.expirationTime=b;var B=Xi(p,k,b);yg(p,B);break a;case 1:k=h;var w=p.type,ub=p.stateNode;if(0===(p.effectTag&64)&&(\"function\"===typeof w.getDerivedStateFromError||null!==ub&&\"function\"===typeof ub.componentDidCatch&&(null===aj||!aj.has(ub)))){p.effectTag|=4096;p.expirationTime=b;var vb=$i(p,k,b);yg(p,vb);break a}}p=p.return}while(null!==p)}X=Pj(X)}catch(Xc){b=Xc;continue}break}while(1)}\nfunction Fj(){var a=cj.current;cj.current=sh;return null===a?sh:a}function Ag(a,b){a<lj&&2<a&&(lj=a);null!==b&&a<mj&&2<a&&(mj=a,nj=b)}function Bg(a){a>wi&&(wi=a)}function Kj(){for(;null!==X;)X=Qj(X)}function Gj(){for(;null!==X&&!Uf();)X=Qj(X)}function Qj(a){var b=Rj(a.alternate,a,U);a.memoizedProps=a.pendingProps;null===b&&(b=Pj(a));dj.current=null;return b}\nfunction Pj(a){X=a;do{var b=X.alternate;a=X.return;if(0===(X.effectTag&2048)){b=si(b,X,U);if(1===U||1!==X.childExpirationTime){for(var c=0,d=X.child;null!==d;){var e=d.expirationTime,f=d.childExpirationTime;e>c&&(c=e);f>c&&(c=f);d=d.sibling}X.childExpirationTime=c}if(null!==b)return b;null!==a&&0===(a.effectTag&2048)&&(null===a.firstEffect&&(a.firstEffect=X.firstEffect),null!==X.lastEffect&&(null!==a.lastEffect&&(a.lastEffect.nextEffect=X.firstEffect),a.lastEffect=X.lastEffect),1<X.effectTag&&(null!==\na.lastEffect?a.lastEffect.nextEffect=X:a.firstEffect=X,a.lastEffect=X))}else{b=zi(X);if(null!==b)return b.effectTag&=2047,b;null!==a&&(a.firstEffect=a.lastEffect=null,a.effectTag|=2048)}b=X.sibling;if(null!==b)return b;X=a}while(null!==X);S===ti&&(S=jj);return null}function Ij(a){var b=a.expirationTime;a=a.childExpirationTime;return b>a?b:a}function Jj(a){var b=ag();cg(99,Sj.bind(null,a,b));return null}\nfunction Sj(a,b){do Dj();while(null!==rj);if((W&(fj|gj))!==V)throw Error(u(327));var c=a.finishedWork,d=a.finishedExpirationTime;if(null===c)return null;a.finishedWork=null;a.finishedExpirationTime=0;if(c===a.current)throw Error(u(177));a.callbackNode=null;a.callbackExpirationTime=0;a.callbackPriority=90;a.nextKnownPendingLevel=0;var e=Ij(c);a.firstPendingTime=e;d<=a.lastSuspendedTime?a.firstSuspendedTime=a.lastSuspendedTime=a.nextKnownPendingLevel=0:d<=a.firstSuspendedTime&&(a.firstSuspendedTime=\nd-1);d<=a.lastPingedTime&&(a.lastPingedTime=0);d<=a.lastExpiredTime&&(a.lastExpiredTime=0);a===T&&(X=T=null,U=0);1<c.effectTag?null!==c.lastEffect?(c.lastEffect.nextEffect=c,e=c.firstEffect):e=c:e=c.firstEffect;if(null!==e){var f=W;W|=gj;dj.current=null;Dd=fd;var g=xd();if(yd(g)){if(\"selectionStart\"in g)var h={start:g.selectionStart,end:g.selectionEnd};else a:{h=(h=g.ownerDocument)&&h.defaultView||window;var k=h.getSelection&&h.getSelection();if(k&&0!==k.rangeCount){h=k.anchorNode;var l=k.anchorOffset,\nm=k.focusNode;k=k.focusOffset;try{h.nodeType,m.nodeType}catch(wb){h=null;break a}var p=0,x=-1,z=-1,ca=0,D=0,t=g,y=null;b:for(;;){for(var A;;){t!==h||0!==l&&3!==t.nodeType||(x=p+l);t!==m||0!==k&&3!==t.nodeType||(z=p+k);3===t.nodeType&&(p+=t.nodeValue.length);if(null===(A=t.firstChild))break;y=t;t=A}for(;;){if(t===g)break b;y===h&&++ca===l&&(x=p);y===m&&++D===k&&(z=p);if(null!==(A=t.nextSibling))break;t=y;y=t.parentNode}t=A}h=-1===x||-1===z?null:{start:x,end:z}}else h=null}h=h||{start:0,end:0}}else h=\nnull;Ed={activeElementDetached:null,focusedElem:g,selectionRange:h};fd=!1;Y=e;do try{Tj()}catch(wb){if(null===Y)throw Error(u(330));Ei(Y,wb);Y=Y.nextEffect}while(null!==Y);Y=e;do try{for(g=a,h=b;null!==Y;){var q=Y.effectTag;q&16&&Rb(Y.stateNode,\"\");if(q&128){var B=Y.alternate;if(null!==B){var w=B.ref;null!==w&&(\"function\"===typeof w?w(null):w.current=null)}}switch(q&1038){case 2:Pi(Y);Y.effectTag&=-3;break;case 6:Pi(Y);Y.effectTag&=-3;Si(Y.alternate,Y);break;case 1024:Y.effectTag&=-1025;break;case 1028:Y.effectTag&=\n-1025;Si(Y.alternate,Y);break;case 4:Si(Y.alternate,Y);break;case 8:l=Y,Mi(g,l,h),Ni(l)}Y=Y.nextEffect}}catch(wb){if(null===Y)throw Error(u(330));Ei(Y,wb);Y=Y.nextEffect}while(null!==Y);w=Ed;B=xd();q=w.focusedElem;h=w.selectionRange;if(B!==q&&q&&q.ownerDocument&&wd(q.ownerDocument.documentElement,q)){null!==h&&yd(q)&&(B=h.start,w=h.end,void 0===w&&(w=B),\"selectionStart\"in q?(q.selectionStart=B,q.selectionEnd=Math.min(w,q.value.length)):(w=(B=q.ownerDocument||document)&&B.defaultView||window,w.getSelection&&\n(w=w.getSelection(),l=q.textContent.length,g=Math.min(h.start,l),h=void 0===h.end?g:Math.min(h.end,l),!w.extend&&g>h&&(l=h,h=g,g=l),l=vd(q,g),m=vd(q,h),l&&m&&(1!==w.rangeCount||w.anchorNode!==l.node||w.anchorOffset!==l.offset||w.focusNode!==m.node||w.focusOffset!==m.offset)&&(B=B.createRange(),B.setStart(l.node,l.offset),w.removeAllRanges(),g>h?(w.addRange(B),w.extend(m.node,m.offset)):(B.setEnd(m.node,m.offset),w.addRange(B))))));B=[];for(w=q;w=w.parentNode;)1===w.nodeType&&B.push({element:w,left:w.scrollLeft,\ntop:w.scrollTop});\"function\"===typeof q.focus&&q.focus();for(q=0;q<B.length;q++)w=B[q],w.element.scrollLeft=w.left,w.element.scrollTop=w.top}fd=!!Dd;Ed=Dd=null;a.current=c;Y=e;do try{for(q=a;null!==Y;){var ub=Y.effectTag;ub&36&&Ji(q,Y.alternate,Y);if(ub&128){B=void 0;var vb=Y.ref;if(null!==vb){var Xc=Y.stateNode;switch(Y.tag){case 5:B=Xc;break;default:B=Xc}\"function\"===typeof vb?vb(B):vb.current=B}}Y=Y.nextEffect}}catch(wb){if(null===Y)throw Error(u(330));Ei(Y,wb);Y=Y.nextEffect}while(null!==Y);Y=\nnull;Vf();W=f}else a.current=c;if(qj)qj=!1,rj=a,sj=b;else for(Y=e;null!==Y;)b=Y.nextEffect,Y.nextEffect=null,Y=b;b=a.firstPendingTime;0===b&&(aj=null);1073741823===b?a===vj?uj++:(uj=0,vj=a):uj=0;\"function\"===typeof Uj&&Uj(c.stateNode,d);Z(a);if(Yi)throw Yi=!1,a=Zi,Zi=null,a;if((W&ej)!==V)return null;gg();return null}function Tj(){for(;null!==Y;){var a=Y.effectTag;0!==(a&256)&&Gi(Y.alternate,Y);0===(a&512)||qj||(qj=!0,dg(97,function(){Dj();return null}));Y=Y.nextEffect}}\nfunction Dj(){if(90!==sj){var a=97<sj?97:sj;sj=90;return cg(a,Vj)}}function Vj(){if(null===rj)return!1;var a=rj;rj=null;if((W&(fj|gj))!==V)throw Error(u(331));var b=W;W|=gj;for(a=a.current.firstEffect;null!==a;){try{var c=a;if(0!==(c.effectTag&512))switch(c.tag){case 0:case 11:case 15:case 22:Hi(5,c),Ii(5,c)}}catch(d){if(null===a)throw Error(u(330));Ei(a,d)}c=a.nextEffect;a.nextEffect=null;a=c}W=b;gg();return!0}\nfunction Wj(a,b,c){b=Ai(c,b);b=Xi(a,b,1073741823);xg(a,b);a=xj(a,1073741823);null!==a&&Z(a)}function Ei(a,b){if(3===a.tag)Wj(a,a,b);else for(var c=a.return;null!==c;){if(3===c.tag){Wj(c,a,b);break}else if(1===c.tag){var d=c.stateNode;if(\"function\"===typeof c.type.getDerivedStateFromError||\"function\"===typeof d.componentDidCatch&&(null===aj||!aj.has(d))){a=Ai(b,a);a=$i(c,a,1073741823);xg(c,a);c=xj(c,1073741823);null!==c&&Z(c);break}}c=c.return}}\nfunction Oj(a,b,c){var d=a.pingCache;null!==d&&d.delete(b);T===a&&U===c?S===vi||S===ui&&1073741823===lj&&$f()-Ti<pj?Ej(a,U):oj=!0:Aj(a,c)&&(b=a.lastPingedTime,0!==b&&b<c||(a.lastPingedTime=c,Z(a)))}function Vi(a,b){var c=a.stateNode;null!==c&&c.delete(b);b=0;0===b&&(b=Gg(),b=Hg(b,a,null));a=xj(a,b);null!==a&&Z(a)}var Rj;\nRj=function(a,b,c){var d=b.expirationTime;if(null!==a){var e=b.pendingProps;if(a.memoizedProps!==e||K.current)rg=!0;else{if(d<c){rg=!1;switch(b.tag){case 3:hi(b);Xh();break;case 5:fh(b);if(b.mode&4&&1!==c&&e.hidden)return b.expirationTime=b.childExpirationTime=1,null;break;case 1:L(b.type)&&Gf(b);break;case 4:dh(b,b.stateNode.containerInfo);break;case 10:d=b.memoizedProps.value;e=b.type._context;I(jg,e._currentValue);e._currentValue=d;break;case 13:if(null!==b.memoizedState){d=b.child.childExpirationTime;\nif(0!==d&&d>=c)return ji(a,b,c);I(M,M.current&1);b=$h(a,b,c);return null!==b?b.sibling:null}I(M,M.current&1);break;case 19:d=b.childExpirationTime>=c;if(0!==(a.effectTag&64)){if(d)return mi(a,b,c);b.effectTag|=64}e=b.memoizedState;null!==e&&(e.rendering=null,e.tail=null);I(M,M.current);if(!d)return null}return $h(a,b,c)}rg=!1}}else rg=!1;b.expirationTime=0;switch(b.tag){case 2:d=b.type;null!==a&&(a.alternate=null,b.alternate=null,b.effectTag|=2);a=b.pendingProps;e=Cf(b,J.current);qg(b,c);e=oh(null,\nb,d,a,e,c);b.effectTag|=1;if(\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof){b.tag=1;b.memoizedState=null;b.updateQueue=null;if(L(d)){var f=!0;Gf(b)}else f=!1;b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null;ug(b);var g=d.getDerivedStateFromProps;\"function\"===typeof g&&Fg(b,d,g,a);e.updater=Jg;b.stateNode=e;e._reactInternalFiber=b;Ng(b,d,a,c);b=gi(null,b,d,!0,f,c)}else b.tag=0,R(null,b,e,c),b=b.child;return b;case 16:a:{e=b.elementType;null!==a&&(a.alternate=\nnull,b.alternate=null,b.effectTag|=2);a=b.pendingProps;ob(e);if(1!==e._status)throw e._result;e=e._result;b.type=e;f=b.tag=Xj(e);a=ig(e,a);switch(f){case 0:b=di(null,b,e,a,c);break a;case 1:b=fi(null,b,e,a,c);break a;case 11:b=Zh(null,b,e,a,c);break a;case 14:b=ai(null,b,e,ig(e.type,a),d,c);break a}throw Error(u(306,e,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:ig(d,e),di(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:ig(d,e),fi(a,b,d,e,c);\ncase 3:hi(b);d=b.updateQueue;if(null===a||null===d)throw Error(u(282));d=b.pendingProps;e=b.memoizedState;e=null!==e?e.element:null;vg(a,b);zg(b,d,null,c);d=b.memoizedState.element;if(d===e)Xh(),b=$h(a,b,c);else{if(e=b.stateNode.hydrate)Ph=Jd(b.stateNode.containerInfo.firstChild),Oh=b,e=Qh=!0;if(e)for(c=Yg(b,null,d,c),b.child=c;c;)c.effectTag=c.effectTag&-3|1024,c=c.sibling;else R(a,b,d,c),Xh();b=b.child}return b;case 5:return fh(b),null===a&&Uh(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:\nnull,g=e.children,Gd(d,e)?g=null:null!==f&&Gd(d,f)&&(b.effectTag|=16),ei(a,b),b.mode&4&&1!==c&&e.hidden?(b.expirationTime=b.childExpirationTime=1,b=null):(R(a,b,g,c),b=b.child),b;case 6:return null===a&&Uh(b),null;case 13:return ji(a,b,c);case 4:return dh(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Xg(b,null,d,c):R(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:ig(d,e),Zh(a,b,d,e,c);case 7:return R(a,b,b.pendingProps,c),b.child;case 8:return R(a,\nb,b.pendingProps.children,c),b.child;case 12:return R(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;g=b.memoizedProps;f=e.value;var h=b.type._context;I(jg,h._currentValue);h._currentValue=f;if(null!==g)if(h=g.value,f=$e(h,f)?0:(\"function\"===typeof d._calculateChangedBits?d._calculateChangedBits(h,f):1073741823)|0,0===f){if(g.children===e.children&&!K.current){b=$h(a,b,c);break a}}else for(h=b.child,null!==h&&(h.return=b);null!==h;){var k=h.dependencies;if(null!==\nk){g=h.child;for(var l=k.firstContext;null!==l;){if(l.context===d&&0!==(l.observedBits&f)){1===h.tag&&(l=wg(c,null),l.tag=2,xg(h,l));h.expirationTime<c&&(h.expirationTime=c);l=h.alternate;null!==l&&l.expirationTime<c&&(l.expirationTime=c);pg(h.return,c);k.expirationTime<c&&(k.expirationTime=c);break}l=l.next}}else g=10===h.tag?h.type===b.type?null:h.child:h.child;if(null!==g)g.return=h;else for(g=h;null!==g;){if(g===b){g=null;break}h=g.sibling;if(null!==h){h.return=g.return;g=h;break}g=g.return}h=\ng}R(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,f=b.pendingProps,d=f.children,qg(b,c),e=sg(e,f.unstable_observedBits),d=d(e),b.effectTag|=1,R(a,b,d,c),b.child;case 14:return e=b.type,f=ig(e,b.pendingProps),f=ig(e.type,f),ai(a,b,e,f,d,c);case 15:return ci(a,b,b.type,b.pendingProps,d,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:ig(d,e),null!==a&&(a.alternate=null,b.alternate=null,b.effectTag|=2),b.tag=1,L(d)?(a=!0,Gf(b)):a=!1,qg(b,c),Lg(b,d,e),Ng(b,d,e,c),gi(null,\nb,d,!0,a,c);case 19:return mi(a,b,c)}throw Error(u(156,b.tag));};var Uj=null,Li=null;function Yj(a){if(\"undefined\"===typeof __REACT_DEVTOOLS_GLOBAL_HOOK__)return!1;var b=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(b.isDisabled||!b.supportsFiber)return!0;try{var c=b.inject(a);Uj=function(a){try{b.onCommitFiberRoot(c,a,void 0,64===(a.current.effectTag&64))}catch(e){}};Li=function(a){try{b.onCommitFiberUnmount(c,a)}catch(e){}}}catch(d){}return!0}\nfunction Zj(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.effectTag=0;this.lastEffect=this.firstEffect=this.nextEffect=null;this.childExpirationTime=this.expirationTime=0;this.alternate=null}function Sh(a,b,c,d){return new Zj(a,b,c,d)}\nfunction bi(a){a=a.prototype;return!(!a||!a.isReactComponent)}function Xj(a){if(\"function\"===typeof a)return bi(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===gb)return 11;if(a===jb)return 14}return 2}\nfunction Sg(a,b){var c=a.alternate;null===c?(c=Sh(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.effectTag=0,c.nextEffect=null,c.firstEffect=null,c.lastEffect=null);c.childExpirationTime=a.childExpirationTime;c.expirationTime=a.expirationTime;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{expirationTime:b.expirationTime,\nfirstContext:b.firstContext,responders:b.responders};c.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction Ug(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)bi(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ab:return Wg(c.children,e,f,b);case fb:g=8;e|=7;break;case bb:g=8;e|=1;break;case cb:return a=Sh(12,c,b,e|8),a.elementType=cb,a.type=cb,a.expirationTime=f,a;case hb:return a=Sh(13,c,b,e),a.type=hb,a.elementType=hb,a.expirationTime=f,a;case ib:return a=Sh(19,c,b,e),a.elementType=ib,a.expirationTime=f,a;default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case db:g=\n10;break a;case eb:g=9;break a;case gb:g=11;break a;case jb:g=14;break a;case kb:g=16;d=null;break a;case lb:g=22;break a}throw Error(u(130,null==a?a:typeof a,\"\"));}b=Sh(g,c,b,e);b.elementType=a;b.type=d;b.expirationTime=f;return b}function Wg(a,b,c,d){a=Sh(7,a,d,b);a.expirationTime=c;return a}function Tg(a,b,c){a=Sh(6,a,null,b);a.expirationTime=c;return a}\nfunction Vg(a,b,c){b=Sh(4,null!==a.children?a.children:[],a.key,b);b.expirationTime=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction ak(a,b,c){this.tag=b;this.current=null;this.containerInfo=a;this.pingCache=this.pendingChildren=null;this.finishedExpirationTime=0;this.finishedWork=null;this.timeoutHandle=-1;this.pendingContext=this.context=null;this.hydrate=c;this.callbackNode=null;this.callbackPriority=90;this.lastExpiredTime=this.lastPingedTime=this.nextKnownPendingLevel=this.lastSuspendedTime=this.firstSuspendedTime=this.firstPendingTime=0}\nfunction Aj(a,b){var c=a.firstSuspendedTime;a=a.lastSuspendedTime;return 0!==c&&c>=b&&a<=b}function xi(a,b){var c=a.firstSuspendedTime,d=a.lastSuspendedTime;c<b&&(a.firstSuspendedTime=b);if(d>b||0===c)a.lastSuspendedTime=b;b<=a.lastPingedTime&&(a.lastPingedTime=0);b<=a.lastExpiredTime&&(a.lastExpiredTime=0)}\nfunction yi(a,b){b>a.firstPendingTime&&(a.firstPendingTime=b);var c=a.firstSuspendedTime;0!==c&&(b>=c?a.firstSuspendedTime=a.lastSuspendedTime=a.nextKnownPendingLevel=0:b>=a.lastSuspendedTime&&(a.lastSuspendedTime=b+1),b>a.nextKnownPendingLevel&&(a.nextKnownPendingLevel=b))}function Cj(a,b){var c=a.lastExpiredTime;if(0===c||c>b)a.lastExpiredTime=b}\nfunction bk(a,b,c,d){var e=b.current,f=Gg(),g=Dg.suspense;f=Hg(f,e,g);a:if(c){c=c._reactInternalFiber;b:{if(dc(c)!==c||1!==c.tag)throw Error(u(170));var h=c;do{switch(h.tag){case 3:h=h.stateNode.context;break b;case 1:if(L(h.type)){h=h.stateNode.__reactInternalMemoizedMergedChildContext;break b}}h=h.return}while(null!==h);throw Error(u(171));}if(1===c.tag){var k=c.type;if(L(k)){c=Ff(c,k,h);break a}}c=h}else c=Af;null===b.context?b.context=c:b.pendingContext=c;b=wg(f,g);b.payload={element:a};d=void 0===\nd?null:d;null!==d&&(b.callback=d);xg(e,b);Ig(e,f);return f}function ck(a){a=a.current;if(!a.child)return null;switch(a.child.tag){case 5:return a.child.stateNode;default:return a.child.stateNode}}function dk(a,b){a=a.memoizedState;null!==a&&null!==a.dehydrated&&a.retryTime<b&&(a.retryTime=b)}function ek(a,b){dk(a,b);(a=a.alternate)&&dk(a,b)}\nfunction fk(a,b,c){c=null!=c&&!0===c.hydrate;var d=new ak(a,b,c),e=Sh(3,null,null,2===b?7:1===b?3:0);d.current=e;e.stateNode=d;ug(e);a[Od]=d.current;c&&0!==b&&Jc(a,9===a.nodeType?a:a.ownerDocument);this._internalRoot=d}fk.prototype.render=function(a){bk(a,this._internalRoot,null,null)};fk.prototype.unmount=function(){var a=this._internalRoot,b=a.containerInfo;bk(null,a,null,function(){b[Od]=null})};\nfunction gk(a){return!(!a||1!==a.nodeType&&9!==a.nodeType&&11!==a.nodeType&&(8!==a.nodeType||\" react-mount-point-unstable \"!==a.nodeValue))}function hk(a,b){b||(b=a?9===a.nodeType?a.documentElement:a.firstChild:null,b=!(!b||1!==b.nodeType||!b.hasAttribute(\"data-reactroot\")));if(!b)for(var c;c=a.lastChild;)a.removeChild(c);return new fk(a,0,b?{hydrate:!0}:void 0)}\nfunction ik(a,b,c,d,e){var f=c._reactRootContainer;if(f){var g=f._internalRoot;if(\"function\"===typeof e){var h=e;e=function(){var a=ck(g);h.call(a)}}bk(b,g,a,e)}else{f=c._reactRootContainer=hk(c,d);g=f._internalRoot;if(\"function\"===typeof e){var k=e;e=function(){var a=ck(g);k.call(a)}}Nj(function(){bk(b,g,a,e)})}return ck(g)}function jk(a,b,c){var d=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:$a,key:null==d?null:\"\"+d,children:a,containerInfo:b,implementation:c}}\nwc=function(a){if(13===a.tag){var b=hg(Gg(),150,100);Ig(a,b);ek(a,b)}};xc=function(a){13===a.tag&&(Ig(a,3),ek(a,3))};yc=function(a){if(13===a.tag){var b=Gg();b=Hg(b,a,null);Ig(a,b);ek(a,b)}};\nza=function(a,b,c){switch(b){case \"input\":Cb(a,c);b=c.name;if(\"radio\"===c.type&&null!=b){for(c=a;c.parentNode;)c=c.parentNode;c=c.querySelectorAll(\"input[name=\"+JSON.stringify(\"\"+b)+'][type=\"radio\"]');for(b=0;b<c.length;b++){var d=c[b];if(d!==a&&d.form===a.form){var e=Qd(d);if(!e)throw Error(u(90));yb(d);Cb(d,e)}}}break;case \"textarea\":Kb(a,c);break;case \"select\":b=c.value,null!=b&&Hb(a,!!c.multiple,b,!1)}};Fa=Mj;\nGa=function(a,b,c,d,e){var f=W;W|=4;try{return cg(98,a.bind(null,b,c,d,e))}finally{W=f,W===V&&gg()}};Ha=function(){(W&(1|fj|gj))===V&&(Lj(),Dj())};Ia=function(a,b){var c=W;W|=2;try{return a(b)}finally{W=c,W===V&&gg()}};function kk(a,b){var c=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!gk(b))throw Error(u(200));return jk(a,b,null,c)}var lk={Events:[Nc,Pd,Qd,xa,ta,Xd,function(a){jc(a,Wd)},Da,Ea,id,mc,Dj,{current:!1}]};\n(function(a){var b=a.findFiberByHostInstance;return Yj(n({},a,{overrideHookState:null,overrideProps:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:Wa.ReactCurrentDispatcher,findHostInstanceByFiber:function(a){a=hc(a);return null===a?null:a.stateNode},findFiberByHostInstance:function(a){return b?b(a):null},findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null}))})({findFiberByHostInstance:tc,bundleType:0,version:\"16.14.0\",\nrendererPackageName:\"react-dom\"});exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=lk;exports.createPortal=kk;exports.findDOMNode=function(a){if(null==a)return null;if(1===a.nodeType)return a;var b=a._reactInternalFiber;if(void 0===b){if(\"function\"===typeof a.render)throw Error(u(188));throw Error(u(268,Object.keys(a)));}a=hc(b);a=null===a?null:a.stateNode;return a};\nexports.flushSync=function(a,b){if((W&(fj|gj))!==V)throw Error(u(187));var c=W;W|=1;try{return cg(99,a.bind(null,b))}finally{W=c,gg()}};exports.hydrate=function(a,b,c){if(!gk(b))throw Error(u(200));return ik(null,a,b,!0,c)};exports.render=function(a,b,c){if(!gk(b))throw Error(u(200));return ik(null,a,b,!1,c)};\nexports.unmountComponentAtNode=function(a){if(!gk(a))throw Error(u(40));return a._reactRootContainer?(Nj(function(){ik(null,null,a,!1,function(){a._reactRootContainer=null;a[Od]=null})}),!0):!1};exports.unstable_batchedUpdates=Mj;exports.unstable_createPortal=function(a,b){return kk(a,b,2<arguments.length&&void 0!==arguments[2]?arguments[2]:null)};\nexports.unstable_renderSubtreeIntoContainer=function(a,b,c,d){if(!gk(c))throw Error(u(200));if(null==a||void 0===a._reactInternalFiber)throw Error(u(38));return ik(a,b,c,!1,d)};exports.version=\"16.14.0\";\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","/** @license React v0.19.1\n * scheduler.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var f,g,h,k,l;\nif(\"undefined\"===typeof window||\"function\"!==typeof MessageChannel){var p=null,q=null,t=function(){if(null!==p)try{var a=exports.unstable_now();p(!0,a);p=null}catch(b){throw setTimeout(t,0),b;}},u=Date.now();exports.unstable_now=function(){return Date.now()-u};f=function(a){null!==p?setTimeout(f,0,a):(p=a,setTimeout(t,0))};g=function(a,b){q=setTimeout(a,b)};h=function(){clearTimeout(q)};k=function(){return!1};l=exports.unstable_forceFrameRate=function(){}}else{var w=window.performance,x=window.Date,\ny=window.setTimeout,z=window.clearTimeout;if(\"undefined\"!==typeof console){var A=window.cancelAnimationFrame;\"function\"!==typeof window.requestAnimationFrame&&console.error(\"This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills\");\"function\"!==typeof A&&console.error(\"This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills\")}if(\"object\"===\ntypeof w&&\"function\"===typeof w.now)exports.unstable_now=function(){return w.now()};else{var B=x.now();exports.unstable_now=function(){return x.now()-B}}var C=!1,D=null,E=-1,F=5,G=0;k=function(){return exports.unstable_now()>=G};l=function(){};exports.unstable_forceFrameRate=function(a){0>a||125<a?console.error(\"forceFrameRate takes a positive int between 0 and 125, forcing framerates higher than 125 fps is not unsupported\"):F=0<a?Math.floor(1E3/a):5};var H=new MessageChannel,I=H.port2;H.port1.onmessage=\nfunction(){if(null!==D){var a=exports.unstable_now();G=a+F;try{D(!0,a)?I.postMessage(null):(C=!1,D=null)}catch(b){throw I.postMessage(null),b;}}else C=!1};f=function(a){D=a;C||(C=!0,I.postMessage(null))};g=function(a,b){E=y(function(){a(exports.unstable_now())},b)};h=function(){z(E);E=-1}}function J(a,b){var c=a.length;a.push(b);a:for(;;){var d=c-1>>>1,e=a[d];if(void 0!==e&&0<K(e,b))a[d]=b,a[c]=e,c=d;else break a}}function L(a){a=a[0];return void 0===a?null:a}\nfunction M(a){var b=a[0];if(void 0!==b){var c=a.pop();if(c!==b){a[0]=c;a:for(var d=0,e=a.length;d<e;){var m=2*(d+1)-1,n=a[m],v=m+1,r=a[v];if(void 0!==n&&0>K(n,c))void 0!==r&&0>K(r,n)?(a[d]=r,a[v]=c,d=v):(a[d]=n,a[m]=c,d=m);else if(void 0!==r&&0>K(r,c))a[d]=r,a[v]=c,d=v;else break a}}return b}return null}function K(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}var N=[],O=[],P=1,Q=null,R=3,S=!1,T=!1,U=!1;\nfunction V(a){for(var b=L(O);null!==b;){if(null===b.callback)M(O);else if(b.startTime<=a)M(O),b.sortIndex=b.expirationTime,J(N,b);else break;b=L(O)}}function W(a){U=!1;V(a);if(!T)if(null!==L(N))T=!0,f(X);else{var b=L(O);null!==b&&g(W,b.startTime-a)}}\nfunction X(a,b){T=!1;U&&(U=!1,h());S=!0;var c=R;try{V(b);for(Q=L(N);null!==Q&&(!(Q.expirationTime>b)||a&&!k());){var d=Q.callback;if(null!==d){Q.callback=null;R=Q.priorityLevel;var e=d(Q.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?Q.callback=e:Q===L(N)&&M(N);V(b)}else M(N);Q=L(N)}if(null!==Q)var m=!0;else{var n=L(O);null!==n&&g(W,n.startTime-b);m=!1}return m}finally{Q=null,R=c,S=!1}}\nfunction Y(a){switch(a){case 1:return-1;case 2:return 250;case 5:return 1073741823;case 4:return 1E4;default:return 5E3}}var Z=l;exports.unstable_IdlePriority=5;exports.unstable_ImmediatePriority=1;exports.unstable_LowPriority=4;exports.unstable_NormalPriority=3;exports.unstable_Profiling=null;exports.unstable_UserBlockingPriority=2;exports.unstable_cancelCallback=function(a){a.callback=null};exports.unstable_continueExecution=function(){T||S||(T=!0,f(X))};\nexports.unstable_getCurrentPriorityLevel=function(){return R};exports.unstable_getFirstCallbackNode=function(){return L(N)};exports.unstable_next=function(a){switch(R){case 1:case 2:case 3:var b=3;break;default:b=R}var c=R;R=b;try{return a()}finally{R=c}};exports.unstable_pauseExecution=function(){};exports.unstable_requestPaint=Z;exports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=R;R=a;try{return b()}finally{R=c}};\nexports.unstable_scheduleCallback=function(a,b,c){var d=exports.unstable_now();if(\"object\"===typeof c&&null!==c){var e=c.delay;e=\"number\"===typeof e&&0<e?d+e:d;c=\"number\"===typeof c.timeout?c.timeout:Y(a)}else c=Y(a),e=d;c=e+c;a={id:P++,callback:b,priorityLevel:a,startTime:e,expirationTime:c,sortIndex:-1};e>d?(a.sortIndex=e,J(O,a),null===L(N)&&a===L(O)&&(U?h():U=!0,g(W,e-d))):(a.sortIndex=c,J(N,a),T||S||(T=!0,f(X)));return a};\nexports.unstable_shouldYield=function(){var a=exports.unstable_now();V(a);var b=L(N);return b!==Q&&null!==Q&&null!==b&&null!==b.callback&&b.startTime<=a&&b.expirationTime<Q.expirationTime||k()};exports.unstable_wrapCallback=function(a){var b=R;return function(){var c=R;R=b;try{return a.apply(this,arguments)}finally{R=c}}};\n","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","/** @license React v17.0.2\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var b=60103,c=60106,d=60107,e=60108,f=60114,g=60109,h=60110,k=60112,l=60113,m=60120,n=60115,p=60116,q=60121,r=60122,u=60117,v=60129,w=60131;\nif(\"function\"===typeof Symbol&&Symbol.for){var x=Symbol.for;b=x(\"react.element\");c=x(\"react.portal\");d=x(\"react.fragment\");e=x(\"react.strict_mode\");f=x(\"react.profiler\");g=x(\"react.provider\");h=x(\"react.context\");k=x(\"react.forward_ref\");l=x(\"react.suspense\");m=x(\"react.suspense_list\");n=x(\"react.memo\");p=x(\"react.lazy\");q=x(\"react.block\");r=x(\"react.server.block\");u=x(\"react.fundamental\");v=x(\"react.debug_trace_mode\");w=x(\"react.legacy_hidden\")}\nfunction y(a){if(\"object\"===typeof a&&null!==a){var t=a.$$typeof;switch(t){case b:switch(a=a.type,a){case d:case f:case e:case l:case m:return a;default:switch(a=a&&a.$$typeof,a){case h:case k:case p:case n:case g:return a;default:return t}}case c:return t}}}var z=g,A=b,B=k,C=d,D=p,E=n,F=c,G=f,H=e,I=l;exports.ContextConsumer=h;exports.ContextProvider=z;exports.Element=A;exports.ForwardRef=B;exports.Fragment=C;exports.Lazy=D;exports.Memo=E;exports.Portal=F;exports.Profiler=G;exports.StrictMode=H;\nexports.Suspense=I;exports.isAsyncMode=function(){return!1};exports.isConcurrentMode=function(){return!1};exports.isContextConsumer=function(a){return y(a)===h};exports.isContextProvider=function(a){return y(a)===g};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===b};exports.isForwardRef=function(a){return y(a)===k};exports.isFragment=function(a){return y(a)===d};exports.isLazy=function(a){return y(a)===p};exports.isMemo=function(a){return y(a)===n};\nexports.isPortal=function(a){return y(a)===c};exports.isProfiler=function(a){return y(a)===f};exports.isStrictMode=function(a){return y(a)===e};exports.isSuspense=function(a){return y(a)===l};exports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===d||a===f||a===v||a===e||a===l||a===m||a===w||\"object\"===typeof a&&null!==a&&(a.$$typeof===p||a.$$typeof===n||a.$$typeof===g||a.$$typeof===h||a.$$typeof===k||a.$$typeof===u||a.$$typeof===q||a[0]===r)?!0:!1};\nexports.typeOf=y;\n","module.exports = Array.isArray || function (arr) {\n return Object.prototype.toString.call(arr) == '[object Array]';\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","var 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 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 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 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 * 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 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 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","var isFunction = require('./isFunction'),\n isMasked = require('./_isMasked'),\n isObject = require('./isObject'),\n toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","/** 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 Hash = require('./_Hash'),\n ListCache = require('./_ListCache'),\n Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nmodule.exports = mapCacheClear;\n","var hashClear = require('./_hashClear'),\n hashDelete = require('./_hashDelete'),\n hashGet = require('./_hashGet'),\n hashHas = require('./_hashHas'),\n hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nmodule.exports = hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nmodule.exports = isKeyable;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nmodule.exports = setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;\n","var baseIndexOf = require('./_baseIndexOf');\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\nmodule.exports = arrayIncludes;\n","var baseFindIndex = require('./_baseFindIndex'),\n baseIsNaN = require('./_baseIsNaN'),\n strictIndexOf = require('./_strictIndexOf');\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\nmodule.exports = baseIndexOf;\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\nmodule.exports = baseIsNaN;\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\nmodule.exports = strictIndexOf;\n","/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arrayIncludesWith;\n","var Set = require('./_Set'),\n noop = require('./noop'),\n setToArray = require('./_setToArray');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\nvar createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n};\n\nmodule.exports = createSet;\n","/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\nfunction noop() {\n // No operation performed.\n}\n\nmodule.exports = noop;\n","var isArrayLike = require('./isArrayLike'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\nmodule.exports = isArrayLikeObject;\n","/**\n * Determines whether a component is controlled.\n * @param props - Component props\n * @param valueProp - Prop containing the controlled value\n * @returns true if controlled, false if uncontrolled\n */\nexport function isControlled<P>(props: P, valueProp: keyof P): boolean {\n // React's built-in <input> considers a prop to be provided if its value is non-null/undefined.\n // Mirror that behavior here (rather than checking for just undefined).\n return props[valueProp] !== undefined && props[valueProp] !== null;\n}\n","var createToPairs = require('./_createToPairs'),\n keys = require('./keys');\n\n/**\n * Creates an array of own enumerable string keyed-value pairs for `object`\n * which can be consumed by `_.fromPairs`. If `object` is a map or set, its\n * entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entries\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairs(new Foo);\n * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed)\n */\nvar toPairs = createToPairs(keys);\n\nmodule.exports = toPairs;\n","var baseToPairs = require('./_baseToPairs'),\n getTag = require('./_getTag'),\n mapToArray = require('./_mapToArray'),\n setToPairs = require('./_setToPairs');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n setTag = '[object Set]';\n\n/**\n * Creates a `_.toPairs` or `_.toPairsIn` function.\n *\n * @private\n * @param {Function} keysFunc The function to get the keys of a given object.\n * @returns {Function} Returns the new pairs function.\n */\nfunction createToPairs(keysFunc) {\n return function(object) {\n var tag = getTag(object);\n if (tag == mapTag) {\n return mapToArray(object);\n }\n if (tag == setTag) {\n return setToPairs(object);\n }\n return baseToPairs(object, keysFunc(object));\n };\n}\n\nmodule.exports = createToPairs;\n","var arrayMap = require('./_arrayMap');\n\n/**\n * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array\n * of key-value pairs for `object` corresponding to the property names 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 key-value pairs.\n */\nfunction baseToPairs(object, props) {\n return arrayMap(props, function(key) {\n return [key, object[key]];\n });\n}\n\nmodule.exports = baseToPairs;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nmodule.exports = DataView;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nmodule.exports = Promise;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nmodule.exports = WeakMap;\n","/**\n * Converts `set` to its value-value pairs.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the value-value pairs.\n */\nfunction setToPairs(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = [value, value];\n });\n return result;\n}\n\nmodule.exports = setToPairs;\n","var baseTimes = require('./_baseTimes'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isIndex = require('./_isIndex'),\n isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = arrayLikeKeys;\n","/**\n * 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","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = stubFalse;\n","var baseGetTag = require('./_baseGetTag'),\n isLength = require('./isLength'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n","var 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 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","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nmodule.exports = isPrototype;\n","var 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","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = toInt;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nfunction toInt(str, radix) {\n (0, _assertString.default)(str);\n return parseInt(str, radix || 10);\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = toBoolean;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nfunction toBoolean(str, strict) {\n (0, _assertString.default)(str);\n if (strict) {\n return str === '1' || /^true$/i.test(str);\n }\n return str !== '0' && !/^false$/i.test(str) && str !== '';\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = equals;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nfunction equals(str, comparison) {\n (0, _assertString.default)(str);\n return str === comparison;\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = contains;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nvar _toString = _interopRequireDefault(require(\"./util/toString\"));\nvar _merge = _interopRequireDefault(require(\"./util/merge\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nvar defaulContainsOptions = {\n ignoreCase: false,\n minOccurrences: 1\n};\nfunction contains(str, elem, options) {\n (0, _assertString.default)(str);\n options = (0, _merge.default)(options, defaulContainsOptions);\n if (options.ignoreCase) {\n return str.toLowerCase().split((0, _toString.default)(elem).toLowerCase()).length > options.minOccurrences;\n }\n return str.split((0, _toString.default)(elem)).length > options.minOccurrences;\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = matches;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nfunction matches(str, pattern, modifiers) {\n (0, _assertString.default)(str);\n if (Object.prototype.toString.call(pattern) !== '[object RegExp]') {\n pattern = new RegExp(pattern, modifiers);\n }\n return !!str.match(pattern);\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isURL;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nvar _isFQDN = _interopRequireDefault(require(\"./isFQDN\"));\nvar _isIP = _interopRequireDefault(require(\"./isIP\"));\nvar _merge = _interopRequireDefault(require(\"./util/merge\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n/*\noptions for isURL method\n\nrequire_protocol - if set as true isURL will return false if protocol is not present in the URL\nrequire_valid_protocol - isURL will check if the URL's protocol is present in the protocols option\nprotocols - valid protocols can be modified with this option\nrequire_host - if set as false isURL will not check if host is present in the URL\nrequire_port - if set as true isURL will check if port is present in the URL\nallow_protocol_relative_urls - if set as true protocol relative URLs will be allowed\nvalidate_length - if set as false isURL will skip string length validation (IE maximum is 2083)\n\n*/\n\nvar default_url_options = {\n protocols: ['http', 'https', 'ftp'],\n require_tld: true,\n require_protocol: false,\n require_host: true,\n require_port: false,\n require_valid_protocol: true,\n allow_underscores: false,\n allow_trailing_dot: false,\n allow_protocol_relative_urls: false,\n allow_fragments: true,\n allow_query_components: true,\n validate_length: true\n};\nvar wrapped_ipv6 = /^\\[([^\\]]+)\\](?::([0-9]+))?$/;\nfunction isRegExp(obj) {\n return Object.prototype.toString.call(obj) === '[object RegExp]';\n}\nfunction checkHost(host, matches) {\n for (var i = 0; i < matches.length; i++) {\n var match = matches[i];\n if (host === match || isRegExp(match) && match.test(host)) {\n return true;\n }\n }\n return false;\n}\nfunction isURL(url, options) {\n (0, _assertString.default)(url);\n if (!url || /[\\s<>]/.test(url)) {\n return false;\n }\n if (url.indexOf('mailto:') === 0) {\n return false;\n }\n options = (0, _merge.default)(options, default_url_options);\n if (options.validate_length && url.length >= 2083) {\n return false;\n }\n if (!options.allow_fragments && url.includes('#')) {\n return false;\n }\n if (!options.allow_query_components && (url.includes('?') || url.includes('&'))) {\n return false;\n }\n var protocol, auth, host, hostname, port, port_str, split, ipv6;\n split = url.split('#');\n url = split.shift();\n split = url.split('?');\n url = split.shift();\n split = url.split('://');\n if (split.length > 1) {\n protocol = split.shift().toLowerCase();\n if (options.require_valid_protocol && options.protocols.indexOf(protocol) === -1) {\n return false;\n }\n } else if (options.require_protocol) {\n return false;\n } else if (url.slice(0, 2) === '//') {\n if (!options.allow_protocol_relative_urls) {\n return false;\n }\n split[0] = url.slice(2);\n }\n url = split.join('://');\n if (url === '') {\n return false;\n }\n split = url.split('/');\n url = split.shift();\n if (url === '' && !options.require_host) {\n return true;\n }\n split = url.split('@');\n if (split.length > 1) {\n if (options.disallow_auth) {\n return false;\n }\n if (split[0] === '') {\n return false;\n }\n auth = split.shift();\n if (auth.indexOf(':') >= 0 && auth.split(':').length > 2) {\n return false;\n }\n var _auth$split = auth.split(':'),\n _auth$split2 = _slicedToArray(_auth$split, 2),\n user = _auth$split2[0],\n password = _auth$split2[1];\n if (user === '' && password === '') {\n return false;\n }\n }\n hostname = split.join('@');\n port_str = null;\n ipv6 = null;\n var ipv6_match = hostname.match(wrapped_ipv6);\n if (ipv6_match) {\n host = '';\n ipv6 = ipv6_match[1];\n port_str = ipv6_match[2] || null;\n } else {\n split = hostname.split(':');\n host = split.shift();\n if (split.length) {\n port_str = split.join(':');\n }\n }\n if (port_str !== null && port_str.length > 0) {\n port = parseInt(port_str, 10);\n if (!/^[0-9]+$/.test(port_str) || port <= 0 || port > 65535) {\n return false;\n }\n } else if (options.require_port) {\n return false;\n }\n if (options.host_whitelist) {\n return checkHost(host, options.host_whitelist);\n }\n if (host === '' && !options.require_host) {\n return true;\n }\n if (!(0, _isIP.default)(host) && !(0, _isFQDN.default)(host, options) && (!ipv6 || !(0, _isIP.default)(ipv6, 6))) {\n return false;\n }\n host = host || ipv6;\n if (options.host_blacklist && checkHost(host, options.host_blacklist)) {\n return false;\n }\n return true;\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isMACAddress;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nvar macAddress48 = /^(?:[0-9a-fA-F]{2}([-:\\s]))([0-9a-fA-F]{2}\\1){4}([0-9a-fA-F]{2})$/;\nvar macAddress48NoSeparators = /^([0-9a-fA-F]){12}$/;\nvar macAddress48WithDots = /^([0-9a-fA-F]{4}\\.){2}([0-9a-fA-F]{4})$/;\nvar macAddress64 = /^(?:[0-9a-fA-F]{2}([-:\\s]))([0-9a-fA-F]{2}\\1){6}([0-9a-fA-F]{2})$/;\nvar macAddress64NoSeparators = /^([0-9a-fA-F]){16}$/;\nvar macAddress64WithDots = /^([0-9a-fA-F]{4}\\.){3}([0-9a-fA-F]{4})$/;\nfunction isMACAddress(str, options) {\n (0, _assertString.default)(str);\n if (options !== null && options !== void 0 && options.eui) {\n options.eui = String(options.eui);\n }\n /**\n * @deprecated `no_colons` TODO: remove it in the next major\n */\n if (options !== null && options !== void 0 && options.no_colons || options !== null && options !== void 0 && options.no_separators) {\n if (options.eui === '48') {\n return macAddress48NoSeparators.test(str);\n }\n if (options.eui === '64') {\n return macAddress64NoSeparators.test(str);\n }\n return macAddress48NoSeparators.test(str) || macAddress64NoSeparators.test(str);\n }\n if ((options === null || options === void 0 ? void 0 : options.eui) === '48') {\n return macAddress48.test(str) || macAddress48WithDots.test(str);\n }\n if ((options === null || options === void 0 ? void 0 : options.eui) === '64') {\n return macAddress64.test(str) || macAddress64WithDots.test(str);\n }\n return isMACAddress(str, {\n eui: '48'\n }) || isMACAddress(str, {\n eui: '64'\n });\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isIPRange;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nvar _isIP = _interopRequireDefault(require(\"./isIP\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nvar subnetMaybe = /^\\d{1,3}$/;\nvar v4Subnet = 32;\nvar v6Subnet = 128;\nfunction isIPRange(str) {\n var version = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n (0, _assertString.default)(str);\n var parts = str.split('/');\n\n // parts[0] -> ip, parts[1] -> subnet\n if (parts.length !== 2) {\n return false;\n }\n if (!subnetMaybe.test(parts[1])) {\n return false;\n }\n\n // Disallow preceding 0 i.e. 01, 02, ...\n if (parts[1].length > 1 && parts[1].startsWith('0')) {\n return false;\n }\n var isValidIP = (0, _isIP.default)(parts[0], version);\n if (!isValidIP) {\n return false;\n }\n\n // Define valid subnet according to IP's version\n var expectedSubnet = null;\n switch (String(version)) {\n case '4':\n expectedSubnet = v4Subnet;\n break;\n case '6':\n expectedSubnet = v6Subnet;\n break;\n default:\n expectedSubnet = (0, _isIP.default)(parts[0], '6') ? v6Subnet : v4Subnet;\n }\n return parts[1] <= expectedSubnet && parts[1] >= 0;\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isTime;\nvar _merge = _interopRequireDefault(require(\"./util/merge\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nvar default_time_options = {\n hourFormat: 'hour24',\n mode: 'default'\n};\nvar formats = {\n hour24: {\n default: /^([01]?[0-9]|2[0-3]):([0-5][0-9])$/,\n withSeconds: /^([01]?[0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])$/\n },\n hour12: {\n default: /^(0?[1-9]|1[0-2]):([0-5][0-9]) (A|P)M$/,\n withSeconds: /^(0?[1-9]|1[0-2]):([0-5][0-9]):([0-5][0-9]) (A|P)M$/\n }\n};\nfunction isTime(input, options) {\n options = (0, _merge.default)(options, default_time_options);\n if (typeof input !== 'string') return false;\n return formats[options.hourFormat][options.mode].test(input);\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isBoolean;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nvar defaultOptions = {\n loose: false\n};\nvar strictBooleans = ['true', 'false', '1', '0'];\nvar looseBooleans = [].concat(strictBooleans, ['yes', 'no']);\nfunction isBoolean(str) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultOptions;\n (0, _assertString.default)(str);\n if (options.loose) {\n return looseBooleans.includes(str.toLowerCase());\n }\n return strictBooleans.includes(str);\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isLocale;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n/*\n = 3ALPHA ; selected ISO 639 codes\n *2(\"-\" 3ALPHA) ; permanently reserved\n */\nvar extlang = '([A-Za-z]{3}(-[A-Za-z]{3}){0,2})';\n\n/*\n = 2*3ALPHA ; shortest ISO 639 code\n [\"-\" extlang] ; sometimes followed by\n ; extended language subtags\n / 4ALPHA ; or reserved for future use\n / 5*8ALPHA ; or registered language subtag\n */\nvar language = \"(([a-zA-Z]{2,3}(-\".concat(extlang, \")?)|([a-zA-Z]{5,8}))\");\n\n/*\n = 4ALPHA ; ISO 15924 code\n */\nvar script = '([A-Za-z]{4})';\n\n/*\n = 2ALPHA ; ISO 3166-1 code\n / 3DIGIT ; UN M.49 code\n */\nvar region = '([A-Za-z]{2}|\\\\d{3})';\n\n/*\n = 5*8alphanum ; registered variants\n / (DIGIT 3alphanum)\n */\nvar variant = '([A-Za-z0-9]{5,8}|(\\\\d[A-Z-a-z0-9]{3}))';\n\n/*\n = DIGIT ; 0 - 9\n / %x41-57 ; A - W\n / %x59-5A ; Y - Z\n / %x61-77 ; a - w\n / %x79-7A ; y - z\n */\nvar singleton = '(\\\\d|[A-W]|[Y-Z]|[a-w]|[y-z])';\n\n/*\n = singleton 1*(\"-\" (2*8alphanum))\n ; Single alphanumerics\n ; \"x\" reserved for private use\n */\nvar extension = \"(\".concat(singleton, \"(-[A-Za-z0-9]{2,8})+)\");\n\n/*\n = \"x\" 1*(\"-\" (1*8alphanum))\n */\nvar privateuse = '(x(-[A-Za-z0-9]{1,8})+)';\n\n// irregular tags do not match the 'langtag' production and would not\n// otherwise be considered 'well-formed'. These tags are all valid, but\n// most are deprecated in favor of more modern subtags or subtag combination\n\nvar irregular = '((en-GB-oed)|(i-ami)|(i-bnn)|(i-default)|(i-enochian)|' + '(i-hak)|(i-klingon)|(i-lux)|(i-mingo)|(i-navajo)|(i-pwn)|(i-tao)|' + '(i-tay)|(i-tsu)|(sgn-BE-FR)|(sgn-BE-NL)|(sgn-CH-DE))';\n\n// regular tags match the 'langtag' production, but their subtags are not\n// extended language or variant subtags: their meaning is defined by\n// their registration and all of these are deprecated in favor of a more\n// modern subtag or sequence of subtags\n\nvar regular = '((art-lojban)|(cel-gaulish)|(no-bok)|(no-nyn)|(zh-guoyu)|' + '(zh-hakka)|(zh-min)|(zh-min-nan)|(zh-xiang))';\n\n/*\n = irregular ; non-redundant tags registered\n / regular ; during the RFC 3066 era\n\n */\nvar grandfathered = \"(\".concat(irregular, \"|\").concat(regular, \")\");\n\n/*\n RFC 5646 defines delimitation of subtags via a hyphen:\n\n \"Subtag\" refers to a specific section of a tag, delimited by a\n hyphen, such as the subtags 'zh', 'Hant', and 'CN' in the tag \"zh-\n Hant-CN\". Examples of subtags in this document are enclosed in\n single quotes ('Hant')\n\n However, we need to add \"_\" to maintain the existing behaviour.\n */\nvar delimiter = '(-|_)';\n\n/*\n = language\n [\"-\" script]\n [\"-\" region]\n *(\"-\" variant)\n *(\"-\" extension)\n [\"-\" privateuse]\n */\nvar langtag = \"\".concat(language, \"(\").concat(delimiter).concat(script, \")?(\").concat(delimiter).concat(region, \")?(\").concat(delimiter).concat(variant, \")*(\").concat(delimiter).concat(extension, \")*(\").concat(delimiter).concat(privateuse, \")?\");\n\n/*\n Regex implementation based on BCP RFC 5646\n Tags for Identifying Languages\n https://www.rfc-editor.org/rfc/rfc5646.html\n */\nvar languageTagRegex = new RegExp(\"(^\".concat(privateuse, \"$)|(^\").concat(grandfathered, \"$)|(^\").concat(langtag, \"$)\"));\nfunction isLocale(str) {\n (0, _assertString.default)(str);\n return languageTagRegex.test(str);\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isAbaRouting;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n// http://www.brainjar.com/js/validation/\n// https://www.aba.com/news-research/research-analysis/routing-number-policy-procedures\n// series reserved for future use are excluded\nvar isRoutingReg = /^(?!(1[3-9])|(20)|(3[3-9])|(4[0-9])|(5[0-9])|(60)|(7[3-9])|(8[1-9])|(9[0-2])|(9[3-9]))[0-9]{9}$/;\nfunction isAbaRouting(str) {\n (0, _assertString.default)(str);\n if (!isRoutingReg.test(str)) return false;\n var checkSumVal = 0;\n for (var i = 0; i < str.length; i++) {\n if (i % 3 === 0) checkSumVal += str[i] * 3;else if (i % 3 === 1) checkSumVal += str[i] * 7;else checkSumVal += str[i] * 1;\n }\n return checkSumVal % 10 === 0;\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isAlpha;\nexports.locales = void 0;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nvar _alpha = require(\"./alpha\");\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nfunction isAlpha(_str) {\n var locale = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'en-US';\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n (0, _assertString.default)(_str);\n var str = _str;\n var ignore = options.ignore;\n if (ignore) {\n if (ignore instanceof RegExp) {\n str = str.replace(ignore, '');\n } else if (typeof ignore === 'string') {\n str = str.replace(new RegExp(\"[\".concat(ignore.replace(/[-[\\]{}()*+?.,\\\\^$|#\\\\s]/g, '\\\\$&'), \"]\"), 'g'), ''); // escape regex for ignore\n } else {\n throw new Error('ignore should be instance of a String or RegExp');\n }\n }\n if (locale in _alpha.alpha) {\n return _alpha.alpha[locale].test(str);\n }\n throw new Error(\"Invalid locale '\".concat(locale, \"'\"));\n}\nvar locales = exports.locales = Object.keys(_alpha.alpha);","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isAlphanumeric;\nexports.locales = void 0;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nvar _alpha = require(\"./alpha\");\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nfunction isAlphanumeric(_str) {\n var locale = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'en-US';\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n (0, _assertString.default)(_str);\n var str = _str;\n var ignore = options.ignore;\n if (ignore) {\n if (ignore instanceof RegExp) {\n str = str.replace(ignore, '');\n } else if (typeof ignore === 'string') {\n str = str.replace(new RegExp(\"[\".concat(ignore.replace(/[-[\\]{}()*+?.,\\\\^$|#\\\\s]/g, '\\\\$&'), \"]\"), 'g'), ''); // escape regex for ignore\n } else {\n throw new Error('ignore should be instance of a String or RegExp');\n }\n }\n if (locale in _alpha.alphanumeric) {\n return _alpha.alphanumeric[locale].test(str);\n }\n throw new Error(\"Invalid locale '\".concat(locale, \"'\"));\n}\nvar locales = exports.locales = Object.keys(_alpha.alphanumeric);","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isNumeric;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nvar _alpha = require(\"./alpha\");\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nvar numericNoSymbols = /^[0-9]+$/;\nfunction isNumeric(str, options) {\n (0, _assertString.default)(str);\n if (options && options.no_symbols) {\n return numericNoSymbols.test(str);\n }\n return new RegExp(\"^[+-]?([0-9]*[\".concat((options || {}).locale ? _alpha.decimal[options.locale] : '.', \"])?[0-9]+$\")).test(str);\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isPassportNumber;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n/**\n * Reference:\n * https://en.wikipedia.org/ -- Wikipedia\n * https://docs.microsoft.com/en-us/microsoft-365/compliance/eu-passport-number -- EU Passport Number\n * https://countrycode.org/ -- Country Codes\n */\nvar passportRegexByCountryCode = {\n AM: /^[A-Z]{2}\\d{7}$/,\n // ARMENIA\n AR: /^[A-Z]{3}\\d{6}$/,\n // ARGENTINA\n AT: /^[A-Z]\\d{7}$/,\n // AUSTRIA\n AU: /^[A-Z]\\d{7}$/,\n // AUSTRALIA\n AZ: /^[A-Z]{1}\\d{8}$/,\n // AZERBAIJAN\n BE: /^[A-Z]{2}\\d{6}$/,\n // BELGIUM\n BG: /^\\d{9}$/,\n // BULGARIA\n BR: /^[A-Z]{2}\\d{6}$/,\n // BRAZIL\n BY: /^[A-Z]{2}\\d{7}$/,\n // BELARUS\n CA: /^[A-Z]{2}\\d{6}$/,\n // CANADA\n CH: /^[A-Z]\\d{7}$/,\n // SWITZERLAND\n CN: /^G\\d{8}$|^E(?![IO])[A-Z0-9]\\d{7}$/,\n // CHINA [G=Ordinary, E=Electronic] followed by 8-digits, or E followed by any UPPERCASE letter (except I and O) followed by 7 digits\n CY: /^[A-Z](\\d{6}|\\d{8})$/,\n // CYPRUS\n CZ: /^\\d{8}$/,\n // CZECH REPUBLIC\n DE: /^[CFGHJKLMNPRTVWXYZ0-9]{9}$/,\n // GERMANY\n DK: /^\\d{9}$/,\n // DENMARK\n DZ: /^\\d{9}$/,\n // ALGERIA\n EE: /^([A-Z]\\d{7}|[A-Z]{2}\\d{7})$/,\n // ESTONIA (K followed by 7-digits), e-passports have 2 UPPERCASE followed by 7 digits\n ES: /^[A-Z0-9]{2}([A-Z0-9]?)\\d{6}$/,\n // SPAIN\n FI: /^[A-Z]{2}\\d{7}$/,\n // FINLAND\n FR: /^\\d{2}[A-Z]{2}\\d{5}$/,\n // FRANCE\n GB: /^\\d{9}$/,\n // UNITED KINGDOM\n GR: /^[A-Z]{2}\\d{7}$/,\n // GREECE\n HR: /^\\d{9}$/,\n // CROATIA\n HU: /^[A-Z]{2}(\\d{6}|\\d{7})$/,\n // HUNGARY\n IE: /^[A-Z0-9]{2}\\d{7}$/,\n // IRELAND\n IN: /^[A-Z]{1}-?\\d{7}$/,\n // INDIA\n ID: /^[A-C]\\d{7}$/,\n // INDONESIA\n IR: /^[A-Z]\\d{8}$/,\n // IRAN\n IS: /^(A)\\d{7}$/,\n // ICELAND\n IT: /^[A-Z0-9]{2}\\d{7}$/,\n // ITALY\n JM: /^[Aa]\\d{7}$/,\n // JAMAICA\n JP: /^[A-Z]{2}\\d{7}$/,\n // JAPAN\n KR: /^[MS]\\d{8}$/,\n // SOUTH KOREA, REPUBLIC OF KOREA, [S=PS Passports, M=PM Passports]\n KZ: /^[a-zA-Z]\\d{7}$/,\n // KAZAKHSTAN\n LI: /^[a-zA-Z]\\d{5}$/,\n // LIECHTENSTEIN\n LT: /^[A-Z0-9]{8}$/,\n // LITHUANIA\n LU: /^[A-Z0-9]{8}$/,\n // LUXEMBURG\n LV: /^[A-Z0-9]{2}\\d{7}$/,\n // LATVIA\n LY: /^[A-Z0-9]{8}$/,\n // LIBYA\n MT: /^\\d{7}$/,\n // MALTA\n MZ: /^([A-Z]{2}\\d{7})|(\\d{2}[A-Z]{2}\\d{5})$/,\n // MOZAMBIQUE\n MY: /^[AHK]\\d{8}$/,\n // MALAYSIA\n MX: /^\\d{10,11}$/,\n // MEXICO\n NL: /^[A-Z]{2}[A-Z0-9]{6}\\d$/,\n // NETHERLANDS\n NZ: /^([Ll]([Aa]|[Dd]|[Ff]|[Hh])|[Ee]([Aa]|[Pp])|[Nn])\\d{6}$/,\n // NEW ZEALAND\n PH: /^([A-Z](\\d{6}|\\d{7}[A-Z]))|([A-Z]{2}(\\d{6}|\\d{7}))$/,\n // PHILIPPINES\n PK: /^[A-Z]{2}\\d{7}$/,\n // PAKISTAN\n PL: /^[A-Z]{2}\\d{7}$/,\n // POLAND\n PT: /^[A-Z]\\d{6}$/,\n // PORTUGAL\n RO: /^\\d{8,9}$/,\n // ROMANIA\n RU: /^\\d{9}$/,\n // RUSSIAN FEDERATION\n SE: /^\\d{8}$/,\n // SWEDEN\n SL: /^(P)[A-Z]\\d{7}$/,\n // SLOVENIA\n SK: /^[0-9A-Z]\\d{7}$/,\n // SLOVAKIA\n TH: /^[A-Z]{1,2}\\d{6,7}$/,\n // THAILAND\n TR: /^[A-Z]\\d{8}$/,\n // TURKEY\n UA: /^[A-Z]{2}\\d{6}$/,\n // UKRAINE\n US: /^\\d{9}$/,\n // UNITED STATES\n ZA: /^[TAMD]\\d{8}$/ // SOUTH AFRICA\n};\n\n/**\n * Check if str is a valid passport number\n * relative to provided ISO Country Code.\n *\n * @param {string} str\n * @param {string} countryCode\n * @return {boolean}\n */\nfunction isPassportNumber(str, countryCode) {\n (0, _assertString.default)(str);\n /** Remove All Whitespaces, Convert to UPPERCASE */\n var normalizedStr = str.replace(/\\s/g, '').toUpperCase();\n return countryCode.toUpperCase() in passportRegexByCountryCode && passportRegexByCountryCode[countryCode].test(normalizedStr);\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isPort;\nvar _isInt = _interopRequireDefault(require(\"./isInt\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nfunction isPort(str) {\n return (0, _isInt.default)(str, {\n allow_leading_zeroes: false,\n min: 0,\n max: 65535\n });\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isLowercase;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nfunction isLowercase(str) {\n (0, _assertString.default)(str);\n return str === str.toLowerCase();\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isUppercase;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nfunction isUppercase(str) {\n (0, _assertString.default)(str);\n return str === str.toUpperCase();\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isIMEI;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nvar imeiRegexWithoutHypens = /^[0-9]{15}$/;\nvar imeiRegexWithHypens = /^\\d{2}-\\d{6}-\\d{6}-\\d{1}$/;\nfunction isIMEI(str, options) {\n (0, _assertString.default)(str);\n options = options || {};\n\n // default regex for checking imei is the one without hyphens\n\n var imeiRegex = imeiRegexWithoutHypens;\n if (options.allow_hyphens) {\n imeiRegex = imeiRegexWithHypens;\n }\n if (!imeiRegex.test(str)) {\n return false;\n }\n str = str.replace(/-/g, '');\n var sum = 0,\n mul = 2,\n l = 14;\n for (var i = 0; i < l; i++) {\n var digit = str.substring(l - i - 1, l - i);\n var tp = parseInt(digit, 10) * mul;\n if (tp >= 10) {\n sum += tp % 10 + 1;\n } else {\n sum += tp;\n }\n if (mul === 1) {\n mul += 1;\n } else {\n mul -= 1;\n }\n }\n var chk = (10 - sum % 10) % 10;\n if (chk !== parseInt(str.substring(14, 15), 10)) {\n return false;\n }\n return true;\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isAscii;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n/* eslint-disable no-control-regex */\nvar ascii = /^[\\x00-\\x7F]+$/;\n/* eslint-enable no-control-regex */\n\nfunction isAscii(str) {\n (0, _assertString.default)(str);\n return ascii.test(str);\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isVariableWidth;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nvar _isFullWidth = require(\"./isFullWidth\");\nvar _isHalfWidth = require(\"./isHalfWidth\");\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nfunction isVariableWidth(str) {\n (0, _assertString.default)(str);\n return _isFullWidth.fullWidth.test(str) && _isHalfWidth.halfWidth.test(str);\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isMultibyte;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n/* eslint-disable no-control-regex */\nvar multibyte = /[^\\x00-\\x7F]/;\n/* eslint-enable no-control-regex */\n\nfunction isMultibyte(str) {\n (0, _assertString.default)(str);\n return multibyte.test(str);\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isSemVer;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nvar _multilineRegex = _interopRequireDefault(require(\"./util/multilineRegex\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n/**\n * Regular Expression to match\n * semantic versioning (SemVer)\n * built from multi-line, multi-parts regexp\n * Reference: https://semver.org/\n */\nvar semanticVersioningRegex = (0, _multilineRegex.default)(['^(0|[1-9]\\\\d*)\\\\.(0|[1-9]\\\\d*)\\\\.(0|[1-9]\\\\d*)', '(?:-((?:0|[1-9]\\\\d*|\\\\d*[a-z-][0-9a-z-]*)(?:\\\\.(?:0|[1-9]\\\\d*|\\\\d*[a-z-][0-9a-z-]*))*))', '?(?:\\\\+([0-9a-z-]+(?:\\\\.[0-9a-z-]+)*))?$'], 'i');\nfunction isSemVer(str) {\n (0, _assertString.default)(str);\n return semanticVersioningRegex.test(str);\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = multilineRegexp;\n/**\n * Build RegExp object from an array\n * of multiple/multi-line regexp parts\n *\n * @param {string[]} parts\n * @param {string} flags\n * @return {object} - RegExp object\n */\nfunction multilineRegexp(parts, flags) {\n var regexpAsStringLiteral = parts.join('');\n return new RegExp(regexpAsStringLiteral, flags);\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isSurrogatePair;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nvar surrogatePair = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/;\nfunction isSurrogatePair(str) {\n (0, _assertString.default)(str);\n return surrogatePair.test(str);\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isDecimal;\nvar _merge = _interopRequireDefault(require(\"./util/merge\"));\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nvar _includes = _interopRequireDefault(require(\"./util/includes\"));\nvar _alpha = require(\"./alpha\");\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nfunction decimalRegExp(options) {\n var regExp = new RegExp(\"^[-+]?([0-9]+)?(\\\\\".concat(_alpha.decimal[options.locale], \"[0-9]{\").concat(options.decimal_digits, \"})\").concat(options.force_decimal ? '' : '?', \"$\"));\n return regExp;\n}\nvar default_decimal_options = {\n force_decimal: false,\n decimal_digits: '1,',\n locale: 'en-US'\n};\nvar blacklist = ['', '-', '+'];\nfunction isDecimal(str, options) {\n (0, _assertString.default)(str);\n options = (0, _merge.default)(options, default_decimal_options);\n if (options.locale in _alpha.decimal) {\n return !(0, _includes.default)(blacklist, str.replace(/ /g, '')) && decimalRegExp(options).test(str);\n }\n throw new Error(\"Invalid locale '\".concat(options.locale, \"'\"));\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar includes = function includes(arr, val) {\n return arr.some(function (arrVal) {\n return val === arrVal;\n });\n};\nvar _default = exports.default = includes;\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isOctal;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nvar octal = /^(0o)?[0-7]+$/i;\nfunction isOctal(str) {\n (0, _assertString.default)(str);\n return octal.test(str);\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isDivisibleBy;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nvar _toFloat = _interopRequireDefault(require(\"./toFloat\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nfunction isDivisibleBy(str, num) {\n (0, _assertString.default)(str);\n return (0, _toFloat.default)(str) % parseInt(num, 10) === 0;\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isHexColor;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nvar hexcolor = /^#?([0-9A-F]{3}|[0-9A-F]{4}|[0-9A-F]{6}|[0-9A-F]{8})$/i;\nfunction isHexColor(str) {\n (0, _assertString.default)(str);\n return hexcolor.test(str);\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isRgbColor;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nvar rgbColor = /^rgb\\((([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]),){2}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\)$/;\nvar rgbaColor = /^rgba\\((([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]),){3}(0?\\.\\d|1(\\.0)?|0(\\.0)?)\\)$/;\nvar rgbColorPercent = /^rgb\\((([0-9]%|[1-9][0-9]%|100%),){2}([0-9]%|[1-9][0-9]%|100%)\\)$/;\nvar rgbaColorPercent = /^rgba\\((([0-9]%|[1-9][0-9]%|100%),){3}(0?\\.\\d|1(\\.0)?|0(\\.0)?)\\)$/;\nfunction isRgbColor(str) {\n var includePercentValues = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n (0, _assertString.default)(str);\n if (!includePercentValues) {\n return rgbColor.test(str) || rgbaColor.test(str);\n }\n return rgbColor.test(str) || rgbaColor.test(str) || rgbColorPercent.test(str) || rgbaColorPercent.test(str);\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isHSL;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nvar hslComma = /^hsla?\\(((\\+|\\-)?([0-9]+(\\.[0-9]+)?(e(\\+|\\-)?[0-9]+)?|\\.[0-9]+(e(\\+|\\-)?[0-9]+)?))(deg|grad|rad|turn)?(,(\\+|\\-)?([0-9]+(\\.[0-9]+)?(e(\\+|\\-)?[0-9]+)?|\\.[0-9]+(e(\\+|\\-)?[0-9]+)?)%){2}(,((\\+|\\-)?([0-9]+(\\.[0-9]+)?(e(\\+|\\-)?[0-9]+)?|\\.[0-9]+(e(\\+|\\-)?[0-9]+)?)%?))?\\)$/i;\nvar hslSpace = /^hsla?\\(((\\+|\\-)?([0-9]+(\\.[0-9]+)?(e(\\+|\\-)?[0-9]+)?|\\.[0-9]+(e(\\+|\\-)?[0-9]+)?))(deg|grad|rad|turn)?(\\s(\\+|\\-)?([0-9]+(\\.[0-9]+)?(e(\\+|\\-)?[0-9]+)?|\\.[0-9]+(e(\\+|\\-)?[0-9]+)?)%){2}\\s?(\\/\\s((\\+|\\-)?([0-9]+(\\.[0-9]+)?(e(\\+|\\-)?[0-9]+)?|\\.[0-9]+(e(\\+|\\-)?[0-9]+)?)%?)\\s?)?\\)$/i;\nfunction isHSL(str) {\n (0, _assertString.default)(str);\n\n // Strip duplicate spaces before calling the validation regex (See #1598 for more info)\n var strippedStr = str.replace(/\\s+/g, ' ').replace(/\\s?(hsla?\\(|\\)|,)\\s?/ig, '$1');\n if (strippedStr.indexOf(',') !== -1) {\n return hslComma.test(strippedStr);\n }\n return hslSpace.test(strippedStr);\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isISRC;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n// see http://isrc.ifpi.org/en/isrc-standard/code-syntax\nvar isrc = /^[A-Z]{2}[0-9A-Z]{3}\\d{2}\\d{5}$/;\nfunction isISRC(str) {\n (0, _assertString.default)(str);\n return isrc.test(str);\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isIBAN;\nexports.locales = void 0;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n/**\n * List of country codes with\n * corresponding IBAN regular expression\n * Reference: https://en.wikipedia.org/wiki/International_Bank_Account_Number\n */\nvar ibanRegexThroughCountryCode = {\n AD: /^(AD[0-9]{2})\\d{8}[A-Z0-9]{12}$/,\n AE: /^(AE[0-9]{2})\\d{3}\\d{16}$/,\n AL: /^(AL[0-9]{2})\\d{8}[A-Z0-9]{16}$/,\n AT: /^(AT[0-9]{2})\\d{16}$/,\n AZ: /^(AZ[0-9]{2})[A-Z0-9]{4}\\d{20}$/,\n BA: /^(BA[0-9]{2})\\d{16}$/,\n BE: /^(BE[0-9]{2})\\d{12}$/,\n BG: /^(BG[0-9]{2})[A-Z]{4}\\d{6}[A-Z0-9]{8}$/,\n BH: /^(BH[0-9]{2})[A-Z]{4}[A-Z0-9]{14}$/,\n BR: /^(BR[0-9]{2})\\d{23}[A-Z]{1}[A-Z0-9]{1}$/,\n BY: /^(BY[0-9]{2})[A-Z0-9]{4}\\d{20}$/,\n CH: /^(CH[0-9]{2})\\d{5}[A-Z0-9]{12}$/,\n CR: /^(CR[0-9]{2})\\d{18}$/,\n CY: /^(CY[0-9]{2})\\d{8}[A-Z0-9]{16}$/,\n CZ: /^(CZ[0-9]{2})\\d{20}$/,\n DE: /^(DE[0-9]{2})\\d{18}$/,\n DK: /^(DK[0-9]{2})\\d{14}$/,\n DO: /^(DO[0-9]{2})[A-Z]{4}\\d{20}$/,\n DZ: /^(DZ\\d{24})$/,\n EE: /^(EE[0-9]{2})\\d{16}$/,\n EG: /^(EG[0-9]{2})\\d{25}$/,\n ES: /^(ES[0-9]{2})\\d{20}$/,\n FI: /^(FI[0-9]{2})\\d{14}$/,\n FO: /^(FO[0-9]{2})\\d{14}$/,\n FR: /^(FR[0-9]{2})\\d{10}[A-Z0-9]{11}\\d{2}$/,\n GB: /^(GB[0-9]{2})[A-Z]{4}\\d{14}$/,\n GE: /^(GE[0-9]{2})[A-Z0-9]{2}\\d{16}$/,\n GI: /^(GI[0-9]{2})[A-Z]{4}[A-Z0-9]{15}$/,\n GL: /^(GL[0-9]{2})\\d{14}$/,\n GR: /^(GR[0-9]{2})\\d{7}[A-Z0-9]{16}$/,\n GT: /^(GT[0-9]{2})[A-Z0-9]{4}[A-Z0-9]{20}$/,\n HR: /^(HR[0-9]{2})\\d{17}$/,\n HU: /^(HU[0-9]{2})\\d{24}$/,\n IE: /^(IE[0-9]{2})[A-Z0-9]{4}\\d{14}$/,\n IL: /^(IL[0-9]{2})\\d{19}$/,\n IQ: /^(IQ[0-9]{2})[A-Z]{4}\\d{15}$/,\n IR: /^(IR[0-9]{2})0\\d{2}0\\d{18}$/,\n IS: /^(IS[0-9]{2})\\d{22}$/,\n IT: /^(IT[0-9]{2})[A-Z]{1}\\d{10}[A-Z0-9]{12}$/,\n JO: /^(JO[0-9]{2})[A-Z]{4}\\d{22}$/,\n KW: /^(KW[0-9]{2})[A-Z]{4}[A-Z0-9]{22}$/,\n KZ: /^(KZ[0-9]{2})\\d{3}[A-Z0-9]{13}$/,\n LB: /^(LB[0-9]{2})\\d{4}[A-Z0-9]{20}$/,\n LC: /^(LC[0-9]{2})[A-Z]{4}[A-Z0-9]{24}$/,\n LI: /^(LI[0-9]{2})\\d{5}[A-Z0-9]{12}$/,\n LT: /^(LT[0-9]{2})\\d{16}$/,\n LU: /^(LU[0-9]{2})\\d{3}[A-Z0-9]{13}$/,\n LV: /^(LV[0-9]{2})[A-Z]{4}[A-Z0-9]{13}$/,\n MA: /^(MA[0-9]{26})$/,\n MC: /^(MC[0-9]{2})\\d{10}[A-Z0-9]{11}\\d{2}$/,\n MD: /^(MD[0-9]{2})[A-Z0-9]{20}$/,\n ME: /^(ME[0-9]{2})\\d{18}$/,\n MK: /^(MK[0-9]{2})\\d{3}[A-Z0-9]{10}\\d{2}$/,\n MR: /^(MR[0-9]{2})\\d{23}$/,\n MT: /^(MT[0-9]{2})[A-Z]{4}\\d{5}[A-Z0-9]{18}$/,\n MU: /^(MU[0-9]{2})[A-Z]{4}\\d{19}[A-Z]{3}$/,\n MZ: /^(MZ[0-9]{2})\\d{21}$/,\n NL: /^(NL[0-9]{2})[A-Z]{4}\\d{10}$/,\n NO: /^(NO[0-9]{2})\\d{11}$/,\n PK: /^(PK[0-9]{2})[A-Z0-9]{4}\\d{16}$/,\n PL: /^(PL[0-9]{2})\\d{24}$/,\n PS: /^(PS[0-9]{2})[A-Z0-9]{4}\\d{21}$/,\n PT: /^(PT[0-9]{2})\\d{21}$/,\n QA: /^(QA[0-9]{2})[A-Z]{4}[A-Z0-9]{21}$/,\n RO: /^(RO[0-9]{2})[A-Z]{4}[A-Z0-9]{16}$/,\n RS: /^(RS[0-9]{2})\\d{18}$/,\n SA: /^(SA[0-9]{2})\\d{2}[A-Z0-9]{18}$/,\n SC: /^(SC[0-9]{2})[A-Z]{4}\\d{20}[A-Z]{3}$/,\n SE: /^(SE[0-9]{2})\\d{20}$/,\n SI: /^(SI[0-9]{2})\\d{15}$/,\n SK: /^(SK[0-9]{2})\\d{20}$/,\n SM: /^(SM[0-9]{2})[A-Z]{1}\\d{10}[A-Z0-9]{12}$/,\n SV: /^(SV[0-9]{2})[A-Z0-9]{4}\\d{20}$/,\n TL: /^(TL[0-9]{2})\\d{19}$/,\n TN: /^(TN[0-9]{2})\\d{20}$/,\n TR: /^(TR[0-9]{2})\\d{5}[A-Z0-9]{17}$/,\n UA: /^(UA[0-9]{2})\\d{6}[A-Z0-9]{19}$/,\n VA: /^(VA[0-9]{2})\\d{18}$/,\n VG: /^(VG[0-9]{2})[A-Z0-9]{4}\\d{16}$/,\n XK: /^(XK[0-9]{2})\\d{16}$/\n};\n\n/**\n * Check if the country codes passed are valid using the\n * ibanRegexThroughCountryCode as a reference\n *\n * @param {array} countryCodeArray\n * @return {boolean}\n */\n\nfunction hasOnlyValidCountryCodes(countryCodeArray) {\n var countryCodeArrayFilteredWithObjectIbanCode = countryCodeArray.filter(function (countryCode) {\n return !(countryCode in ibanRegexThroughCountryCode);\n });\n if (countryCodeArrayFilteredWithObjectIbanCode.length > 0) {\n return false;\n }\n return true;\n}\n\n/**\n * Check whether string has correct universal IBAN format\n * The IBAN consists of up to 34 alphanumeric characters, as follows:\n * Country Code using ISO 3166-1 alpha-2, two letters\n * check digits, two digits and\n * Basic Bank Account Number (BBAN), up to 30 alphanumeric characters.\n * NOTE: Permitted IBAN characters are: digits [0-9] and the 26 latin alphabetic [A-Z]\n *\n * @param {string} str - string under validation\n * @param {object} options - object to pass the countries to be either whitelisted or blacklisted\n * @return {boolean}\n */\nfunction hasValidIbanFormat(str, options) {\n // Strip white spaces and hyphens\n var strippedStr = str.replace(/[\\s\\-]+/gi, '').toUpperCase();\n var isoCountryCode = strippedStr.slice(0, 2).toUpperCase();\n var isoCountryCodeInIbanRegexCodeObject = (isoCountryCode in ibanRegexThroughCountryCode);\n if (options.whitelist) {\n if (!hasOnlyValidCountryCodes(options.whitelist)) {\n return false;\n }\n var isoCountryCodeInWhiteList = options.whitelist.includes(isoCountryCode);\n if (!isoCountryCodeInWhiteList) {\n return false;\n }\n }\n if (options.blacklist) {\n var isoCountryCodeInBlackList = options.blacklist.includes(isoCountryCode);\n if (isoCountryCodeInBlackList) {\n return false;\n }\n }\n return isoCountryCodeInIbanRegexCodeObject && ibanRegexThroughCountryCode[isoCountryCode].test(strippedStr);\n}\n\n/**\n * Check whether string has valid IBAN Checksum\n * by performing basic mod-97 operation and\n * the remainder should equal 1\n * -- Start by rearranging the IBAN by moving the four initial characters to the end of the string\n * -- Replace each letter in the string with two digits, A -> 10, B = 11, Z = 35\n * -- Interpret the string as a decimal integer and\n * -- compute the remainder on division by 97 (mod 97)\n * Reference: https://en.wikipedia.org/wiki/International_Bank_Account_Number\n *\n * @param {string} str\n * @return {boolean}\n */\nfunction hasValidIbanChecksum(str) {\n var strippedStr = str.replace(/[^A-Z0-9]+/gi, '').toUpperCase(); // Keep only digits and A-Z latin alphabetic\n var rearranged = strippedStr.slice(4) + strippedStr.slice(0, 4);\n var alphaCapsReplacedWithDigits = rearranged.replace(/[A-Z]/g, function (char) {\n return char.charCodeAt(0) - 55;\n });\n var remainder = alphaCapsReplacedWithDigits.match(/\\d{1,7}/g).reduce(function (acc, value) {\n return Number(acc + value) % 97;\n }, '');\n return remainder === 1;\n}\nfunction isIBAN(str) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n (0, _assertString.default)(str);\n return hasValidIbanFormat(str, options) && hasValidIbanChecksum(str);\n}\nvar locales = exports.locales = Object.keys(ibanRegexThroughCountryCode);","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isBIC;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nvar _isISO31661Alpha = require(\"./isISO31661Alpha2\");\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n// https://en.wikipedia.org/wiki/ISO_9362\nvar isBICReg = /^[A-Za-z]{6}[A-Za-z0-9]{2}([A-Za-z0-9]{3})?$/;\nfunction isBIC(str) {\n (0, _assertString.default)(str);\n\n // toUpperCase() should be removed when a new major version goes out that changes\n // the regex to [A-Z] (per the spec).\n var countryCode = str.slice(4, 6).toUpperCase();\n if (!_isISO31661Alpha.CountryCodes.has(countryCode) && countryCode !== 'XK') {\n return false;\n }\n return isBICReg.test(str);\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isMD5;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nvar md5 = /^[a-f0-9]{32}$/;\nfunction isMD5(str) {\n (0, _assertString.default)(str);\n return md5.test(str);\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isHash;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nvar lengths = {\n md5: 32,\n md4: 32,\n sha1: 40,\n sha256: 64,\n sha384: 96,\n sha512: 128,\n ripemd128: 32,\n ripemd160: 40,\n tiger128: 32,\n tiger160: 40,\n tiger192: 48,\n crc32: 8,\n crc32b: 8\n};\nfunction isHash(str, algorithm) {\n (0, _assertString.default)(str);\n var hash = new RegExp(\"^[a-fA-F0-9]{\".concat(lengths[algorithm], \"}$\"));\n return hash.test(str);\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isJWT;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nvar _isBase = _interopRequireDefault(require(\"./isBase64\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nfunction isJWT(str) {\n (0, _assertString.default)(str);\n var dotSplit = str.split('.');\n var len = dotSplit.length;\n if (len !== 3) {\n return false;\n }\n return dotSplit.reduce(function (acc, currElem) {\n return acc && (0, _isBase.default)(currElem, {\n urlSafe: true\n });\n }, true);\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isJSON;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nvar _merge = _interopRequireDefault(require(\"./util/merge\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nvar default_json_options = {\n allow_primitives: false\n};\nfunction isJSON(str, options) {\n (0, _assertString.default)(str);\n try {\n options = (0, _merge.default)(options, default_json_options);\n var primitives = [];\n if (options.allow_primitives) {\n primitives = [null, false, true];\n }\n var obj = JSON.parse(str);\n return primitives.includes(obj) || !!obj && _typeof(obj) === 'object';\n } catch (e) {/* ignore */}\n return false;\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isEmpty;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nvar _merge = _interopRequireDefault(require(\"./util/merge\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nvar default_is_empty_options = {\n ignore_whitespace: false\n};\nfunction isEmpty(str, options) {\n (0, _assertString.default)(str);\n options = (0, _merge.default)(options, default_is_empty_options);\n return (options.ignore_whitespace ? str.trim().length : str.length) === 0;\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isLength;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\n/* eslint-disable prefer-rest-params */\nfunction isLength(str, options) {\n (0, _assertString.default)(str);\n var min;\n var max;\n if (_typeof(options) === 'object') {\n min = options.min || 0;\n max = options.max;\n } else {\n // backwards compatibility: isLength(str, min [, max])\n min = arguments[1] || 0;\n max = arguments[2];\n }\n var presentationSequences = str.match(/(\\uFE0F|\\uFE0E)/g) || [];\n var surrogatePairs = str.match(/[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g) || [];\n var len = str.length - presentationSequences.length - surrogatePairs.length;\n return len >= min && (typeof max === 'undefined' || len <= max);\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isUUID;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nvar uuid = {\n 1: /^[0-9A-F]{8}-[0-9A-F]{4}-1[0-9A-F]{3}-[0-9A-F]{4}-[0-9A-F]{12}$/i,\n 2: /^[0-9A-F]{8}-[0-9A-F]{4}-2[0-9A-F]{3}-[0-9A-F]{4}-[0-9A-F]{12}$/i,\n 3: /^[0-9A-F]{8}-[0-9A-F]{4}-3[0-9A-F]{3}-[0-9A-F]{4}-[0-9A-F]{12}$/i,\n 4: /^[0-9A-F]{8}-[0-9A-F]{4}-4[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i,\n 5: /^[0-9A-F]{8}-[0-9A-F]{4}-5[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i,\n 7: /^[0-9A-F]{8}-[0-9A-F]{4}-7[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i,\n all: /^[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}$/i\n};\nfunction isUUID(str, version) {\n (0, _assertString.default)(str);\n var pattern = uuid[![undefined, null].includes(version) ? version : 'all'];\n return !!pattern && pattern.test(str);\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isMongoId;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nvar _isHexadecimal = _interopRequireDefault(require(\"./isHexadecimal\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nfunction isMongoId(str) {\n (0, _assertString.default)(str);\n return (0, _isHexadecimal.default)(str) && str.length === 24;\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isAfter;\nvar _toDate = _interopRequireDefault(require(\"./toDate\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nfunction isAfter(date, options) {\n // For backwards compatibility:\n // isAfter(str [, date]), i.e. `options` could be used as argument for the legacy `date`\n var comparisonDate = (options === null || options === void 0 ? void 0 : options.comparisonDate) || options || Date().toString();\n var comparison = (0, _toDate.default)(comparisonDate);\n var original = (0, _toDate.default)(date);\n return !!(original && comparison && original > comparison);\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isBefore;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nvar _toDate = _interopRequireDefault(require(\"./toDate\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nfunction isBefore(str) {\n var date = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : String(new Date());\n (0, _assertString.default)(str);\n var comparison = (0, _toDate.default)(date);\n var original = (0, _toDate.default)(str);\n return !!(original && comparison && original < comparison);\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isIn;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nvar _toString = _interopRequireDefault(require(\"./util/toString\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction isIn(str, options) {\n (0, _assertString.default)(str);\n var i;\n if (Object.prototype.toString.call(options) === '[object Array]') {\n var array = [];\n for (i in options) {\n // https://github.com/gotwarlost/istanbul/blob/master/ignoring-code-for-coverage.md#ignoring-code-for-coverage-purposes\n // istanbul ignore else\n if ({}.hasOwnProperty.call(options, i)) {\n array[i] = (0, _toString.default)(options[i]);\n }\n }\n return array.indexOf(str) >= 0;\n } else if (_typeof(options) === 'object') {\n return options.hasOwnProperty(str);\n } else if (options && typeof options.indexOf === 'function') {\n return options.indexOf(str) >= 0;\n }\n return false;\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isCreditCard;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nvar _isLuhnNumber = _interopRequireDefault(require(\"./isLuhnNumber\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nvar cards = {\n amex: /^3[47][0-9]{13}$/,\n dinersclub: /^3(?:0[0-5]|[68][0-9])[0-9]{11}$/,\n discover: /^6(?:011|5[0-9][0-9])[0-9]{12,15}$/,\n jcb: /^(?:2131|1800|35\\d{3})\\d{11}$/,\n mastercard: /^5[1-5][0-9]{2}|(222[1-9]|22[3-9][0-9]|2[3-6][0-9]{2}|27[01][0-9]|2720)[0-9]{12}$/,\n // /^[25][1-7][0-9]{14}$/;\n unionpay: /^(6[27][0-9]{14}|^(81[0-9]{14,17}))$/,\n visa: /^(?:4[0-9]{12})(?:[0-9]{3,6})?$/\n};\nvar allCards = function () {\n var tmpCardsArray = [];\n for (var cardProvider in cards) {\n // istanbul ignore else\n if (cards.hasOwnProperty(cardProvider)) {\n tmpCardsArray.push(cards[cardProvider]);\n }\n }\n return tmpCardsArray;\n}();\nfunction isCreditCard(card) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n (0, _assertString.default)(card);\n var provider = options.provider;\n var sanitized = card.replace(/[- ]+/g, '');\n if (provider && provider.toLowerCase() in cards) {\n // specific provider in the list\n if (!cards[provider.toLowerCase()].test(sanitized)) {\n return false;\n }\n } else if (provider && !(provider.toLowerCase() in cards)) {\n /* specific provider not in the list */\n throw new Error(\"\".concat(provider, \" is not a valid credit card provider.\"));\n } else if (!allCards.some(function (cardProvider) {\n return cardProvider.test(sanitized);\n })) {\n // no specific provider\n return false;\n }\n return (0, _isLuhnNumber.default)(card);\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isIdentityCard;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nvar _isInt = _interopRequireDefault(require(\"./isInt\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nvar validators = {\n PL: function PL(str) {\n (0, _assertString.default)(str);\n var weightOfDigits = {\n 1: 1,\n 2: 3,\n 3: 7,\n 4: 9,\n 5: 1,\n 6: 3,\n 7: 7,\n 8: 9,\n 9: 1,\n 10: 3,\n 11: 0\n };\n if (str != null && str.length === 11 && (0, _isInt.default)(str, {\n allow_leading_zeroes: true\n })) {\n var digits = str.split('').slice(0, -1);\n var sum = digits.reduce(function (acc, digit, index) {\n return acc + Number(digit) * weightOfDigits[index + 1];\n }, 0);\n var modulo = sum % 10;\n var lastDigit = Number(str.charAt(str.length - 1));\n if (modulo === 0 && lastDigit === 0 || lastDigit === 10 - modulo) {\n return true;\n }\n }\n return false;\n },\n ES: function ES(str) {\n (0, _assertString.default)(str);\n var DNI = /^[0-9X-Z][0-9]{7}[TRWAGMYFPDXBNJZSQVHLCKE]$/;\n var charsValue = {\n X: 0,\n Y: 1,\n Z: 2\n };\n var controlDigits = ['T', 'R', 'W', 'A', 'G', 'M', 'Y', 'F', 'P', 'D', 'X', 'B', 'N', 'J', 'Z', 'S', 'Q', 'V', 'H', 'L', 'C', 'K', 'E'];\n\n // sanitize user input\n var sanitized = str.trim().toUpperCase();\n\n // validate the data structure\n if (!DNI.test(sanitized)) {\n return false;\n }\n\n // validate the control digit\n var number = sanitized.slice(0, -1).replace(/[X,Y,Z]/g, function (char) {\n return charsValue[char];\n });\n return sanitized.endsWith(controlDigits[number % 23]);\n },\n FI: function FI(str) {\n // https://dvv.fi/en/personal-identity-code#:~:text=control%20character%20for%20a-,personal,-identity%20code%20calculated\n (0, _assertString.default)(str);\n if (str.length !== 11) {\n return false;\n }\n if (!str.match(/^\\d{6}[\\-A\\+]\\d{3}[0-9ABCDEFHJKLMNPRSTUVWXY]{1}$/)) {\n return false;\n }\n var checkDigits = '0123456789ABCDEFHJKLMNPRSTUVWXY';\n var idAsNumber = parseInt(str.slice(0, 6), 10) * 1000 + parseInt(str.slice(7, 10), 10);\n var remainder = idAsNumber % 31;\n var checkDigit = checkDigits[remainder];\n return checkDigit === str.slice(10, 11);\n },\n IN: function IN(str) {\n var DNI = /^[1-9]\\d{3}\\s?\\d{4}\\s?\\d{4}$/;\n\n // multiplication table\n var d = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 0, 6, 7, 8, 9, 5], [2, 3, 4, 0, 1, 7, 8, 9, 5, 6], [3, 4, 0, 1, 2, 8, 9, 5, 6, 7], [4, 0, 1, 2, 3, 9, 5, 6, 7, 8], [5, 9, 8, 7, 6, 0, 4, 3, 2, 1], [6, 5, 9, 8, 7, 1, 0, 4, 3, 2], [7, 6, 5, 9, 8, 2, 1, 0, 4, 3], [8, 7, 6, 5, 9, 3, 2, 1, 0, 4], [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]];\n\n // permutation table\n var p = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 5, 7, 6, 2, 8, 3, 0, 9, 4], [5, 8, 0, 3, 7, 9, 6, 1, 4, 2], [8, 9, 1, 6, 0, 4, 3, 5, 2, 7], [9, 4, 5, 3, 1, 2, 6, 8, 7, 0], [4, 2, 8, 6, 5, 7, 3, 9, 0, 1], [2, 7, 9, 3, 8, 0, 6, 4, 1, 5], [7, 0, 4, 6, 9, 1, 3, 2, 5, 8]];\n\n // sanitize user input\n var sanitized = str.trim();\n\n // validate the data structure\n if (!DNI.test(sanitized)) {\n return false;\n }\n var c = 0;\n var invertedArray = sanitized.replace(/\\s/g, '').split('').map(Number).reverse();\n invertedArray.forEach(function (val, i) {\n c = d[c][p[i % 8][val]];\n });\n return c === 0;\n },\n IR: function IR(str) {\n if (!str.match(/^\\d{10}$/)) return false;\n str = \"0000\".concat(str).slice(str.length - 6);\n if (parseInt(str.slice(3, 9), 10) === 0) return false;\n var lastNumber = parseInt(str.slice(9, 10), 10);\n var sum = 0;\n for (var i = 0; i < 9; i++) {\n sum += parseInt(str.slice(i, i + 1), 10) * (10 - i);\n }\n sum %= 11;\n return sum < 2 && lastNumber === sum || sum >= 2 && lastNumber === 11 - sum;\n },\n IT: function IT(str) {\n if (str.length !== 9) return false;\n if (str === 'CA00000AA') return false; // https://it.wikipedia.org/wiki/Carta_d%27identit%C3%A0_elettronica_italiana\n return str.search(/C[A-Z]\\d{5}[A-Z]{2}/i) > -1;\n },\n NO: function NO(str) {\n var sanitized = str.trim();\n if (isNaN(Number(sanitized))) return false;\n if (sanitized.length !== 11) return false;\n if (sanitized === '00000000000') return false;\n\n // https://no.wikipedia.org/wiki/F%C3%B8dselsnummer\n var f = sanitized.split('').map(Number);\n var k1 = (11 - (3 * f[0] + 7 * f[1] + 6 * f[2] + 1 * f[3] + 8 * f[4] + 9 * f[5] + 4 * f[6] + 5 * f[7] + 2 * f[8]) % 11) % 11;\n var k2 = (11 - (5 * f[0] + 4 * f[1] + 3 * f[2] + 2 * f[3] + 7 * f[4] + 6 * f[5] + 5 * f[6] + 4 * f[7] + 3 * f[8] + 2 * k1) % 11) % 11;\n if (k1 !== f[9] || k2 !== f[10]) return false;\n return true;\n },\n TH: function TH(str) {\n if (!str.match(/^[1-8]\\d{12}$/)) return false;\n\n // validate check digit\n var sum = 0;\n for (var i = 0; i < 12; i++) {\n sum += parseInt(str[i], 10) * (13 - i);\n }\n return str[12] === ((11 - sum % 11) % 10).toString();\n },\n LK: function LK(str) {\n var old_nic = /^[1-9]\\d{8}[vx]$/i;\n var new_nic = /^[1-9]\\d{11}$/i;\n if (str.length === 10 && old_nic.test(str)) return true;else if (str.length === 12 && new_nic.test(str)) return true;\n return false;\n },\n 'he-IL': function heIL(str) {\n var DNI = /^\\d{9}$/;\n\n // sanitize user input\n var sanitized = str.trim();\n\n // validate the data structure\n if (!DNI.test(sanitized)) {\n return false;\n }\n var id = sanitized;\n var sum = 0,\n incNum;\n for (var i = 0; i < id.length; i++) {\n incNum = Number(id[i]) * (i % 2 + 1); // Multiply number by 1 or 2\n sum += incNum > 9 ? incNum - 9 : incNum; // Sum the digits up and add to total\n }\n return sum % 10 === 0;\n },\n 'ar-LY': function arLY(str) {\n // Libya National Identity Number NIN is 12 digits, the first digit is either 1 or 2\n var NIN = /^(1|2)\\d{11}$/;\n\n // sanitize user input\n var sanitized = str.trim();\n\n // validate the data structure\n if (!NIN.test(sanitized)) {\n return false;\n }\n return true;\n },\n 'ar-TN': function arTN(str) {\n var DNI = /^\\d{8}$/;\n\n // sanitize user input\n var sanitized = str.trim();\n\n // validate the data structure\n if (!DNI.test(sanitized)) {\n return false;\n }\n return true;\n },\n 'zh-CN': function zhCN(str) {\n var provincesAndCities = ['11',\n // 北京\n '12',\n // 天津\n '13',\n // 河北\n '14',\n // 山西\n '15',\n // 内蒙å¤\n '21',\n // è¾½å®\n '22',\n // 剿ž—\n '23',\n // 黑龙江\n '31',\n // 上海\n '32',\n // 江è‹\n '33',\n // 浙江\n '34',\n // 安徽\n '35',\n // ç¦å»º\n '36',\n // 江西\n '37',\n // 山东\n '41',\n // æ²³å—\n '42',\n // 湖北\n '43',\n // æ¹–å—\n '44',\n // 广东\n '45',\n // 广西\n '46',\n // æµ·å—\n '50',\n // é‡åº†\n '51',\n // å››å·\n '52',\n // 贵州\n '53',\n // 云å—\n '54',\n // 西è—\n '61',\n // 陕西\n '62',\n // 甘肃\n '63',\n // é’æµ·\n '64',\n // å®å¤\n '65',\n // æ–°ç–†\n '71',\n // å°æ¹¾\n '81',\n // 香港\n '82',\n // 澳门\n '91' // 国外\n ];\n var powers = ['7', '9', '10', '5', '8', '4', '2', '1', '6', '3', '7', '9', '10', '5', '8', '4', '2'];\n var parityBit = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'];\n var checkAddressCode = function checkAddressCode(addressCode) {\n return provincesAndCities.includes(addressCode);\n };\n var checkBirthDayCode = function checkBirthDayCode(birDayCode) {\n var yyyy = parseInt(birDayCode.substring(0, 4), 10);\n var mm = parseInt(birDayCode.substring(4, 6), 10);\n var dd = parseInt(birDayCode.substring(6), 10);\n var xdata = new Date(yyyy, mm - 1, dd);\n if (xdata > new Date()) {\n return false;\n // eslint-disable-next-line max-len\n } else if (xdata.getFullYear() === yyyy && xdata.getMonth() === mm - 1 && xdata.getDate() === dd) {\n return true;\n }\n return false;\n };\n var getParityBit = function getParityBit(idCardNo) {\n var id17 = idCardNo.substring(0, 17);\n var power = 0;\n for (var i = 0; i < 17; i++) {\n power += parseInt(id17.charAt(i), 10) * parseInt(powers[i], 10);\n }\n var mod = power % 11;\n return parityBit[mod];\n };\n var checkParityBit = function checkParityBit(idCardNo) {\n return getParityBit(idCardNo) === idCardNo.charAt(17).toUpperCase();\n };\n var check15IdCardNo = function check15IdCardNo(idCardNo) {\n var check = /^[1-9]\\d{7}((0[1-9])|(1[0-2]))((0[1-9])|([1-2][0-9])|(3[0-1]))\\d{3}$/.test(idCardNo);\n if (!check) return false;\n var addressCode = idCardNo.substring(0, 2);\n check = checkAddressCode(addressCode);\n if (!check) return false;\n var birDayCode = \"19\".concat(idCardNo.substring(6, 12));\n check = checkBirthDayCode(birDayCode);\n if (!check) return false;\n return true;\n };\n var check18IdCardNo = function check18IdCardNo(idCardNo) {\n var check = /^[1-9]\\d{5}[1-9]\\d{3}((0[1-9])|(1[0-2]))((0[1-9])|([1-2][0-9])|(3[0-1]))\\d{3}(\\d|x|X)$/.test(idCardNo);\n if (!check) return false;\n var addressCode = idCardNo.substring(0, 2);\n check = checkAddressCode(addressCode);\n if (!check) return false;\n var birDayCode = idCardNo.substring(6, 14);\n check = checkBirthDayCode(birDayCode);\n if (!check) return false;\n return checkParityBit(idCardNo);\n };\n var checkIdCardNo = function checkIdCardNo(idCardNo) {\n var check = /^\\d{15}|(\\d{17}(\\d|x|X))$/.test(idCardNo);\n if (!check) return false;\n if (idCardNo.length === 15) {\n return check15IdCardNo(idCardNo);\n }\n return check18IdCardNo(idCardNo);\n };\n return checkIdCardNo(str);\n },\n 'zh-HK': function zhHK(str) {\n // sanitize user input\n str = str.trim();\n\n // HKID number starts with 1 or 2 letters, followed by 6 digits,\n // then a checksum contained in square / round brackets or nothing\n var regexHKID = /^[A-Z]{1,2}[0-9]{6}((\\([0-9A]\\))|(\\[[0-9A]\\])|([0-9A]))$/;\n var regexIsDigit = /^[0-9]$/;\n\n // convert the user input to all uppercase and apply regex\n str = str.toUpperCase();\n if (!regexHKID.test(str)) return false;\n str = str.replace(/\\[|\\]|\\(|\\)/g, '');\n if (str.length === 8) str = \"3\".concat(str);\n var checkSumVal = 0;\n for (var i = 0; i <= 7; i++) {\n var convertedChar = void 0;\n if (!regexIsDigit.test(str[i])) convertedChar = (str[i].charCodeAt(0) - 55) % 11;else convertedChar = str[i];\n checkSumVal += convertedChar * (9 - i);\n }\n checkSumVal %= 11;\n var checkSumConverted;\n if (checkSumVal === 0) checkSumConverted = '0';else if (checkSumVal === 1) checkSumConverted = 'A';else checkSumConverted = String(11 - checkSumVal);\n if (checkSumConverted === str[str.length - 1]) return true;\n return false;\n },\n 'zh-TW': function zhTW(str) {\n var ALPHABET_CODES = {\n A: 10,\n B: 11,\n C: 12,\n D: 13,\n E: 14,\n F: 15,\n G: 16,\n H: 17,\n I: 34,\n J: 18,\n K: 19,\n L: 20,\n M: 21,\n N: 22,\n O: 35,\n P: 23,\n Q: 24,\n R: 25,\n S: 26,\n T: 27,\n U: 28,\n V: 29,\n W: 32,\n X: 30,\n Y: 31,\n Z: 33\n };\n var sanitized = str.trim().toUpperCase();\n if (!/^[A-Z][0-9]{9}$/.test(sanitized)) return false;\n return Array.from(sanitized).reduce(function (sum, number, index) {\n if (index === 0) {\n var code = ALPHABET_CODES[number];\n return code % 10 * 9 + Math.floor(code / 10);\n }\n if (index === 9) {\n return (10 - sum % 10 - Number(number)) % 10 === 0;\n }\n return sum + Number(number) * (9 - index);\n }, 0);\n }\n};\nfunction isIdentityCard(str, locale) {\n (0, _assertString.default)(str);\n if (locale in validators) {\n return validators[locale](str);\n } else if (locale === 'any') {\n for (var key in validators) {\n // https://github.com/gotwarlost/istanbul/blob/master/ignoring-code-for-coverage.md#ignoring-code-for-coverage-purposes\n // istanbul ignore else\n if (validators.hasOwnProperty(key)) {\n var validator = validators[key];\n if (validator(str)) {\n return true;\n }\n }\n }\n return false;\n }\n throw new Error(\"Invalid locale '\".concat(locale, \"'\"));\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isEAN;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n/**\n * The most commonly used EAN standard is\n * the thirteen-digit EAN-13, while the\n * less commonly used 8-digit EAN-8 barcode was\n * introduced for use on small packages.\n * Also EAN/UCC-14 is used for Grouping of individual\n * trade items above unit level(Intermediate, Carton or Pallet).\n * For more info about EAN-14 checkout: https://www.gtin.info/itf-14-barcodes/\n * EAN consists of:\n * GS1 prefix, manufacturer code, product code and check digit\n * Reference: https://en.wikipedia.org/wiki/International_Article_Number\n * Reference: https://www.gtin.info/\n */\n\n/**\n * Define EAN Lenghts; 8 for EAN-8; 13 for EAN-13; 14 for EAN-14\n * and Regular Expression for valid EANs (EAN-8, EAN-13, EAN-14),\n * with exact numberic matching of 8 or 13 or 14 digits [0-9]\n */\nvar LENGTH_EAN_8 = 8;\nvar LENGTH_EAN_14 = 14;\nvar validEanRegex = /^(\\d{8}|\\d{13}|\\d{14})$/;\n\n/**\n * Get position weight given:\n * EAN length and digit index/position\n *\n * @param {number} length\n * @param {number} index\n * @return {number}\n */\nfunction getPositionWeightThroughLengthAndIndex(length, index) {\n if (length === LENGTH_EAN_8 || length === LENGTH_EAN_14) {\n return index % 2 === 0 ? 3 : 1;\n }\n return index % 2 === 0 ? 1 : 3;\n}\n\n/**\n * Calculate EAN Check Digit\n * Reference: https://en.wikipedia.org/wiki/International_Article_Number#Calculation_of_checksum_digit\n *\n * @param {string} ean\n * @return {number}\n */\nfunction calculateCheckDigit(ean) {\n var checksum = ean.slice(0, -1).split('').map(function (char, index) {\n return Number(char) * getPositionWeightThroughLengthAndIndex(ean.length, index);\n }).reduce(function (acc, partialSum) {\n return acc + partialSum;\n }, 0);\n var remainder = 10 - checksum % 10;\n return remainder < 10 ? remainder : 0;\n}\n\n/**\n * Check if string is valid EAN:\n * Matches EAN-8/EAN-13/EAN-14 regex\n * Has valid check digit.\n *\n * @param {string} str\n * @return {boolean}\n */\nfunction isEAN(str) {\n (0, _assertString.default)(str);\n var actualCheckDigit = Number(str.slice(-1));\n return validEanRegex.test(str) && actualCheckDigit === calculateCheckDigit(str);\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isISIN;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nvar isin = /^[A-Z]{2}[0-9A-Z]{9}[0-9]$/;\n\n// this link details how the check digit is calculated:\n// https://www.isin.org/isin-format/. it is a little bit\n// odd in that it works with digits, not numbers. in order\n// to make only one pass through the ISIN characters, the\n// each alpha character is handled as 2 characters within\n// the loop.\n\nfunction isISIN(str) {\n (0, _assertString.default)(str);\n if (!isin.test(str)) {\n return false;\n }\n var double = true;\n var sum = 0;\n // convert values\n for (var i = str.length - 2; i >= 0; i--) {\n if (str[i] >= 'A' && str[i] <= 'Z') {\n var value = str[i].charCodeAt(0) - 55;\n var lo = value % 10;\n var hi = Math.trunc(value / 10);\n // letters have two digits, so handle the low order\n // and high order digits separately.\n for (var _i = 0, _arr = [lo, hi]; _i < _arr.length; _i++) {\n var digit = _arr[_i];\n if (double) {\n if (digit >= 5) {\n sum += 1 + (digit - 5) * 2;\n } else {\n sum += digit * 2;\n }\n } else {\n sum += digit;\n }\n double = !double;\n }\n } else {\n var _digit = str[i].charCodeAt(0) - '0'.charCodeAt(0);\n if (double) {\n if (_digit >= 5) {\n sum += 1 + (_digit - 5) * 2;\n } else {\n sum += _digit * 2;\n }\n } else {\n sum += _digit;\n }\n double = !double;\n }\n }\n var check = Math.trunc((sum + 9) / 10) * 10 - sum;\n return +str[str.length - 1] === check;\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isISBN;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nvar possibleIsbn10 = /^(?:[0-9]{9}X|[0-9]{10})$/;\nvar possibleIsbn13 = /^(?:[0-9]{13})$/;\nvar factor = [1, 3];\nfunction isISBN(isbn, options) {\n (0, _assertString.default)(isbn);\n\n // For backwards compatibility:\n // isISBN(str [, version]), i.e. `options` could be used as argument for the legacy `version`\n var version = String((options === null || options === void 0 ? void 0 : options.version) || options);\n if (!(options !== null && options !== void 0 && options.version || options)) {\n return isISBN(isbn, {\n version: 10\n }) || isISBN(isbn, {\n version: 13\n });\n }\n var sanitizedIsbn = isbn.replace(/[\\s-]+/g, '');\n var checksum = 0;\n if (version === '10') {\n if (!possibleIsbn10.test(sanitizedIsbn)) {\n return false;\n }\n for (var i = 0; i < version - 1; i++) {\n checksum += (i + 1) * sanitizedIsbn.charAt(i);\n }\n if (sanitizedIsbn.charAt(9) === 'X') {\n checksum += 10 * 10;\n } else {\n checksum += 10 * sanitizedIsbn.charAt(9);\n }\n if (checksum % 11 === 0) {\n return true;\n }\n } else if (version === '13') {\n if (!possibleIsbn13.test(sanitizedIsbn)) {\n return false;\n }\n for (var _i = 0; _i < 12; _i++) {\n checksum += factor[_i % 2] * sanitizedIsbn.charAt(_i);\n }\n if (sanitizedIsbn.charAt(12) - (10 - checksum % 10) % 10 === 0) {\n return true;\n }\n }\n return false;\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isISSN;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nvar issn = '^\\\\d{4}-?\\\\d{3}[\\\\dX]$';\nfunction isISSN(str) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n (0, _assertString.default)(str);\n var testIssn = issn;\n testIssn = options.require_hyphen ? testIssn.replace('?', '') : testIssn;\n testIssn = options.case_sensitive ? new RegExp(testIssn) : new RegExp(testIssn, 'i');\n if (!testIssn.test(str)) {\n return false;\n }\n var digits = str.replace('-', '').toUpperCase();\n var checksum = 0;\n for (var i = 0; i < digits.length; i++) {\n var digit = digits[i];\n checksum += (digit === 'X' ? 10 : +digit) * (8 - i);\n }\n return checksum % 11 === 0;\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isTaxID;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nvar algorithms = _interopRequireWildcard(require(\"./util/algorithms\"));\nvar _isDate = _interopRequireDefault(require(\"./isDate\"));\nfunction _getRequireWildcardCache(e) { if (\"function\" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }\nfunction _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || \"object\" != _typeof(e) && \"function\" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if (\"default\" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\n/**\n * TIN Validation\n * Validates Tax Identification Numbers (TINs) from the US, EU member states and the United Kingdom.\n *\n * EU-UK:\n * National TIN validity is calculated using public algorithms as made available by DG TAXUD.\n *\n * See `https://ec.europa.eu/taxation_customs/tin/specs/FS-TIN%20Algorithms-Public.docx` for more information.\n *\n * US:\n * An Employer Identification Number (EIN), also known as a Federal Tax Identification Number,\n * is used to identify a business entity.\n *\n * NOTES:\n * - Prefix 47 is being reserved for future use\n * - Prefixes 26, 27, 45, 46 and 47 were previously assigned by the Philadelphia campus.\n *\n * See `http://www.irs.gov/Businesses/Small-Businesses-&-Self-Employed/How-EINs-are-Assigned-and-Valid-EIN-Prefixes`\n * for more information.\n */\n\n// Locale functions\n\n/*\n * bg-BG validation function\n * (Edinen graždanski nomer (EGN/ЕГÐ), persons only)\n * Checks if birth date (first six digits) is valid and calculates check (last) digit\n */\nfunction bgBgCheck(tin) {\n // Extract full year, normalize month and check birth date validity\n var century_year = tin.slice(0, 2);\n var month = parseInt(tin.slice(2, 4), 10);\n if (month > 40) {\n month -= 40;\n century_year = \"20\".concat(century_year);\n } else if (month > 20) {\n month -= 20;\n century_year = \"18\".concat(century_year);\n } else {\n century_year = \"19\".concat(century_year);\n }\n if (month < 10) {\n month = \"0\".concat(month);\n }\n var date = \"\".concat(century_year, \"/\").concat(month, \"/\").concat(tin.slice(4, 6));\n if (!(0, _isDate.default)(date, 'YYYY/MM/DD')) {\n return false;\n }\n\n // split digits into an array for further processing\n var digits = tin.split('').map(function (a) {\n return parseInt(a, 10);\n });\n\n // Calculate checksum by multiplying digits with fixed values\n var multip_lookup = [2, 4, 8, 5, 10, 9, 7, 3, 6];\n var checksum = 0;\n for (var i = 0; i < multip_lookup.length; i++) {\n checksum += digits[i] * multip_lookup[i];\n }\n checksum = checksum % 11 === 10 ? 0 : checksum % 11;\n return checksum === digits[9];\n}\n\n/**\n * Check if an input is a valid Canadian SIN (Social Insurance Number)\n *\n * The Social Insurance Number (SIN) is a 9 digit number that\n * you need to work in Canada or to have access to government programs and benefits.\n *\n * https://en.wikipedia.org/wiki/Social_Insurance_Number\n * https://www.canada.ca/en/employment-social-development/services/sin.html\n * https://www.codercrunch.com/challenge/819302488/sin-validator\n *\n * @param {string} input\n * @return {boolean}\n */\nfunction isCanadianSIN(input) {\n var digitsArray = input.split('');\n var even = digitsArray.filter(function (_, idx) {\n return idx % 2;\n }).map(function (i) {\n return Number(i) * 2;\n }).join('').split('');\n var total = digitsArray.filter(function (_, idx) {\n return !(idx % 2);\n }).concat(even).map(function (i) {\n return Number(i);\n }).reduce(function (acc, cur) {\n return acc + cur;\n });\n return total % 10 === 0;\n}\n\n/*\n * cs-CZ validation function\n * (Rodné ÄÃslo (RÄŒ), persons only)\n * Checks if birth date (first six digits) is valid and divisibility by 11\n * Material not in DG TAXUD document sourced from:\n * -`https://lorenc.info/3MA381/overeni-spravnosti-rodneho-cisla.htm`\n * -`https://www.mvcr.cz/clanek/rady-a-sluzby-dokumenty-rodne-cislo.aspx`\n */\nfunction csCzCheck(tin) {\n tin = tin.replace(/\\W/, '');\n\n // Extract full year from TIN length\n var full_year = parseInt(tin.slice(0, 2), 10);\n if (tin.length === 10) {\n if (full_year < 54) {\n full_year = \"20\".concat(full_year);\n } else {\n full_year = \"19\".concat(full_year);\n }\n } else {\n if (tin.slice(6) === '000') {\n return false;\n } // Three-zero serial not assigned before 1954\n if (full_year < 54) {\n full_year = \"19\".concat(full_year);\n } else {\n return false; // No 18XX years seen in any of the resources\n }\n }\n // Add missing zero if needed\n if (full_year.length === 3) {\n full_year = [full_year.slice(0, 2), '0', full_year.slice(2)].join('');\n }\n\n // Extract month from TIN and normalize\n var month = parseInt(tin.slice(2, 4), 10);\n if (month > 50) {\n month -= 50;\n }\n if (month > 20) {\n // Month-plus-twenty was only introduced in 2004\n if (parseInt(full_year, 10) < 2004) {\n return false;\n }\n month -= 20;\n }\n if (month < 10) {\n month = \"0\".concat(month);\n }\n\n // Check date validity\n var date = \"\".concat(full_year, \"/\").concat(month, \"/\").concat(tin.slice(4, 6));\n if (!(0, _isDate.default)(date, 'YYYY/MM/DD')) {\n return false;\n }\n\n // Verify divisibility by 11\n if (tin.length === 10) {\n if (parseInt(tin, 10) % 11 !== 0) {\n // Some numbers up to and including 1985 are still valid if\n // check (last) digit equals 0 and modulo of first 9 digits equals 10\n var checkdigit = parseInt(tin.slice(0, 9), 10) % 11;\n if (parseInt(full_year, 10) < 1986 && checkdigit === 10) {\n if (parseInt(tin.slice(9), 10) !== 0) {\n return false;\n }\n } else {\n return false;\n }\n }\n }\n return true;\n}\n\n/*\n * de-AT validation function\n * (Abgabenkontonummer, persons/entities)\n * Verify TIN validity by calling luhnCheck()\n */\nfunction deAtCheck(tin) {\n return algorithms.luhnCheck(tin);\n}\n\n/*\n * de-DE validation function\n * (Steueridentifikationsnummer (Steuer-IdNr.), persons only)\n * Tests for single duplicate/triplicate value, then calculates ISO 7064 check (last) digit\n * Partial implementation of spec (same result with both algorithms always)\n */\nfunction deDeCheck(tin) {\n // Split digits into an array for further processing\n var digits = tin.split('').map(function (a) {\n return parseInt(a, 10);\n });\n\n // Fill array with strings of number positions\n var occurences = [];\n for (var i = 0; i < digits.length - 1; i++) {\n occurences.push('');\n for (var j = 0; j < digits.length - 1; j++) {\n if (digits[i] === digits[j]) {\n occurences[i] += j;\n }\n }\n }\n\n // Remove digits with one occurence and test for only one duplicate/triplicate\n occurences = occurences.filter(function (a) {\n return a.length > 1;\n });\n if (occurences.length !== 2 && occurences.length !== 3) {\n return false;\n }\n\n // In case of triplicate value only two digits are allowed next to each other\n if (occurences[0].length === 3) {\n var trip_locations = occurences[0].split('').map(function (a) {\n return parseInt(a, 10);\n });\n var recurrent = 0; // Amount of neighbour occurences\n for (var _i = 0; _i < trip_locations.length - 1; _i++) {\n if (trip_locations[_i] + 1 === trip_locations[_i + 1]) {\n recurrent += 1;\n }\n }\n if (recurrent === 2) {\n return false;\n }\n }\n return algorithms.iso7064Check(tin);\n}\n\n/*\n * dk-DK validation function\n * (CPR-nummer (personnummer), persons only)\n * Checks if birth date (first six digits) is valid and assigned to century (seventh) digit,\n * and calculates check (last) digit\n */\nfunction dkDkCheck(tin) {\n tin = tin.replace(/\\W/, '');\n\n // Extract year, check if valid for given century digit and add century\n var year = parseInt(tin.slice(4, 6), 10);\n var century_digit = tin.slice(6, 7);\n switch (century_digit) {\n case '0':\n case '1':\n case '2':\n case '3':\n year = \"19\".concat(year);\n break;\n case '4':\n case '9':\n if (year < 37) {\n year = \"20\".concat(year);\n } else {\n year = \"19\".concat(year);\n }\n break;\n default:\n if (year < 37) {\n year = \"20\".concat(year);\n } else if (year > 58) {\n year = \"18\".concat(year);\n } else {\n return false;\n }\n break;\n }\n // Add missing zero if needed\n if (year.length === 3) {\n year = [year.slice(0, 2), '0', year.slice(2)].join('');\n }\n // Check date validity\n var date = \"\".concat(year, \"/\").concat(tin.slice(2, 4), \"/\").concat(tin.slice(0, 2));\n if (!(0, _isDate.default)(date, 'YYYY/MM/DD')) {\n return false;\n }\n\n // Split digits into an array for further processing\n var digits = tin.split('').map(function (a) {\n return parseInt(a, 10);\n });\n var checksum = 0;\n var weight = 4;\n // Multiply by weight and add to checksum\n for (var i = 0; i < 9; i++) {\n checksum += digits[i] * weight;\n weight -= 1;\n if (weight === 1) {\n weight = 7;\n }\n }\n checksum %= 11;\n if (checksum === 1) {\n return false;\n }\n return checksum === 0 ? digits[9] === 0 : digits[9] === 11 - checksum;\n}\n\n/*\n * el-CY validation function\n * (Arithmos Forologikou Mitroou (AFM/ΑΦΜ), persons only)\n * Verify TIN validity by calculating ASCII value of check (last) character\n */\nfunction elCyCheck(tin) {\n // split digits into an array for further processing\n var digits = tin.slice(0, 8).split('').map(function (a) {\n return parseInt(a, 10);\n });\n var checksum = 0;\n // add digits in even places\n for (var i = 1; i < digits.length; i += 2) {\n checksum += digits[i];\n }\n\n // add digits in odd places\n for (var _i2 = 0; _i2 < digits.length; _i2 += 2) {\n if (digits[_i2] < 2) {\n checksum += 1 - digits[_i2];\n } else {\n checksum += 2 * (digits[_i2] - 2) + 5;\n if (digits[_i2] > 4) {\n checksum += 2;\n }\n }\n }\n return String.fromCharCode(checksum % 26 + 65) === tin.charAt(8);\n}\n\n/*\n * el-GR validation function\n * (Arithmos Forologikou Mitroou (AFM/ΑΦΜ), persons/entities)\n * Verify TIN validity by calculating check (last) digit\n * Algorithm not in DG TAXUD document- sourced from:\n * - `http://epixeirisi.gr/%CE%9A%CE%A1%CE%99%CE%A3%CE%99%CE%9C%CE%91-%CE%98%CE%95%CE%9C%CE%91%CE%A4%CE%91-%CE%A6%CE%9F%CE%A1%CE%9F%CE%9B%CE%9F%CE%93%CE%99%CE%91%CE%A3-%CE%9A%CE%91%CE%99-%CE%9B%CE%9F%CE%93%CE%99%CE%A3%CE%A4%CE%99%CE%9A%CE%97%CE%A3/23791/%CE%91%CF%81%CE%B9%CE%B8%CE%BC%CF%8C%CF%82-%CE%A6%CE%BF%CF%81%CE%BF%CE%BB%CE%BF%CE%B3%CE%B9%CE%BA%CE%BF%CF%8D-%CE%9C%CE%B7%CF%84%CF%81%CF%8E%CE%BF%CF%85`\n */\nfunction elGrCheck(tin) {\n // split digits into an array for further processing\n var digits = tin.split('').map(function (a) {\n return parseInt(a, 10);\n });\n var checksum = 0;\n for (var i = 0; i < 8; i++) {\n checksum += digits[i] * Math.pow(2, 8 - i);\n }\n return checksum % 11 % 10 === digits[8];\n}\n\n/*\n * en-GB validation function (should go here if needed)\n * (National Insurance Number (NINO) or Unique Taxpayer Reference (UTR),\n * persons/entities respectively)\n */\n\n/*\n * en-IE validation function\n * (Personal Public Service Number (PPS No), persons only)\n * Verify TIN validity by calculating check (second to last) character\n */\nfunction enIeCheck(tin) {\n var checksum = algorithms.reverseMultiplyAndSum(tin.split('').slice(0, 7).map(function (a) {\n return parseInt(a, 10);\n }), 8);\n if (tin.length === 9 && tin[8] !== 'W') {\n checksum += (tin[8].charCodeAt(0) - 64) * 9;\n }\n checksum %= 23;\n if (checksum === 0) {\n return tin[7].toUpperCase() === 'W';\n }\n return tin[7].toUpperCase() === String.fromCharCode(64 + checksum);\n}\n\n// Valid US IRS campus prefixes\nvar enUsCampusPrefix = {\n andover: ['10', '12'],\n atlanta: ['60', '67'],\n austin: ['50', '53'],\n brookhaven: ['01', '02', '03', '04', '05', '06', '11', '13', '14', '16', '21', '22', '23', '25', '34', '51', '52', '54', '55', '56', '57', '58', '59', '65'],\n cincinnati: ['30', '32', '35', '36', '37', '38', '61'],\n fresno: ['15', '24'],\n internet: ['20', '26', '27', '45', '46', '47'],\n kansas: ['40', '44'],\n memphis: ['94', '95'],\n ogden: ['80', '90'],\n philadelphia: ['33', '39', '41', '42', '43', '46', '48', '62', '63', '64', '66', '68', '71', '72', '73', '74', '75', '76', '77', '81', '82', '83', '84', '85', '86', '87', '88', '91', '92', '93', '98', '99'],\n sba: ['31']\n};\n\n// Return an array of all US IRS campus prefixes\nfunction enUsGetPrefixes() {\n var prefixes = [];\n for (var location in enUsCampusPrefix) {\n // https://github.com/gotwarlost/istanbul/blob/master/ignoring-code-for-coverage.md#ignoring-code-for-coverage-purposes\n // istanbul ignore else\n if (enUsCampusPrefix.hasOwnProperty(location)) {\n prefixes.push.apply(prefixes, _toConsumableArray(enUsCampusPrefix[location]));\n }\n }\n return prefixes;\n}\n\n/*\n * en-US validation function\n * Verify that the TIN starts with a valid IRS campus prefix\n */\nfunction enUsCheck(tin) {\n return enUsGetPrefixes().indexOf(tin.slice(0, 2)) !== -1;\n}\n\n/*\n * es-AR validation function\n * Clave Única de Identificación Tributaria (CUIT/CUIL)\n * Sourced from:\n * - https://servicioscf.afip.gob.ar/publico/abc/ABCpaso2.aspx?id_nivel1=3036&id_nivel2=3040&p=Conceptos%20b%C3%A1sicos\n * - https://es.wikipedia.org/wiki/Clave_%C3%9Anica_de_Identificaci%C3%B3n_Tributaria\n */\n\nfunction esArCheck(tin) {\n var accum = 0;\n var digits = tin.split('');\n var digit = parseInt(digits.pop(), 10);\n for (var i = 0; i < digits.length; i++) {\n accum += digits[9 - i] * (2 + i % 6);\n }\n var verif = 11 - accum % 11;\n if (verif === 11) {\n verif = 0;\n } else if (verif === 10) {\n verif = 9;\n }\n return digit === verif;\n}\n\n/*\n * es-ES validation function\n * (Documento Nacional de Identidad (DNI)\n * or Número de Identificación de Extranjero (NIE), persons only)\n * Verify TIN validity by calculating check (last) character\n */\nfunction esEsCheck(tin) {\n // Split characters into an array for further processing\n var chars = tin.toUpperCase().split('');\n\n // Replace initial letter if needed\n if (isNaN(parseInt(chars[0], 10)) && chars.length > 1) {\n var lead_replace = 0;\n switch (chars[0]) {\n case 'Y':\n lead_replace = 1;\n break;\n case 'Z':\n lead_replace = 2;\n break;\n default:\n }\n chars.splice(0, 1, lead_replace);\n // Fill with zeros if smaller than proper\n } else {\n while (chars.length < 9) {\n chars.unshift(0);\n }\n }\n\n // Calculate checksum and check according to lookup\n var lookup = ['T', 'R', 'W', 'A', 'G', 'M', 'Y', 'F', 'P', 'D', 'X', 'B', 'N', 'J', 'Z', 'S', 'Q', 'V', 'H', 'L', 'C', 'K', 'E'];\n chars = chars.join('');\n var checksum = parseInt(chars.slice(0, 8), 10) % 23;\n return chars[8] === lookup[checksum];\n}\n\n/*\n * et-EE validation function\n * (Isikukood (IK), persons only)\n * Checks if birth date (century digit and six following) is valid and calculates check (last) digit\n * Material not in DG TAXUD document sourced from:\n * - `https://www.oecd.org/tax/automatic-exchange/crs-implementation-and-assistance/tax-identification-numbers/Estonia-TIN.pdf`\n */\nfunction etEeCheck(tin) {\n // Extract year and add century\n var full_year = tin.slice(1, 3);\n var century_digit = tin.slice(0, 1);\n switch (century_digit) {\n case '1':\n case '2':\n full_year = \"18\".concat(full_year);\n break;\n case '3':\n case '4':\n full_year = \"19\".concat(full_year);\n break;\n default:\n full_year = \"20\".concat(full_year);\n break;\n }\n // Check date validity\n var date = \"\".concat(full_year, \"/\").concat(tin.slice(3, 5), \"/\").concat(tin.slice(5, 7));\n if (!(0, _isDate.default)(date, 'YYYY/MM/DD')) {\n return false;\n }\n\n // Split digits into an array for further processing\n var digits = tin.split('').map(function (a) {\n return parseInt(a, 10);\n });\n var checksum = 0;\n var weight = 1;\n // Multiply by weight and add to checksum\n for (var i = 0; i < 10; i++) {\n checksum += digits[i] * weight;\n weight += 1;\n if (weight === 10) {\n weight = 1;\n }\n }\n // Do again if modulo 11 of checksum is 10\n if (checksum % 11 === 10) {\n checksum = 0;\n weight = 3;\n for (var _i3 = 0; _i3 < 10; _i3++) {\n checksum += digits[_i3] * weight;\n weight += 1;\n if (weight === 10) {\n weight = 1;\n }\n }\n if (checksum % 11 === 10) {\n return digits[10] === 0;\n }\n }\n return checksum % 11 === digits[10];\n}\n\n/*\n * fi-FI validation function\n * (Henkilötunnus (HETU), persons only)\n * Checks if birth date (first six digits plus century symbol) is valid\n * and calculates check (last) digit\n */\nfunction fiFiCheck(tin) {\n // Extract year and add century\n var full_year = tin.slice(4, 6);\n var century_symbol = tin.slice(6, 7);\n switch (century_symbol) {\n case '+':\n full_year = \"18\".concat(full_year);\n break;\n case '-':\n full_year = \"19\".concat(full_year);\n break;\n default:\n full_year = \"20\".concat(full_year);\n break;\n }\n // Check date validity\n var date = \"\".concat(full_year, \"/\").concat(tin.slice(2, 4), \"/\").concat(tin.slice(0, 2));\n if (!(0, _isDate.default)(date, 'YYYY/MM/DD')) {\n return false;\n }\n\n // Calculate check character\n var checksum = parseInt(tin.slice(0, 6) + tin.slice(7, 10), 10) % 31;\n if (checksum < 10) {\n return checksum === parseInt(tin.slice(10), 10);\n }\n checksum -= 10;\n var letters_lookup = ['A', 'B', 'C', 'D', 'E', 'F', 'H', 'J', 'K', 'L', 'M', 'N', 'P', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y'];\n return letters_lookup[checksum] === tin.slice(10);\n}\n\n/*\n * fr/nl-BE validation function\n * (Numéro national (N.N.), persons only)\n * Checks if birth date (first six digits) is valid and calculates check (last two) digits\n */\nfunction frBeCheck(tin) {\n // Zero month/day value is acceptable\n if (tin.slice(2, 4) !== '00' || tin.slice(4, 6) !== '00') {\n // Extract date from first six digits of TIN\n var date = \"\".concat(tin.slice(0, 2), \"/\").concat(tin.slice(2, 4), \"/\").concat(tin.slice(4, 6));\n if (!(0, _isDate.default)(date, 'YY/MM/DD')) {\n return false;\n }\n }\n var checksum = 97 - parseInt(tin.slice(0, 9), 10) % 97;\n var checkdigits = parseInt(tin.slice(9, 11), 10);\n if (checksum !== checkdigits) {\n checksum = 97 - parseInt(\"2\".concat(tin.slice(0, 9)), 10) % 97;\n if (checksum !== checkdigits) {\n return false;\n }\n }\n return true;\n}\n\n/*\n * fr-FR validation function\n * (Numéro fiscal de référence (numéro SPI), persons only)\n * Verify TIN validity by calculating check (last three) digits\n */\nfunction frFrCheck(tin) {\n tin = tin.replace(/\\s/g, '');\n var checksum = parseInt(tin.slice(0, 10), 10) % 511;\n var checkdigits = parseInt(tin.slice(10, 13), 10);\n return checksum === checkdigits;\n}\n\n/*\n * fr/lb-LU validation function\n * (numéro d’identification personnelle, persons only)\n * Verify birth date validity and run Luhn and Verhoeff checks\n */\nfunction frLuCheck(tin) {\n // Extract date and check validity\n var date = \"\".concat(tin.slice(0, 4), \"/\").concat(tin.slice(4, 6), \"/\").concat(tin.slice(6, 8));\n if (!(0, _isDate.default)(date, 'YYYY/MM/DD')) {\n return false;\n }\n\n // Run Luhn check\n if (!algorithms.luhnCheck(tin.slice(0, 12))) {\n return false;\n }\n // Remove Luhn check digit and run Verhoeff check\n return algorithms.verhoeffCheck(\"\".concat(tin.slice(0, 11)).concat(tin[12]));\n}\n\n/*\n * hr-HR validation function\n * (Osobni identifikacijski broj (OIB), persons/entities)\n * Verify TIN validity by calling iso7064Check(digits)\n */\nfunction hrHrCheck(tin) {\n return algorithms.iso7064Check(tin);\n}\n\n/*\n * hu-HU validation function\n * (AdóazonosÃtó jel, persons only)\n * Verify TIN validity by calculating check (last) digit\n */\nfunction huHuCheck(tin) {\n // split digits into an array for further processing\n var digits = tin.split('').map(function (a) {\n return parseInt(a, 10);\n });\n var checksum = 8;\n for (var i = 1; i < 9; i++) {\n checksum += digits[i] * (i + 1);\n }\n return checksum % 11 === digits[9];\n}\n\n/*\n * lt-LT validation function (should go here if needed)\n * (Asmens kodas, persons/entities respectively)\n * Current validation check is alias of etEeCheck- same format applies\n */\n\n/*\n * it-IT first/last name validity check\n * Accepts it-IT TIN-encoded names as a three-element character array and checks their validity\n * Due to lack of clarity between resources (\"Are only Italian consonants used?\n * What happens if a person has X in their name?\" etc.) only two test conditions\n * have been implemented:\n * Vowels may only be followed by other vowels or an X character\n * and X characters after vowels may only be followed by other X characters.\n */\nfunction itItNameCheck(name) {\n // true at the first occurence of a vowel\n var vowelflag = false;\n\n // true at the first occurence of an X AFTER vowel\n // (to properly handle last names with X as consonant)\n var xflag = false;\n for (var i = 0; i < 3; i++) {\n if (!vowelflag && /[AEIOU]/.test(name[i])) {\n vowelflag = true;\n } else if (!xflag && vowelflag && name[i] === 'X') {\n xflag = true;\n } else if (i > 0) {\n if (vowelflag && !xflag) {\n if (!/[AEIOU]/.test(name[i])) {\n return false;\n }\n }\n if (xflag) {\n if (!/X/.test(name[i])) {\n return false;\n }\n }\n }\n }\n return true;\n}\n\n/*\n * it-IT validation function\n * (Codice fiscale (TIN-IT), persons only)\n * Verify name, birth date and codice catastale validity\n * and calculate check character.\n * Material not in DG-TAXUD document sourced from:\n * `https://en.wikipedia.org/wiki/Italian_fiscal_code`\n */\nfunction itItCheck(tin) {\n // Capitalize and split characters into an array for further processing\n var chars = tin.toUpperCase().split('');\n\n // Check first and last name validity calling itItNameCheck()\n if (!itItNameCheck(chars.slice(0, 3))) {\n return false;\n }\n if (!itItNameCheck(chars.slice(3, 6))) {\n return false;\n }\n\n // Convert letters in number spaces back to numbers if any\n var number_locations = [6, 7, 9, 10, 12, 13, 14];\n var number_replace = {\n L: '0',\n M: '1',\n N: '2',\n P: '3',\n Q: '4',\n R: '5',\n S: '6',\n T: '7',\n U: '8',\n V: '9'\n };\n for (var _i4 = 0, _number_locations = number_locations; _i4 < _number_locations.length; _i4++) {\n var i = _number_locations[_i4];\n if (chars[i] in number_replace) {\n chars.splice(i, 1, number_replace[chars[i]]);\n }\n }\n\n // Extract month and day, and check date validity\n var month_replace = {\n A: '01',\n B: '02',\n C: '03',\n D: '04',\n E: '05',\n H: '06',\n L: '07',\n M: '08',\n P: '09',\n R: '10',\n S: '11',\n T: '12'\n };\n var month = month_replace[chars[8]];\n var day = parseInt(chars[9] + chars[10], 10);\n if (day > 40) {\n day -= 40;\n }\n if (day < 10) {\n day = \"0\".concat(day);\n }\n var date = \"\".concat(chars[6]).concat(chars[7], \"/\").concat(month, \"/\").concat(day);\n if (!(0, _isDate.default)(date, 'YY/MM/DD')) {\n return false;\n }\n\n // Calculate check character by adding up even and odd characters as numbers\n var checksum = 0;\n for (var _i5 = 1; _i5 < chars.length - 1; _i5 += 2) {\n var char_to_int = parseInt(chars[_i5], 10);\n if (isNaN(char_to_int)) {\n char_to_int = chars[_i5].charCodeAt(0) - 65;\n }\n checksum += char_to_int;\n }\n var odd_convert = {\n // Maps of characters at odd places\n A: 1,\n B: 0,\n C: 5,\n D: 7,\n E: 9,\n F: 13,\n G: 15,\n H: 17,\n I: 19,\n J: 21,\n K: 2,\n L: 4,\n M: 18,\n N: 20,\n O: 11,\n P: 3,\n Q: 6,\n R: 8,\n S: 12,\n T: 14,\n U: 16,\n V: 10,\n W: 22,\n X: 25,\n Y: 24,\n Z: 23,\n 0: 1,\n 1: 0\n };\n for (var _i6 = 0; _i6 < chars.length - 1; _i6 += 2) {\n var _char_to_int = 0;\n if (chars[_i6] in odd_convert) {\n _char_to_int = odd_convert[chars[_i6]];\n } else {\n var multiplier = parseInt(chars[_i6], 10);\n _char_to_int = 2 * multiplier + 1;\n if (multiplier > 4) {\n _char_to_int += 2;\n }\n }\n checksum += _char_to_int;\n }\n if (String.fromCharCode(65 + checksum % 26) !== chars[15]) {\n return false;\n }\n return true;\n}\n\n/*\n * lv-LV validation function\n * (Personas kods (PK), persons only)\n * Check validity of birth date and calculate check (last) digit\n * Support only for old format numbers (not starting with '32', issued before 2017/07/01)\n * Material not in DG TAXUD document sourced from:\n * `https://boot.ritakafija.lv/forums/index.php?/topic/88314-personas-koda-algoritms-%C4%8Deksumma/`\n */\nfunction lvLvCheck(tin) {\n tin = tin.replace(/\\W/, '');\n // Extract date from TIN\n var day = tin.slice(0, 2);\n if (day !== '32') {\n // No date/checksum check if new format\n var month = tin.slice(2, 4);\n if (month !== '00') {\n // No date check if unknown month\n var full_year = tin.slice(4, 6);\n switch (tin[6]) {\n case '0':\n full_year = \"18\".concat(full_year);\n break;\n case '1':\n full_year = \"19\".concat(full_year);\n break;\n default:\n full_year = \"20\".concat(full_year);\n break;\n }\n // Check date validity\n var date = \"\".concat(full_year, \"/\").concat(tin.slice(2, 4), \"/\").concat(day);\n if (!(0, _isDate.default)(date, 'YYYY/MM/DD')) {\n return false;\n }\n }\n\n // Calculate check digit\n var checksum = 1101;\n var multip_lookup = [1, 6, 3, 7, 9, 10, 5, 8, 4, 2];\n for (var i = 0; i < tin.length - 1; i++) {\n checksum -= parseInt(tin[i], 10) * multip_lookup[i];\n }\n return parseInt(tin[10], 10) === checksum % 11;\n }\n return true;\n}\n\n/*\n * mt-MT validation function\n * (Identity Card Number or Unique Taxpayer Reference, persons/entities)\n * Verify Identity Card Number structure (no other tests found)\n */\nfunction mtMtCheck(tin) {\n if (tin.length !== 9) {\n // No tests for UTR\n var chars = tin.toUpperCase().split('');\n // Fill with zeros if smaller than proper\n while (chars.length < 8) {\n chars.unshift(0);\n }\n // Validate format according to last character\n switch (tin[7]) {\n case 'A':\n case 'P':\n if (parseInt(chars[6], 10) === 0) {\n return false;\n }\n break;\n default:\n {\n var first_part = parseInt(chars.join('').slice(0, 5), 10);\n if (first_part > 32000) {\n return false;\n }\n var second_part = parseInt(chars.join('').slice(5, 7), 10);\n if (first_part === second_part) {\n return false;\n }\n }\n }\n }\n return true;\n}\n\n/*\n * nl-NL validation function\n * (Burgerservicenummer (BSN) or Rechtspersonen Samenwerkingsverbanden Informatie Nummer (RSIN),\n * persons/entities respectively)\n * Verify TIN validity by calculating check (last) digit (variant of MOD 11)\n */\nfunction nlNlCheck(tin) {\n return algorithms.reverseMultiplyAndSum(tin.split('').slice(0, 8).map(function (a) {\n return parseInt(a, 10);\n }), 9) % 11 === parseInt(tin[8], 10);\n}\n\n/*\n * pl-PL validation function\n * (Powszechny Elektroniczny System Ewidencji LudnoÅ›ci (PESEL)\n * or Numer identyfikacji podatkowej (NIP), persons/entities)\n * Verify TIN validity by validating birth date (PESEL) and calculating check (last) digit\n */\nfunction plPlCheck(tin) {\n // NIP\n if (tin.length === 10) {\n // Calculate last digit by multiplying with lookup\n var lookup = [6, 5, 7, 2, 3, 4, 5, 6, 7];\n var _checksum = 0;\n for (var i = 0; i < lookup.length; i++) {\n _checksum += parseInt(tin[i], 10) * lookup[i];\n }\n _checksum %= 11;\n if (_checksum === 10) {\n return false;\n }\n return _checksum === parseInt(tin[9], 10);\n }\n\n // PESEL\n // Extract full year using month\n var full_year = tin.slice(0, 2);\n var month = parseInt(tin.slice(2, 4), 10);\n if (month > 80) {\n full_year = \"18\".concat(full_year);\n month -= 80;\n } else if (month > 60) {\n full_year = \"22\".concat(full_year);\n month -= 60;\n } else if (month > 40) {\n full_year = \"21\".concat(full_year);\n month -= 40;\n } else if (month > 20) {\n full_year = \"20\".concat(full_year);\n month -= 20;\n } else {\n full_year = \"19\".concat(full_year);\n }\n // Add leading zero to month if needed\n if (month < 10) {\n month = \"0\".concat(month);\n }\n // Check date validity\n var date = \"\".concat(full_year, \"/\").concat(month, \"/\").concat(tin.slice(4, 6));\n if (!(0, _isDate.default)(date, 'YYYY/MM/DD')) {\n return false;\n }\n\n // Calculate last digit by mulitplying with odd one-digit numbers except 5\n var checksum = 0;\n var multiplier = 1;\n for (var _i7 = 0; _i7 < tin.length - 1; _i7++) {\n checksum += parseInt(tin[_i7], 10) * multiplier % 10;\n multiplier += 2;\n if (multiplier > 10) {\n multiplier = 1;\n } else if (multiplier === 5) {\n multiplier += 2;\n }\n }\n checksum = 10 - checksum % 10;\n return checksum === parseInt(tin[10], 10);\n}\n\n/*\n* pt-BR validation function\n* (Cadastro de Pessoas FÃsicas (CPF, persons)\n* Cadastro Nacional de Pessoas JurÃdicas (CNPJ, entities)\n* Both inputs will be validated\n*/\n\nfunction ptBrCheck(tin) {\n if (tin.length === 11) {\n var _sum;\n var remainder;\n _sum = 0;\n if (\n // Reject known invalid CPFs\n tin === '11111111111' || tin === '22222222222' || tin === '33333333333' || tin === '44444444444' || tin === '55555555555' || tin === '66666666666' || tin === '77777777777' || tin === '88888888888' || tin === '99999999999' || tin === '00000000000') return false;\n for (var i = 1; i <= 9; i++) _sum += parseInt(tin.substring(i - 1, i), 10) * (11 - i);\n remainder = _sum * 10 % 11;\n if (remainder === 10) remainder = 0;\n if (remainder !== parseInt(tin.substring(9, 10), 10)) return false;\n _sum = 0;\n for (var _i8 = 1; _i8 <= 10; _i8++) _sum += parseInt(tin.substring(_i8 - 1, _i8), 10) * (12 - _i8);\n remainder = _sum * 10 % 11;\n if (remainder === 10) remainder = 0;\n if (remainder !== parseInt(tin.substring(10, 11), 10)) return false;\n return true;\n }\n if (\n // Reject know invalid CNPJs\n tin === '00000000000000' || tin === '11111111111111' || tin === '22222222222222' || tin === '33333333333333' || tin === '44444444444444' || tin === '55555555555555' || tin === '66666666666666' || tin === '77777777777777' || tin === '88888888888888' || tin === '99999999999999') {\n return false;\n }\n var length = tin.length - 2;\n var identifiers = tin.substring(0, length);\n var verificators = tin.substring(length);\n var sum = 0;\n var pos = length - 7;\n for (var _i9 = length; _i9 >= 1; _i9--) {\n sum += identifiers.charAt(length - _i9) * pos;\n pos -= 1;\n if (pos < 2) {\n pos = 9;\n }\n }\n var result = sum % 11 < 2 ? 0 : 11 - sum % 11;\n if (result !== parseInt(verificators.charAt(0), 10)) {\n return false;\n }\n length += 1;\n identifiers = tin.substring(0, length);\n sum = 0;\n pos = length - 7;\n for (var _i10 = length; _i10 >= 1; _i10--) {\n sum += identifiers.charAt(length - _i10) * pos;\n pos -= 1;\n if (pos < 2) {\n pos = 9;\n }\n }\n result = sum % 11 < 2 ? 0 : 11 - sum % 11;\n if (result !== parseInt(verificators.charAt(1), 10)) {\n return false;\n }\n return true;\n}\n\n/*\n * pt-PT validation function\n * (Número de identificação fiscal (NIF), persons/entities)\n * Verify TIN validity by calculating check (last) digit (variant of MOD 11)\n */\nfunction ptPtCheck(tin) {\n var checksum = 11 - algorithms.reverseMultiplyAndSum(tin.split('').slice(0, 8).map(function (a) {\n return parseInt(a, 10);\n }), 9) % 11;\n if (checksum > 9) {\n return parseInt(tin[8], 10) === 0;\n }\n return checksum === parseInt(tin[8], 10);\n}\n\n/*\n * ro-RO validation function\n * (Cod Numeric Personal (CNP) or Cod de înregistrare fiscală (CIF),\n * persons only)\n * Verify CNP validity by calculating check (last) digit (test not found for CIF)\n * Material not in DG TAXUD document sourced from:\n * `https://en.wikipedia.org/wiki/National_identification_number#Romania`\n */\nfunction roRoCheck(tin) {\n if (tin.slice(0, 4) !== '9000') {\n // No test found for this format\n // Extract full year using century digit if possible\n var full_year = tin.slice(1, 3);\n switch (tin[0]) {\n case '1':\n case '2':\n full_year = \"19\".concat(full_year);\n break;\n case '3':\n case '4':\n full_year = \"18\".concat(full_year);\n break;\n case '5':\n case '6':\n full_year = \"20\".concat(full_year);\n break;\n default:\n }\n\n // Check date validity\n var date = \"\".concat(full_year, \"/\").concat(tin.slice(3, 5), \"/\").concat(tin.slice(5, 7));\n if (date.length === 8) {\n if (!(0, _isDate.default)(date, 'YY/MM/DD')) {\n return false;\n }\n } else if (!(0, _isDate.default)(date, 'YYYY/MM/DD')) {\n return false;\n }\n\n // Calculate check digit\n var digits = tin.split('').map(function (a) {\n return parseInt(a, 10);\n });\n var multipliers = [2, 7, 9, 1, 4, 6, 3, 5, 8, 2, 7, 9];\n var checksum = 0;\n for (var i = 0; i < multipliers.length; i++) {\n checksum += digits[i] * multipliers[i];\n }\n if (checksum % 11 === 10) {\n return digits[12] === 1;\n }\n return digits[12] === checksum % 11;\n }\n return true;\n}\n\n/*\n * sk-SK validation function\n * (Rodné ÄÃslo (RÄŒ) or bezvýznamové identifikaÄné ÄÃslo (BIÄŒ), persons only)\n * Checks validity of pre-1954 birth numbers (rodné ÄÃslo) only\n * Due to the introduction of the pseudo-random BIÄŒ it is not possible to test\n * post-1954 birth numbers without knowing whether they are BIÄŒ or RÄŒ beforehand\n */\nfunction skSkCheck(tin) {\n if (tin.length === 9) {\n tin = tin.replace(/\\W/, '');\n if (tin.slice(6) === '000') {\n return false;\n } // Three-zero serial not assigned before 1954\n\n // Extract full year from TIN length\n var full_year = parseInt(tin.slice(0, 2), 10);\n if (full_year > 53) {\n return false;\n }\n if (full_year < 10) {\n full_year = \"190\".concat(full_year);\n } else {\n full_year = \"19\".concat(full_year);\n }\n\n // Extract month from TIN and normalize\n var month = parseInt(tin.slice(2, 4), 10);\n if (month > 50) {\n month -= 50;\n }\n if (month < 10) {\n month = \"0\".concat(month);\n }\n\n // Check date validity\n var date = \"\".concat(full_year, \"/\").concat(month, \"/\").concat(tin.slice(4, 6));\n if (!(0, _isDate.default)(date, 'YYYY/MM/DD')) {\n return false;\n }\n }\n return true;\n}\n\n/*\n * sl-SI validation function\n * (DavÄna Å¡tevilka, persons/entities)\n * Verify TIN validity by calculating check (last) digit (variant of MOD 11)\n */\nfunction slSiCheck(tin) {\n var checksum = 11 - algorithms.reverseMultiplyAndSum(tin.split('').slice(0, 7).map(function (a) {\n return parseInt(a, 10);\n }), 8) % 11;\n if (checksum === 10) {\n return parseInt(tin[7], 10) === 0;\n }\n return checksum === parseInt(tin[7], 10);\n}\n\n/*\n * sv-SE validation function\n * (Personnummer or samordningsnummer, persons only)\n * Checks validity of birth date and calls luhnCheck() to validate check (last) digit\n */\nfunction svSeCheck(tin) {\n // Make copy of TIN and normalize to two-digit year form\n var tin_copy = tin.slice(0);\n if (tin.length > 11) {\n tin_copy = tin_copy.slice(2);\n }\n\n // Extract date of birth\n var full_year = '';\n var month = tin_copy.slice(2, 4);\n var day = parseInt(tin_copy.slice(4, 6), 10);\n if (tin.length > 11) {\n full_year = tin.slice(0, 4);\n } else {\n full_year = tin.slice(0, 2);\n if (tin.length === 11 && day < 60) {\n // Extract full year from centenarian symbol\n // Should work just fine until year 10000 or so\n var current_year = new Date().getFullYear().toString();\n var current_century = parseInt(current_year.slice(0, 2), 10);\n current_year = parseInt(current_year, 10);\n if (tin[6] === '-') {\n if (parseInt(\"\".concat(current_century).concat(full_year), 10) > current_year) {\n full_year = \"\".concat(current_century - 1).concat(full_year);\n } else {\n full_year = \"\".concat(current_century).concat(full_year);\n }\n } else {\n full_year = \"\".concat(current_century - 1).concat(full_year);\n if (current_year - parseInt(full_year, 10) < 100) {\n return false;\n }\n }\n }\n }\n\n // Normalize day and check date validity\n if (day > 60) {\n day -= 60;\n }\n if (day < 10) {\n day = \"0\".concat(day);\n }\n var date = \"\".concat(full_year, \"/\").concat(month, \"/\").concat(day);\n if (date.length === 8) {\n if (!(0, _isDate.default)(date, 'YY/MM/DD')) {\n return false;\n }\n } else if (!(0, _isDate.default)(date, 'YYYY/MM/DD')) {\n return false;\n }\n return algorithms.luhnCheck(tin.replace(/\\W/, ''));\n}\n\n/**\n * uk-UA validation function\n * Verify TIN validity by calculating check (last) digit (variant of MOD 11)\n */\nfunction ukUaCheck(tin) {\n // Calculate check digit\n var digits = tin.split('').map(function (a) {\n return parseInt(a, 10);\n });\n var multipliers = [-1, 5, 7, 9, 4, 6, 10, 5, 7];\n var checksum = 0;\n for (var i = 0; i < multipliers.length; i++) {\n checksum += digits[i] * multipliers[i];\n }\n return checksum % 11 === 10 ? digits[9] === 0 : digits[9] === checksum % 11;\n}\n\n// Locale lookup objects\n\n/*\n * Tax id regex formats for various locales\n *\n * Where not explicitly specified in DG-TAXUD document both\n * uppercase and lowercase letters are acceptable.\n */\nvar taxIdFormat = {\n 'bg-BG': /^\\d{10}$/,\n 'cs-CZ': /^\\d{6}\\/{0,1}\\d{3,4}$/,\n 'de-AT': /^\\d{9}$/,\n 'de-DE': /^[1-9]\\d{10}$/,\n 'dk-DK': /^\\d{6}-{0,1}\\d{4}$/,\n 'el-CY': /^[09]\\d{7}[A-Z]$/,\n 'el-GR': /^([0-4]|[7-9])\\d{8}$/,\n 'en-CA': /^\\d{9}$/,\n 'en-GB': /^\\d{10}$|^(?!GB|NK|TN|ZZ)(?![DFIQUV])[A-Z](?![DFIQUVO])[A-Z]\\d{6}[ABCD ]$/i,\n 'en-IE': /^\\d{7}[A-W][A-IW]{0,1}$/i,\n 'en-US': /^\\d{2}[- ]{0,1}\\d{7}$/,\n 'es-AR': /(20|23|24|27|30|33|34)[0-9]{8}[0-9]/,\n 'es-ES': /^(\\d{0,8}|[XYZKLM]\\d{7})[A-HJ-NP-TV-Z]$/i,\n 'et-EE': /^[1-6]\\d{6}(00[1-9]|0[1-9][0-9]|[1-6][0-9]{2}|70[0-9]|710)\\d$/,\n 'fi-FI': /^\\d{6}[-+A]\\d{3}[0-9A-FHJ-NPR-Y]$/i,\n 'fr-BE': /^\\d{11}$/,\n 'fr-FR': /^[0-3]\\d{12}$|^[0-3]\\d\\s\\d{2}(\\s\\d{3}){3}$/,\n // Conforms both to official spec and provided example\n 'fr-LU': /^\\d{13}$/,\n 'hr-HR': /^\\d{11}$/,\n 'hu-HU': /^8\\d{9}$/,\n 'it-IT': /^[A-Z]{6}[L-NP-V0-9]{2}[A-EHLMPRST][L-NP-V0-9]{2}[A-ILMZ][L-NP-V0-9]{3}[A-Z]$/i,\n 'lv-LV': /^\\d{6}-{0,1}\\d{5}$/,\n // Conforms both to DG TAXUD spec and original research\n 'mt-MT': /^\\d{3,7}[APMGLHBZ]$|^([1-8])\\1\\d{7}$/i,\n 'nl-NL': /^\\d{9}$/,\n 'pl-PL': /^\\d{10,11}$/,\n 'pt-BR': /(?:^\\d{11}$)|(?:^\\d{14}$)/,\n 'pt-PT': /^\\d{9}$/,\n 'ro-RO': /^\\d{13}$/,\n 'sk-SK': /^\\d{6}\\/{0,1}\\d{3,4}$/,\n 'sl-SI': /^[1-9]\\d{7}$/,\n 'sv-SE': /^(\\d{6}[-+]{0,1}\\d{4}|(18|19|20)\\d{6}[-+]{0,1}\\d{4})$/,\n 'uk-UA': /^\\d{10}$/\n};\n// taxIdFormat locale aliases\ntaxIdFormat['lb-LU'] = taxIdFormat['fr-LU'];\ntaxIdFormat['lt-LT'] = taxIdFormat['et-EE'];\ntaxIdFormat['nl-BE'] = taxIdFormat['fr-BE'];\ntaxIdFormat['fr-CA'] = taxIdFormat['en-CA'];\n\n// Algorithmic tax id check functions for various locales\nvar taxIdCheck = {\n 'bg-BG': bgBgCheck,\n 'cs-CZ': csCzCheck,\n 'de-AT': deAtCheck,\n 'de-DE': deDeCheck,\n 'dk-DK': dkDkCheck,\n 'el-CY': elCyCheck,\n 'el-GR': elGrCheck,\n 'en-CA': isCanadianSIN,\n 'en-IE': enIeCheck,\n 'en-US': enUsCheck,\n 'es-AR': esArCheck,\n 'es-ES': esEsCheck,\n 'et-EE': etEeCheck,\n 'fi-FI': fiFiCheck,\n 'fr-BE': frBeCheck,\n 'fr-FR': frFrCheck,\n 'fr-LU': frLuCheck,\n 'hr-HR': hrHrCheck,\n 'hu-HU': huHuCheck,\n 'it-IT': itItCheck,\n 'lv-LV': lvLvCheck,\n 'mt-MT': mtMtCheck,\n 'nl-NL': nlNlCheck,\n 'pl-PL': plPlCheck,\n 'pt-BR': ptBrCheck,\n 'pt-PT': ptPtCheck,\n 'ro-RO': roRoCheck,\n 'sk-SK': skSkCheck,\n 'sl-SI': slSiCheck,\n 'sv-SE': svSeCheck,\n 'uk-UA': ukUaCheck\n};\n// taxIdCheck locale aliases\ntaxIdCheck['lb-LU'] = taxIdCheck['fr-LU'];\ntaxIdCheck['lt-LT'] = taxIdCheck['et-EE'];\ntaxIdCheck['nl-BE'] = taxIdCheck['fr-BE'];\ntaxIdCheck['fr-CA'] = taxIdCheck['en-CA'];\n\n// Regexes for locales where characters should be omitted before checking format\nvar allsymbols = /[-\\\\\\/!@#$%\\^&\\*\\(\\)\\+\\=\\[\\]]+/g;\nvar sanitizeRegexes = {\n 'de-AT': allsymbols,\n 'de-DE': /[\\/\\\\]/g,\n 'fr-BE': allsymbols\n};\n// sanitizeRegexes locale aliases\nsanitizeRegexes['nl-BE'] = sanitizeRegexes['fr-BE'];\n\n/*\n * Validator function\n * Return true if the passed string is a valid tax identification number\n * for the specified locale.\n * Throw an error exception if the locale is not supported.\n */\nfunction isTaxID(str) {\n var locale = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'en-US';\n (0, _assertString.default)(str);\n // Copy TIN to avoid replacement if sanitized\n var strcopy = str.slice(0);\n if (locale in taxIdFormat) {\n if (locale in sanitizeRegexes) {\n strcopy = strcopy.replace(sanitizeRegexes[locale], '');\n }\n if (!taxIdFormat[locale].test(strcopy)) {\n return false;\n }\n if (locale in taxIdCheck) {\n return taxIdCheck[locale](strcopy);\n }\n // Fallthrough; not all locales have algorithmic checks\n return true;\n }\n throw new Error(\"Invalid locale '\".concat(locale, \"'\"));\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isMobilePhone;\nexports.locales = void 0;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n/* eslint-disable max-len */\nvar phones = {\n 'am-AM': /^(\\+?374|0)(33|4[134]|55|77|88|9[13-689])\\d{6}$/,\n 'ar-AE': /^((\\+?971)|0)?5[024568]\\d{7}$/,\n 'ar-BH': /^(\\+?973)?(3|6)\\d{7}$/,\n 'ar-DZ': /^(\\+?213|0)(5|6|7)\\d{8}$/,\n 'ar-LB': /^(\\+?961)?((3|81)\\d{6}|7\\d{7})$/,\n 'ar-EG': /^((\\+?20)|0)?1[0125]\\d{8}$/,\n 'ar-IQ': /^(\\+?964|0)?7[0-9]\\d{8}$/,\n 'ar-JO': /^(\\+?962|0)?7[789]\\d{7}$/,\n 'ar-KW': /^(\\+?965)([569]\\d{7}|41\\d{6})$/,\n 'ar-LY': /^((\\+?218)|0)?(9[1-6]\\d{7}|[1-8]\\d{7,9})$/,\n 'ar-MA': /^(?:(?:\\+|00)212|0)[5-7]\\d{8}$/,\n 'ar-OM': /^((\\+|00)968)?(9[1-9])\\d{6}$/,\n 'ar-PS': /^(\\+?970|0)5[6|9](\\d{7})$/,\n 'ar-SA': /^(!?(\\+?966)|0)?5\\d{8}$/,\n 'ar-SD': /^((\\+?249)|0)?(9[012369]|1[012])\\d{7}$/,\n 'ar-SY': /^(!?(\\+?963)|0)?9\\d{8}$/,\n 'ar-TN': /^(\\+?216)?[2459]\\d{7}$/,\n 'az-AZ': /^(\\+994|0)(10|5[015]|7[07]|99)\\d{7}$/,\n 'bs-BA': /^((((\\+|00)3876)|06))((([0-3]|[5-6])\\d{6})|(4\\d{7}))$/,\n 'be-BY': /^(\\+?375)?(24|25|29|33|44)\\d{7}$/,\n 'bg-BG': /^(\\+?359|0)?8[789]\\d{7}$/,\n 'bn-BD': /^(\\+?880|0)1[13456789][0-9]{8}$/,\n 'ca-AD': /^(\\+376)?[346]\\d{5}$/,\n 'cs-CZ': /^(\\+?420)? ?[1-9][0-9]{2} ?[0-9]{3} ?[0-9]{3}$/,\n 'da-DK': /^(\\+?45)?\\s?\\d{2}\\s?\\d{2}\\s?\\d{2}\\s?\\d{2}$/,\n 'de-DE': /^((\\+49|0)1)(5[0-25-9]\\d|6([23]|0\\d?)|7([0-57-9]|6\\d))\\d{7,9}$/,\n 'de-AT': /^(\\+43|0)\\d{1,4}\\d{3,12}$/,\n 'de-CH': /^(\\+41|0)([1-9])\\d{1,9}$/,\n 'de-LU': /^(\\+352)?((6\\d1)\\d{6})$/,\n 'dv-MV': /^(\\+?960)?(7[2-9]|9[1-9])\\d{5}$/,\n 'el-GR': /^(\\+?30|0)?6(8[5-9]|9(?![26])[0-9])\\d{7}$/,\n 'el-CY': /^(\\+?357?)?(9(9|6)\\d{6})$/,\n 'en-AI': /^(\\+?1|0)264(?:2(35|92)|4(?:6[1-2]|76|97)|5(?:3[6-9]|8[1-4])|7(?:2(4|9)|72))\\d{4}$/,\n 'en-AU': /^(\\+?61|0)4\\d{8}$/,\n 'en-AG': /^(?:\\+1|1)268(?:464|7(?:1[3-9]|[28]\\d|3[0246]|64|7[0-689]))\\d{4}$/,\n 'en-BM': /^(\\+?1)?441(((3|7)\\d{6}$)|(5[0-3][0-9]\\d{4}$)|(59\\d{5}$))/,\n 'en-BS': /^(\\+?1[-\\s]?|0)?\\(?242\\)?[-\\s]?\\d{3}[-\\s]?\\d{4}$/,\n 'en-GB': /^(\\+?44|0)7\\d{9}$/,\n 'en-GG': /^(\\+?44|0)1481\\d{6}$/,\n 'en-GH': /^(\\+233|0)(20|50|24|54|27|57|26|56|23|28|55|59)\\d{7}$/,\n 'en-GY': /^(\\+592|0)6\\d{6}$/,\n 'en-HK': /^(\\+?852[-\\s]?)?[456789]\\d{3}[-\\s]?\\d{4}$/,\n 'en-MO': /^(\\+?853[-\\s]?)?[6]\\d{3}[-\\s]?\\d{4}$/,\n 'en-IE': /^(\\+?353|0)8[356789]\\d{7}$/,\n 'en-IN': /^(\\+?91|0)?[6789]\\d{9}$/,\n 'en-JM': /^(\\+?876)?\\d{7}$/,\n 'en-KE': /^(\\+?254|0)(7|1)\\d{8}$/,\n 'fr-CF': /^(\\+?236| ?)(70|75|77|72|21|22)\\d{6}$/,\n 'en-SS': /^(\\+?211|0)(9[1257])\\d{7}$/,\n 'en-KI': /^((\\+686|686)?)?( )?((6|7)(2|3|8)[0-9]{6})$/,\n 'en-KN': /^(?:\\+1|1)869(?:46\\d|48[89]|55[6-8]|66\\d|76[02-7])\\d{4}$/,\n 'en-LS': /^(\\+?266)(22|28|57|58|59|27|52)\\d{6}$/,\n 'en-MT': /^(\\+?356|0)?(99|79|77|21|27|22|25)[0-9]{6}$/,\n 'en-MU': /^(\\+?230|0)?\\d{8}$/,\n 'en-MW': /^(\\+?265|0)(((77|88|31|99|98|21)\\d{7})|(((111)|1)\\d{6})|(32000\\d{4}))$/,\n 'en-NA': /^(\\+?264|0)(6|8)\\d{7}$/,\n 'en-NG': /^(\\+?234|0)?[789]\\d{9}$/,\n 'en-NZ': /^(\\+?64|0)[28]\\d{7,9}$/,\n 'en-PG': /^(\\+?675|0)?(7\\d|8[18])\\d{6}$/,\n 'en-PK': /^((00|\\+)?92|0)3[0-6]\\d{8}$/,\n 'en-PH': /^(09|\\+639)\\d{9}$/,\n 'en-RW': /^(\\+?250|0)?[7]\\d{8}$/,\n 'en-SG': /^(\\+65)?[3689]\\d{7}$/,\n 'en-SL': /^(\\+?232|0)\\d{8}$/,\n 'en-TZ': /^(\\+?255|0)?[67]\\d{8}$/,\n 'en-UG': /^(\\+?256|0)?[7]\\d{8}$/,\n 'en-US': /^((\\+1|1)?( |-)?)?(\\([2-9][0-9]{2}\\)|[2-9][0-9]{2})( |-)?([2-9][0-9]{2}( |-)?[0-9]{4})$/,\n 'en-ZA': /^(\\+?27|0)\\d{9}$/,\n 'en-ZM': /^(\\+?26)?09[567]\\d{7}$/,\n 'en-ZW': /^(\\+263)[0-9]{9}$/,\n 'en-BW': /^(\\+?267)?(7[1-8]{1})\\d{6}$/,\n 'es-AR': /^\\+?549(11|[2368]\\d)\\d{8}$/,\n 'es-BO': /^(\\+?591)?(6|7)\\d{7}$/,\n 'es-CO': /^(\\+?57)?3(0(0|1|2|4|5)|1\\d|2[0-4]|5(0|1))\\d{7}$/,\n 'es-CL': /^(\\+?56|0)[2-9]\\d{1}\\d{7}$/,\n 'es-CR': /^(\\+506)?[2-8]\\d{7}$/,\n 'es-CU': /^(\\+53|0053)?5\\d{7}$/,\n 'es-DO': /^(\\+?1)?8[024]9\\d{7}$/,\n 'es-HN': /^(\\+?504)?[9|8|3|2]\\d{7}$/,\n 'es-EC': /^(\\+?593|0)([2-7]|9[2-9])\\d{7}$/,\n 'es-ES': /^(\\+?34)?[6|7]\\d{8}$/,\n 'es-PE': /^(\\+?51)?9\\d{8}$/,\n 'es-MX': /^(\\+?52)?(1|01)?\\d{10,11}$/,\n 'es-NI': /^(\\+?505)\\d{7,8}$/,\n 'es-PA': /^(\\+?507)\\d{7,8}$/,\n 'es-PY': /^(\\+?595|0)9[9876]\\d{7}$/,\n 'es-SV': /^(\\+?503)?[67]\\d{7}$/,\n 'es-UY': /^(\\+598|0)9[1-9][\\d]{6}$/,\n 'es-VE': /^(\\+?58)?(2|4)\\d{9}$/,\n 'et-EE': /^(\\+?372)?\\s?(5|8[1-4])\\s?([0-9]\\s?){6,7}$/,\n 'fa-IR': /^(\\+?98[\\-\\s]?|0)9[0-39]\\d[\\-\\s]?\\d{3}[\\-\\s]?\\d{4}$/,\n 'fi-FI': /^(\\+?358|0)\\s?(4[0-6]|50)\\s?(\\d\\s?){4,8}$/,\n 'fj-FJ': /^(\\+?679)?\\s?\\d{3}\\s?\\d{4}$/,\n 'fo-FO': /^(\\+?298)?\\s?\\d{2}\\s?\\d{2}\\s?\\d{2}$/,\n 'fr-BF': /^(\\+226|0)[67]\\d{7}$/,\n 'fr-BJ': /^(\\+229)\\d{8}$/,\n 'fr-CD': /^(\\+?243|0)?(8|9)\\d{8}$/,\n 'fr-CM': /^(\\+?237)6[0-9]{8}$/,\n 'fr-FR': /^(\\+?33|0)[67]\\d{8}$/,\n 'fr-GF': /^(\\+?594|0|00594)[67]\\d{8}$/,\n 'fr-GP': /^(\\+?590|0|00590)[67]\\d{8}$/,\n 'fr-MQ': /^(\\+?596|0|00596)[67]\\d{8}$/,\n 'fr-PF': /^(\\+?689)?8[789]\\d{6}$/,\n 'fr-RE': /^(\\+?262|0|00262)[67]\\d{8}$/,\n 'fr-WF': /^(\\+681)?\\d{6}$/,\n 'he-IL': /^(\\+972|0)([23489]|5[012345689]|77)[1-9]\\d{6}$/,\n 'hu-HU': /^(\\+?36|06)(20|30|31|50|70)\\d{7}$/,\n 'id-ID': /^(\\+?62|0)8(1[123456789]|2[1238]|3[1238]|5[12356789]|7[78]|9[56789]|8[123456789])([\\s?|\\d]{5,11})$/,\n 'ir-IR': /^(\\+98|0)?9\\d{9}$/,\n 'it-IT': /^(\\+?39)?\\s?3\\d{2} ?\\d{6,7}$/,\n 'it-SM': /^((\\+378)|(0549)|(\\+390549)|(\\+3780549))?6\\d{5,9}$/,\n 'ja-JP': /^(\\+81[ \\-]?(\\(0\\))?|0)[6789]0[ \\-]?\\d{4}[ \\-]?\\d{4}$/,\n 'ka-GE': /^(\\+?995)?(79\\d{7}|5\\d{8})$/,\n 'kk-KZ': /^(\\+?7|8)?7\\d{9}$/,\n 'kl-GL': /^(\\+?299)?\\s?\\d{2}\\s?\\d{2}\\s?\\d{2}$/,\n 'ko-KR': /^((\\+?82)[ \\-]?)?0?1([0|1|6|7|8|9]{1})[ \\-]?\\d{3,4}[ \\-]?\\d{4}$/,\n 'ky-KG': /^(\\+?7\\s?\\+?7|0)\\s?\\d{2}\\s?\\d{3}\\s?\\d{4}$/,\n 'lt-LT': /^(\\+370|8)\\d{8}$/,\n 'lv-LV': /^(\\+?371)2\\d{7}$/,\n 'mg-MG': /^((\\+?261|0)(2|3)\\d)?\\d{7}$/,\n 'mn-MN': /^(\\+|00|011)?976(77|81|88|91|94|95|96|99)\\d{6}$/,\n 'my-MM': /^(\\+?959|09|9)(2[5-7]|3[1-2]|4[0-5]|6[6-9]|7[5-9]|9[6-9])[0-9]{7}$/,\n 'ms-MY': /^(\\+?60|0)1(([0145](-|\\s)?\\d{7,8})|([236-9](-|\\s)?\\d{7}))$/,\n 'mz-MZ': /^(\\+?258)?8[234567]\\d{7}$/,\n 'nb-NO': /^(\\+?47)?[49]\\d{7}$/,\n 'ne-NP': /^(\\+?977)?9[78]\\d{8}$/,\n 'nl-BE': /^(\\+?32|0)4\\d{8}$/,\n 'nl-NL': /^(((\\+|00)?31\\(0\\))|((\\+|00)?31)|0)6{1}\\d{8}$/,\n 'nl-AW': /^(\\+)?297(56|59|64|73|74|99)\\d{5}$/,\n 'nn-NO': /^(\\+?47)?[49]\\d{7}$/,\n 'pl-PL': /^(\\+?48)? ?([5-8]\\d|45) ?\\d{3} ?\\d{2} ?\\d{2}$/,\n 'pt-BR': /^((\\+?55\\ ?[1-9]{2}\\ ?)|(\\+?55\\ ?\\([1-9]{2}\\)\\ ?)|(0[1-9]{2}\\ ?)|(\\([1-9]{2}\\)\\ ?)|([1-9]{2}\\ ?))((\\d{4}\\-?\\d{4})|(9[1-9]{1}\\d{3}\\-?\\d{4}))$/,\n 'pt-PT': /^(\\+?351)?9[1236]\\d{7}$/,\n 'pt-AO': /^(\\+244)\\d{9}$/,\n 'ro-MD': /^(\\+?373|0)((6(0|1|2|6|7|8|9))|(7(6|7|8|9)))\\d{6}$/,\n 'ro-RO': /^(\\+?40|0)\\s?7\\d{2}(\\/|\\s|\\.|-)?\\d{3}(\\s|\\.|-)?\\d{3}$/,\n 'ru-RU': /^(\\+?7|8)?9\\d{9}$/,\n 'si-LK': /^(?:0|94|\\+94)?(7(0|1|2|4|5|6|7|8)( |-)?)\\d{7}$/,\n 'sl-SI': /^(\\+386\\s?|0)(\\d{1}\\s?\\d{3}\\s?\\d{2}\\s?\\d{2}|\\d{2}\\s?\\d{3}\\s?\\d{3})$/,\n 'sk-SK': /^(\\+?421)? ?[1-9][0-9]{2} ?[0-9]{3} ?[0-9]{3}$/,\n 'so-SO': /^(\\+?252|0)((6[0-9])\\d{7}|(7[1-9])\\d{7})$/,\n 'sq-AL': /^(\\+355|0)6[789]\\d{6}$/,\n 'sr-RS': /^(\\+3816|06)[- \\d]{5,9}$/,\n 'sv-SE': /^(\\+?46|0)[\\s\\-]?7[\\s\\-]?[02369]([\\s\\-]?\\d){7}$/,\n 'tg-TJ': /^(\\+?992)?[5][5]\\d{7}$/,\n 'th-TH': /^(\\+66|66|0)\\d{9}$/,\n 'tr-TR': /^(\\+?90|0)?5\\d{9}$/,\n 'tk-TM': /^(\\+993|993|8)\\d{8}$/,\n 'uk-UA': /^(\\+?38|8)?0\\d{9}$/,\n 'uz-UZ': /^(\\+?998)?(6[125-79]|7[1-69]|88|9\\d)\\d{7}$/,\n 'vi-VN': /^((\\+?84)|0)((3([2-9]))|(5([25689]))|(7([0|6-9]))|(8([1-9]))|(9([0-9])))([0-9]{7})$/,\n 'zh-CN': /^((\\+|00)86)?(1[3-9]|9[28])\\d{9}$/,\n 'zh-TW': /^(\\+?886\\-?|0)?9\\d{8}$/,\n 'dz-BT': /^(\\+?975|0)?(17|16|77|02)\\d{6}$/,\n 'ar-YE': /^(((\\+|00)9677|0?7)[0137]\\d{7}|((\\+|00)967|0)[1-7]\\d{6})$/,\n 'ar-EH': /^(\\+?212|0)[\\s\\-]?(5288|5289)[\\s\\-]?\\d{5}$/,\n 'fa-AF': /^(\\+93|0)?(2{1}[0-8]{1}|[3-5]{1}[0-4]{1})(\\d{7})$/\n};\n/* eslint-enable max-len */\n\n// aliases\nphones['en-CA'] = phones['en-US'];\nphones['fr-CA'] = phones['en-CA'];\nphones['fr-BE'] = phones['nl-BE'];\nphones['zh-HK'] = phones['en-HK'];\nphones['zh-MO'] = phones['en-MO'];\nphones['ga-IE'] = phones['en-IE'];\nphones['fr-CH'] = phones['de-CH'];\nphones['it-CH'] = phones['fr-CH'];\nfunction isMobilePhone(str, locale, options) {\n (0, _assertString.default)(str);\n if (options && options.strictMode && !str.startsWith('+')) {\n return false;\n }\n if (Array.isArray(locale)) {\n return locale.some(function (key) {\n // https://github.com/gotwarlost/istanbul/blob/master/ignoring-code-for-coverage.md#ignoring-code-for-coverage-purposes\n // istanbul ignore else\n if (phones.hasOwnProperty(key)) {\n var phone = phones[key];\n if (phone.test(str)) {\n return true;\n }\n }\n return false;\n });\n } else if (locale in phones) {\n return phones[locale].test(str);\n // alias falsey locale as 'any'\n } else if (!locale || locale === 'any') {\n for (var key in phones) {\n // istanbul ignore else\n if (phones.hasOwnProperty(key)) {\n var phone = phones[key];\n if (phone.test(str)) {\n return true;\n }\n }\n }\n return false;\n }\n throw new Error(\"Invalid locale '\".concat(locale, \"'\"));\n}\nvar locales = exports.locales = Object.keys(phones);","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isEthereumAddress;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nvar eth = /^(0x)[0-9a-f]{40}$/i;\nfunction isEthereumAddress(str) {\n (0, _assertString.default)(str);\n return eth.test(str);\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isCurrency;\nvar _merge = _interopRequireDefault(require(\"./util/merge\"));\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nfunction currencyRegex(options) {\n var decimal_digits = \"\\\\d{\".concat(options.digits_after_decimal[0], \"}\");\n options.digits_after_decimal.forEach(function (digit, index) {\n if (index !== 0) decimal_digits = \"\".concat(decimal_digits, \"|\\\\d{\").concat(digit, \"}\");\n });\n var symbol = \"(\".concat(options.symbol.replace(/\\W/, function (m) {\n return \"\\\\\".concat(m);\n }), \")\").concat(options.require_symbol ? '' : '?'),\n negative = '-?',\n whole_dollar_amount_without_sep = '[1-9]\\\\d*',\n whole_dollar_amount_with_sep = \"[1-9]\\\\d{0,2}(\\\\\".concat(options.thousands_separator, \"\\\\d{3})*\"),\n valid_whole_dollar_amounts = ['0', whole_dollar_amount_without_sep, whole_dollar_amount_with_sep],\n whole_dollar_amount = \"(\".concat(valid_whole_dollar_amounts.join('|'), \")?\"),\n decimal_amount = \"(\\\\\".concat(options.decimal_separator, \"(\").concat(decimal_digits, \"))\").concat(options.require_decimal ? '' : '?');\n var pattern = whole_dollar_amount + (options.allow_decimal || options.require_decimal ? decimal_amount : '');\n\n // default is negative sign before symbol, but there are two other options (besides parens)\n if (options.allow_negatives && !options.parens_for_negatives) {\n if (options.negative_sign_after_digits) {\n pattern += negative;\n } else if (options.negative_sign_before_digits) {\n pattern = negative + pattern;\n }\n }\n\n // South African Rand, for example, uses R 123 (space) and R-123 (no space)\n if (options.allow_negative_sign_placeholder) {\n pattern = \"( (?!\\\\-))?\".concat(pattern);\n } else if (options.allow_space_after_symbol) {\n pattern = \" ?\".concat(pattern);\n } else if (options.allow_space_after_digits) {\n pattern += '( (?!$))?';\n }\n if (options.symbol_after_digits) {\n pattern += symbol;\n } else {\n pattern = symbol + pattern;\n }\n if (options.allow_negatives) {\n if (options.parens_for_negatives) {\n pattern = \"(\\\\(\".concat(pattern, \"\\\\)|\").concat(pattern, \")\");\n } else if (!(options.negative_sign_before_digits || options.negative_sign_after_digits)) {\n pattern = negative + pattern;\n }\n }\n\n // ensure there's a dollar and/or decimal amount, and that\n // it doesn't start with a space or a negative sign followed by a space\n return new RegExp(\"^(?!-? )(?=.*\\\\d)\".concat(pattern, \"$\"));\n}\nvar default_currency_options = {\n symbol: '$',\n require_symbol: false,\n allow_space_after_symbol: false,\n symbol_after_digits: false,\n allow_negatives: true,\n parens_for_negatives: false,\n negative_sign_before_digits: false,\n negative_sign_after_digits: false,\n allow_negative_sign_placeholder: false,\n thousands_separator: ',',\n decimal_separator: '.',\n allow_decimal: true,\n require_decimal: false,\n digits_after_decimal: [2],\n allow_space_after_digits: false\n};\nfunction isCurrency(str, options) {\n (0, _assertString.default)(str);\n options = (0, _merge.default)(options, default_currency_options);\n return currencyRegex(options).test(str);\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isBtcAddress;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nvar bech32 = /^(bc1)[a-z0-9]{25,39}$/;\nvar base58 = /^(1|3)[A-HJ-NP-Za-km-z1-9]{25,39}$/;\nfunction isBtcAddress(str) {\n (0, _assertString.default)(str);\n return bech32.test(str) || base58.test(str);\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.isFreightContainerID = void 0;\nexports.isISO6346 = isISO6346;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n// https://en.wikipedia.org/wiki/ISO_6346\n// according to ISO6346 standard, checksum digit is mandatory for freight container but recommended\n// for other container types (J and Z)\nvar isISO6346Str = /^[A-Z]{3}(U[0-9]{7})|([J,Z][0-9]{6,7})$/;\nvar isDigit = /^[0-9]$/;\nfunction isISO6346(str) {\n (0, _assertString.default)(str);\n str = str.toUpperCase();\n if (!isISO6346Str.test(str)) return false;\n if (str.length === 11) {\n var sum = 0;\n for (var i = 0; i < str.length - 1; i++) {\n if (!isDigit.test(str[i])) {\n var convertedCode = void 0;\n var letterCode = str.charCodeAt(i) - 55;\n if (letterCode < 11) convertedCode = letterCode;else if (letterCode >= 11 && letterCode <= 20) convertedCode = 12 + letterCode % 11;else if (letterCode >= 21 && letterCode <= 30) convertedCode = 23 + letterCode % 21;else convertedCode = 34 + letterCode % 31;\n sum += convertedCode * Math.pow(2, i);\n } else sum += str[i] * Math.pow(2, i);\n }\n var checkSumDigit = sum % 11;\n return Number(str[str.length - 1]) === checkSumDigit;\n }\n return true;\n}\nvar isFreightContainerID = exports.isFreightContainerID = isISO6346;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isISO6391;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nvar isISO6391Set = new Set(['aa', 'ab', 'ae', 'af', 'ak', 'am', 'an', 'ar', 'as', 'av', 'ay', 'az', 'az', 'ba', 'be', 'bg', 'bh', 'bi', 'bm', 'bn', 'bo', 'br', 'bs', 'ca', 'ce', 'ch', 'co', 'cr', 'cs', 'cu', 'cv', 'cy', 'da', 'de', 'dv', 'dz', 'ee', 'el', 'en', 'eo', 'es', 'et', 'eu', 'fa', 'ff', 'fi', 'fj', 'fo', 'fr', 'fy', 'ga', 'gd', 'gl', 'gn', 'gu', 'gv', 'ha', 'he', 'hi', 'ho', 'hr', 'ht', 'hu', 'hy', 'hz', 'ia', 'id', 'ie', 'ig', 'ii', 'ik', 'io', 'is', 'it', 'iu', 'ja', 'jv', 'ka', 'kg', 'ki', 'kj', 'kk', 'kl', 'km', 'kn', 'ko', 'kr', 'ks', 'ku', 'kv', 'kw', 'ky', 'la', 'lb', 'lg', 'li', 'ln', 'lo', 'lt', 'lu', 'lv', 'mg', 'mh', 'mi', 'mk', 'ml', 'mn', 'mr', 'ms', 'mt', 'my', 'na', 'nb', 'nd', 'ne', 'ng', 'nl', 'nn', 'no', 'nr', 'nv', 'ny', 'oc', 'oj', 'om', 'or', 'os', 'pa', 'pi', 'pl', 'ps', 'pt', 'qu', 'rm', 'rn', 'ro', 'ru', 'rw', 'sa', 'sc', 'sd', 'se', 'sg', 'si', 'sk', 'sl', 'sm', 'sn', 'so', 'sq', 'sr', 'ss', 'st', 'su', 'sv', 'sw', 'ta', 'te', 'tg', 'th', 'ti', 'tk', 'tl', 'tn', 'to', 'tr', 'ts', 'tt', 'tw', 'ty', 'ug', 'uk', 'ur', 'uz', 've', 'vi', 'vo', 'wa', 'wo', 'xh', 'yi', 'yo', 'za', 'zh', 'zu']);\nfunction isISO6391(str) {\n (0, _assertString.default)(str);\n return isISO6391Set.has(str);\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isISO8601;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n/* eslint-disable max-len */\n// from http://goo.gl/0ejHHW\nvar iso8601 = /^([\\+-]?\\d{4}(?!\\d{2}\\b))((-?)((0[1-9]|1[0-2])(\\3([12]\\d|0[1-9]|3[01]))?|W([0-4]\\d|5[0-3])(-?[1-7])?|(00[1-9]|0[1-9]\\d|[12]\\d{2}|3([0-5]\\d|6[1-6])))([T\\s]((([01]\\d|2[0-3])((:?)[0-5]\\d)?|24:?00)([\\.,]\\d+(?!:))?)?(\\17[0-5]\\d([\\.,]\\d+)?)?([zZ]|([\\+-])([01]\\d|2[0-3]):?([0-5]\\d)?)?)?)?$/;\n// same as above, except with a strict 'T' separator between date and time\nvar iso8601StrictSeparator = /^([\\+-]?\\d{4}(?!\\d{2}\\b))((-?)((0[1-9]|1[0-2])(\\3([12]\\d|0[1-9]|3[01]))?|W([0-4]\\d|5[0-3])(-?[1-7])?|(00[1-9]|0[1-9]\\d|[12]\\d{2}|3([0-5]\\d|6[1-6])))([T]((([01]\\d|2[0-3])((:?)[0-5]\\d)?|24:?00)([\\.,]\\d+(?!:))?)?(\\17[0-5]\\d([\\.,]\\d+)?)?([zZ]|([\\+-])([01]\\d|2[0-3]):?([0-5]\\d)?)?)?)?$/;\n/* eslint-enable max-len */\nvar isValidDate = function isValidDate(str) {\n // str must have passed the ISO8601 check\n // this check is meant to catch invalid dates\n // like 2009-02-31\n // first check for ordinal dates\n var ordinalMatch = str.match(/^(\\d{4})-?(\\d{3})([ T]{1}\\.*|$)/);\n if (ordinalMatch) {\n var oYear = Number(ordinalMatch[1]);\n var oDay = Number(ordinalMatch[2]);\n // if is leap year\n if (oYear % 4 === 0 && oYear % 100 !== 0 || oYear % 400 === 0) return oDay <= 366;\n return oDay <= 365;\n }\n var match = str.match(/(\\d{4})-?(\\d{0,2})-?(\\d*)/).map(Number);\n var year = match[1];\n var month = match[2];\n var day = match[3];\n var monthString = month ? \"0\".concat(month).slice(-2) : month;\n var dayString = day ? \"0\".concat(day).slice(-2) : day;\n\n // create a date object and compare\n var d = new Date(\"\".concat(year, \"-\").concat(monthString || '01', \"-\").concat(dayString || '01'));\n if (month && day) {\n return d.getUTCFullYear() === year && d.getUTCMonth() + 1 === month && d.getUTCDate() === day;\n }\n return true;\n};\nfunction isISO8601(str) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n (0, _assertString.default)(str);\n var check = options.strictSeparator ? iso8601StrictSeparator.test(str) : iso8601.test(str);\n if (check && options.strict) return isValidDate(str);\n return check;\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isRFC3339;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n/* Based on https://tools.ietf.org/html/rfc3339#section-5.6 */\n\nvar dateFullYear = /[0-9]{4}/;\nvar dateMonth = /(0[1-9]|1[0-2])/;\nvar dateMDay = /([12]\\d|0[1-9]|3[01])/;\nvar timeHour = /([01][0-9]|2[0-3])/;\nvar timeMinute = /[0-5][0-9]/;\nvar timeSecond = /([0-5][0-9]|60)/;\nvar timeSecFrac = /(\\.[0-9]+)?/;\nvar timeNumOffset = new RegExp(\"[-+]\".concat(timeHour.source, \":\").concat(timeMinute.source));\nvar timeOffset = new RegExp(\"([zZ]|\".concat(timeNumOffset.source, \")\"));\nvar partialTime = new RegExp(\"\".concat(timeHour.source, \":\").concat(timeMinute.source, \":\").concat(timeSecond.source).concat(timeSecFrac.source));\nvar fullDate = new RegExp(\"\".concat(dateFullYear.source, \"-\").concat(dateMonth.source, \"-\").concat(dateMDay.source));\nvar fullTime = new RegExp(\"\".concat(partialTime.source).concat(timeOffset.source));\nvar rfc3339 = new RegExp(\"^\".concat(fullDate.source, \"[ tT]\").concat(fullTime.source, \"$\"));\nfunction isRFC3339(str) {\n (0, _assertString.default)(str);\n return rfc3339.test(str);\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isISO31661Alpha3;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n// from https://en.wikipedia.org/wiki/ISO_3166-1_alpha-3\nvar validISO31661Alpha3CountriesCodes = new Set(['AFG', 'ALA', 'ALB', 'DZA', 'ASM', 'AND', 'AGO', 'AIA', 'ATA', 'ATG', 'ARG', 'ARM', 'ABW', 'AUS', 'AUT', 'AZE', 'BHS', 'BHR', 'BGD', 'BRB', 'BLR', 'BEL', 'BLZ', 'BEN', 'BMU', 'BTN', 'BOL', 'BES', 'BIH', 'BWA', 'BVT', 'BRA', 'IOT', 'BRN', 'BGR', 'BFA', 'BDI', 'KHM', 'CMR', 'CAN', 'CPV', 'CYM', 'CAF', 'TCD', 'CHL', 'CHN', 'CXR', 'CCK', 'COL', 'COM', 'COG', 'COD', 'COK', 'CRI', 'CIV', 'HRV', 'CUB', 'CUW', 'CYP', 'CZE', 'DNK', 'DJI', 'DMA', 'DOM', 'ECU', 'EGY', 'SLV', 'GNQ', 'ERI', 'EST', 'ETH', 'FLK', 'FRO', 'FJI', 'FIN', 'FRA', 'GUF', 'PYF', 'ATF', 'GAB', 'GMB', 'GEO', 'DEU', 'GHA', 'GIB', 'GRC', 'GRL', 'GRD', 'GLP', 'GUM', 'GTM', 'GGY', 'GIN', 'GNB', 'GUY', 'HTI', 'HMD', 'VAT', 'HND', 'HKG', 'HUN', 'ISL', 'IND', 'IDN', 'IRN', 'IRQ', 'IRL', 'IMN', 'ISR', 'ITA', 'JAM', 'JPN', 'JEY', 'JOR', 'KAZ', 'KEN', 'KIR', 'PRK', 'KOR', 'KWT', 'KGZ', 'LAO', 'LVA', 'LBN', 'LSO', 'LBR', 'LBY', 'LIE', 'LTU', 'LUX', 'MAC', 'MKD', 'MDG', 'MWI', 'MYS', 'MDV', 'MLI', 'MLT', 'MHL', 'MTQ', 'MRT', 'MUS', 'MYT', 'MEX', 'FSM', 'MDA', 'MCO', 'MNG', 'MNE', 'MSR', 'MAR', 'MOZ', 'MMR', 'NAM', 'NRU', 'NPL', 'NLD', 'NCL', 'NZL', 'NIC', 'NER', 'NGA', 'NIU', 'NFK', 'MNP', 'NOR', 'OMN', 'PAK', 'PLW', 'PSE', 'PAN', 'PNG', 'PRY', 'PER', 'PHL', 'PCN', 'POL', 'PRT', 'PRI', 'QAT', 'REU', 'ROU', 'RUS', 'RWA', 'BLM', 'SHN', 'KNA', 'LCA', 'MAF', 'SPM', 'VCT', 'WSM', 'SMR', 'STP', 'SAU', 'SEN', 'SRB', 'SYC', 'SLE', 'SGP', 'SXM', 'SVK', 'SVN', 'SLB', 'SOM', 'ZAF', 'SGS', 'SSD', 'ESP', 'LKA', 'SDN', 'SUR', 'SJM', 'SWZ', 'SWE', 'CHE', 'SYR', 'TWN', 'TJK', 'TZA', 'THA', 'TLS', 'TGO', 'TKL', 'TON', 'TTO', 'TUN', 'TUR', 'TKM', 'TCA', 'TUV', 'UGA', 'UKR', 'ARE', 'GBR', 'USA', 'UMI', 'URY', 'UZB', 'VUT', 'VEN', 'VNM', 'VGB', 'VIR', 'WLF', 'ESH', 'YEM', 'ZMB', 'ZWE']);\nfunction isISO31661Alpha3(str) {\n (0, _assertString.default)(str);\n return validISO31661Alpha3CountriesCodes.has(str.toUpperCase());\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.CurrencyCodes = void 0;\nexports.default = isISO4217;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n// from https://en.wikipedia.org/wiki/ISO_4217\nvar validISO4217CurrencyCodes = new Set(['AED', 'AFN', 'ALL', 'AMD', 'ANG', 'AOA', 'ARS', 'AUD', 'AWG', 'AZN', 'BAM', 'BBD', 'BDT', 'BGN', 'BHD', 'BIF', 'BMD', 'BND', 'BOB', 'BOV', 'BRL', 'BSD', 'BTN', 'BWP', 'BYN', 'BZD', 'CAD', 'CDF', 'CHE', 'CHF', 'CHW', 'CLF', 'CLP', 'CNY', 'COP', 'COU', 'CRC', 'CUC', 'CUP', 'CVE', 'CZK', 'DJF', 'DKK', 'DOP', 'DZD', 'EGP', 'ERN', 'ETB', 'EUR', 'FJD', 'FKP', 'GBP', 'GEL', 'GHS', 'GIP', 'GMD', 'GNF', 'GTQ', 'GYD', 'HKD', 'HNL', 'HRK', 'HTG', 'HUF', 'IDR', 'ILS', 'INR', 'IQD', 'IRR', 'ISK', 'JMD', 'JOD', 'JPY', 'KES', 'KGS', 'KHR', 'KMF', 'KPW', 'KRW', 'KWD', 'KYD', 'KZT', 'LAK', 'LBP', 'LKR', 'LRD', 'LSL', 'LYD', 'MAD', 'MDL', 'MGA', 'MKD', 'MMK', 'MNT', 'MOP', 'MRU', 'MUR', 'MVR', 'MWK', 'MXN', 'MXV', 'MYR', 'MZN', 'NAD', 'NGN', 'NIO', 'NOK', 'NPR', 'NZD', 'OMR', 'PAB', 'PEN', 'PGK', 'PHP', 'PKR', 'PLN', 'PYG', 'QAR', 'RON', 'RSD', 'RUB', 'RWF', 'SAR', 'SBD', 'SCR', 'SDG', 'SEK', 'SGD', 'SHP', 'SLE', 'SLL', 'SOS', 'SRD', 'SSP', 'STN', 'SVC', 'SYP', 'SZL', 'THB', 'TJS', 'TMT', 'TND', 'TOP', 'TRY', 'TTD', 'TWD', 'TZS', 'UAH', 'UGX', 'USD', 'USN', 'UYI', 'UYU', 'UYW', 'UZS', 'VES', 'VND', 'VUV', 'WST', 'XAF', 'XAG', 'XAU', 'XBA', 'XBB', 'XBC', 'XBD', 'XCD', 'XDR', 'XOF', 'XPD', 'XPF', 'XPT', 'XSU', 'XTS', 'XUA', 'XXX', 'YER', 'ZAR', 'ZMW', 'ZWL']);\nfunction isISO4217(str) {\n (0, _assertString.default)(str);\n return validISO4217CurrencyCodes.has(str.toUpperCase());\n}\nvar CurrencyCodes = exports.CurrencyCodes = validISO4217CurrencyCodes;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isBase32;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nvar _merge = _interopRequireDefault(require(\"./util/merge\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nvar base32 = /^[A-Z2-7]+=*$/;\nvar crockfordBase32 = /^[A-HJKMNP-TV-Z0-9]+$/;\nvar defaultBase32Options = {\n crockford: false\n};\nfunction isBase32(str, options) {\n (0, _assertString.default)(str);\n options = (0, _merge.default)(options, defaultBase32Options);\n if (options.crockford) {\n return crockfordBase32.test(str);\n }\n var len = str.length;\n if (len % 8 === 0 && base32.test(str)) {\n return true;\n }\n return false;\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isBase58;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n// Accepted chars - 123456789ABCDEFGH JKLMN PQRSTUVWXYZabcdefghijk mnopqrstuvwxyz\nvar base58Reg = /^[A-HJ-NP-Za-km-z1-9]*$/;\nfunction isBase58(str) {\n (0, _assertString.default)(str);\n if (base58Reg.test(str)) {\n return true;\n }\n return false;\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isDataURI;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nvar validMediaType = /^[a-z]+\\/[a-z0-9\\-\\+\\._]+$/i;\nvar validAttribute = /^[a-z\\-]+=[a-z0-9\\-]+$/i;\nvar validData = /^[a-z0-9!\\$&'\\(\\)\\*\\+,;=\\-\\._~:@\\/\\?%\\s]*$/i;\nfunction isDataURI(str) {\n (0, _assertString.default)(str);\n var data = str.split(',');\n if (data.length < 2) {\n return false;\n }\n var attributes = data.shift().trim().split(';');\n var schemeAndMediaType = attributes.shift();\n if (schemeAndMediaType.slice(0, 5) !== 'data:') {\n return false;\n }\n var mediaType = schemeAndMediaType.slice(5);\n if (mediaType !== '' && !validMediaType.test(mediaType)) {\n return false;\n }\n for (var i = 0; i < attributes.length; i++) {\n if (!(i === attributes.length - 1 && attributes[i].toLowerCase() === 'base64') && !validAttribute.test(attributes[i])) {\n return false;\n }\n }\n for (var _i = 0; _i < data.length; _i++) {\n if (!validData.test(data[_i])) {\n return false;\n }\n }\n return true;\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isMagnetURI;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nvar magnetURIComponent = /(?:^magnet:\\?|[^?&]&)xt(?:\\.1)?=urn:(?:(?:aich|bitprint|btih|ed2k|ed2khash|kzhash|md5|sha1|tree:tiger):[a-z0-9]{32}(?:[a-z0-9]{8})?|btmh:1220[a-z0-9]{64})(?:$|&)/i;\nfunction isMagnetURI(url) {\n (0, _assertString.default)(url);\n if (url.indexOf('magnet:?') !== 0) {\n return false;\n }\n return magnetURIComponent.test(url);\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isMailtoURI;\nvar _trim = _interopRequireDefault(require(\"./trim\"));\nvar _isEmail = _interopRequireDefault(require(\"./isEmail\"));\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction parseMailtoQueryString(queryString) {\n var allowedParams = new Set(['subject', 'body', 'cc', 'bcc']),\n query = {\n cc: '',\n bcc: ''\n };\n var isParseFailed = false;\n var queryParams = queryString.split('&');\n if (queryParams.length > 4) {\n return false;\n }\n var _iterator = _createForOfIteratorHelper(queryParams),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var q = _step.value;\n var _q$split = q.split('='),\n _q$split2 = _slicedToArray(_q$split, 2),\n key = _q$split2[0],\n value = _q$split2[1];\n\n // checked for invalid and duplicated query params\n if (key && !allowedParams.has(key)) {\n isParseFailed = true;\n break;\n }\n if (value && (key === 'cc' || key === 'bcc')) {\n query[key] = value;\n }\n if (key) {\n allowedParams.delete(key);\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n return isParseFailed ? false : query;\n}\nfunction isMailtoURI(url, options) {\n (0, _assertString.default)(url);\n if (url.indexOf('mailto:') !== 0) {\n return false;\n }\n var _url$replace$split = url.replace('mailto:', '').split('?'),\n _url$replace$split2 = _slicedToArray(_url$replace$split, 2),\n to = _url$replace$split2[0],\n _url$replace$split2$ = _url$replace$split2[1],\n queryString = _url$replace$split2$ === void 0 ? '' : _url$replace$split2$;\n if (!to && !queryString) {\n return true;\n }\n var query = parseMailtoQueryString(queryString);\n if (!query) {\n return false;\n }\n return \"\".concat(to, \",\").concat(query.cc, \",\").concat(query.bcc).split(',').every(function (email) {\n email = (0, _trim.default)(email, ' ');\n if (email) {\n return (0, _isEmail.default)(email, options);\n }\n return true;\n });\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isMimeType;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n/*\n Checks if the provided string matches to a correct Media type format (MIME type)\n\n This function only checks is the string format follows the\n etablished rules by the according RFC specifications.\n This function supports 'charset' in textual media types\n (https://tools.ietf.org/html/rfc6657).\n\n This function does not check against all the media types listed\n by the IANA (https://www.iana.org/assignments/media-types/media-types.xhtml)\n because of lightness purposes : it would require to include\n all these MIME types in this librairy, which would weigh it\n significantly. This kind of effort maybe is not worth for the use that\n this function has in this entire librairy.\n\n More informations in the RFC specifications :\n - https://tools.ietf.org/html/rfc2045\n - https://tools.ietf.org/html/rfc2046\n - https://tools.ietf.org/html/rfc7231#section-3.1.1.1\n - https://tools.ietf.org/html/rfc7231#section-3.1.1.5\n*/\n\n// Match simple MIME types\n// NB :\n// Subtype length must not exceed 100 characters.\n// This rule does not comply to the RFC specs (what is the max length ?).\nvar mimeTypeSimple = /^(application|audio|font|image|message|model|multipart|text|video)\\/[a-zA-Z0-9\\.\\-\\+_]{1,100}$/i; // eslint-disable-line max-len\n\n// Handle \"charset\" in \"text/*\"\nvar mimeTypeText = /^text\\/[a-zA-Z0-9\\.\\-\\+]{1,100};\\s?charset=(\"[a-zA-Z0-9\\.\\-\\+\\s]{0,70}\"|[a-zA-Z0-9\\.\\-\\+]{0,70})(\\s?\\([a-zA-Z0-9\\.\\-\\+\\s]{1,20}\\))?$/i; // eslint-disable-line max-len\n\n// Handle \"boundary\" in \"multipart/*\"\nvar mimeTypeMultipart = /^multipart\\/[a-zA-Z0-9\\.\\-\\+]{1,100}(;\\s?(boundary|charset)=(\"[a-zA-Z0-9\\.\\-\\+\\s]{0,70}\"|[a-zA-Z0-9\\.\\-\\+]{0,70})(\\s?\\([a-zA-Z0-9\\.\\-\\+\\s]{1,20}\\))?){0,2}$/i; // eslint-disable-line max-len\n\nfunction isMimeType(str) {\n (0, _assertString.default)(str);\n return mimeTypeSimple.test(str) || mimeTypeText.test(str) || mimeTypeMultipart.test(str);\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isLatLong;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nvar _merge = _interopRequireDefault(require(\"./util/merge\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nvar lat = /^\\(?[+-]?(90(\\.0+)?|[1-8]?\\d(\\.\\d+)?)$/;\nvar long = /^\\s?[+-]?(180(\\.0+)?|1[0-7]\\d(\\.\\d+)?|\\d{1,2}(\\.\\d+)?)\\)?$/;\nvar latDMS = /^(([1-8]?\\d)\\D+([1-5]?\\d|60)\\D+([1-5]?\\d|60)(\\.\\d+)?|90\\D+0\\D+0)\\D+[NSns]?$/i;\nvar longDMS = /^\\s*([1-7]?\\d{1,2}\\D+([1-5]?\\d|60)\\D+([1-5]?\\d|60)(\\.\\d+)?|180\\D+0\\D+0)\\D+[EWew]?$/i;\nvar defaultLatLongOptions = {\n checkDMS: false\n};\nfunction isLatLong(str, options) {\n (0, _assertString.default)(str);\n options = (0, _merge.default)(options, defaultLatLongOptions);\n if (!str.includes(',')) return false;\n var pair = str.split(',');\n if (pair[0].startsWith('(') && !pair[1].endsWith(')') || pair[1].endsWith(')') && !pair[0].startsWith('(')) return false;\n if (options.checkDMS) {\n return latDMS.test(pair[0]) && longDMS.test(pair[1]);\n }\n return lat.test(pair[0]) && long.test(pair[1]);\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isPostalCode;\nexports.locales = void 0;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n// common patterns\nvar threeDigit = /^\\d{3}$/;\nvar fourDigit = /^\\d{4}$/;\nvar fiveDigit = /^\\d{5}$/;\nvar sixDigit = /^\\d{6}$/;\nvar patterns = {\n AD: /^AD\\d{3}$/,\n AT: fourDigit,\n AU: fourDigit,\n AZ: /^AZ\\d{4}$/,\n BA: /^([7-8]\\d{4}$)/,\n BE: fourDigit,\n BG: fourDigit,\n BR: /^\\d{5}-\\d{3}$/,\n BY: /^2[1-4]\\d{4}$/,\n CA: /^[ABCEGHJKLMNPRSTVXY]\\d[ABCEGHJ-NPRSTV-Z][\\s\\-]?\\d[ABCEGHJ-NPRSTV-Z]\\d$/i,\n CH: fourDigit,\n CN: /^(0[1-7]|1[012356]|2[0-7]|3[0-6]|4[0-7]|5[1-7]|6[1-7]|7[1-5]|8[1345]|9[09])\\d{4}$/,\n CZ: /^\\d{3}\\s?\\d{2}$/,\n DE: fiveDigit,\n DK: fourDigit,\n DO: fiveDigit,\n DZ: fiveDigit,\n EE: fiveDigit,\n ES: /^(5[0-2]{1}|[0-4]{1}\\d{1})\\d{3}$/,\n FI: fiveDigit,\n FR: /^\\d{2}\\s?\\d{3}$/,\n GB: /^(gir\\s?0aa|[a-z]{1,2}\\d[\\da-z]?\\s?(\\d[a-z]{2})?)$/i,\n GR: /^\\d{3}\\s?\\d{2}$/,\n HR: /^([1-5]\\d{4}$)/,\n HT: /^HT\\d{4}$/,\n HU: fourDigit,\n ID: fiveDigit,\n IE: /^(?!.*(?:o))[A-Za-z]\\d[\\dw]\\s\\w{4}$/i,\n IL: /^(\\d{5}|\\d{7})$/,\n IN: /^((?!10|29|35|54|55|65|66|86|87|88|89)[1-9][0-9]{5})$/,\n IR: /^(?!(\\d)\\1{3})[13-9]{4}[1346-9][013-9]{5}$/,\n IS: threeDigit,\n IT: fiveDigit,\n JP: /^\\d{3}\\-\\d{4}$/,\n KE: fiveDigit,\n KR: /^(\\d{5}|\\d{6})$/,\n LI: /^(948[5-9]|949[0-7])$/,\n LT: /^LT\\-\\d{5}$/,\n LU: fourDigit,\n LV: /^LV\\-\\d{4}$/,\n LK: fiveDigit,\n MG: threeDigit,\n MX: fiveDigit,\n MT: /^[A-Za-z]{3}\\s{0,1}\\d{4}$/,\n MY: fiveDigit,\n NL: /^[1-9]\\d{3}\\s?(?!sa|sd|ss)[a-z]{2}$/i,\n NO: fourDigit,\n NP: /^(10|21|22|32|33|34|44|45|56|57)\\d{3}$|^(977)$/i,\n NZ: fourDigit,\n PL: /^\\d{2}\\-\\d{3}$/,\n PR: /^00[679]\\d{2}([ -]\\d{4})?$/,\n PT: /^\\d{4}\\-\\d{3}?$/,\n RO: sixDigit,\n RU: sixDigit,\n SA: fiveDigit,\n SE: /^[1-9]\\d{2}\\s?\\d{2}$/,\n SG: sixDigit,\n SI: fourDigit,\n SK: /^\\d{3}\\s?\\d{2}$/,\n TH: fiveDigit,\n TN: fourDigit,\n TW: /^\\d{3}(\\d{2})?$/,\n UA: fiveDigit,\n US: /^\\d{5}(-\\d{4})?$/,\n ZA: fourDigit,\n ZM: fiveDigit\n};\nvar locales = exports.locales = Object.keys(patterns);\nfunction isPostalCode(str, locale) {\n (0, _assertString.default)(str);\n if (locale in patterns) {\n return patterns[locale].test(str);\n } else if (locale === 'any') {\n for (var key in patterns) {\n // https://github.com/gotwarlost/istanbul/blob/master/ignoring-code-for-coverage.md#ignoring-code-for-coverage-purposes\n // istanbul ignore else\n if (patterns.hasOwnProperty(key)) {\n var pattern = patterns[key];\n if (pattern.test(str)) {\n return true;\n }\n }\n }\n return false;\n }\n throw new Error(\"Invalid locale '\".concat(locale, \"'\"));\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = escape;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nfunction escape(str) {\n (0, _assertString.default)(str);\n return str.replace(/&/g, '&').replace(/\"/g, '"').replace(/'/g, ''').replace(/</g, '<').replace(/>/g, '>').replace(/\\//g, '/').replace(/\\\\/g, '\').replace(/`/g, '`');\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = unescape;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nfunction unescape(str) {\n (0, _assertString.default)(str);\n return str.replace(/"/g, '\"').replace(/'/g, \"'\").replace(/</g, '<').replace(/>/g, '>').replace(///g, '/').replace(/\/g, '\\\\').replace(/`/g, '`').replace(/&/g, '&');\n // & replacement has to be the last one to prevent\n // bugs with intermediate strings containing escape sequences\n // See: https://github.com/validatorjs/validator.js/issues/1827\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = stripLow;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nvar _blacklist = _interopRequireDefault(require(\"./blacklist\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nfunction stripLow(str, keep_new_lines) {\n (0, _assertString.default)(str);\n var chars = keep_new_lines ? '\\\\x00-\\\\x09\\\\x0B\\\\x0C\\\\x0E-\\\\x1F\\\\x7F' : '\\\\x00-\\\\x1F\\\\x7F';\n return (0, _blacklist.default)(str, chars);\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = whitelist;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nfunction whitelist(str, chars) {\n (0, _assertString.default)(str);\n return str.replace(new RegExp(\"[^\".concat(chars, \"]+\"), 'g'), '');\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isWhitelisted;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nfunction isWhitelisted(str, chars) {\n (0, _assertString.default)(str);\n for (var i = str.length - 1; i >= 0; i--) {\n if (chars.indexOf(str[i]) === -1) {\n return false;\n }\n }\n return true;\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = normalizeEmail;\nvar _merge = _interopRequireDefault(require(\"./util/merge\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nvar default_normalize_email_options = {\n // The following options apply to all email addresses\n // Lowercases the local part of the email address.\n // Please note this may violate RFC 5321 as per http://stackoverflow.com/a/9808332/192024).\n // The domain is always lowercased, as per RFC 1035\n all_lowercase: true,\n // The following conversions are specific to GMail\n // Lowercases the local part of the GMail address (known to be case-insensitive)\n gmail_lowercase: true,\n // Removes dots from the local part of the email address, as that's ignored by GMail\n gmail_remove_dots: true,\n // Removes the subaddress (e.g. \"+foo\") from the email address\n gmail_remove_subaddress: true,\n // Conversts the googlemail.com domain to gmail.com\n gmail_convert_googlemaildotcom: true,\n // The following conversions are specific to Outlook.com / Windows Live / Hotmail\n // Lowercases the local part of the Outlook.com address (known to be case-insensitive)\n outlookdotcom_lowercase: true,\n // Removes the subaddress (e.g. \"+foo\") from the email address\n outlookdotcom_remove_subaddress: true,\n // The following conversions are specific to Yahoo\n // Lowercases the local part of the Yahoo address (known to be case-insensitive)\n yahoo_lowercase: true,\n // Removes the subaddress (e.g. \"-foo\") from the email address\n yahoo_remove_subaddress: true,\n // The following conversions are specific to Yandex\n // Lowercases the local part of the Yandex address (known to be case-insensitive)\n yandex_lowercase: true,\n // The following conversions are specific to iCloud\n // Lowercases the local part of the iCloud address (known to be case-insensitive)\n icloud_lowercase: true,\n // Removes the subaddress (e.g. \"+foo\") from the email address\n icloud_remove_subaddress: true\n};\n\n// List of domains used by iCloud\nvar icloud_domains = ['icloud.com', 'me.com'];\n\n// List of domains used by Outlook.com and its predecessors\n// This list is likely incomplete.\n// Partial reference:\n// https://blogs.office.com/2013/04/17/outlook-com-gets-two-step-verification-sign-in-by-alias-and-new-international-domains/\nvar outlookdotcom_domains = ['hotmail.at', 'hotmail.be', 'hotmail.ca', 'hotmail.cl', 'hotmail.co.il', 'hotmail.co.nz', 'hotmail.co.th', 'hotmail.co.uk', 'hotmail.com', 'hotmail.com.ar', 'hotmail.com.au', 'hotmail.com.br', 'hotmail.com.gr', 'hotmail.com.mx', 'hotmail.com.pe', 'hotmail.com.tr', 'hotmail.com.vn', 'hotmail.cz', 'hotmail.de', 'hotmail.dk', 'hotmail.es', 'hotmail.fr', 'hotmail.hu', 'hotmail.id', 'hotmail.ie', 'hotmail.in', 'hotmail.it', 'hotmail.jp', 'hotmail.kr', 'hotmail.lv', 'hotmail.my', 'hotmail.ph', 'hotmail.pt', 'hotmail.sa', 'hotmail.sg', 'hotmail.sk', 'live.be', 'live.co.uk', 'live.com', 'live.com.ar', 'live.com.mx', 'live.de', 'live.es', 'live.eu', 'live.fr', 'live.it', 'live.nl', 'msn.com', 'outlook.at', 'outlook.be', 'outlook.cl', 'outlook.co.il', 'outlook.co.nz', 'outlook.co.th', 'outlook.com', 'outlook.com.ar', 'outlook.com.au', 'outlook.com.br', 'outlook.com.gr', 'outlook.com.pe', 'outlook.com.tr', 'outlook.com.vn', 'outlook.cz', 'outlook.de', 'outlook.dk', 'outlook.es', 'outlook.fr', 'outlook.hu', 'outlook.id', 'outlook.ie', 'outlook.in', 'outlook.it', 'outlook.jp', 'outlook.kr', 'outlook.lv', 'outlook.my', 'outlook.ph', 'outlook.pt', 'outlook.sa', 'outlook.sg', 'outlook.sk', 'passport.com'];\n\n// List of domains used by Yahoo Mail\n// This list is likely incomplete\nvar yahoo_domains = ['rocketmail.com', 'yahoo.ca', 'yahoo.co.uk', 'yahoo.com', 'yahoo.de', 'yahoo.fr', 'yahoo.in', 'yahoo.it', 'ymail.com'];\n\n// List of domains used by yandex.ru\nvar yandex_domains = ['yandex.ru', 'yandex.ua', 'yandex.kz', 'yandex.com', 'yandex.by', 'ya.ru'];\n\n// replace single dots, but not multiple consecutive dots\nfunction dotsReplacer(match) {\n if (match.length > 1) {\n return match;\n }\n return '';\n}\nfunction normalizeEmail(email, options) {\n options = (0, _merge.default)(options, default_normalize_email_options);\n var raw_parts = email.split('@');\n var domain = raw_parts.pop();\n var user = raw_parts.join('@');\n var parts = [user, domain];\n\n // The domain is always lowercased, as it's case-insensitive per RFC 1035\n parts[1] = parts[1].toLowerCase();\n if (parts[1] === 'gmail.com' || parts[1] === 'googlemail.com') {\n // Address is GMail\n if (options.gmail_remove_subaddress) {\n parts[0] = parts[0].split('+')[0];\n }\n if (options.gmail_remove_dots) {\n // this does not replace consecutive dots like example..email@gmail.com\n parts[0] = parts[0].replace(/\\.+/g, dotsReplacer);\n }\n if (!parts[0].length) {\n return false;\n }\n if (options.all_lowercase || options.gmail_lowercase) {\n parts[0] = parts[0].toLowerCase();\n }\n parts[1] = options.gmail_convert_googlemaildotcom ? 'gmail.com' : parts[1];\n } else if (icloud_domains.indexOf(parts[1]) >= 0) {\n // Address is iCloud\n if (options.icloud_remove_subaddress) {\n parts[0] = parts[0].split('+')[0];\n }\n if (!parts[0].length) {\n return false;\n }\n if (options.all_lowercase || options.icloud_lowercase) {\n parts[0] = parts[0].toLowerCase();\n }\n } else if (outlookdotcom_domains.indexOf(parts[1]) >= 0) {\n // Address is Outlook.com\n if (options.outlookdotcom_remove_subaddress) {\n parts[0] = parts[0].split('+')[0];\n }\n if (!parts[0].length) {\n return false;\n }\n if (options.all_lowercase || options.outlookdotcom_lowercase) {\n parts[0] = parts[0].toLowerCase();\n }\n } else if (yahoo_domains.indexOf(parts[1]) >= 0) {\n // Address is Yahoo\n if (options.yahoo_remove_subaddress) {\n var components = parts[0].split('-');\n parts[0] = components.length > 1 ? components.slice(0, -1).join('-') : components[0];\n }\n if (!parts[0].length) {\n return false;\n }\n if (options.all_lowercase || options.yahoo_lowercase) {\n parts[0] = parts[0].toLowerCase();\n }\n } else if (yandex_domains.indexOf(parts[1]) >= 0) {\n if (options.all_lowercase || options.yandex_lowercase) {\n parts[0] = parts[0].toLowerCase();\n }\n parts[1] = 'yandex.ru'; // all yandex domains are equal, 1st preferred\n } else if (options.all_lowercase) {\n // Any other address\n parts[0] = parts[0].toLowerCase();\n }\n return parts.join('@');\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isSlug;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nvar charsetRegex = /^[^\\s-_](?!.*?[-_]{2,})[a-z0-9-\\\\][^\\s]*[^-_\\s]$/;\nfunction isSlug(str) {\n (0, _assertString.default)(str);\n return charsetRegex.test(str);\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isLicensePlate;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nvar validators = {\n 'cs-CZ': function csCZ(str) {\n return /^(([ABCDEFHIJKLMNPRSTUVXYZ]|[0-9])-?){5,8}$/.test(str);\n },\n 'de-DE': function deDE(str) {\n return /^((A|AA|AB|AC|AE|AH|AK|AM|AN|AÖ|AP|AS|AT|AU|AW|AZ|B|BA|BB|BC|BE|BF|BH|BI|BK|BL|BM|BN|BO|BÖ|BS|BT|BZ|C|CA|CB|CE|CO|CR|CW|D|DA|DD|DE|DH|DI|DL|DM|DN|DO|DU|DW|DZ|E|EA|EB|ED|EE|EF|EG|EH|EI|EL|EM|EN|ER|ES|EU|EW|F|FB|FD|FF|FG|FI|FL|FN|FO|FR|FS|FT|FÜ|FW|FZ|G|GA|GC|GD|GE|GF|GG|GI|GK|GL|GM|GN|GÖ|GP|GR|GS|GT|GÜ|GV|GW|GZ|H|HA|HB|HC|HD|HE|HF|HG|HH|HI|HK|HL|HM|HN|HO|HP|HR|HS|HU|HV|HX|HY|HZ|IK|IL|IN|IZ|J|JE|JL|K|KA|KB|KC|KE|KF|KG|KH|KI|KK|KL|KM|KN|KO|KR|KS|KT|KU|KW|KY|L|LA|LB|LC|LD|LF|LG|LH|LI|LL|LM|LN|LÖ|LP|LR|LU|M|MA|MB|MC|MD|ME|MG|MH|MI|MK|ML|MM|MN|MO|MQ|MR|MS|MÜ|MW|MY|MZ|N|NB|ND|NE|NF|NH|NI|NK|NM|NÖ|NP|NR|NT|NU|NW|NY|NZ|OA|OB|OC|OD|OE|OF|OG|OH|OK|OL|OP|OS|OZ|P|PA|PB|PE|PF|PI|PL|PM|PN|PR|PS|PW|PZ|R|RA|RC|RD|RE|RG|RH|RI|RL|RM|RN|RO|RP|RS|RT|RU|RV|RW|RZ|S|SB|SC|SE|SG|SI|SK|SL|SM|SN|SO|SP|SR|ST|SU|SW|SY|SZ|TE|TF|TG|TO|TP|TR|TS|TT|TÜ|ÜB|UE|UH|UL|UM|UN|V|VB|VG|VK|VR|VS|W|WA|WB|WE|WF|WI|WK|WL|WM|WN|WO|WR|WS|WT|WÜ|WW|WZ|Z|ZE|ZI|ZP|ZR|ZW|ZZ)[- ]?[A-Z]{1,2}[- ]?\\d{1,4}|(ABG|ABI|AIB|AIC|ALF|ALZ|ANA|ANG|ANK|APD|ARN|ART|ASL|ASZ|AUR|AZE|BAD|BAR|BBG|BCH|BED|BER|BGD|BGL|BID|BIN|BIR|BIT|BIW|BKS|BLB|BLK|BNA|BOG|BOH|BOR|BOT|BRA|BRB|BRG|BRK|BRL|BRV|BSB|BSK|BTF|BÜD|BUL|BÜR|BÜS|BÜZ|CAS|CHA|CLP|CLZ|COC|COE|CUX|DAH|DAN|DAU|DBR|DEG|DEL|DGF|DIL|DIN|DIZ|DKB|DLG|DON|DUD|DÜW|EBE|EBN|EBS|ECK|EIC|EIL|EIN|EIS|EMD|EMS|ERB|ERH|ERK|ERZ|ESB|ESW|FDB|FDS|FEU|FFB|FKB|FLÖ|FOR|FRG|FRI|FRW|FTL|FÜS|GAN|GAP|GDB|GEL|GEO|GER|GHA|GHC|GLA|GMN|GNT|GOA|GOH|GRA|GRH|GRI|GRM|GRZ|GTH|GUB|GUN|GVM|HAB|HAL|HAM|HAS|HBN|HBS|HCH|HDH|HDL|HEB|HEF|HEI|HER|HET|HGN|HGW|HHM|HIG|HIP|HMÜ|HOG|HOH|HOL|HOM|HOR|HÖS|HOT|HRO|HSK|HST|HVL|HWI|IGB|ILL|JÜL|KEH|KEL|KEM|KIB|KLE|KLZ|KÖN|KÖT|KÖZ|KRU|KÜN|KUS|KYF|LAN|LAU|LBS|LBZ|LDK|LDS|LEO|LER|LEV|LIB|LIF|LIP|LÖB|LOS|LRO|LSZ|LÜN|LUP|LWL|MAB|MAI|MAK|MAL|MED|MEG|MEI|MEK|MEL|MER|MET|MGH|MGN|MHL|MIL|MKK|MOD|MOL|MON|MOS|MSE|MSH|MSP|MST|MTK|MTL|MÜB|MÜR|MYK|MZG|NAB|NAI|NAU|NDH|NEA|NEB|NEC|NEN|NES|NEW|NMB|NMS|NOH|NOL|NOM|NOR|NVP|NWM|OAL|OBB|OBG|OCH|OHA|ÖHR|OHV|OHZ|OPR|OSL|OVI|OVL|OVP|PAF|PAN|PAR|PCH|PEG|PIR|PLÖ|PRÜ|QFT|QLB|RDG|REG|REH|REI|RID|RIE|ROD|ROF|ROK|ROL|ROS|ROT|ROW|RSL|RÜD|RÜG|SAB|SAD|SAN|SAW|SBG|SBK|SCZ|SDH|SDL|SDT|SEB|SEE|SEF|SEL|SFB|SFT|SGH|SHA|SHG|SHK|SHL|SIG|SIM|SLE|SLF|SLK|SLN|SLS|SLÜ|SLZ|SMÜ|SOB|SOG|SOK|SÖM|SON|SPB|SPN|SRB|SRO|STA|STB|STD|STE|STL|SUL|SÜW|SWA|SZB|TBB|TDO|TET|TIR|TÖL|TUT|UEM|UER|UFF|USI|VAI|VEC|VER|VIB|VIE|VIT|VOH|WAF|WAK|WAN|WAR|WAT|WBS|WDA|WEL|WEN|WER|WES|WHV|WIL|WIS|WIT|WIZ|WLG|WMS|WND|WOB|WOH|WOL|WOR|WOS|WRN|WSF|WST|WSW|WTL|WTM|WUG|WÜM|WUN|WUR|WZL|ZEL|ZIG)[- ]?(([A-Z][- ]?\\d{1,4})|([A-Z]{2}[- ]?\\d{1,3})))[- ]?(E|H)?$/.test(str);\n },\n 'de-LI': function deLI(str) {\n return /^FL[- ]?\\d{1,5}[UZ]?$/.test(str);\n },\n 'en-IN': function enIN(str) {\n return /^[A-Z]{2}[ -]?[0-9]{1,2}(?:[ -]?[A-Z])(?:[ -]?[A-Z]*)?[ -]?[0-9]{4}$/.test(str);\n },\n 'es-AR': function esAR(str) {\n return /^(([A-Z]{2} ?[0-9]{3} ?[A-Z]{2})|([A-Z]{3} ?[0-9]{3}))$/.test(str);\n },\n 'fi-FI': function fiFI(str) {\n return /^(?=.{4,7})(([A-Z]{1,3}|[0-9]{1,3})[\\s-]?([A-Z]{1,3}|[0-9]{1,5}))$/.test(str);\n },\n 'hu-HU': function huHU(str) {\n return /^((((?!AAA)(([A-NPRSTVZWXY]{1})([A-PR-Z]{1})([A-HJ-NPR-Z]))|(A[ABC]I)|A[ABC]O|A[A-W]Q|BPI|BPO|UCO|UDO|XAO)-(?!000)\\d{3})|(M\\d{6})|((CK|DT|CD|HC|H[ABEFIKLMNPRSTVX]|MA|OT|R[A-Z]) \\d{2}-\\d{2})|(CD \\d{3}-\\d{3})|(C-(C|X) \\d{4})|(X-(A|B|C) \\d{4})|(([EPVZ]-\\d{5}))|(S A[A-Z]{2} \\d{2})|(SP \\d{2}-\\d{2}))$/.test(str);\n },\n 'pt-BR': function ptBR(str) {\n return /^[A-Z]{3}[ -]?[0-9][A-Z][0-9]{2}|[A-Z]{3}[ -]?[0-9]{4}$/.test(str);\n },\n 'pt-PT': function ptPT(str) {\n return /^([A-Z]{2}|[0-9]{2})[ -·]?([A-Z]{2}|[0-9]{2})[ -·]?([A-Z]{2}|[0-9]{2})$/.test(str);\n },\n 'sq-AL': function sqAL(str) {\n return /^[A-Z]{2}[- ]?((\\d{3}[- ]?(([A-Z]{2})|T))|(R[- ]?\\d{3}))$/.test(str);\n },\n 'sv-SE': function svSE(str) {\n return /^[A-HJ-PR-UW-Z]{3} ?[\\d]{2}[A-HJ-PR-UW-Z1-9]$|(^[A-ZÅÄÖ ]{2,7}$)/.test(str.trim());\n },\n 'en-PK': function enPK(str) {\n return /(^[A-Z]{2}((\\s|-){0,1})[0-9]{3,4}((\\s|-)[0-9]{2}){0,1}$)|(^[A-Z]{3}((\\s|-){0,1})[0-9]{3,4}((\\s|-)[0-9]{2}){0,1}$)|(^[A-Z]{4}((\\s|-){0,1})[0-9]{3,4}((\\s|-)[0-9]{2}){0,1}$)|(^[A-Z]((\\s|-){0,1})[0-9]{4}((\\s|-)[0-9]{2}){0,1}$)/.test(str.trim());\n }\n};\nfunction isLicensePlate(str, locale) {\n (0, _assertString.default)(str);\n if (locale in validators) {\n return validators[locale](str);\n } else if (locale === 'any') {\n for (var key in validators) {\n /* eslint guard-for-in: 0 */\n var validator = validators[key];\n if (validator(str)) {\n return true;\n }\n }\n return false;\n }\n throw new Error(\"Invalid locale '\".concat(locale, \"'\"));\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isStrongPassword;\nvar _merge = _interopRequireDefault(require(\"./util/merge\"));\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nvar upperCaseRegex = /^[A-Z]$/;\nvar lowerCaseRegex = /^[a-z]$/;\nvar numberRegex = /^[0-9]$/;\nvar symbolRegex = /^[-#!$@£%^&*()_+|~=`{}\\[\\]:\";'<>?,.\\/\\\\ ]$/;\nvar defaultOptions = {\n minLength: 8,\n minLowercase: 1,\n minUppercase: 1,\n minNumbers: 1,\n minSymbols: 1,\n returnScore: false,\n pointsPerUnique: 1,\n pointsPerRepeat: 0.5,\n pointsForContainingLower: 10,\n pointsForContainingUpper: 10,\n pointsForContainingNumber: 10,\n pointsForContainingSymbol: 10\n};\n\n/* Counts number of occurrences of each char in a string\n * could be moved to util/ ?\n*/\nfunction countChars(str) {\n var result = {};\n Array.from(str).forEach(function (char) {\n var curVal = result[char];\n if (curVal) {\n result[char] += 1;\n } else {\n result[char] = 1;\n }\n });\n return result;\n}\n\n/* Return information about a password */\nfunction analyzePassword(password) {\n var charMap = countChars(password);\n var analysis = {\n length: password.length,\n uniqueChars: Object.keys(charMap).length,\n uppercaseCount: 0,\n lowercaseCount: 0,\n numberCount: 0,\n symbolCount: 0\n };\n Object.keys(charMap).forEach(function (char) {\n /* istanbul ignore else */\n if (upperCaseRegex.test(char)) {\n analysis.uppercaseCount += charMap[char];\n } else if (lowerCaseRegex.test(char)) {\n analysis.lowercaseCount += charMap[char];\n } else if (numberRegex.test(char)) {\n analysis.numberCount += charMap[char];\n } else if (symbolRegex.test(char)) {\n analysis.symbolCount += charMap[char];\n }\n });\n return analysis;\n}\nfunction scorePassword(analysis, scoringOptions) {\n var points = 0;\n points += analysis.uniqueChars * scoringOptions.pointsPerUnique;\n points += (analysis.length - analysis.uniqueChars) * scoringOptions.pointsPerRepeat;\n if (analysis.lowercaseCount > 0) {\n points += scoringOptions.pointsForContainingLower;\n }\n if (analysis.uppercaseCount > 0) {\n points += scoringOptions.pointsForContainingUpper;\n }\n if (analysis.numberCount > 0) {\n points += scoringOptions.pointsForContainingNumber;\n }\n if (analysis.symbolCount > 0) {\n points += scoringOptions.pointsForContainingSymbol;\n }\n return points;\n}\nfunction isStrongPassword(str) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n (0, _assertString.default)(str);\n var analysis = analyzePassword(str);\n options = (0, _merge.default)(options || {}, defaultOptions);\n if (options.returnScore) {\n return scorePassword(analysis, options);\n }\n return analysis.length >= options.minLength && analysis.lowercaseCount >= options.minLowercase && analysis.uppercaseCount >= options.minUppercase && analysis.numberCount >= options.minNumbers && analysis.symbolCount >= options.minSymbols;\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isVAT;\nexports.vatMatchers = void 0;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nvar algorithms = _interopRequireWildcard(require(\"./util/algorithms\"));\nfunction _getRequireWildcardCache(e) { if (\"function\" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }\nfunction _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || \"object\" != _typeof(e) && \"function\" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if (\"default\" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nvar AU = function AU(str) {\n var match = str.match(/^(AU)?(\\d{11})$/);\n if (!match) {\n return false;\n }\n // @see {@link https://abr.business.gov.au/Help/AbnFormat}\n var weights = [10, 1, 3, 5, 7, 9, 11, 13, 15, 17, 19];\n str = str.replace(/^AU/, '');\n var ABN = (parseInt(str.slice(0, 1), 10) - 1).toString() + str.slice(1);\n var total = 0;\n for (var i = 0; i < 11; i++) {\n total += weights[i] * ABN.charAt(i);\n }\n return total !== 0 && total % 89 === 0;\n};\nvar CH = function CH(str) {\n // @see {@link https://www.ech.ch/de/ech/ech-0097/5.2.0}\n var hasValidCheckNumber = function hasValidCheckNumber(digits) {\n var lastDigit = digits.pop(); // used as check number\n var weights = [5, 4, 3, 2, 7, 6, 5, 4];\n var calculatedCheckNumber = (11 - digits.reduce(function (acc, el, idx) {\n return acc + el * weights[idx];\n }, 0) % 11) % 11;\n return lastDigit === calculatedCheckNumber;\n };\n\n // @see {@link https://www.estv.admin.ch/estv/de/home/mehrwertsteuer/uid/mwst-uid-nummer.html}\n return /^(CHE[- ]?)?(\\d{9}|(\\d{3}\\.\\d{3}\\.\\d{3})|(\\d{3} \\d{3} \\d{3})) ?(TVA|MWST|IVA)?$/.test(str) && hasValidCheckNumber(str.match(/\\d/g).map(function (el) {\n return +el;\n }));\n};\nvar PT = function PT(str) {\n var match = str.match(/^(PT)?(\\d{9})$/);\n if (!match) {\n return false;\n }\n var tin = match[2];\n var checksum = 11 - algorithms.reverseMultiplyAndSum(tin.split('').slice(0, 8).map(function (a) {\n return parseInt(a, 10);\n }), 9) % 11;\n if (checksum > 9) {\n return parseInt(tin[8], 10) === 0;\n }\n return checksum === parseInt(tin[8], 10);\n};\nvar vatMatchers = exports.vatMatchers = {\n /**\r\n * European Union VAT identification numbers\r\n */\n AT: function AT(str) {\n return /^(AT)?U\\d{8}$/.test(str);\n },\n BE: function BE(str) {\n return /^(BE)?\\d{10}$/.test(str);\n },\n BG: function BG(str) {\n return /^(BG)?\\d{9,10}$/.test(str);\n },\n HR: function HR(str) {\n return /^(HR)?\\d{11}$/.test(str);\n },\n CY: function CY(str) {\n return /^(CY)?\\w{9}$/.test(str);\n },\n CZ: function CZ(str) {\n return /^(CZ)?\\d{8,10}$/.test(str);\n },\n DK: function DK(str) {\n return /^(DK)?\\d{8}$/.test(str);\n },\n EE: function EE(str) {\n return /^(EE)?\\d{9}$/.test(str);\n },\n FI: function FI(str) {\n return /^(FI)?\\d{8}$/.test(str);\n },\n FR: function FR(str) {\n return /^(FR)?\\w{2}\\d{9}$/.test(str);\n },\n DE: function DE(str) {\n return /^(DE)?\\d{9}$/.test(str);\n },\n EL: function EL(str) {\n return /^(EL)?\\d{9}$/.test(str);\n },\n HU: function HU(str) {\n return /^(HU)?\\d{8}$/.test(str);\n },\n IE: function IE(str) {\n return /^(IE)?\\d{7}\\w{1}(W)?$/.test(str);\n },\n IT: function IT(str) {\n return /^(IT)?\\d{11}$/.test(str);\n },\n LV: function LV(str) {\n return /^(LV)?\\d{11}$/.test(str);\n },\n LT: function LT(str) {\n return /^(LT)?\\d{9,12}$/.test(str);\n },\n LU: function LU(str) {\n return /^(LU)?\\d{8}$/.test(str);\n },\n MT: function MT(str) {\n return /^(MT)?\\d{8}$/.test(str);\n },\n NL: function NL(str) {\n return /^(NL)?\\d{9}B\\d{2}$/.test(str);\n },\n PL: function PL(str) {\n return /^(PL)?(\\d{10}|(\\d{3}-\\d{3}-\\d{2}-\\d{2})|(\\d{3}-\\d{2}-\\d{2}-\\d{3}))$/.test(str);\n },\n PT: PT,\n RO: function RO(str) {\n return /^(RO)?\\d{2,10}$/.test(str);\n },\n SK: function SK(str) {\n return /^(SK)?\\d{10}$/.test(str);\n },\n SI: function SI(str) {\n return /^(SI)?\\d{8}$/.test(str);\n },\n ES: function ES(str) {\n return /^(ES)?\\w\\d{7}[A-Z]$/.test(str);\n },\n SE: function SE(str) {\n return /^(SE)?\\d{12}$/.test(str);\n },\n /**\r\n * VAT numbers of non-EU countries\r\n */\n AL: function AL(str) {\n return /^(AL)?\\w{9}[A-Z]$/.test(str);\n },\n MK: function MK(str) {\n return /^(MK)?\\d{13}$/.test(str);\n },\n AU: AU,\n BY: function BY(str) {\n return /^(УÐП )?\\d{9}$/.test(str);\n },\n CA: function CA(str) {\n return /^(CA)?\\d{9}$/.test(str);\n },\n IS: function IS(str) {\n return /^(IS)?\\d{5,6}$/.test(str);\n },\n IN: function IN(str) {\n return /^(IN)?\\d{15}$/.test(str);\n },\n ID: function ID(str) {\n return /^(ID)?(\\d{15}|(\\d{2}.\\d{3}.\\d{3}.\\d{1}-\\d{3}.\\d{3}))$/.test(str);\n },\n IL: function IL(str) {\n return /^(IL)?\\d{9}$/.test(str);\n },\n KZ: function KZ(str) {\n return /^(KZ)?\\d{12}$/.test(str);\n },\n NZ: function NZ(str) {\n return /^(NZ)?\\d{9}$/.test(str);\n },\n NG: function NG(str) {\n return /^(NG)?(\\d{12}|(\\d{8}-\\d{4}))$/.test(str);\n },\n NO: function NO(str) {\n return /^(NO)?\\d{9}MVA$/.test(str);\n },\n PH: function PH(str) {\n return /^(PH)?(\\d{12}|\\d{3} \\d{3} \\d{3} \\d{3})$/.test(str);\n },\n RU: function RU(str) {\n return /^(RU)?(\\d{10}|\\d{12})$/.test(str);\n },\n SM: function SM(str) {\n return /^(SM)?\\d{5}$/.test(str);\n },\n SA: function SA(str) {\n return /^(SA)?\\d{15}$/.test(str);\n },\n RS: function RS(str) {\n return /^(RS)?\\d{9}$/.test(str);\n },\n CH: CH,\n TR: function TR(str) {\n return /^(TR)?\\d{10}$/.test(str);\n },\n UA: function UA(str) {\n return /^(UA)?\\d{12}$/.test(str);\n },\n GB: function GB(str) {\n return /^GB((\\d{3} \\d{4} ([0-8][0-9]|9[0-6]))|(\\d{9} \\d{3})|(((GD[0-4])|(HA[5-9]))[0-9]{2}))$/.test(str);\n },\n UZ: function UZ(str) {\n return /^(UZ)?\\d{9}$/.test(str);\n },\n /**\r\n * VAT numbers of Latin American countries\r\n */\n AR: function AR(str) {\n return /^(AR)?\\d{11}$/.test(str);\n },\n BO: function BO(str) {\n return /^(BO)?\\d{7}$/.test(str);\n },\n BR: function BR(str) {\n return /^(BR)?((\\d{2}.\\d{3}.\\d{3}\\/\\d{4}-\\d{2})|(\\d{3}.\\d{3}.\\d{3}-\\d{2}))$/.test(str);\n },\n CL: function CL(str) {\n return /^(CL)?\\d{8}-\\d{1}$/.test(str);\n },\n CO: function CO(str) {\n return /^(CO)?\\d{10}$/.test(str);\n },\n CR: function CR(str) {\n return /^(CR)?\\d{9,12}$/.test(str);\n },\n EC: function EC(str) {\n return /^(EC)?\\d{13}$/.test(str);\n },\n SV: function SV(str) {\n return /^(SV)?\\d{4}-\\d{6}-\\d{3}-\\d{1}$/.test(str);\n },\n GT: function GT(str) {\n return /^(GT)?\\d{7}-\\d{1}$/.test(str);\n },\n HN: function HN(str) {\n return /^(HN)?$/.test(str);\n },\n MX: function MX(str) {\n return /^(MX)?\\w{3,4}\\d{6}\\w{3}$/.test(str);\n },\n NI: function NI(str) {\n return /^(NI)?\\d{3}-\\d{6}-\\d{4}\\w{1}$/.test(str);\n },\n PA: function PA(str) {\n return /^(PA)?$/.test(str);\n },\n PY: function PY(str) {\n return /^(PY)?\\d{6,8}-\\d{1}$/.test(str);\n },\n PE: function PE(str) {\n return /^(PE)?\\d{11}$/.test(str);\n },\n DO: function DO(str) {\n return /^(DO)?(\\d{11}|(\\d{3}-\\d{7}-\\d{1})|[1,4,5]{1}\\d{8}|([1,4,5]{1})-\\d{2}-\\d{5}-\\d{1})$/.test(str);\n },\n UY: function UY(str) {\n return /^(UY)?\\d{12}$/.test(str);\n },\n VE: function VE(str) {\n return /^(VE)?[J,G,V,E]{1}-(\\d{9}|(\\d{8}-\\d{1}))$/.test(str);\n }\n};\nfunction isVAT(str, countryCode) {\n (0, _assertString.default)(str);\n (0, _assertString.default)(countryCode);\n if (countryCode in vatMatchers) {\n return vatMatchers[countryCode](str);\n }\n throw new Error(\"Invalid country code: '\".concat(countryCode, \"'\"));\n}","var baseInverter = require('./_baseInverter');\n\n/**\n * Creates a function like `_.invertBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} toIteratee The function to resolve iteratees.\n * @returns {Function} Returns the new inverter function.\n */\nfunction createInverter(setter, toIteratee) {\n return function(object, iteratee) {\n return baseInverter(object, setter, toIteratee(iteratee), {});\n };\n}\n\nmodule.exports = createInverter;\n","var baseForOwn = require('./_baseForOwn');\n\n/**\n * The base implementation of `_.invert` and `_.invertBy` which inverts\n * `object` with values transformed by `iteratee` and set by `setter`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform values.\n * @param {Object} accumulator The initial inverted object.\n * @returns {Function} Returns `accumulator`.\n */\nfunction baseInverter(object, setter, iteratee, accumulator) {\n baseForOwn(object, function(value, key, object) {\n setter(accumulator, iteratee(value), key, object);\n });\n return accumulator;\n}\n\nmodule.exports = baseInverter;\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","/**\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 baseEach = require('./_baseEach');\n\n/**\n * The base implementation of `_.filter` 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 {Array} Returns the new filtered array.\n */\nfunction baseFilter(collection, predicate) {\n var result = [];\n baseEach(collection, function(value, index, collection) {\n if (predicate(value, index, collection)) {\n result.push(value);\n }\n });\n return result;\n}\n\nmodule.exports = baseFilter;\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 baseIsMatch = require('./_baseIsMatch'),\n getMatchData = require('./_getMatchData'),\n matchesStrictComparable = require('./_matchesStrictComparable');\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\nmodule.exports = baseMatches;\n","var Stack = require('./_Stack'),\n baseIsEqual = require('./_baseIsEqual');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n}\n\nmodule.exports = baseIsMatch;\n","var ListCache = require('./_ListCache');\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nmodule.exports = stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nmodule.exports = stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nmodule.exports = stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nmodule.exports = stackHas;\n","var ListCache = require('./_ListCache'),\n Map = require('./_Map'),\n MapCache = require('./_MapCache');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nmodule.exports = stackSet;\n","var 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 Symbol = require('./_Symbol'),\n Uint8Array = require('./_Uint8Array'),\n eq = require('./eq'),\n equalArrays = require('./_equalArrays'),\n mapToArray = require('./_mapToArray'),\n setToArray = require('./_setToArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\nmodule.exports = equalByTag;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\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 // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\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 baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbols = require('./_getSymbols'),\n keys = require('./keys');\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nmodule.exports = getAllKeys;\n","var arrayPush = require('./_arrayPush'),\n isArray = require('./isArray');\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nmodule.exports = baseGetAllKeys;\n","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 * 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 isStrictComparable = require('./_isStrictComparable'),\n keys = require('./keys');\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n}\n\nmodule.exports = getMatchData;\n","var baseIsEqual = require('./_baseIsEqual'),\n get = require('./get'),\n hasIn = require('./hasIn'),\n isKey = require('./_isKey'),\n isStrictComparable = require('./_isStrictComparable'),\n matchesStrictComparable = require('./_matchesStrictComparable'),\n toKey = require('./_toKey');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n}\n\nmodule.exports = baseMatchesProperty;\n","var memoizeCapped = require('./_memoizeCapped');\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nmodule.exports = stringToPath;\n","var memoize = require('./memoize');\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nmodule.exports = memoizeCapped;\n","var 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 baseHasIn = require('./_baseHasIn'),\n hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\nmodule.exports = hasIn;\n","/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\nmodule.exports = baseHasIn;\n","var 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 baseProperty = require('./_baseProperty'),\n basePropertyDeep = require('./_basePropertyDeep'),\n isKey = require('./_isKey'),\n toKey = require('./_toKey');\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = property;\n","/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\nmodule.exports = baseProperty;\n","var baseGet = require('./_baseGet');\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n}\n\nmodule.exports = basePropertyDeep;\n","var arrayAggregator = require('./_arrayAggregator'),\n baseAggregator = require('./_baseAggregator'),\n baseIteratee = require('./_baseIteratee'),\n isArray = require('./isArray');\n\n/**\n * Creates a function like `_.groupBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} [initializer] The accumulator object initializer.\n * @returns {Function} Returns the new aggregator function.\n */\nfunction createAggregator(setter, initializer) {\n return function(collection, iteratee) {\n var func = isArray(collection) ? arrayAggregator : baseAggregator,\n accumulator = initializer ? initializer() : {};\n\n return func(collection, setter, baseIteratee(iteratee, 2), accumulator);\n };\n}\n\nmodule.exports = createAggregator;\n","/**\n * A specialized version of `baseAggregator` for arrays.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\nfunction arrayAggregator(array, setter, iteratee, accumulator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n var value = array[index];\n setter(accumulator, value, iteratee(value), array);\n }\n return accumulator;\n}\n\nmodule.exports = arrayAggregator;\n","var baseEach = require('./_baseEach');\n\n/**\n * Aggregates elements of `collection` on `accumulator` with keys transformed\n * by `iteratee` and values set by `setter`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\nfunction baseAggregator(collection, setter, iteratee, accumulator) {\n baseEach(collection, function(value, key, collection) {\n setter(accumulator, value, iteratee(value), collection);\n });\n return accumulator;\n}\n\nmodule.exports = baseAggregator;\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 castSlice = require('./_castSlice'),\n hasUnicode = require('./_hasUnicode'),\n stringToArray = require('./_stringToArray'),\n toString = require('./toString');\n\n/**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\nfunction createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n}\n\nmodule.exports = createCaseFirst;\n","var baseSlice = require('./_baseSlice');\n\n/**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\nfunction castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n}\n\nmodule.exports = castSlice;\n","/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n}\n\nmodule.exports = baseSlice;\n","var asciiToArray = require('./_asciiToArray'),\n hasUnicode = require('./_hasUnicode'),\n unicodeToArray = require('./_unicodeToArray');\n\n/**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n}\n\nmodule.exports = stringToArray;\n","/**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction asciiToArray(string) {\n return string.split('');\n}\n\nmodule.exports = asciiToArray;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction unicodeToArray(string) {\n return string.match(reUnicode) || [];\n}\n\nmodule.exports = unicodeToArray;\n","\n// `victory-vendor/d3-shape` (CommonJS)\n// See upstream license: https://github.com/d3/d3-shape/blob/main/LICENSE\n//\n// Our CommonJS package relies on transpiled vendor files in `lib-vendor/d3-shape`\nmodule.exports = require(\"../lib-vendor/d3-shape/src/index.js\");\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"arc\", {\n enumerable: true,\n get: function () {\n return _arc.default;\n }\n});\nObject.defineProperty(exports, \"area\", {\n enumerable: true,\n get: function () {\n return _area.default;\n }\n});\nObject.defineProperty(exports, \"areaRadial\", {\n enumerable: true,\n get: function () {\n return _areaRadial.default;\n }\n});\nObject.defineProperty(exports, \"curveBasis\", {\n enumerable: true,\n get: function () {\n return _basis.default;\n }\n});\nObject.defineProperty(exports, \"curveBasisClosed\", {\n enumerable: true,\n get: function () {\n return _basisClosed.default;\n }\n});\nObject.defineProperty(exports, \"curveBasisOpen\", {\n enumerable: true,\n get: function () {\n return _basisOpen.default;\n }\n});\nObject.defineProperty(exports, \"curveBumpX\", {\n enumerable: true,\n get: function () {\n return _bump.bumpX;\n }\n});\nObject.defineProperty(exports, \"curveBumpY\", {\n enumerable: true,\n get: function () {\n return _bump.bumpY;\n }\n});\nObject.defineProperty(exports, \"curveBundle\", {\n enumerable: true,\n get: function () {\n return _bundle.default;\n }\n});\nObject.defineProperty(exports, \"curveCardinal\", {\n enumerable: true,\n get: function () {\n return _cardinal.default;\n }\n});\nObject.defineProperty(exports, \"curveCardinalClosed\", {\n enumerable: true,\n get: function () {\n return _cardinalClosed.default;\n }\n});\nObject.defineProperty(exports, \"curveCardinalOpen\", {\n enumerable: true,\n get: function () {\n return _cardinalOpen.default;\n }\n});\nObject.defineProperty(exports, \"curveCatmullRom\", {\n enumerable: true,\n get: function () {\n return _catmullRom.default;\n }\n});\nObject.defineProperty(exports, \"curveCatmullRomClosed\", {\n enumerable: true,\n get: function () {\n return _catmullRomClosed.default;\n }\n});\nObject.defineProperty(exports, \"curveCatmullRomOpen\", {\n enumerable: true,\n get: function () {\n return _catmullRomOpen.default;\n }\n});\nObject.defineProperty(exports, \"curveLinear\", {\n enumerable: true,\n get: function () {\n return _linear.default;\n }\n});\nObject.defineProperty(exports, \"curveLinearClosed\", {\n enumerable: true,\n get: function () {\n return _linearClosed.default;\n }\n});\nObject.defineProperty(exports, \"curveMonotoneX\", {\n enumerable: true,\n get: function () {\n return _monotone.monotoneX;\n }\n});\nObject.defineProperty(exports, \"curveMonotoneY\", {\n enumerable: true,\n get: function () {\n return _monotone.monotoneY;\n }\n});\nObject.defineProperty(exports, \"curveNatural\", {\n enumerable: true,\n get: function () {\n return _natural.default;\n }\n});\nObject.defineProperty(exports, \"curveStep\", {\n enumerable: true,\n get: function () {\n return _step.default;\n }\n});\nObject.defineProperty(exports, \"curveStepAfter\", {\n enumerable: true,\n get: function () {\n return _step.stepAfter;\n }\n});\nObject.defineProperty(exports, \"curveStepBefore\", {\n enumerable: true,\n get: function () {\n return _step.stepBefore;\n }\n});\nObject.defineProperty(exports, \"line\", {\n enumerable: true,\n get: function () {\n return _line.default;\n }\n});\nObject.defineProperty(exports, \"lineRadial\", {\n enumerable: true,\n get: function () {\n return _lineRadial.default;\n }\n});\nObject.defineProperty(exports, \"link\", {\n enumerable: true,\n get: function () {\n return _link.link;\n }\n});\nObject.defineProperty(exports, \"linkHorizontal\", {\n enumerable: true,\n get: function () {\n return _link.linkHorizontal;\n }\n});\nObject.defineProperty(exports, \"linkRadial\", {\n enumerable: true,\n get: function () {\n return _link.linkRadial;\n }\n});\nObject.defineProperty(exports, \"linkVertical\", {\n enumerable: true,\n get: function () {\n return _link.linkVertical;\n }\n});\nObject.defineProperty(exports, \"pie\", {\n enumerable: true,\n get: function () {\n return _pie.default;\n }\n});\nObject.defineProperty(exports, \"pointRadial\", {\n enumerable: true,\n get: function () {\n return _pointRadial.default;\n }\n});\nObject.defineProperty(exports, \"radialArea\", {\n enumerable: true,\n get: function () {\n return _areaRadial.default;\n }\n});\nObject.defineProperty(exports, \"radialLine\", {\n enumerable: true,\n get: function () {\n return _lineRadial.default;\n }\n});\nObject.defineProperty(exports, \"stack\", {\n enumerable: true,\n get: function () {\n return _stack.default;\n }\n});\nObject.defineProperty(exports, \"stackOffsetDiverging\", {\n enumerable: true,\n get: function () {\n return _diverging.default;\n }\n});\nObject.defineProperty(exports, \"stackOffsetExpand\", {\n enumerable: true,\n get: function () {\n return _expand.default;\n }\n});\nObject.defineProperty(exports, \"stackOffsetNone\", {\n enumerable: true,\n get: function () {\n return _none.default;\n }\n});\nObject.defineProperty(exports, \"stackOffsetSilhouette\", {\n enumerable: true,\n get: function () {\n return _silhouette.default;\n }\n});\nObject.defineProperty(exports, \"stackOffsetWiggle\", {\n enumerable: true,\n get: function () {\n return _wiggle.default;\n }\n});\nObject.defineProperty(exports, \"stackOrderAppearance\", {\n enumerable: true,\n get: function () {\n return _appearance.default;\n }\n});\nObject.defineProperty(exports, \"stackOrderAscending\", {\n enumerable: true,\n get: function () {\n return _ascending.default;\n }\n});\nObject.defineProperty(exports, \"stackOrderDescending\", {\n enumerable: true,\n get: function () {\n return _descending.default;\n }\n});\nObject.defineProperty(exports, \"stackOrderInsideOut\", {\n enumerable: true,\n get: function () {\n return _insideOut.default;\n }\n});\nObject.defineProperty(exports, \"stackOrderNone\", {\n enumerable: true,\n get: function () {\n return _none2.default;\n }\n});\nObject.defineProperty(exports, \"stackOrderReverse\", {\n enumerable: true,\n get: function () {\n return _reverse.default;\n }\n});\nObject.defineProperty(exports, \"symbol\", {\n enumerable: true,\n get: function () {\n return _symbol.default;\n }\n});\nObject.defineProperty(exports, \"symbolAsterisk\", {\n enumerable: true,\n get: function () {\n return _asterisk.default;\n }\n});\nObject.defineProperty(exports, \"symbolCircle\", {\n enumerable: true,\n get: function () {\n return _circle.default;\n }\n});\nObject.defineProperty(exports, \"symbolCross\", {\n enumerable: true,\n get: function () {\n return _cross.default;\n }\n});\nObject.defineProperty(exports, \"symbolDiamond\", {\n enumerable: true,\n get: function () {\n return _diamond.default;\n }\n});\nObject.defineProperty(exports, \"symbolDiamond2\", {\n enumerable: true,\n get: function () {\n return _diamond2.default;\n }\n});\nObject.defineProperty(exports, \"symbolPlus\", {\n enumerable: true,\n get: function () {\n return _plus.default;\n }\n});\nObject.defineProperty(exports, \"symbolSquare\", {\n enumerable: true,\n get: function () {\n return _square.default;\n }\n});\nObject.defineProperty(exports, \"symbolSquare2\", {\n enumerable: true,\n get: function () {\n return _square2.default;\n }\n});\nObject.defineProperty(exports, \"symbolStar\", {\n enumerable: true,\n get: function () {\n return _star.default;\n }\n});\nObject.defineProperty(exports, \"symbolTriangle\", {\n enumerable: true,\n get: function () {\n return _triangle.default;\n }\n});\nObject.defineProperty(exports, \"symbolTriangle2\", {\n enumerable: true,\n get: function () {\n return _triangle2.default;\n }\n});\nObject.defineProperty(exports, \"symbolWye\", {\n enumerable: true,\n get: function () {\n return _wye.default;\n }\n});\nObject.defineProperty(exports, \"symbolX\", {\n enumerable: true,\n get: function () {\n return _x.default;\n }\n});\nObject.defineProperty(exports, \"symbols\", {\n enumerable: true,\n get: function () {\n return _symbol.symbolsFill;\n }\n});\nObject.defineProperty(exports, \"symbolsFill\", {\n enumerable: true,\n get: function () {\n return _symbol.symbolsFill;\n }\n});\nObject.defineProperty(exports, \"symbolsStroke\", {\n enumerable: true,\n get: function () {\n return _symbol.symbolsStroke;\n }\n});\n\nvar _arc = _interopRequireDefault(require(\"./arc.js\"));\n\nvar _area = _interopRequireDefault(require(\"./area.js\"));\n\nvar _line = _interopRequireDefault(require(\"./line.js\"));\n\nvar _pie = _interopRequireDefault(require(\"./pie.js\"));\n\nvar _areaRadial = _interopRequireDefault(require(\"./areaRadial.js\"));\n\nvar _lineRadial = _interopRequireDefault(require(\"./lineRadial.js\"));\n\nvar _pointRadial = _interopRequireDefault(require(\"./pointRadial.js\"));\n\nvar _link = require(\"./link.js\");\n\nvar _symbol = _interopRequireWildcard(require(\"./symbol.js\"));\n\nvar _asterisk = _interopRequireDefault(require(\"./symbol/asterisk.js\"));\n\nvar _circle = _interopRequireDefault(require(\"./symbol/circle.js\"));\n\nvar _cross = _interopRequireDefault(require(\"./symbol/cross.js\"));\n\nvar _diamond = _interopRequireDefault(require(\"./symbol/diamond.js\"));\n\nvar _diamond2 = _interopRequireDefault(require(\"./symbol/diamond2.js\"));\n\nvar _plus = _interopRequireDefault(require(\"./symbol/plus.js\"));\n\nvar _square = _interopRequireDefault(require(\"./symbol/square.js\"));\n\nvar _square2 = _interopRequireDefault(require(\"./symbol/square2.js\"));\n\nvar _star = _interopRequireDefault(require(\"./symbol/star.js\"));\n\nvar _triangle = _interopRequireDefault(require(\"./symbol/triangle.js\"));\n\nvar _triangle2 = _interopRequireDefault(require(\"./symbol/triangle2.js\"));\n\nvar _wye = _interopRequireDefault(require(\"./symbol/wye.js\"));\n\nvar _x = _interopRequireDefault(require(\"./symbol/x.js\"));\n\nvar _basisClosed = _interopRequireDefault(require(\"./curve/basisClosed.js\"));\n\nvar _basisOpen = _interopRequireDefault(require(\"./curve/basisOpen.js\"));\n\nvar _basis = _interopRequireDefault(require(\"./curve/basis.js\"));\n\nvar _bump = require(\"./curve/bump.js\");\n\nvar _bundle = _interopRequireDefault(require(\"./curve/bundle.js\"));\n\nvar _cardinalClosed = _interopRequireDefault(require(\"./curve/cardinalClosed.js\"));\n\nvar _cardinalOpen = _interopRequireDefault(require(\"./curve/cardinalOpen.js\"));\n\nvar _cardinal = _interopRequireDefault(require(\"./curve/cardinal.js\"));\n\nvar _catmullRomClosed = _interopRequireDefault(require(\"./curve/catmullRomClosed.js\"));\n\nvar _catmullRomOpen = _interopRequireDefault(require(\"./curve/catmullRomOpen.js\"));\n\nvar _catmullRom = _interopRequireDefault(require(\"./curve/catmullRom.js\"));\n\nvar _linearClosed = _interopRequireDefault(require(\"./curve/linearClosed.js\"));\n\nvar _linear = _interopRequireDefault(require(\"./curve/linear.js\"));\n\nvar _monotone = require(\"./curve/monotone.js\");\n\nvar _natural = _interopRequireDefault(require(\"./curve/natural.js\"));\n\nvar _step = _interopRequireWildcard(require(\"./curve/step.js\"));\n\nvar _stack = _interopRequireDefault(require(\"./stack.js\"));\n\nvar _expand = _interopRequireDefault(require(\"./offset/expand.js\"));\n\nvar _diverging = _interopRequireDefault(require(\"./offset/diverging.js\"));\n\nvar _none = _interopRequireDefault(require(\"./offset/none.js\"));\n\nvar _silhouette = _interopRequireDefault(require(\"./offset/silhouette.js\"));\n\nvar _wiggle = _interopRequireDefault(require(\"./offset/wiggle.js\"));\n\nvar _appearance = _interopRequireDefault(require(\"./order/appearance.js\"));\n\nvar _ascending = _interopRequireDefault(require(\"./order/ascending.js\"));\n\nvar _descending = _interopRequireDefault(require(\"./order/descending.js\"));\n\nvar _insideOut = _interopRequireDefault(require(\"./order/insideOut.js\"));\n\nvar _none2 = _interopRequireDefault(require(\"./order/none.js\"));\n\nvar _reverse = _interopRequireDefault(require(\"./order/reverse.js\"));\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = _default;\n\nvar _index = require(\"../../../lib-vendor/d3-path/src/index.js\");\n\nvar _constant = _interopRequireDefault(require(\"./constant.js\"));\n\nvar _math = require(\"./math.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction arcInnerRadius(d) {\n return d.innerRadius;\n}\n\nfunction arcOuterRadius(d) {\n return d.outerRadius;\n}\n\nfunction arcStartAngle(d) {\n return d.startAngle;\n}\n\nfunction arcEndAngle(d) {\n return d.endAngle;\n}\n\nfunction arcPadAngle(d) {\n return d && d.padAngle; // Note: optional!\n}\n\nfunction intersect(x0, y0, x1, y1, x2, y2, x3, y3) {\n var x10 = x1 - x0,\n y10 = y1 - y0,\n x32 = x3 - x2,\n y32 = y3 - y2,\n t = y32 * x10 - x32 * y10;\n if (t * t < _math.epsilon) return;\n t = (x32 * (y0 - y2) - y32 * (x0 - x2)) / t;\n return [x0 + t * x10, y0 + t * y10];\n} // Compute perpendicular offset line of length rc.\n// http://mathworld.wolfram.com/Circle-LineIntersection.html\n\n\nfunction cornerTangents(x0, y0, x1, y1, r1, rc, cw) {\n var x01 = x0 - x1,\n y01 = y0 - y1,\n lo = (cw ? rc : -rc) / (0, _math.sqrt)(x01 * x01 + y01 * y01),\n ox = lo * y01,\n oy = -lo * x01,\n x11 = x0 + ox,\n y11 = y0 + oy,\n x10 = x1 + ox,\n y10 = y1 + oy,\n x00 = (x11 + x10) / 2,\n y00 = (y11 + y10) / 2,\n dx = x10 - x11,\n dy = y10 - y11,\n d2 = dx * dx + dy * dy,\n r = r1 - rc,\n D = x11 * y10 - x10 * y11,\n d = (dy < 0 ? -1 : 1) * (0, _math.sqrt)((0, _math.max)(0, r * r * d2 - D * D)),\n cx0 = (D * dy - dx * d) / d2,\n cy0 = (-D * dx - dy * d) / d2,\n cx1 = (D * dy + dx * d) / d2,\n cy1 = (-D * dx + dy * d) / d2,\n dx0 = cx0 - x00,\n dy0 = cy0 - y00,\n dx1 = cx1 - x00,\n dy1 = cy1 - y00; // Pick the closer of the two intersection points.\n // TODO Is there a faster way to determine which intersection to use?\n\n if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1;\n return {\n cx: cx0,\n cy: cy0,\n x01: -ox,\n y01: -oy,\n x11: cx0 * (r1 / r - 1),\n y11: cy0 * (r1 / r - 1)\n };\n}\n\nfunction _default() {\n var innerRadius = arcInnerRadius,\n outerRadius = arcOuterRadius,\n cornerRadius = (0, _constant.default)(0),\n padRadius = null,\n startAngle = arcStartAngle,\n endAngle = arcEndAngle,\n padAngle = arcPadAngle,\n context = null;\n\n function arc() {\n var buffer,\n r,\n r0 = +innerRadius.apply(this, arguments),\n r1 = +outerRadius.apply(this, arguments),\n a0 = startAngle.apply(this, arguments) - _math.halfPi,\n a1 = endAngle.apply(this, arguments) - _math.halfPi,\n da = (0, _math.abs)(a1 - a0),\n cw = a1 > a0;\n\n if (!context) context = buffer = (0, _index.path)(); // Ensure that the outer radius is always larger than the inner radius.\n\n if (r1 < r0) r = r1, r1 = r0, r0 = r; // Is it a point?\n\n if (!(r1 > _math.epsilon)) context.moveTo(0, 0); // Or is it a circle or annulus?\n else if (da > _math.tau - _math.epsilon) {\n context.moveTo(r1 * (0, _math.cos)(a0), r1 * (0, _math.sin)(a0));\n context.arc(0, 0, r1, a0, a1, !cw);\n\n if (r0 > _math.epsilon) {\n context.moveTo(r0 * (0, _math.cos)(a1), r0 * (0, _math.sin)(a1));\n context.arc(0, 0, r0, a1, a0, cw);\n }\n } // Or is it a circular or annular sector?\n else {\n var a01 = a0,\n a11 = a1,\n a00 = a0,\n a10 = a1,\n da0 = da,\n da1 = da,\n ap = padAngle.apply(this, arguments) / 2,\n rp = ap > _math.epsilon && (padRadius ? +padRadius.apply(this, arguments) : (0, _math.sqrt)(r0 * r0 + r1 * r1)),\n rc = (0, _math.min)((0, _math.abs)(r1 - r0) / 2, +cornerRadius.apply(this, arguments)),\n rc0 = rc,\n rc1 = rc,\n t0,\n t1; // Apply padding? Note that since r1 ≥ r0, da1 ≥ da0.\n\n if (rp > _math.epsilon) {\n var p0 = (0, _math.asin)(rp / r0 * (0, _math.sin)(ap)),\n p1 = (0, _math.asin)(rp / r1 * (0, _math.sin)(ap));\n if ((da0 -= p0 * 2) > _math.epsilon) p0 *= cw ? 1 : -1, a00 += p0, a10 -= p0;else da0 = 0, a00 = a10 = (a0 + a1) / 2;\n if ((da1 -= p1 * 2) > _math.epsilon) p1 *= cw ? 1 : -1, a01 += p1, a11 -= p1;else da1 = 0, a01 = a11 = (a0 + a1) / 2;\n }\n\n var x01 = r1 * (0, _math.cos)(a01),\n y01 = r1 * (0, _math.sin)(a01),\n x10 = r0 * (0, _math.cos)(a10),\n y10 = r0 * (0, _math.sin)(a10); // Apply rounded corners?\n\n if (rc > _math.epsilon) {\n var x11 = r1 * (0, _math.cos)(a11),\n y11 = r1 * (0, _math.sin)(a11),\n x00 = r0 * (0, _math.cos)(a00),\n y00 = r0 * (0, _math.sin)(a00),\n oc; // Restrict the corner radius according to the sector angle.\n\n if (da < _math.pi && (oc = intersect(x01, y01, x00, y00, x11, y11, x10, y10))) {\n var ax = x01 - oc[0],\n ay = y01 - oc[1],\n bx = x11 - oc[0],\n by = y11 - oc[1],\n kc = 1 / (0, _math.sin)((0, _math.acos)((ax * bx + ay * by) / ((0, _math.sqrt)(ax * ax + ay * ay) * (0, _math.sqrt)(bx * bx + by * by))) / 2),\n lc = (0, _math.sqrt)(oc[0] * oc[0] + oc[1] * oc[1]);\n rc0 = (0, _math.min)(rc, (r0 - lc) / (kc - 1));\n rc1 = (0, _math.min)(rc, (r1 - lc) / (kc + 1));\n }\n } // Is the sector collapsed to a line?\n\n\n if (!(da1 > _math.epsilon)) context.moveTo(x01, y01); // Does the sector’s outer ring have rounded corners?\n else if (rc1 > _math.epsilon) {\n t0 = cornerTangents(x00, y00, x01, y01, r1, rc1, cw);\n t1 = cornerTangents(x11, y11, x10, y10, r1, rc1, cw);\n context.moveTo(t0.cx + t0.x01, t0.cy + t0.y01); // Have the corners merged?\n\n if (rc1 < rc) context.arc(t0.cx, t0.cy, rc1, (0, _math.atan2)(t0.y01, t0.x01), (0, _math.atan2)(t1.y01, t1.x01), !cw); // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc1, (0, _math.atan2)(t0.y01, t0.x01), (0, _math.atan2)(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r1, (0, _math.atan2)(t0.cy + t0.y11, t0.cx + t0.x11), (0, _math.atan2)(t1.cy + t1.y11, t1.cx + t1.x11), !cw);\n context.arc(t1.cx, t1.cy, rc1, (0, _math.atan2)(t1.y11, t1.x11), (0, _math.atan2)(t1.y01, t1.x01), !cw);\n }\n } // Or is the outer ring just a circular arc?\n else context.moveTo(x01, y01), context.arc(0, 0, r1, a01, a11, !cw); // Is there no inner ring, and it’s a circular sector?\n // Or perhaps it’s an annular sector collapsed due to padding?\n\n if (!(r0 > _math.epsilon) || !(da0 > _math.epsilon)) context.lineTo(x10, y10); // Does the sector’s inner ring (or point) have rounded corners?\n else if (rc0 > _math.epsilon) {\n t0 = cornerTangents(x10, y10, x11, y11, r0, -rc0, cw);\n t1 = cornerTangents(x01, y01, x00, y00, r0, -rc0, cw);\n context.lineTo(t0.cx + t0.x01, t0.cy + t0.y01); // Have the corners merged?\n\n if (rc0 < rc) context.arc(t0.cx, t0.cy, rc0, (0, _math.atan2)(t0.y01, t0.x01), (0, _math.atan2)(t1.y01, t1.x01), !cw); // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc0, (0, _math.atan2)(t0.y01, t0.x01), (0, _math.atan2)(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r0, (0, _math.atan2)(t0.cy + t0.y11, t0.cx + t0.x11), (0, _math.atan2)(t1.cy + t1.y11, t1.cx + t1.x11), cw);\n context.arc(t1.cx, t1.cy, rc0, (0, _math.atan2)(t1.y11, t1.x11), (0, _math.atan2)(t1.y01, t1.x01), !cw);\n }\n } // Or is the inner ring just a circular arc?\n else context.arc(0, 0, r0, a10, a00, cw);\n }\n context.closePath();\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n arc.centroid = function () {\n var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2,\n a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - _math.pi / 2;\n return [(0, _math.cos)(a) * r, (0, _math.sin)(a) * r];\n };\n\n arc.innerRadius = function (_) {\n return arguments.length ? (innerRadius = typeof _ === \"function\" ? _ : (0, _constant.default)(+_), arc) : innerRadius;\n };\n\n arc.outerRadius = function (_) {\n return arguments.length ? (outerRadius = typeof _ === \"function\" ? _ : (0, _constant.default)(+_), arc) : outerRadius;\n };\n\n arc.cornerRadius = function (_) {\n return arguments.length ? (cornerRadius = typeof _ === \"function\" ? _ : (0, _constant.default)(+_), arc) : cornerRadius;\n };\n\n arc.padRadius = function (_) {\n return arguments.length ? (padRadius = _ == null ? null : typeof _ === \"function\" ? _ : (0, _constant.default)(+_), arc) : padRadius;\n };\n\n arc.startAngle = function (_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : (0, _constant.default)(+_), arc) : startAngle;\n };\n\n arc.endAngle = function (_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : (0, _constant.default)(+_), arc) : endAngle;\n };\n\n arc.padAngle = function (_) {\n return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : (0, _constant.default)(+_), arc) : padAngle;\n };\n\n arc.context = function (_) {\n return arguments.length ? (context = _ == null ? null : _, arc) : context;\n };\n\n return arc;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nconst pi = Math.PI,\n tau = 2 * pi,\n epsilon = 1e-6,\n tauEpsilon = tau - epsilon;\n\nfunction Path() {\n this._x0 = this._y0 = // start of current subpath\n this._x1 = this._y1 = null; // end of current subpath\n\n this._ = \"\";\n}\n\nfunction path() {\n return new Path();\n}\n\nPath.prototype = path.prototype = {\n constructor: Path,\n moveTo: function (x, y) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y);\n },\n closePath: function () {\n if (this._x1 !== null) {\n this._x1 = this._x0, this._y1 = this._y0;\n this._ += \"Z\";\n }\n },\n lineTo: function (x, y) {\n this._ += \"L\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n quadraticCurveTo: function (x1, y1, x, y) {\n this._ += \"Q\" + +x1 + \",\" + +y1 + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n bezierCurveTo: function (x1, y1, x2, y2, x, y) {\n this._ += \"C\" + +x1 + \",\" + +y1 + \",\" + +x2 + \",\" + +y2 + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n arcTo: function (x1, y1, x2, y2, r) {\n x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n var x0 = this._x1,\n y0 = this._y1,\n x21 = x2 - x1,\n y21 = y2 - y1,\n x01 = x0 - x1,\n y01 = y0 - y1,\n l01_2 = x01 * x01 + y01 * y01; // Is the radius negative? Error.\n\n if (r < 0) throw new Error(\"negative radius: \" + r); // Is this path empty? Move to (x1,y1).\n\n if (this._x1 === null) {\n this._ += \"M\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n } // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n else if (!(l01_2 > epsilon)) ; // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n // Equivalently, is (x1,y1) coincident with (x2,y2)?\n // Or, is the radius zero? Line to (x1,y1).\n else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n this._ += \"L\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n } // Otherwise, draw an arc!\n else {\n var x20 = x2 - x0,\n y20 = y2 - y0,\n l21_2 = x21 * x21 + y21 * y21,\n l20_2 = x20 * x20 + y20 * y20,\n l21 = Math.sqrt(l21_2),\n l01 = Math.sqrt(l01_2),\n l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n t01 = l / l01,\n t21 = l / l21; // If the start tangent is not coincident with (x0,y0), line to.\n\n if (Math.abs(t01 - 1) > epsilon) {\n this._ += \"L\" + (x1 + t01 * x01) + \",\" + (y1 + t01 * y01);\n }\n\n this._ += \"A\" + r + \",\" + r + \",0,0,\" + +(y01 * x20 > x01 * y20) + \",\" + (this._x1 = x1 + t21 * x21) + \",\" + (this._y1 = y1 + t21 * y21);\n }\n },\n arc: function (x, y, r, a0, a1, ccw) {\n x = +x, y = +y, r = +r, ccw = !!ccw;\n var dx = r * Math.cos(a0),\n dy = r * Math.sin(a0),\n x0 = x + dx,\n y0 = y + dy,\n cw = 1 ^ ccw,\n da = ccw ? a0 - a1 : a1 - a0; // Is the radius negative? Error.\n\n if (r < 0) throw new Error(\"negative radius: \" + r); // Is this path empty? Move to (x0,y0).\n\n if (this._x1 === null) {\n this._ += \"M\" + x0 + \",\" + y0;\n } // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n this._ += \"L\" + x0 + \",\" + y0;\n } // Is this arc empty? We’re done.\n\n\n if (!r) return; // Does the angle go the wrong way? Flip the direction.\n\n if (da < 0) da = da % tau + tau; // Is this a complete circle? Draw two arcs to complete the circle.\n\n if (da > tauEpsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (x - dx) + \",\" + (y - dy) + \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (this._x1 = x0) + \",\" + (this._y1 = y0);\n } // Is this arc non-empty? Draw an arc!\n else if (da > epsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,\" + +(da >= pi) + \",\" + cw + \",\" + (this._x1 = x + r * Math.cos(a1)) + \",\" + (this._y1 = y + r * Math.sin(a1));\n }\n },\n rect: function (x, y, w, h) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y) + \"h\" + +w + \"v\" + +h + \"h\" + -w + \"Z\";\n },\n toString: function () {\n return this._;\n }\n};\nvar _default = path;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = _default;\n\nvar _array = _interopRequireDefault(require(\"./array.js\"));\n\nvar _constant = _interopRequireDefault(require(\"./constant.js\"));\n\nvar _descending = _interopRequireDefault(require(\"./descending.js\"));\n\nvar _identity = _interopRequireDefault(require(\"./identity.js\"));\n\nvar _math = require(\"./math.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _default() {\n var value = _identity.default,\n sortValues = _descending.default,\n sort = null,\n startAngle = (0, _constant.default)(0),\n endAngle = (0, _constant.default)(_math.tau),\n padAngle = (0, _constant.default)(0);\n\n function pie(data) {\n var i,\n n = (data = (0, _array.default)(data)).length,\n j,\n k,\n sum = 0,\n index = new Array(n),\n arcs = new Array(n),\n a0 = +startAngle.apply(this, arguments),\n da = Math.min(_math.tau, Math.max(-_math.tau, endAngle.apply(this, arguments) - a0)),\n a1,\n p = Math.min(Math.abs(da) / n, padAngle.apply(this, arguments)),\n pa = p * (da < 0 ? -1 : 1),\n v;\n\n for (i = 0; i < n; ++i) {\n if ((v = arcs[index[i] = i] = +value(data[i], i, data)) > 0) {\n sum += v;\n }\n } // Optionally sort the arcs by previously-computed values or by data.\n\n\n if (sortValues != null) index.sort(function (i, j) {\n return sortValues(arcs[i], arcs[j]);\n });else if (sort != null) index.sort(function (i, j) {\n return sort(data[i], data[j]);\n }); // Compute the arcs! They are stored in the original data's order.\n\n for (i = 0, k = sum ? (da - n * pa) / sum : 0; i < n; ++i, a0 = a1) {\n j = index[i], v = arcs[j], a1 = a0 + (v > 0 ? v * k : 0) + pa, arcs[j] = {\n data: data[j],\n index: i,\n value: v,\n startAngle: a0,\n endAngle: a1,\n padAngle: p\n };\n }\n\n return arcs;\n }\n\n pie.value = function (_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : (0, _constant.default)(+_), pie) : value;\n };\n\n pie.sortValues = function (_) {\n return arguments.length ? (sortValues = _, sort = null, pie) : sortValues;\n };\n\n pie.sort = function (_) {\n return arguments.length ? (sort = _, sortValues = null, pie) : sort;\n };\n\n pie.startAngle = function (_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : (0, _constant.default)(+_), pie) : startAngle;\n };\n\n pie.endAngle = function (_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : (0, _constant.default)(+_), pie) : endAngle;\n };\n\n pie.padAngle = function (_) {\n return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : (0, _constant.default)(+_), pie) : padAngle;\n };\n\n return pie;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = _default;\n\nfunction _default(a, b) {\n return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = _default;\n\nfunction _default(d) {\n return d;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = _default;\n\nvar _radial = _interopRequireWildcard(require(\"./curve/radial.js\"));\n\nvar _area = _interopRequireDefault(require(\"./area.js\"));\n\nvar _lineRadial = require(\"./lineRadial.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _default() {\n var a = (0, _area.default)().curve(_radial.curveRadialLinear),\n c = a.curve,\n x0 = a.lineX0,\n x1 = a.lineX1,\n y0 = a.lineY0,\n y1 = a.lineY1;\n a.angle = a.x, delete a.x;\n a.startAngle = a.x0, delete a.x0;\n a.endAngle = a.x1, delete a.x1;\n a.radius = a.y, delete a.y;\n a.innerRadius = a.y0, delete a.y0;\n a.outerRadius = a.y1, delete a.y1;\n a.lineStartAngle = function () {\n return (0, _lineRadial.lineRadial)(x0());\n }, delete a.lineX0;\n a.lineEndAngle = function () {\n return (0, _lineRadial.lineRadial)(x1());\n }, delete a.lineX1;\n a.lineInnerRadius = function () {\n return (0, _lineRadial.lineRadial)(y0());\n }, delete a.lineY0;\n a.lineOuterRadius = function () {\n return (0, _lineRadial.lineRadial)(y1());\n }, delete a.lineY1;\n\n a.curve = function (_) {\n return arguments.length ? c((0, _radial.default)(_)) : c()._curve;\n };\n\n return a;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.link = link;\nexports.linkHorizontal = linkHorizontal;\nexports.linkRadial = linkRadial;\nexports.linkVertical = linkVertical;\n\nvar _index = require(\"../../../lib-vendor/d3-path/src/index.js\");\n\nvar _array = require(\"./array.js\");\n\nvar _constant = _interopRequireDefault(require(\"./constant.js\"));\n\nvar _bump = require(\"./curve/bump.js\");\n\nvar _point = require(\"./point.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction linkSource(d) {\n return d.source;\n}\n\nfunction linkTarget(d) {\n return d.target;\n}\n\nfunction link(curve) {\n let source = linkSource;\n let target = linkTarget;\n let x = _point.x;\n let y = _point.y;\n let context = null;\n let output = null;\n\n function link() {\n let buffer;\n\n const argv = _array.slice.call(arguments);\n\n const s = source.apply(this, argv);\n const t = target.apply(this, argv);\n if (context == null) output = curve(buffer = (0, _index.path)());\n output.lineStart();\n argv[0] = s, output.point(+x.apply(this, argv), +y.apply(this, argv));\n argv[0] = t, output.point(+x.apply(this, argv), +y.apply(this, argv));\n output.lineEnd();\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n link.source = function (_) {\n return arguments.length ? (source = _, link) : source;\n };\n\n link.target = function (_) {\n return arguments.length ? (target = _, link) : target;\n };\n\n link.x = function (_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : (0, _constant.default)(+_), link) : x;\n };\n\n link.y = function (_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : (0, _constant.default)(+_), link) : y;\n };\n\n link.context = function (_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), link) : context;\n };\n\n return link;\n}\n\nfunction linkHorizontal() {\n return link(_bump.bumpX);\n}\n\nfunction linkVertical() {\n return link(_bump.bumpY);\n}\n\nfunction linkRadial() {\n const l = link(_bump.bumpRadial);\n l.angle = l.x, delete l.x;\n l.radius = l.y, delete l.y;\n return l;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = Symbol;\nexports.symbolsStroke = exports.symbolsFill = void 0;\n\nvar _index = require(\"../../../lib-vendor/d3-path/src/index.js\");\n\nvar _constant = _interopRequireDefault(require(\"./constant.js\"));\n\nvar _asterisk = _interopRequireDefault(require(\"./symbol/asterisk.js\"));\n\nvar _circle = _interopRequireDefault(require(\"./symbol/circle.js\"));\n\nvar _cross = _interopRequireDefault(require(\"./symbol/cross.js\"));\n\nvar _diamond = _interopRequireDefault(require(\"./symbol/diamond.js\"));\n\nvar _diamond2 = _interopRequireDefault(require(\"./symbol/diamond2.js\"));\n\nvar _plus = _interopRequireDefault(require(\"./symbol/plus.js\"));\n\nvar _square = _interopRequireDefault(require(\"./symbol/square.js\"));\n\nvar _square2 = _interopRequireDefault(require(\"./symbol/square2.js\"));\n\nvar _star = _interopRequireDefault(require(\"./symbol/star.js\"));\n\nvar _triangle = _interopRequireDefault(require(\"./symbol/triangle.js\"));\n\nvar _triangle2 = _interopRequireDefault(require(\"./symbol/triangle2.js\"));\n\nvar _wye = _interopRequireDefault(require(\"./symbol/wye.js\"));\n\nvar _x = _interopRequireDefault(require(\"./symbol/x.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// These symbols are designed to be filled.\nconst symbolsFill = [_circle.default, _cross.default, _diamond.default, _square.default, _star.default, _triangle.default, _wye.default]; // These symbols are designed to be stroked (with a width of 1.5px and round caps).\n\nexports.symbolsFill = symbolsFill;\nconst symbolsStroke = [_circle.default, _plus.default, _x.default, _triangle2.default, _asterisk.default, _square2.default, _diamond2.default];\nexports.symbolsStroke = symbolsStroke;\n\nfunction Symbol(type, size) {\n let context = null;\n type = typeof type === \"function\" ? type : (0, _constant.default)(type || _circle.default);\n size = typeof size === \"function\" ? size : (0, _constant.default)(size === undefined ? 64 : +size);\n\n function symbol() {\n let buffer;\n if (!context) context = buffer = (0, _index.path)();\n type.apply(this, arguments).draw(context, +size.apply(this, arguments));\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n symbol.type = function (_) {\n return arguments.length ? (type = typeof _ === \"function\" ? _ : (0, _constant.default)(_), symbol) : type;\n };\n\n symbol.size = function (_) {\n return arguments.length ? (size = typeof _ === \"function\" ? _ : (0, _constant.default)(+_), symbol) : size;\n };\n\n symbol.context = function (_) {\n return arguments.length ? (context = _ == null ? null : _, symbol) : context;\n };\n\n return symbol;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = _default;\n\nvar _noop = _interopRequireDefault(require(\"../noop.js\"));\n\nvar _basis = require(\"./basis.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction BasisClosed(context) {\n this._context = context;\n}\n\nBasisClosed.prototype = {\n areaStart: _noop.default,\n areaEnd: _noop.default,\n lineStart: function () {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = NaN;\n this._point = 0;\n },\n lineEnd: function () {\n switch (this._point) {\n case 1:\n {\n this._context.moveTo(this._x2, this._y2);\n\n this._context.closePath();\n\n break;\n }\n\n case 2:\n {\n this._context.moveTo((this._x2 + 2 * this._x3) / 3, (this._y2 + 2 * this._y3) / 3);\n\n this._context.lineTo((this._x3 + 2 * this._x2) / 3, (this._y3 + 2 * this._y2) / 3);\n\n this._context.closePath();\n\n break;\n }\n\n case 3:\n {\n this.point(this._x2, this._y2);\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n break;\n }\n }\n },\n point: function (x, y) {\n x = +x, y = +y;\n\n switch (this._point) {\n case 0:\n this._point = 1;\n this._x2 = x, this._y2 = y;\n break;\n\n case 1:\n this._point = 2;\n this._x3 = x, this._y3 = y;\n break;\n\n case 2:\n this._point = 3;\n this._x4 = x, this._y4 = y;\n\n this._context.moveTo((this._x0 + 4 * this._x1 + x) / 6, (this._y0 + 4 * this._y1 + y) / 6);\n\n break;\n\n default:\n (0, _basis.point)(this, x, y);\n break;\n }\n\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nfunction _default(context) {\n return new BasisClosed(context);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = _default;\n\nvar _basis = require(\"./basis.js\");\n\nfunction BasisOpen(context) {\n this._context = context;\n}\n\nBasisOpen.prototype = {\n areaStart: function () {\n this._line = 0;\n },\n areaEnd: function () {\n this._line = NaN;\n },\n lineStart: function () {\n this._x0 = this._x1 = this._y0 = this._y1 = NaN;\n this._point = 0;\n },\n lineEnd: function () {\n if (this._line || this._line !== 0 && this._point === 3) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function (x, y) {\n x = +x, y = +y;\n\n switch (this._point) {\n case 0:\n this._point = 1;\n break;\n\n case 1:\n this._point = 2;\n break;\n\n case 2:\n this._point = 3;\n var x0 = (this._x0 + 4 * this._x1 + x) / 6,\n y0 = (this._y0 + 4 * this._y1 + y) / 6;\n this._line ? this._context.lineTo(x0, y0) : this._context.moveTo(x0, y0);\n break;\n\n case 3:\n this._point = 4;\n // falls through\n\n default:\n (0, _basis.point)(this, x, y);\n break;\n }\n\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nfunction _default(context) {\n return new BasisOpen(context);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _basis = require(\"./basis.js\");\n\nfunction Bundle(context, beta) {\n this._basis = new _basis.Basis(context);\n this._beta = beta;\n}\n\nBundle.prototype = {\n lineStart: function () {\n this._x = [];\n this._y = [];\n\n this._basis.lineStart();\n },\n lineEnd: function () {\n var x = this._x,\n y = this._y,\n j = x.length - 1;\n\n if (j > 0) {\n var x0 = x[0],\n y0 = y[0],\n dx = x[j] - x0,\n dy = y[j] - y0,\n i = -1,\n t;\n\n while (++i <= j) {\n t = i / j;\n\n this._basis.point(this._beta * x[i] + (1 - this._beta) * (x0 + t * dx), this._beta * y[i] + (1 - this._beta) * (y0 + t * dy));\n }\n }\n\n this._x = this._y = null;\n\n this._basis.lineEnd();\n },\n point: function (x, y) {\n this._x.push(+x);\n\n this._y.push(+y);\n }\n};\n\nvar _default = function custom(beta) {\n function bundle(context) {\n return beta === 1 ? new _basis.Basis(context) : new Bundle(context, beta);\n }\n\n bundle.beta = function (beta) {\n return custom(+beta);\n };\n\n return bundle;\n}(0.85);\n\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _cardinalClosed = require(\"./cardinalClosed.js\");\n\nvar _noop = _interopRequireDefault(require(\"../noop.js\"));\n\nvar _catmullRom = require(\"./catmullRom.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction CatmullRomClosed(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\n\nCatmullRomClosed.prototype = {\n areaStart: _noop.default,\n areaEnd: _noop.default,\n lineStart: function () {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 = this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN;\n this._l01_a = this._l12_a = this._l23_a = this._l01_2a = this._l12_2a = this._l23_2a = this._point = 0;\n },\n lineEnd: function () {\n switch (this._point) {\n case 1:\n {\n this._context.moveTo(this._x3, this._y3);\n\n this._context.closePath();\n\n break;\n }\n\n case 2:\n {\n this._context.lineTo(this._x3, this._y3);\n\n this._context.closePath();\n\n break;\n }\n\n case 3:\n {\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n this.point(this._x5, this._y5);\n break;\n }\n }\n },\n point: function (x, y) {\n x = +x, y = +y;\n\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n\n switch (this._point) {\n case 0:\n this._point = 1;\n this._x3 = x, this._y3 = y;\n break;\n\n case 1:\n this._point = 2;\n\n this._context.moveTo(this._x4 = x, this._y4 = y);\n\n break;\n\n case 2:\n this._point = 3;\n this._x5 = x, this._y5 = y;\n break;\n\n default:\n (0, _catmullRom.point)(this, x, y);\n break;\n }\n\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nvar _default = function custom(alpha) {\n function catmullRom(context) {\n return alpha ? new CatmullRomClosed(context, alpha) : new _cardinalClosed.CardinalClosed(context, 0);\n }\n\n catmullRom.alpha = function (alpha) {\n return custom(+alpha);\n };\n\n return catmullRom;\n}(0.5);\n\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _cardinalOpen = require(\"./cardinalOpen.js\");\n\nvar _catmullRom = require(\"./catmullRom.js\");\n\nfunction CatmullRomOpen(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\n\nCatmullRomOpen.prototype = {\n areaStart: function () {\n this._line = 0;\n },\n areaEnd: function () {\n this._line = NaN;\n },\n lineStart: function () {\n this._x0 = this._x1 = this._x2 = this._y0 = this._y1 = this._y2 = NaN;\n this._l01_a = this._l12_a = this._l23_a = this._l01_2a = this._l12_2a = this._l23_2a = this._point = 0;\n },\n lineEnd: function () {\n if (this._line || this._line !== 0 && this._point === 3) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function (x, y) {\n x = +x, y = +y;\n\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n\n switch (this._point) {\n case 0:\n this._point = 1;\n break;\n\n case 1:\n this._point = 2;\n break;\n\n case 2:\n this._point = 3;\n this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2);\n break;\n\n case 3:\n this._point = 4;\n // falls through\n\n default:\n (0, _catmullRom.point)(this, x, y);\n break;\n }\n\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nvar _default = function custom(alpha) {\n function catmullRom(context) {\n return alpha ? new CatmullRomOpen(context, alpha) : new _cardinalOpen.CardinalOpen(context, 0);\n }\n\n catmullRom.alpha = function (alpha) {\n return custom(+alpha);\n };\n\n return catmullRom;\n}(0.5);\n\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = _default;\n\nvar _noop = _interopRequireDefault(require(\"../noop.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction LinearClosed(context) {\n this._context = context;\n}\n\nLinearClosed.prototype = {\n areaStart: _noop.default,\n areaEnd: _noop.default,\n lineStart: function () {\n this._point = 0;\n },\n lineEnd: function () {\n if (this._point) this._context.closePath();\n },\n point: function (x, y) {\n x = +x, y = +y;\n if (this._point) this._context.lineTo(x, y);else this._point = 1, this._context.moveTo(x, y);\n }\n};\n\nfunction _default(context) {\n return new LinearClosed(context);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.monotoneX = monotoneX;\nexports.monotoneY = monotoneY;\n\nfunction sign(x) {\n return x < 0 ? -1 : 1;\n} // Calculate the slopes of the tangents (Hermite-type interpolation) based on\n// the following paper: Steffen, M. 1990. A Simple Method for Monotonic\n// Interpolation in One Dimension. Astronomy and Astrophysics, Vol. 239, NO.\n// NOV(II), P. 443, 1990.\n\n\nfunction slope3(that, x2, y2) {\n var h0 = that._x1 - that._x0,\n h1 = x2 - that._x1,\n s0 = (that._y1 - that._y0) / (h0 || h1 < 0 && -0),\n s1 = (y2 - that._y1) / (h1 || h0 < 0 && -0),\n p = (s0 * h1 + s1 * h0) / (h0 + h1);\n return (sign(s0) + sign(s1)) * Math.min(Math.abs(s0), Math.abs(s1), 0.5 * Math.abs(p)) || 0;\n} // Calculate a one-sided slope.\n\n\nfunction slope2(that, t) {\n var h = that._x1 - that._x0;\n return h ? (3 * (that._y1 - that._y0) / h - t) / 2 : t;\n} // According to https://en.wikipedia.org/wiki/Cubic_Hermite_spline#Representations\n// \"you can express cubic Hermite interpolation in terms of cubic Bézier curves\n// with respect to the four values p0, p0 + m0 / 3, p1 - m1 / 3, p1\".\n\n\nfunction point(that, t0, t1) {\n var x0 = that._x0,\n y0 = that._y0,\n x1 = that._x1,\n y1 = that._y1,\n dx = (x1 - x0) / 3;\n\n that._context.bezierCurveTo(x0 + dx, y0 + dx * t0, x1 - dx, y1 - dx * t1, x1, y1);\n}\n\nfunction MonotoneX(context) {\n this._context = context;\n}\n\nMonotoneX.prototype = {\n areaStart: function () {\n this._line = 0;\n },\n areaEnd: function () {\n this._line = NaN;\n },\n lineStart: function () {\n this._x0 = this._x1 = this._y0 = this._y1 = this._t0 = NaN;\n this._point = 0;\n },\n lineEnd: function () {\n switch (this._point) {\n case 2:\n this._context.lineTo(this._x1, this._y1);\n\n break;\n\n case 3:\n point(this, this._t0, slope2(this, this._t0));\n break;\n }\n\n if (this._line || this._line !== 0 && this._point === 1) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function (x, y) {\n var t1 = NaN;\n x = +x, y = +y;\n if (x === this._x1 && y === this._y1) return; // Ignore coincident points.\n\n switch (this._point) {\n case 0:\n this._point = 1;\n this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y);\n break;\n\n case 1:\n this._point = 2;\n break;\n\n case 2:\n this._point = 3;\n point(this, slope2(this, t1 = slope3(this, x, y)), t1);\n break;\n\n default:\n point(this, this._t0, t1 = slope3(this, x, y));\n break;\n }\n\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n this._t0 = t1;\n }\n};\n\nfunction MonotoneY(context) {\n this._context = new ReflectContext(context);\n}\n\n(MonotoneY.prototype = Object.create(MonotoneX.prototype)).point = function (x, y) {\n MonotoneX.prototype.point.call(this, y, x);\n};\n\nfunction ReflectContext(context) {\n this._context = context;\n}\n\nReflectContext.prototype = {\n moveTo: function (x, y) {\n this._context.moveTo(y, x);\n },\n closePath: function () {\n this._context.closePath();\n },\n lineTo: function (x, y) {\n this._context.lineTo(y, x);\n },\n bezierCurveTo: function (x1, y1, x2, y2, x, y) {\n this._context.bezierCurveTo(y1, x1, y2, x2, y, x);\n }\n};\n\nfunction monotoneX(context) {\n return new MonotoneX(context);\n}\n\nfunction monotoneY(context) {\n return new MonotoneY(context);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = _default;\n\nfunction Natural(context) {\n this._context = context;\n}\n\nNatural.prototype = {\n areaStart: function () {\n this._line = 0;\n },\n areaEnd: function () {\n this._line = NaN;\n },\n lineStart: function () {\n this._x = [];\n this._y = [];\n },\n lineEnd: function () {\n var x = this._x,\n y = this._y,\n n = x.length;\n\n if (n) {\n this._line ? this._context.lineTo(x[0], y[0]) : this._context.moveTo(x[0], y[0]);\n\n if (n === 2) {\n this._context.lineTo(x[1], y[1]);\n } else {\n var px = controlPoints(x),\n py = controlPoints(y);\n\n for (var i0 = 0, i1 = 1; i1 < n; ++i0, ++i1) {\n this._context.bezierCurveTo(px[0][i0], py[0][i0], px[1][i0], py[1][i0], x[i1], y[i1]);\n }\n }\n }\n\n if (this._line || this._line !== 0 && n === 1) this._context.closePath();\n this._line = 1 - this._line;\n this._x = this._y = null;\n },\n point: function (x, y) {\n this._x.push(+x);\n\n this._y.push(+y);\n }\n}; // See https://www.particleincell.com/2012/bezier-splines/ for derivation.\n\nfunction controlPoints(x) {\n var i,\n n = x.length - 1,\n m,\n a = new Array(n),\n b = new Array(n),\n r = new Array(n);\n a[0] = 0, b[0] = 2, r[0] = x[0] + 2 * x[1];\n\n for (i = 1; i < n - 1; ++i) a[i] = 1, b[i] = 4, r[i] = 4 * x[i] + 2 * x[i + 1];\n\n a[n - 1] = 2, b[n - 1] = 7, r[n - 1] = 8 * x[n - 1] + x[n];\n\n for (i = 1; i < n; ++i) m = a[i] / b[i - 1], b[i] -= m, r[i] -= m * r[i - 1];\n\n a[n - 1] = r[n - 1] / b[n - 1];\n\n for (i = n - 2; i >= 0; --i) a[i] = (r[i] - a[i + 1]) / b[i];\n\n b[n - 1] = (x[n] + a[n - 1]) / 2;\n\n for (i = 0; i < n - 1; ++i) b[i] = 2 * x[i + 1] - a[i + 1];\n\n return [a, b];\n}\n\nfunction _default(context) {\n return new Natural(context);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = _default;\nexports.stepAfter = stepAfter;\nexports.stepBefore = stepBefore;\n\nfunction Step(context, t) {\n this._context = context;\n this._t = t;\n}\n\nStep.prototype = {\n areaStart: function () {\n this._line = 0;\n },\n areaEnd: function () {\n this._line = NaN;\n },\n lineStart: function () {\n this._x = this._y = NaN;\n this._point = 0;\n },\n lineEnd: function () {\n if (0 < this._t && this._t < 1 && this._point === 2) this._context.lineTo(this._x, this._y);\n if (this._line || this._line !== 0 && this._point === 1) this._context.closePath();\n if (this._line >= 0) this._t = 1 - this._t, this._line = 1 - this._line;\n },\n point: function (x, y) {\n x = +x, y = +y;\n\n switch (this._point) {\n case 0:\n this._point = 1;\n this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y);\n break;\n\n case 1:\n this._point = 2;\n // falls through\n\n default:\n {\n if (this._t <= 0) {\n this._context.lineTo(this._x, y);\n\n this._context.lineTo(x, y);\n } else {\n var x1 = this._x * (1 - this._t) + x * this._t;\n\n this._context.lineTo(x1, this._y);\n\n this._context.lineTo(x1, y);\n }\n\n break;\n }\n }\n\n this._x = x, this._y = y;\n }\n};\n\nfunction _default(context) {\n return new Step(context, 0.5);\n}\n\nfunction stepBefore(context) {\n return new Step(context, 0);\n}\n\nfunction stepAfter(context) {\n return new Step(context, 1);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = _default;\n\nvar _array = _interopRequireDefault(require(\"./array.js\"));\n\nvar _constant = _interopRequireDefault(require(\"./constant.js\"));\n\nvar _none = _interopRequireDefault(require(\"./offset/none.js\"));\n\nvar _none2 = _interopRequireDefault(require(\"./order/none.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction stackValue(d, key) {\n return d[key];\n}\n\nfunction stackSeries(key) {\n const series = [];\n series.key = key;\n return series;\n}\n\nfunction _default() {\n var keys = (0, _constant.default)([]),\n order = _none2.default,\n offset = _none.default,\n value = stackValue;\n\n function stack(data) {\n var sz = Array.from(keys.apply(this, arguments), stackSeries),\n i,\n n = sz.length,\n j = -1,\n oz;\n\n for (const d of data) {\n for (i = 0, ++j; i < n; ++i) {\n (sz[i][j] = [0, +value(d, sz[i].key, j, data)]).data = d;\n }\n }\n\n for (i = 0, oz = (0, _array.default)(order(sz)); i < n; ++i) {\n sz[oz[i]].index = i;\n }\n\n offset(sz, oz);\n return sz;\n }\n\n stack.keys = function (_) {\n return arguments.length ? (keys = typeof _ === \"function\" ? _ : (0, _constant.default)(Array.from(_)), stack) : keys;\n };\n\n stack.value = function (_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : (0, _constant.default)(+_), stack) : value;\n };\n\n stack.order = function (_) {\n return arguments.length ? (order = _ == null ? _none2.default : typeof _ === \"function\" ? _ : (0, _constant.default)(Array.from(_)), stack) : order;\n };\n\n stack.offset = function (_) {\n return arguments.length ? (offset = _ == null ? _none.default : _, stack) : offset;\n };\n\n return stack;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = _default;\n\nvar _none = _interopRequireDefault(require(\"./none.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _default(series, order) {\n if (!((n = series.length) > 0)) return;\n\n for (var i, n, j = 0, m = series[0].length, y; j < m; ++j) {\n for (y = i = 0; i < n; ++i) y += series[i][j][1] || 0;\n\n if (y) for (i = 0; i < n; ++i) series[i][j][1] /= y;\n }\n\n (0, _none.default)(series, order);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = _default;\n\nfunction _default(series, order) {\n if (!((n = series.length) > 0)) return;\n\n for (var i, j = 0, d, dy, yp, yn, n, m = series[order[0]].length; j < m; ++j) {\n for (yp = yn = 0, i = 0; i < n; ++i) {\n if ((dy = (d = series[order[i]][j])[1] - d[0]) > 0) {\n d[0] = yp, d[1] = yp += dy;\n } else if (dy < 0) {\n d[1] = yn, d[0] = yn += dy;\n } else {\n d[0] = 0, d[1] = dy;\n }\n }\n }\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = _default;\n\nvar _none = _interopRequireDefault(require(\"./none.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _default(series, order) {\n if (!((n = series.length) > 0)) return;\n\n for (var j = 0, s0 = series[order[0]], n, m = s0.length; j < m; ++j) {\n for (var i = 0, y = 0; i < n; ++i) y += series[i][j][1] || 0;\n\n s0[j][1] += s0[j][0] = -y / 2;\n }\n\n (0, _none.default)(series, order);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = _default;\n\nvar _none = _interopRequireDefault(require(\"./none.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _default(series, order) {\n if (!((n = series.length) > 0) || !((m = (s0 = series[order[0]]).length) > 0)) return;\n\n for (var y = 0, j = 1, s0, m, n; j < m; ++j) {\n for (var i = 0, s1 = 0, s2 = 0; i < n; ++i) {\n var si = series[order[i]],\n sij0 = si[j][1] || 0,\n sij1 = si[j - 1][1] || 0,\n s3 = (sij0 - sij1) / 2;\n\n for (var k = 0; k < i; ++k) {\n var sk = series[order[k]],\n skj0 = sk[j][1] || 0,\n skj1 = sk[j - 1][1] || 0;\n s3 += skj0 - skj1;\n }\n\n s1 += sij0, s2 += s3 * sij0;\n }\n\n s0[j - 1][1] += s0[j - 1][0] = y;\n if (s1) y -= s2 / s1;\n }\n\n s0[j - 1][1] += s0[j - 1][0] = y;\n (0, _none.default)(series, order);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = _default;\n\nvar _ascending = _interopRequireDefault(require(\"./ascending.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _default(series) {\n return (0, _ascending.default)(series).reverse();\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = _default;\n\nvar _appearance = _interopRequireDefault(require(\"./appearance.js\"));\n\nvar _ascending = require(\"./ascending.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _default(series) {\n var n = series.length,\n i,\n j,\n sums = series.map(_ascending.sum),\n order = (0, _appearance.default)(series),\n top = 0,\n bottom = 0,\n tops = [],\n bottoms = [];\n\n for (i = 0; i < n; ++i) {\n j = order[i];\n\n if (top < bottom) {\n top += sums[j];\n tops.push(j);\n } else {\n bottom += sums[j];\n bottoms.push(j);\n }\n }\n\n return bottoms.reverse().concat(tops);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = _default;\n\nvar _none = _interopRequireDefault(require(\"./none.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _default(series) {\n return (0, _none.default)(series).reverse();\n}","var baseRange = require('./_baseRange'),\n isIterateeCall = require('./_isIterateeCall'),\n toFinite = require('./toFinite');\n\n/**\n * Creates a `_.range` or `_.rangeRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new range function.\n */\nfunction createRange(fromRight) {\n return function(start, end, step) {\n if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n end = step = undefined;\n }\n // Ensure the sign of `-0` is preserved.\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n return baseRange(start, end, step, fromRight);\n };\n}\n\nmodule.exports = createRange;\n","/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeCeil = Math.ceil,\n nativeMax = Math.max;\n\n/**\n * The base implementation of `_.range` and `_.rangeRight` which doesn't\n * coerce arguments.\n *\n * @private\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @param {number} step The value to increment or decrement by.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the range of numbers.\n */\nfunction baseRange(start, end, step, fromRight) {\n var index = -1,\n length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n result = Array(length);\n\n while (length--) {\n result[fromRight ? length : ++index] = start;\n start += step;\n }\n return result;\n}\n\nmodule.exports = baseRange;\n","var trimmedEndIndex = require('./_trimmedEndIndex');\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n}\n\nmodule.exports = baseTrim;\n","/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n}\n\nmodule.exports = trimmedEndIndex;\n","var arrayMap = require('./_arrayMap'),\n baseGet = require('./_baseGet'),\n baseIteratee = require('./_baseIteratee'),\n baseMap = require('./_baseMap'),\n baseSortBy = require('./_baseSortBy'),\n baseUnary = require('./_baseUnary'),\n compareMultiple = require('./_compareMultiple'),\n identity = require('./identity'),\n isArray = require('./isArray');\n\n/**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\nfunction baseOrderBy(collection, iteratees, orders) {\n if (iteratees.length) {\n iteratees = arrayMap(iteratees, function(iteratee) {\n if (isArray(iteratee)) {\n return function(value) {\n return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee);\n }\n }\n return iteratee;\n });\n } else {\n iteratees = [identity];\n }\n\n var index = -1;\n iteratees = arrayMap(iteratees, baseUnary(baseIteratee));\n\n var result = baseMap(collection, function(value, key, collection) {\n var criteria = arrayMap(iteratees, function(iteratee) {\n return iteratee(value);\n });\n return { 'criteria': criteria, 'index': ++index, 'value': value };\n });\n\n return baseSortBy(result, function(object, other) {\n return compareMultiple(object, other, orders);\n });\n}\n\nmodule.exports = baseOrderBy;\n","/**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\nfunction baseSortBy(array, comparer) {\n var length = array.length;\n\n array.sort(comparer);\n while (length--) {\n array[length] = array[length].value;\n }\n return array;\n}\n\nmodule.exports = baseSortBy;\n","var compareAscending = require('./_compareAscending');\n\n/**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\nfunction compareMultiple(object, other, orders) {\n var index = -1,\n objCriteria = object.criteria,\n othCriteria = other.criteria,\n length = objCriteria.length,\n ordersLength = orders.length;\n\n while (++index < length) {\n var result = compareAscending(objCriteria[index], othCriteria[index]);\n if (result) {\n if (index >= ordersLength) {\n return result;\n }\n var order = orders[index];\n return result * (order == 'desc' ? -1 : 1);\n }\n }\n // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n // that causes it, under certain circumstances, to provide the same value for\n // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n // for more details.\n //\n // This also ensures a stable sort in V8 and other engines.\n // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n return object.index - other.index;\n}\n\nmodule.exports = compareMultiple;\n","var isSymbol = require('./isSymbol');\n\n/**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\nfunction compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined,\n valIsNull = value === null,\n valIsReflexive = value === value,\n valIsSymbol = isSymbol(value);\n\n var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = isSymbol(other);\n\n if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n (valIsNull && othIsDefined && othIsReflexive) ||\n (!valIsDefined && othIsReflexive) ||\n !valIsReflexive) {\n return 1;\n }\n if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n (othIsNull && valIsDefined && valIsReflexive) ||\n (!othIsDefined && valIsReflexive) ||\n !othIsReflexive) {\n return -1;\n }\n }\n return 0;\n}\n\nmodule.exports = compareAscending;\n","var isObject = require('./isObject'),\n now = require('./now'),\n toNumber = require('./toNumber');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\nmodule.exports = debounce;\n","var 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","\n// `victory-vendor/d3-scale` (CommonJS)\n// See upstream license: https://github.com/d3/d3-scale/blob/main/LICENSE\n//\n// Our CommonJS package relies on transpiled vendor files in `lib-vendor/d3-scale`\nmodule.exports = require(\"../lib-vendor/d3-scale/src/index.js\");\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"scaleBand\", {\n enumerable: true,\n get: function () {\n return _band.default;\n }\n});\nObject.defineProperty(exports, \"scaleDiverging\", {\n enumerable: true,\n get: function () {\n return _diverging.default;\n }\n});\nObject.defineProperty(exports, \"scaleDivergingLog\", {\n enumerable: true,\n get: function () {\n return _diverging.divergingLog;\n }\n});\nObject.defineProperty(exports, \"scaleDivergingPow\", {\n enumerable: true,\n get: function () {\n return _diverging.divergingPow;\n }\n});\nObject.defineProperty(exports, \"scaleDivergingSqrt\", {\n enumerable: true,\n get: function () {\n return _diverging.divergingSqrt;\n }\n});\nObject.defineProperty(exports, \"scaleDivergingSymlog\", {\n enumerable: true,\n get: function () {\n return _diverging.divergingSymlog;\n }\n});\nObject.defineProperty(exports, \"scaleIdentity\", {\n enumerable: true,\n get: function () {\n return _identity.default;\n }\n});\nObject.defineProperty(exports, \"scaleImplicit\", {\n enumerable: true,\n get: function () {\n return _ordinal.implicit;\n }\n});\nObject.defineProperty(exports, \"scaleLinear\", {\n enumerable: true,\n get: function () {\n return _linear.default;\n }\n});\nObject.defineProperty(exports, \"scaleLog\", {\n enumerable: true,\n get: function () {\n return _log.default;\n }\n});\nObject.defineProperty(exports, \"scaleOrdinal\", {\n enumerable: true,\n get: function () {\n return _ordinal.default;\n }\n});\nObject.defineProperty(exports, \"scalePoint\", {\n enumerable: true,\n get: function () {\n return _band.point;\n }\n});\nObject.defineProperty(exports, \"scalePow\", {\n enumerable: true,\n get: function () {\n return _pow.default;\n }\n});\nObject.defineProperty(exports, \"scaleQuantile\", {\n enumerable: true,\n get: function () {\n return _quantile.default;\n }\n});\nObject.defineProperty(exports, \"scaleQuantize\", {\n enumerable: true,\n get: function () {\n return _quantize.default;\n }\n});\nObject.defineProperty(exports, \"scaleRadial\", {\n enumerable: true,\n get: function () {\n return _radial.default;\n }\n});\nObject.defineProperty(exports, \"scaleSequential\", {\n enumerable: true,\n get: function () {\n return _sequential.default;\n }\n});\nObject.defineProperty(exports, \"scaleSequentialLog\", {\n enumerable: true,\n get: function () {\n return _sequential.sequentialLog;\n }\n});\nObject.defineProperty(exports, \"scaleSequentialPow\", {\n enumerable: true,\n get: function () {\n return _sequential.sequentialPow;\n }\n});\nObject.defineProperty(exports, \"scaleSequentialQuantile\", {\n enumerable: true,\n get: function () {\n return _sequentialQuantile.default;\n }\n});\nObject.defineProperty(exports, \"scaleSequentialSqrt\", {\n enumerable: true,\n get: function () {\n return _sequential.sequentialSqrt;\n }\n});\nObject.defineProperty(exports, \"scaleSequentialSymlog\", {\n enumerable: true,\n get: function () {\n return _sequential.sequentialSymlog;\n }\n});\nObject.defineProperty(exports, \"scaleSqrt\", {\n enumerable: true,\n get: function () {\n return _pow.sqrt;\n }\n});\nObject.defineProperty(exports, \"scaleSymlog\", {\n enumerable: true,\n get: function () {\n return _symlog.default;\n }\n});\nObject.defineProperty(exports, \"scaleThreshold\", {\n enumerable: true,\n get: function () {\n return _threshold.default;\n }\n});\nObject.defineProperty(exports, \"scaleTime\", {\n enumerable: true,\n get: function () {\n return _time.default;\n }\n});\nObject.defineProperty(exports, \"scaleUtc\", {\n enumerable: true,\n get: function () {\n return _utcTime.default;\n }\n});\nObject.defineProperty(exports, \"tickFormat\", {\n enumerable: true,\n get: function () {\n return _tickFormat.default;\n }\n});\n\nvar _band = _interopRequireWildcard(require(\"./band.js\"));\n\nvar _identity = _interopRequireDefault(require(\"./identity.js\"));\n\nvar _linear = _interopRequireDefault(require(\"./linear.js\"));\n\nvar _log = _interopRequireDefault(require(\"./log.js\"));\n\nvar _symlog = _interopRequireDefault(require(\"./symlog.js\"));\n\nvar _ordinal = _interopRequireWildcard(require(\"./ordinal.js\"));\n\nvar _pow = _interopRequireWildcard(require(\"./pow.js\"));\n\nvar _radial = _interopRequireDefault(require(\"./radial.js\"));\n\nvar _quantile = _interopRequireDefault(require(\"./quantile.js\"));\n\nvar _quantize = _interopRequireDefault(require(\"./quantize.js\"));\n\nvar _threshold = _interopRequireDefault(require(\"./threshold.js\"));\n\nvar _time = _interopRequireDefault(require(\"./time.js\"));\n\nvar _utcTime = _interopRequireDefault(require(\"./utcTime.js\"));\n\nvar _sequential = _interopRequireWildcard(require(\"./sequential.js\"));\n\nvar _sequentialQuantile = _interopRequireDefault(require(\"./sequentialQuantile.js\"));\n\nvar _diverging = _interopRequireWildcard(require(\"./diverging.js\"));\n\nvar _tickFormat = _interopRequireDefault(require(\"./tickFormat.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = band;\nexports.point = point;\n\nvar _index = require(\"../../../lib-vendor/d3-array/src/index.js\");\n\nvar _init = require(\"./init.js\");\n\nvar _ordinal = _interopRequireDefault(require(\"./ordinal.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction band() {\n var scale = (0, _ordinal.default)().unknown(undefined),\n domain = scale.domain,\n ordinalRange = scale.range,\n r0 = 0,\n r1 = 1,\n step,\n bandwidth,\n round = false,\n paddingInner = 0,\n paddingOuter = 0,\n align = 0.5;\n delete scale.unknown;\n\n function rescale() {\n var n = domain().length,\n reverse = r1 < r0,\n start = reverse ? r1 : r0,\n stop = reverse ? r0 : r1;\n step = (stop - start) / Math.max(1, n - paddingInner + paddingOuter * 2);\n if (round) step = Math.floor(step);\n start += (stop - start - step * (n - paddingInner)) * align;\n bandwidth = step * (1 - paddingInner);\n if (round) start = Math.round(start), bandwidth = Math.round(bandwidth);\n var values = (0, _index.range)(n).map(function (i) {\n return start + step * i;\n });\n return ordinalRange(reverse ? values.reverse() : values);\n }\n\n scale.domain = function (_) {\n return arguments.length ? (domain(_), rescale()) : domain();\n };\n\n scale.range = function (_) {\n return arguments.length ? ([r0, r1] = _, r0 = +r0, r1 = +r1, rescale()) : [r0, r1];\n };\n\n scale.rangeRound = function (_) {\n return [r0, r1] = _, r0 = +r0, r1 = +r1, round = true, rescale();\n };\n\n scale.bandwidth = function () {\n return bandwidth;\n };\n\n scale.step = function () {\n return step;\n };\n\n scale.round = function (_) {\n return arguments.length ? (round = !!_, rescale()) : round;\n };\n\n scale.padding = function (_) {\n return arguments.length ? (paddingInner = Math.min(1, paddingOuter = +_), rescale()) : paddingInner;\n };\n\n scale.paddingInner = function (_) {\n return arguments.length ? (paddingInner = Math.min(1, _), rescale()) : paddingInner;\n };\n\n scale.paddingOuter = function (_) {\n return arguments.length ? (paddingOuter = +_, rescale()) : paddingOuter;\n };\n\n scale.align = function (_) {\n return arguments.length ? (align = Math.max(0, Math.min(1, _)), rescale()) : align;\n };\n\n scale.copy = function () {\n return band(domain(), [r0, r1]).round(round).paddingInner(paddingInner).paddingOuter(paddingOuter).align(align);\n };\n\n return _init.initRange.apply(rescale(), arguments);\n}\n\nfunction pointish(scale) {\n var copy = scale.copy;\n scale.padding = scale.paddingOuter;\n delete scale.paddingInner;\n delete scale.paddingOuter;\n\n scale.copy = function () {\n return pointish(copy());\n };\n\n return scale;\n}\n\nfunction point() {\n return pointish(band.apply(null, arguments).paddingInner(1));\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = cross;\n\nfunction length(array) {\n return array.length | 0;\n}\n\nfunction empty(length) {\n return !(length > 0);\n}\n\nfunction arrayify(values) {\n return typeof values !== \"object\" || \"length\" in values ? values : Array.from(values);\n}\n\nfunction reducer(reduce) {\n return values => reduce(...values);\n}\n\nfunction cross(...values) {\n const reduce = typeof values[values.length - 1] === \"function\" && reducer(values.pop());\n values = values.map(arrayify);\n const lengths = values.map(length);\n const j = values.length - 1;\n const index = new Array(j + 1).fill(0);\n const product = [];\n if (j < 0 || lengths.some(empty)) return product;\n\n while (true) {\n product.push(index.map((j, i) => values[i][j]));\n let i = j;\n\n while (++index[i] === lengths[i]) {\n if (i === 0) return reduce ? product.map(reduce) : product;\n index[i--] = 0;\n }\n }\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = cumsum;\n\nfunction cumsum(values, valueof) {\n var sum = 0,\n index = 0;\n return Float64Array.from(values, valueof === undefined ? v => sum += +v || 0 : v => sum += +valueof(v, index++, values) || 0);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Adder = void 0;\nexports.fcumsum = fcumsum;\nexports.fsum = fsum;\n\n// https://github.com/python/cpython/blob/a74eea238f5baba15797e2e8b570d153bc8690a7/Modules/mathmodule.c#L1423\nclass Adder {\n constructor() {\n this._partials = new Float64Array(32);\n this._n = 0;\n }\n\n add(x) {\n const p = this._partials;\n let i = 0;\n\n for (let j = 0; j < this._n && j < 32; j++) {\n const y = p[j],\n hi = x + y,\n lo = Math.abs(x) < Math.abs(y) ? x - (hi - y) : y - (hi - x);\n if (lo) p[i++] = lo;\n x = hi;\n }\n\n p[i] = x;\n this._n = i + 1;\n return this;\n }\n\n valueOf() {\n const p = this._partials;\n let n = this._n,\n x,\n y,\n lo,\n hi = 0;\n\n if (n > 0) {\n hi = p[--n];\n\n while (n > 0) {\n x = hi;\n y = p[--n];\n hi = x + y;\n lo = y - (hi - x);\n if (lo) break;\n }\n\n if (n > 0 && (lo < 0 && p[n - 1] < 0 || lo > 0 && p[n - 1] > 0)) {\n y = lo * 2;\n x = hi + y;\n if (y == x - hi) hi = x;\n }\n }\n\n return hi;\n }\n\n}\n\nexports.Adder = Adder;\n\nfunction fsum(values, valueof) {\n const adder = new Adder();\n\n if (valueof === undefined) {\n for (let value of values) {\n if (value = +value) {\n adder.add(value);\n }\n }\n } else {\n let index = -1;\n\n for (let value of values) {\n if (value = +valueof(value, ++index, values)) {\n adder.add(value);\n }\n }\n }\n\n return +adder;\n}\n\nfunction fcumsum(values, valueof) {\n const adder = new Adder();\n let index = -1;\n return Float64Array.from(values, valueof === undefined ? v => adder.add(+v || 0) : v => adder.add(+valueof(v, ++index, values) || 0));\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = groupSort;\n\nvar _ascending = _interopRequireDefault(require(\"./ascending.js\"));\n\nvar _group = _interopRequireWildcard(require(\"./group.js\"));\n\nvar _sort = _interopRequireDefault(require(\"./sort.js\"));\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction groupSort(values, reduce, key) {\n return (reduce.length !== 2 ? (0, _sort.default)((0, _group.rollup)(values, reduce, key), ([ak, av], [bk, bv]) => (0, _ascending.default)(av, bv) || (0, _ascending.default)(ak, bk)) : (0, _sort.default)((0, _group.default)(values, key), ([ak, av], [bk, bv]) => reduce(av, bv) || (0, _ascending.default)(ak, bk))).map(([key]) => key);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = bin;\n\nvar _array = require(\"./array.js\");\n\nvar _bisect = _interopRequireDefault(require(\"./bisect.js\"));\n\nvar _constant = _interopRequireDefault(require(\"./constant.js\"));\n\nvar _extent = _interopRequireDefault(require(\"./extent.js\"));\n\nvar _identity = _interopRequireDefault(require(\"./identity.js\"));\n\nvar _nice = _interopRequireDefault(require(\"./nice.js\"));\n\nvar _ticks = _interopRequireWildcard(require(\"./ticks.js\"));\n\nvar _sturges = _interopRequireDefault(require(\"./threshold/sturges.js\"));\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction bin() {\n var value = _identity.default,\n domain = _extent.default,\n threshold = _sturges.default;\n\n function histogram(data) {\n if (!Array.isArray(data)) data = Array.from(data);\n var i,\n n = data.length,\n x,\n step,\n values = new Array(n);\n\n for (i = 0; i < n; ++i) {\n values[i] = value(data[i], i, data);\n }\n\n var xz = domain(values),\n x0 = xz[0],\n x1 = xz[1],\n tz = threshold(values, x0, x1); // Convert number of thresholds into uniform thresholds, and nice the\n // default domain accordingly.\n\n if (!Array.isArray(tz)) {\n const max = x1,\n tn = +tz;\n if (domain === _extent.default) [x0, x1] = (0, _nice.default)(x0, x1, tn);\n tz = (0, _ticks.default)(x0, x1, tn); // If the domain is aligned with the first tick (which it will by\n // default), then we can use quantization rather than bisection to bin\n // values, which is substantially faster.\n\n if (tz[0] <= x0) step = (0, _ticks.tickIncrement)(x0, x1, tn); // If the last threshold is coincident with the domain’s upper bound, the\n // last bin will be zero-width. If the default domain is used, and this\n // last threshold is coincident with the maximum input value, we can\n // extend the niced upper bound by one tick to ensure uniform bin widths;\n // otherwise, we simply remove the last threshold. Note that we don’t\n // coerce values or the domain to numbers, and thus must be careful to\n // compare order (>=) rather than strict equality (===)!\n\n if (tz[tz.length - 1] >= x1) {\n if (max >= x1 && domain === _extent.default) {\n const step = (0, _ticks.tickIncrement)(x0, x1, tn);\n\n if (isFinite(step)) {\n if (step > 0) {\n x1 = (Math.floor(x1 / step) + 1) * step;\n } else if (step < 0) {\n x1 = (Math.ceil(x1 * -step) + 1) / -step;\n }\n }\n } else {\n tz.pop();\n }\n }\n } // Remove any thresholds outside the domain.\n\n\n var m = tz.length;\n\n while (tz[0] <= x0) tz.shift(), --m;\n\n while (tz[m - 1] > x1) tz.pop(), --m;\n\n var bins = new Array(m + 1),\n bin; // Initialize bins.\n\n for (i = 0; i <= m; ++i) {\n bin = bins[i] = [];\n bin.x0 = i > 0 ? tz[i - 1] : x0;\n bin.x1 = i < m ? tz[i] : x1;\n } // Assign data to bins by value, ignoring any outside the domain.\n\n\n if (isFinite(step)) {\n if (step > 0) {\n for (i = 0; i < n; ++i) {\n if ((x = values[i]) != null && x0 <= x && x <= x1) {\n bins[Math.min(m, Math.floor((x - x0) / step))].push(data[i]);\n }\n }\n } else if (step < 0) {\n for (i = 0; i < n; ++i) {\n if ((x = values[i]) != null && x0 <= x && x <= x1) {\n const j = Math.floor((x0 - x) * step);\n bins[Math.min(m, j + (tz[j] <= x))].push(data[i]); // handle off-by-one due to rounding\n }\n }\n }\n } else {\n for (i = 0; i < n; ++i) {\n if ((x = values[i]) != null && x0 <= x && x <= x1) {\n bins[(0, _bisect.default)(tz, x, 0, m)].push(data[i]);\n }\n }\n }\n\n return bins;\n }\n\n histogram.value = function (_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : (0, _constant.default)(_), histogram) : value;\n };\n\n histogram.domain = function (_) {\n return arguments.length ? (domain = typeof _ === \"function\" ? _ : (0, _constant.default)([_[0], _[1]]), histogram) : domain;\n };\n\n histogram.thresholds = function (_) {\n return arguments.length ? (threshold = typeof _ === \"function\" ? _ : Array.isArray(_) ? (0, _constant.default)(_array.slice.call(_)) : (0, _constant.default)(_), histogram) : threshold;\n };\n\n return histogram;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.slice = exports.map = void 0;\nvar array = Array.prototype;\nvar slice = array.slice;\nexports.slice = slice;\nvar map = array.map;\nexports.map = map;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = constant;\n\nfunction constant(x) {\n return () => x;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = thresholdFreedmanDiaconis;\n\nvar _count = _interopRequireDefault(require(\"../count.js\"));\n\nvar _quantile = _interopRequireDefault(require(\"../quantile.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction thresholdFreedmanDiaconis(values, min, max) {\n return Math.ceil((max - min) / (2 * ((0, _quantile.default)(values, 0.75) - (0, _quantile.default)(values, 0.25)) * Math.pow((0, _count.default)(values), -1 / 3)));\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = thresholdScott;\n\nvar _count = _interopRequireDefault(require(\"../count.js\"));\n\nvar _deviation = _interopRequireDefault(require(\"../deviation.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction thresholdScott(values, min, max) {\n return Math.ceil((max - min) * Math.cbrt((0, _count.default)(values)) / (3.49 * (0, _deviation.default)(values)));\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = mean;\n\nfunction mean(values, valueof) {\n let count = 0;\n let sum = 0;\n\n if (valueof === undefined) {\n for (let value of values) {\n if (value != null && (value = +value) >= value) {\n ++count, sum += value;\n }\n }\n } else {\n let index = -1;\n\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n ++count, sum += value;\n }\n }\n }\n\n if (count) return sum / count;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = median;\n\nvar _quantile = _interopRequireDefault(require(\"./quantile.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction median(values, valueof) {\n return (0, _quantile.default)(values, 0.5, valueof);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = merge;\n\nfunction* flatten(arrays) {\n for (const array of arrays) {\n yield* array;\n }\n}\n\nfunction merge(arrays) {\n return Array.from(flatten(arrays));\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = mode;\n\nvar _index = require(\"../../../lib-vendor/internmap/src/index.js\");\n\nfunction mode(values, valueof) {\n const counts = new _index.InternMap();\n\n if (valueof === undefined) {\n for (let value of values) {\n if (value != null && value >= value) {\n counts.set(value, (counts.get(value) || 0) + 1);\n }\n }\n } else {\n let index = -1;\n\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null && value >= value) {\n counts.set(value, (counts.get(value) || 0) + 1);\n }\n }\n }\n\n let modeValue;\n let modeCount = 0;\n\n for (const [value, count] of counts) {\n if (count > modeCount) {\n modeCount = count;\n modeValue = value;\n }\n }\n\n return modeValue;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = pairs;\nexports.pair = pair;\n\nfunction pairs(values, pairof = pair) {\n const pairs = [];\n let previous;\n let first = false;\n\n for (const value of values) {\n if (first) pairs.push(pairof(previous, value));\n previous = value;\n first = true;\n }\n\n return pairs;\n}\n\nfunction pair(a, b) {\n return [a, b];\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = range;\n\nfunction range(start, stop, step) {\n start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;\n var i = -1,\n n = Math.max(0, Math.ceil((stop - start) / step)) | 0,\n range = new Array(n);\n\n while (++i < n) {\n range[i] = start + i * step;\n }\n\n return range;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = rank;\n\nvar _ascending = _interopRequireDefault(require(\"./ascending.js\"));\n\nvar _sort = require(\"./sort.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction rank(values, valueof = _ascending.default) {\n if (typeof values[Symbol.iterator] !== \"function\") throw new TypeError(\"values is not iterable\");\n let V = Array.from(values);\n const R = new Float64Array(V.length);\n if (valueof.length !== 2) V = V.map(valueof), valueof = _ascending.default;\n\n const compareIndex = (i, j) => valueof(V[i], V[j]);\n\n let k, r;\n Uint32Array.from(V, (_, i) => i).sort(valueof === _ascending.default ? (i, j) => (0, _sort.ascendingDefined)(V[i], V[j]) : (0, _sort.compareDefined)(compareIndex)).forEach((j, i) => {\n const c = compareIndex(j, k === undefined ? j : k);\n\n if (c >= 0) {\n if (k === undefined || c > 0) k = j, r = i;\n R[j] = r;\n } else {\n R[j] = NaN;\n }\n });\n return R;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = least;\n\nvar _ascending = _interopRequireDefault(require(\"./ascending.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction least(values, compare = _ascending.default) {\n let min;\n let defined = false;\n\n if (compare.length === 1) {\n let minValue;\n\n for (const element of values) {\n const value = compare(element);\n\n if (defined ? (0, _ascending.default)(value, minValue) < 0 : (0, _ascending.default)(value, value) === 0) {\n min = element;\n minValue = value;\n defined = true;\n }\n }\n } else {\n for (const value of values) {\n if (defined ? compare(value, min) < 0 : compare(value, value) === 0) {\n min = value;\n defined = true;\n }\n }\n }\n\n return min;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = greatest;\n\nvar _ascending = _interopRequireDefault(require(\"./ascending.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction greatest(values, compare = _ascending.default) {\n let max;\n let defined = false;\n\n if (compare.length === 1) {\n let maxValue;\n\n for (const element of values) {\n const value = compare(element);\n\n if (defined ? (0, _ascending.default)(value, maxValue) > 0 : (0, _ascending.default)(value, value) === 0) {\n max = element;\n maxValue = value;\n defined = true;\n }\n }\n } else {\n for (const value of values) {\n if (defined ? compare(value, max) > 0 : compare(value, value) === 0) {\n max = value;\n defined = true;\n }\n }\n }\n\n return max;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = greatestIndex;\n\nvar _ascending = _interopRequireDefault(require(\"./ascending.js\"));\n\nvar _maxIndex = _interopRequireDefault(require(\"./maxIndex.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction greatestIndex(values, compare = _ascending.default) {\n if (compare.length === 1) return (0, _maxIndex.default)(values, compare);\n let maxValue;\n let max = -1;\n let index = -1;\n\n for (const value of values) {\n ++index;\n\n if (max < 0 ? compare(value, value) === 0 : compare(value, maxValue) > 0) {\n maxValue = value;\n max = index;\n }\n }\n\n return max;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = scan;\n\nvar _leastIndex = _interopRequireDefault(require(\"./leastIndex.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction scan(values, compare) {\n const index = (0, _leastIndex.default)(values, compare);\n return index < 0 ? undefined : index;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nexports.shuffler = shuffler;\n\nvar _default = shuffler(Math.random);\n\nexports.default = _default;\n\nfunction shuffler(random) {\n return function shuffle(array, i0 = 0, i1 = array.length) {\n let m = i1 - (i0 = +i0);\n\n while (m) {\n const i = random() * m-- | 0,\n t = array[m + i0];\n array[m + i0] = array[i + i0];\n array[i + i0] = t;\n }\n\n return array;\n };\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = sum;\n\nfunction sum(values, valueof) {\n let sum = 0;\n\n if (valueof === undefined) {\n for (let value of values) {\n if (value = +value) {\n sum += value;\n }\n }\n } else {\n let index = -1;\n\n for (let value of values) {\n if (value = +valueof(value, ++index, values)) {\n sum += value;\n }\n }\n }\n\n return sum;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = zip;\n\nvar _transpose = _interopRequireDefault(require(\"./transpose.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction zip() {\n return (0, _transpose.default)(arguments);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = every;\n\nfunction every(values, test) {\n if (typeof test !== \"function\") throw new TypeError(\"test is not a function\");\n let index = -1;\n\n for (const value of values) {\n if (!test(value, ++index, values)) {\n return false;\n }\n }\n\n return true;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = some;\n\nfunction some(values, test) {\n if (typeof test !== \"function\") throw new TypeError(\"test is not a function\");\n let index = -1;\n\n for (const value of values) {\n if (test(value, ++index, values)) {\n return true;\n }\n }\n\n return false;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = filter;\n\nfunction filter(values, test) {\n if (typeof test !== \"function\") throw new TypeError(\"test is not a function\");\n const array = [];\n let index = -1;\n\n for (const value of values) {\n if (test(value, ++index, values)) {\n array.push(value);\n }\n }\n\n return array;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = map;\n\nfunction map(values, mapper) {\n if (typeof values[Symbol.iterator] !== \"function\") throw new TypeError(\"values is not iterable\");\n if (typeof mapper !== \"function\") throw new TypeError(\"mapper is not a function\");\n return Array.from(values, (value, index) => mapper(value, index, values));\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = reduce;\n\nfunction reduce(values, reducer, value) {\n if (typeof reducer !== \"function\") throw new TypeError(\"reducer is not a function\");\n const iterator = values[Symbol.iterator]();\n let done,\n next,\n index = -1;\n\n if (arguments.length < 3) {\n ({\n done,\n value\n } = iterator.next());\n if (done) return;\n ++index;\n }\n\n while (({\n done,\n value: next\n } = iterator.next()), !done) {\n value = reducer(value, next, ++index, values);\n }\n\n return value;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = reverse;\n\nfunction reverse(values) {\n if (typeof values[Symbol.iterator] !== \"function\") throw new TypeError(\"values is not iterable\");\n return Array.from(values).reverse();\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = difference;\n\nvar _index = require(\"../../../lib-vendor/internmap/src/index.js\");\n\nfunction difference(values, ...others) {\n values = new _index.InternSet(values);\n\n for (const other of others) {\n for (const value of other) {\n values.delete(value);\n }\n }\n\n return values;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = disjoint;\n\nvar _index = require(\"../../../lib-vendor/internmap/src/index.js\");\n\nfunction disjoint(values, other) {\n const iterator = other[Symbol.iterator](),\n set = new _index.InternSet();\n\n for (const v of values) {\n if (set.has(v)) return false;\n let value, done;\n\n while (({\n value,\n done\n } = iterator.next())) {\n if (done) break;\n if (Object.is(v, value)) return false;\n set.add(value);\n }\n }\n\n return true;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = intersection;\n\nvar _index = require(\"../../../lib-vendor/internmap/src/index.js\");\n\nfunction intersection(values, ...others) {\n values = new _index.InternSet(values);\n others = others.map(set);\n\n out: for (const value of values) {\n for (const other of others) {\n if (!other.has(value)) {\n values.delete(value);\n continue out;\n }\n }\n }\n\n return values;\n}\n\nfunction set(values) {\n return values instanceof _index.InternSet ? values : new _index.InternSet(values);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = subset;\n\nvar _superset = _interopRequireDefault(require(\"./superset.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction subset(values, other) {\n return (0, _superset.default)(other, values);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = union;\n\nvar _index = require(\"../../../lib-vendor/internmap/src/index.js\");\n\nfunction union(...others) {\n const set = new _index.InternSet();\n\n for (const other of others) {\n for (const o of other) {\n set.add(o);\n }\n }\n\n return set;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = identity;\n\nvar _linear = require(\"./linear.js\");\n\nvar _number = _interopRequireDefault(require(\"./number.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction identity(domain) {\n var unknown;\n\n function scale(x) {\n return x == null || isNaN(x = +x) ? unknown : x;\n }\n\n scale.invert = scale;\n\n scale.domain = scale.range = function (_) {\n return arguments.length ? (domain = Array.from(_, _number.default), scale) : domain.slice();\n };\n\n scale.unknown = function (_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function () {\n return identity(domain).unknown(unknown);\n };\n\n domain = arguments.length ? Array.from(domain, _number.default) : [0, 1];\n return (0, _linear.linearish)(scale);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Hcl = Hcl;\nexports.Lab = Lab;\nexports.default = lab;\nexports.gray = gray;\nexports.hcl = hcl;\nexports.lch = lch;\n\nvar _define = _interopRequireWildcard(require(\"./define.js\"));\n\nvar _color = require(\"./color.js\");\n\nvar _math = require(\"./math.js\");\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\n// https://observablehq.com/@mbostock/lab-and-rgb\nconst K = 18,\n Xn = 0.96422,\n Yn = 1,\n Zn = 0.82521,\n t0 = 4 / 29,\n t1 = 6 / 29,\n t2 = 3 * t1 * t1,\n t3 = t1 * t1 * t1;\n\nfunction labConvert(o) {\n if (o instanceof Lab) return new Lab(o.l, o.a, o.b, o.opacity);\n if (o instanceof Hcl) return hcl2lab(o);\n if (!(o instanceof _color.Rgb)) o = (0, _color.rgbConvert)(o);\n var r = rgb2lrgb(o.r),\n g = rgb2lrgb(o.g),\n b = rgb2lrgb(o.b),\n y = xyz2lab((0.2225045 * r + 0.7168786 * g + 0.0606169 * b) / Yn),\n x,\n z;\n if (r === g && g === b) x = z = y;else {\n x = xyz2lab((0.4360747 * r + 0.3850649 * g + 0.1430804 * b) / Xn);\n z = xyz2lab((0.0139322 * r + 0.0971045 * g + 0.7141733 * b) / Zn);\n }\n return new Lab(116 * y - 16, 500 * (x - y), 200 * (y - z), o.opacity);\n}\n\nfunction gray(l, opacity) {\n return new Lab(l, 0, 0, opacity == null ? 1 : opacity);\n}\n\nfunction lab(l, a, b, opacity) {\n return arguments.length === 1 ? labConvert(l) : new Lab(l, a, b, opacity == null ? 1 : opacity);\n}\n\nfunction Lab(l, a, b, opacity) {\n this.l = +l;\n this.a = +a;\n this.b = +b;\n this.opacity = +opacity;\n}\n\n(0, _define.default)(Lab, lab, (0, _define.extend)(_color.Color, {\n brighter(k) {\n return new Lab(this.l + K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n\n darker(k) {\n return new Lab(this.l - K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n\n rgb() {\n var y = (this.l + 16) / 116,\n x = isNaN(this.a) ? y : y + this.a / 500,\n z = isNaN(this.b) ? y : y - this.b / 200;\n x = Xn * lab2xyz(x);\n y = Yn * lab2xyz(y);\n z = Zn * lab2xyz(z);\n return new _color.Rgb(lrgb2rgb(3.1338561 * x - 1.6168667 * y - 0.4906146 * z), lrgb2rgb(-0.9787684 * x + 1.9161415 * y + 0.0334540 * z), lrgb2rgb(0.0719453 * x - 0.2289914 * y + 1.4052427 * z), this.opacity);\n }\n\n}));\n\nfunction xyz2lab(t) {\n return t > t3 ? Math.pow(t, 1 / 3) : t / t2 + t0;\n}\n\nfunction lab2xyz(t) {\n return t > t1 ? t * t * t : t2 * (t - t0);\n}\n\nfunction lrgb2rgb(x) {\n return 255 * (x <= 0.0031308 ? 12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055);\n}\n\nfunction rgb2lrgb(x) {\n return (x /= 255) <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4);\n}\n\nfunction hclConvert(o) {\n if (o instanceof Hcl) return new Hcl(o.h, o.c, o.l, o.opacity);\n if (!(o instanceof Lab)) o = labConvert(o);\n if (o.a === 0 && o.b === 0) return new Hcl(NaN, 0 < o.l && o.l < 100 ? 0 : NaN, o.l, o.opacity);\n\n var h = Math.atan2(o.b, o.a) * _math.degrees;\n\n return new Hcl(h < 0 ? h + 360 : h, Math.sqrt(o.a * o.a + o.b * o.b), o.l, o.opacity);\n}\n\nfunction lch(l, c, h, opacity) {\n return arguments.length === 1 ? hclConvert(l) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nfunction hcl(h, c, l, opacity) {\n return arguments.length === 1 ? hclConvert(h) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hcl(h, c, l, opacity) {\n this.h = +h;\n this.c = +c;\n this.l = +l;\n this.opacity = +opacity;\n}\n\nfunction hcl2lab(o) {\n if (isNaN(o.h)) return new Lab(o.l, 0, 0, o.opacity);\n var h = o.h * _math.radians;\n return new Lab(o.l, Math.cos(h) * o.c, Math.sin(h) * o.c, o.opacity);\n}\n\n(0, _define.default)(Hcl, hcl, (0, _define.extend)(_color.Color, {\n brighter(k) {\n return new Hcl(this.h, this.c, this.l + K * (k == null ? 1 : k), this.opacity);\n },\n\n darker(k) {\n return new Hcl(this.h, this.c, this.l - K * (k == null ? 1 : k), this.opacity);\n },\n\n rgb() {\n return hcl2lab(this).rgb();\n }\n\n}));","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Cubehelix = Cubehelix;\nexports.default = cubehelix;\n\nvar _define = _interopRequireWildcard(require(\"./define.js\"));\n\nvar _color = require(\"./color.js\");\n\nvar _math = require(\"./math.js\");\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nvar A = -0.14861,\n B = +1.78277,\n C = -0.29227,\n D = -0.90649,\n E = +1.97294,\n ED = E * D,\n EB = E * B,\n BC_DA = B * C - D * A;\n\nfunction cubehelixConvert(o) {\n if (o instanceof Cubehelix) return new Cubehelix(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof _color.Rgb)) o = (0, _color.rgbConvert)(o);\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n l = (BC_DA * b + ED * r - EB * g) / (BC_DA + ED - EB),\n bl = b - l,\n k = (E * (g - l) - C * bl) / D,\n s = Math.sqrt(k * k + bl * bl) / (E * l * (1 - l)),\n // NaN if l=0 or l=1\n h = s ? Math.atan2(k, bl) * _math.degrees - 120 : NaN;\n return new Cubehelix(h < 0 ? h + 360 : h, s, l, o.opacity);\n}\n\nfunction cubehelix(h, s, l, opacity) {\n return arguments.length === 1 ? cubehelixConvert(h) : new Cubehelix(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Cubehelix(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\n(0, _define.default)(Cubehelix, cubehelix, (0, _define.extend)(_color.Color, {\n brighter(k) {\n k = k == null ? _color.brighter : Math.pow(_color.brighter, k);\n return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n },\n\n darker(k) {\n k = k == null ? _color.darker : Math.pow(_color.darker, k);\n return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n },\n\n rgb() {\n var h = isNaN(this.h) ? 0 : (this.h + 120) * _math.radians,\n l = +this.l,\n a = isNaN(this.s) ? 0 : this.s * l * (1 - l),\n cosh = Math.cos(h),\n sinh = Math.sin(h);\n return new _color.Rgb(255 * (l + a * (A * cosh + B * sinh)), 255 * (l + a * (C * cosh + D * sinh)), 255 * (l + a * (E * cosh)), this.opacity);\n }\n\n}));","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = _default;\n\nfunction _default(range) {\n var n = range.length;\n return function (t) {\n return range[Math.max(0, Math.min(n - 1, Math.floor(t * n)))];\n };\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = _default;\n\nvar _color = require(\"./color.js\");\n\nfunction _default(a, b) {\n var i = (0, _color.hue)(+a, +b);\n return function (t) {\n var x = i(t);\n return x - 360 * Math.floor(x / 360);\n };\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = _default;\n\nfunction _default(a, b) {\n return a = +a, b = +b, function (t) {\n return Math.round(a * (1 - t) + b * t);\n };\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.interpolateTransformSvg = exports.interpolateTransformCss = void 0;\n\nvar _number = _interopRequireDefault(require(\"../number.js\"));\n\nvar _parse = require(\"./parse.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n function pop(s) {\n return s.length ? s.pop() + \" \" : \"\";\n }\n\n function translate(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n q.push({\n i: i - 4,\n x: (0, _number.default)(xa, xb)\n }, {\n i: i - 2,\n x: (0, _number.default)(ya, yb)\n });\n } else if (xb || yb) {\n s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n }\n }\n\n function rotate(a, b, s, q) {\n if (a !== b) {\n if (a - b > 180) b += 360;else if (b - a > 180) a += 360; // shortest path\n\n q.push({\n i: s.push(pop(s) + \"rotate(\", null, degParen) - 2,\n x: (0, _number.default)(a, b)\n });\n } else if (b) {\n s.push(pop(s) + \"rotate(\" + b + degParen);\n }\n }\n\n function skewX(a, b, s, q) {\n if (a !== b) {\n q.push({\n i: s.push(pop(s) + \"skewX(\", null, degParen) - 2,\n x: (0, _number.default)(a, b)\n });\n } else if (b) {\n s.push(pop(s) + \"skewX(\" + b + degParen);\n }\n }\n\n function scale(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n q.push({\n i: i - 4,\n x: (0, _number.default)(xa, xb)\n }, {\n i: i - 2,\n x: (0, _number.default)(ya, yb)\n });\n } else if (xb !== 1 || yb !== 1) {\n s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n }\n }\n\n return function (a, b) {\n var s = [],\n // string constants and placeholders\n q = []; // number interpolators\n\n a = parse(a), b = parse(b);\n translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n rotate(a.rotate, b.rotate, s, q);\n skewX(a.skewX, b.skewX, s, q);\n scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n a = b = null; // gc\n\n return function (t) {\n var i = -1,\n n = q.length,\n o;\n\n while (++i < n) s[(o = q[i]).i] = o.x(t);\n\n return s.join(\"\");\n };\n };\n}\n\nvar interpolateTransformCss = interpolateTransform(_parse.parseCss, \"px, \", \"px)\", \"deg)\");\nexports.interpolateTransformCss = interpolateTransformCss;\nvar interpolateTransformSvg = interpolateTransform(_parse.parseSvg, \", \", \")\", \")\");\nexports.interpolateTransformSvg = interpolateTransformSvg;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.parseCss = parseCss;\nexports.parseSvg = parseSvg;\n\nvar _decompose = _interopRequireWildcard(require(\"./decompose.js\"));\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nvar svgNode;\n/* eslint-disable no-undef */\n\nfunction parseCss(value) {\n const m = new (typeof DOMMatrix === \"function\" ? DOMMatrix : WebKitCSSMatrix)(value + \"\");\n return m.isIdentity ? _decompose.identity : (0, _decompose.default)(m.a, m.b, m.c, m.d, m.e, m.f);\n}\n\nfunction parseSvg(value) {\n if (value == null) return _decompose.identity;\n if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n svgNode.setAttribute(\"transform\", value);\n if (!(value = svgNode.transform.baseVal.consolidate())) return _decompose.identity;\n value = value.matrix;\n return (0, _decompose.default)(value.a, value.b, value.c, value.d, value.e, value.f);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = _default;\nexports.identity = void 0;\nvar degrees = 180 / Math.PI;\nvar identity = {\n translateX: 0,\n translateY: 0,\n rotate: 0,\n skewX: 0,\n scaleX: 1,\n scaleY: 1\n};\nexports.identity = identity;\n\nfunction _default(a, b, c, d, e, f) {\n var scaleX, scaleY, skewX;\n if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n return {\n translateX: e,\n translateY: f,\n rotate: Math.atan2(b, a) * degrees,\n skewX: Math.atan(skewX) * degrees,\n scaleX: scaleX,\n scaleY: scaleY\n };\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar epsilon2 = 1e-12;\n\nfunction cosh(x) {\n return ((x = Math.exp(x)) + 1 / x) / 2;\n}\n\nfunction sinh(x) {\n return ((x = Math.exp(x)) - 1 / x) / 2;\n}\n\nfunction tanh(x) {\n return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n}\n\nvar _default = function zoomRho(rho, rho2, rho4) {\n // p0 = [ux0, uy0, w0]\n // p1 = [ux1, uy1, w1]\n function zoom(p0, p1) {\n var ux0 = p0[0],\n uy0 = p0[1],\n w0 = p0[2],\n ux1 = p1[0],\n uy1 = p1[1],\n w1 = p1[2],\n dx = ux1 - ux0,\n dy = uy1 - uy0,\n d2 = dx * dx + dy * dy,\n i,\n S; // Special case for u0 ≅ u1.\n\n if (d2 < epsilon2) {\n S = Math.log(w1 / w0) / rho;\n\n i = function (t) {\n return [ux0 + t * dx, uy0 + t * dy, w0 * Math.exp(rho * t * S)];\n };\n } // General case.\n else {\n var d1 = Math.sqrt(d2),\n b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2 * w0 * rho2 * d1),\n b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2 * w1 * rho2 * d1),\n r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0),\n r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n S = (r1 - r0) / rho;\n\n i = function (t) {\n var s = t * S,\n coshr0 = cosh(r0),\n u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s + r0) - sinh(r0));\n return [ux0 + u * dx, uy0 + u * dy, w0 * coshr0 / cosh(rho * s + r0)];\n };\n }\n\n i.duration = S * 1000 * rho / Math.SQRT2;\n return i;\n }\n\n zoom.rho = function (_) {\n var _1 = Math.max(1e-3, +_),\n _2 = _1 * _1,\n _4 = _2 * _2;\n\n return zoomRho(_1, _2, _4);\n };\n\n return zoom;\n}(Math.SQRT2, 2, 4);\n\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.hslLong = exports.default = void 0;\n\nvar _index = require(\"../../../lib-vendor/d3-color/src/index.js\");\n\nvar _color = _interopRequireWildcard(require(\"./color.js\"));\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction hsl(hue) {\n return function (start, end) {\n var h = hue((start = (0, _index.hsl)(start)).h, (end = (0, _index.hsl)(end)).h),\n s = (0, _color.default)(start.s, end.s),\n l = (0, _color.default)(start.l, end.l),\n opacity = (0, _color.default)(start.opacity, end.opacity);\n return function (t) {\n start.h = h(t);\n start.s = s(t);\n start.l = l(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n };\n}\n\nvar _default = hsl(_color.hue);\n\nexports.default = _default;\nvar hslLong = hsl(_color.default);\nexports.hslLong = hslLong;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = lab;\n\nvar _index = require(\"../../../lib-vendor/d3-color/src/index.js\");\n\nvar _color = _interopRequireDefault(require(\"./color.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction lab(start, end) {\n var l = (0, _color.default)((start = (0, _index.lab)(start)).l, (end = (0, _index.lab)(end)).l),\n a = (0, _color.default)(start.a, end.a),\n b = (0, _color.default)(start.b, end.b),\n opacity = (0, _color.default)(start.opacity, end.opacity);\n return function (t) {\n start.l = l(t);\n start.a = a(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.hclLong = exports.default = void 0;\n\nvar _index = require(\"../../../lib-vendor/d3-color/src/index.js\");\n\nvar _color = _interopRequireWildcard(require(\"./color.js\"));\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction hcl(hue) {\n return function (start, end) {\n var h = hue((start = (0, _index.hcl)(start)).h, (end = (0, _index.hcl)(end)).h),\n c = (0, _color.default)(start.c, end.c),\n l = (0, _color.default)(start.l, end.l),\n opacity = (0, _color.default)(start.opacity, end.opacity);\n return function (t) {\n start.h = h(t);\n start.c = c(t);\n start.l = l(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n };\n}\n\nvar _default = hcl(_color.hue);\n\nexports.default = _default;\nvar hclLong = hcl(_color.default);\nexports.hclLong = hclLong;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.cubehelixLong = void 0;\n\nvar _index = require(\"../../../lib-vendor/d3-color/src/index.js\");\n\nvar _color = _interopRequireWildcard(require(\"./color.js\"));\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction cubehelix(hue) {\n return function cubehelixGamma(y) {\n y = +y;\n\n function cubehelix(start, end) {\n var h = hue((start = (0, _index.cubehelix)(start)).h, (end = (0, _index.cubehelix)(end)).h),\n s = (0, _color.default)(start.s, end.s),\n l = (0, _color.default)(start.l, end.l),\n opacity = (0, _color.default)(start.opacity, end.opacity);\n return function (t) {\n start.h = h(t);\n start.s = s(t);\n start.l = l(Math.pow(t, y));\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n cubehelix.gamma = cubehelixGamma;\n return cubehelix;\n }(1);\n}\n\nvar _default = cubehelix(_color.hue);\n\nexports.default = _default;\nvar cubehelixLong = cubehelix(_color.default);\nexports.cubehelixLong = cubehelixLong;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = piecewise;\n\nvar _value = _interopRequireDefault(require(\"./value.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction piecewise(interpolate, values) {\n if (values === undefined) values = interpolate, interpolate = _value.default;\n var i = 0,\n n = values.length - 1,\n v = values[0],\n I = new Array(n < 0 ? 0 : n);\n\n while (i < n) I[i] = interpolate(v, v = values[++i]);\n\n return function (t) {\n var i = Math.max(0, Math.min(n - 1, Math.floor(t *= n)));\n return I[i](t - i);\n };\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = _default;\n\nfunction _default(interpolator, n) {\n var samples = new Array(n);\n\n for (var i = 0; i < n; ++i) samples[i] = interpolator(i / (n - 1));\n\n return samples;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = constants;\n\nfunction constants(x) {\n return function () {\n return x;\n };\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = defaultLocale;\nexports.formatPrefix = exports.format = void 0;\n\nvar _locale = _interopRequireDefault(require(\"./locale.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar locale;\nvar format;\nexports.format = format;\nvar formatPrefix;\nexports.formatPrefix = formatPrefix;\ndefaultLocale({\n thousands: \",\",\n grouping: [3],\n currency: [\"$\", \"\"]\n});\n\nfunction defaultLocale(definition) {\n locale = (0, _locale.default)(definition);\n exports.format = format = locale.format;\n exports.formatPrefix = formatPrefix = locale.formatPrefix;\n return locale;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = _default;\n\nfunction _default(grouping, thousands) {\n return function (value, width) {\n var i = value.length,\n t = [],\n j = 0,\n g = grouping[0],\n length = 0;\n\n while (i > 0 && g > 0) {\n if (length + g + 1 > width) g = Math.max(1, width - length);\n t.push(value.substring(i -= g, i + g));\n if ((length += g + 1) > width) break;\n g = grouping[j = (j + 1) % grouping.length];\n }\n\n return t.reverse().join(thousands);\n };\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = _default;\n\nfunction _default(numerals) {\n return function (value) {\n return value.replace(/[0-9]/g, function (i) {\n return numerals[+i];\n });\n };\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = _default;\n\n// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\nfunction _default(s) {\n out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n switch (s[i]) {\n case \".\":\n i0 = i1 = i;\n break;\n\n case \"0\":\n if (i0 === 0) i0 = i;\n i1 = i;\n break;\n\n default:\n if (!+s[i]) break out;\n if (i0 > 0) i0 = 0;\n break;\n }\n }\n\n return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _formatDecimal = _interopRequireDefault(require(\"./formatDecimal.js\"));\n\nvar _formatPrefixAuto = _interopRequireDefault(require(\"./formatPrefixAuto.js\"));\n\nvar _formatRounded = _interopRequireDefault(require(\"./formatRounded.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _default = {\n \"%\": (x, p) => (x * 100).toFixed(p),\n \"b\": x => Math.round(x).toString(2),\n \"c\": x => x + \"\",\n \"d\": _formatDecimal.default,\n \"e\": (x, p) => x.toExponential(p),\n \"f\": (x, p) => x.toFixed(p),\n \"g\": (x, p) => x.toPrecision(p),\n \"o\": x => Math.round(x).toString(8),\n \"p\": (x, p) => (0, _formatRounded.default)(x * 100, p),\n \"r\": _formatRounded.default,\n \"s\": _formatPrefixAuto.default,\n \"X\": x => Math.round(x).toString(16).toUpperCase(),\n \"x\": x => Math.round(x).toString(16)\n};\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = _default;\n\nvar _formatDecimal = require(\"./formatDecimal.js\");\n\nfunction _default(x, p) {\n var d = (0, _formatDecimal.formatDecimalParts)(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1];\n return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1) : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = _default;\n\nfunction _default(x) {\n return x;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = _default;\n\nvar _exponent = _interopRequireDefault(require(\"./exponent.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _default(step) {\n return Math.max(0, -(0, _exponent.default)(Math.abs(step)));\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = _default;\n\nvar _exponent = _interopRequireDefault(require(\"./exponent.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _default(step, value) {\n return Math.max(0, Math.max(-8, Math.min(8, Math.floor((0, _exponent.default)(value) / 3))) * 3 - (0, _exponent.default)(Math.abs(step)));\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = _default;\n\nvar _exponent = _interopRequireDefault(require(\"./exponent.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _default(step, max) {\n step = Math.abs(step), max = Math.abs(max) - step;\n return Math.max(0, (0, _exponent.default)(max) - (0, _exponent.default)(step)) + 1;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = radial;\n\nvar _continuous = _interopRequireDefault(require(\"./continuous.js\"));\n\nvar _init = require(\"./init.js\");\n\nvar _linear = require(\"./linear.js\");\n\nvar _number = _interopRequireDefault(require(\"./number.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction square(x) {\n return Math.sign(x) * x * x;\n}\n\nfunction unsquare(x) {\n return Math.sign(x) * Math.sqrt(Math.abs(x));\n}\n\nfunction radial() {\n var squared = (0, _continuous.default)(),\n range = [0, 1],\n round = false,\n unknown;\n\n function scale(x) {\n var y = unsquare(squared(x));\n return isNaN(y) ? unknown : round ? Math.round(y) : y;\n }\n\n scale.invert = function (y) {\n return squared.invert(square(y));\n };\n\n scale.domain = function (_) {\n return arguments.length ? (squared.domain(_), scale) : squared.domain();\n };\n\n scale.range = function (_) {\n return arguments.length ? (squared.range((range = Array.from(_, _number.default)).map(square)), scale) : range.slice();\n };\n\n scale.rangeRound = function (_) {\n return scale.range(_).round(true);\n };\n\n scale.round = function (_) {\n return arguments.length ? (round = !!_, scale) : round;\n };\n\n scale.clamp = function (_) {\n return arguments.length ? (squared.clamp(_), scale) : squared.clamp();\n };\n\n scale.unknown = function (_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function () {\n return radial(squared.domain(), range).round(round).clamp(squared.clamp()).unknown(unknown);\n };\n\n _init.initRange.apply(scale, arguments);\n\n return (0, _linear.linearish)(scale);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = quantile;\n\nvar _index = require(\"../../../lib-vendor/d3-array/src/index.js\");\n\nvar _init = require(\"./init.js\");\n\nfunction quantile() {\n var domain = [],\n range = [],\n thresholds = [],\n unknown;\n\n function rescale() {\n var i = 0,\n n = Math.max(1, range.length);\n thresholds = new Array(n - 1);\n\n while (++i < n) thresholds[i - 1] = (0, _index.quantileSorted)(domain, i / n);\n\n return scale;\n }\n\n function scale(x) {\n return x == null || isNaN(x = +x) ? unknown : range[(0, _index.bisect)(thresholds, x)];\n }\n\n scale.invertExtent = function (y) {\n var i = range.indexOf(y);\n return i < 0 ? [NaN, NaN] : [i > 0 ? thresholds[i - 1] : domain[0], i < thresholds.length ? thresholds[i] : domain[domain.length - 1]];\n };\n\n scale.domain = function (_) {\n if (!arguments.length) return domain.slice();\n domain = [];\n\n for (let d of _) if (d != null && !isNaN(d = +d)) domain.push(d);\n\n domain.sort(_index.ascending);\n return rescale();\n };\n\n scale.range = function (_) {\n return arguments.length ? (range = Array.from(_), rescale()) : range.slice();\n };\n\n scale.unknown = function (_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.quantiles = function () {\n return thresholds.slice();\n };\n\n scale.copy = function () {\n return quantile().domain(domain).range(range).unknown(unknown);\n };\n\n return _init.initRange.apply(scale, arguments);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = quantize;\n\nvar _index = require(\"../../../lib-vendor/d3-array/src/index.js\");\n\nvar _linear = require(\"./linear.js\");\n\nvar _init = require(\"./init.js\");\n\nfunction quantize() {\n var x0 = 0,\n x1 = 1,\n n = 1,\n domain = [0.5],\n range = [0, 1],\n unknown;\n\n function scale(x) {\n return x != null && x <= x ? range[(0, _index.bisect)(domain, x, 0, n)] : unknown;\n }\n\n function rescale() {\n var i = -1;\n domain = new Array(n);\n\n while (++i < n) domain[i] = ((i + 1) * x1 - (i - n) * x0) / (n + 1);\n\n return scale;\n }\n\n scale.domain = function (_) {\n return arguments.length ? ([x0, x1] = _, x0 = +x0, x1 = +x1, rescale()) : [x0, x1];\n };\n\n scale.range = function (_) {\n return arguments.length ? (n = (range = Array.from(_)).length - 1, rescale()) : range.slice();\n };\n\n scale.invertExtent = function (y) {\n var i = range.indexOf(y);\n return i < 0 ? [NaN, NaN] : i < 1 ? [x0, domain[0]] : i >= n ? [domain[n - 1], x1] : [domain[i - 1], domain[i]];\n };\n\n scale.unknown = function (_) {\n return arguments.length ? (unknown = _, scale) : scale;\n };\n\n scale.thresholds = function () {\n return domain.slice();\n };\n\n scale.copy = function () {\n return quantize().domain([x0, x1]).range(range).unknown(unknown);\n };\n\n return _init.initRange.apply((0, _linear.linearish)(scale), arguments);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = threshold;\n\nvar _index = require(\"../../../lib-vendor/d3-array/src/index.js\");\n\nvar _init = require(\"./init.js\");\n\nfunction threshold() {\n var domain = [0.5],\n range = [0, 1],\n unknown,\n n = 1;\n\n function scale(x) {\n return x != null && x <= x ? range[(0, _index.bisect)(domain, x, 0, n)] : unknown;\n }\n\n scale.domain = function (_) {\n return arguments.length ? (domain = Array.from(_), n = Math.min(domain.length, range.length - 1), scale) : domain.slice();\n };\n\n scale.range = function (_) {\n return arguments.length ? (range = Array.from(_), n = Math.min(domain.length, range.length - 1), scale) : range.slice();\n };\n\n scale.invertExtent = function (y) {\n var i = range.indexOf(y);\n return [domain[i - 1], domain[i]];\n };\n\n scale.unknown = function (_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function () {\n return threshold().domain(domain).range(range).unknown(unknown);\n };\n\n return _init.initRange.apply(scale, arguments);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.utcTicks = exports.utcTickInterval = exports.timeTicks = exports.timeTickInterval = void 0;\n\nvar _index = require(\"../../../lib-vendor/d3-array/src/index.js\");\n\nvar _duration = require(\"./duration.js\");\n\nvar _millisecond = _interopRequireDefault(require(\"./millisecond.js\"));\n\nvar _second = _interopRequireDefault(require(\"./second.js\"));\n\nvar _minute = _interopRequireDefault(require(\"./minute.js\"));\n\nvar _hour = _interopRequireDefault(require(\"./hour.js\"));\n\nvar _day = _interopRequireDefault(require(\"./day.js\"));\n\nvar _week = require(\"./week.js\");\n\nvar _month = _interopRequireDefault(require(\"./month.js\"));\n\nvar _year = _interopRequireDefault(require(\"./year.js\"));\n\nvar _utcMinute = _interopRequireDefault(require(\"./utcMinute.js\"));\n\nvar _utcHour = _interopRequireDefault(require(\"./utcHour.js\"));\n\nvar _utcDay = _interopRequireDefault(require(\"./utcDay.js\"));\n\nvar _utcWeek = require(\"./utcWeek.js\");\n\nvar _utcMonth = _interopRequireDefault(require(\"./utcMonth.js\"));\n\nvar _utcYear = _interopRequireDefault(require(\"./utcYear.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction ticker(year, month, week, day, hour, minute) {\n const tickIntervals = [[_second.default, 1, _duration.durationSecond], [_second.default, 5, 5 * _duration.durationSecond], [_second.default, 15, 15 * _duration.durationSecond], [_second.default, 30, 30 * _duration.durationSecond], [minute, 1, _duration.durationMinute], [minute, 5, 5 * _duration.durationMinute], [minute, 15, 15 * _duration.durationMinute], [minute, 30, 30 * _duration.durationMinute], [hour, 1, _duration.durationHour], [hour, 3, 3 * _duration.durationHour], [hour, 6, 6 * _duration.durationHour], [hour, 12, 12 * _duration.durationHour], [day, 1, _duration.durationDay], [day, 2, 2 * _duration.durationDay], [week, 1, _duration.durationWeek], [month, 1, _duration.durationMonth], [month, 3, 3 * _duration.durationMonth], [year, 1, _duration.durationYear]];\n\n function ticks(start, stop, count) {\n const reverse = stop < start;\n if (reverse) [start, stop] = [stop, start];\n const interval = count && typeof count.range === \"function\" ? count : tickInterval(start, stop, count);\n const ticks = interval ? interval.range(start, +stop + 1) : []; // inclusive stop\n\n return reverse ? ticks.reverse() : ticks;\n }\n\n function tickInterval(start, stop, count) {\n const target = Math.abs(stop - start) / count;\n const i = (0, _index.bisector)(([,, step]) => step).right(tickIntervals, target);\n if (i === tickIntervals.length) return year.every((0, _index.tickStep)(start / _duration.durationYear, stop / _duration.durationYear, count));\n if (i === 0) return _millisecond.default.every(Math.max((0, _index.tickStep)(start, stop, count), 1));\n const [t, step] = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i];\n return t.every(step);\n }\n\n return [ticks, tickInterval];\n}\n\nconst [utcTicks, utcTickInterval] = ticker(_utcYear.default, _utcMonth.default, _utcWeek.utcSunday, _utcDay.default, _utcHour.default, _utcMinute.default);\nexports.utcTickInterval = utcTickInterval;\nexports.utcTicks = utcTicks;\nconst [timeTicks, timeTickInterval] = ticker(_year.default, _month.default, _week.sunday, _day.default, _hour.default, _minute.default);\nexports.timeTickInterval = timeTickInterval;\nexports.timeTicks = timeTicks;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _isoFormat = require(\"./isoFormat.js\");\n\nvar _defaultLocale = require(\"./defaultLocale.js\");\n\nfunction parseIsoNative(string) {\n var date = new Date(string);\n return isNaN(date) ? null : date;\n}\n\nvar parseIso = +new Date(\"2000-01-01T00:00:00.000Z\") ? parseIsoNative : (0, _defaultLocale.utcParse)(_isoFormat.isoSpecifier);\nvar _default = parseIso;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = utcTime;\n\nvar _index = require(\"../../../lib-vendor/d3-time/src/index.js\");\n\nvar _index2 = require(\"../../../lib-vendor/d3-time-format/src/index.js\");\n\nvar _time = require(\"./time.js\");\n\nvar _init = require(\"./init.js\");\n\nfunction utcTime() {\n return _init.initRange.apply((0, _time.calendar)(_index.utcTicks, _index.utcTickInterval, _index.utcYear, _index.utcMonth, _index.utcWeek, _index.utcDay, _index.utcHour, _index.utcMinute, _index.utcSecond, _index2.utcFormat).domain([Date.UTC(2000, 0, 1), Date.UTC(2000, 0, 2)]), arguments);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = sequentialQuantile;\n\nvar _index = require(\"../../../lib-vendor/d3-array/src/index.js\");\n\nvar _continuous = require(\"./continuous.js\");\n\nvar _init = require(\"./init.js\");\n\nfunction sequentialQuantile() {\n var domain = [],\n interpolator = _continuous.identity;\n\n function scale(x) {\n if (x != null && !isNaN(x = +x)) return interpolator(((0, _index.bisect)(domain, x, 1) - 1) / (domain.length - 1));\n }\n\n scale.domain = function (_) {\n if (!arguments.length) return domain.slice();\n domain = [];\n\n for (let d of _) if (d != null && !isNaN(d = +d)) domain.push(d);\n\n domain.sort(_index.ascending);\n return scale;\n };\n\n scale.interpolator = function (_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n\n scale.range = function () {\n return domain.map((d, i) => interpolator(i / (domain.length - 1)));\n };\n\n scale.quantiles = function (n) {\n return Array.from({\n length: n + 1\n }, (_, i) => (0, _index.quantile)(domain, i / n));\n };\n\n scale.copy = function () {\n return sequentialQuantile(interpolator).domain(domain);\n };\n\n return _init.initInterpolator.apply(scale, arguments);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = diverging;\nexports.divergingLog = divergingLog;\nexports.divergingPow = divergingPow;\nexports.divergingSqrt = divergingSqrt;\nexports.divergingSymlog = divergingSymlog;\n\nvar _index = require(\"../../../lib-vendor/d3-interpolate/src/index.js\");\n\nvar _continuous = require(\"./continuous.js\");\n\nvar _init = require(\"./init.js\");\n\nvar _linear = require(\"./linear.js\");\n\nvar _log = require(\"./log.js\");\n\nvar _sequential = require(\"./sequential.js\");\n\nvar _symlog = require(\"./symlog.js\");\n\nvar _pow = require(\"./pow.js\");\n\nfunction transformer() {\n var x0 = 0,\n x1 = 0.5,\n x2 = 1,\n s = 1,\n t0,\n t1,\n t2,\n k10,\n k21,\n interpolator = _continuous.identity,\n transform,\n clamp = false,\n unknown;\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : (x = 0.5 + ((x = +transform(x)) - t1) * (s * x < s * t1 ? k10 : k21), interpolator(clamp ? Math.max(0, Math.min(1, x)) : x));\n }\n\n scale.domain = function (_) {\n return arguments.length ? ([x0, x1, x2] = _, t0 = transform(x0 = +x0), t1 = transform(x1 = +x1), t2 = transform(x2 = +x2), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1), s = t1 < t0 ? -1 : 1, scale) : [x0, x1, x2];\n };\n\n scale.clamp = function (_) {\n return arguments.length ? (clamp = !!_, scale) : clamp;\n };\n\n scale.interpolator = function (_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n\n function range(interpolate) {\n return function (_) {\n var r0, r1, r2;\n return arguments.length ? ([r0, r1, r2] = _, interpolator = (0, _index.piecewise)(interpolate, [r0, r1, r2]), scale) : [interpolator(0), interpolator(0.5), interpolator(1)];\n };\n }\n\n scale.range = range(_index.interpolate);\n scale.rangeRound = range(_index.interpolateRound);\n\n scale.unknown = function (_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function (t) {\n transform = t, t0 = t(x0), t1 = t(x1), t2 = t(x2), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1), s = t1 < t0 ? -1 : 1;\n return scale;\n };\n}\n\nfunction diverging() {\n var scale = (0, _linear.linearish)(transformer()(_continuous.identity));\n\n scale.copy = function () {\n return (0, _sequential.copy)(scale, diverging());\n };\n\n return _init.initInterpolator.apply(scale, arguments);\n}\n\nfunction divergingLog() {\n var scale = (0, _log.loggish)(transformer()).domain([0.1, 1, 10]);\n\n scale.copy = function () {\n return (0, _sequential.copy)(scale, divergingLog()).base(scale.base());\n };\n\n return _init.initInterpolator.apply(scale, arguments);\n}\n\nfunction divergingSymlog() {\n var scale = (0, _symlog.symlogish)(transformer());\n\n scale.copy = function () {\n return (0, _sequential.copy)(scale, divergingSymlog()).constant(scale.constant());\n };\n\n return _init.initInterpolator.apply(scale, arguments);\n}\n\nfunction divergingPow() {\n var scale = (0, _pow.powish)(transformer());\n\n scale.copy = function () {\n return (0, _sequential.copy)(scale, divergingPow()).exponent(scale.exponent());\n };\n\n return _init.initInterpolator.apply(scale, arguments);\n}\n\nfunction divergingSqrt() {\n return divergingPow.apply(null, arguments).exponent(0.5);\n}","var baseIteratee = require('./_baseIteratee'),\n isArrayLike = require('./isArrayLike'),\n keys = require('./keys');\n\n/**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\nfunction createFind(findIndexFunc) {\n return function(collection, predicate, fromIndex) {\n var iterable = Object(collection);\n if (!isArrayLike(collection)) {\n var iteratee = baseIteratee(predicate, 3);\n collection = keys(collection);\n predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n }\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n}\n\nmodule.exports = createFind;\n","var baseFindIndex = require('./_baseFindIndex'),\n baseIteratee = require('./_baseIteratee'),\n toInteger = require('./toInteger');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\nfunction findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, baseIteratee(predicate, 3), index);\n}\n\nmodule.exports = findIndex;\n","var toFinite = require('./toFinite');\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\nmodule.exports = toInteger;\n","/**\n * A specialized version of `_.every` 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 {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n */\nfunction arrayEvery(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 false;\n }\n }\n return true;\n}\n\nmodule.exports = arrayEvery;\n","var baseEach = require('./_baseEach');\n\n/**\n * The base implementation of `_.every` 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 all elements pass the predicate check,\n * else `false`\n */\nfunction baseEvery(collection, predicate) {\n var result = true;\n baseEach(collection, function(value, index, collection) {\n result = !!predicate(value, index, collection);\n return result;\n });\n return result;\n}\n\nmodule.exports = baseEvery;\n","var overArg = require('./_overArg');\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nmodule.exports = getPrototype;\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar __DEV__ = process.env.NODE_ENV !== 'production';\n\nvar warning = function() {};\n\nif (__DEV__) {\n var printWarning = function printWarning(format, args) {\n var len = arguments.length;\n args = new Array(len > 1 ? len - 1 : 0);\n for (var key = 1; key < len; key++) {\n args[key - 1] = arguments[key];\n }\n var argIndex = 0;\n var message = 'Warning: ' +\n format.replace(/%s/g, function() {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n }\n\n warning = function(condition, format, args) {\n var len = arguments.length;\n args = new Array(len > 2 ? len - 2 : 0);\n for (var key = 2; key < len; key++) {\n args[key - 2] = arguments[key];\n }\n if (format === undefined) {\n throw new Error(\n '`warning(condition, format, ...args)` requires a warning ' +\n 'message argument'\n );\n }\n if (!condition) {\n printWarning.apply(null, [format].concat(args));\n }\n };\n}\n\nmodule.exports = warning;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = all;\n\nvar _createChainableTypeChecker = require('./utils/createChainableTypeChecker');\n\nvar _createChainableTypeChecker2 = _interopRequireDefault(_createChainableTypeChecker);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction all() {\n for (var _len = arguments.length, validators = Array(_len), _key = 0; _key < _len; _key++) {\n validators[_key] = arguments[_key];\n }\n\n function allPropTypes() {\n for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n var error = null;\n\n validators.forEach(function (validator) {\n if (error != null) {\n return;\n }\n\n var result = validator.apply(undefined, args);\n if (result != null) {\n error = result;\n }\n });\n\n return error;\n }\n\n return (0, _createChainableTypeChecker2.default)(allPropTypes);\n}\nmodule.exports = exports['default'];","'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'];","import { concatStyleSets } from './concatStyleSets';\nimport { extractStyleParts } from './extractStyleParts';\nimport { IStyle } from './IStyle';\nimport { IStyleOptions } from './IStyleOptions';\nimport { IConcatenatedStyleSet, IProcessedStyleSet, IStyleSet } from './IStyleSet';\nimport { getStyleOptions } from './StyleOptionsState';\nimport { applyRegistration, styleToRegistration } from './styleToClassName';\nimport { ObjectOnly } from './ObjectOnly';\n\n/**\n * Takes in one or more style set objects, each consisting of a set of areas,\n * each which will produce a class name. Using this is analogous to calling\n * `mergeStyles` for each property in the object, but ensures we maintain the\n * set ordering when multiple style sets are merged.\n *\n * @param styleSet - The first style set to be merged and reigstered.\n */\nexport function mergeStyleSets<TStyleSet>(\n styleSet: TStyleSet | false | null | undefined,\n): IProcessedStyleSet<ObjectOnly<TStyleSet>>;\n\n/**\n * Takes in one or more style set objects, each consisting of a set of areas,\n * each which will produce a class name. Using this is analogous to calling\n * `mergeStyles` for each property in the object, but ensures we maintain the\n * set ordering when multiple style sets are merged.\n *\n * @param styleSet1 - The first style set to be merged.\n * @param styleSet2 - The second style set to be merged.\n */\nexport function mergeStyleSets<TStyleSet1, TStyleSet2>(\n styleSet1: TStyleSet1 | false | null | undefined,\n styleSet2: TStyleSet2 | false | null | undefined,\n): IProcessedStyleSet<ObjectOnly<TStyleSet1> & ObjectOnly<TStyleSet2>>;\n\n/**\n * Takes in one or more style set objects, each consisting of a set of areas,\n * each which will produce a class name. Using this is analogous to calling\n * `mergeStyles` for each property in the object, but ensures we maintain the\n * set ordering when multiple style sets are merged.\n *\n * @param styleSet1 - The first style set to be merged.\n * @param styleSet2 - The second style set to be merged.\n * @param styleSet3 - The third style set to be merged.\n */\nexport function mergeStyleSets<TStyleSet1, TStyleSet2, TStyleSet3>(\n styleSet1: TStyleSet1 | false | null | undefined,\n styleSet2: TStyleSet2 | false | null | undefined,\n styleSet3: TStyleSet3 | false | null | undefined,\n): IProcessedStyleSet<ObjectOnly<TStyleSet1> & ObjectOnly<TStyleSet2> & ObjectOnly<TStyleSet3>>;\n\n/**\n * Takes in one or more style set objects, each consisting of a set of areas,\n * each which will produce a class name. Using this is analogous to calling\n * `mergeStyles` for each property in the object, but ensures we maintain the\n * set ordering when multiple style sets are merged.\n *\n * @param styleSet1 - The first style set to be merged.\n * @param styleSet2 - The second style set to be merged.\n * @param styleSet3 - The third style set to be merged.\n * @param styleSet4 - The fourth style set to be merged.\n */\nexport function mergeStyleSets<TStyleSet1, TStyleSet2, TStyleSet3, TStyleSet4>(\n styleSet1: TStyleSet1 | false | null | undefined,\n styleSet2: TStyleSet2 | false | null | undefined,\n styleSet3: TStyleSet3 | false | null | undefined,\n styleSet4: TStyleSet4 | false | null | undefined,\n): IProcessedStyleSet<\n ObjectOnly<TStyleSet1> & ObjectOnly<TStyleSet2> & ObjectOnly<TStyleSet3> & ObjectOnly<TStyleSet4>\n>;\n\n/**\n * Takes in one or more style set objects, each consisting of a set of areas,\n * each which will produce a class name. Using this is analogous to calling\n * `mergeStyles` for each property in the object, but ensures we maintain the\n * set ordering when multiple style sets are merged.\n *\n * @param styleSets - One or more style sets to be merged.\n */\nexport function mergeStyleSets(...styleSets: Array<IStyleSet | undefined | false | null>): IProcessedStyleSet<any>;\n\n/**\n * Takes in one or more style set objects, each consisting of a set of areas,\n * each which will produce a class name. Using this is analogous to calling\n * `mergeStyles` for each property in the object, but ensures we maintain the\n * set ordering when multiple style sets are merged.\n *\n * @param styleSets - One or more style sets to be merged.\n */\nexport function mergeStyleSets(...styleSets: Array<IStyleSet | undefined | false | null>): IProcessedStyleSet<any> {\n return mergeCssSets(styleSets as any, getStyleOptions());\n}\n\n/**\n * Takes in one or more style set objects, each1consisting of a set of areas,\n * each which will produce a class name. Using this is analogous to calling\n * `mergeCss` for each property in the object, but ensures we maintain the\n * set ordering when multiple style sets are merged.\n *\n * @param styleSets - One or more style sets to be merged.\n * @param options - (optional) Options to use when creating rules.\n */\nexport function mergeCssSets<TStyleSet>(\n styleSets: [TStyleSet | false | null | undefined],\n options?: IStyleOptions,\n): IProcessedStyleSet<TStyleSet>;\n\n/**\n * Takes in one or more style set objects, each1consisting of a set of areas,\n * each which will produce a class name. Using this is analogous to calling\n * `mergeCss` for each property in the object, but ensures we maintain the\n * set ordering when multiple style sets are merged.\n *\n * @param styleSets - One or more style sets to be merged.\n * @param options - (optional) Options to use when creating rules.\n */\nexport function mergeCssSets<TStyleSet1, TStyleSet2>(\n styleSets: [TStyleSet1 | false | null | undefined, TStyleSet2 | false | null | undefined],\n options?: IStyleOptions,\n): IProcessedStyleSet<TStyleSet1 & TStyleSet2>;\n\n/**\n * Takes in one or more style set objects, each1consisting of a set of areas,\n * each which will produce a class name. Using this is analogous to calling\n * `mergeCss` for each property in the object, but ensures we maintain the\n * set ordering when multiple style sets are merged.\n *\n * @param styleSets - One or more style sets to be merged.\n * @param options - (optional) Options to use when creating rules.\n */\nexport function mergeCssSets<TStyleSet1, TStyleSet2, TStyleSet3>(\n styleSets: [\n TStyleSet1 | false | null | undefined,\n TStyleSet2 | false | null | undefined,\n TStyleSet3 | false | null | undefined,\n ],\n options?: IStyleOptions,\n): IProcessedStyleSet<TStyleSet1 & TStyleSet2 & TStyleSet3>;\n\n/**\n * Takes in one or more style set objects, each1consisting of a set of areas,\n * each which will produce a class name. Using this is analogous to calling\n * `mergeCss` for each property in the object, but ensures we maintain the\n * set ordering when multiple style sets are merged.\n *\n * @param styleSets - One or more style sets to be merged.\n * @param options - (optional) Options to use when creating rules.\n */\nexport function mergeCssSets<TStyleSet1, TStyleSet2, TStyleSet3, TStyleSet4>(\n styleSets: [\n TStyleSet1 | false | null | undefined,\n TStyleSet2 | false | null | undefined,\n TStyleSet3 | false | null | undefined,\n TStyleSet4 | false | null | undefined,\n ],\n options?: IStyleOptions,\n): IProcessedStyleSet<\n ObjectOnly<TStyleSet1> & ObjectOnly<TStyleSet2> & ObjectOnly<TStyleSet3> & ObjectOnly<TStyleSet4>\n>;\n\n/**\n * Takes in one or more style set objects, each1consisting of a set of areas,\n * each which will produce a class name. Using this is analogous to calling\n * `mergeCss` for each property in the object, but ensures we maintain the\n * set ordering when multiple style sets are merged.\n *\n * @param styleSets - One or more style sets to be merged.\n * @param options - (optional) Options to use when creating rules.\n */\nexport function mergeCssSets<TStyleSet>(\n styleSet: [TStyleSet | false | null | undefined],\n options?: IStyleOptions,\n): IProcessedStyleSet<TStyleSet>;\n\n/**\n * Takes in one or more style set objects, each1consisting of a set of areas,\n * each which will produce a class name. Using this is analogous to calling\n * `mergeCss` for each property in the object, but ensures the\n * set ordering when multiple style sets are merged.\n *\n * @param styleSets - One or more style sets to be merged.\n * @param options - (optional) Options to use when creating rules.\n */\nexport function mergeCssSets(\n styleSets: Array<IStyleSet | undefined | false | null>,\n options?: IStyleOptions,\n): IProcessedStyleSet<any> {\n const classNameSet: IProcessedStyleSet<any> = { subComponentStyles: {} };\n\n const styleSet = styleSets[0];\n\n if (!styleSet && styleSets.length <= 1) {\n return { subComponentStyles: {} } as any;\n }\n\n const concatenatedStyleSet = concatStyleSets(...styleSets);\n\n const registrations = [];\n\n for (const styleSetArea in concatenatedStyleSet) {\n if (concatenatedStyleSet.hasOwnProperty(styleSetArea)) {\n if (styleSetArea === 'subComponentStyles') {\n classNameSet.subComponentStyles = (concatenatedStyleSet as IConcatenatedStyleSet<any>).subComponentStyles || {};\n continue;\n }\n\n const styles: IStyle = (concatenatedStyleSet as any)[styleSetArea];\n\n const { classes, objects } = extractStyleParts(styles);\n\n if (objects?.length) {\n const registration = styleToRegistration(options || {}, { displayName: styleSetArea }, objects);\n\n if (registration) {\n registrations.push(registration);\n classNameSet[styleSetArea] = classes.concat([registration.className]).join(' ');\n }\n } else {\n classNameSet[styleSetArea] = classes.join(' ');\n }\n }\n }\n\n for (const registration of registrations) {\n if (registration) {\n applyRegistration(registration, options?.specificityMultiplier);\n }\n }\n\n return classNameSet as any;\n}\n","import { getDocument } from './dom/getDocument';\nimport { mergeStyles } from '@uifabric/merge-styles';\nimport { EventGroup } from './EventGroup';\nimport { getWindow } from './dom/getWindow';\n\nlet _scrollbarWidth: number;\nlet _bodyScrollDisabledCount = 0;\n\nconst DisabledScrollClassName = mergeStyles({\n overflow: 'hidden !important' as 'hidden',\n});\n\n/**\n * Placing this attribute on scrollable divs optimizes detection to know\n * if the div is scrollable or not (given we can avoid expensive operations\n * like getComputedStyle.)\n *\n * @public\n */\nexport const DATA_IS_SCROLLABLE_ATTRIBUTE = 'data-is-scrollable';\n\n/**\n * Allows the user to scroll within a element,\n * while preventing the user from scrolling the body\n */\nexport const allowScrollOnElement = (element: HTMLElement | null, events: EventGroup): void => {\n if (!element) {\n return;\n }\n\n let _previousClientY = 0;\n let _element: Element | null = null;\n\n // remember the clientY for future calls of _preventOverscrolling\n const _saveClientY = (event: TouchEvent): void => {\n if (event.targetTouches.length === 1) {\n _previousClientY = event.targetTouches[0].clientY;\n }\n };\n\n // prevent the body from scrolling when the user attempts\n // to scroll past the top or bottom of the element\n const _preventOverscrolling = (event: TouchEvent): void => {\n // only respond to a single-finger touch\n if (event.targetTouches.length !== 1) {\n return;\n }\n\n // prevent the body touchmove handler from firing\n // so that scrolling is allowed within the element\n event.stopPropagation();\n\n if (!_element) {\n return;\n }\n\n const clientY = event.targetTouches[0].clientY - _previousClientY;\n\n const scrollableParent = findScrollableParent(event.target as HTMLElement) as HTMLElement;\n if (scrollableParent) {\n _element = scrollableParent;\n }\n\n // if the element is scrolled to the top,\n // prevent the user from scrolling up\n if (_element.scrollTop === 0 && clientY > 0) {\n event.preventDefault();\n }\n\n // if the element is scrolled to the bottom,\n // prevent the user from scrolling down\n if (_element.scrollHeight - Math.ceil(_element.scrollTop) <= _element.clientHeight && clientY < 0) {\n event.preventDefault();\n }\n };\n\n events.on(element, 'touchstart', _saveClientY, { passive: false });\n events.on(element, 'touchmove', _preventOverscrolling, { passive: false });\n\n _element = element;\n};\n\n/**\n * Same as allowScrollOnElement but does not prevent overscrolling.\n */\nexport const allowOverscrollOnElement = (element: HTMLElement | null, events: EventGroup): void => {\n if (!element) {\n return;\n }\n const _allowElementScroll = (event: TouchEvent) => {\n event.stopPropagation();\n };\n events.on(element, 'touchmove', _allowElementScroll, { passive: false });\n};\n\nconst _disableIosBodyScroll = (event: TouchEvent) => {\n event.preventDefault();\n};\n\n/**\n * Disables the body scrolling.\n *\n * @public\n */\nexport function disableBodyScroll(): void {\n let doc = getDocument();\n\n if (doc && doc.body && !_bodyScrollDisabledCount) {\n doc.body.classList.add(DisabledScrollClassName);\n doc.body.addEventListener('touchmove', _disableIosBodyScroll, { passive: false, capture: false });\n }\n\n _bodyScrollDisabledCount++;\n}\n\n/**\n * Enables the body scrolling.\n *\n * @public\n */\nexport function enableBodyScroll(): void {\n if (_bodyScrollDisabledCount > 0) {\n let doc = getDocument();\n\n if (doc && doc.body && _bodyScrollDisabledCount === 1) {\n doc.body.classList.remove(DisabledScrollClassName);\n doc.body.removeEventListener('touchmove', _disableIosBodyScroll);\n }\n\n _bodyScrollDisabledCount--;\n }\n}\n\n/**\n * Calculates the width of a scrollbar for the browser/os.\n *\n * @public\n */\nexport function getScrollbarWidth(): number {\n if (_scrollbarWidth === undefined) {\n let scrollDiv: HTMLElement = document.createElement('div');\n scrollDiv.style.setProperty('width', '100px');\n scrollDiv.style.setProperty('height', '100px');\n scrollDiv.style.setProperty('overflow', 'scroll');\n scrollDiv.style.setProperty('position', 'absolute');\n scrollDiv.style.setProperty('top', '-9999px');\n document.body.appendChild(scrollDiv);\n // Get the scrollbar width\n _scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n\n // Delete the DIV\n document.body.removeChild(scrollDiv);\n }\n\n return _scrollbarWidth;\n}\n\n/**\n * Traverses up the DOM for the element with the data-is-scrollable=true attribute, or returns\n * document.body.\n *\n * @public\n */\nexport function findScrollableParent(startingElement: HTMLElement | null): HTMLElement | Window | undefined | null {\n let el: HTMLElement | Window | undefined | null = startingElement;\n const doc = getDocument(startingElement)!;\n\n // First do a quick scan for the scrollable attribute.\n while (el && el !== doc.body) {\n if (el.getAttribute(DATA_IS_SCROLLABLE_ATTRIBUTE) === 'true') {\n return el;\n }\n el = el.parentElement;\n }\n\n // If we haven't found it, the use the slower method: compute styles to evaluate if overflow is set.\n el = startingElement;\n\n while (el && el !== doc.body) {\n if (el.getAttribute(DATA_IS_SCROLLABLE_ATTRIBUTE) !== 'false') {\n const computedStyles = getComputedStyle(el);\n let overflowY = computedStyles ? computedStyles.getPropertyValue('overflow-y') : '';\n\n if (overflowY && (overflowY === 'scroll' || overflowY === 'auto')) {\n return el;\n }\n }\n\n el = el.parentElement;\n }\n\n // Fall back to window scroll.\n if (!el || el === doc.body) {\n el = getWindow(startingElement);\n }\n\n return el;\n}\n","import * as React from 'react';\nimport { Customizations } from './Customizations';\nimport { hoistStatics } from '../hoistStatics';\nimport { CustomizerContext, ICustomizerContext } from './CustomizerContext';\nimport { concatStyleSets } from '@uifabric/merge-styles';\n\nexport function customizable(\n scope: string,\n fields: string[],\n concatStyles?: boolean,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n): <P>(ComposedComponent: React.ComponentType<P>) => any {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return function customizableFactory<P>(ComposedComponent: React.ComponentType<P>): any {\n const resultClass = class ComponentWithInjectedProps extends React.Component<P, {}> {\n public static displayName: string = 'Customized' + scope;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private _styleCache: { default?: any; component?: any; merged?: any } = {};\n\n constructor(props: P) {\n super(props);\n\n this._onSettingChanged = this._onSettingChanged.bind(this);\n }\n\n public componentDidMount(): void {\n Customizations.observe(this._onSettingChanged);\n }\n\n public componentWillUnmount(): void {\n Customizations.unobserve(this._onSettingChanged);\n }\n\n public render(): JSX.Element {\n return (\n <CustomizerContext.Consumer>\n {(context: ICustomizerContext) => {\n const defaultProps = Customizations.getSettings(fields, scope, context.customizations);\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const componentProps = this.props as any;\n\n // If defaultProps.styles is a function, evaluate it before calling concatStyleSets\n if (defaultProps.styles && typeof defaultProps.styles === 'function') {\n defaultProps.styles = defaultProps.styles({ ...defaultProps, ...componentProps });\n }\n\n // If concatStyles is true and custom styles have been defined compute those styles\n if (concatStyles && defaultProps.styles) {\n if (\n this._styleCache.default !== defaultProps.styles ||\n this._styleCache.component !== componentProps.styles\n ) {\n const mergedStyles = concatStyleSets(defaultProps.styles, componentProps.styles);\n this._styleCache.default = defaultProps.styles;\n this._styleCache.component = componentProps.styles;\n this._styleCache.merged = mergedStyles;\n }\n\n return <ComposedComponent {...defaultProps} {...componentProps} styles={this._styleCache.merged} />;\n }\n\n return <ComposedComponent {...defaultProps} {...componentProps} />;\n }}\n </CustomizerContext.Consumer>\n );\n }\n\n private _onSettingChanged(): void {\n this.forceUpdate();\n }\n };\n\n return hoistStatics(ComposedComponent, resultClass);\n };\n}\n","import * as React from 'react';\nimport { Async } from './Async';\nimport { EventGroup } from './EventGroup';\nimport { IDisposable } from './IDisposable';\nimport { ISettingsMap } from './warn/warn';\nimport { warnConditionallyRequiredProps } from './warn/warnConditionallyRequiredProps';\nimport { warnMutuallyExclusive } from './warn/warnMutuallyExclusive';\nimport { warnDeprecations } from './warn/warnDeprecations';\nimport { IRefObject } from './createRef';\nimport { IBaseProps } from './BaseComponent.types';\n\n/**\n * BaseComponent class, which provides basic helpers for all components.\n *\n * @public\n * {@docCategory BaseComponent}\n *\n * @deprecated Do not use. We are moving away from class component.\n */\nexport class BaseComponent<TProps extends IBaseProps = {}, TState = {}> extends React.Component<TProps, TState> {\n /**\n * @deprecated Use React's error boundaries instead.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public static onError: (errorMessage?: string, ex?: any) => void;\n\n /**\n * Controls whether the componentRef prop will be resolved by this component instance. If you are\n * implementing a passthrough (higher-order component), you would set this to false and pass through\n * the props to the inner component, allowing it to resolve the componentRef.\n */\n protected _skipComponentRefResolution: boolean;\n\n private __async: Async;\n private __events: EventGroup;\n private __disposables: IDisposable[] | null;\n private __resolves: { [name: string]: (ref: React.ReactNode) => React.ReactNode };\n private __className: string;\n\n /**\n * BaseComponent constructor\n * @param props - The props for the component.\n * @param context - The context for the component.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n constructor(props: TProps, context?: any) {\n super(props, context);\n\n // eslint-disable-next-line deprecation/deprecation\n _makeAllSafe(this, BaseComponent.prototype, [\n 'componentDidMount',\n 'shouldComponentUpdate',\n 'getSnapshotBeforeUpdate',\n 'render',\n 'componentDidUpdate',\n 'componentWillUnmount',\n ]);\n }\n\n /**\n * When the component receives props, make sure the componentRef is updated.\n */\n public componentDidUpdate(prevProps: TProps, prevState: TState): void {\n this._updateComponentRef(prevProps, this.props);\n }\n\n /**\n * When the component has mounted, update the componentRef.\n */\n public componentDidMount(): void {\n this._setComponentRef(this.props.componentRef, this);\n }\n\n /**\n * If we have disposables, dispose them automatically on unmount.\n */\n public componentWillUnmount(): void {\n this._setComponentRef(this.props.componentRef, null);\n\n if (this.__disposables) {\n for (let i = 0, len = this._disposables.length; i < len; i++) {\n let disposable = this.__disposables[i];\n\n if (disposable.dispose) {\n disposable.dispose();\n }\n }\n this.__disposables = null;\n }\n }\n\n /**\n * Gets the object's class name.\n */\n public get className(): string {\n if (!this.__className) {\n let funcNameRegex = /function (.{1,})\\(/;\n let results = funcNameRegex.exec(this.constructor.toString());\n\n this.__className = results && results.length > 1 ? results[1] : '';\n }\n\n return this.__className;\n }\n\n /**\n * Allows subclasses to push things to this._disposables to be auto disposed.\n */\n protected get _disposables(): IDisposable[] {\n if (!this.__disposables) {\n this.__disposables = [];\n }\n return this.__disposables;\n }\n\n /**\n * Gets the async instance associated with the component, created on demand. The async instance gives\n * subclasses a way to execute setTimeout/setInterval async calls safely, where the callbacks\n * will be cleared/ignored automatically after unmounting. The helpers within the async object also\n * preserve the this pointer so that you don't need to \"bind\" the callbacks.\n */\n protected get _async(): Async {\n if (!this.__async) {\n this.__async = new Async(this);\n this._disposables.push(this.__async);\n }\n\n return this.__async;\n }\n\n /**\n * Gets the event group instance assocaited with the component, created on demand. The event instance\n * provides on/off methods for listening to DOM (or regular javascript object) events. The event callbacks\n * will be automatically disconnected after unmounting. The helpers within the events object also\n * preserve the this reference so that you don't need to \"bind\" the callbacks.\n */\n protected get _events(): EventGroup {\n if (!this.__events) {\n this.__events = new EventGroup(this);\n this._disposables.push(this.__events);\n }\n\n return this.__events;\n }\n\n /**\n * Helper to return a memoized ref resolver function.\n * @param refName - Name of the member to assign the ref to.\n * @returns A function instance keyed from the given refname.\n * @deprecated Use `createRef` from React.createRef.\n */\n protected _resolveRef(refName: string): (ref: React.ReactNode) => React.ReactNode {\n if (!this.__resolves) {\n this.__resolves = {};\n }\n\n if (!this.__resolves[refName]) {\n this.__resolves[refName] = (ref: React.ReactNode) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return ((this as any)[refName] = ref);\n };\n }\n\n return this.__resolves[refName];\n }\n\n /**\n * Updates the componentRef (by calling it with \"this\" when necessary.)\n */\n protected _updateComponentRef(currentProps: IBaseProps, newProps: IBaseProps = {}): void {\n // currentProps *should* always be defined, but verify that just in case a subclass is manually\n // calling a lifecycle method with no parameters (which has happened) or other odd usage.\n if (currentProps && newProps && currentProps.componentRef !== newProps.componentRef) {\n this._setComponentRef(currentProps.componentRef, null);\n this._setComponentRef(newProps.componentRef, this);\n }\n }\n\n /**\n * Warns when a deprecated props are being used.\n *\n * @param deprecationMap - The map of deprecations, where key is the prop name and the value is\n * either null or a replacement prop name.\n */\n protected _warnDeprecations(deprecationMap: ISettingsMap<TProps>): void {\n warnDeprecations(this.className, this.props, deprecationMap);\n }\n\n /**\n * Warns when props which are mutually exclusive with each other are both used.\n *\n * @param mutuallyExclusiveMap - The map of mutually exclusive props.\n */\n protected _warnMutuallyExclusive(mutuallyExclusiveMap: ISettingsMap<TProps>): void {\n warnMutuallyExclusive(this.className, this.props, mutuallyExclusiveMap);\n }\n\n /**\n * Warns when props are required if a condition is met.\n *\n * @param requiredProps - The name of the props that are required when the condition is met.\n * @param conditionalPropName - The name of the prop that the condition is based on.\n * @param condition - Whether the condition is met.\n */\n protected _warnConditionallyRequiredProps(\n requiredProps: string[],\n conditionalPropName: string,\n condition: boolean,\n ): void {\n warnConditionallyRequiredProps(this.className, this.props, requiredProps, conditionalPropName, condition);\n }\n\n private _setComponentRef<TRefInterface>(\n ref: IRefObject<TRefInterface> | undefined,\n value: TRefInterface | null,\n ): void {\n if (!this._skipComponentRefResolution && ref) {\n if (typeof ref === 'function') {\n ref(value);\n }\n\n if (typeof ref === 'object') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (ref as any).current = value;\n }\n }\n }\n}\n\n/**\n * Helper to override a given method with a wrapper method that can try/catch the original, but also\n * ensures that the BaseComponent's methods are called before the subclass's. This ensures that\n * componentWillUnmount in the base is called and that things in the _disposables array are disposed.\n */\n// eslint-disable-next-line deprecation/deprecation\nfunction _makeAllSafe(obj: BaseComponent<{}, {}>, prototype: Object, methodNames: string[]): void {\n for (let i = 0, len = methodNames.length; i < len; i++) {\n _makeSafe(obj, prototype, methodNames[i]);\n }\n}\n\n// eslint-disable-next-line deprecation/deprecation\nfunction _makeSafe(obj: BaseComponent<{}, {}>, prototype: Object, methodName: string): void {\n /* eslint-disable @typescript-eslint/no-explicit-any */\n let classMethod = (obj as any)[methodName];\n let prototypeMethod = (prototype as any)[methodName];\n\n if (classMethod || prototypeMethod) {\n (obj as any)[methodName] = function(...args: any[]): any {\n /* eslint-enable @typescript-eslint/no-explicit-any */\n let retVal;\n\n if (prototypeMethod) {\n retVal = prototypeMethod.apply(this, args);\n }\n if (classMethod !== prototypeMethod) {\n retVal = classMethod.apply(this, args);\n }\n\n return retVal;\n };\n }\n}\n\n/**\n * Simple constant function for returning null, used to render empty templates in JSX.\n *\n * @public\n */\nexport function nullRender(): JSX.Element | null {\n return null;\n}\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { deepFreeze, objForEachKey } from \"../JavaScriptSDK/HelperFuncs\";\r\n/**\r\n * Create an enum style object which has both the key => value and value => key mappings\r\n * @param values - The values to populate on the new object\r\n * @returns\r\n */\r\nexport function createEnumStyle(values) {\r\n var enumClass = {};\r\n objForEachKey(values, function (field, value) {\r\n enumClass[field] = value;\r\n enumClass[value] = field;\r\n });\r\n return deepFreeze(enumClass);\r\n}\r\n/**\r\n * Create a 2 index map that maps an enum's key as both the key and value, X[\"key\"] => \"key\" and X[0] => \"keyof 0\".\r\n * @param values - The values to populate on the new object\r\n * @returns\r\n */\r\nexport function createEnumMap(values) {\r\n var mapClass = {};\r\n objForEachKey(values, function (field, value) {\r\n mapClass[field] = field;\r\n mapClass[value] = field;\r\n });\r\n return deepFreeze(mapClass);\r\n}\r\n/**\r\n * Create a 2 index map that maps an enum's key and value to the defined map value, X[\"key\"] => mapValue and X[0] => mapValue.\r\n * Generic values\r\n * - E = the const enum type (typeof eRequestHeaders);\r\n * - V = Identifies the valid values for the keys, this should include both the enum numeric and string key of the type. The\r\n * resulting \"Value\" of each entry identifies the valid values withing the assignments.\r\n * @param values - The values to populate on the new object\r\n * @returns\r\n */\r\nexport function createValueMap(values) {\r\n var mapClass = {};\r\n objForEachKey(values, function (field, value) {\r\n mapClass[field] = value[1];\r\n mapClass[value[0]] = value[1];\r\n });\r\n return deepFreeze(mapClass);\r\n}\r\n//# sourceMappingURL=EnumHelperFuncs.js.map","import { KeyCodes } from './KeyCodes';\n\nconst DirectionalKeyCodes: { [key: number]: number } = {\n [KeyCodes.up]: 1,\n [KeyCodes.down]: 1,\n [KeyCodes.left]: 1,\n [KeyCodes.right]: 1,\n [KeyCodes.home]: 1,\n [KeyCodes.end]: 1,\n [KeyCodes.tab]: 1,\n [KeyCodes.pageUp]: 1,\n [KeyCodes.pageDown]: 1,\n};\n\n/**\n * Returns true if the keycode is a directional keyboard key.\n */\nexport function isDirectionalKeyCode(which: number): boolean {\n return !!DirectionalKeyCodes[which];\n}\n\n/**\n * Adds a keycode to the list of keys that, when pressed, should cause the focus outlines to be visible.\n * This can be used to add global shortcut keys that directionally move from section to section within\n * an app or between focus trap zones.\n */\nexport function addDirectionalKeyCode(which: number): void {\n DirectionalKeyCodes[which] = 1;\n}\n","import * as React from 'react';\nimport { getWindow } from './dom/getWindow';\nimport { isDirectionalKeyCode } from './keyboard';\nimport { setFocusVisibility } from './setFocusVisibility';\n\n/**\n * Counter for mounted component that uses focus rectangle.\n * We want to cleanup the listners before last component that uses focus rectangle unmounts.\n */\nlet mountCounters = new WeakMap<Window, number>();\n\nfunction setMountCounters(key: Window, delta: number): number {\n let newValue;\n const currValue = mountCounters.get(key);\n if (currValue) {\n newValue = currValue + delta;\n } else {\n newValue = 1;\n }\n\n mountCounters.set(key, newValue);\n return newValue;\n}\n\ntype AppWindow = (Window & { FabricConfig?: { disableFocusRects?: boolean } }) | undefined;\n\n/**\n * Initializes the logic which:\n *\n * 1. Subscribes keydown and mousedown events. (It will only do it once per window,\n * so it's safe to call this method multiple times.)\n * 2. When the user presses directional keyboard keys, adds the 'ms-Fabric--isFocusVisible' classname\n * to the document body, removes the 'ms-Fabric-isFocusHidden' classname.\n * 3. When the user clicks a mouse button, adds the 'ms-Fabric-isFocusHidden' classname to the\n * document body, removes the 'ms-Fabric--isFocusVisible' classname.\n *\n * This logic allows components on the page to conditionally render focus treatments based on\n * the existence of global classnames, which simplifies logic overall.\n *\n * @param rootRef - A Ref object. Focus rectangle can be applied on itself and all its children.\n */\nexport function useFocusRects(rootRef?: React.RefObject<HTMLElement>): void {\n React.useEffect(() => {\n const win = getWindow(rootRef?.current) as AppWindow;\n\n if (!win || win.FabricConfig?.disableFocusRects === true) {\n return undefined;\n }\n\n let count = setMountCounters(win, 1);\n if (count <= 1) {\n win.addEventListener('mousedown', _onMouseDown, true);\n win.addEventListener('pointerdown', _onPointerDown, true);\n win.addEventListener('keydown', _onKeyDown, true);\n }\n\n return () => {\n if (!win || win.FabricConfig?.disableFocusRects === true) {\n return;\n }\n\n count = setMountCounters(win, -1);\n if (count === 0) {\n win.removeEventListener('mousedown', _onMouseDown, true);\n win.removeEventListener('pointerdown', _onPointerDown, true);\n win.removeEventListener('keydown', _onKeyDown, true);\n }\n };\n }, [rootRef]);\n}\n\n/**\n * Function Component wrapper which enables calling `useFocusRects` hook.\n * Renders nothing.\n */\nexport const FocusRects: React.FunctionComponent<{ rootRef?: React.RefObject<HTMLElement> }> = props => {\n useFocusRects(props.rootRef);\n return null;\n};\n\nfunction _onMouseDown(ev: MouseEvent): void {\n setFocusVisibility(false, ev.target as Element);\n}\n\nfunction _onPointerDown(ev: PointerEvent): void {\n if (ev.pointerType !== 'mouse') {\n setFocusVisibility(false, ev.target as Element);\n }\n}\n\nfunction _onKeyDown(ev: KeyboardEvent): void {\n // eslint-disable-next-line deprecation/deprecation\n if (isDirectionalKeyCode(ev.which)) {\n setFocusVisibility(true, ev.target as Element);\n }\n}\n","import { concatStyleSets } from './concatStyleSets';\nimport { IStyleSet } from './IStyleSet';\nimport { IStyleFunctionOrObject } from './IStyleFunction';\nimport { DeepPartial } from './DeepPartial';\n\n/**\n * Concatenates style sets into one, but resolves functional sets using the given props.\n * @param styleProps - Props used to resolve functional sets.\n * @param allStyles - Style sets, which can be functions or objects.\n */\nexport function concatStyleSetsWithProps<TStyleProps, TStyleSet extends IStyleSet<TStyleSet>>(\n styleProps: TStyleProps,\n ...allStyles: (IStyleFunctionOrObject<TStyleProps, TStyleSet> | undefined)[]\n): DeepPartial<TStyleSet> {\n const result: DeepPartial<TStyleSet>[] = [];\n for (const styles of allStyles) {\n if (styles) {\n result.push(typeof styles === 'function' ? styles(styleProps) : styles);\n }\n }\n if (result.length === 1) {\n return result[0] as DeepPartial<TStyleSet>;\n } else if (result.length) {\n // cliffkoh: I cannot figure out how to avoid the cast to any here.\n // It is something to do with the use of Omit in IStyleSet.\n // It might not be necessary once Omit becomes part of lib.d.ts (when we remove our own Omit and rely on\n // the official version).\n return concatStyleSets(...(result as any)) as any;\n }\n\n return {};\n}\n","import {\n mergeCssSets,\n IStyleSet,\n IProcessedStyleSet,\n Stylesheet,\n IStyleFunctionOrObject,\n} from '@uifabric/merge-styles';\nimport { getRTL } from './rtl';\nimport { getWindow } from './dom';\nimport { StyleFunction } from './styled';\n\nconst MAX_CACHE_COUNT = 50;\nconst DEFAULT_SPECIFICITY_MULTIPLIER = 5;\n\nlet _memoizedClassNames = 0;\n\nconst stylesheet = Stylesheet.getInstance();\n\nif (stylesheet && stylesheet.onReset) {\n stylesheet.onReset(() => _memoizedClassNames++);\n}\n\n// Note that because of the caching nature within the classNames memoization,\n// I've disabled this rule to simply be able to work with any types.\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\n// This represents a prop we attach to each Map to indicate the cached return value\n// associated with the graph node.\nconst retVal = '__retval__';\n\ninterface IRecursiveMemoNode extends Map<any, IRecursiveMemoNode> {\n [retVal]?: string;\n}\n\ntype AppWindow = (Window & { FabricConfig?: { enableClassNameCacheFullWarning?: boolean } }) | undefined;\n\nexport interface IClassNamesFunctionOptions {\n /**\n * Disables class caching for scenarios where styleProp parts mutate frequently.\n */\n disableCaching?: boolean;\n\n /**\n * Size of the cache. It overwrites default cache size when defined.\n */\n cacheSize?: number;\n\n /**\n * Set to true if component base styles are implemented in scss instead of css-in-js.\n */\n useStaticStyles?: boolean;\n}\n\n/**\n * Creates a getClassNames function which calls getStyles given the props, and injects them\n * into mergeStyleSets.\n *\n * Note that the props you pass in on every render should be in the same order and\n * immutable (numbers, strings, and booleans). This will allow the results to be memoized. Violating\n * these will cause extra recalcs to occur.\n */\nexport function classNamesFunction<TStyleProps extends {}, TStyleSet extends IStyleSet<TStyleSet>>(\n options: IClassNamesFunctionOptions = {},\n): (\n getStyles: IStyleFunctionOrObject<TStyleProps, TStyleSet> | undefined,\n styleProps?: TStyleProps,\n) => IProcessedStyleSet<TStyleSet> {\n // We build a trie where each node is a Map. The map entry key represents an argument\n // value, and the entry value is another node (Map). Each node has a `__retval__`\n // property which is used to hold the cached response.\n\n // To derive the response, we can simply ensure the arguments are added or already\n // exist in the trie. At the last node, if there is a `__retval__` we return that. Otherwise\n // we call the `getStyles` api to evaluate, cache on the property, and return that.\n let map: IRecursiveMemoNode = new Map();\n let styleCalcCount = 0;\n let getClassNamesCount = 0;\n let currentMemoizedClassNames = _memoizedClassNames;\n\n const getClassNames = (\n styleFunctionOrObject: IStyleFunctionOrObject<TStyleProps, TStyleSet> | undefined,\n styleProps: TStyleProps = {} as TStyleProps,\n ): IProcessedStyleSet<TStyleSet> => {\n // If useStaticStyles is true, styleFunctionOrObject returns slot to classname mappings.\n // If there is also no style overrides, we can skip merge styles completely and\n // simply return the result from the style funcion.\n if (\n options.useStaticStyles &&\n typeof styleFunctionOrObject === 'function' &&\n (styleFunctionOrObject as StyleFunction<TStyleProps, TStyleSet>).__noStyleOverride__\n ) {\n return styleFunctionOrObject(styleProps) as IProcessedStyleSet<TStyleSet>;\n }\n\n getClassNamesCount++;\n let current: Map<any, any> = map;\n const { theme } = styleProps as any;\n const rtl = theme && theme.rtl !== undefined ? theme.rtl : getRTL();\n\n const disableCaching = options.disableCaching;\n\n // On reset of our stylesheet, reset memoized cache.\n if (currentMemoizedClassNames !== _memoizedClassNames) {\n currentMemoizedClassNames = _memoizedClassNames;\n map = new Map();\n styleCalcCount = 0;\n }\n\n if (!options.disableCaching) {\n current = _traverseMap(map, styleFunctionOrObject as any);\n current = _traverseMap(current, styleProps);\n }\n\n if (disableCaching || !(current as any)[retVal]) {\n if (styleFunctionOrObject === undefined) {\n (current as any)[retVal] = {} as IProcessedStyleSet<TStyleSet>;\n } else {\n (current as any)[retVal] = mergeCssSets(\n [\n (typeof styleFunctionOrObject === 'function'\n ? styleFunctionOrObject(styleProps)\n : styleFunctionOrObject) as IStyleSet<TStyleSet>,\n ],\n { rtl: !!rtl, specificityMultiplier: options.useStaticStyles ? DEFAULT_SPECIFICITY_MULTIPLIER : undefined },\n );\n }\n\n if (!disableCaching) {\n styleCalcCount++;\n }\n }\n\n if (styleCalcCount > (options.cacheSize || MAX_CACHE_COUNT)) {\n const win = getWindow() as AppWindow;\n if (win?.FabricConfig?.enableClassNameCacheFullWarning) {\n // eslint-disable-next-line no-console\n console.warn(\n `Styles are being recalculated too frequently. Cache miss rate is ${styleCalcCount}/${getClassNamesCount}.`,\n );\n // eslint-disable-next-line no-console\n console.trace();\n }\n\n map.clear();\n styleCalcCount = 0;\n\n // Mutate the options passed in, that's all we can do.\n options.disableCaching = true;\n }\n\n // Note: the retVal is an attached property on the Map; not a key in the Map. We use this attached property to\n // cache the return value for this branch of the graph.\n return (current as any)[retVal];\n };\n\n return getClassNames;\n}\n\nfunction _traverseEdge(current: Map<any, any>, value: any): Map<any, any> {\n value = _normalizeValue(value);\n\n if (!current.has(value)) {\n current.set(value, new Map<any, any>());\n }\n\n return current.get(value);\n}\n\nfunction _traverseMap(current: Map<any, any>, inputs: any[] | Object): Map<any, any> {\n if (typeof inputs === 'function') {\n const cachedInputsFromStyled = (inputs as StyleFunction<any, any>).__cachedInputs__;\n if (cachedInputsFromStyled) {\n // The styled helper will generate the styles function and will attach the cached\n // inputs (consisting of the default styles, customzied styles, and user provided styles.)\n // These should be used as cache keys for deriving the memoized value.\n for (const input of (inputs as any).__cachedInputs__) {\n current = _traverseEdge(current, input);\n }\n } else {\n current = _traverseEdge(current, inputs);\n }\n } else if (typeof inputs === 'object') {\n for (const propName in inputs) {\n if (inputs.hasOwnProperty(propName)) {\n current = _traverseEdge(current, (inputs as any)[propName]);\n }\n }\n }\n\n return current;\n}\n\nfunction _normalizeValue(value: any): string {\n switch (value) {\n case undefined:\n return '__undefined__';\n case null:\n return '__null__';\n default:\n return value;\n }\n}\n","import * as React from 'react';\n\n/**\n * DelayedRender component props.\n *\n * @public\n */\n// eslint-disable-next-line deprecation/deprecation\nexport interface IDelayedRenderProps extends React.Props<{}> {\n /**\n * Number of milliseconds to delay rendering children.\n */\n delay?: number;\n}\n\n/**\n * DelayedRender component state.\n *\n * @internal\n */\nexport interface IDelayedRenderState {\n /**\n * Whether the component is rendered or not.\n */\n isRendered: boolean;\n}\n\n/**\n * Utility component for delaying the render of a child component after a given delay. This component\n * requires a single child component; don't pass in many components. Wrap multiple components in a DIV\n * if necessary.\n *\n * @public\n * {@docCategory DelayedRender}\n */\nexport class DelayedRender extends React.Component<IDelayedRenderProps, IDelayedRenderState> {\n public static defaultProps = {\n delay: 0,\n };\n\n private _timeoutId: number | undefined;\n\n constructor(props: IDelayedRenderProps) {\n super(props);\n this.state = {\n isRendered: false,\n };\n }\n\n public componentDidMount(): void {\n let { delay } = this.props;\n this._timeoutId = window.setTimeout(() => {\n this.setState({\n isRendered: true,\n });\n }, delay);\n }\n\n public componentWillUnmount(): void {\n if (this._timeoutId) {\n clearTimeout(this._timeoutId);\n }\n }\n\n public render(): React.ReactElement<{}> | null {\n return this.state.isRendered ? (React.Children.only(this.props.children) as React.ReactElement<{}>) : null;\n }\n}\n","import * as React from 'react';\nimport { concatStyleSets, IStyleSet, ITheme } from '@uifabric/styling';\nimport { Customizations, CustomizerContext, ICustomizerContext } from '@uifabric/utilities';\nimport { createFactory } from './slots';\nimport { assign } from './utilities';\n\nimport {\n IComponentOptions,\n ICustomizationProps,\n IStyleableComponentProps,\n IStylesFunctionOrObject,\n IToken,\n ITokenFunction,\n IViewComponent,\n} from './IComponent';\nimport { IDefaultSlotProps, ISlotCreator, ValidProps } from './ISlots';\n\n/**\n * Assembles a higher order component based on the following: styles, theme, view, and state.\n * Imposes a separation of concern and centralizes styling processing to increase ease of use and robustness\n * in how components use and apply styling and theming.\n *\n * Automatically merges and applies themes and styles with theme / styleprops having the highest priority.\n * State component, if provided, is passed in props for processing. Props from state / user are automatically processed\n * and styled before finally being passed to view.\n *\n * State components should contain all stateful behavior and should not generate any JSX, but rather simply call\n * the view prop.\n *\n * Views should simply be stateless pure functions that receive all props needed for rendering their output.\n *\n * State component is optional. If state is not provided, created component is essentially a functional\n * stateless component.\n *\n * @param options - component Component options. See IComponentOptions for more detail.\n */\nexport function createComponent<\n TComponentProps extends ValidProps,\n TTokens,\n TStyleSet extends IStyleSet<TStyleSet>,\n TViewProps extends TComponentProps = TComponentProps,\n TStatics = {}\n>(\n view: IViewComponent<TViewProps>,\n options: IComponentOptions<TComponentProps, TTokens, TStyleSet, TViewProps, TStatics> = {},\n): React.FunctionComponent<TComponentProps> & TStatics {\n const { factoryOptions = {} } = options;\n const { defaultProp } = factoryOptions;\n\n const ResultComponent: React.FunctionComponent<TComponentProps> = (\n componentProps: TComponentProps & IStyleableComponentProps<TViewProps, TTokens, TStyleSet>,\n ) => {\n const settings: ICustomizationProps<TViewProps, TTokens, TStyleSet> = _getCustomizations(\n options.displayName,\n React.useContext(CustomizerContext),\n options.fields,\n );\n\n const stateReducer = options.state;\n\n if (stateReducer) {\n // Don't assume state will return all props, so spread useState result over component props.\n componentProps = {\n ...componentProps,\n ...stateReducer(componentProps),\n };\n }\n\n const theme = componentProps.theme || settings.theme;\n\n const tokens = _resolveTokens(componentProps, theme, options.tokens, settings.tokens, componentProps.tokens);\n const styles = _resolveStyles(\n componentProps,\n theme,\n tokens,\n options.styles,\n settings.styles,\n componentProps.styles,\n );\n\n const viewProps = {\n ...componentProps,\n styles,\n tokens,\n _defaultStyles: styles,\n theme,\n } as TViewProps & IDefaultSlotProps<any>;\n\n return view(viewProps);\n };\n\n ResultComponent.displayName = options.displayName || view.name;\n\n // If a shorthand prop is defined, create a factory for the component.\n // TODO: This shouldn't be a concern of createComponent.. factoryOptions should just be forwarded.\n // Need to weigh creating default factories on component creation vs. memoizing them on use in slots.tsx.\n if (defaultProp) {\n (ResultComponent as ISlotCreator<TComponentProps, any>).create = createFactory(ResultComponent, { defaultProp });\n }\n\n assign(ResultComponent, options.statics);\n\n // Later versions of TypeSript should allow us to merge objects in a type safe way and avoid this cast.\n return ResultComponent as React.FunctionComponent<TComponentProps> & TStatics;\n}\n\n/**\n * Resolve all styles functions with both props and tokens and flatten results along with all styles objects.\n */\nfunction _resolveStyles<TProps, TTokens, TStyleSet extends IStyleSet<TStyleSet>>(\n props: TProps,\n theme: ITheme,\n tokens: TTokens,\n ...allStyles: (IStylesFunctionOrObject<TProps, TTokens, TStyleSet> | undefined)[]\n): ReturnType<typeof concatStyleSets> {\n return concatStyleSets(\n ...allStyles.map((styles: IStylesFunctionOrObject<TProps, TTokens, TStyleSet> | undefined) =>\n typeof styles === 'function' ? styles(props, theme, tokens) : styles,\n ),\n );\n}\n\n/**\n * Resolve all tokens functions with props flatten results along with all tokens objects.\n */\nfunction _resolveTokens<TViewProps, TTokens>(\n props: TViewProps,\n theme: ITheme,\n ...allTokens: (IToken<TViewProps, TTokens> | false | null | undefined)[]\n): TTokens {\n const tokens = {};\n\n for (let currentTokens of allTokens) {\n if (currentTokens) {\n // TODO: why is this cast needed? TS seems to think there is a (TToken | Function) union from somewhere.\n currentTokens =\n typeof currentTokens === 'function'\n ? (currentTokens as ITokenFunction<TViewProps, TTokens>)(props, theme)\n : currentTokens;\n\n if (Array.isArray(currentTokens)) {\n currentTokens = _resolveTokens(props, theme, ...currentTokens);\n }\n\n assign(tokens, currentTokens);\n }\n }\n\n return tokens as TTokens;\n}\n\n/**\n * Helper function for calling Customizations.getSettings falling back to default fields.\n *\n * @param displayName Displayable name for component.\n * @param context React context passed to component containing contextual settings.\n * @param fields Optional list of properties to grab from global store and context.\n */\nfunction _getCustomizations<TViewProps, TTokens, TStyleSet extends IStyleSet<TStyleSet>>(\n displayName: string | undefined,\n context: ICustomizerContext,\n fields?: string[],\n): ICustomizationProps<TViewProps, TTokens, TStyleSet> {\n // TODO: do we want field props? should fields be part of IComponent and used here?\n // TODO: should we centrally define DefaultFields? (not exported from styling)\n // TODO: tie this array to ICustomizationProps, such that each array element is keyof ICustomizationProps\n const DefaultFields = ['theme', 'styles', 'tokens'];\n return Customizations.getSettings(fields || DefaultFields, displayName, context.customizations);\n}\n","import * as React from 'react';\nimport { arraysEqual } from './array';\n\n/**\n * Internal state type for the ref.\n */\ntype LocalState<TType, TValue> = {\n refs: (React.Ref<TType | null | TValue> | undefined)[];\n resolver?: (newValue: TType | TValue | null) => void;\n};\n\n/**\n * Set up a ref resolver function given internal state managed for the ref.\n * @param local Set\n */\nconst createResolver = <TType, TValue>(local: LocalState<TType, TValue>) => (newValue: TType | TValue | null) => {\n for (const ref of local.refs) {\n if (typeof ref === 'function') {\n ref(newValue);\n } else if (ref) {\n // work around the immutability of the React.Ref type\n ((ref as unknown) as React.MutableRefObject<TType | TValue | null | undefined>).current = newValue;\n }\n }\n};\n\n/**\n * Helper to merge refs from within class components.\n */\nexport const createMergedRef = <TType, TValue = null>(value?: TValue) => {\n const local: LocalState<TType, TValue> = {\n refs: [] as LocalState<TType, TValue>['refs'],\n };\n\n return (\n ...newRefs: (React.Ref<TType | null | TValue> | undefined)[]\n ): ((newValue: TType | TValue | null) => void) => {\n if (!local.resolver || !arraysEqual(local.refs, newRefs)) {\n local.resolver = createResolver<TType, TValue>(local);\n }\n\n local.refs = newRefs;\n\n return local.resolver!;\n };\n};\n","import { findElementRecursive } from './findElementRecursive';\nimport { DATA_PORTAL_ATTRIBUTE } from './setPortalAttribute';\n\n/**\n * Determine whether a target is within a portal from perspective of root or optional parent.\n * This function only works against portal components that use the setPortalAttribute function.\n * If both parent and child are within the same portal this function will return false.\n * @param target - Element to query portal containment status of.\n * @param parent - Optional parent perspective. Search for containing portal stops at parent\n * (or root if parent is undefined or invalid.)\n */\nexport function portalContainsElement(target: HTMLElement, parent?: HTMLElement): boolean {\n const elementMatch = findElementRecursive(\n target,\n (testElement: HTMLElement) => parent === testElement || testElement.hasAttribute(DATA_PORTAL_ATTRIBUTE),\n );\n return elementMatch !== null && elementMatch.hasAttribute(DATA_PORTAL_ATTRIBUTE);\n}\n","import { IRenderFunction } from '../IRenderFunction';\nimport { createMemoizer } from '../memoize';\n\ninterface IRenderFunctionComposer {\n <TProps>(outer: IRenderFunction<TProps>): (inner: IRenderFunction<TProps>) => IRenderFunction<TProps>;\n}\n\nfunction createComposedRenderFunction<TProps>(\n outer: IRenderFunction<TProps>,\n): (inner: IRenderFunction<TProps>) => IRenderFunction<TProps> {\n const outerMemoizer = createMemoizer((inner: IRenderFunction<TProps>) => {\n const innerMemoizer = createMemoizer((defaultRender: IRenderFunction<TProps>) => {\n return (innerProps?: TProps) => {\n return inner(innerProps, defaultRender);\n };\n });\n\n return (outerProps?: TProps, defaultRender?: IRenderFunction<TProps>) => {\n return outer(outerProps, defaultRender ? innerMemoizer(defaultRender) : inner);\n };\n });\n\n return outerMemoizer;\n}\n\nconst memoizer = createMemoizer<IRenderFunctionComposer>(createComposedRenderFunction);\n\n/**\n * Composes two 'render functions' to produce a final render function that renders\n * the outer function, passing the inner function as 'default render'. The inner function\n * is then passed the original 'default render' prop.\n * @public\n */\nexport function composeRenderFunction<TProps>(\n outer: IRenderFunction<TProps>,\n inner: IRenderFunction<TProps>,\n): IRenderFunction<TProps> {\n return memoizer(outer)(inner);\n}\n","import * as React from 'react';\nimport { GroupedListBase } from './GroupedList.base';\nimport { IList, IListProps } from '../../List';\nimport { IFocusZoneProps } from '../../FocusZone';\nimport { IRefObject, IRenderFunction, IStyleFunctionOrObject } from '../../Utilities';\nimport { IDragDropContext, IDragDropEvents, IDragDropHelper } from '../../utilities/dragdrop/index';\nimport { ISelection, SelectionMode } from '../../utilities/selection/index';\nimport { IViewport } from '../../utilities/decorators/withViewport';\nimport { ITheme, IStyle } from '../../Styling';\nimport { IGroupHeaderProps } from './GroupHeader.types';\nimport { IGroupShowAllProps } from './GroupShowAll.types';\nimport { IGroupFooterProps } from './GroupFooter.types';\n\n/**\n * {@docCategory GroupedList}\n */\nexport enum CollapseAllVisibility {\n hidden = 0,\n visible = 1,\n}\n\n/**\n * {@docCategory GroupedList}\n */\nexport interface IGroupedList extends IList {\n /**\n * Ensures that the list content is updated. Call this in cases where the list props don't change, but the list still\n * needs to be re-evaluated. For example, if a sizer bar is adjusted and causes the list width to change, you can\n * call this to force a re-evaluation. Be aware that this can be an expensive operation and should be done sparingly.\n */\n forceUpdate: () => void;\n\n /**\n * Toggles the collapsed state of all the groups in the list.\n */\n toggleCollapseAll: (allCollapsed: boolean) => void;\n}\n\n/**\n * {@docCategory GroupedList}\n */\nexport interface IGroupedListProps extends React.ClassAttributes<GroupedListBase> {\n /**\n * Theme that is passed in from Higher Order Component\n */\n theme?: ITheme;\n\n /**\n * Style function to be passed in to override the themed or default styles\n */\n styles?: IStyleFunctionOrObject<IGroupedListStyleProps, IGroupedListStyles>;\n\n /**\n * Optional callback to access the IGroupedList interface. Use this instead of ref for accessing\n * the public methods and properties of the component.\n */\n componentRef?: IRefObject<IGroupedList>;\n\n /** Optional class name to add to the root element. */\n className?: string;\n\n /** Boolean value to indicate if the component should render in compact mode. Set to false by default */\n compact?: boolean;\n\n /** Map of callback functions related to drag and drop functionality. */\n dragDropEvents?: IDragDropEvents;\n\n /** helper to manage drag/drop across item and groups */\n dragDropHelper?: IDragDropHelper;\n\n /** Event names and corresponding callbacks that will be registered to groups and rendered elements */\n eventsToRegister?: { eventName: string; callback: (context: IDragDropContext, event?: any) => void }[];\n\n /** Optional override properties to render groups. */\n groupProps?: IGroupRenderProps;\n\n /** Optional grouping instructions. */\n groups?: IGroup[];\n\n /** List of items to render. */\n items: any[];\n\n /** Optional properties to pass through to the FocusZone. */\n focusZoneProps?: IFocusZoneProps;\n\n /** Optional properties to pass through to the list components being rendered. */\n listProps?: IListProps;\n\n /** Optional properties to pass through to the root list component being rendered. */\n rootListProps?: IListProps;\n\n /** Rendering callback to render the group items. */\n onRenderCell: (nestingDepth?: number, item?: any, index?: number) => React.ReactNode;\n\n /** Override the default role for GroupedList. */\n role?: string;\n\n /** Optional selection model to track selection state. */\n selection?: ISelection;\n\n /** Controls how/if the list manages selection. */\n selectionMode?: SelectionMode;\n\n /** Optional Viewport, provided by the parent component. */\n viewport?: IViewport;\n\n /** Optional callback when the group expand state changes between all collapsed and at least one group is expanded. */\n onGroupExpandStateChanged?: (isSomeGroupExpanded: boolean) => void;\n\n /**\n * boolean to control if pages containing unchanged items should be cached, this is a perf optimization\n * The same property in List.Props\n */\n usePageCache?: boolean;\n\n /**\n * Optional callback to determine whether the list should be rendered in full, or virtualized.\n * Virtualization will add and remove pages of items as the user scrolls them into the visible range.\n * This benefits larger list scenarios by reducing the DOM on the screen, but can negatively affect performance for\n * smaller lists.\n * The default implementation will virtualize when this callback is not provided.\n */\n onShouldVirtualize?: (props: IListProps) => boolean;\n\n /**\n * Optional function to override default group height calculation used by list virtualization.\n */\n getGroupHeight?: (group: IGroup, groupIndex: number) => number;\n}\n\n/**\n * {@docCategory GroupedList}\n */\nexport interface IGroup {\n /**\n * Unique identifier for the group.\n */\n key: string;\n\n /**\n * Display name for the group, rendered on the header.\n */\n name: string;\n\n /**\n * Start index for the group within the given items.\n */\n startIndex: number;\n\n /**\n * How many items should be rendered within the group.\n */\n count: number;\n\n /**\n * Nested groups, if any.\n */\n children?: IGroup[];\n\n /**\n * Number indicating the level of nested groups.\n */\n level?: number;\n\n /**\n * Deprecated at 1.0.0, selection state will be controled by the selection store only.\n * @deprecated At 1.0.0, selection state wil be controlled by the selection store only.\n */\n isSelected?: boolean;\n\n /**\n * If all the items in the group are collapsed.\n */\n isCollapsed?: boolean;\n\n /**\n * If the items within the group are summarized or showing all.\n */\n isShowingAll?: boolean;\n\n /**\n * If drag/drop is enabled for the group header.\n */\n isDropEnabled?: boolean;\n\n /**\n * Arbitrary data required to be preserved by the caller.\n */\n data?: any;\n\n /**\n * Optional accessibility label (aria-label) attribute that will be stamped on to the element.\n * If none is specified, the arai-label attribute will contain the group name\n */\n ariaLabel?: string;\n\n /**\n * Optional flag to indicate the group has more data to load than the current group count indicated.\n * This can be used to indicate that a plus should be rendered next to the group count in the header.\n */\n hasMoreData?: boolean;\n}\n\n/**\n * {@docCategory GroupedList}\n */\nexport interface IGroupRenderProps {\n /** Boolean indicating if all groups are in collapsed state. */\n isAllGroupsCollapsed?: boolean;\n\n /** Grouping item limit. */\n getGroupItemLimit?: (group: IGroup) => number;\n\n /** Callback for when all groups are expanded or collapsed. */\n onToggleCollapseAll?: (isAllCollapsed: boolean) => void;\n\n /** Information to pass in to the group header. */\n headerProps?: IGroupHeaderProps;\n\n /** Information to pass in to the group Show all footer. */\n showAllProps?: IGroupShowAllProps;\n\n /** Information to pass in to the group footer. */\n footerProps?: IGroupFooterProps;\n\n /**\n * Override which allows the caller to provide a custom header.\n */\n onRenderHeader?: IRenderFunction<IGroupHeaderProps>;\n\n /**\n * Override which allows the caller to provide a custom Show All link.\n */\n onRenderShowAll?: IRenderFunction<IGroupShowAllProps>;\n\n /**\n * Override which allows the caller to provide a custom footer.\n */\n onRenderFooter?: IRenderFunction<IGroupFooterProps>;\n\n /**\n * Flag to indicate whether to ignore the collapsing icon on header.\n * @defaultvalue CollapseAllVisibility.visible\n */\n collapseAllVisibility?: CollapseAllVisibility;\n\n /**\n * Boolean indicating if empty groups are shown\n * @defaultvalue false\n */\n showEmptyGroups?: boolean;\n\n /**\n * Override which allows the caller to provide a custom aria role\n */\n role?: string;\n}\n\n/**\n * {@docCategory GroupedList}\n */\nexport interface IGroupDividerProps {\n componentRef?: IRefObject<{}>;\n\n /** Boolean value to indicate if the component should render in compact mode. Set to false by default */\n compact?: boolean;\n\n /** Callback to determine if a group has missing items and needs to load them from the server. */\n isGroupLoading?: (group: IGroup) => boolean;\n\n /** Text shown on group headers to indicate the group is being loaded. */\n loadingText?: string;\n\n /** The group to be rendered by the header. */\n group?: IGroup;\n\n /** The index of the group. */\n groupIndex?: number;\n\n /** The indent level of the group. */\n groupLevel?: number;\n\n /** Defines the number of columns a group header needs to span in the case of a grid or treegrid */\n ariaColSpan?: number;\n\n /** Defines the number of items in the current set of listitems or treeitems */\n ariaSetSize?: number;\n\n /** Defines an element's number or position in the current set of listitems or treeitems */\n ariaPosInSet?: number;\n\n /** Defines the number of items in the current set of grid items */\n ariaRowCount?: number;\n\n /** Defines an element's number or position in the current set of grid items */\n ariaRowIndex?: number;\n\n /**\n * Width corresponding to a single level.\n * This is multiplied by the groupLevel to get the full spacer width for the group.\n */\n indentWidth?: number;\n\n /** If all items in the group are selected. */\n selected?: boolean;\n\n /**\n * Deprecated at v.65.1 and will be removed by v 1.0. Use `selected` instead.\n * @deprecated Use `selected` instead.\n */\n isSelected?: boolean;\n\n /** A reference to the viewport in which the header is rendered. */\n viewport?: IViewport;\n\n /** The selection mode of the list the group lives within. */\n selectionMode?: SelectionMode;\n\n /** Text to display for the group footer. */\n footerText?: string;\n\n /** Text to display for the group \"Show All\" link. */\n showAllLinkText?: string;\n\n /** Callback for when the group \"Show All\" link is clicked */\n onToggleSummarize?: (group: IGroup) => void;\n\n /** Callback for when the group header is clicked. */\n onGroupHeaderClick?: (group: IGroup) => void;\n\n /** Callback for when the \"keyup\" event is fired on the group header . */\n onGroupHeaderKeyUp?: (ev: React.KeyboardEvent<HTMLElement>, group: IGroup) => void;\n\n /** Callback for when the group is expanded or collapsed. */\n onToggleCollapse?: (group: IGroup) => void;\n\n /** Callback for when the group is selected. */\n onToggleSelectGroup?: (group: IGroup) => void;\n\n /** Determines if the group selection check box is shown for collapsed groups. */\n isCollapsedGroupSelectVisible?: boolean;\n\n /** Override which allows the caller to provider a custom renderer for the GroupHeader title. */\n onRenderTitle?: IRenderFunction<IGroupHeaderProps>;\n /** Override which allows the caller to provide a custom renderer for just the name. */\n onRenderName?: IRenderFunction<IGroupHeaderProps>;\n\n /** Props for expand/collapse button\n * @deprecated Use {@link IGroupHeaderProps.expandButtonProps} instead.\n */\n expandButtonProps?: React.HTMLAttributes<HTMLButtonElement>;\n\n /** Stores parent group's children. */\n groups?: IGroup[];\n\n /** Custom className */\n className?: string;\n\n /** Theme provided by the Higher Order Component */\n theme?: ITheme;\n}\n\n/**\n * {@docCategory GroupedList}\n */\nexport type IGroupedListStyleProps = Required<Pick<IGroupedListProps, 'theme'>> &\n Pick<IGroupedListProps, 'className'> & {\n /** whether or not the group is collapsed */\n isCollapsed?: boolean;\n\n /** Whether the group is in compact mode or not */\n compact?: boolean;\n };\n\n/**\n * {@docCategory GroupedList}\n */\nexport interface IGroupedListStyles {\n root: IStyle;\n group: IStyle;\n groupIsDropping: IStyle;\n}\n","import * as React from 'react';\n\n/**\n * Hook to initialize and return a constant value. Unlike `React.useMemo`, this is guaranteed to\n * always return the same value (and if the initializer is a function, only call it once).\n * This is similar to setting a private member in a class constructor.\n *\n * If the value should ever change based on dependencies, use `React.useMemo` instead.\n *\n * @param initialValue - Initial value, or function to get the initial value. Similar to `useState`,\n * only the value/function passed in the first time this is called is respected.\n * @returns The value. The identity of this value will always be the same.\n */\nexport function useConst<T>(initialValue: T | (() => T)): T {\n // Use useRef to store the value because it's the least expensive built-in hook that works here\n // (we could also use `const [value] = React.useState(initialValue)` but that's more expensive\n // internally due to reducer handling which we don't need)\n const ref = React.useRef<{ value: T }>();\n if (ref.current === undefined) {\n // Box the value in an object so we can tell if it's initialized even if the initializer\n // returns/is undefined\n ref.current = {\n value: typeof initialValue === 'function' ? (initialValue as Function)() : initialValue,\n };\n }\n return ref.current.value;\n}\n","import * as React from 'react';\nimport { IComponentAs, IComponentAsProps } from '../IComponentAs';\nimport { createMemoizer } from '../memoize';\n\ninterface IComposeComponentAs {\n <TProps>(outer: IComponentAs<TProps>): (inner: IComponentAs<TProps>) => IComponentAs<TProps>;\n}\n\nfunction createComposedComponent<TProps>(\n outer: IComponentAs<TProps>,\n): (inner: IComponentAs<TProps>) => IComponentAs<TProps> {\n const Outer = outer;\n\n const outerMemoizer = createMemoizer((inner: IComponentAs<TProps>) => {\n if (outer === inner) {\n throw new Error('Attempted to compose a component with itself.');\n }\n\n const Inner = inner;\n\n const innerMemoizer = createMemoizer((defaultRender: IComponentAs<TProps>) => {\n const InnerWithDefaultRender: React.ComponentType<IComponentAsProps<TProps>> = (\n innerProps: IComponentAsProps<TProps>,\n ): JSX.Element => {\n return <Inner {...innerProps} defaultRender={defaultRender} />;\n };\n\n return InnerWithDefaultRender;\n });\n\n const OuterWithDefaultRender: React.ComponentType<IComponentAsProps<TProps>> = (\n outerProps: IComponentAsProps<TProps>,\n ): JSX.Element => {\n const { defaultRender } = outerProps;\n\n return <Outer {...outerProps} defaultRender={defaultRender ? innerMemoizer(defaultRender) : Inner} />;\n };\n\n return OuterWithDefaultRender;\n });\n\n return outerMemoizer;\n}\n\nconst componentAsMemoizer = createMemoizer<IComposeComponentAs>(createComposedComponent);\n\n/**\n * Composes two components which conform to the `IComponentAs` specification; that is, two\n * components which accept a `defaultRender` prop, which is a 'default' implementation of\n * a component which accepts the same overall props.\n *\n * @public\n */\nexport function composeComponentAs<TProps>(\n outer: IComponentAs<TProps>,\n inner: IComponentAs<TProps>,\n): IComponentAs<TProps> {\n return componentAsMemoizer(outer)(inner);\n}\n","/**\n * ARIA helper to concatenate attributes, returning undefined if all attributes\n * are undefined. (Empty strings are not a valid ARIA attribute value.)\n *\n * @param ariaAttributes - ARIA attributes to merge\n */\nexport function mergeAriaAttributeValues(...ariaAttributes: (string | undefined | false)[]): string | undefined {\n const mergedAttribute = ariaAttributes\n .filter((arg: string | undefined | false) => arg)\n .join(' ')\n .trim();\n return mergedAttribute === '' ? undefined : mergedAttribute;\n}\n","import * as React from 'react';\nimport {\n Async,\n EventGroup,\n KeyCodes,\n elementContains,\n findScrollableParent,\n getParent,\n getDocument,\n getWindow,\n isElementTabbable,\n css,\n initializeComponentRef,\n FocusRects,\n} from '../../Utilities';\nimport { ISelection, SelectionMode, IObjectWithKey } from './interfaces';\n\n// Selection definitions:\n//\n// Anchor index: the point from which a range selection starts.\n// Focus index: the point from which layout movement originates from.\n//\n// These two can differ. Tests:\n//\n// If you start at index 5\n// Shift click to index 10\n// The focus is 10, the anchor is 5.\n// If you shift click at index 0\n// The anchor remains at 5, the items between 0 and 5 are selected and everything else is cleared.\n// If you click index 8\n// The anchor and focus are set to 8.\n\nconst SELECTION_DISABLED_ATTRIBUTE_NAME = 'data-selection-disabled';\nconst SELECTION_INDEX_ATTRIBUTE_NAME = 'data-selection-index';\nconst SELECTION_SPAN_ATTRIBUTE_NAME = 'data-selection-span';\nconst SELECTION_TOGGLE_ATTRIBUTE_NAME = 'data-selection-toggle';\nconst SELECTION_INVOKE_ATTRIBUTE_NAME = 'data-selection-invoke';\nconst SELECTION_INVOKE_TOUCH_ATTRIBUTE_NAME = 'data-selection-touch-invoke';\nconst SELECTALL_TOGGLE_ALL_ATTRIBUTE_NAME = 'data-selection-all-toggle';\nconst SELECTION_SELECT_ATTRIBUTE_NAME = 'data-selection-select';\n\n/**\n * {@docCategory Selection}\n */\nexport interface ISelectionZone {\n /**\n * Method to ignore subsequent focus.\n */\n ignoreNextFocus: () => void;\n}\n\n/**\n * {@docCategory Selection}\n */\nexport interface ISelectionZoneProps extends React.ClassAttributes<SelectionZone> {\n /**\n * Reference to the component interface.\n */\n componentRef?: () => void;\n /**\n * Required {@link ISelection} instance bound to the {@link SelectionZone}.\n */\n selection: ISelection;\n /**\n * @deprecated No longer in use, focus is now managed by {@link FocusZone}.\n */\n layout?: {};\n /**\n * The mode of Selection, where the value is one of\n * 'none', 'single', or 'multiple'.\n *\n * @defaultvalue {@link SelectionMode.multiple}\n */\n selectionMode?: SelectionMode;\n /**\n * If true, selection is preserved on outer click.\n */\n selectionPreservedOnEmptyClick?: boolean;\n /**\n * If true, disables automatic selection on input elements.\n */\n disableAutoSelectOnInputElements?: boolean;\n /**\n * If true, modal selection is enabled on touch event.\n */\n enterModalOnTouch?: boolean;\n /**\n * Determines whether elements with the attribute `data-selection-touch-invoke` should be used as invocation targets\n * for an item if the user is using touch.\n *\n * @defaultvalue false\n */\n enableTouchInvocationTarget?: boolean;\n /**\n * Determines if an item is selected on focus.\n *\n * @defaultvalue true\n */\n isSelectedOnFocus?: boolean;\n /**\n * Determines if elements within the selection zone that DO NOT have the 'data-selection-toggle' or\n * 'data-selection-all-toggle' attribute are clickable and can alter the selection.\n *\n * @defaultvalue true\n */\n selectionClearedOnSurfaceClick?: boolean;\n\n /**\n * Determines if pressing the Escape clears the selection.\n *\n * @defaultvalue true\n */\n selectionClearedOnEscapePress?: boolean;\n\n /**\n * Allows the default toggle behavior to be overridden.\n * When set to `true` users do not have press a modifier key (e.g., ctrl or meta)\n * to toggle values.\n *\n * @default false\n */\n toggleWithoutModifierPressed?: boolean;\n\n /**\n * Optional callback for when an item is\n * invoked via ENTER or double-click.\n */\n onItemInvoked?: (item?: IObjectWithKey, index?: number, ev?: Event) => void;\n /**\n * Optional callback for when an\n * item's contextual menu action occurs.\n */\n onItemContextMenu?: (item?: any, index?: number, ev?: Event) => void | boolean;\n /**\n * Additional CSS class(es) to apply to the SelectionZone.\n */\n className?: string;\n}\n\n/**\n * {@docCategory Selection}\n */\nexport interface ISelectionZoneState {\n isModal: boolean | undefined;\n}\n\n/**\n * {@docCategory Selection}\n */\nexport class SelectionZone extends React.Component<ISelectionZoneProps, ISelectionZoneState> {\n public static defaultProps = {\n isSelectedOnFocus: true,\n toggleWithoutModifierPressed: false,\n selectionMode: SelectionMode.multiple,\n selectionClearedOnEscapePress: true,\n };\n\n private _async: Async;\n private _events: EventGroup;\n private _root = React.createRef<HTMLDivElement>();\n private _isCtrlPressed: boolean;\n private _isShiftPressed: boolean;\n private _isMetaPressed: boolean;\n private _isTabPressed: boolean;\n private _shouldHandleFocus: boolean;\n private _shouldHandleFocusTimeoutId: number | undefined;\n private _isTouch: boolean;\n private _isTouchTimeoutId: number | undefined;\n\n public static getDerivedStateFromProps(\n nextProps: ISelectionZoneProps,\n prevState: ISelectionZoneState,\n ): ISelectionZoneState {\n const isModal = nextProps.selection.isModal && nextProps.selection.isModal();\n\n return {\n ...prevState,\n isModal,\n };\n }\n\n constructor(props: ISelectionZoneProps) {\n super(props);\n\n this._events = new EventGroup(this);\n this._async = new Async(this);\n initializeComponentRef(this);\n\n const { selection } = this.props;\n\n // Reflect the initial modal state of selection into the state.\n const isModal = selection.isModal && selection.isModal();\n\n this.state = {\n isModal,\n };\n }\n\n public componentDidMount(): void {\n const win = getWindow(this._root.current);\n\n // Track the latest modifier keys globally.\n this._events.on(win, 'keydown, keyup', this._updateModifiers, true);\n this._events.on(document, 'click', this._findScrollParentAndTryClearOnEmptyClick);\n this._events.on(document.body, 'touchstart', this._onTouchStartCapture, true);\n this._events.on(document.body, 'touchend', this._onTouchStartCapture, true);\n\n // Subscribe to the selection to keep modal state updated.\n this._events.on(this.props.selection, 'change', this._onSelectionChange);\n }\n\n public render(): JSX.Element {\n const { isModal } = this.state;\n\n return (\n <div\n className={css('ms-SelectionZone', this.props.className, {\n 'ms-SelectionZone--modal': !!isModal,\n })}\n ref={this._root}\n onKeyDown={this._onKeyDown}\n onMouseDown={this._onMouseDown}\n onKeyDownCapture={this._onKeyDownCapture}\n onClick={this._onClick}\n role=\"presentation\"\n onDoubleClick={this._onDoubleClick}\n onContextMenu={this._onContextMenu}\n onMouseDownCapture={this._onMouseDownCapture}\n onFocusCapture={this._onFocus}\n data-selection-is-modal={isModal ? true : undefined}\n >\n {this.props.children}\n <FocusRects />\n </div>\n );\n }\n\n public componentDidUpdate(previousProps: ISelectionZoneProps): void {\n const { selection } = this.props;\n\n if (selection !== previousProps.selection) {\n // Whenever selection changes, update the subscripton to keep modal state updated.\n this._events.off(previousProps.selection);\n this._events.on(selection, 'change', this._onSelectionChange);\n }\n }\n\n public componentWillUnmount(): void {\n this._events.dispose();\n this._async.dispose();\n }\n\n /**\n * In some cases, the consuming scenario requires to set focus on a row without having SelectionZone\n * react to the event. Note that focus events in IE \\<= 11 will occur asynchronously after .focus() has\n * been called on an element, so we need a flag to store the idea that we will bypass the \"next\"\n * focus event that occurs. This method does that.\n */\n public ignoreNextFocus = (): void => {\n this._handleNextFocus(false);\n };\n\n private _onSelectionChange = (): void => {\n const { selection } = this.props;\n\n const isModal = selection.isModal && selection.isModal();\n\n this.setState({\n isModal,\n });\n };\n\n private _onMouseDownCapture = (ev: React.MouseEvent<HTMLElement>): void => {\n let target = ev.target as HTMLElement;\n\n if (document.activeElement !== target && !elementContains(document.activeElement as HTMLElement, target)) {\n this.ignoreNextFocus();\n return;\n }\n\n if (!elementContains(target, this._root.current)) {\n return;\n }\n\n while (target !== this._root.current) {\n if (this._hasAttribute(target, SELECTION_INVOKE_ATTRIBUTE_NAME)) {\n this.ignoreNextFocus();\n break;\n }\n\n target = getParent(target) as HTMLElement;\n }\n };\n\n /**\n * When we focus an item, for single/multi select scenarios, we should try to select it immediately\n * as long as the focus did not originate from a mouse down/touch event. For those cases, we handle them\n * specially.\n */\n private _onFocus = (ev: React.FocusEvent<HTMLElement>): void => {\n const target = ev.target as HTMLElement;\n const { selection } = this.props;\n const isToggleModifierPressed = this._isCtrlPressed || this._isMetaPressed;\n\n const selectionMode = this._getSelectionMode();\n\n if (this._shouldHandleFocus && selectionMode !== SelectionMode.none) {\n const isToggle = this._hasAttribute(target, SELECTION_TOGGLE_ATTRIBUTE_NAME);\n const itemRoot = this._findItemRoot(target);\n\n if (!isToggle && itemRoot) {\n const index = this._getItemIndex(itemRoot);\n const span = this._getItemSpan(itemRoot);\n\n if (span === undefined) {\n if (isToggleModifierPressed) {\n // set anchor only.\n selection.setIndexSelected(index, selection.isIndexSelected(index), true);\n if (this.props.enterModalOnTouch && this._isTouch && selection.setModal) {\n selection.setModal(true);\n this._setIsTouch(false);\n }\n } else {\n if (this.props.isSelectedOnFocus) {\n this._onItemSurfaceClick('focus', index);\n }\n }\n }\n }\n }\n\n this._handleNextFocus(false);\n };\n\n private _onMouseDown = (ev: React.MouseEvent<HTMLElement>): void => {\n this._updateModifiers(ev);\n\n const { toggleWithoutModifierPressed } = this.props;\n\n let target = ev.target as HTMLElement;\n const itemRoot = this._findItemRoot(target);\n\n // No-op if selection is disabled\n if (this._isSelectionDisabled(target)) {\n return;\n }\n\n while (target !== this._root.current) {\n if (this._hasAttribute(target, SELECTALL_TOGGLE_ALL_ATTRIBUTE_NAME)) {\n break;\n } else if (itemRoot) {\n if (this._hasAttribute(target, SELECTION_TOGGLE_ATTRIBUTE_NAME)) {\n break;\n } else if (this._hasAttribute(target, SELECTION_INVOKE_ATTRIBUTE_NAME)) {\n break;\n } else if (\n (target === itemRoot || this._shouldAutoSelect(target)) &&\n !this._isShiftPressed &&\n !this._isCtrlPressed &&\n !this._isMetaPressed &&\n !toggleWithoutModifierPressed\n ) {\n this._onInvokeMouseDown(ev, this._getItemIndex(itemRoot), this._getItemSpan(itemRoot));\n\n break;\n } else if (\n this.props.disableAutoSelectOnInputElements &&\n (target.tagName === 'A' || target.tagName === 'BUTTON' || target.tagName === 'INPUT')\n ) {\n return;\n }\n }\n\n target = getParent(target) as HTMLElement;\n }\n };\n\n private _onTouchStartCapture = (ev: React.TouchEvent<HTMLElement>): void => {\n this._setIsTouch(true);\n };\n\n private _onClick = (ev: React.MouseEvent<HTMLElement>): void => {\n const { enableTouchInvocationTarget = false } = this.props;\n\n this._updateModifiers(ev);\n\n let target = ev.target as HTMLElement;\n const itemRoot = this._findItemRoot(target);\n\n const isSelectionDisabled = this._isSelectionDisabled(target);\n\n while (target !== this._root.current) {\n if (this._hasAttribute(target, SELECTALL_TOGGLE_ALL_ATTRIBUTE_NAME)) {\n if (!isSelectionDisabled) {\n this._onToggleAllClick(ev);\n }\n break;\n } else if (itemRoot) {\n const index = this._getItemIndex(itemRoot);\n const span = this._getItemSpan(itemRoot);\n\n if (this._hasAttribute(target, SELECTION_TOGGLE_ATTRIBUTE_NAME)) {\n if (!isSelectionDisabled) {\n if (this._isShiftPressed) {\n this._onItemSurfaceClick('click', index, span);\n } else {\n this._onToggleClick(ev, index, span);\n }\n }\n break;\n } else if (\n (this._isTouch &&\n enableTouchInvocationTarget &&\n this._hasAttribute(target, SELECTION_INVOKE_TOUCH_ATTRIBUTE_NAME)) ||\n this._hasAttribute(target, SELECTION_INVOKE_ATTRIBUTE_NAME)\n ) {\n if (span === undefined) {\n // Items should be invokable even if selection is disabled.\n this._onInvokeClick(ev, index);\n }\n break;\n } else if (target === itemRoot) {\n if (!isSelectionDisabled) {\n this._onItemSurfaceClick('click', index, span);\n }\n break;\n } else if (target.tagName === 'A' || target.tagName === 'BUTTON' || target.tagName === 'INPUT') {\n return;\n }\n }\n\n target = getParent(target) as HTMLElement;\n }\n };\n\n private _onContextMenu = (ev: React.MouseEvent<HTMLElement>): void => {\n const target = ev.target as HTMLElement;\n\n const { onItemContextMenu, selection } = this.props;\n if (onItemContextMenu) {\n const itemRoot = this._findItemRoot(target);\n\n if (itemRoot) {\n const index = this._getItemIndex(itemRoot);\n\n this._onInvokeMouseDown(ev, index);\n\n const skipPreventDefault = onItemContextMenu(selection.getItems()[index], index, ev.nativeEvent);\n\n // In order to keep back compat, if the value here is undefined, then we should still\n // call preventDefault(). Only in the case where true is explicitly returned should\n // the call be skipped.\n if (!skipPreventDefault) {\n ev.preventDefault();\n }\n }\n }\n };\n\n private _isSelectionDisabled(target: HTMLElement): boolean {\n if (this._getSelectionMode() === SelectionMode.none) {\n return true;\n }\n\n while (target !== this._root.current) {\n if (this._hasAttribute(target, SELECTION_DISABLED_ATTRIBUTE_NAME)) {\n return true;\n }\n target = getParent(target) as HTMLElement;\n }\n\n return false;\n }\n\n /**\n * In multi selection, if you double click within an item's root (but not within the invoke element or\n * input elements), we should execute the invoke handler.\n */\n private _onDoubleClick = (ev: React.MouseEvent<HTMLElement>): void => {\n let target = ev.target as HTMLElement;\n\n const { onItemInvoked } = this.props;\n const itemRoot = this._findItemRoot(target);\n\n if (itemRoot && onItemInvoked && !this._isInputElement(target)) {\n const index = this._getItemIndex(itemRoot);\n\n while (target !== this._root.current) {\n if (\n this._hasAttribute(target, SELECTION_TOGGLE_ATTRIBUTE_NAME) ||\n this._hasAttribute(target, SELECTION_INVOKE_ATTRIBUTE_NAME)\n ) {\n break;\n } else if (target === itemRoot) {\n this._onInvokeClick(ev, index);\n break;\n }\n\n target = getParent(target) as HTMLElement;\n }\n\n target = getParent(target) as HTMLElement;\n }\n };\n\n private _onKeyDownCapture = (ev: React.KeyboardEvent<HTMLElement>): void => {\n this._updateModifiers(ev);\n\n this._handleNextFocus(true);\n };\n\n private _onKeyDown = (ev: React.KeyboardEvent<HTMLElement>): boolean | undefined => {\n this._updateModifiers(ev);\n\n let target = ev.target as HTMLElement;\n\n const isSelectionDisabled = this._isSelectionDisabled(target);\n\n const { selection, selectionClearedOnEscapePress } = this.props;\n // eslint-disable-next-line deprecation/deprecation\n const isSelectAllKey = ev.which === KeyCodes.a && (this._isCtrlPressed || this._isMetaPressed);\n const isClearSelectionKey = ev.which === KeyCodes.escape;\n\n // Ignore key downs from input elements.\n if (this._isInputElement(target)) {\n // A key was pressed while an item in this zone was focused.\n return;\n }\n\n const selectionMode = this._getSelectionMode();\n\n // If ctrl-a is pressed, select all (if all are not already selected.)\n if (isSelectAllKey && selectionMode === SelectionMode.multiple && !selection.isAllSelected()) {\n if (!isSelectionDisabled) {\n selection.setAllSelected(true);\n }\n ev.stopPropagation();\n ev.preventDefault();\n return;\n }\n\n // If escape is pressed and the component is configured to clear on escape press,\n // clear selection (if any are selected.)\n if (selectionClearedOnEscapePress && isClearSelectionKey && selection.getSelectedCount() > 0) {\n if (!isSelectionDisabled) {\n selection.setAllSelected(false);\n }\n ev.stopPropagation();\n ev.preventDefault();\n return;\n }\n\n const itemRoot = this._findItemRoot(target);\n\n // If a key was pressed within an item, we should treat \"enters\" as invokes and \"space\" as toggle\n if (itemRoot) {\n const index = this._getItemIndex(itemRoot);\n const span = this._getItemSpan(itemRoot);\n\n while (target !== this._root.current) {\n if (this._hasAttribute(target, SELECTION_TOGGLE_ATTRIBUTE_NAME)) {\n // For toggle elements, assuming they are rendered as buttons, they will generate a click event,\n // so we can no-op for any keydowns in this case.\n break;\n } else if (this._shouldAutoSelect(target)) {\n if (!isSelectionDisabled && span === undefined) {\n // If the event went to an element which should trigger auto-select, select it and then let\n // the default behavior kick in.\n this._onInvokeMouseDown(ev, index, span);\n }\n break;\n } else if (\n (ev.which === KeyCodes.enter || ev.which === KeyCodes.space) &&\n (target.tagName === 'BUTTON' || target.tagName === 'A' || target.tagName === 'INPUT')\n ) {\n return false;\n } else if (target === itemRoot) {\n if (ev.which === KeyCodes.enter) {\n if (span === undefined) {\n // Items should be invokable even if selection is disabled.\n this._onInvokeClick(ev, index);\n ev.preventDefault();\n }\n return;\n } else if (ev.which === KeyCodes.space) {\n if (!isSelectionDisabled) {\n this._onToggleClick(ev, index, span);\n }\n ev.preventDefault();\n return;\n }\n break;\n }\n\n target = getParent(target) as HTMLElement;\n }\n }\n };\n\n private _onToggleAllClick(ev: React.MouseEvent<HTMLElement>): void {\n const { selection } = this.props;\n\n const selectionMode = this._getSelectionMode();\n\n if (selectionMode === SelectionMode.multiple) {\n selection.toggleAllSelected();\n ev.stopPropagation();\n ev.preventDefault();\n }\n }\n\n private _onToggleClick(\n ev: React.MouseEvent<HTMLElement> | React.KeyboardEvent<HTMLElement>,\n index: number,\n span?: number,\n ): void {\n const { selection } = this.props;\n\n const selectionMode = this._getSelectionMode();\n\n selection.setChangeEvents(false);\n\n if (\n this.props.enterModalOnTouch &&\n this._isTouch &&\n (span !== undefined ? !selection.isRangeSelected(index, span) : !selection.isIndexSelected(index)) &&\n selection.setModal\n ) {\n selection.setModal(true);\n this._setIsTouch(false);\n }\n\n if (selectionMode === SelectionMode.multiple) {\n if (span !== undefined) {\n selection.toggleRangeSelected(index, span);\n } else {\n selection.toggleIndexSelected(index);\n }\n } else if (selectionMode === SelectionMode.single) {\n if (span === undefined || span === 1) {\n const isSelected = selection.isIndexSelected(index);\n const isModal = selection.isModal && selection.isModal();\n selection.setAllSelected(false);\n selection.setIndexSelected(index, !isSelected, true);\n if (isModal && selection.setModal) {\n // Since the above call to setAllSelected(false) clears modal state,\n // restore it. This occurs because the SelectionMode of the Selection\n // may differ from the SelectionZone.\n selection.setModal(true);\n }\n }\n } else {\n selection.setChangeEvents(true);\n return;\n }\n\n selection.setChangeEvents(true);\n\n ev.stopPropagation();\n\n // NOTE: ev.preventDefault is not called for toggle clicks, because this will kill the browser behavior\n // for checkboxes if you use a checkbox for the toggle.\n }\n\n private _onInvokeClick(ev: React.MouseEvent<HTMLElement> | React.KeyboardEvent<HTMLElement>, index: number): void {\n const { selection, onItemInvoked } = this.props;\n\n if (onItemInvoked) {\n onItemInvoked(selection.getItems()[index], index, ev.nativeEvent);\n ev.preventDefault();\n ev.stopPropagation();\n }\n }\n\n private _onItemSurfaceClick(type: 'focus' | 'click', index: number, span?: number): void {\n const { selection, toggleWithoutModifierPressed } = this.props;\n const isToggleModifierPressed = this._isCtrlPressed || this._isMetaPressed;\n\n const selectionMode = this._getSelectionMode();\n\n if (selectionMode === SelectionMode.multiple) {\n if (this._isShiftPressed && !this._isTabPressed) {\n if (span !== undefined) {\n selection.selectToRange?.(index, span, !isToggleModifierPressed);\n } else {\n selection.selectToIndex(index, !isToggleModifierPressed);\n }\n } else if (type === 'click' && (isToggleModifierPressed || toggleWithoutModifierPressed)) {\n if (span !== undefined) {\n selection.toggleRangeSelected(index, span);\n } else {\n selection.toggleIndexSelected(index);\n }\n } else {\n this._clearAndSelectIndex(index, span);\n }\n } else if (selectionMode === SelectionMode.single) {\n this._clearAndSelectIndex(index, span);\n }\n }\n\n private _onInvokeMouseDown(\n ev: React.MouseEvent<HTMLElement> | React.KeyboardEvent<HTMLElement>,\n index: number,\n span?: number,\n ): void {\n const { selection } = this.props;\n\n if (span !== undefined) {\n if (selection.isRangeSelected(index, span)) {\n return;\n }\n } else {\n // Only do work if item is not selected.\n if (selection.isIndexSelected(index)) {\n return;\n }\n }\n\n this._clearAndSelectIndex(index, span);\n }\n\n /**\n * To avoid high startup cost of traversing the DOM on component mount,\n * defer finding the scrollable parent until a click interaction.\n *\n * The styles will probably already calculated since we're running in a click handler,\n * so this is less likely to cause layout thrashing then doing it in mount.\n */\n private _findScrollParentAndTryClearOnEmptyClick(ev: MouseEvent) {\n const scrollParent = findScrollableParent(this._root.current) as HTMLElement;\n // unbind this handler and replace binding with a binding on the actual scrollable parent\n this._events.off(document, 'click', this._findScrollParentAndTryClearOnEmptyClick);\n this._events.on(scrollParent, 'click', this._tryClearOnEmptyClick);\n\n // If we clicked inside the scrollable parent, call through to the handler on this click.\n if ((scrollParent && ev.target instanceof Node && scrollParent.contains(ev.target)) || scrollParent === ev.target) {\n this._tryClearOnEmptyClick(ev);\n }\n }\n\n private _tryClearOnEmptyClick(ev: MouseEvent): void {\n if (!this.props.selectionPreservedOnEmptyClick && this._isNonHandledClick(ev.target as HTMLElement)) {\n this.props.selection.setAllSelected(false);\n }\n }\n\n private _clearAndSelectIndex(index: number, span?: number): void {\n const { selection, selectionClearedOnSurfaceClick = true } = this.props;\n const isAlreadySingleSelected =\n (span === undefined || span === 1) && selection.getSelectedCount() === 1 && selection.isIndexSelected(index);\n\n if (!isAlreadySingleSelected && selectionClearedOnSurfaceClick) {\n const isModal = selection.isModal && selection.isModal();\n selection.setChangeEvents(false);\n selection.setAllSelected(false);\n if (span !== undefined) {\n selection.setRangeSelected?.(index, span, true, true);\n } else {\n selection.setIndexSelected(index, true, true);\n }\n if (isModal || (this.props.enterModalOnTouch && this._isTouch)) {\n if (selection.setModal) {\n selection.setModal(true);\n }\n if (this._isTouch) {\n this._setIsTouch(false);\n }\n }\n selection.setChangeEvents(true);\n }\n }\n\n /**\n * We need to track the modifier key states so that when focus events occur, which do not contain\n * modifier states in the Event object, we know how to behave.\n */\n private _updateModifiers(ev: React.KeyboardEvent<HTMLElement> | React.MouseEvent<HTMLElement>): void {\n this._isShiftPressed = ev.shiftKey;\n this._isCtrlPressed = ev.ctrlKey;\n this._isMetaPressed = ev.metaKey;\n\n const keyCode = (ev as React.KeyboardEvent<HTMLElement>).keyCode;\n this._isTabPressed = keyCode ? keyCode === KeyCodes.tab : false;\n }\n\n private _findItemRoot(target: HTMLElement): HTMLElement | undefined {\n const { selection } = this.props;\n\n while (target !== this._root.current) {\n const indexValue = target.getAttribute(SELECTION_INDEX_ATTRIBUTE_NAME);\n const index = Number(indexValue);\n\n if (indexValue !== null && index >= 0 && index < selection.getItems().length) {\n break;\n }\n\n target = getParent(target) as HTMLElement;\n }\n\n if (target === this._root.current) {\n return undefined;\n }\n\n return target;\n }\n\n private _getItemIndex(itemRoot: HTMLElement): number {\n const indexValue = parseInt(itemRoot.getAttribute(SELECTION_INDEX_ATTRIBUTE_NAME) ?? '', 10);\n\n return isNaN(indexValue) ? -1 : indexValue;\n }\n\n private _getItemSpan(itemRoot: HTMLElement): number | undefined {\n const spanValue = parseInt(itemRoot.getAttribute(SELECTION_SPAN_ATTRIBUTE_NAME) ?? '', 10);\n\n return isNaN(spanValue) ? undefined : spanValue;\n }\n\n private _shouldAutoSelect(element: HTMLElement): boolean {\n return this._hasAttribute(element, SELECTION_SELECT_ATTRIBUTE_NAME);\n }\n\n private _hasAttribute(element: HTMLElement, attributeName: string): boolean {\n let isToggle = false;\n\n while (!isToggle && element !== this._root.current) {\n const value = element.getAttribute(attributeName);\n if (value === 'false') {\n isToggle = false;\n break;\n }\n isToggle = value === 'true';\n element = getParent(element) as HTMLElement;\n }\n\n return isToggle;\n }\n\n private _isInputElement(element: HTMLElement): boolean {\n return element.tagName === 'INPUT' || element.tagName === 'TEXTAREA';\n }\n\n private _isNonHandledClick(element: HTMLElement): boolean {\n const doc = getDocument();\n\n if (doc && element) {\n while (element && element !== doc.documentElement) {\n if (isElementTabbable(element)) {\n return false;\n }\n\n element = getParent(element) as HTMLElement;\n }\n }\n\n return true;\n }\n\n private _handleNextFocus(handleFocus: boolean): void {\n if (this._shouldHandleFocusTimeoutId) {\n this._async.clearTimeout(this._shouldHandleFocusTimeoutId);\n this._shouldHandleFocusTimeoutId = undefined;\n }\n\n this._shouldHandleFocus = handleFocus;\n\n if (handleFocus) {\n this._async.setTimeout(() => {\n this._shouldHandleFocus = false;\n }, 100);\n }\n }\n\n private _setIsTouch(isTouch: boolean): void {\n if (this._isTouchTimeoutId) {\n this._async.clearTimeout(this._isTouchTimeoutId);\n this._isTouchTimeoutId = undefined;\n }\n\n this._isTouch = true;\n\n if (isTouch) {\n this._async.setTimeout(() => {\n this._isTouch = false;\n }, 300);\n }\n }\n\n private _getSelectionMode(): SelectionMode {\n const { selection } = this.props;\n\n const { selectionMode = selection ? selection.mode : SelectionMode.none } = this.props;\n\n return selectionMode;\n }\n}\n","import { IObjectWithKey, ISelection, SELECTION_CHANGE, SELECTION_ITEMS_CHANGE, SelectionMode } from './Selection.types';\nimport { EventGroup } from '../EventGroup';\n\n/**\n * {@docCategory Selection}\n */\nexport interface ISelectionOptions<TItem = IObjectWithKey> {\n onSelectionChanged?: () => void;\n onItemsChanged?: () => void;\n /** Custom logic to generate item keys. Required if `TItem` does not have a `key` property. */\n getKey?: (item: TItem, index?: number) => string | number;\n canSelectItem?: (item: TItem, index?: number) => boolean;\n selectionMode?: SelectionMode;\n items?: TItem[];\n}\n\n/**\n * Selection options with required `getKey` property.\n * {@docCategory Selection}\n */\nexport type ISelectionOptionsWithRequiredGetKey<TItem> = ISelectionOptions<TItem> &\n Required<Pick<ISelectionOptions<TItem>, 'getKey'>>;\n\n/**\n * {@docCategory Selection}\n */\nexport class Selection<TItem = IObjectWithKey> implements ISelection<TItem> {\n /** Number of items selected. Do not modify. */\n public count: number;\n public readonly mode: SelectionMode;\n\n private _getKey: (item: TItem, index?: number) => string | number;\n private _canSelectItem: (item: TItem, index?: number) => boolean;\n\n private _changeEventSuppressionCount: number;\n private _items: TItem[];\n private _selectedItems: TItem[] | null;\n private _selectedIndices: number[] | undefined;\n private _isAllSelected: boolean;\n private _exemptedIndices: { [index: string]: boolean };\n private _exemptedCount: number;\n private _keyToIndexMap: { [key: string]: number };\n private _anchoredIndex: number;\n private _onSelectionChanged: (() => void) | undefined;\n private _onItemsChanged: (() => void) | undefined;\n private _hasChanged!: boolean;\n private _unselectableIndices!: { [index: string]: boolean };\n private _unselectableCount: number;\n private _isModal: boolean;\n\n /**\n * Create a new Selection. If `TItem` does not have a `key` property, you must provide an options\n * object with a `getKey` implementation. Providing options is optional otherwise.\n * (At most one `options` object is accepted.)\n */\n constructor(\n ...options: TItem extends IObjectWithKey // If the item type has a built-in key...\n ? [] | [ISelectionOptions<TItem>] // Then the arguments can be empty or have the options without `getKey`\n : [ISelectionOptionsWithRequiredGetKey<TItem>] // Otherwise, arguments require options with `getKey`.\n ) {\n const {\n onSelectionChanged,\n onItemsChanged,\n getKey,\n canSelectItem = () => true,\n items,\n selectionMode = SelectionMode.multiple,\n } = options[0] || ({} as ISelectionOptions<TItem>);\n\n this.mode = selectionMode;\n\n this._getKey = getKey || defaultGetKey;\n\n this._changeEventSuppressionCount = 0;\n this._exemptedCount = 0;\n this._anchoredIndex = 0;\n this._unselectableCount = 0;\n\n this._onSelectionChanged = onSelectionChanged;\n this._onItemsChanged = onItemsChanged;\n this._canSelectItem = canSelectItem;\n this._keyToIndexMap = {};\n\n this._isModal = false;\n\n this.setItems(items || [], true);\n\n this.count = this.getSelectedCount();\n }\n\n public canSelectItem(item: TItem, index?: number): boolean {\n if (typeof index === 'number' && index < 0) {\n return false;\n }\n\n return this._canSelectItem(item, index);\n }\n\n public getKey(item: TItem, index?: number): string {\n const key = this._getKey(item, index);\n\n return typeof key === 'number' || key ? `${key}` : '';\n }\n\n public setChangeEvents(isEnabled: boolean, suppressChange?: boolean): void {\n this._changeEventSuppressionCount += isEnabled ? -1 : 1;\n\n if (this._changeEventSuppressionCount === 0 && this._hasChanged) {\n this._hasChanged = false;\n\n if (!suppressChange) {\n this._change();\n }\n }\n }\n\n public isModal(): boolean {\n return this._isModal;\n }\n\n public setModal(isModal: boolean): void {\n if (this._isModal !== isModal) {\n this.setChangeEvents(false);\n\n this._isModal = isModal;\n\n if (!isModal) {\n this.setAllSelected(false);\n }\n\n this._change();\n\n this.setChangeEvents(true);\n }\n }\n\n /**\n * Selection needs the items, call this method to set them. If the set\n * of items is the same, this will re-evaluate selection and index maps.\n * Otherwise, shouldClear should be set to true, so that selection is\n * cleared.\n */\n public setItems(items: TItem[], shouldClear: boolean = true): void {\n const newKeyToIndexMap: { [key: string]: number } = {};\n const newUnselectableIndices: { [key: string]: boolean } = {};\n let hasSelectionChanged = false;\n\n this.setChangeEvents(false);\n\n // Reset the unselectable count.\n this._unselectableCount = 0;\n\n let haveItemsChanged = false;\n\n // Build lookup table for quick selection evaluation.\n for (let i = 0; i < items.length; i++) {\n const item = items[i];\n\n if (item) {\n const key = this.getKey(item, i);\n\n if (key) {\n if (!haveItemsChanged && (!(key in this._keyToIndexMap) || this._keyToIndexMap[key] !== i)) {\n haveItemsChanged = true;\n }\n\n newKeyToIndexMap[key] = i;\n }\n }\n\n newUnselectableIndices[i] = item && !this.canSelectItem(item);\n if (newUnselectableIndices[i]) {\n this._unselectableCount++;\n }\n }\n\n if (shouldClear || items.length === 0) {\n this._setAllSelected(false, true);\n }\n\n // Check the exemption list for discrepencies.\n const newExemptedIndicies: { [key: string]: boolean } = {};\n let newExemptedCount = 0;\n\n for (const indexProperty in this._exemptedIndices) {\n if (this._exemptedIndices.hasOwnProperty(indexProperty)) {\n const index = Number(indexProperty);\n const item = this._items[index];\n const exemptKey = item ? this.getKey(item, Number(index)) : undefined;\n const newIndex = exemptKey ? newKeyToIndexMap[exemptKey] : index;\n\n if (newIndex === undefined) {\n // The item has likely been replaced or removed.\n hasSelectionChanged = true;\n } else {\n // We know the new index of the item. update the existing exemption table.\n newExemptedIndicies[newIndex] = true;\n newExemptedCount++;\n hasSelectionChanged = hasSelectionChanged || newIndex !== index;\n }\n }\n }\n\n if (this._items && this._exemptedCount === 0 && items.length !== this._items.length && this._isAllSelected) {\n // If everything was selected but the number of items has changed, selection has changed.\n hasSelectionChanged = true;\n }\n\n if (!haveItemsChanged) {\n for (const key of Object.keys(this._keyToIndexMap)) {\n if (!(key in newKeyToIndexMap)) {\n haveItemsChanged = true;\n break;\n }\n }\n }\n\n this._exemptedIndices = newExemptedIndicies;\n this._exemptedCount = newExemptedCount;\n this._keyToIndexMap = newKeyToIndexMap;\n this._unselectableIndices = newUnselectableIndices;\n this._items = items;\n this._selectedItems = null;\n\n if (hasSelectionChanged) {\n this._updateCount();\n }\n\n if (haveItemsChanged) {\n EventGroup.raise(this, SELECTION_ITEMS_CHANGE);\n\n if (this._onItemsChanged) {\n this._onItemsChanged();\n }\n }\n\n if (hasSelectionChanged) {\n this._change();\n }\n\n this.setChangeEvents(true);\n }\n\n public getItems(): TItem[] {\n return this._items;\n }\n\n public getSelection(): TItem[] {\n if (!this._selectedItems) {\n this._selectedItems = [];\n\n const items = this._items;\n\n if (items) {\n for (let i = 0; i < items.length; i++) {\n if (this.isIndexSelected(i)) {\n this._selectedItems.push(items[i]);\n }\n }\n }\n }\n\n return this._selectedItems;\n }\n\n public getSelectedCount(): number {\n return this._isAllSelected\n ? this._items.length - this._exemptedCount - this._unselectableCount\n : this._exemptedCount;\n }\n\n public getSelectedIndices(): number[] {\n if (!this._selectedIndices) {\n this._selectedIndices = [];\n\n const items = this._items;\n\n if (items) {\n for (let i = 0; i < items.length; i++) {\n if (this.isIndexSelected(i)) {\n this._selectedIndices.push(i);\n }\n }\n }\n }\n\n return this._selectedIndices;\n }\n\n public getItemIndex(key: string): number {\n const index = this._keyToIndexMap[key];\n\n return index ?? -1;\n }\n\n public isRangeSelected(fromIndex: number, count: number): boolean {\n if (count === 0) {\n return false;\n }\n\n const endIndex = fromIndex + count;\n\n for (let i = fromIndex; i < endIndex; i++) {\n if (!this.isIndexSelected(i)) {\n return false;\n }\n }\n\n return true;\n }\n\n public isAllSelected(): boolean {\n let selectableCount = this._items.length - this._unselectableCount;\n\n // In single mode, we can only have a max of 1 item.\n if (this.mode === SelectionMode.single) {\n selectableCount = Math.min(selectableCount, 1);\n }\n\n return (\n (this.count > 0 && this._isAllSelected && this._exemptedCount === 0) ||\n (!this._isAllSelected && this._exemptedCount === selectableCount && selectableCount > 0)\n );\n }\n\n public isKeySelected(key: string): boolean {\n const index = this._keyToIndexMap[key];\n\n return this.isIndexSelected(index);\n }\n\n public isIndexSelected(index: number): boolean {\n return !!(\n (this.count > 0 && this._isAllSelected && !this._exemptedIndices[index] && !this._unselectableIndices[index]) ||\n (!this._isAllSelected && this._exemptedIndices[index])\n );\n }\n\n public setAllSelected(isAllSelected: boolean): void {\n if (isAllSelected && this.mode !== SelectionMode.multiple) {\n return;\n }\n\n const selectableCount = this._items ? this._items.length - this._unselectableCount : 0;\n\n this.setChangeEvents(false);\n\n if (selectableCount > 0 && (this._exemptedCount > 0 || isAllSelected !== this._isAllSelected)) {\n this._exemptedIndices = {};\n\n if (isAllSelected !== this._isAllSelected || this._exemptedCount > 0) {\n this._exemptedCount = 0;\n this._isAllSelected = isAllSelected;\n this._change();\n }\n\n this._updateCount();\n }\n\n this.setChangeEvents(true);\n }\n\n public setKeySelected(key: string, isSelected: boolean, shouldAnchor: boolean): void {\n const index = this._keyToIndexMap[key];\n\n if (index >= 0) {\n this.setIndexSelected(index, isSelected, shouldAnchor);\n }\n }\n\n public setIndexSelected(index: number, isSelected: boolean, shouldAnchor: boolean): void {\n if (this.mode === SelectionMode.none) {\n return;\n }\n\n // Clamp the index.\n index = Math.min(Math.max(0, index), this._items.length - 1);\n\n // No-op on out of bounds selections.\n if (index < 0 || index >= this._items.length) {\n return;\n }\n\n this.setChangeEvents(false);\n\n const isExempt = this._exemptedIndices[index];\n const canSelect = !this._unselectableIndices[index];\n\n if (canSelect) {\n if (isSelected && this.mode === SelectionMode.single) {\n // If this is single-select, the previous selection should be removed.\n this._setAllSelected(false, true);\n }\n\n // Determine if we need to remove the exemption.\n if (isExempt && ((isSelected && this._isAllSelected) || (!isSelected && !this._isAllSelected))) {\n delete this._exemptedIndices[index];\n this._exemptedCount--;\n }\n\n // Determine if we need to add the exemption.\n if (!isExempt && ((isSelected && !this._isAllSelected) || (!isSelected && this._isAllSelected))) {\n this._exemptedIndices[index] = true;\n this._exemptedCount++;\n }\n\n if (shouldAnchor) {\n this._anchoredIndex = index;\n }\n }\n\n this._updateCount();\n\n this.setChangeEvents(true);\n }\n\n public setRangeSelected(fromIndex: number, count: number, isSelected: boolean, shouldAnchor: boolean): void {\n if (this.mode === SelectionMode.none) {\n return;\n }\n\n // Clamp the index.\n fromIndex = Math.min(Math.max(0, fromIndex), this._items.length - 1);\n\n // Clamp the range.\n count = Math.min(Math.max(0, count), this._items.length - fromIndex);\n\n // No-op on out of bounds selections.\n if (fromIndex < 0 || fromIndex >= this._items.length || count === 0) {\n return;\n }\n\n this.setChangeEvents(false);\n\n const anchorIndex = this._anchoredIndex || 0;\n let startIndex = fromIndex;\n const endIndex = fromIndex + count - 1;\n\n const newAnchorIndex = anchorIndex >= endIndex ? startIndex : endIndex;\n\n for (; startIndex <= endIndex; startIndex++) {\n this.setIndexSelected(startIndex, isSelected, shouldAnchor ? startIndex === newAnchorIndex : false);\n }\n\n this.setChangeEvents(true);\n }\n\n public selectToKey(key: string, clearSelection?: boolean): void {\n this.selectToIndex(this._keyToIndexMap[key], clearSelection);\n }\n\n public selectToRange(fromIndex: number, count: number, clearSelection?: boolean): void {\n if (this.mode === SelectionMode.none) {\n return;\n }\n\n if (this.mode === SelectionMode.single) {\n if (count === 1) {\n this.setIndexSelected(fromIndex, true, true);\n }\n return;\n }\n\n const anchorIndex = this._anchoredIndex || 0;\n let startIndex = Math.min(fromIndex, anchorIndex);\n const endIndex = Math.max(fromIndex + count - 1, anchorIndex);\n\n this.setChangeEvents(false);\n\n if (clearSelection) {\n this._setAllSelected(false, true);\n }\n\n for (; startIndex <= endIndex; startIndex++) {\n this.setIndexSelected(startIndex, true, false);\n }\n\n this.setChangeEvents(true);\n }\n\n public selectToIndex(index: number, clearSelection?: boolean): void {\n if (this.mode === SelectionMode.none) {\n return;\n }\n\n if (this.mode === SelectionMode.single) {\n this.setIndexSelected(index, true, true);\n return;\n }\n\n const anchorIndex = this._anchoredIndex || 0;\n let startIndex = Math.min(index, anchorIndex);\n const endIndex = Math.max(index, anchorIndex);\n\n this.setChangeEvents(false);\n\n if (clearSelection) {\n this._setAllSelected(false, true);\n }\n\n for (; startIndex <= endIndex; startIndex++) {\n this.setIndexSelected(startIndex, true, false);\n }\n\n this.setChangeEvents(true);\n }\n\n public toggleAllSelected(): void {\n this.setAllSelected(!this.isAllSelected());\n }\n\n public toggleKeySelected(key: string): void {\n this.setKeySelected(key, !this.isKeySelected(key), true);\n }\n\n public toggleIndexSelected(index: number): void {\n this.setIndexSelected(index, !this.isIndexSelected(index), true);\n }\n\n public toggleRangeSelected(fromIndex: number, count: number): void {\n if (this.mode === SelectionMode.none) {\n return;\n }\n\n const isRangeSelected = this.isRangeSelected(fromIndex, count);\n const endIndex = fromIndex + count;\n\n if (this.mode === SelectionMode.single && count > 1) {\n return;\n }\n\n this.setChangeEvents(false);\n for (let i = fromIndex; i < endIndex; i++) {\n this.setIndexSelected(i, !isRangeSelected, false);\n }\n this.setChangeEvents(true);\n }\n\n private _updateCount(preserveModalState: boolean = false): void {\n const count = this.getSelectedCount();\n\n if (count !== this.count) {\n this.count = count;\n this._change();\n }\n\n if (!this.count && !preserveModalState) {\n this.setModal(false);\n }\n }\n\n private _setAllSelected(isAllSelected: boolean, preserveModalState: boolean = false): void {\n if (isAllSelected && this.mode !== SelectionMode.multiple) {\n return;\n }\n\n const selectableCount = this._items ? this._items.length - this._unselectableCount : 0;\n\n this.setChangeEvents(false);\n\n if (selectableCount > 0 && (this._exemptedCount > 0 || isAllSelected !== this._isAllSelected)) {\n this._exemptedIndices = {};\n\n if (isAllSelected !== this._isAllSelected || this._exemptedCount > 0) {\n this._exemptedCount = 0;\n this._isAllSelected = isAllSelected;\n this._change();\n }\n\n this._updateCount(preserveModalState);\n }\n\n this.setChangeEvents(true);\n }\n\n private _change(): void {\n if (this._changeEventSuppressionCount === 0) {\n this._selectedItems = null;\n this._selectedIndices = undefined;\n\n EventGroup.raise(this, SELECTION_CHANGE);\n\n if (this._onSelectionChanged) {\n this._onSelectionChanged();\n }\n } else {\n this._hasChanged = true;\n }\n }\n}\n\nfunction defaultGetKey<TItem = IObjectWithKey>(item: TItem, index?: number): string | number {\n // 0 may be used as a key\n const { key = `${index}` } = (item || {}) as IObjectWithKey;\n return key;\n}\n","export interface ISelectableOption {\r\n /**\r\n * Arbitrary string associated with this option.\r\n */\r\n key: string | number;\r\n\r\n /**\r\n * ID attribute associated with this option\r\n */\r\n id?: string;\r\n\r\n /**\r\n * Text to render for this option\r\n */\r\n text: string;\r\n\r\n /**\r\n * Title attribute (built in tooltip) for a given option.\r\n */\r\n title?: string;\r\n\r\n /**\r\n * Text to render for this option\r\n */\r\n itemType?: SelectableOptionMenuItemType;\r\n\r\n /**\r\n * Index for this option\r\n */\r\n index?: number;\r\n\r\n /**\r\n * The aria label for the dropdown option. If not present, the `text` will be used.\r\n */\r\n ariaLabel?: string;\r\n\r\n /** If option is selected. */\r\n selected?: boolean;\r\n\r\n /**\r\n * Whether the option is disabled\r\n * @defaultvalue false\r\n */\r\n disabled?: boolean;\r\n\r\n /**\r\n * Defines whether the option is hidden or not.\r\n * @defaultvalue false\r\n */\r\n hidden?: boolean;\r\n\r\n /**\r\n * Data available to custom onRender functions.\r\n */\r\n data?: any;\r\n}\r\n\r\nexport enum SelectableOptionMenuItemType {\r\n Normal = 0,\r\n Divider = 1,\r\n Header = 2,\r\n}\r\n","import { getWindow } from './dom/getWindow';\n\nlet isMacResult: boolean | undefined;\n\n/**\n * Returns true if the user is on a Mac. Caches the result value.\n * @param reset - Reset the cached result value (mainly for testing).\n */\nexport function isMac(reset?: boolean): boolean {\n if (typeof isMacResult === 'undefined' || reset) {\n const win = getWindow();\n const userAgent = win && win.navigator.userAgent;\n\n isMacResult = !!userAgent && userAgent.indexOf('Macintosh') !== -1;\n }\n return !!isMacResult;\n}\n","/**\n * Returns true if and only if the user is on a iOS device.\n * Used to determine whether iOS-specific behavior should be applied.\n */\nexport const isIOS = (): boolean => {\n if (!window || !window.navigator || !window.navigator.userAgent) {\n return false;\n }\n return /iPad|iPhone|iPod/i.test(window.navigator.userAgent);\n};\n","import * as React from 'react';\nimport {\n Async,\n KeyCodes,\n divProperties,\n doesElementContainFocus,\n getDocument,\n getNativeProps,\n on,\n getWindow,\n elementContains,\n} from '../../Utilities';\nimport { IPopupProps } from './Popup.types';\n\nexport interface IPopupState {\n needsVerticalScrollBar?: boolean;\n}\n\n/**\n * This adds accessibility to Dialog and Panel controls\n */\nexport class Popup extends React.Component<IPopupProps, IPopupState> {\n public static defaultProps: IPopupProps = {\n shouldRestoreFocus: true,\n };\n\n public _root = React.createRef<HTMLDivElement>();\n private _disposables: (() => void)[] = [];\n private _originalFocusedElement: HTMLElement;\n private _containsFocus: boolean;\n private _async: Async;\n\n public constructor(props: IPopupProps) {\n super(props);\n this._async = new Async(this);\n this.state = { needsVerticalScrollBar: false };\n }\n\n public UNSAFE_componentWillMount(): void {\n this._originalFocusedElement = getDocument()!.activeElement as HTMLElement;\n }\n\n public componentDidMount(): void {\n if (this._root.current) {\n this._disposables.push(\n on(this._root.current, 'focus', this._onFocus, true),\n on(this._root.current, 'blur', this._onBlur, true),\n );\n const currentWindow = getWindow(this._root.current);\n if (currentWindow) {\n this._disposables.push(on(currentWindow, 'keydown', this._onKeyDown as any));\n }\n if (doesElementContainFocus(this._root.current)) {\n this._containsFocus = true;\n }\n }\n\n this._updateScrollBarAsync();\n }\n\n public componentDidUpdate() {\n this._updateScrollBarAsync();\n this._async.dispose();\n }\n\n public componentWillUnmount(): void {\n this._disposables.forEach((dispose: () => void) => dispose());\n\n // eslint-disable-next-line deprecation/deprecation\n if (this.props.shouldRestoreFocus) {\n const { onRestoreFocus = defaultFocusRestorer } = this.props;\n onRestoreFocus({\n originalElement: this._originalFocusedElement,\n containsFocus: this._containsFocus,\n documentContainsFocus: getDocument()?.hasFocus() || false,\n });\n }\n // De-reference DOM Node to avoid retainment via transpiled closure of _onKeyDown\n delete this._originalFocusedElement;\n }\n\n public render(): JSX.Element {\n const { role, className, ariaLabel, ariaLabelledBy, ariaDescribedBy, style } = this.props;\n\n return (\n <div\n ref={this._root}\n {...getNativeProps(this.props, divProperties)}\n className={className}\n role={role}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n aria-describedby={ariaDescribedBy}\n onKeyDown={this._onKeyDown}\n style={{ overflowY: this.state.needsVerticalScrollBar ? 'scroll' : undefined, outline: 'none', ...style }}\n >\n {this.props.children}\n </div>\n );\n }\n\n private _onKeyDown = (ev: React.KeyboardEvent<HTMLElement>): void => {\n switch (ev.which) {\n case KeyCodes.escape:\n if (this.props.onDismiss) {\n this.props.onDismiss(ev);\n\n ev.preventDefault();\n ev.stopPropagation();\n }\n\n break;\n }\n };\n\n private _updateScrollBarAsync(): void {\n this._async.requestAnimationFrame(() => {\n this._getScrollBar();\n });\n }\n\n private _getScrollBar(): void {\n // If overflowY is overriden, don't waste time calculating whether the scrollbar is necessary.\n if (this.props.style && this.props.style.overflowY) {\n return;\n }\n\n let needsVerticalScrollBar = false;\n if (this._root && this._root.current && this._root.current.firstElementChild) {\n // ClientHeight returns the client height of an element rounded to an\n // integer. On some browsers at different zoom levels this rounding\n // can generate different results for the root container and child even\n // though they are the same height. This causes us to show a scroll bar\n // when not needed. Ideally we would use BoundingClientRect().height\n // instead however seems that the API is 90% slower than using ClientHeight.\n // Therefore instead we will calculate the difference between heights and\n // allow for a 1px difference to still be considered ok and not show the\n // scroll bar.\n const rootHeight = this._root.current.clientHeight;\n const firstChildHeight = this._root.current.firstElementChild.clientHeight;\n if (rootHeight > 0 && firstChildHeight > rootHeight) {\n needsVerticalScrollBar = firstChildHeight - rootHeight > 1;\n }\n }\n if (this.state.needsVerticalScrollBar !== needsVerticalScrollBar) {\n this.setState({\n needsVerticalScrollBar: needsVerticalScrollBar,\n });\n }\n }\n\n private _onFocus = (): void => {\n this._containsFocus = true;\n };\n\n private _onBlur = (ev: FocusEvent): void => {\n /** The popup should update this._containsFocus when:\n * relatedTarget exists AND\n * the relatedTarget is not contained within the popup.\n * If the relatedTarget is within the popup, that means the popup still has focus\n * and focused moved from one element to another within the popup.\n * If relatedTarget is undefined or null that usually means that a\n * keyboard event occured and focus didn't change\n */\n if (\n this._root.current &&\n ev.relatedTarget &&\n !elementContains(this._root.current, ev.relatedTarget as HTMLElement)\n ) {\n this._containsFocus = false;\n }\n };\n}\n\nfunction defaultFocusRestorer(options: {\n originalElement?: HTMLElement | Window;\n containsFocus: boolean;\n documentContainsFocus: boolean;\n}) {\n const { originalElement, containsFocus } = options;\n\n if (originalElement && containsFocus && originalElement !== window) {\n // Make sure that the focus method actually exists\n // In some cases the object might exist but not be a real element.\n // This is primarily for IE 11 and should be removed once IE 11 is no longer in use.\n if (originalElement.focus) {\n originalElement.focus();\n }\n }\n}\n","import { ActionButton } from '../ActionButton/ActionButton';\n\n/**\n * {@docCategory Button}\n */\nexport const CommandButton = ActionButton;\n","import { ISelectableOption } from '../../utilities/selectableOption/SelectableOption.types';\n\nexport function getAllSelectedOptions(options: ISelectableOption[], selectedIndices: number[]): ISelectableOption[] {\n const selectedOptions: ISelectableOption[] = [];\n for (const index of selectedIndices) {\n const option = options[index];\n\n if (option) {\n selectedOptions.push(option);\n }\n }\n\n return selectedOptions;\n}\n","import * as React from 'react';\nimport { customizable, nullRender } from '../../../Utilities';\nimport { DefaultButton } from '../DefaultButton/DefaultButton';\nimport { IButtonProps } from '../Button.types';\n\n/**\n * {@docCategory Button}\n */\n@customizable('PrimaryButton', ['theme', 'styles'], true)\nexport class PrimaryButton extends React.Component<IButtonProps, {}> {\n public render(): JSX.Element {\n return <DefaultButton {...this.props} primary={true} onRenderDescription={nullRender} />;\n }\n}\n","/**\n * Regular expression matching characters to ignore when calculating the initials.\n */\n/**\n * Regular expression matching characters within various types of enclosures, including the enclosures themselves\n * so for example, (xyz) [xyz] {xyz} all would be ignored\n */\nconst UNWANTED_ENCLOSURES_REGEX: RegExp = /[\\(\\[\\{][^\\)\\]\\}]*[\\)\\]\\}]/g;\n\n/**\n * Regular expression matching special ASCII characters except space, plus some unicode special characters.\n * Applies after unwanted enclosures have been removed\n */\nconst UNWANTED_CHARS_REGEX: RegExp = /[\\0-\\u001F\\!-/:-@\\[-`\\{-\\u00BF\\u0250-\\u036F\\uD800-\\uFFFF]/g;\n\n/**\n * Regular expression matching phone numbers. Applied after chars matching UNWANTED_CHARS_REGEX have been removed\n * and number has been trimmed for whitespaces\n */\nconst PHONENUMBER_REGEX: RegExp = /^\\d+[\\d\\s]*(:?ext|x|)\\s*\\d+$/i;\n\n/** Regular expression matching one or more spaces. */\nconst MULTIPLE_WHITESPACES_REGEX: RegExp = /\\s+/g;\n\n/**\n * Regular expression matching languages for which we currently don't support initials.\n * Arabic: Arabic, Arabic Supplement, Arabic Extended-A.\n * Korean: Hangul Jamo, Hangul Compatibility Jamo, Hangul Jamo Extended-A, Hangul Syllables, Hangul Jamo Extended-B.\n * Japanese: Hiragana, Katakana.\n * CJK: CJK Unified Ideographs Extension A, CJK Unified Ideographs, CJK Compatibility Ideographs,\n * CJK Unified Ideographs Extension B\n */\n// eslint-disable-next-line @fluentui/max-len\nconst UNSUPPORTED_TEXT_REGEX: RegExp = /[\\u0600-\\u06FF\\u0750-\\u077F\\u08A0-\\u08FF\\u1100-\\u11FF\\u3130-\\u318F\\uA960-\\uA97F\\uAC00-\\uD7AF\\uD7B0-\\uD7FF\\u3040-\\u309F\\u30A0-\\u30FF\\u3400-\\u4DBF\\u4E00-\\u9FFF\\uF900-\\uFAFF]|[\\uD840-\\uD869][\\uDC00-\\uDED6]/;\n\nfunction getInitialsLatin(displayName: string, isRtl: boolean): string {\n let initials = '';\n\n const splits: string[] = displayName.split(' ');\n\n if (splits.length === 2) {\n initials += splits[0].charAt(0).toUpperCase();\n initials += splits[1].charAt(0).toUpperCase();\n } else if (splits.length === 3) {\n initials += splits[0].charAt(0).toUpperCase();\n initials += splits[2].charAt(0).toUpperCase();\n } else if (splits.length !== 0) {\n initials += splits[0].charAt(0).toUpperCase();\n }\n\n if (isRtl && initials.length > 1) {\n return initials.charAt(1) + initials.charAt(0);\n }\n\n return initials;\n}\n\nfunction cleanupDisplayName(displayName: string): string {\n displayName = displayName.replace(UNWANTED_ENCLOSURES_REGEX, '');\n displayName = displayName.replace(UNWANTED_CHARS_REGEX, '');\n displayName = displayName.replace(MULTIPLE_WHITESPACES_REGEX, ' ');\n displayName = displayName.trim();\n\n return displayName;\n}\n\n/**\n * Get (up to 2 characters) initials based on display name of the persona.\n *\n * @public\n */\nexport function getInitials(\n displayName: string | undefined | null,\n isRtl: boolean,\n allowPhoneInitials?: boolean,\n): string {\n if (!displayName) {\n return '';\n }\n\n displayName = cleanupDisplayName(displayName);\n\n // For names containing CJK characters, and phone numbers, we don't display initials\n if (UNSUPPORTED_TEXT_REGEX.test(displayName) || (!allowPhoneInitials && PHONENUMBER_REGEX.test(displayName))) {\n return '';\n }\n\n return getInitialsLatin(displayName, isRtl);\n}\n","import * as React from 'react';\nimport { IAutofillProps, IAutofill } from './Autofill.types';\nimport { KeyCodes, getNativeProps, inputProperties, isIE11, Async, initializeComponentRef } from '../../Utilities';\n\nexport interface IAutofillState {\n displayValue?: string;\n}\n\nconst SELECTION_FORWARD = 'forward';\nconst SELECTION_BACKWARD = 'backward';\n\n/**\n * {@docCategory Autofill}\n */\nexport class Autofill extends React.Component<IAutofillProps, IAutofillState> implements IAutofill {\n public static defaultProps = {\n enableAutofillOnKeyPress: [KeyCodes.down, KeyCodes.up] as KeyCodes[],\n };\n\n private _inputElement = React.createRef<HTMLInputElement>();\n private _autoFillEnabled = true;\n private _value: string;\n private _isComposing: boolean = false;\n private _async: Async;\n\n constructor(props: IAutofillProps) {\n super(props);\n\n initializeComponentRef(this);\n this._async = new Async(this);\n\n this._value = props.defaultVisibleValue || '';\n this.state = {\n displayValue: props.defaultVisibleValue || '',\n };\n }\n\n public get cursorLocation(): number | null {\n if (this._inputElement.current) {\n const inputElement = this._inputElement.current;\n if (inputElement.selectionDirection !== SELECTION_FORWARD) {\n return inputElement.selectionEnd;\n } else {\n return inputElement.selectionStart;\n }\n } else {\n return -1;\n }\n }\n\n public get isValueSelected(): boolean {\n return Boolean(this.inputElement && this.inputElement.selectionStart !== this.inputElement.selectionEnd);\n }\n\n public get value(): string {\n return this._value;\n }\n\n public get selectionStart(): number | null {\n return this._inputElement.current ? this._inputElement.current.selectionStart : -1;\n }\n\n public get selectionEnd(): number | null {\n return this._inputElement.current ? this._inputElement.current.selectionEnd : -1;\n }\n\n public get inputElement(): HTMLInputElement | null {\n return this._inputElement.current;\n }\n\n public UNSAFE_componentWillReceiveProps(nextProps: IAutofillProps): void {\n if (this.props.updateValueInWillReceiveProps) {\n const updatedInputValue = this.props.updateValueInWillReceiveProps();\n // Don't update if we have a null value or the value isn't changing\n // the value should still update if an empty string is passed in\n if (updatedInputValue !== null && updatedInputValue !== this._value) {\n this._value = updatedInputValue;\n }\n }\n\n const newDisplayValue = this._getDisplayValue(this._value, nextProps.suggestedDisplayValue);\n\n if (typeof newDisplayValue === 'string') {\n this.setState({ displayValue: newDisplayValue });\n }\n }\n\n public componentDidUpdate() {\n const value = this._value;\n const { suggestedDisplayValue, shouldSelectFullInputValueInComponentDidUpdate, preventValueSelection } = this.props;\n let differenceIndex = 0;\n\n if (preventValueSelection) {\n return;\n }\n\n const isFocused = this._inputElement.current && this._inputElement.current === document.activeElement;\n\n if (\n isFocused &&\n this._autoFillEnabled &&\n value &&\n suggestedDisplayValue &&\n this._doesTextStartWith(suggestedDisplayValue, value)\n ) {\n let shouldSelectFullRange = false;\n\n if (shouldSelectFullInputValueInComponentDidUpdate) {\n shouldSelectFullRange = shouldSelectFullInputValueInComponentDidUpdate();\n }\n\n if (shouldSelectFullRange) {\n this._inputElement.current!.setSelectionRange(0, suggestedDisplayValue.length, SELECTION_BACKWARD);\n } else {\n while (\n differenceIndex < value.length &&\n value[differenceIndex].toLocaleLowerCase() === suggestedDisplayValue[differenceIndex].toLocaleLowerCase()\n ) {\n differenceIndex++;\n }\n if (differenceIndex > 0) {\n this._inputElement.current!.setSelectionRange(\n differenceIndex,\n suggestedDisplayValue.length,\n SELECTION_BACKWARD,\n );\n }\n }\n }\n }\n\n public componentWillUnmount(): void {\n this._async.dispose();\n }\n\n public render(): JSX.Element {\n const { displayValue } = this.state;\n\n const nativeProps = getNativeProps<React.InputHTMLAttributes<HTMLInputElement>>(this.props, inputProperties);\n return (\n <input\n autoCapitalize=\"off\"\n autoComplete=\"off\"\n aria-autocomplete={'both'}\n {...nativeProps}\n ref={this._inputElement}\n value={displayValue}\n onCompositionStart={this._onCompositionStart}\n onCompositionUpdate={this._onCompositionUpdate}\n onCompositionEnd={this._onCompositionEnd}\n // TODO (Fabric 8?) - switch to calling only onChange. See notes in TextField._onInputChange.\n onChange={this._onChanged}\n onInput={this._onInputChanged}\n onKeyDown={this._onKeyDown}\n onClick={this.props.onClick ? this.props.onClick : this._onClick}\n data-lpignore={true}\n />\n );\n }\n\n public focus() {\n this._inputElement.current && this._inputElement.current.focus();\n }\n\n public clear() {\n this._autoFillEnabled = true;\n this._updateValue('', false);\n this._inputElement.current && this._inputElement.current.setSelectionRange(0, 0);\n }\n\n // Composition events are used when the character/text requires several keystrokes to be completed.\n // Some examples of this are mobile text input and langauges like Japanese or Arabic.\n // Find out more at https://developer.mozilla.org/en-US/docs/Web/Events/compositionstart\n private _onCompositionStart = (ev: React.CompositionEvent<HTMLInputElement>) => {\n this._isComposing = true;\n this._autoFillEnabled = false;\n };\n\n // Composition events are used when the character/text requires several keystrokes to be completed.\n // Some examples of this are mobile text input and languages like Japanese or Arabic.\n // Find out more at https://developer.mozilla.org/en-US/docs/Web/Events/compositionstart\n private _onCompositionUpdate = () => {\n if (isIE11()) {\n this._updateValue(this._getCurrentInputValue(), true);\n }\n };\n\n // Composition events are used when the character/text requires several keystrokes to be completed.\n // Some examples of this are mobile text input and langauges like Japanese or Arabic.\n // Find out more at https://developer.mozilla.org/en-US/docs/Web/Events/compositionstart\n private _onCompositionEnd = (ev: React.CompositionEvent<HTMLInputElement>) => {\n const inputValue = this._getCurrentInputValue();\n this._tryEnableAutofill(inputValue, this.value, false, true);\n this._isComposing = false;\n // Due to timing, this needs to be async, otherwise no text will be selected.\n this._async.setTimeout(() => {\n // it's technically possible that the value of _isComposing is reset during this timeout,\n // so explicitly trigger this with composing=true here, since it is supposed to be the\n // update for composition end\n this._updateValue(this._getCurrentInputValue(), false);\n }, 0);\n };\n\n private _onClick = () => {\n if (this._value && this._value !== '' && this._autoFillEnabled) {\n this._autoFillEnabled = false;\n }\n };\n\n private _onKeyDown = (ev: React.KeyboardEvent<HTMLInputElement>) => {\n if (this.props.onKeyDown) {\n this.props.onKeyDown(ev);\n }\n\n // If the event is actively being composed, then don't alert autofill.\n // Right now typing does not have isComposing, once that has been fixed any should be removed.\n if (!(ev.nativeEvent as any).isComposing) {\n switch (ev.which) {\n case KeyCodes.backspace:\n this._autoFillEnabled = false;\n break;\n case KeyCodes.left:\n case KeyCodes.right:\n if (this._autoFillEnabled) {\n this._value = this.state.displayValue!;\n this._autoFillEnabled = false;\n }\n break;\n default:\n if (!this._autoFillEnabled) {\n if (this.props.enableAutofillOnKeyPress!.indexOf(ev.which) !== -1) {\n this._autoFillEnabled = true;\n }\n }\n break;\n }\n }\n };\n\n private _onInputChanged = (ev: React.FormEvent<HTMLElement>) => {\n const value: string = this._getCurrentInputValue(ev);\n\n if (!this._isComposing) {\n this._tryEnableAutofill(value, this._value, (ev.nativeEvent as any).isComposing);\n }\n\n // If it is not IE11 and currently composing, update the value\n if (!(isIE11() && this._isComposing)) {\n const nativeEventComposing = (ev.nativeEvent as any).isComposing;\n const isComposing = nativeEventComposing === undefined ? this._isComposing : nativeEventComposing;\n this._updateValue(value, isComposing);\n }\n };\n\n private _onChanged = (): void => {\n // Swallow this event, we don't care about it\n // We must provide it because React PropTypes marks it as required, but onInput serves the correct purpose\n return;\n };\n\n private _getCurrentInputValue(ev?: React.FormEvent<HTMLElement>): string {\n if (ev && ev.target && (ev.target as any).value) {\n return (ev.target as any).value;\n } else if (this.inputElement && this.inputElement.value) {\n return this.inputElement.value;\n } else {\n return '';\n }\n }\n\n /**\n * Attempts to enable autofill. Whether or not autofill is enabled depends on the input value,\n * whether or not any text is selected, and only if the new input value is longer than the old input value.\n * Autofill should never be set to true if the value is composing. Once compositionEnd is called, then\n * it should be completed.\n * See https://developer.mozilla.org/en-US/docs/Web/API/CompositionEvent for more information on composition.\n * @param newValue - new input value\n * @param oldValue - old input value\n * @param isComposing - if true then the text is actively being composed and it has not completed.\n * @param isComposed - if the text is a composed text value.\n */\n private _tryEnableAutofill(newValue: string, oldValue: string, isComposing?: boolean, isComposed?: boolean): void {\n if (\n !isComposing &&\n newValue &&\n this._inputElement.current &&\n this._inputElement.current.selectionStart === newValue.length &&\n !this._autoFillEnabled &&\n (newValue.length > oldValue.length || isComposed)\n ) {\n this._autoFillEnabled = true;\n }\n }\n\n private _notifyInputChange(newValue: string, composing: boolean): void {\n if (this.props.onInputValueChange) {\n this.props.onInputValueChange(newValue, composing);\n }\n }\n\n /**\n * Updates the current input value as well as getting a new display value.\n * @param newValue - The new value from the input\n */\n private _updateValue = (newValue: string, composing: boolean) => {\n // Only proceed if the value is nonempty and is different from the old value\n // This is to work around the fact that, in IE 11, inputs with a placeholder fire an onInput event on focus\n if (!newValue && newValue === this._value) {\n return;\n }\n this._value = this.props.onInputChange ? this.props.onInputChange(newValue, composing) : newValue;\n this.setState(\n {\n displayValue: this._getDisplayValue(this._value, this.props.suggestedDisplayValue),\n },\n () => this._notifyInputChange(this._value, composing),\n );\n };\n\n /**\n * Returns a string that should be used as the display value.\n * It evaluates this based on whether or not the suggested value starts with the input value\n * and whether or not autofill is enabled.\n * @param inputValue - the value that the input currently has.\n * @param suggestedDisplayValue - the possible full value\n */\n private _getDisplayValue(inputValue: string, suggestedDisplayValue?: string): string {\n let displayValue = inputValue;\n if (\n suggestedDisplayValue &&\n inputValue &&\n this._doesTextStartWith(suggestedDisplayValue, displayValue) &&\n this._autoFillEnabled\n ) {\n displayValue = suggestedDisplayValue;\n }\n return displayValue;\n }\n\n private _doesTextStartWith(text: string, startWith: string): boolean {\n if (!text || !startWith) {\n return false;\n }\n return text.toLocaleLowerCase().indexOf(startWith.toLocaleLowerCase()) === 0;\n }\n}\n\n/**\n * @deprecated do not use.\n * {@docCategory Autofill}\n */\nexport class BaseAutoFill extends Autofill {}\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\r\nimport {\r\n ObjAssign, ObjClass, ObjCreate, ObjDefineProperty, ObjHasOwnProperty, ObjProto,\r\n strDefault, strShimFunction, strShimHasOwnProperty, strShimPrototype\r\n} from \"./Constants\";\r\nimport { getGlobal, objCreateFn, throwTypeError } from \"./Helpers\";\r\n\r\n// Most of these functions have been directly shamelessly \"lifted\" from the https://github.com/@microsoft/tslib and\r\n// modified to be ES3 compatible and applying several minification and tree-shaking techniques so that Application Insights\r\n// can successfully use TypeScript \"importHelpers\" which imports tslib during compilation but it will use these at runtime\r\n// Which is also why all of the functions have not been included as Application Insights currently doesn't use or require\r\n// them.\r\n\r\nexport const SymbolObj = (getGlobal()||{})[\"Symbol\"];\r\nexport const ReflectObj = (getGlobal()||{})[\"Reflect\"];\r\nexport const __hasSymbol = !!SymbolObj;\r\nexport const __hasReflect = !!ReflectObj;\r\n\r\nconst strDecorate = \"decorate\";\r\nconst strMetadata = \"metadata\";\r\nconst strGetOwnPropertySymbols = \"getOwnPropertySymbols\";\r\nconst strIterator = \"iterator\";\r\n\r\nexport declare type ObjAssignFunc = (t: any, ...sources:any[]) => any;\r\n\r\nexport var __objAssignFnImpl: ObjAssignFunc = function(t: any): any {\r\n // tslint:disable-next-line: ban-comma-operator\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) {\r\n if (ObjProto[strShimHasOwnProperty].call(s, p)) {\r\n (t as any)[p] = s[p];\r\n }\r\n }\r\n }\r\n return t;\r\n};\r\n\r\nexport var __assignFn: ObjAssignFunc = ObjAssign || __objAssignFnImpl;\r\n\r\n// tslint:disable-next-line: only-arrow-functions\r\nvar extendStaticsFn = function(d: any, b: any): any {\r\n extendStaticsFn = ObjClass[\"setPrototypeOf\"] ||\r\n // tslint:disable-next-line: only-arrow-functions\r\n ({ __proto__: [] } instanceof Array && function (d: any, b: any) {\r\n d.__proto__ = b;\r\n }) ||\r\n // tslint:disable-next-line: only-arrow-functions\r\n function (d: any, b: any) {\r\n for (var p in b) {\r\n if (b[strShimHasOwnProperty](p)) {\r\n d[p] = b[p];\r\n }\r\n }\r\n };\r\n return extendStaticsFn(d, b);\r\n};\r\n\r\nexport function __extendsFn(d: any, b: any) {\r\n if (typeof b !== strShimFunction && b !== null) {\r\n throwTypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n }\r\n extendStaticsFn(d, b);\r\n function __(this: any) {\r\n this.constructor = d;\r\n }\r\n // tslint:disable-next-line: ban-comma-operator\r\n d[strShimPrototype] = b === null ? objCreateFn(b) : (__[strShimPrototype] = b[strShimPrototype], new (__ as any)());\r\n}\r\n\r\nexport function __restFn(s: any, e: any) {\r\n var t = {};\r\n for (var k in s) {\r\n if (ObjHasOwnProperty.call(s, k) && e.indexOf(k) < 0) {\r\n t[k] = s[k];\r\n }\r\n }\r\n if (s != null && typeof ObjClass[strGetOwnPropertySymbols] === strShimFunction) {\r\n for (var i = 0, p = ObjClass[strGetOwnPropertySymbols](s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && ObjProto[\"propertyIsEnumerable\"].call(s, p[i])) {\r\n t[p[i]] = s[p[i]];\r\n }\r\n }\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorateFn(decorators: any, target: any, key: any, desc: any) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = ObjClass[\"getOwnPropertyDescriptor\"](target, key) : desc, d;\r\n if (__hasReflect && typeof ReflectObj[strDecorate] === strShimFunction) {\r\n r = ReflectObj[strDecorate](decorators, target, key, desc);\r\n } else {\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n // eslint-disable-next-line no-cond-assign\r\n if (d = decorators[i]) {\r\n r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n }\r\n }\r\n }\r\n\r\n // tslint:disable-next-line:ban-comma-operator\r\n return c > 3 && r && ObjDefineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __paramFn(paramIndex: number, decorator: Function) {\r\n return function (target: any, key: any) {\r\n decorator(target, key, paramIndex);\r\n }\r\n}\r\n\r\nexport function __metadataFn(metadataKey: any, metadataValue: any) {\r\n if (__hasReflect && ReflectObj[strMetadata] === strShimFunction) {\r\n return ReflectObj[strMetadata](metadataKey, metadataValue);\r\n }\r\n}\r\n\r\nexport function __exportStarFn(m: any, o: any) {\r\n for (var p in m) {\r\n if (p !== strDefault && !ObjHasOwnProperty.call(o, p)) {\r\n __createBindingFn(o, m, p);\r\n }\r\n }\r\n}\r\n\r\nexport function __createBindingFn(o: any, m: any, k: any, k2?: any) {\r\n if (k2 === undefined) {\r\n k2 = k;\r\n }\r\n \r\n if (!!ObjCreate) {\r\n ObjDefineProperty(o, k2, {\r\n enumerable: true,\r\n get() {\r\n return m[k];\r\n }\r\n });\r\n } else {\r\n o[k2] = m[k];\r\n }\r\n}\r\n\r\nexport function __valuesFn(o: any) {\r\n var s = typeof SymbolObj === strShimFunction && SymbolObj[strIterator], m = s && o[s], i = 0;\r\n if (m) {\r\n return m.call(o);\r\n }\r\n\r\n if (o && typeof o.length === \"number\") {\r\n return {\r\n next () {\r\n if (o && i >= o.length) {\r\n o = void 0;\r\n }\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n }\r\n\r\n throwTypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __readFn(o: any, n: any) {\r\n var m = typeof SymbolObj === strShimFunction && o[SymbolObj[strIterator]];\r\n if (!m) {\r\n return o;\r\n }\r\n\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) {\r\n ar.push(r.value);\r\n }\r\n } catch (error) {\r\n e = {\r\n error\r\n };\r\n } finally {\r\n try {\r\n // tslint:disable-next-line:no-conditional-assignment\r\n if (r && !r.done && (m = i[\"return\"])) {\r\n m.call(i);\r\n }\r\n } finally {\r\n if (e) {\r\n // eslint-disable-next-line no-unsafe-finally\r\n throw e.error;\r\n }\r\n }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArraysFn() {\r\n var theArgs = arguments;\r\n // Calculate new total size\r\n for (var s = 0, i = 0, il = theArgs.length; i < il; i++) {\r\n s += theArgs[i].length;\r\n }\r\n\r\n // Create new full array\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++) {\r\n for (var a = theArgs[i], j = 0, jl = a.length; j < jl; j++, k++) {\r\n r[k] = a[j];\r\n }\r\n }\r\n\r\n return r;\r\n}\r\n\r\nexport function __spreadArrayFn(to: any, from: any) {\r\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++) {\r\n to[j] = from[i];\r\n }\r\n\r\n return to;\r\n}\r\n\r\nexport function __makeTemplateObjectFn(cooked: any, raw: any) {\r\n if (ObjDefineProperty) {\r\n ObjDefineProperty(cooked, \"raw\", { value: raw });\r\n } else {\r\n cooked.raw = raw;\r\n }\r\n\r\n return cooked;\r\n}\r\n\r\nexport function __importStarFn(mod: any) {\r\n if (mod && mod.__esModule) {\r\n return mod;\r\n }\r\n\r\n var result = {};\r\n if (mod != null) {\r\n for (var k in mod) {\r\n if (k !== strDefault && Object.prototype.hasOwnProperty.call(mod, k)) {\r\n __createBindingFn(result, mod, k);\r\n }\r\n }\r\n }\r\n\r\n // Set default module\r\n if (!!ObjCreate) {\r\n ObjDefineProperty( result, strDefault, { enumerable: true, value: mod });\r\n } else {\r\n result[strDefault] = mod;\r\n }\r\n\r\n return result;\r\n}\r\n\r\nexport function __importDefaultFn(mod:any) {\r\n return (mod && mod.__esModule) ? mod : { strDefault: mod };\r\n}\r\n","/**\n * @fileOverview Bar Chart\n */\nimport { generateCategoricalChart } from './generateCategoricalChart';\nimport { Bar } from '../cartesian/Bar';\nimport { XAxis } from '../cartesian/XAxis';\nimport { YAxis } from '../cartesian/YAxis';\nimport { formatAxisMap } from '../util/CartesianUtils';\nexport var BarChart = generateCategoricalChart({\n chartName: 'BarChart',\n GraphicalChild: Bar,\n defaultTooltipEventType: 'axis',\n validateTooltipEventTypes: ['axis', 'item'],\n axisComponents: [{\n axisType: 'xAxis',\n AxisComp: XAxis\n }, {\n axisType: 'yAxis',\n AxisComp: YAxis\n }],\n formatAxisMap: formatAxisMap\n});","import * as React from 'react';\nimport { getId } from '@uifabric/utilities/lib/getId';\n\n/**\n * Hook to generate a unique ID in the global scope (spanning across duplicate copies of the same library).\n *\n * @param prefix - Optional prefix for the ID\n * @param providedId - Optional id provided by a parent component. Defaults to the provided value if present,\n * without conditioning the hook call\n * @returns The ID\n */\nexport function useId(prefix?: string, providedId?: string): string {\n // getId should only be called once since it updates the global constant for the next ID value.\n // (While an extra update isn't likely to cause problems in practice, it's better to avoid it.)\n const ref = React.useRef<string | undefined>(providedId);\n if (!ref.current) {\n ref.current = getId(prefix);\n }\n return ref.current;\n}\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"variant\", \"size\", \"active\", \"className\", \"block\", \"type\", \"as\"];\nimport classNames from 'classnames';\nimport React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport SafeAnchor from './SafeAnchor';\nvar defaultProps = {\n variant: 'primary',\n active: false,\n disabled: false\n};\nvar Button = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n variant = _ref.variant,\n size = _ref.size,\n active = _ref.active,\n className = _ref.className,\n block = _ref.block,\n type = _ref.type,\n as = _ref.as,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var prefix = useBootstrapPrefix(bsPrefix, 'btn');\n var classes = classNames(className, prefix, active && 'active', variant && prefix + \"-\" + variant, block && prefix + \"-block\", size && prefix + \"-\" + size);\n\n if (props.href) {\n return /*#__PURE__*/React.createElement(SafeAnchor, _extends({}, props, {\n as: as,\n ref: ref,\n className: classNames(classes, props.disabled && 'disabled')\n }));\n }\n\n if (ref) {\n props.ref = ref;\n }\n\n if (type) {\n props.type = type;\n } else if (!as) {\n props.type = 'button';\n }\n\n var Component = as || 'button';\n return /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n className: classes\n }));\n});\nButton.displayName = 'Button';\nButton.defaultProps = defaultProps;\nexport default Button;","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\"use strict\";\r\nimport { getGlobal, strShimObject, strShimPrototype, strShimUndefined } from \"@microsoft/applicationinsights-shims\";\r\nimport { _DYN_CALL, _DYN_INDEX_OF, _DYN_LENGTH, _DYN_NAME, _DYN_SPLIT, _DYN_TO_LOWER_CASE, _DYN_USER_AGENT } from \"../__DynamicConstants\";\r\nimport { isFunction, isString, isUndefined, strContains } from \"./HelperFuncs\";\r\nimport { STR_EMPTY } from \"./InternalConstants\";\r\n/**\r\n * This file exists to hold environment utilities that are required to check and\r\n * validate the current operating environment. Unless otherwise required, please\r\n * only use defined methods (functions) in this class so that users of these\r\n * functions/properties only need to include those that are used within their own modules.\r\n */\r\nvar strWindow = \"window\";\r\nvar strDocument = \"document\";\r\nvar strDocumentMode = \"documentMode\";\r\nvar strNavigator = \"navigator\";\r\nvar strHistory = \"history\";\r\nvar strLocation = \"location\";\r\nvar strConsole = \"console\";\r\nvar strPerformance = \"performance\";\r\nvar strJSON = \"JSON\";\r\nvar strCrypto = \"crypto\";\r\nvar strMsCrypto = \"msCrypto\";\r\nvar strReactNative = \"ReactNative\";\r\nvar strMsie = \"msie\";\r\nvar strTrident = \"trident/\";\r\nvar strXMLHttpRequest = \"XMLHttpRequest\";\r\nvar _isTrident = null;\r\nvar _navUserAgentCheck = null;\r\nvar _enableMocks = false;\r\nvar _useXDomainRequest = null;\r\nvar _beaconsSupported = null;\r\nfunction _hasProperty(theClass, property) {\r\n var supported = false;\r\n if (theClass) {\r\n try {\r\n supported = property in theClass;\r\n if (!supported) {\r\n var proto = theClass[strShimPrototype];\r\n if (proto) {\r\n supported = property in proto;\r\n }\r\n }\r\n }\r\n catch (e) {\r\n // Do Nothing\r\n }\r\n if (!supported) {\r\n try {\r\n var tmp = new theClass();\r\n supported = !isUndefined(tmp[property]);\r\n }\r\n catch (e) {\r\n // Do Nothing\r\n }\r\n }\r\n }\r\n return supported;\r\n}\r\n/**\r\n * Enable the lookup of test mock objects if requested\r\n * @param enabled\r\n */\r\nexport function setEnableEnvMocks(enabled) {\r\n _enableMocks = enabled;\r\n}\r\n/**\r\n * Return the named global object if available, will return null if the object is not available.\r\n * @param name The globally named object\r\n */\r\nexport function getGlobalInst(name) {\r\n var gbl = getGlobal();\r\n if (gbl && gbl[name]) {\r\n return gbl[name];\r\n }\r\n // Test workaround, for environments where <global>.window (when global == window) doesn't return the base window\r\n if (name === strWindow && hasWindow()) {\r\n // tslint:disable-next-line: no-angle-bracket-type-assertion\r\n return window;\r\n }\r\n return null;\r\n}\r\n/**\r\n * Checks if window object is available, this is required as we support the API running without a\r\n * window /document (eg. Node server, electron webworkers) and if we attempt to assign a window\r\n * object to a local variable or pass as an argument an \"Uncaught ReferenceError: window is not defined\"\r\n * exception will be thrown.\r\n * Defined as a function to support lazy / late binding environments.\r\n */\r\nexport function hasWindow() {\r\n return Boolean(typeof window === strShimObject && window);\r\n}\r\n/**\r\n * Returns the global window object if it is present otherwise null.\r\n * This helper is used to access the window object without causing an exception\r\n * \"Uncaught ReferenceError: window is not defined\"\r\n */\r\nexport function getWindow() {\r\n if (hasWindow()) {\r\n return window;\r\n }\r\n // Return the global instance or null\r\n return getGlobalInst(strWindow);\r\n}\r\n/**\r\n * Checks if document object is available, this is required as we support the API running without a\r\n * window /document (eg. Node server, electron webworkers) and if we attempt to assign a document\r\n * object to a local variable or pass as an argument an \"Uncaught ReferenceError: document is not defined\"\r\n * exception will be thrown.\r\n * Defined as a function to support lazy / late binding environments.\r\n */\r\nexport function hasDocument() {\r\n return Boolean(typeof document === strShimObject && document);\r\n}\r\n/**\r\n * Returns the global document object if it is present otherwise null.\r\n * This helper is used to access the document object without causing an exception\r\n * \"Uncaught ReferenceError: document is not defined\"\r\n */\r\nexport function getDocument() {\r\n if (hasDocument()) {\r\n return document;\r\n }\r\n return getGlobalInst(strDocument);\r\n}\r\n/**\r\n * Checks if navigator object is available, this is required as we support the API running without a\r\n * window /document (eg. Node server, electron webworkers) and if we attempt to assign a navigator\r\n * object to a local variable or pass as an argument an \"Uncaught ReferenceError: navigator is not defined\"\r\n * exception will be thrown.\r\n * Defined as a function to support lazy / late binding environments.\r\n */\r\nexport function hasNavigator() {\r\n return Boolean(typeof navigator === strShimObject && navigator);\r\n}\r\n/**\r\n * Returns the global navigator object if it is present otherwise null.\r\n * This helper is used to access the navigator object without causing an exception\r\n * \"Uncaught ReferenceError: navigator is not defined\"\r\n */\r\nexport function getNavigator() {\r\n if (hasNavigator()) {\r\n return navigator;\r\n }\r\n return getGlobalInst(strNavigator);\r\n}\r\n/**\r\n * Checks if history object is available, this is required as we support the API running without a\r\n * window /document (eg. Node server, electron webworkers) and if we attempt to assign a history\r\n * object to a local variable or pass as an argument an \"Uncaught ReferenceError: history is not defined\"\r\n * exception will be thrown.\r\n * Defined as a function to support lazy / late binding environments.\r\n */\r\nexport function hasHistory() {\r\n return Boolean(typeof history === strShimObject && history);\r\n}\r\n/**\r\n * Returns the global history object if it is present otherwise null.\r\n * This helper is used to access the history object without causing an exception\r\n * \"Uncaught ReferenceError: history is not defined\"\r\n */\r\nexport function getHistory() {\r\n if (hasHistory()) {\r\n return history;\r\n }\r\n return getGlobalInst(strHistory);\r\n}\r\n/**\r\n * Returns the global location object if it is present otherwise null.\r\n * This helper is used to access the location object without causing an exception\r\n * \"Uncaught ReferenceError: location is not defined\"\r\n */\r\nexport function getLocation(checkForMock) {\r\n if (checkForMock && _enableMocks) {\r\n var mockLocation = getGlobalInst(\"__mockLocation\");\r\n if (mockLocation) {\r\n return mockLocation;\r\n }\r\n }\r\n if (typeof location === strShimObject && location) {\r\n return location;\r\n }\r\n return getGlobalInst(strLocation);\r\n}\r\n/**\r\n * Returns the global console object\r\n */\r\nexport function getConsole() {\r\n if (typeof console !== strShimUndefined) {\r\n return console;\r\n }\r\n return getGlobalInst(strConsole);\r\n}\r\n/**\r\n * Returns the performance object if it is present otherwise null.\r\n * This helper is used to access the performance object from the current\r\n * global instance which could be window or globalThis for a web worker\r\n */\r\nexport function getPerformance() {\r\n return getGlobalInst(strPerformance);\r\n}\r\n/**\r\n * Checks if JSON object is available, this is required as we support the API running without a\r\n * window /document (eg. Node server, electron webworkers) and if we attempt to assign a history\r\n * object to a local variable or pass as an argument an \"Uncaught ReferenceError: JSON is not defined\"\r\n * exception will be thrown.\r\n * Defined as a function to support lazy / late binding environments.\r\n */\r\nexport function hasJSON() {\r\n return Boolean((typeof JSON === strShimObject && JSON) || getGlobalInst(strJSON) !== null);\r\n}\r\n/**\r\n * Returns the global JSON object if it is present otherwise null.\r\n * This helper is used to access the JSON object without causing an exception\r\n * \"Uncaught ReferenceError: JSON is not defined\"\r\n */\r\nexport function getJSON() {\r\n if (hasJSON()) {\r\n return JSON || getGlobalInst(strJSON);\r\n }\r\n return null;\r\n}\r\n/**\r\n * Returns the crypto object if it is present otherwise null.\r\n * This helper is used to access the crypto object from the current\r\n * global instance which could be window or globalThis for a web worker\r\n */\r\nexport function getCrypto() {\r\n return getGlobalInst(strCrypto);\r\n}\r\n/**\r\n * Returns the crypto object if it is present otherwise null.\r\n * This helper is used to access the crypto object from the current\r\n * global instance which could be window or globalThis for a web worker\r\n */\r\nexport function getMsCrypto() {\r\n return getGlobalInst(strMsCrypto);\r\n}\r\n/**\r\n * Returns whether the environment is reporting that we are running in a React Native Environment\r\n */\r\nexport function isReactNative() {\r\n // If running in React Native, navigator.product will be populated\r\n var nav = getNavigator();\r\n if (nav && nav.product) {\r\n return nav.product === strReactNative;\r\n }\r\n return false;\r\n}\r\n/**\r\n * Identifies whether the current environment appears to be IE\r\n */\r\nexport function isIE() {\r\n var nav = getNavigator();\r\n if (nav && (nav[_DYN_USER_AGENT /* @min:%2euserAgent */] !== _navUserAgentCheck || _isTrident === null)) {\r\n // Added to support test mocking of the user agent\r\n _navUserAgentCheck = nav[_DYN_USER_AGENT /* @min:%2euserAgent */];\r\n var userAgent = (_navUserAgentCheck || STR_EMPTY)[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]();\r\n _isTrident = (strContains(userAgent, strMsie) || strContains(userAgent, strTrident));\r\n }\r\n return _isTrident;\r\n}\r\n/**\r\n * Gets IE version returning the document emulation mode if we are running on IE, or null otherwise\r\n */\r\nexport function getIEVersion(userAgentStr) {\r\n if (userAgentStr === void 0) { userAgentStr = null; }\r\n if (!userAgentStr) {\r\n var navigator_1 = getNavigator() || {};\r\n userAgentStr = navigator_1 ? (navigator_1[_DYN_USER_AGENT /* @min:%2euserAgent */] || STR_EMPTY)[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]() : STR_EMPTY;\r\n }\r\n var ua = (userAgentStr || STR_EMPTY)[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]();\r\n // Also check for documentMode in case X-UA-Compatible meta tag was included in HTML.\r\n if (strContains(ua, strMsie)) {\r\n var doc = getDocument() || {};\r\n return Math.max(parseInt(ua[_DYN_SPLIT /* @min:%2esplit */](strMsie)[1]), (doc[strDocumentMode] || 0));\r\n }\r\n else if (strContains(ua, strTrident)) {\r\n var tridentVer = parseInt(ua[_DYN_SPLIT /* @min:%2esplit */](strTrident)[1]);\r\n if (tridentVer) {\r\n return tridentVer + 4;\r\n }\r\n }\r\n return null;\r\n}\r\n/**\r\n * Returns string representation of an object suitable for diagnostics logging.\r\n */\r\nexport function dumpObj(object) {\r\n var objectTypeDump = Object[strShimPrototype].toString[_DYN_CALL /* @min:%2ecall */](object);\r\n var propertyValueDump = STR_EMPTY;\r\n if (objectTypeDump === \"[object Error]\") {\r\n propertyValueDump = \"{ stack: '\" + object.stack + \"', message: '\" + object.message + \"', name: '\" + object[_DYN_NAME /* @min:%2ename */] + \"'\";\r\n }\r\n else if (hasJSON()) {\r\n propertyValueDump = getJSON().stringify(object);\r\n }\r\n return objectTypeDump + propertyValueDump;\r\n}\r\nexport function isSafari(userAgentStr) {\r\n if (!userAgentStr || !isString(userAgentStr)) {\r\n var navigator_2 = getNavigator() || {};\r\n userAgentStr = navigator_2 ? (navigator_2[_DYN_USER_AGENT /* @min:%2euserAgent */] || STR_EMPTY)[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]() : STR_EMPTY;\r\n }\r\n var ua = (userAgentStr || STR_EMPTY)[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]();\r\n return (ua[_DYN_INDEX_OF /* @min:%2eindexOf */](\"safari\") >= 0);\r\n}\r\n/**\r\n * Checks if HTML5 Beacons are supported in the current environment.\r\n * @returns True if supported, false otherwise.\r\n */\r\nexport function isBeaconsSupported() {\r\n if (_beaconsSupported === null) {\r\n _beaconsSupported = hasNavigator() && Boolean(getNavigator().sendBeacon);\r\n }\r\n return _beaconsSupported;\r\n}\r\n/**\r\n * Checks if the Fetch API is supported in the current environment.\r\n * @param withKeepAlive - [Optional] If True, check if fetch is available and it supports the keepalive feature, otherwise only check if fetch is supported\r\n * @returns True if supported, otherwise false\r\n */\r\nexport function isFetchSupported(withKeepAlive) {\r\n var isSupported = false;\r\n try {\r\n isSupported = !!getGlobalInst(\"fetch\");\r\n var request = getGlobalInst(\"Request\");\r\n if (isSupported && withKeepAlive && request) {\r\n isSupported = _hasProperty(request, \"keepalive\");\r\n }\r\n }\r\n catch (e) {\r\n // Just Swallow any failure during availability checks\r\n }\r\n return isSupported;\r\n}\r\nexport function useXDomainRequest() {\r\n if (_useXDomainRequest === null) {\r\n _useXDomainRequest = (typeof XDomainRequest !== strShimUndefined);\r\n if (_useXDomainRequest && isXhrSupported()) {\r\n _useXDomainRequest = _useXDomainRequest && !_hasProperty(getGlobalInst(strXMLHttpRequest), \"withCredentials\");\r\n }\r\n }\r\n return _useXDomainRequest;\r\n}\r\n/**\r\n * Checks if XMLHttpRequest is supported\r\n * @returns True if supported, otherwise false\r\n */\r\nexport function isXhrSupported() {\r\n var isSupported = false;\r\n try {\r\n var xmlHttpRequest = getGlobalInst(strXMLHttpRequest);\r\n isSupported = !!xmlHttpRequest;\r\n }\r\n catch (e) {\r\n // Just Swallow any failure during availability checks\r\n }\r\n return isSupported;\r\n}\r\nfunction _getNamedValue(values, name) {\r\n if (values) {\r\n for (var i = 0; i < values[_DYN_LENGTH /* @min:%2elength */]; i++) {\r\n var value = values[i];\r\n if (value[_DYN_NAME /* @min:%2ename */]) {\r\n if (value[_DYN_NAME /* @min:%2ename */] === name) {\r\n return value;\r\n }\r\n }\r\n }\r\n }\r\n return {};\r\n}\r\n/**\r\n * Helper function to fetch the named meta-tag from the page.\r\n * @param name\r\n */\r\nexport function findMetaTag(name) {\r\n var doc = getDocument();\r\n if (doc && name) {\r\n // Look for a meta-tag\r\n return _getNamedValue(doc.querySelectorAll(\"meta\"), name).content;\r\n }\r\n return null;\r\n}\r\n/**\r\n * Helper function to fetch the named server timing value from the page response (first navigation event).\r\n * @param name\r\n */\r\nexport function findNamedServerTiming(name) {\r\n var value;\r\n var perf = getPerformance();\r\n if (perf) {\r\n // Try looking for a server-timing header\r\n var navPerf = perf.getEntriesByType(\"navigation\") || [];\r\n value = _getNamedValue((navPerf[_DYN_LENGTH /* @min:%2elength */] > 0 ? navPerf[0] : {}).serverTiming, name).description;\r\n }\r\n return value;\r\n}\r\n// TODO: should reuse this method for analytics plugin\r\nexport function dispatchEvent(target, evnt) {\r\n if (target && target.dispatchEvent && evnt) {\r\n target.dispatchEvent(evnt);\r\n return true;\r\n }\r\n return false;\r\n}\r\nexport function createCustomDomEvent(eventName, details) {\r\n var event = null;\r\n var detail = { detail: details || null };\r\n if (isFunction(CustomEvent)) { // Use CustomEvent constructor when available\r\n event = new CustomEvent(eventName, detail);\r\n }\r\n else { // CustomEvent has no constructor in IE\r\n var doc = getDocument();\r\n if (doc && doc.createEvent) {\r\n event = doc.createEvent(\"CustomEvent\");\r\n event.initCustomEvent(eventName, true, true, detail);\r\n }\r\n }\r\n return event;\r\n}\r\nexport function sendCustomEvent(evtName, cfg, customDetails) {\r\n var global = getGlobal();\r\n if (global && global.CustomEvent) {\r\n try {\r\n var details = { cfg: cfg || null, customDetails: customDetails || null };\r\n return dispatchEvent(global, createCustomDomEvent(evtName, details));\r\n }\r\n catch (e) {\r\n // eslint-disable-next-line no-empty\r\n }\r\n }\r\n return false;\r\n}\r\n//# sourceMappingURL=EnvUtils.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { _DYN_APPLY, _DYN_LENGTH } from \"../__DynamicConstants\";\r\nimport { getGlobalInst } from \"./EnvUtils\";\r\nvar listenerFuncs = [\"eventsSent\", \"eventsDiscarded\", \"eventsSendRequest\", \"perfEvent\"];\r\nvar _aiNamespace = null;\r\nvar _debugListener;\r\nfunction _listenerProxyFunc(name, config) {\r\n return function () {\r\n var args = arguments;\r\n var dbgExt = getDebugExt(config);\r\n if (dbgExt) {\r\n var listener = dbgExt.listener;\r\n if (listener && listener[name]) {\r\n listener[name][_DYN_APPLY /* @min:%2eapply */](listener, args);\r\n }\r\n }\r\n };\r\n}\r\nfunction _getExtensionNamespace() {\r\n // Cache the lookup of the global namespace object\r\n var target = getGlobalInst(\"Microsoft\");\r\n if (target) {\r\n _aiNamespace = target[\"ApplicationInsights\"];\r\n }\r\n return _aiNamespace;\r\n}\r\nexport function getDebugExt(config) {\r\n var ns = _aiNamespace;\r\n if (!ns && config.disableDbgExt !== true) {\r\n ns = _aiNamespace || _getExtensionNamespace();\r\n }\r\n return ns ? ns[\"ChromeDbgExt\"] : null;\r\n}\r\nexport function getDebugListener(config) {\r\n if (!_debugListener) {\r\n _debugListener = {};\r\n for (var lp = 0; lp < listenerFuncs[_DYN_LENGTH /* @min:%2elength */]; lp++) {\r\n _debugListener[listenerFuncs[lp]] = _listenerProxyFunc(listenerFuncs[lp], config);\r\n }\r\n }\r\n return _debugListener;\r\n}\r\n//# sourceMappingURL=DbgExtensionUtils.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\"use strict\";\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { _DYN_DIAG_LOG, _DYN_ENABLE_DEBUG_EXCEPTI4, _DYN_LOGGER, _DYN_LOG_INTERNAL_MESSAGE, _DYN_MESSAGE, _DYN_MESSAGE_ID, _DYN_PUSH, _DYN_REPLACE } from \"../__DynamicConstants\";\r\nimport { getDebugExt } from \"./DbgExtensionUtils\";\r\nimport { dumpObj, getConsole, getJSON, hasJSON } from \"./EnvUtils\";\r\nimport { getCfgValue, isFunction, isUndefined } from \"./HelperFuncs\";\r\nimport { STR_EMPTY, STR_ERROR_TO_CONSOLE, STR_WARN_TO_CONSOLE } from \"./InternalConstants\";\r\n/**\r\n * For user non actionable traces use AI Internal prefix.\r\n */\r\nvar AiNonUserActionablePrefix = \"AI (Internal): \";\r\n/**\r\n * Prefix of the traces in portal.\r\n */\r\nvar AiUserActionablePrefix = \"AI: \";\r\n/**\r\n * Session storage key for the prefix for the key indicating message type already logged\r\n */\r\nvar AIInternalMessagePrefix = \"AITR_\";\r\nfunction _sanitizeDiagnosticText(text) {\r\n if (text) {\r\n return \"\\\"\" + text[_DYN_REPLACE /* @min:%2ereplace */](/\\\"/g, STR_EMPTY) + \"\\\"\";\r\n }\r\n return STR_EMPTY;\r\n}\r\nfunction _logToConsole(func, message) {\r\n var theConsole = getConsole();\r\n if (!!theConsole) {\r\n var logFunc = \"log\";\r\n if (theConsole[func]) {\r\n logFunc = func;\r\n }\r\n if (isFunction(theConsole[logFunc])) {\r\n theConsole[logFunc](message);\r\n }\r\n }\r\n}\r\nvar _InternalLogMessage = /** @class */ (function () {\r\n function _InternalLogMessage(msgId, msg, isUserAct, properties) {\r\n if (isUserAct === void 0) { isUserAct = false; }\r\n var _self = this;\r\n _self[_DYN_MESSAGE_ID /* @min:%2emessageId */] = msgId;\r\n _self[_DYN_MESSAGE /* @min:%2emessage */] =\r\n (isUserAct ? AiUserActionablePrefix : AiNonUserActionablePrefix) +\r\n msgId;\r\n var strProps = STR_EMPTY;\r\n if (hasJSON()) {\r\n strProps = getJSON().stringify(properties);\r\n }\r\n var diagnosticText = (msg ? \" message:\" + _sanitizeDiagnosticText(msg) : STR_EMPTY) +\r\n (properties ? \" props:\" + _sanitizeDiagnosticText(strProps) : STR_EMPTY);\r\n _self[_DYN_MESSAGE /* @min:%2emessage */] += diagnosticText;\r\n }\r\n _InternalLogMessage.dataType = \"MessageData\";\r\n return _InternalLogMessage;\r\n}());\r\nexport { _InternalLogMessage };\r\nexport function safeGetLogger(core, config) {\r\n return (core || {})[_DYN_LOGGER /* @min:%2elogger */] || new DiagnosticLogger(config);\r\n}\r\nvar DiagnosticLogger = /** @class */ (function () {\r\n function DiagnosticLogger(config) {\r\n this.identifier = \"DiagnosticLogger\";\r\n /**\r\n * The internal logging queue\r\n */\r\n this.queue = [];\r\n /**\r\n * Count of internal messages sent\r\n */\r\n var _messageCount = 0;\r\n /**\r\n * Holds information about what message types were already logged to console or sent to server.\r\n */\r\n var _messageLogged = {};\r\n var _loggingLevelConsole;\r\n var _loggingLevelTelemetry;\r\n var _maxInternalMessageLimit;\r\n var _enableDebug;\r\n dynamicProto(DiagnosticLogger, this, function (_self) {\r\n _setDefaultsFromConfig(config || {});\r\n _self.consoleLoggingLevel = function () { return _loggingLevelConsole; };\r\n _self.telemetryLoggingLevel = function () { return _loggingLevelTelemetry; };\r\n _self.maxInternalMessageLimit = function () { return _maxInternalMessageLimit; };\r\n _self[_DYN_ENABLE_DEBUG_EXCEPTI4 /* @min:%2eenableDebugExceptions */] = function () { return _enableDebug; };\r\n /**\r\n * This method will throw exceptions in debug mode or attempt to log the error as a console warning.\r\n * @param severity {LoggingSeverity} - The severity of the log message\r\n * @param message {_InternalLogMessage} - The log message.\r\n */\r\n _self.throwInternal = function (severity, msgId, msg, properties, isUserAct) {\r\n if (isUserAct === void 0) { isUserAct = false; }\r\n var message = new _InternalLogMessage(msgId, msg, isUserAct, properties);\r\n if (_enableDebug) {\r\n throw dumpObj(message);\r\n }\r\n else {\r\n // Get the logging function and fallback to warnToConsole of for some reason errorToConsole doesn't exist\r\n var logFunc = severity === 1 /* eLoggingSeverity.CRITICAL */ ? STR_ERROR_TO_CONSOLE : STR_WARN_TO_CONSOLE;\r\n if (!isUndefined(message[_DYN_MESSAGE /* @min:%2emessage */])) {\r\n if (isUserAct) {\r\n // check if this message type was already logged to console for this page view and if so, don't log it again\r\n var messageKey = +message[_DYN_MESSAGE_ID /* @min:%2emessageId */];\r\n if (!_messageLogged[messageKey] && _loggingLevelConsole >= severity) {\r\n _self[logFunc](message[_DYN_MESSAGE /* @min:%2emessage */]);\r\n _messageLogged[messageKey] = true;\r\n }\r\n }\r\n else {\r\n // Only log traces if the console Logging Level is >= the throwInternal severity level\r\n if (_loggingLevelConsole >= severity) {\r\n _self[logFunc](message[_DYN_MESSAGE /* @min:%2emessage */]);\r\n }\r\n }\r\n _logInternalMessage(severity, message);\r\n }\r\n else {\r\n _debugExtMsg(\"throw\" + (severity === 1 /* eLoggingSeverity.CRITICAL */ ? \"Critical\" : \"Warning\"), message);\r\n }\r\n }\r\n };\r\n /**\r\n * This will write a warning to the console if possible\r\n * @param message {string} - The warning message\r\n */\r\n _self[STR_WARN_TO_CONSOLE /* @min:%2ewarnToConsole */] = function (message) {\r\n _logToConsole(\"warn\", message);\r\n _debugExtMsg(\"warning\", message);\r\n };\r\n /**\r\n * This will write an error to the console if possible\r\n * @param message {string} - The error message\r\n */\r\n _self[STR_ERROR_TO_CONSOLE /* @min:%2eerrorToConsole */] = function (message) {\r\n _logToConsole(\"error\", message);\r\n _debugExtMsg(\"error\", message);\r\n };\r\n /**\r\n * Resets the internal message count\r\n */\r\n _self.resetInternalMessageCount = function () {\r\n _messageCount = 0;\r\n _messageLogged = {};\r\n };\r\n /**\r\n * Logs a message to the internal queue.\r\n * @param severity {LoggingSeverity} - The severity of the log message\r\n * @param message {_InternalLogMessage} - The message to log.\r\n */\r\n _self[_DYN_LOG_INTERNAL_MESSAGE /* @min:%2elogInternalMessage */] = _logInternalMessage;\r\n function _logInternalMessage(severity, message) {\r\n if (_areInternalMessagesThrottled()) {\r\n return;\r\n }\r\n // check if this message type was already logged for this session and if so, don't log it again\r\n var logMessage = true;\r\n var messageKey = AIInternalMessagePrefix + message[_DYN_MESSAGE_ID /* @min:%2emessageId */];\r\n // if the session storage is not available, limit to only one message type per page view\r\n if (_messageLogged[messageKey]) {\r\n logMessage = false;\r\n }\r\n else {\r\n _messageLogged[messageKey] = true;\r\n }\r\n if (logMessage) {\r\n // Push the event in the internal queue\r\n if (severity <= _loggingLevelTelemetry) {\r\n _self.queue[_DYN_PUSH /* @min:%2epush */](message);\r\n _messageCount++;\r\n _debugExtMsg((severity === 1 /* eLoggingSeverity.CRITICAL */ ? \"error\" : \"warn\"), message);\r\n }\r\n // When throttle limit reached, send a special event\r\n if (_messageCount === _maxInternalMessageLimit) {\r\n var throttleLimitMessage = \"Internal events throttle limit per PageView reached for this app.\";\r\n var throttleMessage = new _InternalLogMessage(23 /* _eInternalMessageId.MessageLimitPerPVExceeded */, throttleLimitMessage, false);\r\n _self.queue[_DYN_PUSH /* @min:%2epush */](throttleMessage);\r\n if (severity === 1 /* eLoggingSeverity.CRITICAL */) {\r\n _self[STR_ERROR_TO_CONSOLE /* @min:%2eerrorToConsole */](throttleLimitMessage);\r\n }\r\n else {\r\n _self[STR_WARN_TO_CONSOLE /* @min:%2ewarnToConsole */](throttleLimitMessage);\r\n }\r\n }\r\n }\r\n }\r\n function _setDefaultsFromConfig(config) {\r\n _loggingLevelConsole = getCfgValue(config.loggingLevelConsole, 0);\r\n _loggingLevelTelemetry = getCfgValue(config.loggingLevelTelemetry, 1);\r\n _maxInternalMessageLimit = getCfgValue(config.maxMessageLimit, 25);\r\n _enableDebug = getCfgValue(config.enableDebug, getCfgValue(config[_DYN_ENABLE_DEBUG_EXCEPTI4 /* @min:%2eenableDebugExceptions */], false));\r\n }\r\n function _areInternalMessagesThrottled() {\r\n return _messageCount >= _maxInternalMessageLimit;\r\n }\r\n function _debugExtMsg(name, data) {\r\n var dbgExt = getDebugExt(config || {});\r\n if (dbgExt && dbgExt[_DYN_DIAG_LOG /* @min:%2ediagLog */]) {\r\n dbgExt[_DYN_DIAG_LOG /* @min:%2ediagLog */](name, data);\r\n }\r\n }\r\n });\r\n }\r\n /**\r\n * When this is true the SDK will throw exceptions to aid in debugging.\r\n */\r\n DiagnosticLogger.prototype.enableDebugExceptions = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n return false;\r\n };\r\n /**\r\n * 0: OFF (default)\r\n * 1: CRITICAL\r\n * 2: >= WARNING\r\n */\r\n DiagnosticLogger.prototype.consoleLoggingLevel = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n return 0;\r\n };\r\n /**\r\n * 0: OFF\r\n * 1: CRITICAL (default)\r\n * 2: >= WARNING\r\n */\r\n DiagnosticLogger.prototype.telemetryLoggingLevel = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n return 1;\r\n };\r\n /**\r\n * The maximum number of internal messages allowed to be sent per page view\r\n */\r\n DiagnosticLogger.prototype.maxInternalMessageLimit = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n return 25;\r\n };\r\n /**\r\n * This method will throw exceptions in debug mode or attempt to log the error as a console warning.\r\n * @param severity {LoggingSeverity} - The severity of the log message\r\n * @param message {_InternalLogMessage} - The log message.\r\n */\r\n DiagnosticLogger.prototype.throwInternal = function (severity, msgId, msg, properties, isUserAct) {\r\n if (isUserAct === void 0) { isUserAct = false; }\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * This will write a warning to the console if possible\r\n * @param message {string} - The warning message\r\n */\r\n DiagnosticLogger.prototype.warnToConsole = function (message) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * This will write an error to the console if possible\r\n * @param message {string} - The warning message\r\n */\r\n DiagnosticLogger.prototype.errorToConsole = function (message) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Resets the internal message count\r\n */\r\n DiagnosticLogger.prototype.resetInternalMessageCount = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Logs a message to the internal queue.\r\n * @param severity {LoggingSeverity} - The severity of the log message\r\n * @param message {_InternalLogMessage} - The message to log.\r\n */\r\n DiagnosticLogger.prototype.logInternalMessage = function (severity, message) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n return DiagnosticLogger;\r\n}());\r\nexport { DiagnosticLogger };\r\nfunction _getLogger(logger) {\r\n return (logger || new DiagnosticLogger());\r\n}\r\n/**\r\n * This is a helper method which will call throwInternal on the passed logger, will throw exceptions in\r\n * debug mode or attempt to log the error as a console warning. This helper is provided mostly to better\r\n * support minification as logger.throwInternal() will not compress the publish \"throwInternal\" used throughout\r\n * the code.\r\n * @param logger - The Diagnostic Logger instance to use.\r\n * @param severity {LoggingSeverity} - The severity of the log message\r\n * @param message {_InternalLogMessage} - The log message.\r\n */\r\nexport function _throwInternal(logger, severity, msgId, msg, properties, isUserAct) {\r\n if (isUserAct === void 0) { isUserAct = false; }\r\n _getLogger(logger).throwInternal(severity, msgId, msg, properties, isUserAct);\r\n}\r\n/**\r\n * This is a helper method which will call warnToConsole on the passed logger with the provided message.\r\n * @param logger - The Diagnostic Logger instance to use.\r\n * @param message {_InternalLogMessage} - The log message.\r\n */\r\nexport function _warnToConsole(logger, message) {\r\n _getLogger(logger)[STR_WARN_TO_CONSOLE /* @min:%2ewarnToConsole */](message);\r\n}\r\n/**\r\n * Logs a message to the internal queue.\r\n * @param logger - The Diagnostic Logger instance to use.\r\n * @param severity {LoggingSeverity} - The severity of the log message\r\n * @param message {_InternalLogMessage} - The message to log.\r\n */\r\nexport function _logInternalMessage(logger, severity, message) {\r\n _getLogger(logger)[_DYN_LOG_INTERNAL_MESSAGE /* @min:%2elogInternalMessage */](severity, message);\r\n}\r\n//# sourceMappingURL=DiagnosticLogger.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { createEnumStyle } from \"@microsoft/applicationinsights-core-js\";\r\nexport var StorageType = createEnumStyle({\r\n LocalStorage: 0 /* eStorageType.LocalStorage */,\r\n SessionStorage: 1 /* eStorageType.SessionStorage */\r\n});\r\nexport var DistributedTracingModes = createEnumStyle({\r\n AI: 0 /* eDistributedTracingModes.AI */,\r\n AI_AND_W3C: 1 /* eDistributedTracingModes.AI_AND_W3C */,\r\n W3C: 2 /* eDistributedTracingModes.W3C */\r\n});\r\n//# sourceMappingURL=Enums.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { _throwInternal, dumpObj, getExceptionName, getGlobal, getGlobalInst, isNullOrUndefined, objForEachKey } from \"@microsoft/applicationinsights-core-js\";\r\nimport { StorageType } from \"./Enums\";\r\nimport { _DYN_REMOVE_ITEM, _DYN_TO_STRING } from \"./__DynamicConstants\";\r\nvar _canUseLocalStorage = undefined;\r\nvar _canUseSessionStorage = undefined;\r\nvar _storagePrefix = \"\";\r\n/**\r\n * Gets the localStorage object if available\r\n * @return {Storage} - Returns the storage object if available else returns null\r\n */\r\nfunction _getLocalStorageObject() {\r\n if (utlCanUseLocalStorage()) {\r\n return _getVerifiedStorageObject(StorageType.LocalStorage);\r\n }\r\n return null;\r\n}\r\n/**\r\n * Tests storage object (localStorage or sessionStorage) to verify that it is usable\r\n * More details here: https://mathiasbynens.be/notes/localstorage-pattern\r\n * @param storageType Type of storage\r\n * @return {Storage} Returns storage object verified that it is usable\r\n */\r\nfunction _getVerifiedStorageObject(storageType) {\r\n try {\r\n if (isNullOrUndefined(getGlobal())) {\r\n return null;\r\n }\r\n var uid = (new Date)[_DYN_TO_STRING /* @min:%2etoString */]();\r\n var storage = getGlobalInst(storageType === StorageType.LocalStorage ? \"localStorage\" : \"sessionStorage\");\r\n var name_1 = _storagePrefix + uid;\r\n storage.setItem(name_1, uid);\r\n var fail = storage.getItem(name_1) !== uid;\r\n storage[_DYN_REMOVE_ITEM /* @min:%2eremoveItem */](name_1);\r\n if (!fail) {\r\n return storage;\r\n }\r\n }\r\n catch (exception) {\r\n // eslint-disable-next-line no-empty\r\n }\r\n return null;\r\n}\r\n/**\r\n * Gets the sessionStorage object if available\r\n * @return {Storage} - Returns the storage object if available else returns null\r\n */\r\nfunction _getSessionStorageObject() {\r\n if (utlCanUseSessionStorage()) {\r\n return _getVerifiedStorageObject(StorageType.SessionStorage);\r\n }\r\n return null;\r\n}\r\n/**\r\n * Disables the global SDK usage of local or session storage if available\r\n */\r\nexport function utlDisableStorage() {\r\n _canUseLocalStorage = false;\r\n _canUseSessionStorage = false;\r\n}\r\nexport function utlSetStoragePrefix(storagePrefix) {\r\n _storagePrefix = storagePrefix || \"\";\r\n}\r\n/**\r\n * Re-enables the global SDK usage of local or session storage if available\r\n */\r\nexport function utlEnableStorage() {\r\n _canUseLocalStorage = utlCanUseLocalStorage(true);\r\n _canUseSessionStorage = utlCanUseSessionStorage(true);\r\n}\r\n/**\r\n * Returns whether LocalStorage can be used, if the reset parameter is passed a true this will override\r\n * any previous disable calls.\r\n * @param reset - Should the usage be reset and determined only based on whether LocalStorage is available\r\n */\r\nexport function utlCanUseLocalStorage(reset) {\r\n if (reset || _canUseLocalStorage === undefined) {\r\n _canUseLocalStorage = !!_getVerifiedStorageObject(StorageType.LocalStorage);\r\n }\r\n return _canUseLocalStorage;\r\n}\r\nexport function utlGetLocalStorage(logger, name) {\r\n var storage = _getLocalStorageObject();\r\n if (storage !== null) {\r\n try {\r\n return storage.getItem(name);\r\n }\r\n catch (e) {\r\n _canUseLocalStorage = false;\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 1 /* _eInternalMessageId.BrowserCannotReadLocalStorage */, \"Browser failed read of local storage. \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n }\r\n return null;\r\n}\r\nexport function utlSetLocalStorage(logger, name, data) {\r\n var storage = _getLocalStorageObject();\r\n if (storage !== null) {\r\n try {\r\n storage.setItem(name, data);\r\n return true;\r\n }\r\n catch (e) {\r\n _canUseLocalStorage = false;\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 3 /* _eInternalMessageId.BrowserCannotWriteLocalStorage */, \"Browser failed write to local storage. \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n }\r\n return false;\r\n}\r\nexport function utlRemoveStorage(logger, name) {\r\n var storage = _getLocalStorageObject();\r\n if (storage !== null) {\r\n try {\r\n storage[_DYN_REMOVE_ITEM /* @min:%2eremoveItem */](name);\r\n return true;\r\n }\r\n catch (e) {\r\n _canUseLocalStorage = false;\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 5 /* _eInternalMessageId.BrowserFailedRemovalFromLocalStorage */, \"Browser failed removal of local storage item. \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n }\r\n return false;\r\n}\r\nexport function utlCanUseSessionStorage(reset) {\r\n if (reset || _canUseSessionStorage === undefined) {\r\n _canUseSessionStorage = !!_getVerifiedStorageObject(StorageType.SessionStorage);\r\n }\r\n return _canUseSessionStorage;\r\n}\r\nexport function utlGetSessionStorageKeys() {\r\n var keys = [];\r\n if (utlCanUseSessionStorage()) {\r\n objForEachKey(getGlobalInst(\"sessionStorage\"), function (key) {\r\n keys.push(key);\r\n });\r\n }\r\n return keys;\r\n}\r\nexport function utlGetSessionStorage(logger, name) {\r\n var storage = _getSessionStorageObject();\r\n if (storage !== null) {\r\n try {\r\n return storage.getItem(name);\r\n }\r\n catch (e) {\r\n _canUseSessionStorage = false;\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 2 /* _eInternalMessageId.BrowserCannotReadSessionStorage */, \"Browser failed read of session storage. \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n }\r\n return null;\r\n}\r\nexport function utlSetSessionStorage(logger, name, data) {\r\n var storage = _getSessionStorageObject();\r\n if (storage !== null) {\r\n try {\r\n storage.setItem(name, data);\r\n return true;\r\n }\r\n catch (e) {\r\n _canUseSessionStorage = false;\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 4 /* _eInternalMessageId.BrowserCannotWriteSessionStorage */, \"Browser failed write to session storage. \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n }\r\n return false;\r\n}\r\nexport function utlRemoveSessionStorage(logger, name) {\r\n var storage = _getSessionStorageObject();\r\n if (storage !== null) {\r\n try {\r\n storage[_DYN_REMOVE_ITEM /* @min:%2eremoveItem */](name);\r\n return true;\r\n }\r\n catch (e) {\r\n _canUseSessionStorage = false;\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 6 /* _eInternalMessageId.BrowserFailedRemovalFromSessionStorage */, \"Browser failed removal of session storage item. \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n }\r\n return false;\r\n}\r\n//# sourceMappingURL=StorageHelperFuncs.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the\r\nexport { Util, CorrelationIdHelper, DateTimeUtils, dateTimeUtilsNow, dateTimeUtilsDuration, UrlHelper, isInternalApplicationInsightsEndpoint, createDistributedTraceContextFromTrace } from \"./Util\";\r\nexport { ThrottleMgr } from \"./ThrottleMgr\";\r\nexport { parseConnectionString, ConnectionStringParser } from \"./ConnectionStringParser\";\r\nexport { RequestHeaders } from \"./RequestResponseHeaders\";\r\nexport { DisabledPropertyName, ProcessLegacy, SampleRate, HttpMethod, DEFAULT_BREEZE_ENDPOINT, DEFAULT_BREEZE_PATH, strNotSpecified } from \"./Constants\";\r\nexport { Envelope } from \"./Telemetry/Common/Envelope\";\r\nexport { Event } from \"./Telemetry/Event\";\r\nexport { Exception } from \"./Telemetry/Exception\";\r\nexport { Metric } from \"./Telemetry/Metric\";\r\nexport { PageView } from \"./Telemetry/PageView\";\r\nexport { RemoteDependencyData } from \"./Telemetry/RemoteDependencyData\";\r\nexport { Trace } from \"./Telemetry/Trace\";\r\nexport { PageViewPerformance } from \"./Telemetry/PageViewPerformance\";\r\nexport { Data } from \"./Telemetry/Common/Data\";\r\nexport { SeverityLevel } from \"./Interfaces/Contracts/SeverityLevel\";\r\nexport { ConfigurationManager } from \"./Interfaces/IConfig\";\r\nexport { ContextTagKeys } from \"./Interfaces/Contracts/ContextTagKeys\";\r\nexport { DataSanitizer, dataSanitizeKeyAndAddUniqueness, dataSanitizeKey, dataSanitizeString, dataSanitizeUrl, dataSanitizeMessage, dataSanitizeException, dataSanitizeProperties, dataSanitizeMeasurements, dataSanitizeId, dataSanitizeInput, dsPadNumber } from \"./Telemetry/Common/DataSanitizer\";\r\nexport { TelemetryItemCreator, createTelemetryItem } from \"./TelemetryItemCreator\";\r\nexport { CtxTagKeys, Extensions } from \"./Interfaces/PartAExtensions\";\r\nexport { DistributedTracingModes } from \"./Enums\";\r\nexport { stringToBoolOrDefault, msToTimeSpan, getExtensionByName, isCrossOriginError } from \"./HelperFuncs\";\r\nexport { isBeaconsSupported as isBeaconApiSupported, createTraceParent, parseTraceParent, isValidTraceId, isValidSpanId, isValidTraceParent, isSampledFlag, formatTraceParent, findW3cTraceParent } from \"@microsoft/applicationinsights-core-js\";\r\nexport { createDomEvent } from \"./DomHelperFuncs\";\r\nexport { utlDisableStorage, utlEnableStorage, utlCanUseLocalStorage, utlGetLocalStorage, utlSetLocalStorage, utlRemoveStorage, utlCanUseSessionStorage, utlGetSessionStorageKeys, utlGetSessionStorage, utlSetSessionStorage, utlRemoveSessionStorage, utlSetStoragePrefix } from \"./StorageHelperFuncs\";\r\nexport { urlParseUrl, urlGetAbsoluteUrl, urlGetPathName, urlGetCompleteUrl, urlParseHost, urlParseFullHost } from \"./UrlHelperFuncs\";\r\nexport var PropertiesPluginIdentifier = \"AppInsightsPropertiesPlugin\";\r\nexport var BreezeChannelIdentifier = \"AppInsightsChannelPlugin\";\r\nexport var AnalyticsPluginIdentifier = \"ApplicationInsightsAnalytics\";\r\n//# sourceMappingURL=applicationinsights-common.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nvar _a;\r\nimport { _throwInternal, getJSON, hasJSON, isObject, objForEachKey, strTrim } from \"@microsoft/applicationinsights-core-js\";\r\nimport { _DYN_LENGTH, _DYN_SANITIZE_EXCEPTION, _DYN_SANITIZE_KEY_AND_ADD2, _DYN_SANITIZE_MEASUREMENT3, _DYN_SANITIZE_PROPERTIES, _DYN_STRINGIFY, _DYN_SUBSTRING, _DYN_TO_STRING } from \"../../__DynamicConstants\";\r\nexport function dataSanitizeKeyAndAddUniqueness(logger, key, map) {\r\n var origLength = key[_DYN_LENGTH /* @min:%2elength */];\r\n var field = dataSanitizeKey(logger, key);\r\n // validation truncated the length. We need to add uniqueness\r\n if (field[_DYN_LENGTH /* @min:%2elength */] !== origLength) {\r\n var i = 0;\r\n var uniqueField = field;\r\n while (map[uniqueField] !== undefined) {\r\n i++;\r\n uniqueField = field[_DYN_SUBSTRING /* @min:%2esubstring */](0, 150 /* DataSanitizerValues.MAX_NAME_LENGTH */ - 3) + dsPadNumber(i);\r\n }\r\n field = uniqueField;\r\n }\r\n return field;\r\n}\r\nexport function dataSanitizeKey(logger, name) {\r\n var nameTrunc;\r\n if (name) {\r\n // Remove any leading or trailing whitespace\r\n name = strTrim(name[_DYN_TO_STRING /* @min:%2etoString */]());\r\n // truncate the string to 150 chars\r\n if (name[_DYN_LENGTH /* @min:%2elength */] > 150 /* DataSanitizerValues.MAX_NAME_LENGTH */) {\r\n nameTrunc = name[_DYN_SUBSTRING /* @min:%2esubstring */](0, 150 /* DataSanitizerValues.MAX_NAME_LENGTH */);\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 57 /* _eInternalMessageId.NameTooLong */, \"name is too long. It has been truncated to \" + 150 /* DataSanitizerValues.MAX_NAME_LENGTH */ + \" characters.\", { name: name }, true);\r\n }\r\n }\r\n return nameTrunc || name;\r\n}\r\nexport function dataSanitizeString(logger, value, maxLength) {\r\n if (maxLength === void 0) { maxLength = 1024 /* DataSanitizerValues.MAX_STRING_LENGTH */; }\r\n var valueTrunc;\r\n if (value) {\r\n maxLength = maxLength ? maxLength : 1024 /* DataSanitizerValues.MAX_STRING_LENGTH */; // in case default parameters dont work\r\n value = strTrim(value);\r\n if (value.toString()[_DYN_LENGTH /* @min:%2elength */] > maxLength) {\r\n valueTrunc = value[_DYN_TO_STRING /* @min:%2etoString */]()[_DYN_SUBSTRING /* @min:%2esubstring */](0, maxLength);\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 61 /* _eInternalMessageId.StringValueTooLong */, \"string value is too long. It has been truncated to \" + maxLength + \" characters.\", { value: value }, true);\r\n }\r\n }\r\n return valueTrunc || value;\r\n}\r\nexport function dataSanitizeUrl(logger, url) {\r\n return dataSanitizeInput(logger, url, 2048 /* DataSanitizerValues.MAX_URL_LENGTH */, 66 /* _eInternalMessageId.UrlTooLong */);\r\n}\r\nexport function dataSanitizeMessage(logger, message) {\r\n var messageTrunc;\r\n if (message) {\r\n if (message[_DYN_LENGTH /* @min:%2elength */] > 32768 /* DataSanitizerValues.MAX_MESSAGE_LENGTH */) {\r\n messageTrunc = message[_DYN_SUBSTRING /* @min:%2esubstring */](0, 32768 /* DataSanitizerValues.MAX_MESSAGE_LENGTH */);\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 56 /* _eInternalMessageId.MessageTruncated */, \"message is too long, it has been truncated to \" + 32768 /* DataSanitizerValues.MAX_MESSAGE_LENGTH */ + \" characters.\", { message: message }, true);\r\n }\r\n }\r\n return messageTrunc || message;\r\n}\r\nexport function dataSanitizeException(logger, exception) {\r\n var exceptionTrunc;\r\n if (exception) {\r\n // Make surte its a string\r\n var value = \"\" + exception;\r\n if (value[_DYN_LENGTH /* @min:%2elength */] > 32768 /* DataSanitizerValues.MAX_EXCEPTION_LENGTH */) {\r\n exceptionTrunc = value[_DYN_SUBSTRING /* @min:%2esubstring */](0, 32768 /* DataSanitizerValues.MAX_EXCEPTION_LENGTH */);\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 52 /* _eInternalMessageId.ExceptionTruncated */, \"exception is too long, it has been truncated to \" + 32768 /* DataSanitizerValues.MAX_EXCEPTION_LENGTH */ + \" characters.\", { exception: exception }, true);\r\n }\r\n }\r\n return exceptionTrunc || exception;\r\n}\r\nexport function dataSanitizeProperties(logger, properties) {\r\n if (properties) {\r\n var tempProps_1 = {};\r\n objForEachKey(properties, function (prop, value) {\r\n if (isObject(value) && hasJSON()) {\r\n // Stringify any part C properties\r\n try {\r\n value = getJSON()[_DYN_STRINGIFY /* @min:%2estringify */](value);\r\n }\r\n catch (e) {\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 49 /* _eInternalMessageId.CannotSerializeObjectNonSerializable */, \"custom property is not valid\", { exception: e }, true);\r\n }\r\n }\r\n value = dataSanitizeString(logger, value, 8192 /* DataSanitizerValues.MAX_PROPERTY_LENGTH */);\r\n prop = dataSanitizeKeyAndAddUniqueness(logger, prop, tempProps_1);\r\n tempProps_1[prop] = value;\r\n });\r\n properties = tempProps_1;\r\n }\r\n return properties;\r\n}\r\nexport function dataSanitizeMeasurements(logger, measurements) {\r\n if (measurements) {\r\n var tempMeasurements_1 = {};\r\n objForEachKey(measurements, function (measure, value) {\r\n measure = dataSanitizeKeyAndAddUniqueness(logger, measure, tempMeasurements_1);\r\n tempMeasurements_1[measure] = value;\r\n });\r\n measurements = tempMeasurements_1;\r\n }\r\n return measurements;\r\n}\r\nexport function dataSanitizeId(logger, id) {\r\n return id ? dataSanitizeInput(logger, id, 128 /* DataSanitizerValues.MAX_ID_LENGTH */, 69 /* _eInternalMessageId.IdTooLong */)[_DYN_TO_STRING /* @min:%2etoString */]() : id;\r\n}\r\nexport function dataSanitizeInput(logger, input, maxLength, _msgId) {\r\n var inputTrunc;\r\n if (input) {\r\n input = strTrim(input);\r\n if (input[_DYN_LENGTH /* @min:%2elength */] > maxLength) {\r\n inputTrunc = input[_DYN_SUBSTRING /* @min:%2esubstring */](0, maxLength);\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, _msgId, \"input is too long, it has been truncated to \" + maxLength + \" characters.\", { data: input }, true);\r\n }\r\n }\r\n return inputTrunc || input;\r\n}\r\nexport function dsPadNumber(num) {\r\n var s = \"00\" + num;\r\n return s.substr(s[_DYN_LENGTH /* @min:%2elength */] - 3);\r\n}\r\n/**\r\n * Provides the DataSanitizer functions within the previous namespace.\r\n */\r\nexport var DataSanitizer = (_a = {\r\n MAX_NAME_LENGTH: 150 /* DataSanitizerValues.MAX_NAME_LENGTH */,\r\n MAX_ID_LENGTH: 128 /* DataSanitizerValues.MAX_ID_LENGTH */,\r\n MAX_PROPERTY_LENGTH: 8192 /* DataSanitizerValues.MAX_PROPERTY_LENGTH */,\r\n MAX_STRING_LENGTH: 1024 /* DataSanitizerValues.MAX_STRING_LENGTH */,\r\n MAX_URL_LENGTH: 2048 /* DataSanitizerValues.MAX_URL_LENGTH */,\r\n MAX_MESSAGE_LENGTH: 32768 /* DataSanitizerValues.MAX_MESSAGE_LENGTH */,\r\n MAX_EXCEPTION_LENGTH: 32768 /* DataSanitizerValues.MAX_EXCEPTION_LENGTH */\r\n },\r\n _a[_DYN_SANITIZE_KEY_AND_ADD2 /* @min:sanitizeKeyAndAddUniqueness */] = dataSanitizeKeyAndAddUniqueness,\r\n _a.sanitizeKey = dataSanitizeKey,\r\n _a.sanitizeString = dataSanitizeString,\r\n _a.sanitizeUrl = dataSanitizeUrl,\r\n _a.sanitizeMessage = dataSanitizeMessage,\r\n _a[_DYN_SANITIZE_EXCEPTION /* @min:sanitizeException */] = dataSanitizeException,\r\n _a[_DYN_SANITIZE_PROPERTIES /* @min:sanitizeProperties */] = dataSanitizeProperties,\r\n _a[_DYN_SANITIZE_MEASUREMENT3 /* @min:sanitizeMeasurements */] = dataSanitizeMeasurements,\r\n _a.sanitizeId = dataSanitizeId,\r\n _a.sanitizeInput = dataSanitizeInput,\r\n _a.padNumber = dsPadNumber,\r\n _a.trim = strTrim,\r\n _a);\r\n//# sourceMappingURL=DataSanitizer.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n/**\r\n * This is an internal property used to cause internal (reporting) requests to be ignored from reporting\r\n * additional telemetry, to handle polyfil implementations ALL urls used with a disabled request will\r\n * also be ignored for future requests even when this property is not provided.\r\n * Tagging as Ignore as this is an internal value and is not expected to be used outside of the SDK\r\n * @ignore\r\n */\r\nexport var DisabledPropertyName = \"Microsoft_ApplicationInsights_BypassAjaxInstrumentation\";\r\nexport var SampleRate = \"sampleRate\";\r\nexport var ProcessLegacy = \"ProcessLegacy\";\r\nexport var HttpMethod = \"http.method\";\r\nexport var DEFAULT_BREEZE_ENDPOINT = \"https://dc.services.visualstudio.com\";\r\nexport var DEFAULT_BREEZE_PATH = \"/v2/track\";\r\nexport var strNotSpecified = \"not_specified\";\r\nexport var strIkey = \"iKey\";\r\n//# sourceMappingURL=Constants.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { isNullOrUndefined, objForEachKey, throwError, toISOString } from \"@microsoft/applicationinsights-core-js\";\r\nimport { strIkey, strNotSpecified } from \"./Constants\";\r\nimport { dataSanitizeString } from \"./Telemetry/Common/DataSanitizer\";\r\nimport { _DYN_NAME } from \"./__DynamicConstants\";\r\n/**\r\n * Create a telemetry item that the 1DS channel understands\r\n * @param item domain specific properties; part B\r\n * @param baseType telemetry item type. ie PageViewData\r\n * @param envelopeName name of the envelope. ie Microsoft.ApplicationInsights.<instrumentation key>.PageView\r\n * @param customProperties user defined custom properties; part C\r\n * @param systemProperties system properties that are added to the context; part A\r\n * @returns ITelemetryItem that is sent to channel\r\n */\r\nexport function createTelemetryItem(item, baseType, envelopeName, logger, customProperties, systemProperties) {\r\n var _a;\r\n envelopeName = dataSanitizeString(logger, envelopeName) || strNotSpecified;\r\n if (isNullOrUndefined(item) ||\r\n isNullOrUndefined(baseType) ||\r\n isNullOrUndefined(envelopeName)) {\r\n throwError(\"Input doesn't contain all required fields\");\r\n }\r\n var iKey = \"\";\r\n if (item[strIkey]) {\r\n iKey = item[strIkey];\r\n delete item[strIkey];\r\n }\r\n var telemetryItem = (_a = {},\r\n _a[_DYN_NAME /* @min:name */] = envelopeName,\r\n _a.time = toISOString(new Date()),\r\n _a.iKey = iKey,\r\n _a.ext = systemProperties ? systemProperties : {},\r\n _a.tags = [],\r\n _a.data = {},\r\n _a.baseType = baseType,\r\n _a.baseData = item // Part B\r\n ,\r\n _a);\r\n // Part C\r\n if (!isNullOrUndefined(customProperties)) {\r\n objForEachKey(customProperties, function (prop, value) {\r\n telemetryItem.data[prop] = value;\r\n });\r\n }\r\n return telemetryItem;\r\n}\r\nvar TelemetryItemCreator = /** @class */ (function () {\r\n function TelemetryItemCreator() {\r\n }\r\n /**\r\n * Create a telemetry item that the 1DS channel understands\r\n * @param item domain specific properties; part B\r\n * @param baseType telemetry item type. ie PageViewData\r\n * @param envelopeName name of the envelope. ie Microsoft.ApplicationInsights.<instrumentation key>.PageView\r\n * @param customProperties user defined custom properties; part C\r\n * @param systemProperties system properties that are added to the context; part A\r\n * @returns ITelemetryItem that is sent to channel\r\n */\r\n TelemetryItemCreator.create = createTelemetryItem;\r\n return TelemetryItemCreator;\r\n}());\r\nexport { TelemetryItemCreator };\r\n//# sourceMappingURL=TelemetryItemCreator.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { strNotSpecified } from \"../Constants\";\r\nimport { _DYN_MEASUREMENTS, _DYN_NAME, _DYN_PROPERTIES } from \"../__DynamicConstants\";\r\nimport { dataSanitizeMeasurements, dataSanitizeProperties, dataSanitizeString } from \"./Common/DataSanitizer\";\r\nvar Event = /** @class */ (function () {\r\n /**\r\n * Constructs a new instance of the EventTelemetry object\r\n */\r\n function Event(logger, name, properties, measurements) {\r\n this.aiDataContract = {\r\n ver: 1 /* FieldType.Required */,\r\n name: 1 /* FieldType.Required */,\r\n properties: 0 /* FieldType.Default */,\r\n measurements: 0 /* FieldType.Default */\r\n };\r\n var _self = this;\r\n _self.ver = 2;\r\n _self[_DYN_NAME /* @min:%2ename */] = dataSanitizeString(logger, name) || strNotSpecified;\r\n _self[_DYN_PROPERTIES /* @min:%2eproperties */] = dataSanitizeProperties(logger, properties);\r\n _self[_DYN_MEASUREMENTS /* @min:%2emeasurements */] = dataSanitizeMeasurements(logger, measurements);\r\n }\r\n Event.envelopeType = \"Microsoft.ApplicationInsights.{0}.Event\";\r\n Event.dataType = \"EventData\";\r\n return Event;\r\n}());\r\nexport { Event };\r\n//# sourceMappingURL=Event.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { strNotSpecified } from \"../Constants\";\r\nimport { _DYN_MEASUREMENTS, _DYN_MESSAGE, _DYN_PROPERTIES, _DYN_SEVERITY_LEVEL } from \"../__DynamicConstants\";\r\nimport { dataSanitizeMeasurements, dataSanitizeMessage, dataSanitizeProperties } from \"./Common/DataSanitizer\";\r\nvar Trace = /** @class */ (function () {\r\n /**\r\n * Constructs a new instance of the TraceTelemetry object\r\n */\r\n function Trace(logger, message, severityLevel, properties, measurements) {\r\n this.aiDataContract = {\r\n ver: 1 /* FieldType.Required */,\r\n message: 1 /* FieldType.Required */,\r\n severityLevel: 0 /* FieldType.Default */,\r\n properties: 0 /* FieldType.Default */\r\n };\r\n var _self = this;\r\n _self.ver = 2;\r\n message = message || strNotSpecified;\r\n _self[_DYN_MESSAGE /* @min:%2emessage */] = dataSanitizeMessage(logger, message);\r\n _self[_DYN_PROPERTIES /* @min:%2eproperties */] = dataSanitizeProperties(logger, properties);\r\n _self[_DYN_MEASUREMENTS /* @min:%2emeasurements */] = dataSanitizeMeasurements(logger, measurements);\r\n if (severityLevel) {\r\n _self[_DYN_SEVERITY_LEVEL /* @min:%2eseverityLevel */] = severityLevel;\r\n }\r\n }\r\n Trace.envelopeType = \"Microsoft.ApplicationInsights.{0}.Message\";\r\n Trace.dataType = \"MessageData\";\r\n return Trace;\r\n}());\r\nexport { Trace };\r\n//# sourceMappingURL=Trace.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nvar DataPoint = /** @class */ (function () {\r\n function DataPoint() {\r\n /**\r\n * The data contract for serializing this object.\r\n */\r\n this.aiDataContract = {\r\n name: 1 /* FieldType.Required */,\r\n kind: 0 /* FieldType.Default */,\r\n value: 1 /* FieldType.Required */,\r\n count: 0 /* FieldType.Default */,\r\n min: 0 /* FieldType.Default */,\r\n max: 0 /* FieldType.Default */,\r\n stdDev: 0 /* FieldType.Default */\r\n };\r\n /**\r\n * Metric type. Single measurement or the aggregated value.\r\n */\r\n this.kind = 0 /* DataPointType.Measurement */;\r\n }\r\n return DataPoint;\r\n}());\r\nexport { DataPoint };\r\n//# sourceMappingURL=DataPoint.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { strNotSpecified } from \"../Constants\";\r\nimport { _DYN_COUNT, _DYN_MEASUREMENTS, _DYN_NAME, _DYN_PROPERTIES } from \"../__DynamicConstants\";\r\nimport { DataPoint } from \"./Common/DataPoint\";\r\nimport { dataSanitizeMeasurements, dataSanitizeProperties, dataSanitizeString } from \"./Common/DataSanitizer\";\r\nvar Metric = /** @class */ (function () {\r\n /**\r\n * Constructs a new instance of the MetricTelemetry object\r\n */\r\n function Metric(logger, name, value, count, min, max, stdDev, properties, measurements) {\r\n this.aiDataContract = {\r\n ver: 1 /* FieldType.Required */,\r\n metrics: 1 /* FieldType.Required */,\r\n properties: 0 /* FieldType.Default */\r\n };\r\n var _self = this;\r\n _self.ver = 2;\r\n var dataPoint = new DataPoint();\r\n dataPoint[_DYN_COUNT /* @min:%2ecount */] = count > 0 ? count : undefined;\r\n dataPoint.max = isNaN(max) || max === null ? undefined : max;\r\n dataPoint.min = isNaN(min) || min === null ? undefined : min;\r\n dataPoint[_DYN_NAME /* @min:%2ename */] = dataSanitizeString(logger, name) || strNotSpecified;\r\n dataPoint.value = value;\r\n dataPoint.stdDev = isNaN(stdDev) || stdDev === null ? undefined : stdDev;\r\n _self.metrics = [dataPoint];\r\n _self[_DYN_PROPERTIES /* @min:%2eproperties */] = dataSanitizeProperties(logger, properties);\r\n _self[_DYN_MEASUREMENTS /* @min:%2emeasurements */] = dataSanitizeMeasurements(logger, measurements);\r\n }\r\n Metric.envelopeType = \"Microsoft.ApplicationInsights.{0}.Metric\";\r\n Metric.dataType = \"MetricData\";\r\n return Metric;\r\n}());\r\nexport { Metric };\r\n//# sourceMappingURL=Metric.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { strNotSpecified } from \"../Constants\";\r\nimport { msToTimeSpan } from \"../HelperFuncs\";\r\nimport { _DYN_DURATION, _DYN_MEASUREMENTS, _DYN_NAME, _DYN_PROPERTIES } from \"../__DynamicConstants\";\r\nimport { dataSanitizeId, dataSanitizeMeasurements, dataSanitizeProperties, dataSanitizeString, dataSanitizeUrl } from \"./Common/DataSanitizer\";\r\nvar PageView = /** @class */ (function () {\r\n /**\r\n * Constructs a new instance of the PageEventTelemetry object\r\n */\r\n function PageView(logger, name, url, durationMs, properties, measurements, id) {\r\n this.aiDataContract = {\r\n ver: 1 /* FieldType.Required */,\r\n name: 0 /* FieldType.Default */,\r\n url: 0 /* FieldType.Default */,\r\n duration: 0 /* FieldType.Default */,\r\n properties: 0 /* FieldType.Default */,\r\n measurements: 0 /* FieldType.Default */,\r\n id: 0 /* FieldType.Default */\r\n };\r\n var _self = this;\r\n _self.ver = 2;\r\n _self.id = dataSanitizeId(logger, id);\r\n _self.url = dataSanitizeUrl(logger, url);\r\n _self[_DYN_NAME /* @min:%2ename */] = dataSanitizeString(logger, name) || strNotSpecified;\r\n if (!isNaN(durationMs)) {\r\n _self[_DYN_DURATION /* @min:%2eduration */] = msToTimeSpan(durationMs);\r\n }\r\n _self[_DYN_PROPERTIES /* @min:%2eproperties */] = dataSanitizeProperties(logger, properties);\r\n _self[_DYN_MEASUREMENTS /* @min:%2emeasurements */] = dataSanitizeMeasurements(logger, measurements);\r\n }\r\n PageView.envelopeType = \"Microsoft.ApplicationInsights.{0}.Pageview\";\r\n PageView.dataType = \"PageviewData\";\r\n return PageView;\r\n}());\r\nexport { PageView };\r\n//# sourceMappingURL=PageView.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { strNotSpecified } from \"../Constants\";\r\nimport { _DYN_DURATION, _DYN_MEASUREMENTS, _DYN_NAME, _DYN_PROPERTIES, _DYN_RECEIVED_RESPONSE } from \"../__DynamicConstants\";\r\nimport { dataSanitizeMeasurements, dataSanitizeProperties, dataSanitizeString, dataSanitizeUrl } from \"./Common/DataSanitizer\";\r\nvar PageViewPerformance = /** @class */ (function () {\r\n /**\r\n * Constructs a new instance of the PageEventTelemetry object\r\n */\r\n function PageViewPerformance(logger, name, url, unused, properties, measurements, cs4BaseData) {\r\n this.aiDataContract = {\r\n ver: 1 /* FieldType.Required */,\r\n name: 0 /* FieldType.Default */,\r\n url: 0 /* FieldType.Default */,\r\n duration: 0 /* FieldType.Default */,\r\n perfTotal: 0 /* FieldType.Default */,\r\n networkConnect: 0 /* FieldType.Default */,\r\n sentRequest: 0 /* FieldType.Default */,\r\n receivedResponse: 0 /* FieldType.Default */,\r\n domProcessing: 0 /* FieldType.Default */,\r\n properties: 0 /* FieldType.Default */,\r\n measurements: 0 /* FieldType.Default */\r\n };\r\n var _self = this;\r\n _self.ver = 2;\r\n _self.url = dataSanitizeUrl(logger, url);\r\n _self[_DYN_NAME /* @min:%2ename */] = dataSanitizeString(logger, name) || strNotSpecified;\r\n _self[_DYN_PROPERTIES /* @min:%2eproperties */] = dataSanitizeProperties(logger, properties);\r\n _self[_DYN_MEASUREMENTS /* @min:%2emeasurements */] = dataSanitizeMeasurements(logger, measurements);\r\n if (cs4BaseData) {\r\n _self.domProcessing = cs4BaseData.domProcessing;\r\n _self[_DYN_DURATION /* @min:%2eduration */] = cs4BaseData[_DYN_DURATION /* @min:%2eduration */];\r\n _self.networkConnect = cs4BaseData.networkConnect;\r\n _self.perfTotal = cs4BaseData.perfTotal;\r\n _self[_DYN_RECEIVED_RESPONSE /* @min:%2ereceivedResponse */] = cs4BaseData[_DYN_RECEIVED_RESPONSE /* @min:%2ereceivedResponse */];\r\n _self.sentRequest = cs4BaseData.sentRequest;\r\n }\r\n }\r\n PageViewPerformance.envelopeType = \"Microsoft.ApplicationInsights.{0}.PageviewPerformance\";\r\n PageViewPerformance.dataType = \"PageviewPerformanceData\";\r\n return PageViewPerformance;\r\n}());\r\nexport { PageViewPerformance };\r\n//# sourceMappingURL=PageViewPerformance.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { __assign } from \"tslib\";\r\nimport { arrForEach, arrMap, isArray, isError, isFunction, isNullOrUndefined, isObject, isString, strTrim } from \"@microsoft/applicationinsights-core-js\";\r\nimport { strNotSpecified } from \"../Constants\";\r\nimport { _DYN_ASSEMBLY, _DYN_EXCEPTIONS, _DYN_FILE_NAME, _DYN_HAS_FULL_STACK, _DYN_INDEX_OF, _DYN_IS_MANUAL, _DYN_LENGTH, _DYN_LEVEL, _DYN_LINE, _DYN_MEASUREMENTS, _DYN_MESSAGE, _DYN_METHOD, _DYN_NAME, _DYN_PARSED_STACK, _DYN_PROBLEM_GROUP, _DYN_PROPERTIES, _DYN_SEVERITY_LEVEL, _DYN_SIZE_IN_BYTES, _DYN_SPLIT, _DYN_STRINGIFY, _DYN_TO_STRING, _DYN_TYPE_NAME, _DYN__CREATE_FROM_INTERFA1 } from \"../__DynamicConstants\";\r\nimport { dataSanitizeException, dataSanitizeMeasurements, dataSanitizeMessage, dataSanitizeProperties, dataSanitizeString } from \"./Common/DataSanitizer\";\r\nvar NoMethod = \"<no_method>\";\r\nvar strError = \"error\";\r\nvar strStack = \"stack\";\r\nvar strStackDetails = \"stackDetails\";\r\nvar strErrorSrc = \"errorSrc\";\r\nvar strMessage = \"message\";\r\nvar strDescription = \"description\";\r\nfunction _stringify(value, convertToString) {\r\n var result = value;\r\n if (result && !isString(result)) {\r\n if (JSON && JSON[_DYN_STRINGIFY /* @min:%2estringify */]) {\r\n result = JSON[_DYN_STRINGIFY /* @min:%2estringify */](value);\r\n if (convertToString && (!result || result === \"{}\")) {\r\n if (isFunction(value[_DYN_TO_STRING /* @min:%2etoString */])) {\r\n result = value[_DYN_TO_STRING /* @min:%2etoString */]();\r\n }\r\n else {\r\n result = \"\" + value;\r\n }\r\n }\r\n }\r\n else {\r\n result = \"\" + value + \" - (Missing JSON.stringify)\";\r\n }\r\n }\r\n return result || \"\";\r\n}\r\nfunction _formatMessage(theEvent, errorType) {\r\n var evtMessage = theEvent;\r\n if (theEvent) {\r\n if (evtMessage && !isString(evtMessage)) {\r\n evtMessage = theEvent[strMessage] || theEvent[strDescription] || evtMessage;\r\n }\r\n // Make sure the message is a string\r\n if (evtMessage && !isString(evtMessage)) {\r\n // tslint:disable-next-line: prefer-conditional-expression\r\n evtMessage = _stringify(evtMessage, true);\r\n }\r\n if (theEvent[\"filename\"]) {\r\n // Looks like an event object with filename\r\n evtMessage = evtMessage + \" @\" + (theEvent[\"filename\"] || \"\") + \":\" + (theEvent[\"lineno\"] || \"?\") + \":\" + (theEvent[\"colno\"] || \"?\");\r\n }\r\n }\r\n // Automatically add the error type to the message if it does already appear to be present\r\n if (errorType && errorType !== \"String\" && errorType !== \"Object\" && errorType !== \"Error\" && (evtMessage || \"\")[_DYN_INDEX_OF /* @min:%2eindexOf */](errorType) === -1) {\r\n evtMessage = errorType + \": \" + evtMessage;\r\n }\r\n return evtMessage || \"\";\r\n}\r\nfunction _isExceptionDetailsInternal(value) {\r\n try {\r\n if (isObject(value)) {\r\n return \"hasFullStack\" in value && \"typeName\" in value;\r\n }\r\n }\r\n catch (e) {\r\n // This can happen with some native browser objects, but should not happen for the type we are checking for\r\n }\r\n return false;\r\n}\r\nfunction _isExceptionInternal(value) {\r\n try {\r\n if (isObject(value)) {\r\n return (\"ver\" in value && \"exceptions\" in value && \"properties\" in value);\r\n }\r\n }\r\n catch (e) {\r\n // This can happen with some native browser objects, but should not happen for the type we are checking for\r\n }\r\n return false;\r\n}\r\nfunction _isStackDetails(details) {\r\n return details && details.src && isString(details.src) && details.obj && isArray(details.obj);\r\n}\r\nfunction _convertStackObj(errorStack) {\r\n var src = errorStack || \"\";\r\n if (!isString(src)) {\r\n if (isString(src[strStack])) {\r\n src = src[strStack];\r\n }\r\n else {\r\n src = \"\" + src;\r\n }\r\n }\r\n var items = src[_DYN_SPLIT /* @min:%2esplit */](\"\\n\");\r\n return {\r\n src: src,\r\n obj: items\r\n };\r\n}\r\nfunction _getOperaStack(errorMessage) {\r\n var stack = [];\r\n var lines = errorMessage[_DYN_SPLIT /* @min:%2esplit */](\"\\n\");\r\n for (var lp = 0; lp < lines[_DYN_LENGTH /* @min:%2elength */]; lp++) {\r\n var entry = lines[lp];\r\n if (lines[lp + 1]) {\r\n entry += \"@\" + lines[lp + 1];\r\n lp++;\r\n }\r\n stack.push(entry);\r\n }\r\n return {\r\n src: errorMessage,\r\n obj: stack\r\n };\r\n}\r\nfunction _getStackFromErrorObj(errorObj) {\r\n var details = null;\r\n if (errorObj) {\r\n try {\r\n /* Using bracket notation is support older browsers (IE 7/8 -- dont remember the version) that throw when using dot\r\n notation for undefined objects and we don't want to loose the error from being reported */\r\n if (errorObj[strStack]) {\r\n // Chrome/Firefox\r\n details = _convertStackObj(errorObj[strStack]);\r\n }\r\n else if (errorObj[strError] && errorObj[strError][strStack]) {\r\n // Edge error event provides the stack and error object\r\n details = _convertStackObj(errorObj[strError][strStack]);\r\n }\r\n else if (errorObj[\"exception\"] && errorObj.exception[strStack]) {\r\n details = _convertStackObj(errorObj.exception[strStack]);\r\n }\r\n else if (_isStackDetails(errorObj)) {\r\n details = errorObj;\r\n }\r\n else if (_isStackDetails(errorObj[strStackDetails])) {\r\n details = errorObj[strStackDetails];\r\n }\r\n else if (window && window[\"opera\"] && errorObj[strMessage]) {\r\n // Opera\r\n details = _getOperaStack(errorObj[_DYN_MESSAGE /* @min:%2emessage */]);\r\n }\r\n else if (errorObj[\"reason\"] && errorObj.reason[strStack]) {\r\n // UnhandledPromiseRejection\r\n details = _convertStackObj(errorObj.reason[strStack]);\r\n }\r\n else if (isString(errorObj)) {\r\n details = _convertStackObj(errorObj);\r\n }\r\n else {\r\n var evtMessage = errorObj[strMessage] || errorObj[strDescription] || \"\";\r\n if (isString(errorObj[strErrorSrc])) {\r\n if (evtMessage) {\r\n evtMessage += \"\\n\";\r\n }\r\n evtMessage += \" from \" + errorObj[strErrorSrc];\r\n }\r\n if (evtMessage) {\r\n details = _convertStackObj(evtMessage);\r\n }\r\n }\r\n }\r\n catch (e) {\r\n // something unexpected happened so to avoid failing to report any error lets swallow the exception\r\n // and fallback to the callee/caller method\r\n details = _convertStackObj(e);\r\n }\r\n }\r\n return details || {\r\n src: \"\",\r\n obj: null\r\n };\r\n}\r\nfunction _formatStackTrace(stackDetails) {\r\n var stack = \"\";\r\n if (stackDetails) {\r\n if (stackDetails.obj) {\r\n arrForEach(stackDetails.obj, function (entry) {\r\n stack += entry + \"\\n\";\r\n });\r\n }\r\n else {\r\n stack = stackDetails.src || \"\";\r\n }\r\n }\r\n return stack;\r\n}\r\nfunction _parseStack(stack) {\r\n var parsedStack;\r\n var frames = stack.obj;\r\n if (frames && frames[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n parsedStack = [];\r\n var level_1 = 0;\r\n var totalSizeInBytes_1 = 0;\r\n arrForEach(frames, function (frame) {\r\n var theFrame = frame[_DYN_TO_STRING /* @min:%2etoString */]();\r\n if (_StackFrame.regex.test(theFrame)) {\r\n var parsedFrame = new _StackFrame(theFrame, level_1++);\r\n totalSizeInBytes_1 += parsedFrame[_DYN_SIZE_IN_BYTES /* @min:%2esizeInBytes */];\r\n parsedStack.push(parsedFrame);\r\n }\r\n });\r\n // DP Constraint - exception parsed stack must be < 32KB\r\n // remove frames from the middle to meet the threshold\r\n var exceptionParsedStackThreshold = 32 * 1024;\r\n if (totalSizeInBytes_1 > exceptionParsedStackThreshold) {\r\n var left = 0;\r\n var right = parsedStack[_DYN_LENGTH /* @min:%2elength */] - 1;\r\n var size = 0;\r\n var acceptedLeft = left;\r\n var acceptedRight = right;\r\n while (left < right) {\r\n // check size\r\n var lSize = parsedStack[left][_DYN_SIZE_IN_BYTES /* @min:%2esizeInBytes */];\r\n var rSize = parsedStack[right][_DYN_SIZE_IN_BYTES /* @min:%2esizeInBytes */];\r\n size += lSize + rSize;\r\n if (size > exceptionParsedStackThreshold) {\r\n // remove extra frames from the middle\r\n var howMany = acceptedRight - acceptedLeft + 1;\r\n parsedStack.splice(acceptedLeft, howMany);\r\n break;\r\n }\r\n // update pointers\r\n acceptedLeft = left;\r\n acceptedRight = right;\r\n left++;\r\n right--;\r\n }\r\n }\r\n }\r\n return parsedStack;\r\n}\r\nfunction _getErrorType(errorType) {\r\n // Gets the Error Type by passing the constructor (used to get the true type of native error object).\r\n var typeName = \"\";\r\n if (errorType) {\r\n typeName = errorType.typeName || errorType[_DYN_NAME /* @min:%2ename */] || \"\";\r\n if (!typeName) {\r\n try {\r\n var funcNameRegex = /function (.{1,200})\\(/;\r\n var results = (funcNameRegex).exec((errorType).constructor[_DYN_TO_STRING /* @min:%2etoString */]());\r\n typeName = (results && results[_DYN_LENGTH /* @min:%2elength */] > 1) ? results[1] : \"\";\r\n }\r\n catch (e) {\r\n // eslint-disable-next-line no-empty -- Ignoring any failures as nothing we can do\r\n }\r\n }\r\n }\r\n return typeName;\r\n}\r\n/**\r\n * Formats the provided errorObj for display and reporting, it may be a String, Object, integer or undefined depending on the browser.\r\n * @param errorObj The supplied errorObj\r\n */\r\nexport function _formatErrorCode(errorObj) {\r\n if (errorObj) {\r\n try {\r\n if (!isString(errorObj)) {\r\n var errorType = _getErrorType(errorObj);\r\n var result = _stringify(errorObj, false);\r\n if (!result || result === \"{}\") {\r\n if (errorObj[strError]) {\r\n // Looks like an MS Error Event\r\n errorObj = errorObj[strError];\r\n errorType = _getErrorType(errorObj);\r\n }\r\n result = _stringify(errorObj, true);\r\n }\r\n if (result[_DYN_INDEX_OF /* @min:%2eindexOf */](errorType) !== 0 && errorType !== \"String\") {\r\n return errorType + \":\" + result;\r\n }\r\n return result;\r\n }\r\n }\r\n catch (e) {\r\n // eslint-disable-next-line no-empty -- Ignoring any failures as nothing we can do\r\n }\r\n }\r\n // Fallback to just letting the object format itself into a string\r\n return \"\" + (errorObj || \"\");\r\n}\r\nvar Exception = /** @class */ (function () {\r\n /**\r\n * Constructs a new instance of the ExceptionTelemetry object\r\n */\r\n function Exception(logger, exception, properties, measurements, severityLevel, id) {\r\n this.aiDataContract = {\r\n ver: 1 /* FieldType.Required */,\r\n exceptions: 1 /* FieldType.Required */,\r\n severityLevel: 0 /* FieldType.Default */,\r\n properties: 0 /* FieldType.Default */,\r\n measurements: 0 /* FieldType.Default */\r\n };\r\n var _self = this;\r\n _self.ver = 2; // TODO: handle the CS\"4.0\" ==> breeze 2 conversion in a better way\r\n if (!_isExceptionInternal(exception)) {\r\n if (!properties) {\r\n properties = {};\r\n }\r\n _self[_DYN_EXCEPTIONS /* @min:%2eexceptions */] = [new _ExceptionDetails(logger, exception, properties)];\r\n _self[_DYN_PROPERTIES /* @min:%2eproperties */] = dataSanitizeProperties(logger, properties);\r\n _self[_DYN_MEASUREMENTS /* @min:%2emeasurements */] = dataSanitizeMeasurements(logger, measurements);\r\n if (severityLevel) {\r\n _self[_DYN_SEVERITY_LEVEL /* @min:%2eseverityLevel */] = severityLevel;\r\n }\r\n if (id) {\r\n _self.id = id;\r\n }\r\n }\r\n else {\r\n _self[_DYN_EXCEPTIONS /* @min:%2eexceptions */] = exception[_DYN_EXCEPTIONS /* @min:%2eexceptions */] || [];\r\n _self[_DYN_PROPERTIES /* @min:%2eproperties */] = exception[_DYN_PROPERTIES /* @min:%2eproperties */];\r\n _self[_DYN_MEASUREMENTS /* @min:%2emeasurements */] = exception[_DYN_MEASUREMENTS /* @min:%2emeasurements */];\r\n if (exception[_DYN_SEVERITY_LEVEL /* @min:%2eseverityLevel */]) {\r\n _self[_DYN_SEVERITY_LEVEL /* @min:%2eseverityLevel */] = exception[_DYN_SEVERITY_LEVEL /* @min:%2eseverityLevel */];\r\n }\r\n if (exception.id) {\r\n _self.id = exception.id;\r\n }\r\n if (exception[_DYN_PROBLEM_GROUP /* @min:%2eproblemGroup */]) {\r\n _self[_DYN_PROBLEM_GROUP /* @min:%2eproblemGroup */] = exception[_DYN_PROBLEM_GROUP /* @min:%2eproblemGroup */];\r\n }\r\n // bool/int types, use isNullOrUndefined\r\n if (!isNullOrUndefined(exception[_DYN_IS_MANUAL /* @min:%2eisManual */])) {\r\n _self[_DYN_IS_MANUAL /* @min:%2eisManual */] = exception[_DYN_IS_MANUAL /* @min:%2eisManual */];\r\n }\r\n }\r\n }\r\n Exception.CreateAutoException = function (message, url, lineNumber, columnNumber, error, evt, stack, errorSrc) {\r\n var _a;\r\n var errorType = _getErrorType(error || evt || message);\r\n return _a = {},\r\n _a[_DYN_MESSAGE /* @min:message */] = _formatMessage(message, errorType),\r\n _a.url = url,\r\n _a.lineNumber = lineNumber,\r\n _a.columnNumber = columnNumber,\r\n _a.error = _formatErrorCode(error || evt || message),\r\n _a.evt = _formatErrorCode(evt || message),\r\n _a[_DYN_TYPE_NAME /* @min:typeName */] = errorType,\r\n _a.stackDetails = _getStackFromErrorObj(stack || error || evt),\r\n _a.errorSrc = errorSrc,\r\n _a;\r\n };\r\n Exception.CreateFromInterface = function (logger, exception, properties, measurements) {\r\n var exceptions = exception[_DYN_EXCEPTIONS /* @min:%2eexceptions */]\r\n && arrMap(exception[_DYN_EXCEPTIONS /* @min:%2eexceptions */], function (ex) { return _ExceptionDetails[_DYN__CREATE_FROM_INTERFA1 /* @min:%2eCreateFromInterface */](logger, ex); });\r\n var exceptionData = new Exception(logger, __assign(__assign({}, exception), { exceptions: exceptions }), properties, measurements);\r\n return exceptionData;\r\n };\r\n Exception.prototype.toInterface = function () {\r\n var _a;\r\n var _b = this, exceptions = _b.exceptions, properties = _b.properties, measurements = _b.measurements, severityLevel = _b.severityLevel, problemGroup = _b.problemGroup, id = _b.id, isManual = _b.isManual;\r\n var exceptionDetailsInterface = exceptions instanceof Array\r\n && arrMap(exceptions, function (exception) { return exception.toInterface(); })\r\n || undefined;\r\n return _a = {\r\n ver: \"4.0\"\r\n },\r\n _a[_DYN_EXCEPTIONS /* @min:exceptions */] = exceptionDetailsInterface,\r\n _a.severityLevel = severityLevel,\r\n _a.properties = properties,\r\n _a.measurements = measurements,\r\n _a.problemGroup = problemGroup,\r\n _a.id = id,\r\n _a.isManual = isManual,\r\n _a;\r\n };\r\n /**\r\n * Creates a simple exception with 1 stack frame. Useful for manual constracting of exception.\r\n */\r\n Exception.CreateSimpleException = function (message, typeName, assembly, fileName, details, line) {\r\n var _a;\r\n return {\r\n exceptions: [\r\n (_a = {},\r\n _a[_DYN_HAS_FULL_STACK /* @min:hasFullStack */] = true,\r\n _a.message = message,\r\n _a.stack = details,\r\n _a.typeName = typeName,\r\n _a)\r\n ]\r\n };\r\n };\r\n Exception.envelopeType = \"Microsoft.ApplicationInsights.{0}.Exception\";\r\n Exception.dataType = \"ExceptionData\";\r\n Exception.formatError = _formatErrorCode;\r\n return Exception;\r\n}());\r\nexport { Exception };\r\nvar _ExceptionDetails = /** @class */ (function () {\r\n function _ExceptionDetails(logger, exception, properties) {\r\n this.aiDataContract = {\r\n id: 0 /* FieldType.Default */,\r\n outerId: 0 /* FieldType.Default */,\r\n typeName: 1 /* FieldType.Required */,\r\n message: 1 /* FieldType.Required */,\r\n hasFullStack: 0 /* FieldType.Default */,\r\n stack: 0 /* FieldType.Default */,\r\n parsedStack: 2 /* FieldType.Array */\r\n };\r\n var _self = this;\r\n if (!_isExceptionDetailsInternal(exception)) {\r\n var error = exception;\r\n var evt = error && error.evt;\r\n if (!isError(error)) {\r\n error = error[strError] || evt || error;\r\n }\r\n _self[_DYN_TYPE_NAME /* @min:%2etypeName */] = dataSanitizeString(logger, _getErrorType(error)) || strNotSpecified;\r\n _self[_DYN_MESSAGE /* @min:%2emessage */] = dataSanitizeMessage(logger, _formatMessage(exception || error, _self[_DYN_TYPE_NAME /* @min:%2etypeName */])) || strNotSpecified;\r\n var stack = exception[strStackDetails] || _getStackFromErrorObj(exception);\r\n _self[_DYN_PARSED_STACK /* @min:%2eparsedStack */] = _parseStack(stack);\r\n // after parsedStack is inited, iterate over each frame object, sanitize its assembly field\r\n if (isArray(_self[_DYN_PARSED_STACK /* @min:%2eparsedStack */])) {\r\n arrMap(_self[_DYN_PARSED_STACK /* @min:%2eparsedStack */], function (frame) {\r\n frame[_DYN_ASSEMBLY /* @min:%2eassembly */] = dataSanitizeString(logger, frame[_DYN_ASSEMBLY /* @min:%2eassembly */]);\r\n frame[_DYN_FILE_NAME /* @min:%2efileName */] = dataSanitizeString(logger, frame[_DYN_FILE_NAME /* @min:%2efileName */]);\r\n });\r\n }\r\n _self[strStack] = dataSanitizeException(logger, _formatStackTrace(stack));\r\n _self.hasFullStack = isArray(_self.parsedStack) && _self.parsedStack[_DYN_LENGTH /* @min:%2elength */] > 0;\r\n if (properties) {\r\n properties[_DYN_TYPE_NAME /* @min:%2etypeName */] = properties[_DYN_TYPE_NAME /* @min:%2etypeName */] || _self[_DYN_TYPE_NAME /* @min:%2etypeName */];\r\n }\r\n }\r\n else {\r\n _self[_DYN_TYPE_NAME /* @min:%2etypeName */] = exception[_DYN_TYPE_NAME /* @min:%2etypeName */];\r\n _self[_DYN_MESSAGE /* @min:%2emessage */] = exception[_DYN_MESSAGE /* @min:%2emessage */];\r\n _self[strStack] = exception[strStack];\r\n _self[_DYN_PARSED_STACK /* @min:%2eparsedStack */] = exception[_DYN_PARSED_STACK /* @min:%2eparsedStack */] || [];\r\n _self[_DYN_HAS_FULL_STACK /* @min:%2ehasFullStack */] = exception[_DYN_HAS_FULL_STACK /* @min:%2ehasFullStack */];\r\n }\r\n }\r\n _ExceptionDetails.prototype.toInterface = function () {\r\n var _a;\r\n var _self = this;\r\n var parsedStack = _self[_DYN_PARSED_STACK /* @min:%2eparsedStack */] instanceof Array\r\n && arrMap(_self[_DYN_PARSED_STACK /* @min:%2eparsedStack */], function (frame) { return frame.toInterface(); });\r\n var exceptionDetailsInterface = (_a = {\r\n id: _self.id,\r\n outerId: _self.outerId,\r\n typeName: _self[_DYN_TYPE_NAME /* @min:%2etypeName */],\r\n message: _self[_DYN_MESSAGE /* @min:%2emessage */],\r\n hasFullStack: _self[_DYN_HAS_FULL_STACK /* @min:%2ehasFullStack */],\r\n stack: _self[strStack]\r\n },\r\n _a[_DYN_PARSED_STACK /* @min:parsedStack */] = parsedStack || undefined,\r\n _a);\r\n return exceptionDetailsInterface;\r\n };\r\n _ExceptionDetails.CreateFromInterface = function (logger, exception) {\r\n var parsedStack = (exception[_DYN_PARSED_STACK /* @min:%2eparsedStack */] instanceof Array\r\n && arrMap(exception[_DYN_PARSED_STACK /* @min:%2eparsedStack */], function (frame) { return _StackFrame[_DYN__CREATE_FROM_INTERFA1 /* @min:%2eCreateFromInterface */](frame); }))\r\n || exception[_DYN_PARSED_STACK /* @min:%2eparsedStack */];\r\n var exceptionDetails = new _ExceptionDetails(logger, __assign(__assign({}, exception), { parsedStack: parsedStack }));\r\n return exceptionDetails;\r\n };\r\n return _ExceptionDetails;\r\n}());\r\nexport { _ExceptionDetails };\r\nvar _StackFrame = /** @class */ (function () {\r\n function _StackFrame(sourceFrame, level) {\r\n this.aiDataContract = {\r\n level: 1 /* FieldType.Required */,\r\n method: 1 /* FieldType.Required */,\r\n assembly: 0 /* FieldType.Default */,\r\n fileName: 0 /* FieldType.Default */,\r\n line: 0 /* FieldType.Default */\r\n };\r\n var _self = this;\r\n _self[_DYN_SIZE_IN_BYTES /* @min:%2esizeInBytes */] = 0;\r\n // Not converting this to isString() as typescript uses this logic to \"understand\" the different\r\n // types for the 2 different code paths\r\n if (typeof sourceFrame === \"string\") {\r\n var frame = sourceFrame;\r\n _self[_DYN_LEVEL /* @min:%2elevel */] = level;\r\n _self[_DYN_METHOD /* @min:%2emethod */] = NoMethod;\r\n _self[_DYN_ASSEMBLY /* @min:%2eassembly */] = strTrim(frame);\r\n _self[_DYN_FILE_NAME /* @min:%2efileName */] = \"\";\r\n _self[_DYN_LINE /* @min:%2eline */] = 0;\r\n var matches = frame.match(_StackFrame.regex);\r\n if (matches && matches[_DYN_LENGTH /* @min:%2elength */] >= 5) {\r\n _self[_DYN_METHOD /* @min:%2emethod */] = strTrim(matches[2]) || _self[_DYN_METHOD /* @min:%2emethod */];\r\n _self[_DYN_FILE_NAME /* @min:%2efileName */] = strTrim(matches[4]);\r\n _self[_DYN_LINE /* @min:%2eline */] = parseInt(matches[5]) || 0;\r\n }\r\n }\r\n else {\r\n _self[_DYN_LEVEL /* @min:%2elevel */] = sourceFrame[_DYN_LEVEL /* @min:%2elevel */];\r\n _self[_DYN_METHOD /* @min:%2emethod */] = sourceFrame[_DYN_METHOD /* @min:%2emethod */];\r\n _self[_DYN_ASSEMBLY /* @min:%2eassembly */] = sourceFrame[_DYN_ASSEMBLY /* @min:%2eassembly */];\r\n _self[_DYN_FILE_NAME /* @min:%2efileName */] = sourceFrame[_DYN_FILE_NAME /* @min:%2efileName */];\r\n _self[_DYN_LINE /* @min:%2eline */] = sourceFrame[_DYN_LINE /* @min:%2eline */];\r\n _self[_DYN_SIZE_IN_BYTES /* @min:%2esizeInBytes */] = 0;\r\n }\r\n _self.sizeInBytes += _self.method[_DYN_LENGTH /* @min:%2elength */];\r\n _self.sizeInBytes += _self.fileName[_DYN_LENGTH /* @min:%2elength */];\r\n _self.sizeInBytes += _self.assembly[_DYN_LENGTH /* @min:%2elength */];\r\n // todo: these might need to be removed depending on how the back-end settles on their size calculation\r\n _self[_DYN_SIZE_IN_BYTES /* @min:%2esizeInBytes */] += _StackFrame.baseSize;\r\n _self.sizeInBytes += _self.level.toString()[_DYN_LENGTH /* @min:%2elength */];\r\n _self.sizeInBytes += _self.line.toString()[_DYN_LENGTH /* @min:%2elength */];\r\n }\r\n _StackFrame.CreateFromInterface = function (frame) {\r\n return new _StackFrame(frame, null /* level is available in frame interface */);\r\n };\r\n _StackFrame.prototype.toInterface = function () {\r\n var _self = this;\r\n return {\r\n level: _self[_DYN_LEVEL /* @min:%2elevel */],\r\n method: _self[_DYN_METHOD /* @min:%2emethod */],\r\n assembly: _self[_DYN_ASSEMBLY /* @min:%2eassembly */],\r\n fileName: _self[_DYN_FILE_NAME /* @min:%2efileName */],\r\n line: _self[_DYN_LINE /* @min:%2eline */]\r\n };\r\n };\r\n // regex to match stack frames from ie/chrome/ff\r\n // methodName=$2, fileName=$4, lineNo=$5, column=$6\r\n _StackFrame.regex = /^([\\s]+at)?[\\s]{0,50}([^\\@\\()]+?)[\\s]{0,50}(\\@|\\()([^\\(\\n]+):([0-9]+):([0-9]+)(\\)?)$/;\r\n _StackFrame.baseSize = 58; // '{\"method\":\"\",\"level\":,\"assembly\":\"\",\"fileName\":\"\",\"line\":}'.length\r\n return _StackFrame;\r\n}());\r\nexport { _StackFrame };\r\n//# sourceMappingURL=Exception.js.map","import { _DYN_COOKIE_CFG, _DYN_INDEX_OF, _DYN_LENGTH, _DYN_LOGGER, _DYN_SET_ENABLED, _DYN_SPLIT, _DYN_SUBSTRING, _DYN_USER_AGENT } from \"../__DynamicConstants\";\r\nimport { _throwInternal } from \"./DiagnosticLogger\";\r\nimport { dumpObj, getDocument, getLocation, getNavigator, isIE } from \"./EnvUtils\";\r\nimport { arrForEach, dateNow, getExceptionName, isArray, isFunction, isNotNullOrUndefined, isNullOrUndefined, isString, isTruthy, isUndefined, objForEachKey, setValue, strContains, strEndsWith, strTrim } from \"./HelperFuncs\";\r\nimport { STR_EMPTY } from \"./InternalConstants\";\r\nvar strToGMTString = \"toGMTString\";\r\nvar strToUTCString = \"toUTCString\";\r\nvar strCookie = \"cookie\";\r\nvar strExpires = \"expires\";\r\nvar strEnabled = \"enabled\";\r\nvar strIsCookieUseDisabled = \"isCookieUseDisabled\";\r\nvar strDisableCookiesUsage = \"disableCookiesUsage\";\r\nvar strConfigCookieMgr = \"_ckMgr\";\r\nvar _supportsCookies = null;\r\nvar _allowUaSameSite = null;\r\nvar _parsedCookieValue = null;\r\nvar _doc = getDocument();\r\nvar _cookieCache = {};\r\nvar _globalCookieConfig = {};\r\n/**\r\n * @ignore\r\n * DO NOT USE or export from the module, this is exposed as public to support backward compatibility of previous static utility methods only.\r\n * If you want to manager cookies either use the ICookieMgr available from the core instance via getCookieMgr() or create\r\n * your own instance of the CookieMgr and use that.\r\n * Using this directly for enabling / disabling cookie handling will not only affect your usage but EVERY user of cookies.\r\n * Example, if you are using a shared component that is also using Application Insights you will affect their cookie handling.\r\n * @param logger - The DiagnosticLogger to use for reporting errors.\r\n */\r\nexport function _gblCookieMgr(config, logger) {\r\n // Stash the global instance against the BaseCookieMgr class\r\n var inst = createCookieMgr[strConfigCookieMgr] || _globalCookieConfig[strConfigCookieMgr];\r\n if (!inst) {\r\n // Note: not using the getSetValue() helper as that would require always creating a temporary cookieMgr\r\n // that ultimately is never used\r\n inst = createCookieMgr[strConfigCookieMgr] = createCookieMgr(config, logger);\r\n _globalCookieConfig[strConfigCookieMgr] = inst;\r\n }\r\n return inst;\r\n}\r\nfunction _isMgrEnabled(cookieMgr) {\r\n if (cookieMgr) {\r\n return cookieMgr.isEnabled();\r\n }\r\n return true;\r\n}\r\nfunction _createCookieMgrConfig(rootConfig) {\r\n var cookieMgrCfg = rootConfig[_DYN_COOKIE_CFG /* @min:%2ecookieCfg */] = rootConfig[_DYN_COOKIE_CFG /* @min:%2ecookieCfg */] || {};\r\n // Sets the values from the root config if not already present on the cookieMgrCfg\r\n setValue(cookieMgrCfg, \"domain\", rootConfig.cookieDomain, isNotNullOrUndefined, isNullOrUndefined);\r\n setValue(cookieMgrCfg, \"path\", rootConfig.cookiePath || \"/\", null, isNullOrUndefined);\r\n if (isNullOrUndefined(cookieMgrCfg[strEnabled])) {\r\n // Set the enabled from the provided setting or the legacy root values\r\n var cookieEnabled = void 0;\r\n if (!isUndefined(rootConfig[strIsCookieUseDisabled])) {\r\n cookieEnabled = !rootConfig[strIsCookieUseDisabled];\r\n }\r\n if (!isUndefined(rootConfig[strDisableCookiesUsage])) {\r\n cookieEnabled = !rootConfig[strDisableCookiesUsage];\r\n }\r\n cookieMgrCfg[strEnabled] = cookieEnabled;\r\n }\r\n return cookieMgrCfg;\r\n}\r\nfunction _isIgnoredCookie(cookieMgrCfg, name) {\r\n if (name && cookieMgrCfg && isArray(cookieMgrCfg.ignoreCookies)) {\r\n return cookieMgrCfg.ignoreCookies[_DYN_INDEX_OF /* @min:%2eindexOf */](name) !== -1;\r\n }\r\n return false;\r\n}\r\nfunction _isBlockedCookie(cookieMgrCfg, name) {\r\n if (name && cookieMgrCfg && isArray(cookieMgrCfg.blockedCookies)) {\r\n if (cookieMgrCfg.blockedCookies[_DYN_INDEX_OF /* @min:%2eindexOf */](name) !== -1) {\r\n return true;\r\n }\r\n }\r\n return _isIgnoredCookie(cookieMgrCfg, name);\r\n}\r\n/**\r\n * Helper to return the ICookieMgr from the core (if not null/undefined) or a default implementation\r\n * associated with the configuration or a legacy default.\r\n * @param core\r\n * @param config\r\n * @returns\r\n */\r\nexport function safeGetCookieMgr(core, config) {\r\n var cookieMgr;\r\n if (core) {\r\n // Always returns an instance\r\n cookieMgr = core.getCookieMgr();\r\n }\r\n else if (config) {\r\n var cookieCfg = config[_DYN_COOKIE_CFG /* @min:%2ecookieCfg */];\r\n if (cookieCfg[strConfigCookieMgr]) {\r\n cookieMgr = cookieCfg[strConfigCookieMgr];\r\n }\r\n else {\r\n cookieMgr = createCookieMgr(config);\r\n }\r\n }\r\n if (!cookieMgr) {\r\n // Get or initialize the default global (legacy) cookie manager if we couldn't find one\r\n cookieMgr = _gblCookieMgr(config, (core || {})[_DYN_LOGGER /* @min:%2elogger */]);\r\n }\r\n return cookieMgr;\r\n}\r\nexport function createCookieMgr(rootConfig, logger) {\r\n var _a;\r\n var cookieMgrConfig = _createCookieMgrConfig(rootConfig || _globalCookieConfig);\r\n var _path = cookieMgrConfig.path || \"/\";\r\n var _domain = cookieMgrConfig.domain;\r\n // Explicitly checking against false, so that setting to undefined will === true\r\n var _enabled = cookieMgrConfig[strEnabled] !== false;\r\n var cookieMgr = (_a = {\r\n isEnabled: function () {\r\n var enabled = _enabled && areCookiesSupported(logger);\r\n // Using an indirect lookup for any global cookie manager to support tree shaking for SDK's\r\n // that don't use the \"applicationinsights-core\" version of the default cookie function\r\n var gblManager = _globalCookieConfig[strConfigCookieMgr];\r\n if (enabled && gblManager && cookieMgr !== gblManager) {\r\n // Make sure the GlobalCookie Manager instance (if not this instance) is also enabled.\r\n // As the global (deprecated) functions may have been called (for backward compatibility)\r\n enabled = _isMgrEnabled(gblManager);\r\n }\r\n return enabled;\r\n }\r\n },\r\n _a[_DYN_SET_ENABLED /* @min:setEnabled */] = function (value) {\r\n // Explicitly checking against false, so that setting to undefined will === true\r\n _enabled = value !== false;\r\n },\r\n _a.set = function (name, value, maxAgeSec, domain, path) {\r\n var result = false;\r\n if (_isMgrEnabled(cookieMgr) && !_isBlockedCookie(cookieMgrConfig, name)) {\r\n var values = {};\r\n var theValue = strTrim(value || STR_EMPTY);\r\n var idx = theValue[_DYN_INDEX_OF /* @min:%2eindexOf */](\";\");\r\n if (idx !== -1) {\r\n theValue = strTrim(value[_DYN_SUBSTRING /* @min:%2esubstring */](0, idx));\r\n values = _extractParts(value[_DYN_SUBSTRING /* @min:%2esubstring */](idx + 1));\r\n }\r\n // Only update domain if not already present (isUndefined) and the value is truthy (not null, undefined or empty string)\r\n setValue(values, \"domain\", domain || _domain, isTruthy, isUndefined);\r\n if (!isNullOrUndefined(maxAgeSec)) {\r\n var _isIE = isIE();\r\n if (isUndefined(values[strExpires])) {\r\n var nowMs = dateNow();\r\n // Only add expires if not already present\r\n var expireMs = nowMs + (maxAgeSec * 1000);\r\n // Sanity check, if zero or -ve then ignore\r\n if (expireMs > 0) {\r\n var expiry = new Date();\r\n expiry.setTime(expireMs);\r\n setValue(values, strExpires, _formatDate(expiry, !_isIE ? strToUTCString : strToGMTString) || _formatDate(expiry, _isIE ? strToGMTString : strToUTCString) || STR_EMPTY, isTruthy);\r\n }\r\n }\r\n if (!_isIE) {\r\n // Only replace if not already present\r\n setValue(values, \"max-age\", STR_EMPTY + maxAgeSec, null, isUndefined);\r\n }\r\n }\r\n var location_1 = getLocation();\r\n if (location_1 && location_1.protocol === \"https:\") {\r\n setValue(values, \"secure\", null, null, isUndefined);\r\n // Only set same site if not also secure\r\n if (_allowUaSameSite === null) {\r\n _allowUaSameSite = !uaDisallowsSameSiteNone((getNavigator() || {})[_DYN_USER_AGENT /* @min:%2euserAgent */]);\r\n }\r\n if (_allowUaSameSite) {\r\n setValue(values, \"SameSite\", \"None\", null, isUndefined);\r\n }\r\n }\r\n setValue(values, \"path\", path || _path, null, isUndefined);\r\n var setCookieFn = cookieMgrConfig.setCookie || _setCookieValue;\r\n setCookieFn(name, _formatCookieValue(theValue, values));\r\n result = true;\r\n }\r\n return result;\r\n },\r\n _a.get = function (name) {\r\n var value = STR_EMPTY;\r\n if (_isMgrEnabled(cookieMgr) && !_isIgnoredCookie(cookieMgrConfig, name)) {\r\n value = (cookieMgrConfig.getCookie || _getCookieValue)(name);\r\n }\r\n return value;\r\n },\r\n _a.del = function (name, path) {\r\n var result = false;\r\n if (_isMgrEnabled(cookieMgr)) {\r\n // Only remove the cookie if the manager and cookie support has not been disabled\r\n result = cookieMgr.purge(name, path);\r\n }\r\n return result;\r\n },\r\n _a.purge = function (name, path) {\r\n var _a;\r\n var result = false;\r\n if (areCookiesSupported(logger)) {\r\n // Setting the expiration date in the past immediately removes the cookie\r\n var values = (_a = {},\r\n _a[\"path\"] = path ? path : \"/\",\r\n _a[strExpires] = \"Thu, 01 Jan 1970 00:00:01 GMT\",\r\n _a);\r\n if (!isIE()) {\r\n // Set max age to expire now\r\n values[\"max-age\"] = \"0\";\r\n }\r\n var delCookie = cookieMgrConfig.delCookie || _setCookieValue;\r\n delCookie(name, _formatCookieValue(STR_EMPTY, values));\r\n result = true;\r\n }\r\n return result;\r\n },\r\n _a);\r\n // Associated this cookie manager with the config\r\n cookieMgr[strConfigCookieMgr] = cookieMgr;\r\n return cookieMgr;\r\n}\r\n/*\r\n* Helper method to tell if document.cookie object is supported by the runtime\r\n*/\r\nexport function areCookiesSupported(logger) {\r\n if (_supportsCookies === null) {\r\n _supportsCookies = false;\r\n try {\r\n var doc = _doc || {};\r\n _supportsCookies = doc[strCookie] !== undefined;\r\n }\r\n catch (e) {\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 68 /* _eInternalMessageId.CannotAccessCookie */, \"Cannot access document.cookie - \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n }\r\n return _supportsCookies;\r\n}\r\nfunction _extractParts(theValue) {\r\n var values = {};\r\n if (theValue && theValue[_DYN_LENGTH /* @min:%2elength */]) {\r\n var parts = strTrim(theValue)[_DYN_SPLIT /* @min:%2esplit */](\";\");\r\n arrForEach(parts, function (thePart) {\r\n thePart = strTrim(thePart || STR_EMPTY);\r\n if (thePart) {\r\n var idx = thePart[_DYN_INDEX_OF /* @min:%2eindexOf */](\"=\");\r\n if (idx === -1) {\r\n values[thePart] = null;\r\n }\r\n else {\r\n values[strTrim(thePart[_DYN_SUBSTRING /* @min:%2esubstring */](0, idx))] = strTrim(thePart[_DYN_SUBSTRING /* @min:%2esubstring */](idx + 1));\r\n }\r\n }\r\n });\r\n }\r\n return values;\r\n}\r\nfunction _formatDate(theDate, func) {\r\n if (isFunction(theDate[func])) {\r\n return theDate[func]();\r\n }\r\n return null;\r\n}\r\nfunction _formatCookieValue(value, values) {\r\n var cookieValue = value || STR_EMPTY;\r\n objForEachKey(values, function (name, theValue) {\r\n cookieValue += \"; \" + name + (!isNullOrUndefined(theValue) ? \"=\" + theValue : STR_EMPTY);\r\n });\r\n return cookieValue;\r\n}\r\nfunction _getCookieValue(name) {\r\n var cookieValue = STR_EMPTY;\r\n if (_doc) {\r\n var theCookie = _doc[strCookie] || STR_EMPTY;\r\n if (_parsedCookieValue !== theCookie) {\r\n _cookieCache = _extractParts(theCookie);\r\n _parsedCookieValue = theCookie;\r\n }\r\n cookieValue = strTrim(_cookieCache[name] || STR_EMPTY);\r\n }\r\n return cookieValue;\r\n}\r\nfunction _setCookieValue(name, cookieValue) {\r\n if (_doc) {\r\n _doc[strCookie] = name + \"=\" + cookieValue;\r\n }\r\n}\r\nexport function uaDisallowsSameSiteNone(userAgent) {\r\n if (!isString(userAgent)) {\r\n return false;\r\n }\r\n // Cover all iOS based browsers here. This includes:\r\n // - Safari on iOS 12 for iPhone, iPod Touch, iPad\r\n // - WkWebview on iOS 12 for iPhone, iPod Touch, iPad\r\n // - Chrome on iOS 12 for iPhone, iPod Touch, iPad\r\n // All of which are broken by SameSite=None, because they use the iOS networking stack\r\n if (strContains(userAgent, \"CPU iPhone OS 12\") || strContains(userAgent, \"iPad; CPU OS 12\")) {\r\n return true;\r\n }\r\n // Cover Mac OS X based browsers that use the Mac OS networking stack. This includes:\r\n // - Safari on Mac OS X\r\n // This does not include:\r\n // - Internal browser on Mac OS X\r\n // - Chrome on Mac OS X\r\n // - Chromium on Mac OS X\r\n // Because they do not use the Mac OS networking stack.\r\n if (strContains(userAgent, \"Macintosh; Intel Mac OS X 10_14\") && strContains(userAgent, \"Version/\") && strContains(userAgent, \"Safari\")) {\r\n return true;\r\n }\r\n // Cover Mac OS X internal browsers that use the Mac OS networking stack. This includes:\r\n // - Internal browser on Mac OS X\r\n // This does not include:\r\n // - Safari on Mac OS X\r\n // - Chrome on Mac OS X\r\n // - Chromium on Mac OS X\r\n // Because they do not use the Mac OS networking stack.\r\n if (strContains(userAgent, \"Macintosh; Intel Mac OS X 10_14\") && strEndsWith(userAgent, \"AppleWebKit/605.1.15 (KHTML, like Gecko)\")) {\r\n return true;\r\n }\r\n // Cover Chrome 50-69, because some versions are broken by SameSite=None, and none in this range require it.\r\n // Note: this covers some pre-Chromium Edge versions, but pre-Chromim Edge does not require SameSite=None, so this is fine.\r\n // Note: this regex applies to Windows, Mac OS X, and Linux, deliberately.\r\n if (strContains(userAgent, \"Chrome/5\") || strContains(userAgent, \"Chrome/6\")) {\r\n return true;\r\n }\r\n // Unreal Engine runs Chromium 59, but does not advertise as Chrome until 4.23. Treat versions of Unreal\r\n // that don't specify their Chrome version as lacking support for SameSite=None.\r\n if (strContains(userAgent, \"UnrealEngine\") && !strContains(userAgent, \"Chrome\")) {\r\n return true;\r\n }\r\n // UCBrowser < 12.13.2 ignores Set-Cookie headers with SameSite=None\r\n // NB: this rule isn't complete - you need regex to make a complete rule.\r\n // See: https://www.chromium.org/updates/same-site/incompatible-clients\r\n if (strContains(userAgent, \"UCBrowser/12\") || strContains(userAgent, \"UCBrowser/11\")) {\r\n return true;\r\n }\r\n return false;\r\n}\r\n//# sourceMappingURL=CookieMgr.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { _DYN_LENGTH } from \"../__DynamicConstants\";\r\nimport { getCrypto, getMsCrypto, isIE } from \"./EnvUtils\";\r\nimport { dateNow } from \"./HelperFuncs\";\r\nimport { STR_EMPTY } from \"./InternalConstants\";\r\nvar UInt32Mask = 0x100000000;\r\nvar MaxUInt32 = 0xffffffff;\r\n// MWC based Random generator (for IE)\r\nvar _mwcSeeded = false;\r\nvar _mwcW = 123456789;\r\nvar _mwcZ = 987654321;\r\n// Takes any integer\r\nfunction _mwcSeed(seedValue) {\r\n if (seedValue < 0) {\r\n // Make sure we end up with a positive number and not -ve one.\r\n seedValue >>>= 0;\r\n }\r\n _mwcW = (123456789 + seedValue) & MaxUInt32;\r\n _mwcZ = (987654321 - seedValue) & MaxUInt32;\r\n _mwcSeeded = true;\r\n}\r\nfunction _autoSeedMwc() {\r\n // Simple initialization using default Math.random() - So we inherit any entropy from the browser\r\n // and bitwise XOR with the current milliseconds\r\n try {\r\n var now = dateNow() & 0x7fffffff;\r\n _mwcSeed(((Math.random() * UInt32Mask) ^ now) + now);\r\n }\r\n catch (e) {\r\n // Don't crash if something goes wrong\r\n }\r\n}\r\n/**\r\n * Generate a random value between 0 and maxValue, max value should be limited to a 32-bit maximum.\r\n * So maxValue(16) will produce a number from 0..16 (range of 17)\r\n * @param maxValue\r\n */\r\nexport function randomValue(maxValue) {\r\n if (maxValue > 0) {\r\n return Math.floor((random32() / MaxUInt32) * (maxValue + 1)) >>> 0;\r\n }\r\n return 0;\r\n}\r\n/**\r\n * generate a random 32-bit number (0x000000..0xFFFFFFFF) or (-0x80000000..0x7FFFFFFF), defaults un-unsigned.\r\n * @param signed - True to return a signed 32-bit number (-0x80000000..0x7FFFFFFF) otherwise an unsigned one (0x000000..0xFFFFFFFF)\r\n */\r\nexport function random32(signed) {\r\n var value = 0;\r\n var c = getCrypto() || getMsCrypto();\r\n if (c && c.getRandomValues) {\r\n // Make sure the number is converted into the specified range (-0x80000000..0x7FFFFFFF)\r\n value = c.getRandomValues(new Uint32Array(1))[0] & MaxUInt32;\r\n }\r\n if (value === 0 && isIE()) {\r\n // For IE 6, 7, 8 (especially on XP) Math.random is not very random\r\n if (!_mwcSeeded) {\r\n // Set the seed for the Mwc algorithm\r\n _autoSeedMwc();\r\n }\r\n // Don't use Math.random for IE\r\n // Make sure the number is converted into the specified range (-0x80000000..0x7FFFFFFF)\r\n value = mwcRandom32() & MaxUInt32;\r\n }\r\n if (value === 0) {\r\n // Make sure the number is converted into the specified range (-0x80000000..0x7FFFFFFF)\r\n value = Math.floor((UInt32Mask * Math.random()) | 0);\r\n }\r\n if (!signed) {\r\n // Make sure we end up with a positive number and not -ve one.\r\n value >>>= 0;\r\n }\r\n return value;\r\n}\r\n/**\r\n * Seed the MWC random number generator with the specified seed or a random value\r\n * @param value - optional the number to used as the seed, if undefined, null or zero a random value will be chosen\r\n */\r\nexport function mwcRandomSeed(value) {\r\n if (!value) {\r\n _autoSeedMwc();\r\n }\r\n else {\r\n _mwcSeed(value);\r\n }\r\n}\r\n/**\r\n * Generate a random 32-bit number between (0x000000..0xFFFFFFFF) or (-0x80000000..0x7FFFFFFF), using MWC (Multiply with carry)\r\n * instead of Math.random() defaults to un-signed.\r\n * Used as a replacement random generator for IE to avoid issues with older IE instances.\r\n * @param signed - True to return a signed 32-bit number (-0x80000000..0x7FFFFFFF) otherwise an unsigned one (0x000000..0xFFFFFFFF)\r\n */\r\nexport function mwcRandom32(signed) {\r\n _mwcZ = (36969 * (_mwcZ & 0xFFFF) + (_mwcZ >> 16)) & MaxUInt32;\r\n _mwcW = (18000 * (_mwcW & 0xFFFF) + (_mwcW >> 16)) & MaxUInt32;\r\n var value = (((_mwcZ << 16) + (_mwcW & 0xFFFF)) >>> 0) & MaxUInt32 | 0;\r\n if (!signed) {\r\n // Make sure we end up with a positive number and not -ve one.\r\n value >>>= 0;\r\n }\r\n return value;\r\n}\r\n/**\r\n * Generate random base64 id string.\r\n * The default length is 22 which is 132-bits so almost the same as a GUID but as base64 (the previous default was 5)\r\n * @param maxLength - Optional value to specify the length of the id to be generated, defaults to 22\r\n */\r\nexport function newId(maxLength) {\r\n if (maxLength === void 0) { maxLength = 22; }\r\n var base64chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\r\n // Start with an initial random number, consuming the value in reverse byte order\r\n var number = random32() >>> 0; // Make sure it's a +ve number\r\n var chars = 0;\r\n var result = STR_EMPTY;\r\n while (result[_DYN_LENGTH /* @min:%2elength */] < maxLength) {\r\n chars++;\r\n result += base64chars.charAt(number & 0x3F);\r\n number >>>= 6; // Zero fill with right shift\r\n if (chars === 5) {\r\n // 5 base64 characters === 30 bits so we don't have enough bits for another base64 char\r\n // So add on another 30 bits and make sure it's +ve\r\n number = (((random32() << 2) & 0xFFFFFFFF) | (number & 0x03)) >>> 0;\r\n chars = 0; // We need to reset the number every 5 chars (30 bits)\r\n }\r\n }\r\n return result;\r\n}\r\n//# sourceMappingURL=RandomHelper.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { ObjDefineProperty } from \"@microsoft/applicationinsights-shims\";\r\nimport { _DYN_NODE_TYPE } from \"../__DynamicConstants\";\r\nimport { normalizeJsName } from \"./HelperFuncs\";\r\nimport { STR_EMPTY } from \"./InternalConstants\";\r\nimport { newId } from \"./RandomHelper\";\r\nvar _objDefineProperty = ObjDefineProperty;\r\nvar version = '2.8.18';\r\nvar instanceName = \".\" + newId(6);\r\nvar _dataUid = 0;\r\nfunction _createAccessor(target, prop, value) {\r\n if (_objDefineProperty) {\r\n try {\r\n _objDefineProperty(target, prop, {\r\n value: value,\r\n enumerable: false,\r\n configurable: true\r\n });\r\n return true;\r\n }\r\n catch (e) {\r\n // IE8 Defines a defineProperty on Object but it's only supported for DOM elements so it will throw\r\n // We will just ignore this here.\r\n }\r\n }\r\n return false;\r\n}\r\n// Accepts only:\r\n// - Node\r\n// - Node.ELEMENT_NODE\r\n// - Node.DOCUMENT_NODE\r\n// - Object\r\n// - Any\r\nfunction _canAcceptData(target) {\r\n return target[_DYN_NODE_TYPE /* @min:%2enodeType */] === 1 || target[_DYN_NODE_TYPE /* @min:%2enodeType */] === 9 || !(+target[_DYN_NODE_TYPE /* @min:%2enodeType */]);\r\n}\r\nfunction _getCache(data, target) {\r\n var theCache = target[data.id];\r\n if (!theCache) {\r\n theCache = {};\r\n try {\r\n if (_canAcceptData(target)) {\r\n if (!_createAccessor(target, data.id, theCache)) {\r\n // Environment doesn't support accessor, so just use direct assignment\r\n target[data.id] = theCache;\r\n }\r\n }\r\n }\r\n catch (e) {\r\n // Not all environments allow extending all objects, so just ignore the cache in those cases\r\n }\r\n }\r\n return theCache;\r\n}\r\nexport function createUniqueNamespace(name, includeVersion) {\r\n if (includeVersion === void 0) { includeVersion = false; }\r\n return normalizeJsName(name + (_dataUid++) + (includeVersion ? \".\" + version : STR_EMPTY) + instanceName);\r\n}\r\nexport function createElmNodeData(name) {\r\n var data = {\r\n id: createUniqueNamespace(\"_aiData-\" + (name || STR_EMPTY) + \".\" + version),\r\n accept: function (target) {\r\n return _canAcceptData(target);\r\n },\r\n get: function (target, name, defValue, addDefault) {\r\n var theCache = target[data.id];\r\n if (!theCache) {\r\n if (addDefault) {\r\n // Side effect is adds the cache\r\n theCache = _getCache(data, target);\r\n theCache[normalizeJsName(name)] = defValue;\r\n }\r\n return defValue;\r\n }\r\n return theCache[normalizeJsName(name)];\r\n },\r\n kill: function (target, name) {\r\n if (target && target[name]) {\r\n try {\r\n delete target[name];\r\n }\r\n catch (e) {\r\n // Just cleaning up, so if this fails -- ignore\r\n }\r\n }\r\n }\r\n };\r\n return data;\r\n}\r\n//# sourceMappingURL=DataCacheHelper.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { _DYN_HANDLER, _DYN_LENGTH, _DYN_NAME, _DYN_PUSH, _DYN_REPLACE, _DYN_SPLICE, _DYN_SPLIT, _DYN_TYPE } from \"../__DynamicConstants\";\r\nimport { createElmNodeData, createUniqueNamespace } from \"./DataCacheHelper\";\r\nimport { getDocument, getWindow } from \"./EnvUtils\";\r\nimport { arrForEach, arrIndexOf, isArray, objForEachKey, objKeys } from \"./HelperFuncs\";\r\nimport { STR_EMPTY } from \"./InternalConstants\";\r\n// Added to help with minfication\r\nvar strOnPrefix = \"on\";\r\nvar strAttachEvent = \"attachEvent\";\r\nvar strAddEventHelper = \"addEventListener\";\r\nvar strDetachEvent = \"detachEvent\";\r\nvar strRemoveEventListener = \"removeEventListener\";\r\nvar strEvents = \"events\";\r\nvar strVisibilityChangeEvt = \"visibilitychange\";\r\nvar strPageHide = \"pagehide\";\r\nvar strPageShow = \"pageshow\";\r\nvar strUnload = \"unload\";\r\nvar strBeforeUnload = \"beforeunload\";\r\nvar strPageHideNamespace = createUniqueNamespace(\"aiEvtPageHide\");\r\nvar strPageShowNamespace = createUniqueNamespace(\"aiEvtPageShow\");\r\nvar rRemoveEmptyNs = /\\.[\\.]+/g;\r\nvar rRemoveTrailingEmptyNs = /[\\.]+$/;\r\nvar _guid = 1;\r\nvar elmNodeData = createElmNodeData(\"events\");\r\nvar eventNamespace = /^([^.]*)(?:\\.(.+)|)/;\r\nfunction _normalizeNamespace(name) {\r\n if (name && name[_DYN_REPLACE /* @min:%2ereplace */]) {\r\n return name[_DYN_REPLACE /* @min:%2ereplace */](/^[\\s\\.]+|(?=[\\s\\.])[\\.\\s]+$/g, STR_EMPTY);\r\n }\r\n return name;\r\n}\r\nfunction _getEvtNamespace(eventName, evtNamespace) {\r\n var _a;\r\n if (evtNamespace) {\r\n var theNamespace_1 = STR_EMPTY;\r\n if (isArray(evtNamespace)) {\r\n theNamespace_1 = STR_EMPTY;\r\n arrForEach(evtNamespace, function (name) {\r\n name = _normalizeNamespace(name);\r\n if (name) {\r\n if (name[0] !== \".\") {\r\n name = \".\" + name;\r\n }\r\n theNamespace_1 += name;\r\n }\r\n });\r\n }\r\n else {\r\n theNamespace_1 = _normalizeNamespace(evtNamespace);\r\n }\r\n if (theNamespace_1) {\r\n if (theNamespace_1[0] !== \".\") {\r\n theNamespace_1 = \".\" + theNamespace_1;\r\n }\r\n // We may only have the namespace and not an eventName\r\n eventName = (eventName || STR_EMPTY) + theNamespace_1;\r\n }\r\n }\r\n var parsedEvent = (eventNamespace.exec(eventName || STR_EMPTY) || []);\r\n return _a = {},\r\n _a[_DYN_TYPE /* @min:type */] = parsedEvent[1],\r\n _a.ns = ((parsedEvent[2] || STR_EMPTY).replace(rRemoveEmptyNs, \".\").replace(rRemoveTrailingEmptyNs, STR_EMPTY)[_DYN_SPLIT /* @min:%2esplit */](\".\").sort()).join(\".\"),\r\n _a;\r\n}\r\n/**\r\n * Get all of the registered events on the target object, this is primarily used for testing cleanup but may also be used by\r\n * applications to remove their own events\r\n * @param target - The EventTarget that has registered events\r\n * @param eventName - [Optional] The name of the event to return the registered handlers and full name (with namespaces)\r\n * @param evtNamespace - [Optional] Additional namespace(s) to append to the event listeners so they can be uniquely identified and removed based on this namespace,\r\n * if the eventName also includes a namespace the namespace(s) are merged into a single namespace\r\n */\r\nexport function __getRegisteredEvents(target, eventName, evtNamespace) {\r\n var theEvents = [];\r\n var eventCache = elmNodeData.get(target, strEvents, {}, false);\r\n var evtName = _getEvtNamespace(eventName, evtNamespace);\r\n objForEachKey(eventCache, function (evtType, registeredEvents) {\r\n arrForEach(registeredEvents, function (value) {\r\n var _a;\r\n if (!evtName[_DYN_TYPE /* @min:%2etype */] || evtName[_DYN_TYPE /* @min:%2etype */] === value.evtName[_DYN_TYPE /* @min:%2etype */]) {\r\n if (!evtName.ns || evtName.ns === evtName.ns) {\r\n theEvents[_DYN_PUSH /* @min:%2epush */]((_a = {},\r\n _a[_DYN_NAME /* @min:name */] = value.evtName[_DYN_TYPE /* @min:%2etype */] + (value.evtName.ns ? \".\" + value.evtName.ns : STR_EMPTY),\r\n _a.handler = value[_DYN_HANDLER /* @min:%2ehandler */],\r\n _a));\r\n }\r\n }\r\n });\r\n });\r\n return theEvents;\r\n}\r\n// Exported for internal unit testing only\r\nfunction _getRegisteredEvents(target, evtName, addDefault) {\r\n if (addDefault === void 0) { addDefault = true; }\r\n var aiEvts = elmNodeData.get(target, strEvents, {}, addDefault);\r\n var registeredEvents = aiEvts[evtName];\r\n if (!registeredEvents) {\r\n registeredEvents = aiEvts[evtName] = [];\r\n }\r\n return registeredEvents;\r\n}\r\nfunction _doDetach(obj, evtName, handlerRef, useCapture) {\r\n if (obj && evtName && evtName[_DYN_TYPE /* @min:%2etype */]) {\r\n if (obj[strRemoveEventListener]) {\r\n obj[strRemoveEventListener](evtName[_DYN_TYPE /* @min:%2etype */], handlerRef, useCapture);\r\n }\r\n else if (obj[strDetachEvent]) {\r\n obj[strDetachEvent](strOnPrefix + evtName[_DYN_TYPE /* @min:%2etype */], handlerRef);\r\n }\r\n }\r\n}\r\nfunction _doAttach(obj, evtName, handlerRef, useCapture) {\r\n var result = false;\r\n if (obj && evtName && evtName[_DYN_TYPE /* @min:%2etype */] && handlerRef) {\r\n if (obj[strAddEventHelper]) {\r\n // all browsers except IE before version 9\r\n obj[strAddEventHelper](evtName[_DYN_TYPE /* @min:%2etype */], handlerRef, useCapture);\r\n result = true;\r\n }\r\n else if (obj[strAttachEvent]) {\r\n // IE before version 9\r\n obj[strAttachEvent](strOnPrefix + evtName[_DYN_TYPE /* @min:%2etype */], handlerRef);\r\n result = true;\r\n }\r\n }\r\n return result;\r\n}\r\nfunction _doUnregister(target, events, evtName, unRegFn) {\r\n var idx = events[_DYN_LENGTH /* @min:%2elength */];\r\n while (idx--) {\r\n var theEvent = events[idx];\r\n if (theEvent) {\r\n if (!evtName.ns || evtName.ns === theEvent.evtName.ns) {\r\n if (!unRegFn || unRegFn(theEvent)) {\r\n _doDetach(target, theEvent.evtName, theEvent[_DYN_HANDLER /* @min:%2ehandler */], theEvent.capture);\r\n // Remove the registered event\r\n events[_DYN_SPLICE /* @min:%2esplice */](idx, 1);\r\n }\r\n }\r\n }\r\n }\r\n}\r\nfunction _unregisterEvents(target, evtName, unRegFn) {\r\n if (evtName[_DYN_TYPE /* @min:%2etype */]) {\r\n _doUnregister(target, _getRegisteredEvents(target, evtName[_DYN_TYPE /* @min:%2etype */]), evtName, unRegFn);\r\n }\r\n else {\r\n var eventCache = elmNodeData.get(target, strEvents, {});\r\n objForEachKey(eventCache, function (evtType, events) {\r\n _doUnregister(target, events, evtName, unRegFn);\r\n });\r\n // Cleanup\r\n if (objKeys(eventCache)[_DYN_LENGTH /* @min:%2elength */] === 0) {\r\n elmNodeData.kill(target, strEvents);\r\n }\r\n }\r\n}\r\nexport function mergeEvtNamespace(theNamespace, namespaces) {\r\n var newNamespaces;\r\n if (namespaces) {\r\n if (isArray(namespaces)) {\r\n newNamespaces = [theNamespace].concat(namespaces);\r\n }\r\n else {\r\n newNamespaces = [theNamespace, namespaces];\r\n }\r\n // resort the namespaces so they are always in order\r\n newNamespaces = (_getEvtNamespace(\"xx\", newNamespaces).ns)[_DYN_SPLIT /* @min:%2esplit */](\".\");\r\n }\r\n else {\r\n newNamespaces = theNamespace;\r\n }\r\n return newNamespaces;\r\n}\r\n/**\r\n * Binds the specified function to an event, so that the function gets called whenever the event fires on the object\r\n * @param obj Object to add the event too.\r\n * @param eventName String that specifies any of the standard DHTML Events without \"on\" prefix, if may also include an optional (dot \".\" prefixed)\r\n * namespaces \"click\" \"click.mynamespace\" in addition to specific namespaces.\r\n * @param handlerRef Pointer that specifies the function to call when event fires\r\n * @param evtNamespace - [Optional] Additional namespace(s) to append to the event listeners so they can be uniquely identified and removed based on this namespace,\r\n * if the eventName also includes a namespace the namespace(s) are merged into a single namespace\r\n * @param useCapture [Optional] Defaults to false\r\n * @returns True if the function was bound successfully to the event, otherwise false\r\n */\r\nexport function eventOn(target, eventName, handlerRef, evtNamespace, useCapture) {\r\n var _a;\r\n if (useCapture === void 0) { useCapture = false; }\r\n var result = false;\r\n if (target) {\r\n try {\r\n var evtName = _getEvtNamespace(eventName, evtNamespace);\r\n result = _doAttach(target, evtName, handlerRef, useCapture);\r\n if (result && elmNodeData.accept(target)) {\r\n var registeredEvent = (_a = {\r\n guid: _guid++,\r\n evtName: evtName\r\n },\r\n _a[_DYN_HANDLER /* @min:handler */] = handlerRef,\r\n _a.capture = useCapture,\r\n _a);\r\n _getRegisteredEvents(target, evtName.type)[_DYN_PUSH /* @min:%2epush */](registeredEvent);\r\n }\r\n }\r\n catch (e) {\r\n // Just Ignore any error so that we don't break any execution path\r\n }\r\n }\r\n return result;\r\n}\r\n/**\r\n * Removes an event handler for the specified event\r\n * @param Object to remove the event from\r\n * @param eventName {string} - The name of the event, with optional namespaces or just the namespaces,\r\n * such as \"click\", \"click.mynamespace\" or \".mynamespace\"\r\n * @param handlerRef {any} - The callback function that needs to be removed from the given event, when using a\r\n * namespace (with or without a qualifying event) this may be null to remove all previously attached event handlers\r\n * otherwise this will only remove events with this specific handler.\r\n * @param evtNamespace - [Optional] Additional namespace(s) to append to the event listeners so they can be uniquely identified and removed based on this namespace,\r\n * if the eventName also includes a namespace the namespace(s) are merged into a single namespace\r\n * @param useCapture [Optional] Defaults to false\r\n */\r\nexport function eventOff(target, eventName, handlerRef, evtNamespace, useCapture) {\r\n if (useCapture === void 0) { useCapture = false; }\r\n if (target) {\r\n try {\r\n var evtName_1 = _getEvtNamespace(eventName, evtNamespace);\r\n var found_1 = false;\r\n _unregisterEvents(target, evtName_1, function (regEvent) {\r\n if ((evtName_1.ns && !handlerRef) || regEvent[_DYN_HANDLER /* @min:%2ehandler */] === handlerRef) {\r\n found_1 = true;\r\n return true;\r\n }\r\n return false;\r\n });\r\n if (!found_1) {\r\n // fallback to try and remove as requested\r\n _doDetach(target, evtName_1, handlerRef, useCapture);\r\n }\r\n }\r\n catch (e) {\r\n // Just Ignore any error so that we don't break any execution path\r\n }\r\n }\r\n}\r\n/**\r\n * Binds the specified function to an event, so that the function gets called whenever the event fires on the object\r\n * @param obj Object to add the event too.\r\n * @param eventNameWithoutOn String that specifies any of the standard DHTML Events without \"on\" prefix and optional (dot \".\" prefixed) namespaces \"click\" \"click.mynamespace\".\r\n * @param handlerRef Pointer that specifies the function to call when event fires\r\n * @param useCapture [Optional] Defaults to false\r\n * @returns True if the function was bound successfully to the event, otherwise false\r\n */\r\nexport function attachEvent(obj, eventNameWithoutOn, handlerRef, useCapture) {\r\n if (useCapture === void 0) { useCapture = false; }\r\n return eventOn(obj, eventNameWithoutOn, handlerRef, null, useCapture);\r\n}\r\n/**\r\n * Removes an event handler for the specified event\r\n * @param Object to remove the event from\r\n * @param eventNameWithoutOn {string} - The name of the event, with optional namespaces or just the namespaces,\r\n * such as \"click\", \"click.mynamespace\" or \".mynamespace\"\r\n * @param handlerRef {any} - The callback function that needs to be removed from the given event, when using a\r\n * namespace (with or without a qualifying event) this may be null to remove all previously attached event handlers\r\n * otherwise this will only remove events with this specific handler.\r\n * @param useCapture [Optional] Defaults to false\r\n */\r\nexport function detachEvent(obj, eventNameWithoutOn, handlerRef, useCapture) {\r\n if (useCapture === void 0) { useCapture = false; }\r\n eventOff(obj, eventNameWithoutOn, handlerRef, null, useCapture);\r\n}\r\n/**\r\n * Trys to add an event handler for the specified event to the window, body and document\r\n * @param eventName {string} - The name of the event\r\n * @param callback {any} - The callback function that needs to be executed for the given event\r\n * @param evtNamespace - [Optional] Namespace(s) to append to the event listeners so they can be uniquely identified and removed based on this namespace.\r\n * @return {boolean} - true if the handler was successfully added\r\n */\r\nexport function addEventHandler(eventName, callback, evtNamespace) {\r\n var result = false;\r\n var w = getWindow();\r\n if (w) {\r\n result = eventOn(w, eventName, callback, evtNamespace);\r\n result = eventOn(w[\"body\"], eventName, callback, evtNamespace) || result;\r\n }\r\n var doc = getDocument();\r\n if (doc) {\r\n result = eventOn(doc, eventName, callback, evtNamespace) || result;\r\n }\r\n return result;\r\n}\r\n/**\r\n * Trys to remove event handler(s) for the specified event/namespace to the window, body and document\r\n * @param eventName {string} - The name of the event, with optional namespaces or just the namespaces,\r\n * such as \"click\", \"click.mynamespace\" or \".mynamespace\"\r\n * @param callback {any} - - The callback function that needs to be removed from the given event, when using a\r\n * namespace (with or without a qualifying event) this may be null to remove all previously attached event handlers\r\n * otherwise this will only remove events with this specific handler.\r\n * @param evtNamespace - [Optional] Namespace(s) to append to the event listeners so they can be uniquely identified and removed based on this namespace.\r\n */\r\nexport function removeEventHandler(eventName, callback, evtNamespace) {\r\n var w = getWindow();\r\n if (w) {\r\n eventOff(w, eventName, callback, evtNamespace);\r\n eventOff(w[\"body\"], eventName, callback, evtNamespace);\r\n }\r\n var doc = getDocument();\r\n if (doc) {\r\n eventOff(doc, eventName, callback, evtNamespace);\r\n }\r\n}\r\n/**\r\n * Bind the listener to the array of events\r\n * @param events An string array of event names to bind the listener to\r\n * @param listener The event callback to call when the event is triggered\r\n * @param excludeEvents - [Optional] An array of events that should not be hooked (if possible), unless no other events can be.\r\n * @param evtNamespace - [Optional] Namespace(s) to append to the event listeners so they can be uniquely identified and removed based on this namespace.\r\n * @returns true - when at least one of the events was registered otherwise false\r\n */\r\nfunction _addEventListeners(events, listener, excludeEvents, evtNamespace) {\r\n var added = false;\r\n if (listener && events && events[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n arrForEach(events, function (name) {\r\n if (name) {\r\n if (!excludeEvents || arrIndexOf(excludeEvents, name) === -1) {\r\n added = addEventHandler(name, listener, evtNamespace) || added;\r\n }\r\n }\r\n });\r\n }\r\n return added;\r\n}\r\n/**\r\n * Bind the listener to the array of events\r\n * @param events An string array of event names to bind the listener to\r\n * @param listener The event callback to call when the event is triggered\r\n * @param excludeEvents - [Optional] An array of events that should not be hooked (if possible), unless no other events can be.\r\n * @param evtNamespace - [Optional] Namespace(s) to append to the event listeners so they can be uniquely identified and removed based on this namespace.\r\n * @returns true - when at least one of the events was registered otherwise false\r\n */\r\nexport function addEventListeners(events, listener, excludeEvents, evtNamespace) {\r\n var added = false;\r\n if (listener && events && isArray(events)) {\r\n added = _addEventListeners(events, listener, excludeEvents, evtNamespace);\r\n if (!added && excludeEvents && excludeEvents[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n // Failed to add any listeners and we excluded some, so just attempt to add the excluded events\r\n added = _addEventListeners(events, listener, null, evtNamespace);\r\n }\r\n }\r\n return added;\r\n}\r\n/**\r\n * Remove the listener from the array of events\r\n * @param events An string array of event names to bind the listener to\r\n * @param listener The event callback to call when the event is triggered\r\n * @param evtNamespace - [Optional] Namespace(s) to append to the event listeners so they can be uniquely identified and removed based on this namespace.\r\n */\r\nexport function removeEventListeners(events, listener, evtNamespace) {\r\n if (events && isArray(events)) {\r\n arrForEach(events, function (name) {\r\n if (name) {\r\n removeEventHandler(name, listener, evtNamespace);\r\n }\r\n });\r\n }\r\n}\r\n/**\r\n * Listen to the 'beforeunload', 'unload' and 'pagehide' events which indicates a page unload is occurring,\r\n * this does NOT listen to the 'visibilitychange' event as while it does indicate that the page is being hidden\r\n * it does not *necessarily* mean that the page is being completely unloaded, it can mean that the user is\r\n * just navigating to a different Tab and may come back (without unloading the page). As such you may also\r\n * need to listen to the 'addPageHideEventListener' and 'addPageShowEventListener' events.\r\n * @param listener - The event callback to call when a page unload event is triggered\r\n * @param excludeEvents - [Optional] An array of events that should not be hooked, unless no other events can be.\r\n * @param evtNamespace - [Optional] Namespace(s) to append to the event listeners so they can be uniquely identified and removed based on this namespace.\r\n * @returns true - when at least one of the events was registered otherwise false\r\n */\r\nexport function addPageUnloadEventListener(listener, excludeEvents, evtNamespace) {\r\n // Hook the unload event for the document, window and body to ensure that the client events are flushed to the server\r\n // As just hooking the window does not always fire (on chrome) for page navigation's.\r\n return addEventListeners([strBeforeUnload, strUnload, strPageHide], listener, excludeEvents, evtNamespace);\r\n}\r\n/**\r\n * Remove any matching 'beforeunload', 'unload' and 'pagehide' events that may have been added via addEventListener,\r\n * addEventListeners, addPageUnloadEventListener or addPageHideEventListener.\r\n * @param listener - The specific event callback to to be removed\r\n * @param evtNamespace - [Optional] Namespace(s) uniquely identified and removed based on this namespace.\r\n * @returns true - when at least one of the events was registered otherwise false\r\n */\r\nexport function removePageUnloadEventListener(listener, evtNamespace) {\r\n removeEventListeners([strBeforeUnload, strUnload, strPageHide], listener, evtNamespace);\r\n}\r\n/**\r\n * Listen to the pagehide and visibility changing to 'hidden' events, because the 'visibilitychange' uses\r\n * an internal proxy to detect the visibility state you SHOULD use a unique namespace when if you plan to call\r\n * removePageShowEventListener as the remove ignores the listener argument for the 'visibilitychange' event.\r\n * @param listener - The event callback to call when a page hide event is triggered\r\n * @param excludeEvents - [Optional] An array of events that should not be hooked (if possible), unless no other events can be.\r\n * @param evtNamespace - [Optional] A Namespace to append to the event listeners so they can be uniquely identified and removed\r\n * based on this namespace. This call also adds an additional unique \"pageshow\" namespace to the events\r\n * so that only the matching \"removePageHideEventListener\" can remove these events.\r\n * Suggestion: pass as true if you are also calling addPageUnloadEventListener as that also hooks pagehide\r\n * @returns true - when at least one of the events was registered otherwise false\r\n */\r\nexport function addPageHideEventListener(listener, excludeEvents, evtNamespace) {\r\n function _handlePageVisibility(evt) {\r\n var doc = getDocument();\r\n if (listener && doc && doc.visibilityState === \"hidden\") {\r\n listener(evt);\r\n }\r\n }\r\n // add the unique page show namespace to any provided namespace so we can only remove the ones added by \"pagehide\"\r\n var newNamespaces = mergeEvtNamespace(strPageHideNamespace, evtNamespace);\r\n var pageUnloadAdded = _addEventListeners([strPageHide], listener, excludeEvents, newNamespaces);\r\n if (!excludeEvents || arrIndexOf(excludeEvents, strVisibilityChangeEvt) === -1) {\r\n pageUnloadAdded = _addEventListeners([strVisibilityChangeEvt], _handlePageVisibility, excludeEvents, newNamespaces) || pageUnloadAdded;\r\n }\r\n if (!pageUnloadAdded && excludeEvents) {\r\n // Failed to add any listeners and we where requested to exclude some, so just call again without excluding anything\r\n pageUnloadAdded = addPageHideEventListener(listener, null, evtNamespace);\r\n }\r\n return pageUnloadAdded;\r\n}\r\n/**\r\n * Removes the pageHide event listeners added by addPageHideEventListener, because the 'visibilitychange' uses\r\n * an internal proxy to detect the visibility state you SHOULD use a unique namespace when calling addPageHideEventListener\r\n * as the remove ignores the listener argument for the 'visibilitychange' event.\r\n * @param listener - The specific listener to remove for the 'pageshow' event only (ignored for 'visibilitychange')\r\n * @param evtNamespace - The unique namespace used when calling addPageShowEventListener\r\n */\r\nexport function removePageHideEventListener(listener, evtNamespace) {\r\n // add the unique page show namespace to any provided namespace so we only remove the ones added by \"pagehide\"\r\n var newNamespaces = mergeEvtNamespace(strPageHideNamespace, evtNamespace);\r\n removeEventListeners([strPageHide], listener, newNamespaces);\r\n removeEventListeners([strVisibilityChangeEvt], null, newNamespaces);\r\n}\r\n/**\r\n * Listen to the pageshow and visibility changing to 'visible' events, because the 'visibilitychange' uses\r\n * an internal proxy to detect the visibility state you SHOULD use a unique namespace when if you plan to call\r\n * removePageShowEventListener as the remove ignores the listener argument for the 'visibilitychange' event.\r\n * @param listener - The event callback to call when a page is show event is triggered\r\n * @param excludeEvents - [Optional] An array of events that should not be hooked (if possible), unless no other events can be.\r\n * @param evtNamespace - [Optional/Recommended] A Namespace to append to the event listeners so they can be uniquely\r\n * identified and removed based on this namespace. This call also adds an additional unique \"pageshow\" namespace to the events\r\n * so that only the matching \"removePageShowEventListener\" can remove these events.\r\n * @returns true - when at least one of the events was registered otherwise false\r\n */\r\nexport function addPageShowEventListener(listener, excludeEvents, evtNamespace) {\r\n function _handlePageVisibility(evt) {\r\n var doc = getDocument();\r\n if (listener && doc && doc.visibilityState === \"visible\") {\r\n listener(evt);\r\n }\r\n }\r\n // add the unique page show namespace to any provided namespace so we can only remove the ones added by \"pageshow\"\r\n var newNamespaces = mergeEvtNamespace(strPageShowNamespace, evtNamespace);\r\n var pageShowAdded = _addEventListeners([strPageShow], listener, excludeEvents, newNamespaces);\r\n pageShowAdded = _addEventListeners([strVisibilityChangeEvt], _handlePageVisibility, excludeEvents, newNamespaces) || pageShowAdded;\r\n if (!pageShowAdded && excludeEvents) {\r\n // Failed to add any listeners and we where requested to exclude some, so just call again without excluding anything\r\n pageShowAdded = addPageShowEventListener(listener, null, evtNamespace);\r\n }\r\n return pageShowAdded;\r\n}\r\n/**\r\n * Removes the pageShow event listeners added by addPageShowEventListener, because the 'visibilitychange' uses\r\n * an internal proxy to detect the visibility state you SHOULD use a unique namespace when calling addPageShowEventListener\r\n * as the remove ignores the listener argument for the 'visibilitychange' event.\r\n * @param listener - The specific listener to remove for the 'pageshow' event only (ignored for 'visibilitychange')\r\n * @param evtNamespace - The unique namespace used when calling addPageShowEventListener\r\n */\r\nexport function removePageShowEventListener(listener, evtNamespace) {\r\n // add the unique page show namespace to any provided namespace so we only remove the ones added by \"pageshow\"\r\n var newNamespaces = mergeEvtNamespace(strPageShowNamespace, evtNamespace);\r\n removeEventListeners([strPageShow], listener, newNamespaces);\r\n removeEventListeners([strVisibilityChangeEvt], null, newNamespaces);\r\n}\r\n//# sourceMappingURL=EventHelpers.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\"use strict\";\r\nimport { objCreateFn, strShimUndefined } from \"@microsoft/applicationinsights-shims\";\r\nimport { _DYN_LENGTH, _DYN_PUSH, _DYN_SET_ENABLED, _DYN_SUBSTR, _DYN_SUBSTRING } from \"../__DynamicConstants\";\r\nimport { _gblCookieMgr } from \"./CookieMgr\";\r\nimport { getPerformance, isIE } from \"./EnvUtils\";\r\nimport { addEventHandler, attachEvent, detachEvent } from \"./EventHelpers\";\r\nimport { arrForEach, arrIndexOf, arrMap, arrReduce, dateNow, hasOwnProperty, isArray, isBoolean, isDate, isError, isFunction, isNullOrUndefined, isNumber, isObject, isString, isTypeof, isUndefined, objDefineAccessors, objKeys, strTrim, toISOString } from \"./HelperFuncs\";\r\nimport { STR_EMPTY } from \"./InternalConstants\";\r\nimport { mwcRandom32, mwcRandomSeed, newId, random32, randomValue } from \"./RandomHelper\";\r\nvar _cookieMgrs = null;\r\nvar _canUseCookies; // legacy supported config\r\n// Added to help with minfication\r\nexport var Undefined = strShimUndefined;\r\nexport function newGuid() {\r\n var uuid = generateW3CId();\r\n return uuid[_DYN_SUBSTRING /* @min:%2esubstring */](0, 8) + \"-\" + uuid[_DYN_SUBSTRING /* @min:%2esubstring */](8, 12) + \"-\" + uuid[_DYN_SUBSTRING /* @min:%2esubstring */](12, 16) + \"-\" + uuid[_DYN_SUBSTRING /* @min:%2esubstring */](16, 20) + \"-\" + uuid[_DYN_SUBSTRING /* @min:%2esubstring */](20);\r\n}\r\n/**\r\n * Return the current value of the Performance Api now() function (if available) and fallback to dateNow() if it is unavailable (IE9 or less)\r\n * https://caniuse.com/#search=performance.now\r\n */\r\nexport function perfNow() {\r\n var perf = getPerformance();\r\n if (perf && perf.now) {\r\n return perf.now();\r\n }\r\n return dateNow();\r\n}\r\n/**\r\n * The strEndsWith() method determines whether a string ends with the characters of a specified string, returning true or false as appropriate.\r\n * @param value - The value to check whether it ends with the search value.\r\n * @param search - The characters to be searched for at the end of the value.\r\n * @returns true if the given search value is found at the end of the string, otherwise false.\r\n */\r\nexport function strEndsWith(value, search) {\r\n if (value && search) {\r\n var len = value[_DYN_LENGTH /* @min:%2elength */];\r\n var start = len - search[_DYN_LENGTH /* @min:%2elength */];\r\n return value[_DYN_SUBSTRING /* @min:%2esubstring */](start >= 0 ? start : 0, len) === search;\r\n }\r\n return false;\r\n}\r\n/**\r\n * generate W3C trace id\r\n */\r\nexport function generateW3CId() {\r\n var hexValues = [\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\"];\r\n // rfc4122 version 4 UUID without dashes and with lowercase letters\r\n var oct = STR_EMPTY, tmp;\r\n for (var a = 0; a < 4; a++) {\r\n tmp = random32();\r\n oct +=\r\n hexValues[tmp & 0xF] +\r\n hexValues[tmp >> 4 & 0xF] +\r\n hexValues[tmp >> 8 & 0xF] +\r\n hexValues[tmp >> 12 & 0xF] +\r\n hexValues[tmp >> 16 & 0xF] +\r\n hexValues[tmp >> 20 & 0xF] +\r\n hexValues[tmp >> 24 & 0xF] +\r\n hexValues[tmp >> 28 & 0xF];\r\n }\r\n // \"Set the two most significant bits (bits 6 and 7) of the clock_seq_hi_and_reserved to zero and one, respectively\"\r\n var clockSequenceHi = hexValues[8 + (random32() & 0x03) | 0];\r\n return oct[_DYN_SUBSTR /* @min:%2esubstr */](0, 8) + oct[_DYN_SUBSTR /* @min:%2esubstr */](9, 4) + \"4\" + oct[_DYN_SUBSTR /* @min:%2esubstr */](13, 3) + clockSequenceHi + oct[_DYN_SUBSTR /* @min:%2esubstr */](16, 3) + oct[_DYN_SUBSTR /* @min:%2esubstr */](19, 12);\r\n}\r\n/**\r\n * Provides a collection of utility functions, included for backward compatibility with previous releases.\r\n * @deprecated Marking this instance as deprecated in favor of direct usage of the helper functions\r\n * as direct usage provides better tree-shaking and minification by avoiding the inclusion of the unused items\r\n * in your resulting code.\r\n */\r\nexport var CoreUtils = {\r\n _canUseCookies: undefined,\r\n isTypeof: isTypeof,\r\n isUndefined: isUndefined,\r\n isNullOrUndefined: isNullOrUndefined,\r\n hasOwnProperty: hasOwnProperty,\r\n isFunction: isFunction,\r\n isObject: isObject,\r\n isDate: isDate,\r\n isArray: isArray,\r\n isError: isError,\r\n isString: isString,\r\n isNumber: isNumber,\r\n isBoolean: isBoolean,\r\n toISOString: toISOString,\r\n arrForEach: arrForEach,\r\n arrIndexOf: arrIndexOf,\r\n arrMap: arrMap,\r\n arrReduce: arrReduce,\r\n strTrim: strTrim,\r\n objCreate: objCreateFn,\r\n objKeys: objKeys,\r\n objDefineAccessors: objDefineAccessors,\r\n addEventHandler: addEventHandler,\r\n dateNow: dateNow,\r\n isIE: isIE,\r\n disableCookies: disableCookies,\r\n newGuid: newGuid,\r\n perfNow: perfNow,\r\n newId: newId,\r\n randomValue: randomValue,\r\n random32: random32,\r\n mwcRandomSeed: mwcRandomSeed,\r\n mwcRandom32: mwcRandom32,\r\n generateW3CId: generateW3CId\r\n};\r\nvar GuidRegex = /[xy]/g;\r\nexport var EventHelper = {\r\n Attach: attachEvent,\r\n AttachEvent: attachEvent,\r\n Detach: detachEvent,\r\n DetachEvent: detachEvent\r\n};\r\n/**\r\n * Helper to support backward compatibility for users that use the legacy cookie handling functions and the use the internal\r\n * CoreUtils._canUseCookies global flag to enable/disable cookies usage.\r\n * Note: This has the following deliberate side-effects\r\n * - Creates the global (legacy) cookie manager if it does not already exist\r\n * - Attempts to add \"listeners\" to the CoreUtils._canUseCookies property to support the legacy usage\r\n * @param config\r\n * @param logger\r\n * @returns\r\n */\r\nexport function _legacyCookieMgr(config, logger) {\r\n var cookieMgr = _gblCookieMgr(config, logger);\r\n var legacyCanUseCookies = CoreUtils._canUseCookies;\r\n if (_cookieMgrs === null) {\r\n _cookieMgrs = [];\r\n _canUseCookies = legacyCanUseCookies;\r\n // Dynamically create get/set property accessors for backward compatibility for enabling / disabling cookies\r\n // this WILL NOT work for ES3 browsers (< IE8)\r\n objDefineAccessors(CoreUtils, \"_canUseCookies\", function () {\r\n return _canUseCookies;\r\n }, function (value) {\r\n _canUseCookies = value;\r\n arrForEach(_cookieMgrs, function (mgr) {\r\n mgr[_DYN_SET_ENABLED /* @min:%2esetEnabled */](value);\r\n });\r\n });\r\n }\r\n if (arrIndexOf(_cookieMgrs, cookieMgr) === -1) {\r\n _cookieMgrs[_DYN_PUSH /* @min:%2epush */](cookieMgr);\r\n }\r\n if (isBoolean(legacyCanUseCookies)) {\r\n cookieMgr[_DYN_SET_ENABLED /* @min:%2esetEnabled */](legacyCanUseCookies);\r\n }\r\n if (isBoolean(_canUseCookies)) {\r\n cookieMgr[_DYN_SET_ENABLED /* @min:%2esetEnabled */](_canUseCookies);\r\n }\r\n return cookieMgr;\r\n}\r\n/**\r\n * @deprecated - Use the core.getCookieMgr().disable()\r\n * Force the SDK not to store and read any data from cookies.\r\n */\r\nexport function disableCookies() {\r\n _legacyCookieMgr()[_DYN_SET_ENABLED /* @min:%2esetEnabled */](false);\r\n}\r\n/**\r\n * @deprecated - Use the core.getCookieMgr().isEnabled()\r\n * Helper method to tell if document.cookie object is available and whether it can be used.\r\n */\r\nexport function canUseCookies(logger) {\r\n return _legacyCookieMgr(null, logger).isEnabled();\r\n}\r\n/**\r\n * @deprecated - Use the core.getCookieMgr().get()\r\n * helper method to access userId and sessionId cookie\r\n */\r\nexport function getCookie(logger, name) {\r\n return _legacyCookieMgr(null, logger).get(name);\r\n}\r\n/**\r\n * @deprecated - Use the core.getCookieMgr().set()\r\n * helper method to set userId and sessionId cookie\r\n */\r\nexport function setCookie(logger, name, value, domain) {\r\n _legacyCookieMgr(null, logger).set(name, value, null, domain);\r\n}\r\n/**\r\n * @deprecated - Use the core.getCookieMgr().del()\r\n * Deletes a cookie by setting it's expiration time in the past.\r\n * @param name - The name of the cookie to delete.\r\n */\r\nexport function deleteCookie(logger, name) {\r\n return _legacyCookieMgr(null, logger).del(name);\r\n}\r\n//# sourceMappingURL=CoreUtils.js.map","import { _DYN_INDEX_OF, _DYN_LENGTH, _DYN_SPAN_ID, _DYN_SPLIT, _DYN_SUBSTR, _DYN_TO_LOWER_CASE, _DYN_TRACE_FLAGS, _DYN_TRACE_ID, _DYN_VERSION } from \"../__DynamicConstants\";\r\nimport { generateW3CId } from \"./CoreUtils\";\r\nimport { findMetaTag, findNamedServerTiming } from \"./EnvUtils\";\r\nimport { isArray, isString, strTrim } from \"./HelperFuncs\";\r\nimport { STR_EMPTY } from \"./InternalConstants\";\r\n// using {0,16} for leading and trailing whitespace just to constrain the possible runtime of a random string\r\nvar TRACE_PARENT_REGEX = /^([\\da-f]{2})-([\\da-f]{32})-([\\da-f]{16})-([\\da-f]{2})(-[^\\s]{1,64})?$/i;\r\nvar DEFAULT_VERSION = \"00\";\r\nvar INVALID_VERSION = \"ff\";\r\nvar INVALID_TRACE_ID = \"00000000000000000000000000000000\";\r\nvar INVALID_SPAN_ID = \"0000000000000000\";\r\nvar SAMPLED_FLAG = 0x01;\r\nfunction _isValid(value, len, invalidValue) {\r\n if (value && value[_DYN_LENGTH /* @min:%2elength */] === len && value !== invalidValue) {\r\n return !!value.match(/^[\\da-f]*$/i);\r\n }\r\n return false;\r\n}\r\nfunction _formatValue(value, len, defValue) {\r\n if (_isValid(value, len)) {\r\n return value;\r\n }\r\n return defValue;\r\n}\r\nfunction _formatFlags(value) {\r\n if (isNaN(value) || value < 0 || value > 255) {\r\n value = 0x01;\r\n }\r\n var result = value.toString(16);\r\n while (result[_DYN_LENGTH /* @min:%2elength */] < 2) {\r\n result = \"0\" + result;\r\n }\r\n return result;\r\n}\r\n/**\r\n * Create a new ITraceParent instance using the provided values.\r\n * @param traceId - The traceId to use, when invalid a new random W3C id will be generated.\r\n * @param spanId - The parent/span id to use, a new random value will be generated if it is invalid.\r\n * @param flags - The traceFlags to use, defaults to zero (0) if not supplied or invalid\r\n * @param version - The version to used, defaults to version \"01\" if not supplied or invalid.\r\n * @returns\r\n */\r\nexport function createTraceParent(traceId, spanId, flags, version) {\r\n var _a;\r\n return _a = {},\r\n _a[_DYN_VERSION /* @min:version */] = _isValid(version, 2, INVALID_VERSION) ? version : DEFAULT_VERSION,\r\n _a[_DYN_TRACE_ID /* @min:traceId */] = isValidTraceId(traceId) ? traceId : generateW3CId(),\r\n _a.spanId = isValidSpanId(spanId) ? spanId : generateW3CId()[_DYN_SUBSTR /* @min:%2esubstr */](0, 16),\r\n _a.traceFlags = flags >= 0 && flags <= 0xFF ? flags : 1,\r\n _a;\r\n}\r\n/**\r\n * Attempt to parse the provided string as a W3C TraceParent header value (https://www.w3.org/TR/trace-context/#traceparent-header)\r\n *\r\n * @param value - The value to be parsed\r\n * @param selectIdx - If the found value is comma separated which is the preferred entry to select, defaults to the first\r\n * @returns\r\n */\r\nexport function parseTraceParent(value, selectIdx) {\r\n var _a;\r\n if (!value) {\r\n // Don't pass a null/undefined or empty string\r\n return null;\r\n }\r\n if (isArray(value)) {\r\n // The value may have been encoded on the page into an array so handle this automatically\r\n value = value[0] || \"\";\r\n }\r\n if (!value || !isString(value) || value[_DYN_LENGTH /* @min:%2elength */] > 8192) {\r\n // limit potential processing based on total length\r\n return null;\r\n }\r\n if (value[_DYN_INDEX_OF /* @min:%2eindexOf */](\",\") !== -1) {\r\n var values = value[_DYN_SPLIT /* @min:%2esplit */](\",\");\r\n value = values[selectIdx > 0 && values[_DYN_LENGTH /* @min:%2elength */] > selectIdx ? selectIdx : 0];\r\n }\r\n // See https://www.w3.org/TR/trace-context/#versioning-of-traceparent\r\n var match = TRACE_PARENT_REGEX.exec(strTrim(value));\r\n if (!match || // No match\r\n match[1] === INVALID_VERSION || // version ff is forbidden\r\n match[2] === INVALID_TRACE_ID || // All zeros is considered to be invalid\r\n match[3] === INVALID_SPAN_ID) { // All zeros is considered to be invalid\r\n return null;\r\n }\r\n return _a = {\r\n version: (match[1] || STR_EMPTY)[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */](),\r\n traceId: (match[2] || STR_EMPTY)[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */](),\r\n spanId: (match[3] || STR_EMPTY)[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]()\r\n },\r\n _a[_DYN_TRACE_FLAGS /* @min:traceFlags */] = parseInt(match[4], 16),\r\n _a;\r\n}\r\n/**\r\n * Is the provided W3c Trace Id a valid string representation, it must be a 32-character string\r\n * of lowercase hexadecimal characters for example, 4bf92f3577b34da6a3ce929d0e0e4736.\r\n * If all characters as zero (00000000000000000000000000000000) it will be considered an invalid value.\r\n * @param value - The W3c trace Id to be validated\r\n * @returns true if valid otherwise false\r\n */\r\nexport function isValidTraceId(value) {\r\n return _isValid(value, 32, INVALID_TRACE_ID);\r\n}\r\n/**\r\n * Is the provided W3c span id (aka. parent id) a valid string representation, it must be a 16-character\r\n * string of lowercase hexadecimal characters, for example, 00f067aa0ba902b7.\r\n * If all characters are zero (0000000000000000) this is considered an invalid value.\r\n * @param value - The W3c span id to be validated\r\n * @returns true if valid otherwise false\r\n */\r\nexport function isValidSpanId(value) {\r\n return _isValid(value, 16, INVALID_SPAN_ID);\r\n}\r\n/**\r\n * Validates that the provided ITraceParent instance conforms to the currently supported specifications\r\n * @param value\r\n * @returns\r\n */\r\nexport function isValidTraceParent(value) {\r\n if (!value ||\r\n !_isValid(value[_DYN_VERSION /* @min:%2eversion */], 2, INVALID_VERSION) ||\r\n !_isValid(value[_DYN_TRACE_ID /* @min:%2etraceId */], 32, INVALID_TRACE_ID) ||\r\n !_isValid(value[_DYN_SPAN_ID /* @min:%2espanId */], 16, INVALID_SPAN_ID) ||\r\n !_isValid(_formatFlags(value[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */]), 2)) {\r\n // Each known field must contain a valid value\r\n return false;\r\n }\r\n return true;\r\n}\r\n/**\r\n * Is the parsed traceParent indicating that the trace is currently sampled.\r\n * @param value - The parsed traceParent value\r\n * @returns\r\n */\r\nexport function isSampledFlag(value) {\r\n if (isValidTraceParent(value)) {\r\n return (value[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */] & SAMPLED_FLAG) === SAMPLED_FLAG;\r\n }\r\n return false;\r\n}\r\n/**\r\n * Format the ITraceParent value as a string using the supported and know version formats.\r\n * So even if the passed traceParent is a later version the string value returned from this\r\n * function will convert it to only the known version formats.\r\n * This currently only supports version \"00\" and invalid \"ff\"\r\n * @param value - The parsed traceParent value\r\n * @returns\r\n */\r\nexport function formatTraceParent(value) {\r\n if (value) {\r\n // Special Note: This only supports formatting as version 00, future versions should encode any known supported version\r\n // So parsing a future version will populate the correct version value but reformatting will reduce it to version 00.\r\n var flags = _formatFlags(value[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */]);\r\n if (!_isValid(flags, 2)) {\r\n flags = \"01\";\r\n }\r\n var version = value[_DYN_VERSION /* @min:%2eversion */] || DEFAULT_VERSION;\r\n if (version !== \"00\" && version !== \"ff\") {\r\n // Reduce version to \"00\"\r\n version = DEFAULT_VERSION;\r\n }\r\n // Format as version 00\r\n return \"\".concat(version.toLowerCase(), \"-\").concat(_formatValue(value.traceId, 32, INVALID_TRACE_ID).toLowerCase(), \"-\").concat(_formatValue(value.spanId, 16, INVALID_SPAN_ID).toLowerCase(), \"-\").concat(flags.toLowerCase());\r\n }\r\n return \"\";\r\n}\r\n/**\r\n * Helper function to fetch the passed traceparent from the page, looking for it as a meta-tag or a Server-Timing header.\r\n * @param selectIdx - If the found value is comma separated which is the preferred entry to select, defaults to the first\r\n * @returns\r\n */\r\nexport function findW3cTraceParent(selectIdx) {\r\n var name = \"traceparent\";\r\n var traceParent = parseTraceParent(findMetaTag(name), selectIdx);\r\n if (!traceParent) {\r\n traceParent = parseTraceParent(findNamedServerTiming(name), selectIdx);\r\n }\r\n return traceParent;\r\n}\r\n//# sourceMappingURL=W3cTraceParent.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { getDocument, isFunction } from \"@microsoft/applicationinsights-core-js\";\r\nexport function createDomEvent(eventName) {\r\n var event = null;\r\n if (isFunction(Event)) { // Use Event constructor when available\r\n event = new Event(eventName);\r\n }\r\n else { // Event has no constructor in IE\r\n var doc = getDocument();\r\n if (doc && doc.createEvent) {\r\n event = doc.createEvent(\"Event\");\r\n event.initEvent(eventName, true, true);\r\n }\r\n }\r\n return event;\r\n}\r\n//# sourceMappingURL=DomHelperFuncs.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { createValueMap } from \"@microsoft/applicationinsights-core-js\";\r\nexport var RequestHeaders = createValueMap({\r\n requestContextHeader: [0 /* eRequestHeaders.requestContextHeader */, \"Request-Context\"],\r\n requestContextTargetKey: [1 /* eRequestHeaders.requestContextTargetKey */, \"appId\"],\r\n requestContextAppIdFormat: [2 /* eRequestHeaders.requestContextAppIdFormat */, \"appId=cid-v1:\"],\r\n requestIdHeader: [3 /* eRequestHeaders.requestIdHeader */, \"Request-Id\"],\r\n traceParentHeader: [4 /* eRequestHeaders.traceParentHeader */, \"traceparent\"],\r\n traceStateHeader: [5 /* eRequestHeaders.traceStateHeader */, \"tracestate\"],\r\n sdkContextHeader: [6 /* eRequestHeaders.sdkContextHeader */, \"Sdk-Context\"],\r\n sdkContextHeaderAppIdRequest: [7 /* eRequestHeaders.sdkContextHeaderAppIdRequest */, \"appId\"],\r\n requestContextHeaderLowerCase: [8 /* eRequestHeaders.requestContextHeaderLowerCase */, \"request-context\"]\r\n});\r\n//# sourceMappingURL=RequestResponseHeaders.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { getDocument, isString } from \"@microsoft/applicationinsights-core-js\";\r\nimport { _DYN_LENGTH, _DYN_PATHNAME, _DYN_TO_LOWER_CASE } from \"./__DynamicConstants\";\r\nvar _document = getDocument() || {};\r\nvar _htmlAnchorIdx = 0;\r\n// Use an array of temporary values as it's possible for multiple calls to parseUrl() will be called with different URLs\r\n// Using a cache size of 5 for now as it current depth usage is at least 2, so adding a minor buffer to handle future updates\r\nvar _htmlAnchorElement = [null, null, null, null, null];\r\nexport function urlParseUrl(url) {\r\n var anchorIdx = _htmlAnchorIdx;\r\n var anchorCache = _htmlAnchorElement;\r\n var tempAnchor = anchorCache[anchorIdx];\r\n if (!_document.createElement) {\r\n // Always create the temp instance if createElement is not available\r\n tempAnchor = { host: urlParseHost(url, true) };\r\n }\r\n else if (!anchorCache[anchorIdx]) {\r\n // Create and cache the unattached anchor instance\r\n tempAnchor = anchorCache[anchorIdx] = _document.createElement(\"a\");\r\n }\r\n tempAnchor.href = url;\r\n // Move the cache index forward\r\n anchorIdx++;\r\n if (anchorIdx >= anchorCache[_DYN_LENGTH /* @min:%2elength */]) {\r\n anchorIdx = 0;\r\n }\r\n _htmlAnchorIdx = anchorIdx;\r\n return tempAnchor;\r\n}\r\nexport function urlGetAbsoluteUrl(url) {\r\n var result;\r\n var a = urlParseUrl(url);\r\n if (a) {\r\n result = a.href;\r\n }\r\n return result;\r\n}\r\nexport function urlGetPathName(url) {\r\n var result;\r\n var a = urlParseUrl(url);\r\n if (a) {\r\n result = a[_DYN_PATHNAME /* @min:%2epathname */];\r\n }\r\n return result;\r\n}\r\nexport function urlGetCompleteUrl(method, absoluteUrl) {\r\n if (method) {\r\n return method.toUpperCase() + \" \" + absoluteUrl;\r\n }\r\n return absoluteUrl;\r\n}\r\n// Fallback method to grab host from url if document.createElement method is not available\r\nexport function urlParseHost(url, inclPort) {\r\n var fullHost = urlParseFullHost(url, inclPort) || \"\";\r\n if (fullHost) {\r\n var match = fullHost.match(/(www\\d{0,5}\\.)?([^\\/:]{1,256})(:\\d{1,20})?/i);\r\n if (match != null && match[_DYN_LENGTH /* @min:%2elength */] > 3 && isString(match[2]) && match[2][_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n return match[2] + (match[3] || \"\");\r\n }\r\n }\r\n return fullHost;\r\n}\r\nexport function urlParseFullHost(url, inclPort) {\r\n var result = null;\r\n if (url) {\r\n var match = url.match(/(\\w{1,150}):\\/\\/([^\\/:]{1,256})(:\\d{1,20})?/i);\r\n if (match != null && match[_DYN_LENGTH /* @min:%2elength */] > 2 && isString(match[2]) && match[2][_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n result = match[2] || \"\";\r\n if (inclPort && match[_DYN_LENGTH /* @min:%2elength */] > 2) {\r\n var protocol = (match[1] || \"\")[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]();\r\n var port = match[3] || \"\";\r\n // IE includes the standard port so pass it off if it's the same as the protocol\r\n if (protocol === \"http\" && port === \":80\") {\r\n port = \"\";\r\n }\r\n else if (protocol === \"https\" && port === \":443\") {\r\n port = \"\";\r\n }\r\n result += port;\r\n }\r\n }\r\n }\r\n return result;\r\n}\r\n//# sourceMappingURL=UrlHelperFuncs.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { arrForEach, arrIndexOf, attachEvent, canUseCookies as coreCanUseCookies, dateNow, deleteCookie as coreDeleteCookie, disableCookies as coreDisableCookies, dumpObj, generateW3CId, getCookie as coreGetCookie, getExceptionName as coreGetExceptionName, getIEVersion, getPerformance, isArray, isBeaconsSupported, isDate, isError, isNullOrUndefined, isValidSpanId, isValidTraceId, newId, random32, setCookie as coreSetCookie, strTrim, toISOString, uaDisallowsSameSiteNone } from \"@microsoft/applicationinsights-core-js\";\r\nimport { DEFAULT_BREEZE_ENDPOINT, DEFAULT_BREEZE_PATH, strNotSpecified } from \"./Constants\";\r\nimport { createDomEvent } from \"./DomHelperFuncs\";\r\nimport { getExtensionByName, isCrossOriginError, msToTimeSpan, stringToBoolOrDefault } from \"./HelperFuncs\";\r\nimport { RequestHeaders } from \"./RequestResponseHeaders\";\r\nimport { utlCanUseLocalStorage, utlCanUseSessionStorage, utlDisableStorage, utlGetLocalStorage, utlGetSessionStorage, utlGetSessionStorageKeys, utlRemoveSessionStorage, utlRemoveStorage, utlSetLocalStorage, utlSetSessionStorage } from \"./StorageHelperFuncs\";\r\nimport { dataSanitizeString } from \"./Telemetry/Common/DataSanitizer\";\r\nimport { urlGetAbsoluteUrl, urlGetCompleteUrl, urlGetPathName, urlParseFullHost, urlParseHost, urlParseUrl } from \"./UrlHelperFuncs\";\r\nimport { _DYN_CORRELATION_HEADER_E0, _DYN_INDEX_OF, _DYN_LENGTH, _DYN_NAME, _DYN_PATHNAME, _DYN_SPLIT, _DYN_TO_LOWER_CASE } from \"./__DynamicConstants\";\r\n// listing only non-geo specific locations\r\nvar _internalEndpoints = [\r\n DEFAULT_BREEZE_ENDPOINT + DEFAULT_BREEZE_PATH,\r\n \"https://breeze.aimon.applicationinsights.io\" + DEFAULT_BREEZE_PATH,\r\n \"https://dc-int.services.visualstudio.com\" + DEFAULT_BREEZE_PATH\r\n];\r\nexport function isInternalApplicationInsightsEndpoint(endpointUrl) {\r\n return arrIndexOf(_internalEndpoints, endpointUrl[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]()) !== -1;\r\n}\r\nexport var Util = {\r\n NotSpecified: strNotSpecified,\r\n createDomEvent: createDomEvent,\r\n disableStorage: utlDisableStorage,\r\n isInternalApplicationInsightsEndpoint: isInternalApplicationInsightsEndpoint,\r\n canUseLocalStorage: utlCanUseLocalStorage,\r\n getStorage: utlGetLocalStorage,\r\n setStorage: utlSetLocalStorage,\r\n removeStorage: utlRemoveStorage,\r\n canUseSessionStorage: utlCanUseSessionStorage,\r\n getSessionStorageKeys: utlGetSessionStorageKeys,\r\n getSessionStorage: utlGetSessionStorage,\r\n setSessionStorage: utlSetSessionStorage,\r\n removeSessionStorage: utlRemoveSessionStorage,\r\n disableCookies: coreDisableCookies,\r\n canUseCookies: coreCanUseCookies,\r\n disallowsSameSiteNone: uaDisallowsSameSiteNone,\r\n setCookie: coreSetCookie,\r\n stringToBoolOrDefault: stringToBoolOrDefault,\r\n getCookie: coreGetCookie,\r\n deleteCookie: coreDeleteCookie,\r\n trim: strTrim,\r\n newId: newId,\r\n random32: function () {\r\n return random32(true);\r\n },\r\n generateW3CId: generateW3CId,\r\n isArray: isArray,\r\n isError: isError,\r\n isDate: isDate,\r\n toISOStringForIE8: toISOString,\r\n getIEVersion: getIEVersion,\r\n msToTimeSpan: msToTimeSpan,\r\n isCrossOriginError: isCrossOriginError,\r\n dump: dumpObj,\r\n getExceptionName: coreGetExceptionName,\r\n addEventHandler: attachEvent,\r\n IsBeaconApiSupported: isBeaconsSupported,\r\n getExtension: getExtensionByName\r\n};\r\nexport var UrlHelper = {\r\n parseUrl: urlParseUrl,\r\n getAbsoluteUrl: urlGetAbsoluteUrl,\r\n getPathName: urlGetPathName,\r\n getCompleteUrl: urlGetCompleteUrl,\r\n parseHost: urlParseHost,\r\n parseFullHost: urlParseFullHost\r\n};\r\nexport var CorrelationIdHelper = {\r\n correlationIdPrefix: \"cid-v1:\",\r\n /**\r\n * Checks if a request url is not on a excluded domain list and if it is safe to add correlation headers.\r\n * Headers are always included if the current domain matches the request domain. If they do not match (CORS),\r\n * they are regex-ed across correlationHeaderDomains and correlationHeaderExcludedDomains to determine if headers are included.\r\n * Some environments don't give information on currentHost via window.location.host (e.g. Cordova). In these cases, the user must\r\n * manually supply domains to include correlation headers on. Else, no headers will be included at all.\r\n */\r\n canIncludeCorrelationHeader: function (config, requestUrl, currentHost) {\r\n if (!requestUrl || (config && config.disableCorrelationHeaders)) {\r\n return false;\r\n }\r\n if (config && config[_DYN_CORRELATION_HEADER_E0 /* @min:%2ecorrelationHeaderExcludePatterns */]) {\r\n for (var i = 0; i < config.correlationHeaderExcludePatterns[_DYN_LENGTH /* @min:%2elength */]; i++) {\r\n if (config[_DYN_CORRELATION_HEADER_E0 /* @min:%2ecorrelationHeaderExcludePatterns */][i].test(requestUrl)) {\r\n return false;\r\n }\r\n }\r\n }\r\n var requestHost = urlParseUrl(requestUrl).host[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]();\r\n if (requestHost && (requestHost[_DYN_INDEX_OF /* @min:%2eindexOf */](\":443\") !== -1 || requestHost[_DYN_INDEX_OF /* @min:%2eindexOf */](\":80\") !== -1)) {\r\n // [Bug #1260] IE can include the port even for http and https URLs so if present\r\n // try and parse it to remove if it matches the default protocol port\r\n requestHost = (urlParseFullHost(requestUrl, true) || \"\")[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]();\r\n }\r\n if ((!config || !config.enableCorsCorrelation) && (requestHost && requestHost !== currentHost)) {\r\n return false;\r\n }\r\n var includedDomains = config && config.correlationHeaderDomains;\r\n if (includedDomains) {\r\n var matchExists_1;\r\n arrForEach(includedDomains, function (domain) {\r\n var regex = new RegExp(domain.toLowerCase().replace(/\\\\/g, \"\\\\\\\\\").replace(/\\./g, \"\\\\.\").replace(/\\*/g, \".*\"));\r\n matchExists_1 = matchExists_1 || regex.test(requestHost);\r\n });\r\n if (!matchExists_1) {\r\n return false;\r\n }\r\n }\r\n var excludedDomains = config && config.correlationHeaderExcludedDomains;\r\n if (!excludedDomains || excludedDomains[_DYN_LENGTH /* @min:%2elength */] === 0) {\r\n return true;\r\n }\r\n for (var i = 0; i < excludedDomains[_DYN_LENGTH /* @min:%2elength */]; i++) {\r\n var regex = new RegExp(excludedDomains[i].toLowerCase().replace(/\\\\/g, \"\\\\\\\\\").replace(/\\./g, \"\\\\.\").replace(/\\*/g, \".*\"));\r\n if (regex.test(requestHost)) {\r\n return false;\r\n }\r\n }\r\n // if we don't know anything about the requestHost, require the user to use included/excludedDomains.\r\n // Previously we always returned false for a falsy requestHost\r\n return requestHost && requestHost[_DYN_LENGTH /* @min:%2elength */] > 0;\r\n },\r\n /**\r\n * Combines target appId and target role name from response header.\r\n */\r\n getCorrelationContext: function (responseHeader) {\r\n if (responseHeader) {\r\n var correlationId = CorrelationIdHelper.getCorrelationContextValue(responseHeader, RequestHeaders[1 /* eRequestHeaders.requestContextTargetKey */]);\r\n if (correlationId && correlationId !== CorrelationIdHelper.correlationIdPrefix) {\r\n return correlationId;\r\n }\r\n }\r\n },\r\n /**\r\n * Gets key from correlation response header\r\n */\r\n getCorrelationContextValue: function (responseHeader, key) {\r\n if (responseHeader) {\r\n var keyValues = responseHeader[_DYN_SPLIT /* @min:%2esplit */](\",\");\r\n for (var i = 0; i < keyValues[_DYN_LENGTH /* @min:%2elength */]; ++i) {\r\n var keyValue = keyValues[i][_DYN_SPLIT /* @min:%2esplit */](\"=\");\r\n if (keyValue[_DYN_LENGTH /* @min:%2elength */] === 2 && keyValue[0] === key) {\r\n return keyValue[1];\r\n }\r\n }\r\n }\r\n }\r\n};\r\nexport function AjaxHelperParseDependencyPath(logger, absoluteUrl, method, commandName) {\r\n var target, name = commandName, data = commandName;\r\n if (absoluteUrl && absoluteUrl[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n var parsedUrl = urlParseUrl(absoluteUrl);\r\n target = parsedUrl.host;\r\n if (!name) {\r\n if (parsedUrl[_DYN_PATHNAME /* @min:%2epathname */] != null) {\r\n var pathName = (parsedUrl.pathname[_DYN_LENGTH /* @min:%2elength */] === 0) ? \"/\" : parsedUrl[_DYN_PATHNAME /* @min:%2epathname */];\r\n if (pathName.charAt(0) !== \"/\") {\r\n pathName = \"/\" + pathName;\r\n }\r\n data = parsedUrl[_DYN_PATHNAME /* @min:%2epathname */];\r\n name = dataSanitizeString(logger, method ? method + \" \" + pathName : pathName);\r\n }\r\n else {\r\n name = dataSanitizeString(logger, absoluteUrl);\r\n }\r\n }\r\n }\r\n else {\r\n target = commandName;\r\n name = commandName;\r\n }\r\n return {\r\n target: target,\r\n name: name,\r\n data: data\r\n };\r\n}\r\nexport function dateTimeUtilsNow() {\r\n // returns the window or webworker performance object\r\n var perf = getPerformance();\r\n if (perf && perf.now && perf.timing) {\r\n var now = perf.now() + perf.timing.navigationStart;\r\n // Known issue with IE where this calculation can be negative, so if it is then ignore and fallback\r\n if (now > 0) {\r\n return now;\r\n }\r\n }\r\n return dateNow();\r\n}\r\nexport function dateTimeUtilsDuration(start, end) {\r\n var result = null;\r\n if (start !== 0 && end !== 0 && !isNullOrUndefined(start) && !isNullOrUndefined(end)) {\r\n result = end - start;\r\n }\r\n return result;\r\n}\r\n/**\r\n * A utility class that helps getting time related parameters\r\n */\r\nexport var DateTimeUtils = {\r\n Now: dateTimeUtilsNow,\r\n GetDuration: dateTimeUtilsDuration\r\n};\r\n/**\r\n * Creates a IDistributedTraceContext from an optional telemetryTrace\r\n * @param telemetryTrace - The telemetryTrace instance that is being wrapped\r\n * @param parentCtx - An optional parent distributed trace instance, almost always undefined as this scenario is only used in the case of multiple property handlers.\r\n * @returns A new IDistributedTraceContext instance that is backed by the telemetryTrace or temporary object\r\n */\r\nexport function createDistributedTraceContextFromTrace(telemetryTrace, parentCtx) {\r\n var trace = telemetryTrace || {};\r\n return {\r\n getName: function () {\r\n return trace[_DYN_NAME /* @min:%2ename */];\r\n },\r\n setName: function (newValue) {\r\n parentCtx && parentCtx.setName(newValue);\r\n trace[_DYN_NAME /* @min:%2ename */] = newValue;\r\n },\r\n getTraceId: function () {\r\n return trace.traceID;\r\n },\r\n setTraceId: function (newValue) {\r\n parentCtx && parentCtx.setTraceId(newValue);\r\n if (isValidTraceId(newValue)) {\r\n trace.traceID = newValue;\r\n }\r\n },\r\n getSpanId: function () {\r\n return trace.parentID;\r\n },\r\n setSpanId: function (newValue) {\r\n parentCtx && parentCtx.setSpanId(newValue);\r\n if (isValidSpanId(newValue)) {\r\n trace.parentID = newValue;\r\n }\r\n },\r\n getTraceFlags: function () {\r\n return trace.traceFlags;\r\n },\r\n setTraceFlags: function (newTraceFlags) {\r\n parentCtx && parentCtx.setTraceFlags(newTraceFlags);\r\n trace.traceFlags = newTraceFlags;\r\n }\r\n };\r\n}\r\n//# sourceMappingURL=Util.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { msToTimeSpan } from \"../HelperFuncs\";\r\nimport { AjaxHelperParseDependencyPath } from \"../Util\";\r\nimport { _DYN_DURATION, _DYN_MEASUREMENTS, _DYN_NAME, _DYN_PROPERTIES } from \"../__DynamicConstants\";\r\nimport { dataSanitizeMeasurements, dataSanitizeProperties, dataSanitizeString, dataSanitizeUrl } from \"./Common/DataSanitizer\";\r\nvar RemoteDependencyData = /** @class */ (function () {\r\n /**\r\n * Constructs a new instance of the RemoteDependencyData object\r\n */\r\n function RemoteDependencyData(logger, id, absoluteUrl, commandName, value, success, resultCode, method, requestAPI, correlationContext, properties, measurements) {\r\n if (requestAPI === void 0) { requestAPI = \"Ajax\"; }\r\n this.aiDataContract = {\r\n id: 1 /* FieldType.Required */,\r\n ver: 1 /* FieldType.Required */,\r\n name: 0 /* FieldType.Default */,\r\n resultCode: 0 /* FieldType.Default */,\r\n duration: 0 /* FieldType.Default */,\r\n success: 0 /* FieldType.Default */,\r\n data: 0 /* FieldType.Default */,\r\n target: 0 /* FieldType.Default */,\r\n type: 0 /* FieldType.Default */,\r\n properties: 0 /* FieldType.Default */,\r\n measurements: 0 /* FieldType.Default */,\r\n kind: 0 /* FieldType.Default */,\r\n value: 0 /* FieldType.Default */,\r\n count: 0 /* FieldType.Default */,\r\n min: 0 /* FieldType.Default */,\r\n max: 0 /* FieldType.Default */,\r\n stdDev: 0 /* FieldType.Default */,\r\n dependencyKind: 0 /* FieldType.Default */,\r\n dependencySource: 0 /* FieldType.Default */,\r\n commandName: 0 /* FieldType.Default */,\r\n dependencyTypeName: 0 /* FieldType.Default */\r\n };\r\n var _self = this;\r\n _self.ver = 2;\r\n _self.id = id;\r\n _self[_DYN_DURATION /* @min:%2eduration */] = msToTimeSpan(value);\r\n _self.success = success;\r\n _self.resultCode = resultCode + \"\";\r\n _self.type = dataSanitizeString(logger, requestAPI);\r\n var dependencyFields = AjaxHelperParseDependencyPath(logger, absoluteUrl, method, commandName);\r\n _self.data = dataSanitizeUrl(logger, commandName) || dependencyFields.data; // get a value from hosturl if commandName not available\r\n _self.target = dataSanitizeString(logger, dependencyFields.target);\r\n if (correlationContext) {\r\n _self.target = \"\".concat(_self.target, \" | \").concat(correlationContext);\r\n }\r\n _self[_DYN_NAME /* @min:%2ename */] = dataSanitizeString(logger, dependencyFields[_DYN_NAME /* @min:%2ename */]);\r\n _self[_DYN_PROPERTIES /* @min:%2eproperties */] = dataSanitizeProperties(logger, properties);\r\n _self[_DYN_MEASUREMENTS /* @min:%2emeasurements */] = dataSanitizeMeasurements(logger, measurements);\r\n }\r\n RemoteDependencyData.envelopeType = \"Microsoft.ApplicationInsights.{0}.RemoteDependency\";\r\n RemoteDependencyData.dataType = \"RemoteDependencyData\";\r\n return RemoteDependencyData;\r\n}());\r\nexport { RemoteDependencyData };\r\n//# sourceMappingURL=RemoteDependencyData.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { _DYN_COMPLETE, _DYN_GET_CTX, _DYN_IS_ASYNC, _DYN_IS_CHILD_EVT, _DYN_LENGTH, _DYN_NAME, _DYN_PUSH, _DYN_SET_CTX, _DYN_TIME } from \"../__DynamicConstants\";\r\nimport { dateNow, isArray, isFunction, objDefineAccessors } from \"./HelperFuncs\";\r\nimport { STR_GET_PERF_MGR, STR_PERF_EVENT } from \"./InternalConstants\";\r\nvar strExecutionContextKey = \"ctx\";\r\nvar strParentContextKey = \"ParentContextKey\";\r\nvar strChildrenContextKey = \"ChildrenContextKey\";\r\nvar _defaultPerfManager = null;\r\nvar PerfEvent = /** @class */ (function () {\r\n function PerfEvent(name, payloadDetails, isAsync) {\r\n var _self = this;\r\n var accessorDefined = false;\r\n _self.start = dateNow();\r\n _self[_DYN_NAME /* @min:%2ename */] = name;\r\n _self[_DYN_IS_ASYNC /* @min:%2eisAsync */] = isAsync;\r\n _self[_DYN_IS_CHILD_EVT /* @min:%2eisChildEvt */] = function () { return false; };\r\n if (isFunction(payloadDetails)) {\r\n // Create an accessor to minimize the potential performance impact of executing the payloadDetails callback\r\n var theDetails_1;\r\n accessorDefined = objDefineAccessors(_self, \"payload\", function () {\r\n // Delay the execution of the payloadDetails until needed\r\n if (!theDetails_1 && isFunction(payloadDetails)) {\r\n theDetails_1 = payloadDetails();\r\n // clear it out now so the referenced objects can be garbage collected\r\n payloadDetails = null;\r\n }\r\n return theDetails_1;\r\n });\r\n }\r\n _self[_DYN_GET_CTX /* @min:%2egetCtx */] = function (key) {\r\n if (key) {\r\n // The parent and child links are located directly on the object (for better viewing in the DebugPlugin)\r\n if (key === PerfEvent[strParentContextKey] || key === PerfEvent[strChildrenContextKey]) {\r\n return _self[key];\r\n }\r\n return (_self[strExecutionContextKey] || {})[key];\r\n }\r\n return null;\r\n };\r\n _self[_DYN_SET_CTX /* @min:%2esetCtx */] = function (key, value) {\r\n if (key) {\r\n // Put the parent and child links directly on the object (for better viewing in the DebugPlugin)\r\n if (key === PerfEvent[strParentContextKey]) {\r\n // Simple assumption, if we are setting a parent then we must be a child\r\n if (!_self[key]) {\r\n _self[_DYN_IS_CHILD_EVT /* @min:%2eisChildEvt */] = function () { return true; };\r\n }\r\n _self[key] = value;\r\n }\r\n else if (key === PerfEvent[strChildrenContextKey]) {\r\n _self[key] = value;\r\n }\r\n else {\r\n var ctx = _self[strExecutionContextKey] = _self[strExecutionContextKey] || {};\r\n ctx[key] = value;\r\n }\r\n }\r\n };\r\n _self[_DYN_COMPLETE /* @min:%2ecomplete */] = function () {\r\n var childTime = 0;\r\n var childEvts = _self[_DYN_GET_CTX /* @min:%2egetCtx */](PerfEvent[strChildrenContextKey]);\r\n if (isArray(childEvts)) {\r\n for (var lp = 0; lp < childEvts[_DYN_LENGTH /* @min:%2elength */]; lp++) {\r\n var childEvt = childEvts[lp];\r\n if (childEvt) {\r\n childTime += childEvt[_DYN_TIME /* @min:%2etime */];\r\n }\r\n }\r\n }\r\n _self[_DYN_TIME /* @min:%2etime */] = dateNow() - _self.start;\r\n _self.exTime = _self[_DYN_TIME /* @min:%2etime */] - childTime;\r\n _self[_DYN_COMPLETE /* @min:%2ecomplete */] = function () { };\r\n if (!accessorDefined && isFunction(payloadDetails)) {\r\n // If we couldn't define the property set during complete -- to minimize the perf impact until after the time\r\n _self.payload = payloadDetails();\r\n }\r\n };\r\n }\r\n PerfEvent.ParentContextKey = \"parent\";\r\n PerfEvent.ChildrenContextKey = \"childEvts\";\r\n return PerfEvent;\r\n}());\r\nexport { PerfEvent };\r\nvar PerfManager = /** @class */ (function () {\r\n function PerfManager(manager) {\r\n /**\r\n * General bucket used for execution context set and retrieved via setCtx() and getCtx.\r\n * Defined as private so it can be visualized via the DebugPlugin\r\n */\r\n this.ctx = {};\r\n dynamicProto(PerfManager, this, function (_self) {\r\n _self.create = function (src, payloadDetails, isAsync) {\r\n // TODO (@MSNev): at some point we will want to add additional configuration to \"select\" which events to instrument\r\n // for now this is just a simple do everything.\r\n return new PerfEvent(src, payloadDetails, isAsync);\r\n };\r\n _self.fire = function (perfEvent) {\r\n if (perfEvent) {\r\n perfEvent[_DYN_COMPLETE /* @min:%2ecomplete */]();\r\n if (manager && isFunction(manager[STR_PERF_EVENT /* @min:%2eperfEvent */])) {\r\n manager[STR_PERF_EVENT /* @min:%2eperfEvent */](perfEvent);\r\n }\r\n }\r\n };\r\n _self[_DYN_SET_CTX /* @min:%2esetCtx */] = function (key, value) {\r\n if (key) {\r\n var ctx = _self[strExecutionContextKey] = _self[strExecutionContextKey] || {};\r\n ctx[key] = value;\r\n }\r\n };\r\n _self[_DYN_GET_CTX /* @min:%2egetCtx */] = function (key) {\r\n return (_self[strExecutionContextKey] || {})[key];\r\n };\r\n });\r\n }\r\n /**\r\n * Create a new event and start timing, the manager may return null/undefined to indicate that it does not\r\n * want to monitor this source event.\r\n * @param src The source name of the event\r\n * @param payloadDetails - An optional callback function to fetch the payload details for the event.\r\n * @param isAsync - Is the event occurring from a async event\r\n */\r\n PerfManager.prototype.create = function (src, payload, isAsync) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n return null;\r\n };\r\n /**\r\n * Complete the perfEvent and fire any notifications.\r\n * @param perfEvent Fire the event which will also complete the passed event\r\n */\r\n PerfManager.prototype.fire = function (perfEvent) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Set an execution context value\r\n * @param key - The context key name\r\n * @param value - The value\r\n */\r\n PerfManager.prototype.setCtx = function (key, value) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Get the execution context value\r\n * @param key - The context key\r\n */\r\n PerfManager.prototype.getCtx = function (key) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n return PerfManager;\r\n}());\r\nexport { PerfManager };\r\nvar doPerfActiveKey = \"CoreUtils.doPerf\";\r\n/**\r\n * Helper function to wrap a function with a perf event\r\n * @param mgrSource - The Performance Manager or a Performance provider source (may be null)\r\n * @param getSource - The callback to create the source name for the event (if perf monitoring is enabled)\r\n * @param func - The function to call and measure\r\n * @param details - A function to return the payload details\r\n * @param isAsync - Is the event / function being call asynchronously or synchronously\r\n */\r\nexport function doPerf(mgrSource, getSource, func, details, isAsync) {\r\n if (mgrSource) {\r\n var perfMgr = mgrSource;\r\n if (perfMgr[STR_GET_PERF_MGR]) {\r\n // Looks like a perf manager provider object\r\n perfMgr = perfMgr[STR_GET_PERF_MGR]();\r\n }\r\n if (perfMgr) {\r\n var perfEvt = void 0;\r\n var currentActive = perfMgr[_DYN_GET_CTX /* @min:%2egetCtx */](doPerfActiveKey);\r\n try {\r\n perfEvt = perfMgr.create(getSource(), details, isAsync);\r\n if (perfEvt) {\r\n if (currentActive && perfEvt[_DYN_SET_CTX /* @min:%2esetCtx */]) {\r\n perfEvt[_DYN_SET_CTX /* @min:%2esetCtx */](PerfEvent[strParentContextKey], currentActive);\r\n if (currentActive[_DYN_GET_CTX /* @min:%2egetCtx */] && currentActive[_DYN_SET_CTX /* @min:%2esetCtx */]) {\r\n var children = currentActive[_DYN_GET_CTX /* @min:%2egetCtx */](PerfEvent[strChildrenContextKey]);\r\n if (!children) {\r\n children = [];\r\n currentActive[_DYN_SET_CTX /* @min:%2esetCtx */](PerfEvent[strChildrenContextKey], children);\r\n }\r\n children[_DYN_PUSH /* @min:%2epush */](perfEvt);\r\n }\r\n }\r\n // Set this event as the active event now\r\n perfMgr[_DYN_SET_CTX /* @min:%2esetCtx */](doPerfActiveKey, perfEvt);\r\n return func(perfEvt);\r\n }\r\n }\r\n catch (ex) {\r\n if (perfEvt && perfEvt[_DYN_SET_CTX /* @min:%2esetCtx */]) {\r\n perfEvt[_DYN_SET_CTX /* @min:%2esetCtx */](\"exception\", ex);\r\n }\r\n }\r\n finally {\r\n // fire the perf event\r\n if (perfEvt) {\r\n perfMgr.fire(perfEvt);\r\n }\r\n // Reset the active event to the previous value\r\n perfMgr[_DYN_SET_CTX /* @min:%2esetCtx */](doPerfActiveKey, currentActive);\r\n }\r\n }\r\n }\r\n return func();\r\n}\r\n/**\r\n * Set the global performance manager to use when there is no core instance or it has not been initialized yet.\r\n * @param perfManager - The IPerfManager instance to use when no performance manager is supplied.\r\n */\r\nexport function setGblPerfMgr(perfManager) {\r\n _defaultPerfManager = perfManager;\r\n}\r\n/**\r\n * Get the current global performance manager that will be used with no performance manager is supplied.\r\n * @returns - The current default manager\r\n */\r\nexport function getGblPerfMgr() {\r\n return _defaultPerfManager;\r\n}\r\n//# sourceMappingURL=PerfManager.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\"use strict\";\r\nimport { _DYN_CALL, _DYN_GET_NEXT, _DYN_GET_PLUGIN, _DYN_INITIALIZE, _DYN_IS_INITIALIZED, _DYN_LENGTH, _DYN_NAME, _DYN_PUSH, _DYN_SET_NEXT_PLUGIN, _DYN_SPAN_ID, _DYN_TEARDOWN, _DYN_TRACE_FLAGS, _DYN_TRACE_ID, _DYN__DO_TEARDOWN } from \"../__DynamicConstants\";\r\nimport { createElmNodeData } from \"./DataCacheHelper\";\r\nimport { arrForEach, isFunction } from \"./HelperFuncs\";\r\nimport { STR_CORE, STR_PRIORITY, STR_PROCESS_TELEMETRY } from \"./InternalConstants\";\r\nimport { isValidSpanId, isValidTraceId } from \"./W3cTraceParent\";\r\nvar pluginStateData = createElmNodeData(\"plugin\");\r\nexport function _getPluginState(plugin) {\r\n return pluginStateData.get(plugin, \"state\", {}, true);\r\n}\r\n/**\r\n * Initialize the queue of plugins\r\n * @param plugins - The array of plugins to initialize and setting of the next plugin\r\n * @param config The current config for the instance\r\n * @param core THe current core instance\r\n * @param extensions The extensions\r\n */\r\nexport function initializePlugins(processContext, extensions) {\r\n // Set the next plugin and identified the uninitialized plugins\r\n var initPlugins = [];\r\n var lastPlugin = null;\r\n var proxy = processContext[_DYN_GET_NEXT /* @min:%2egetNext */]();\r\n var pluginState;\r\n while (proxy) {\r\n var thePlugin = proxy[_DYN_GET_PLUGIN /* @min:%2egetPlugin */]();\r\n if (thePlugin) {\r\n if (lastPlugin &&\r\n isFunction(lastPlugin[_DYN_SET_NEXT_PLUGIN /* @min:%2esetNextPlugin */]) &&\r\n isFunction(thePlugin[STR_PROCESS_TELEMETRY /* @min:%2eprocessTelemetry */])) {\r\n // Set this plugin as the next for the previous one\r\n lastPlugin[_DYN_SET_NEXT_PLUGIN /* @min:%2esetNextPlugin */](thePlugin);\r\n }\r\n var isInitialized = false;\r\n if (isFunction(thePlugin[_DYN_IS_INITIALIZED /* @min:%2eisInitialized */])) {\r\n isInitialized = thePlugin[_DYN_IS_INITIALIZED /* @min:%2eisInitialized */]();\r\n }\r\n else {\r\n pluginState = _getPluginState(thePlugin);\r\n isInitialized = pluginState[_DYN_IS_INITIALIZED /* @min:%2eisInitialized */];\r\n }\r\n if (!isInitialized) {\r\n initPlugins[_DYN_PUSH /* @min:%2epush */](thePlugin);\r\n }\r\n lastPlugin = thePlugin;\r\n proxy = proxy[_DYN_GET_NEXT /* @min:%2egetNext */]();\r\n }\r\n }\r\n // Now initialize the plugins\r\n arrForEach(initPlugins, function (thePlugin) {\r\n var core = processContext[STR_CORE]();\r\n thePlugin[_DYN_INITIALIZE /* @min:%2einitialize */](processContext.getCfg(), core, extensions, processContext[_DYN_GET_NEXT /* @min:%2egetNext */]());\r\n pluginState = _getPluginState(thePlugin);\r\n // Only add the core to the state if the plugin didn't set it (doesn't extent from BaseTelemetryPlugin)\r\n if (!thePlugin[STR_CORE] && !pluginState[STR_CORE]) {\r\n pluginState[STR_CORE] = core;\r\n }\r\n pluginState[_DYN_IS_INITIALIZED /* @min:%2eisInitialized */] = true;\r\n delete pluginState[_DYN_TEARDOWN /* @min:%2eteardown */];\r\n });\r\n}\r\nexport function sortPlugins(plugins) {\r\n // Sort by priority\r\n return plugins.sort(function (extA, extB) {\r\n var result = 0;\r\n if (extB) {\r\n var bHasProcess = isFunction(extB[STR_PROCESS_TELEMETRY]);\r\n if (isFunction(extA[STR_PROCESS_TELEMETRY])) {\r\n result = bHasProcess ? extA[STR_PRIORITY] - extB[STR_PRIORITY] : 1;\r\n }\r\n else if (bHasProcess) {\r\n result = -1;\r\n }\r\n }\r\n else {\r\n result = extA ? 1 : -1;\r\n }\r\n return result;\r\n });\r\n // sort complete\r\n}\r\n/**\r\n * Teardown / Unload helper to perform teardown/unloading operations for the provided components synchronously or asynchronously, this will call any\r\n * _doTeardown() or _doUnload() functions on the provided components to allow them to finish removal.\r\n * @param components - The components you want to unload\r\n * @param unloadCtx - This is the context that should be used during unloading.\r\n * @param unloadState - The details / state of the unload process, it holds details like whether it should be unloaded synchronously or asynchronously and the reason for the unload.\r\n * @param asyncCallback - An optional callback that the plugin must call if it returns true to inform the caller that it has completed any async unload/teardown operations.\r\n * @returns boolean - true if the plugin has or will call asyncCallback, this allows the plugin to perform any asynchronous operations.\r\n */\r\nexport function unloadComponents(components, unloadCtx, unloadState, asyncCallback) {\r\n var idx = 0;\r\n function _doUnload() {\r\n while (idx < components[_DYN_LENGTH /* @min:%2elength */]) {\r\n var component = components[idx++];\r\n if (component) {\r\n var func = component._doUnload || component[_DYN__DO_TEARDOWN /* @min:%2e_doTeardown */];\r\n if (isFunction(func)) {\r\n if (func[_DYN_CALL /* @min:%2ecall */](component, unloadCtx, unloadState, _doUnload) === true) {\r\n return true;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return _doUnload();\r\n}\r\n/**\r\n * Creates a IDistributedTraceContext which optionally also \"sets\" the value on a parent\r\n * @param parentCtx - An optional parent distributed trace instance\r\n * @returns A new IDistributedTraceContext instance that uses an internal temporary object\r\n */\r\nexport function createDistributedTraceContext(parentCtx) {\r\n var trace = {};\r\n return {\r\n getName: function () {\r\n return trace[_DYN_NAME /* @min:%2ename */];\r\n },\r\n setName: function (newValue) {\r\n parentCtx && parentCtx.setName(newValue);\r\n trace[_DYN_NAME /* @min:%2ename */] = newValue;\r\n },\r\n getTraceId: function () {\r\n return trace[_DYN_TRACE_ID /* @min:%2etraceId */];\r\n },\r\n setTraceId: function (newValue) {\r\n parentCtx && parentCtx.setTraceId(newValue);\r\n if (isValidTraceId(newValue)) {\r\n trace[_DYN_TRACE_ID /* @min:%2etraceId */] = newValue;\r\n }\r\n },\r\n getSpanId: function () {\r\n return trace[_DYN_SPAN_ID /* @min:%2espanId */];\r\n },\r\n setSpanId: function (newValue) {\r\n parentCtx && parentCtx.setSpanId(newValue);\r\n if (isValidSpanId(newValue)) {\r\n trace[_DYN_SPAN_ID /* @min:%2espanId */] = newValue;\r\n }\r\n },\r\n getTraceFlags: function () {\r\n return trace[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */];\r\n },\r\n setTraceFlags: function (newTraceFlags) {\r\n parentCtx && parentCtx.setTraceFlags(newTraceFlags);\r\n trace[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */] = newTraceFlags;\r\n }\r\n };\r\n}\r\n//# sourceMappingURL=TelemetryHelpers.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\"use strict\";\r\nimport { _DYN_CALL, _DYN_CONFIG, _DYN_CREATE_NEW, _DYN_DIAG_LOG, _DYN_GET_NEXT, _DYN_GET_PLUGIN, _DYN_IDENTIFIER, _DYN_IS_ASYNC, _DYN_IS_INITIALIZED, _DYN_LENGTH, _DYN_LOGGER, _DYN_PROCESS_NEXT, _DYN_PUSH, _DYN_SET_NEXT_PLUGIN, _DYN_TEARDOWN, _DYN_UPDATE } from \"../__DynamicConstants\";\r\nimport { _throwInternal, safeGetLogger } from \"./DiagnosticLogger\";\r\nimport { dumpObj } from \"./EnvUtils\";\r\nimport { arrForEach, isArray, isFunction, isNullOrUndefined, isObject, isUndefined, objExtend, objForEachKey, objFreeze, objKeys, proxyFunctions } from \"./HelperFuncs\";\r\nimport { STR_CORE, STR_DISABLED, STR_EMPTY, STR_EXTENSION_CONFIG, STR_PRIORITY, STR_PROCESS_TELEMETRY } from \"./InternalConstants\";\r\nimport { doPerf } from \"./PerfManager\";\r\nimport { _getPluginState } from \"./TelemetryHelpers\";\r\nvar strTelemetryPluginChain = \"TelemetryPluginChain\";\r\nvar strHasRunFlags = \"_hasRun\";\r\nvar strGetTelCtx = \"_getTelCtx\";\r\nvar _chainId = 0;\r\nfunction _getNextProxyStart(proxy, core, startAt) {\r\n while (proxy) {\r\n if (proxy[_DYN_GET_PLUGIN /* @min:%2egetPlugin */]() === startAt) {\r\n return proxy;\r\n }\r\n proxy = proxy[_DYN_GET_NEXT /* @min:%2egetNext */]();\r\n }\r\n // This wasn't found in the existing chain so create an isolated one with just this plugin\r\n return createTelemetryProxyChain([startAt], core[_DYN_CONFIG /* @min:%2econfig */] || {}, core);\r\n}\r\n/**\r\n * @ignore\r\n * @param telemetryChain\r\n * @param config\r\n * @param core\r\n * @param startAt - Identifies the next plugin to execute, if null there is no \"next\" plugin and if undefined it should assume the start of the chain\r\n * @returns\r\n */\r\nfunction _createInternalContext(telemetryChain, config, core, startAt) {\r\n // We have a special case where we want to start execution from this specific plugin\r\n // or we simply reuse the existing telemetry plugin chain (normal execution case)\r\n var _nextProxy = null; // By Default set as no next plugin\r\n var _onComplete = [];\r\n if (startAt !== null) {\r\n // There is no next element (null) vs not defined (undefined) so use the full chain\r\n _nextProxy = startAt ? _getNextProxyStart(telemetryChain, core, startAt) : telemetryChain;\r\n }\r\n var context = {\r\n _next: _moveNext,\r\n ctx: {\r\n core: function () {\r\n return core;\r\n },\r\n diagLog: function () {\r\n return safeGetLogger(core, config);\r\n },\r\n getCfg: function () {\r\n return config;\r\n },\r\n getExtCfg: _getExtCfg,\r\n getConfig: _getConfig,\r\n hasNext: function () {\r\n return !!_nextProxy;\r\n },\r\n getNext: function () {\r\n return _nextProxy;\r\n },\r\n setNext: function (nextPlugin) {\r\n _nextProxy = nextPlugin;\r\n },\r\n iterate: _iterateChain,\r\n onComplete: _addOnComplete\r\n }\r\n };\r\n function _addOnComplete(onComplete, that) {\r\n var args = [];\r\n for (var _i = 2; _i < arguments.length; _i++) {\r\n args[_i - 2] = arguments[_i];\r\n }\r\n if (onComplete) {\r\n _onComplete[_DYN_PUSH /* @min:%2epush */]({\r\n func: onComplete,\r\n self: !isUndefined(that) ? that : context.ctx,\r\n args: args\r\n });\r\n }\r\n }\r\n function _moveNext() {\r\n var nextProxy = _nextProxy;\r\n // Automatically move to the next plugin\r\n _nextProxy = nextProxy ? nextProxy[_DYN_GET_NEXT /* @min:%2egetNext */]() : null;\r\n if (!nextProxy) {\r\n var onComplete = _onComplete;\r\n if (onComplete && onComplete[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n arrForEach(onComplete, function (completeDetails) {\r\n try {\r\n completeDetails.func[_DYN_CALL /* @min:%2ecall */](completeDetails.self, completeDetails.args);\r\n }\r\n catch (e) {\r\n _throwInternal(core[_DYN_LOGGER /* @min:%2elogger */], 2 /* eLoggingSeverity.WARNING */, 73 /* _eInternalMessageId.PluginException */, \"Unexpected Exception during onComplete - \" + dumpObj(e));\r\n }\r\n });\r\n _onComplete = [];\r\n }\r\n }\r\n return nextProxy;\r\n }\r\n function _getExtCfg(identifier, defaultValue, mergeDefault) {\r\n if (defaultValue === void 0) { defaultValue = {}; }\r\n if (mergeDefault === void 0) { mergeDefault = 0 /* GetExtCfgMergeType.None */; }\r\n var theConfig;\r\n if (config) {\r\n var extConfig = config[STR_EXTENSION_CONFIG /* @min:%2eextensionConfig */];\r\n if (extConfig && identifier) {\r\n theConfig = extConfig[identifier];\r\n }\r\n }\r\n if (!theConfig) {\r\n // Just use the defaults\r\n theConfig = defaultValue;\r\n }\r\n else if (isObject(defaultValue)) {\r\n if (mergeDefault !== 0 /* GetExtCfgMergeType.None */) {\r\n // Merge the defaults and configured values\r\n var newConfig_1 = objExtend(true, defaultValue, theConfig);\r\n if (config && mergeDefault === 2 /* GetExtCfgMergeType.MergeDefaultFromRootOrDefault */) {\r\n // Enumerate over the defaultValues and if not already populated attempt to\r\n // find a value from the root config\r\n objForEachKey(defaultValue, function (field) {\r\n // for each unspecified field, set the default value\r\n if (isNullOrUndefined(newConfig_1[field])) {\r\n var cfgValue = config[field];\r\n if (!isNullOrUndefined(cfgValue)) {\r\n newConfig_1[field] = cfgValue;\r\n }\r\n }\r\n });\r\n }\r\n theConfig = newConfig_1;\r\n }\r\n }\r\n return theConfig;\r\n }\r\n function _getConfig(identifier, field, defaultValue) {\r\n if (defaultValue === void 0) { defaultValue = false; }\r\n var theValue;\r\n var extConfig = _getExtCfg(identifier, null);\r\n if (extConfig && !isNullOrUndefined(extConfig[field])) {\r\n theValue = extConfig[field];\r\n }\r\n else if (config && !isNullOrUndefined(config[field])) {\r\n theValue = config[field];\r\n }\r\n return !isNullOrUndefined(theValue) ? theValue : defaultValue;\r\n }\r\n function _iterateChain(cb) {\r\n // Keep processing until we reach the end of the chain\r\n var nextPlugin;\r\n while (!!(nextPlugin = context._next())) {\r\n var plugin = nextPlugin[_DYN_GET_PLUGIN /* @min:%2egetPlugin */]();\r\n if (plugin) {\r\n // callback with the current on\r\n cb(plugin);\r\n }\r\n }\r\n }\r\n return context;\r\n}\r\n/**\r\n * Creates a new Telemetry Item context with the current config, core and plugin execution chain\r\n * @param plugins - The plugin instances that will be executed\r\n * @param config - The current config\r\n * @param core - The current core instance\r\n * @param startAt - Identifies the next plugin to execute, if null there is no \"next\" plugin and if undefined it should assume the start of the chain\r\n */\r\nexport function createProcessTelemetryContext(telemetryChain, config, core, startAt) {\r\n var internalContext = _createInternalContext(telemetryChain, config, core, startAt);\r\n var context = internalContext.ctx;\r\n function _processNext(env) {\r\n var nextPlugin = internalContext._next();\r\n // Run the next plugin which will call \"processNext()\"\r\n nextPlugin && nextPlugin[STR_PROCESS_TELEMETRY /* @min:%2eprocessTelemetry */](env, context);\r\n return !nextPlugin;\r\n }\r\n function _createNew(plugins, startAt) {\r\n if (plugins === void 0) { plugins = null; }\r\n if (isArray(plugins)) {\r\n plugins = createTelemetryProxyChain(plugins, config, core, startAt);\r\n }\r\n return createProcessTelemetryContext(plugins || context[_DYN_GET_NEXT /* @min:%2egetNext */](), config, core, startAt);\r\n }\r\n context[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */] = _processNext;\r\n context[_DYN_CREATE_NEW /* @min:%2ecreateNew */] = _createNew;\r\n return context;\r\n}\r\n/**\r\n * Creates a new Telemetry Item context with the current config, core and plugin execution chain for handling the unloading of the chain\r\n * @param plugins - The plugin instances that will be executed\r\n * @param config - The current config\r\n * @param core - The current core instance\r\n * @param startAt - Identifies the next plugin to execute, if null there is no \"next\" plugin and if undefined it should assume the start of the chain\r\n */\r\nexport function createProcessTelemetryUnloadContext(telemetryChain, core, startAt) {\r\n var config = core[_DYN_CONFIG /* @min:%2econfig */] || {};\r\n var internalContext = _createInternalContext(telemetryChain, config, core, startAt);\r\n var context = internalContext.ctx;\r\n function _processNext(unloadState) {\r\n var nextPlugin = internalContext._next();\r\n nextPlugin && nextPlugin.unload(context, unloadState);\r\n return !nextPlugin;\r\n }\r\n function _createNew(plugins, startAt) {\r\n if (plugins === void 0) { plugins = null; }\r\n if (isArray(plugins)) {\r\n plugins = createTelemetryProxyChain(plugins, config, core, startAt);\r\n }\r\n return createProcessTelemetryUnloadContext(plugins || context[_DYN_GET_NEXT /* @min:%2egetNext */](), core, startAt);\r\n }\r\n context[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */] = _processNext;\r\n context[_DYN_CREATE_NEW /* @min:%2ecreateNew */] = _createNew;\r\n return context;\r\n}\r\n/**\r\n * Creates a new Telemetry Item context with the current config, core and plugin execution chain for updating the configuration\r\n * @param plugins - The plugin instances that will be executed\r\n * @param config - The current config\r\n * @param core - The current core instance\r\n * @param startAt - Identifies the next plugin to execute, if null there is no \"next\" plugin and if undefined it should assume the start of the chain\r\n */\r\nexport function createProcessTelemetryUpdateContext(telemetryChain, core, startAt) {\r\n var config = core[_DYN_CONFIG /* @min:%2econfig */] || {};\r\n var internalContext = _createInternalContext(telemetryChain, config, core, startAt);\r\n var context = internalContext.ctx;\r\n function _processNext(updateState) {\r\n return context.iterate(function (plugin) {\r\n if (isFunction(plugin[_DYN_UPDATE /* @min:%2eupdate */])) {\r\n plugin[_DYN_UPDATE /* @min:%2eupdate */](context, updateState);\r\n }\r\n });\r\n }\r\n function _createNew(plugins, startAt) {\r\n if (plugins === void 0) { plugins = null; }\r\n if (isArray(plugins)) {\r\n plugins = createTelemetryProxyChain(plugins, config, core, startAt);\r\n }\r\n return createProcessTelemetryUpdateContext(plugins || context[_DYN_GET_NEXT /* @min:%2egetNext */](), core, startAt);\r\n }\r\n context[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */] = _processNext;\r\n context[_DYN_CREATE_NEW /* @min:%2ecreateNew */] = _createNew;\r\n return context;\r\n}\r\n/**\r\n * Creates an execution chain from the array of plugins\r\n * @param plugins - The array of plugins that will be executed in this order\r\n * @param defItemCtx - The default execution context to use when no telemetry context is passed to processTelemetry(), this\r\n * should be for legacy plugins only. Currently, only used for passing the current core instance and to provide better error\r\n * reporting (hasRun) when errors occur.\r\n */\r\nexport function createTelemetryProxyChain(plugins, config, core, startAt) {\r\n var firstProxy = null;\r\n var add = startAt ? false : true;\r\n if (isArray(plugins) && plugins[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n // Create the proxies and wire up the next plugin chain\r\n var lastProxy_1 = null;\r\n arrForEach(plugins, function (thePlugin) {\r\n if (!add && startAt === thePlugin) {\r\n add = true;\r\n }\r\n if (add && thePlugin && isFunction(thePlugin[STR_PROCESS_TELEMETRY /* @min:%2eprocessTelemetry */])) {\r\n // Only add plugins that are processors\r\n var newProxy = createTelemetryPluginProxy(thePlugin, config, core);\r\n if (!firstProxy) {\r\n firstProxy = newProxy;\r\n }\r\n if (lastProxy_1) {\r\n // Set this new proxy as the next for the previous one\r\n lastProxy_1._setNext(newProxy);\r\n }\r\n lastProxy_1 = newProxy;\r\n }\r\n });\r\n }\r\n if (startAt && !firstProxy) {\r\n // Special case where the \"startAt\" was not in the original list of plugins\r\n return createTelemetryProxyChain([startAt], config, core);\r\n }\r\n return firstProxy;\r\n}\r\n/**\r\n * Create the processing telemetry proxy instance, the proxy is used to abstract the current plugin to allow monitoring and\r\n * execution plugins while passing around the dynamic execution state (IProcessTelemetryContext), the proxy instance no longer\r\n * contains any execution state and can be reused between requests (this was not the case for 2.7.2 and earlier with the\r\n * TelemetryPluginChain class).\r\n * @param plugin - The plugin instance to proxy\r\n * @param config - The default execution context to use when no telemetry context is passed to processTelemetry(), this\r\n * should be for legacy plugins only. Currently, only used for passing the current core instance and to provide better error\r\n * reporting (hasRun) when errors occur.\r\n * @returns\r\n */\r\nexport function createTelemetryPluginProxy(plugin, config, core) {\r\n var nextProxy = null;\r\n var hasProcessTelemetry = isFunction(plugin[STR_PROCESS_TELEMETRY /* @min:%2eprocessTelemetry */]);\r\n var hasSetNext = isFunction(plugin[_DYN_SET_NEXT_PLUGIN /* @min:%2esetNextPlugin */]);\r\n var chainId;\r\n if (plugin) {\r\n chainId = plugin[_DYN_IDENTIFIER /* @min:%2eidentifier */] + \"-\" + plugin[STR_PRIORITY /* @min:%2epriority */] + \"-\" + _chainId++;\r\n }\r\n else {\r\n chainId = \"Unknown-0-\" + _chainId++;\r\n }\r\n var proxyChain = {\r\n getPlugin: function () {\r\n return plugin;\r\n },\r\n getNext: function () {\r\n return nextProxy;\r\n },\r\n processTelemetry: _processTelemetry,\r\n unload: _unloadPlugin,\r\n update: _updatePlugin,\r\n _id: chainId,\r\n _setNext: function (nextPlugin) {\r\n nextProxy = nextPlugin;\r\n }\r\n };\r\n function _getTelCtx() {\r\n var itemCtx;\r\n // Looks like a plugin didn't pass the (optional) context, so create a new one\r\n if (plugin && isFunction(plugin[strGetTelCtx])) {\r\n // This plugin extends from the BaseTelemetryPlugin so lets use it\r\n itemCtx = plugin[strGetTelCtx]();\r\n }\r\n if (!itemCtx) {\r\n // Create a temporary one\r\n itemCtx = createProcessTelemetryContext(proxyChain, config, core);\r\n }\r\n return itemCtx;\r\n }\r\n function _processChain(itemCtx, processPluginFn, name, details, isAsync) {\r\n var hasRun = false;\r\n var identifier = plugin ? plugin[_DYN_IDENTIFIER /* @min:%2eidentifier */] : strTelemetryPluginChain;\r\n var hasRunContext = itemCtx[strHasRunFlags];\r\n if (!hasRunContext) {\r\n // Assign and populate\r\n hasRunContext = itemCtx[strHasRunFlags] = {};\r\n }\r\n // Ensure that we keep the context in sync\r\n itemCtx.setNext(nextProxy);\r\n if (plugin) {\r\n doPerf(itemCtx[STR_CORE /* @min:%2ecore */](), function () { return identifier + \":\" + name; }, function () {\r\n // Mark this component as having run\r\n hasRunContext[chainId] = true;\r\n try {\r\n // Set a flag on the next plugin so we know if it was attempted to be executed\r\n var nextId = nextProxy ? nextProxy._id : STR_EMPTY;\r\n if (nextId) {\r\n hasRunContext[nextId] = false;\r\n }\r\n hasRun = processPluginFn(itemCtx);\r\n }\r\n catch (error) {\r\n var hasNextRun = nextProxy ? hasRunContext[nextProxy._id] : true;\r\n if (hasNextRun) {\r\n // The next plugin after us has already run so set this one as complete\r\n hasRun = true;\r\n }\r\n if (!nextProxy || !hasNextRun) {\r\n // Either we have no next plugin or the current one did not attempt to call the next plugin\r\n // Which means the current one is the root of the failure so log/report this failure\r\n _throwInternal(itemCtx[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 1 /* eLoggingSeverity.CRITICAL */, 73 /* _eInternalMessageId.PluginException */, \"Plugin [\" + identifier + \"] failed during \" + name + \" - \" + dumpObj(error) + \", run flags: \" + dumpObj(hasRunContext));\r\n }\r\n }\r\n }, details, isAsync);\r\n }\r\n return hasRun;\r\n }\r\n function _processTelemetry(env, itemCtx) {\r\n itemCtx = itemCtx || _getTelCtx();\r\n function _callProcessTelemetry(itemCtx) {\r\n if (!plugin || !hasProcessTelemetry) {\r\n return false;\r\n }\r\n var pluginState = _getPluginState(plugin);\r\n if (pluginState[_DYN_TEARDOWN /* @min:%2eteardown */] || pluginState[STR_DISABLED]) {\r\n return false;\r\n }\r\n // Ensure that we keep the context in sync (for processNext()), just in case a plugin\r\n // doesn't calls processTelemetry() instead of itemContext.processNext() or some\r\n // other form of error occurred\r\n if (hasSetNext) {\r\n // Backward compatibility setting the next plugin on the instance\r\n plugin[_DYN_SET_NEXT_PLUGIN /* @min:%2esetNextPlugin */](nextProxy);\r\n }\r\n plugin[STR_PROCESS_TELEMETRY /* @min:%2eprocessTelemetry */](env, itemCtx);\r\n // Process Telemetry is expected to call itemCtx.processNext() or nextPlugin.processTelemetry()\r\n return true;\r\n }\r\n if (!_processChain(itemCtx, _callProcessTelemetry, \"processTelemetry\", function () { return ({ item: env }); }, !(env.sync))) {\r\n // The underlying plugin is either not defined, not enabled or does not have a processTelemetry implementation\r\n // so we still want the next plugin to be executed.\r\n itemCtx[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](env);\r\n }\r\n }\r\n function _unloadPlugin(unloadCtx, unloadState) {\r\n function _callTeardown() {\r\n // Setting default of hasRun as false so the proxyProcessFn() is called as teardown() doesn't have to exist or call unloadNext().\r\n var hasRun = false;\r\n if (plugin) {\r\n var pluginState = _getPluginState(plugin);\r\n var pluginCore = plugin[STR_CORE] || pluginState[STR_CORE /* @min:%2ecore */];\r\n // Only teardown the plugin if it was initialized by the current core (i.e. It's not a shared plugin)\r\n if (plugin && (!pluginCore || pluginCore === unloadCtx.core()) && !pluginState[_DYN_TEARDOWN /* @min:%2eteardown */]) {\r\n // Handle plugins that don't extend from the BaseTelemetryPlugin\r\n pluginState[STR_CORE /* @min:%2ecore */] = null;\r\n pluginState[_DYN_TEARDOWN /* @min:%2eteardown */] = true;\r\n pluginState[_DYN_IS_INITIALIZED /* @min:%2eisInitialized */] = false;\r\n if (plugin[_DYN_TEARDOWN /* @min:%2eteardown */] && plugin[_DYN_TEARDOWN /* @min:%2eteardown */](unloadCtx, unloadState) === true) {\r\n // plugin told us that it was going to (or has) call unloadCtx.processNext()\r\n hasRun = true;\r\n }\r\n }\r\n }\r\n return hasRun;\r\n }\r\n if (!_processChain(unloadCtx, _callTeardown, \"unload\", function () { }, unloadState[_DYN_IS_ASYNC /* @min:%2eisAsync */])) {\r\n // Only called if we hasRun was not true\r\n unloadCtx[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](unloadState);\r\n }\r\n }\r\n function _updatePlugin(updateCtx, updateState) {\r\n function _callUpdate() {\r\n // Setting default of hasRun as false so the proxyProcessFn() is called as teardown() doesn't have to exist or call unloadNext().\r\n var hasRun = false;\r\n if (plugin) {\r\n var pluginState = _getPluginState(plugin);\r\n var pluginCore = plugin[STR_CORE] || pluginState[STR_CORE /* @min:%2ecore */];\r\n // Only update the plugin if it was initialized by the current core (i.e. It's not a shared plugin)\r\n if (plugin && (!pluginCore || pluginCore === updateCtx.core()) && !pluginState[_DYN_TEARDOWN /* @min:%2eteardown */]) {\r\n if (plugin[_DYN_UPDATE /* @min:%2eupdate */] && plugin[_DYN_UPDATE /* @min:%2eupdate */](updateCtx, updateState) === true) {\r\n // plugin told us that it was going to (or has) call unloadCtx.processNext()\r\n hasRun = true;\r\n }\r\n }\r\n }\r\n return hasRun;\r\n }\r\n if (!_processChain(updateCtx, _callUpdate, \"update\", function () { }, false)) {\r\n // Only called if we hasRun was not true\r\n updateCtx[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](updateState);\r\n }\r\n }\r\n return objFreeze(proxyChain);\r\n}\r\n/**\r\n * This class will be removed!\r\n * @deprecated use createProcessTelemetryContext() instead\r\n */\r\nvar ProcessTelemetryContext = /** @class */ (function () {\r\n /**\r\n * Creates a new Telemetry Item context with the current config, core and plugin execution chain\r\n * @param plugins - The plugin instances that will be executed\r\n * @param config - The current config\r\n * @param core - The current core instance\r\n */\r\n function ProcessTelemetryContext(pluginChain, config, core, startAt) {\r\n var _self = this;\r\n var context = createProcessTelemetryContext(pluginChain, config, core, startAt);\r\n // Proxy all functions of the context to this object\r\n proxyFunctions(_self, context, objKeys(context));\r\n }\r\n return ProcessTelemetryContext;\r\n}());\r\nexport { ProcessTelemetryContext };\r\n//# sourceMappingURL=ProcessTelemetryContext.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { strShimFunction, strShimPrototype } from \"@microsoft/applicationinsights-shims\";\r\nimport { _DYN_APPLY, _DYN_LENGTH, _DYN_NAME, _DYN_PUSH, _DYN_SPLICE } from \"../__DynamicConstants\";\r\nimport { getGlobalInst } from \"./EnvUtils\";\r\nimport { _getObjProto, hasOwnProperty } from \"./HelperFuncs\";\r\nvar aiInstrumentHooks = \"_aiHooks\";\r\nvar cbNames = [\r\n \"req\", \"rsp\", \"hkErr\", \"fnErr\"\r\n];\r\n/** @ignore */\r\nfunction _arrLoop(arr, fn) {\r\n if (arr) {\r\n for (var lp = 0; lp < arr[_DYN_LENGTH /* @min:%2elength */]; lp++) {\r\n if (fn(arr[lp], lp)) {\r\n break;\r\n }\r\n }\r\n }\r\n}\r\n/** @ignore */\r\nfunction _doCallbacks(hooks, callDetails, cbArgs, hookCtx, type) {\r\n if (type >= 0 /* CallbackType.Request */ && type <= 2 /* CallbackType.HookError */) {\r\n _arrLoop(hooks, function (hook, idx) {\r\n var cbks = hook.cbks;\r\n var cb = cbks[cbNames[type]];\r\n if (cb) {\r\n // Set the specific hook context implementation using a lazy creation pattern\r\n callDetails.ctx = function () {\r\n var ctx = hookCtx[idx] = (hookCtx[idx] || {});\r\n return ctx;\r\n };\r\n try {\r\n cb[_DYN_APPLY /* @min:%2eapply */](callDetails.inst, cbArgs);\r\n }\r\n catch (err) {\r\n var orgEx = callDetails.err;\r\n try {\r\n // Report Hook error via the callback\r\n var hookErrorCb = cbks[cbNames[2 /* CallbackType.HookError */]];\r\n if (hookErrorCb) {\r\n callDetails.err = err;\r\n hookErrorCb[_DYN_APPLY /* @min:%2eapply */](callDetails.inst, cbArgs);\r\n }\r\n }\r\n catch (e) {\r\n // Not much we can do here -- swallowing the exception to avoid crashing the hosting app\r\n }\r\n finally {\r\n // restore the original exception (if any)\r\n callDetails.err = orgEx;\r\n }\r\n }\r\n }\r\n });\r\n }\r\n}\r\n/** @ignore */\r\nfunction _createFunctionHook(aiHook) {\r\n // Define a temporary method that queues-up a the real method call\r\n return function () {\r\n var _a;\r\n var funcThis = this;\r\n // Capture the original arguments passed to the method\r\n var orgArgs = arguments;\r\n var hooks = aiHook.h;\r\n var funcArgs = (_a = {},\r\n _a[_DYN_NAME /* @min:name */] = aiHook.n,\r\n _a.inst = funcThis,\r\n _a.ctx = null,\r\n _a.set = _replaceArg,\r\n _a);\r\n var hookCtx = [];\r\n var cbArgs = _createArgs([funcArgs], orgArgs);\r\n funcArgs.evt = getGlobalInst(\"event\");\r\n function _createArgs(target, theArgs) {\r\n _arrLoop(theArgs, function (arg) {\r\n target[_DYN_PUSH /* @min:%2epush */](arg);\r\n });\r\n return target;\r\n }\r\n function _replaceArg(idx, value) {\r\n orgArgs = _createArgs([], orgArgs);\r\n orgArgs[idx] = value;\r\n cbArgs = _createArgs([funcArgs], orgArgs);\r\n }\r\n // Call the pre-request hooks\r\n _doCallbacks(hooks, funcArgs, cbArgs, hookCtx, 0 /* CallbackType.Request */);\r\n // Call the original function was called\r\n var theFunc = aiHook.f;\r\n if (theFunc) {\r\n try {\r\n funcArgs.rslt = theFunc[_DYN_APPLY /* @min:%2eapply */](funcThis, orgArgs);\r\n }\r\n catch (err) {\r\n // Report the request callback\r\n funcArgs.err = err;\r\n _doCallbacks(hooks, funcArgs, cbArgs, hookCtx, 3 /* CallbackType.FunctionError */);\r\n // rethrow the original exception so anyone listening for it can catch the exception\r\n throw err;\r\n }\r\n }\r\n // Call the post-request hooks\r\n _doCallbacks(hooks, funcArgs, cbArgs, hookCtx, 1 /* CallbackType.Response */);\r\n return funcArgs.rslt;\r\n };\r\n}\r\n/** @ignore */\r\nfunction _getOwner(target, name, checkPrototype, checkParentProto) {\r\n var owner = null;\r\n if (target) {\r\n if (hasOwnProperty(target, name)) {\r\n owner = target;\r\n }\r\n else if (checkPrototype) {\r\n owner = _getOwner(_getObjProto(target), name, checkParentProto, false);\r\n }\r\n }\r\n return owner;\r\n}\r\n/**\r\n * Intercept the named prototype functions for the target class / object\r\n * @param target - The target object\r\n * @param funcName - The function name\r\n * @param callbacks - The callbacks to configure and call whenever the function is called\r\n */\r\nexport function InstrumentProto(target, funcName, callbacks) {\r\n if (target) {\r\n return InstrumentFunc(target[strShimPrototype], funcName, callbacks, false);\r\n }\r\n return null;\r\n}\r\n/**\r\n * Intercept the named prototype functions for the target class / object\r\n * @param target - The target object\r\n * @param funcNames - The function names to intercept and call\r\n * @param callbacks - The callbacks to configure and call whenever the function is called\r\n */\r\nexport function InstrumentProtos(target, funcNames, callbacks) {\r\n if (target) {\r\n return InstrumentFuncs(target[strShimPrototype], funcNames, callbacks, false);\r\n }\r\n return null;\r\n}\r\nfunction _createInstrumentHook(owner, funcName, fn, callbacks) {\r\n var aiHook = fn && fn[aiInstrumentHooks];\r\n if (!aiHook) {\r\n // Only hook the function once\r\n aiHook = {\r\n i: 0,\r\n n: funcName,\r\n f: fn,\r\n h: []\r\n };\r\n // Override (hook) the original function\r\n var newFunc = _createFunctionHook(aiHook);\r\n newFunc[aiInstrumentHooks] = aiHook; // Tag and store the function hooks\r\n owner[funcName] = newFunc;\r\n }\r\n var theHook = {\r\n // tslint:disable:object-literal-shorthand\r\n id: aiHook.i,\r\n cbks: callbacks,\r\n rm: function () {\r\n // DO NOT Use () => { shorthand for the function as the this gets replaced\r\n // with the outer this and not the this for theHook instance.\r\n var id = this.id;\r\n _arrLoop(aiHook.h, function (hook, idx) {\r\n if (hook.id === id) {\r\n aiHook.h[_DYN_SPLICE /* @min:%2esplice */](idx, 1);\r\n return 1;\r\n }\r\n });\r\n }\r\n // tslint:enable:object-literal-shorthand\r\n };\r\n aiHook.i++;\r\n aiHook.h[_DYN_PUSH /* @min:%2epush */](theHook);\r\n return theHook;\r\n}\r\n/**\r\n * Intercept the named prototype functions for the target class / object\r\n * @param target - The target object\r\n * @param funcName - The function name\r\n * @param callbacks - The callbacks to configure and call whenever the function is called\r\n * @param checkPrototype - If the function doesn't exist on the target should it attempt to hook the prototype function\r\n * @param checkParentProto - If the function doesn't exist on the target or it's prototype should it attempt to hook the parent's prototype\r\n */\r\nexport function InstrumentFunc(target, funcName, callbacks, checkPrototype, checkParentProto) {\r\n if (checkPrototype === void 0) { checkPrototype = true; }\r\n if (target && funcName && callbacks) {\r\n var owner = _getOwner(target, funcName, checkPrototype, checkParentProto);\r\n if (owner) {\r\n var fn = owner[funcName];\r\n if (typeof fn === strShimFunction) {\r\n return _createInstrumentHook(owner, funcName, fn, callbacks);\r\n }\r\n }\r\n }\r\n return null;\r\n}\r\n/**\r\n * Intercept the named functions for the target class / object\r\n * @param target - The target object\r\n * @param funcNames - The function names to intercept and call\r\n * @param callbacks - The callbacks to configure and call whenever the function is called\r\n * @param checkPrototype - If the function doesn't exist on the target should it attempt to hook the prototype function\r\n * @param checkParentProto - If the function doesn't exist on the target or it's prototype should it attempt to hook the parent's prototype\r\n */\r\nexport function InstrumentFuncs(target, funcNames, callbacks, checkPrototype, checkParentProto) {\r\n if (checkPrototype === void 0) { checkPrototype = true; }\r\n var hooks = null;\r\n _arrLoop(funcNames, function (funcName) {\r\n var hook = InstrumentFunc(target, funcName, callbacks, checkPrototype, checkParentProto);\r\n if (hook) {\r\n if (!hooks) {\r\n hooks = [];\r\n }\r\n hooks[_DYN_PUSH /* @min:%2epush */](hook);\r\n }\r\n });\r\n return hooks;\r\n}\r\n/**\r\n * Add an instrumentation hook to the provided named \"event\" for the target class / object, this doesn't check whether the\r\n * named \"event\" is in fact a function and just assigns the instrumentation hook to the target[evtName]\r\n * @param target - The target object\r\n * @param evtName - The name of the event\r\n * @param callbacks - The callbacks to configure and call whenever the function is called\r\n * @param checkPrototype - If the function doesn't exist on the target should it attempt to hook the prototype function\r\n * @param checkParentProto - If the function doesn't exist on the target or it's prototype should it attempt to hook the parent's prototype\r\n */\r\nexport function InstrumentEvent(target, evtName, callbacks, checkPrototype, checkParentProto) {\r\n if (target && evtName && callbacks) {\r\n var owner = _getOwner(target, evtName, checkPrototype, checkParentProto) || target;\r\n if (owner) {\r\n return _createInstrumentHook(owner, evtName, owner[evtName], callbacks);\r\n }\r\n }\r\n return null;\r\n}\r\n//# sourceMappingURL=InstrumentHooks.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { _DYN_DIAG_LOG, _DYN_PUSH } from \"../__DynamicConstants\";\r\nimport { _throwInternal } from \"./DiagnosticLogger\";\r\nimport { dumpObj } from \"./EnvUtils\";\r\nimport { arrForEach } from \"./HelperFuncs\";\r\nexport function createUnloadHandlerContainer() {\r\n var handlers = [];\r\n function _addHandler(handler) {\r\n if (handler) {\r\n handlers[_DYN_PUSH /* @min:%2epush */](handler);\r\n }\r\n }\r\n function _runHandlers(unloadCtx, unloadState) {\r\n arrForEach(handlers, function (handler) {\r\n try {\r\n handler(unloadCtx, unloadState);\r\n }\r\n catch (e) {\r\n _throwInternal(unloadCtx[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 2 /* eLoggingSeverity.WARNING */, 73 /* _eInternalMessageId.PluginException */, \"Unexpected error calling unload handler - \" + dumpObj(e));\r\n }\r\n });\r\n handlers = [];\r\n }\r\n return {\r\n add: _addHandler,\r\n run: _runHandlers\r\n };\r\n}\r\n//# sourceMappingURL=UnloadHandlerContainer.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\"use strict\";\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { _DYN_CREATE_NEW, _DYN_DIAG_LOG, _DYN_GET_NEXT, _DYN_GET_PROCESS_TEL_CONT0, _DYN_INITIALIZE, _DYN_IS_ASYNC, _DYN_IS_INITIALIZED, _DYN_PROCESS_NEXT, _DYN_PUSH, _DYN_SET_NEXT_PLUGIN, _DYN_TEARDOWN, _DYN_UPDATE, _DYN__DO_TEARDOWN } from \"../__DynamicConstants\";\r\nimport { arrForEach, isArray, isFunction, isNullOrUndefined, proxyFunctionAs, setValue } from \"./HelperFuncs\";\r\nimport { STR_CORE, STR_EXTENSION_CONFIG, STR_PROCESS_TELEMETRY } from \"./InternalConstants\";\r\nimport { createProcessTelemetryContext, createProcessTelemetryUnloadContext, createProcessTelemetryUpdateContext } from \"./ProcessTelemetryContext\";\r\nimport { createUnloadHandlerContainer } from \"./UnloadHandlerContainer\";\r\nvar strGetPlugin = \"getPlugin\";\r\n/**\r\n * BaseTelemetryPlugin provides a basic implementation of the ITelemetryPlugin interface so that plugins\r\n * can avoid implementation the same set of boiler plate code as well as provide a base\r\n * implementation so that new default implementations can be added without breaking all plugins.\r\n */\r\nvar BaseTelemetryPlugin = /** @class */ (function () {\r\n function BaseTelemetryPlugin() {\r\n var _self = this; // Setting _self here as it's used outside of the dynamicProto as well\r\n // NOTE!: DON'T set default values here, instead set them in the _initDefaults() function as it is also called during teardown()\r\n var _isinitialized;\r\n var _rootCtx; // Used as the root context, holding the current config and initialized core\r\n var _nextPlugin; // Used for backward compatibility where plugins don't call the main pipeline\r\n var _unloadHandlerContainer;\r\n var _hooks;\r\n _initDefaults();\r\n dynamicProto(BaseTelemetryPlugin, _self, function (_self) {\r\n _self[_DYN_INITIALIZE /* @min:%2einitialize */] = function (config, core, extensions, pluginChain) {\r\n _setDefaults(config, core, pluginChain);\r\n _isinitialized = true;\r\n };\r\n _self[_DYN_TEARDOWN /* @min:%2eteardown */] = function (unloadCtx, unloadState) {\r\n var _a;\r\n // If this plugin has already been torn down (not operational) or is not initialized (core is not set)\r\n // or the core being used for unload was not the same core used for initialization.\r\n var core = _self[STR_CORE /* @min:%2ecore */];\r\n if (!core || (unloadCtx && core !== unloadCtx[STR_CORE /* @min:%2ecore */]())) {\r\n // Do Nothing as either the plugin is not initialized or was not initialized by the current core\r\n return;\r\n }\r\n var result;\r\n var unloadDone = false;\r\n var theUnloadCtx = unloadCtx || createProcessTelemetryUnloadContext(null, core, _nextPlugin && _nextPlugin[strGetPlugin] ? _nextPlugin[strGetPlugin]() : _nextPlugin);\r\n var theUnloadState = unloadState || (_a = {\r\n reason: 0 /* TelemetryUnloadReason.ManualTeardown */\r\n },\r\n _a[_DYN_IS_ASYNC /* @min:isAsync */] = false,\r\n _a);\r\n function _unloadCallback() {\r\n if (!unloadDone) {\r\n unloadDone = true;\r\n _unloadHandlerContainer.run(theUnloadCtx, unloadState);\r\n var oldHooks = _hooks;\r\n _hooks = [];\r\n // Remove all instrumentation hooks\r\n arrForEach(oldHooks, function (fn) {\r\n fn.rm();\r\n });\r\n if (result === true) {\r\n theUnloadCtx[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](theUnloadState);\r\n }\r\n _initDefaults();\r\n }\r\n }\r\n if (!_self[_DYN__DO_TEARDOWN /* @min:%2e_doTeardown */] || _self[_DYN__DO_TEARDOWN /* @min:%2e_doTeardown */](theUnloadCtx, theUnloadState, _unloadCallback) !== true) {\r\n _unloadCallback();\r\n }\r\n else {\r\n // Tell the caller that we will be calling processNext()\r\n result = true;\r\n }\r\n return result;\r\n };\r\n _self[_DYN_UPDATE /* @min:%2eupdate */] = function (updateCtx, updateState) {\r\n // If this plugin has already been torn down (not operational) or is not initialized (core is not set)\r\n // or the core being used for unload was not the same core used for initialization.\r\n var core = _self[STR_CORE /* @min:%2ecore */];\r\n if (!core || (updateCtx && core !== updateCtx[STR_CORE /* @min:%2ecore */]())) {\r\n // Do Nothing\r\n return;\r\n }\r\n var result;\r\n var updateDone = false;\r\n var theUpdateCtx = updateCtx || createProcessTelemetryUpdateContext(null, core, _nextPlugin && _nextPlugin[strGetPlugin] ? _nextPlugin[strGetPlugin]() : _nextPlugin);\r\n var theUpdateState = updateState || {\r\n reason: 0 /* TelemetryUpdateReason.Unknown */\r\n };\r\n function _updateCallback() {\r\n if (!updateDone) {\r\n updateDone = true;\r\n _setDefaults(theUpdateCtx.getCfg(), theUpdateCtx.core(), theUpdateCtx[_DYN_GET_NEXT /* @min:%2egetNext */]());\r\n }\r\n }\r\n if (!_self._doUpdate || _self._doUpdate(theUpdateCtx, theUpdateState, _updateCallback) !== true) {\r\n _updateCallback();\r\n }\r\n else {\r\n result = true;\r\n }\r\n return result;\r\n };\r\n _self._addHook = function (hooks) {\r\n if (hooks) {\r\n if (isArray(hooks)) {\r\n _hooks = _hooks.concat(hooks);\r\n }\r\n else {\r\n _hooks[_DYN_PUSH /* @min:%2epush */](hooks);\r\n }\r\n }\r\n };\r\n proxyFunctionAs(_self, \"_addUnloadCb\", function () { return _unloadHandlerContainer; }, \"add\");\r\n });\r\n // These are added after the dynamicProto so that are not moved to the prototype\r\n _self[_DYN_DIAG_LOG /* @min:%2ediagLog */] = function (itemCtx) {\r\n return _getTelCtx(itemCtx)[_DYN_DIAG_LOG /* @min:%2ediagLog */]();\r\n };\r\n _self[_DYN_IS_INITIALIZED /* @min:%2eisInitialized */] = function () {\r\n return _isinitialized;\r\n };\r\n _self.setInitialized = function (isInitialized) {\r\n _isinitialized = isInitialized;\r\n };\r\n // _self.getNextPlugin = () => DO NOT IMPLEMENT\r\n // Sub-classes of this base class *should* not be relying on this value and instead\r\n // should use processNext() function. If you require access to the plugin use the\r\n // IProcessTelemetryContext.getNext().getPlugin() while in the pipeline, Note getNext() may return null.\r\n _self[_DYN_SET_NEXT_PLUGIN /* @min:%2esetNextPlugin */] = function (next) {\r\n _nextPlugin = next;\r\n };\r\n _self[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */] = function (env, itemCtx) {\r\n if (itemCtx) {\r\n // Normal core execution sequence\r\n itemCtx[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](env);\r\n }\r\n else if (_nextPlugin && isFunction(_nextPlugin[STR_PROCESS_TELEMETRY /* @min:%2eprocessTelemetry */])) {\r\n // Looks like backward compatibility or out of band processing. And as it looks\r\n // like a ITelemetryPlugin or ITelemetryPluginChain, just call processTelemetry\r\n _nextPlugin[STR_PROCESS_TELEMETRY /* @min:%2eprocessTelemetry */](env, null);\r\n }\r\n };\r\n _self._getTelCtx = _getTelCtx;\r\n function _getTelCtx(currentCtx) {\r\n if (currentCtx === void 0) { currentCtx = null; }\r\n var itemCtx = currentCtx;\r\n if (!itemCtx) {\r\n var rootCtx = _rootCtx || createProcessTelemetryContext(null, {}, _self[STR_CORE /* @min:%2ecore */]);\r\n // tslint:disable-next-line: prefer-conditional-expression\r\n if (_nextPlugin && _nextPlugin[strGetPlugin]) {\r\n // Looks like a chain object\r\n itemCtx = rootCtx[_DYN_CREATE_NEW /* @min:%2ecreateNew */](null, _nextPlugin[strGetPlugin]);\r\n }\r\n else {\r\n itemCtx = rootCtx[_DYN_CREATE_NEW /* @min:%2ecreateNew */](null, _nextPlugin);\r\n }\r\n }\r\n return itemCtx;\r\n }\r\n function _setDefaults(config, core, pluginChain) {\r\n if (config) {\r\n // Make sure the extensionConfig exists\r\n setValue(config, STR_EXTENSION_CONFIG, [], null, isNullOrUndefined);\r\n }\r\n if (!pluginChain && core) {\r\n // Get the first plugin from the core\r\n pluginChain = core[_DYN_GET_PROCESS_TEL_CONT0 /* @min:%2egetProcessTelContext */]()[_DYN_GET_NEXT /* @min:%2egetNext */]();\r\n }\r\n var nextPlugin = _nextPlugin;\r\n if (_nextPlugin && _nextPlugin[strGetPlugin]) {\r\n // If it looks like a proxy/chain then get the plugin\r\n nextPlugin = _nextPlugin[strGetPlugin]();\r\n }\r\n // Support legacy plugins where core was defined as a property\r\n _self[STR_CORE /* @min:%2ecore */] = core;\r\n _rootCtx = createProcessTelemetryContext(pluginChain, config, core, nextPlugin);\r\n }\r\n function _initDefaults() {\r\n _isinitialized = false;\r\n _self[STR_CORE /* @min:%2ecore */] = null;\r\n _rootCtx = null;\r\n _nextPlugin = null;\r\n _hooks = [];\r\n _unloadHandlerContainer = createUnloadHandlerContainer();\r\n }\r\n }\r\n BaseTelemetryPlugin.prototype.initialize = function (config, core, extensions, pluginChain) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Tear down the plugin and remove any hooked value, the plugin should be removed so that it is no longer initialized and\r\n * therefore could be re-initialized after being torn down. The plugin should ensure that once this has been called any further\r\n * processTelemetry calls are ignored and it just calls the processNext() with the provided context.\r\n * @param unloadCtx - This is the context that should be used during unloading.\r\n * @param unloadState - The details / state of the unload process, it holds details like whether it should be unloaded synchronously or asynchronously and the reason for the unload.\r\n * @returns boolean - true if the plugin has or will call processNext(), this for backward compatibility as previously teardown was synchronous and returned nothing.\r\n */\r\n BaseTelemetryPlugin.prototype.teardown = function (unloadCtx, unloadState) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n return false;\r\n };\r\n /**\r\n * The the plugin should re-evaluate configuration and update any cached configuration settings.\r\n * @param updateCtx - This is the context that should be used during updating.\r\n * @param updateState - The details / state of the update process, it holds details like the current and previous configuration.\r\n * @returns boolean - true if the plugin has or will call updateCtx.processNext(), this allows the plugin to perform any asynchronous operations.\r\n */\r\n BaseTelemetryPlugin.prototype.update = function (updateCtx, updateState) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Add an unload handler that will be called when the SDK is being unloaded\r\n * @param handler - the handler\r\n */\r\n BaseTelemetryPlugin.prototype._addUnloadCb = function (handler) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Add this hook so that it is automatically removed during unloading\r\n * @param hooks - The single hook or an array of IInstrumentHook objects\r\n */\r\n BaseTelemetryPlugin.prototype._addHook = function (hooks) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n return BaseTelemetryPlugin;\r\n}());\r\nexport { BaseTelemetryPlugin };\r\n//# sourceMappingURL=BaseTelemetryPlugin.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { dateTimeUtilsDuration } from \"@microsoft/applicationinsights-common\";\r\nimport { _throwInternal, arrForEach, dumpObj, getDocument, getExceptionName, getLocation, isNullOrUndefined } from \"@microsoft/applicationinsights-core-js\";\r\nimport { _DYN_DURATION, _DYN_GET_PERFORMANCE_TIMI17, _DYN_HREF, _DYN_IS_PERFORMANCE_TIMIN16, _DYN_IS_PERFORMANCE_TIMIN19, _DYN_LENGTH, _DYN_NAVIGATION_START, _DYN_POPULATE_PAGE_VIEW_P12, _DYN_SEND_PAGE_VIEW_INTER10, _DYN_SEND_PAGE_VIEW_PERFO11, _DYN_SHOULD_COLLECT_DURAT18, _DYN_TRACK_PAGE_VIEW } from \"../../__DynamicConstants\";\r\nvar _isWebWorker = null;\r\nfunction isWebWorker() {\r\n if (_isWebWorker == null) {\r\n try {\r\n _isWebWorker = !!(self && self instanceof WorkerGlobalScope);\r\n }\r\n catch (e) {\r\n _isWebWorker = false;\r\n }\r\n }\r\n return _isWebWorker;\r\n}\r\n/**\r\n * Class encapsulates sending page views and page view performance telemetry.\r\n */\r\nvar PageViewManager = /** @class */ (function () {\r\n function PageViewManager(appInsights, overridePageViewDuration, core, pageViewPerformanceManager) {\r\n dynamicProto(PageViewManager, this, function (_self) {\r\n var queueTimer = null;\r\n var itemQueue = [];\r\n var pageViewPerformanceSent = false;\r\n var _logger;\r\n if (core) {\r\n _logger = core.logger;\r\n }\r\n function _flushChannels(isAsync) {\r\n if (core) {\r\n core.flush(isAsync);\r\n }\r\n }\r\n function _startTimer() {\r\n if (!queueTimer) {\r\n queueTimer = setTimeout((function () {\r\n queueTimer = null;\r\n var allItems = itemQueue.slice(0);\r\n var doFlush = false;\r\n itemQueue = [];\r\n arrForEach(allItems, function (item) {\r\n if (!item()) {\r\n // Not processed so rescheduled\r\n itemQueue.push(item);\r\n }\r\n else {\r\n doFlush = true;\r\n }\r\n });\r\n if (itemQueue[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n _startTimer();\r\n }\r\n if (doFlush) {\r\n // We process at least one item so flush the queue\r\n _flushChannels(true);\r\n }\r\n }), 100);\r\n }\r\n }\r\n function _addQueue(cb) {\r\n itemQueue.push(cb);\r\n _startTimer();\r\n }\r\n _self[_DYN_TRACK_PAGE_VIEW /* @min:%2etrackPageView */] = function (pageView, customProperties) {\r\n var name = pageView.name;\r\n if (isNullOrUndefined(name) || typeof name !== \"string\") {\r\n var doc = getDocument();\r\n name = pageView.name = doc && doc.title || \"\";\r\n }\r\n var uri = pageView.uri;\r\n if (isNullOrUndefined(uri) || typeof uri !== \"string\") {\r\n var location_1 = getLocation();\r\n uri = pageView.uri = location_1 && location_1[_DYN_HREF /* @min:%2ehref */] || \"\";\r\n }\r\n // case 1a. if performance timing is not supported by the browser, send the page view telemetry with the duration provided by the user. If the user\r\n // do not provide the duration, set duration to undefined\r\n // Also this is case 4\r\n if (!pageViewPerformanceManager[_DYN_IS_PERFORMANCE_TIMIN16 /* @min:%2eisPerformanceTimingSupported */]()) {\r\n appInsights[_DYN_SEND_PAGE_VIEW_INTER10 /* @min:%2esendPageViewInternal */](pageView, customProperties);\r\n _flushChannels(true);\r\n if (!isWebWorker()) {\r\n // no navigation timing (IE 8, iOS Safari 8.4, Opera Mini 8 - see http://caniuse.com/#feat=nav-timing)\r\n _throwInternal(_logger, 2 /* eLoggingSeverity.WARNING */, 25 /* _eInternalMessageId.NavigationTimingNotSupported */, \"trackPageView: navigation timing API used for calculation of page duration is not supported in this browser. This page view will be collected without duration and timing info.\");\r\n }\r\n return;\r\n }\r\n var pageViewSent = false;\r\n var customDuration;\r\n // if the performance timing is supported by the browser, calculate the custom duration\r\n var start = pageViewPerformanceManager[_DYN_GET_PERFORMANCE_TIMI17 /* @min:%2egetPerformanceTiming */]()[_DYN_NAVIGATION_START /* @min:%2enavigationStart */];\r\n if (start > 0) {\r\n customDuration = dateTimeUtilsDuration(start, +new Date);\r\n if (!pageViewPerformanceManager[_DYN_SHOULD_COLLECT_DURAT18 /* @min:%2eshouldCollectDuration */](customDuration)) {\r\n customDuration = undefined;\r\n }\r\n }\r\n // if the user has provided duration, send a page view telemetry with the provided duration. Otherwise, if\r\n // overridePageViewDuration is set to true, send a page view telemetry with the custom duration calculated earlier\r\n var duration;\r\n if (!isNullOrUndefined(customProperties) &&\r\n !isNullOrUndefined(customProperties[_DYN_DURATION /* @min:%2eduration */])) {\r\n duration = customProperties[_DYN_DURATION /* @min:%2eduration */];\r\n }\r\n if (overridePageViewDuration || !isNaN(duration)) {\r\n if (isNaN(duration)) {\r\n // case 3\r\n if (!customProperties) {\r\n customProperties = {};\r\n }\r\n customProperties[_DYN_DURATION /* @min:%2eduration */] = customDuration;\r\n }\r\n // case 2\r\n appInsights[_DYN_SEND_PAGE_VIEW_INTER10 /* @min:%2esendPageViewInternal */](pageView, customProperties);\r\n _flushChannels(true);\r\n pageViewSent = true;\r\n }\r\n // now try to send the page view performance telemetry\r\n var maxDurationLimit = 60000;\r\n if (!customProperties) {\r\n customProperties = {};\r\n }\r\n // Queue the event for processing\r\n _addQueue(function () {\r\n var processed = false;\r\n try {\r\n if (pageViewPerformanceManager[_DYN_IS_PERFORMANCE_TIMIN19 /* @min:%2eisPerformanceTimingDataReady */]()) {\r\n processed = true;\r\n var pageViewPerformance = {\r\n name: name,\r\n uri: uri\r\n };\r\n pageViewPerformanceManager[_DYN_POPULATE_PAGE_VIEW_P12 /* @min:%2epopulatePageViewPerformanceEvent */](pageViewPerformance);\r\n if (!pageViewPerformance.isValid && !pageViewSent) {\r\n // If navigation timing gives invalid numbers, then go back to \"override page view duration\" mode.\r\n // That's the best value we can get that makes sense.\r\n customProperties[_DYN_DURATION /* @min:%2eduration */] = customDuration;\r\n appInsights[_DYN_SEND_PAGE_VIEW_INTER10 /* @min:%2esendPageViewInternal */](pageView, customProperties);\r\n }\r\n else {\r\n if (!pageViewSent) {\r\n customProperties[_DYN_DURATION /* @min:%2eduration */] = pageViewPerformance.durationMs;\r\n appInsights[_DYN_SEND_PAGE_VIEW_INTER10 /* @min:%2esendPageViewInternal */](pageView, customProperties);\r\n }\r\n if (!pageViewPerformanceSent) {\r\n appInsights[_DYN_SEND_PAGE_VIEW_PERFO11 /* @min:%2esendPageViewPerformanceInternal */](pageViewPerformance, customProperties);\r\n pageViewPerformanceSent = true;\r\n }\r\n }\r\n }\r\n else if (start > 0 && dateTimeUtilsDuration(start, +new Date) > maxDurationLimit) {\r\n // if performance timings are not ready but we exceeded the maximum duration limit, just log a page view telemetry\r\n // with the maximum duration limit. Otherwise, keep waiting until performance timings are ready\r\n processed = true;\r\n if (!pageViewSent) {\r\n customProperties[_DYN_DURATION /* @min:%2eduration */] = maxDurationLimit;\r\n appInsights[_DYN_SEND_PAGE_VIEW_INTER10 /* @min:%2esendPageViewInternal */](pageView, customProperties);\r\n }\r\n }\r\n }\r\n catch (e) {\r\n _throwInternal(_logger, 1 /* eLoggingSeverity.CRITICAL */, 38 /* _eInternalMessageId.TrackPVFailedCalc */, \"trackPageView failed on page load calculation: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n return processed;\r\n });\r\n };\r\n _self.teardown = function (unloadCtx, unloadState) {\r\n if (queueTimer) {\r\n clearTimeout(queueTimer);\r\n queueTimer = null;\r\n var allItems = itemQueue.slice(0);\r\n var doFlush_1 = false;\r\n itemQueue = [];\r\n arrForEach(allItems, function (item) {\r\n if (item()) {\r\n doFlush_1 = true;\r\n }\r\n });\r\n }\r\n };\r\n });\r\n }\r\n /**\r\n * Currently supported cases:\r\n * 1) (default case) track page view called with default parameters, overridePageViewDuration = false. Page view is sent with page view performance when navigation timing data is available.\r\n * a. If navigation timing is not supported then page view is sent right away with undefined duration. Page view performance is not sent.\r\n * 2) overridePageViewDuration = true, custom duration provided. Custom duration is used, page view sends right away.\r\n * 3) overridePageViewDuration = true, custom duration NOT provided. Page view is sent right away, duration is time spent from page load till now (or undefined if navigation timing is not supported).\r\n * 4) overridePageViewDuration = false, custom duration is provided. Page view is sent right away with custom duration.\r\n *\r\n * In all cases page view performance is sent once (only for the 1st call of trackPageView), or not sent if navigation timing is not supported.\r\n */\r\n PageViewManager.prototype.trackPageView = function (pageView, customProperties) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n PageViewManager.prototype.teardown = function (unloadCtx, unloadState) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n return PageViewManager;\r\n}());\r\nexport { PageViewManager };\r\n//# sourceMappingURL=PageViewManager.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { dateTimeUtilsDuration, msToTimeSpan } from \"@microsoft/applicationinsights-common\";\r\nimport { _throwInternal, getNavigator, getPerformance, safeGetLogger } from \"@microsoft/applicationinsights-core-js\";\r\nimport { _DYN_CONNECT_END, _DYN_DURATION, _DYN_GET_ENTRIES_BY_TYPE, _DYN_GET_PERFORMANCE_TIMI17, _DYN_IS_PERFORMANCE_TIMIN16, _DYN_IS_PERFORMANCE_TIMIN19, _DYN_LENGTH, _DYN_LOAD_EVENT_END, _DYN_NAVIGATION_START, _DYN_POPULATE_PAGE_VIEW_P12, _DYN_REQUEST_START, _DYN_RESPONSE_END, _DYN_RESPONSE_START, _DYN_SHOULD_COLLECT_DURAT18 } from \"../../__DynamicConstants\";\r\nvar MAX_DURATION_ALLOWED = 3600000; // 1h\r\nvar botAgentNames = [\"googlebot\", \"adsbot-google\", \"apis-google\", \"mediapartners-google\"];\r\nfunction _isPerformanceTimingSupported() {\r\n var perf = getPerformance();\r\n return perf && !!perf.timing;\r\n}\r\nfunction _isPerformanceNavigationTimingSupported() {\r\n var perf = getPerformance();\r\n return perf && perf.getEntriesByType && perf.getEntriesByType(\"navigation\")[_DYN_LENGTH /* @min:%2elength */] > 0;\r\n}\r\nfunction _isPerformanceTimingDataReady() {\r\n var perf = getPerformance();\r\n var timing = perf ? perf.timing : 0;\r\n return timing\r\n && timing.domainLookupStart > 0\r\n && timing[_DYN_NAVIGATION_START /* @min:%2enavigationStart */] > 0\r\n && timing[_DYN_RESPONSE_START /* @min:%2eresponseStart */] > 0\r\n && timing[_DYN_REQUEST_START /* @min:%2erequestStart */] > 0\r\n && timing[_DYN_LOAD_EVENT_END /* @min:%2eloadEventEnd */] > 0\r\n && timing[_DYN_RESPONSE_END /* @min:%2eresponseEnd */] > 0\r\n && timing[_DYN_CONNECT_END /* @min:%2econnectEnd */] > 0\r\n && timing.domLoading > 0;\r\n}\r\nfunction _getPerformanceTiming() {\r\n if (_isPerformanceTimingSupported()) {\r\n return getPerformance().timing;\r\n }\r\n return null;\r\n}\r\nfunction _getPerformanceNavigationTiming() {\r\n if (_isPerformanceNavigationTimingSupported()) {\r\n return getPerformance()[_DYN_GET_ENTRIES_BY_TYPE /* @min:%2egetEntriesByType */](\"navigation\")[0];\r\n }\r\n return null;\r\n}\r\n/**\r\n* This method tells if given durations should be excluded from collection.\r\n*/\r\nfunction _shouldCollectDuration() {\r\n var durations = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n durations[_i] = arguments[_i];\r\n }\r\n var _navigator = getNavigator() || {};\r\n // a full list of Google crawlers user agent strings - https://support.google.com/webmasters/answer/1061943?hl=en\r\n var userAgent = _navigator.userAgent;\r\n var isGoogleBot = false;\r\n if (userAgent) {\r\n for (var i = 0; i < botAgentNames[_DYN_LENGTH /* @min:%2elength */]; i++) {\r\n isGoogleBot = isGoogleBot || userAgent.toLowerCase().indexOf(botAgentNames[i]) !== -1;\r\n }\r\n }\r\n if (isGoogleBot) {\r\n // Don't report durations for GoogleBot, it is returning invalid values in performance.timing API.\r\n return false;\r\n }\r\n else {\r\n // for other page views, don't report if it's outside of a reasonable range\r\n for (var i = 0; i < durations[_DYN_LENGTH /* @min:%2elength */]; i++) {\r\n if (durations[i] < 0 || durations[i] >= MAX_DURATION_ALLOWED) {\r\n return false;\r\n }\r\n }\r\n }\r\n return true;\r\n}\r\n/**\r\n * Class encapsulates sending page view performance telemetry.\r\n */\r\nvar PageViewPerformanceManager = /** @class */ (function () {\r\n function PageViewPerformanceManager(core) {\r\n var _logger = safeGetLogger(core);\r\n dynamicProto(PageViewPerformanceManager, this, function (_self) {\r\n _self[_DYN_POPULATE_PAGE_VIEW_P12 /* @min:%2epopulatePageViewPerformanceEvent */] = function (pageViewPerformance) {\r\n pageViewPerformance.isValid = false;\r\n /*\r\n * http://www.w3.org/TR/navigation-timing/#processing-model\r\n * |-navigationStart\r\n * | |-connectEnd\r\n * | ||-requestStart\r\n * | || |-responseStart\r\n * | || | |-responseEnd\r\n * | || | |\r\n * | || | | |-loadEventEnd\r\n * |---network---||---request---|---response---|---dom---|\r\n * |--------------------------total----------------------|\r\n *\r\n * total = The difference between the load event of the current document is completed and the first recorded timestamp of the performance entry : https://developer.mozilla.org/en-US/docs/Web/Performance/Navigation_and_resource_timings#duration\r\n * network = Redirect time + App Cache + DNS lookup time + TCP connection time\r\n * request = Request time : https://developer.mozilla.org/en-US/docs/Web/Performance/Navigation_and_resource_timings#request_time\r\n * response = Response time\r\n * dom = Document load time : https://html.spec.whatwg.org/multipage/dom.html#document-load-timing-info\r\n * = Document processing time : https://developers.google.com/web/fundamentals/performance/navigation-and-resource-timing/#document_processing\r\n * + Loading time : https://developers.google.com/web/fundamentals/performance/navigation-and-resource-timing/#loading\r\n */\r\n var navigationTiming = _getPerformanceNavigationTiming();\r\n var timing = _getPerformanceTiming();\r\n var total = 0;\r\n var network = 0;\r\n var request = 0;\r\n var response = 0;\r\n var dom = 0;\r\n if (navigationTiming || timing) {\r\n if (navigationTiming) {\r\n total = navigationTiming[_DYN_DURATION /* @min:%2eduration */];\r\n /**\r\n * support both cases:\r\n * - startTime is always zero: https://developer.mozilla.org/en-US/docs/Web/API/PerformanceNavigationTiming\r\n * - for older browsers where the startTime is not zero\r\n */\r\n network = navigationTiming.startTime === 0 ? navigationTiming[_DYN_CONNECT_END /* @min:%2econnectEnd */] : dateTimeUtilsDuration(navigationTiming.startTime, navigationTiming[_DYN_CONNECT_END /* @min:%2econnectEnd */]);\r\n request = dateTimeUtilsDuration(navigationTiming.requestStart, navigationTiming[_DYN_RESPONSE_START /* @min:%2eresponseStart */]);\r\n response = dateTimeUtilsDuration(navigationTiming[_DYN_RESPONSE_START /* @min:%2eresponseStart */], navigationTiming[_DYN_RESPONSE_END /* @min:%2eresponseEnd */]);\r\n dom = dateTimeUtilsDuration(navigationTiming.responseEnd, navigationTiming[_DYN_LOAD_EVENT_END /* @min:%2eloadEventEnd */]);\r\n }\r\n else {\r\n total = dateTimeUtilsDuration(timing[_DYN_NAVIGATION_START /* @min:%2enavigationStart */], timing[_DYN_LOAD_EVENT_END /* @min:%2eloadEventEnd */]);\r\n network = dateTimeUtilsDuration(timing[_DYN_NAVIGATION_START /* @min:%2enavigationStart */], timing[_DYN_CONNECT_END /* @min:%2econnectEnd */]);\r\n request = dateTimeUtilsDuration(timing.requestStart, timing[_DYN_RESPONSE_START /* @min:%2eresponseStart */]);\r\n response = dateTimeUtilsDuration(timing[_DYN_RESPONSE_START /* @min:%2eresponseStart */], timing[_DYN_RESPONSE_END /* @min:%2eresponseEnd */]);\r\n dom = dateTimeUtilsDuration(timing.responseEnd, timing[_DYN_LOAD_EVENT_END /* @min:%2eloadEventEnd */]);\r\n }\r\n if (total === 0) {\r\n _throwInternal(_logger, 2 /* eLoggingSeverity.WARNING */, 10 /* _eInternalMessageId.ErrorPVCalc */, \"error calculating page view performance.\", { total: total, network: network, request: request, response: response, dom: dom });\r\n }\r\n else if (!_self[_DYN_SHOULD_COLLECT_DURAT18 /* @min:%2eshouldCollectDuration */](total, network, request, response, dom)) {\r\n _throwInternal(_logger, 2 /* eLoggingSeverity.WARNING */, 45 /* _eInternalMessageId.InvalidDurationValue */, \"Invalid page load duration value. Browser perf data won't be sent.\", { total: total, network: network, request: request, response: response, dom: dom });\r\n }\r\n else if (total < Math.floor(network) + Math.floor(request) + Math.floor(response) + Math.floor(dom)) {\r\n // some browsers may report individual components incorrectly so that the sum of the parts will be bigger than total PLT\r\n // in this case, don't report client performance from this page\r\n _throwInternal(_logger, 2 /* eLoggingSeverity.WARNING */, 8 /* _eInternalMessageId.ClientPerformanceMathError */, \"client performance math error.\", { total: total, network: network, request: request, response: response, dom: dom });\r\n }\r\n else {\r\n pageViewPerformance.durationMs = total;\r\n // // convert to timespans\r\n pageViewPerformance.perfTotal = pageViewPerformance[_DYN_DURATION /* @min:%2eduration */] = msToTimeSpan(total);\r\n pageViewPerformance.networkConnect = msToTimeSpan(network);\r\n pageViewPerformance.sentRequest = msToTimeSpan(request);\r\n pageViewPerformance.receivedResponse = msToTimeSpan(response);\r\n pageViewPerformance.domProcessing = msToTimeSpan(dom);\r\n pageViewPerformance.isValid = true;\r\n }\r\n }\r\n };\r\n _self[_DYN_GET_PERFORMANCE_TIMI17 /* @min:%2egetPerformanceTiming */] = _getPerformanceTiming;\r\n _self[_DYN_IS_PERFORMANCE_TIMIN16 /* @min:%2eisPerformanceTimingSupported */] = _isPerformanceTimingSupported;\r\n _self[_DYN_IS_PERFORMANCE_TIMIN19 /* @min:%2eisPerformanceTimingDataReady */] = _isPerformanceTimingDataReady;\r\n _self[_DYN_SHOULD_COLLECT_DURAT18 /* @min:%2eshouldCollectDuration */] = _shouldCollectDuration;\r\n });\r\n }\r\n PageViewPerformanceManager.prototype.populatePageViewPerformanceEvent = function (pageViewPerformance) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n PageViewPerformanceManager.prototype.getPerformanceTiming = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n return null;\r\n };\r\n /**\r\n * Returns true is window performance timing API is supported, false otherwise.\r\n */\r\n PageViewPerformanceManager.prototype.isPerformanceTimingSupported = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n return true;\r\n };\r\n /**\r\n * As page loads different parts of performance timing numbers get set. When all of them are set we can report it.\r\n * Returns true if ready, false otherwise.\r\n */\r\n PageViewPerformanceManager.prototype.isPerformanceTimingDataReady = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n return true;\r\n };\r\n /**\r\n * This method tells if given durations should be excluded from collection.\r\n */\r\n PageViewPerformanceManager.prototype.shouldCollectDuration = function () {\r\n var durations = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n durations[_i] = arguments[_i];\r\n }\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n return true;\r\n };\r\n return PageViewPerformanceManager;\r\n}());\r\nexport { PageViewPerformanceManager };\r\n//# sourceMappingURL=PageViewPerformanceManager.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { utlCanUseSessionStorage, utlGetSessionStorage, utlRemoveSessionStorage, utlSetSessionStorage } from \"@microsoft/applicationinsights-common\";\r\nimport { _warnToConsole, dateNow, dumpObj, getJSON, hasJSON, objDefineAccessors, throwError } from \"@microsoft/applicationinsights-core-js\";\r\nimport { _DYN_PAGE_VISIT_START_TIM20, _DYN_TRACK_PREVIOUS_PAGE_9 } from \"../../__DynamicConstants\";\r\n/**\r\n * Used to track page visit durations\r\n */\r\nvar PageVisitTimeManager = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of PageVisitTimeManager\r\n * @param pageVisitTimeTrackingHandler Delegate that will be called to send telemetry data to AI (when trackPreviousPageVisit is called)\r\n * @returns {}\r\n */\r\n function PageVisitTimeManager(logger, pageVisitTimeTrackingHandler) {\r\n var prevPageVisitDataKeyName = \"prevPageVisitData\";\r\n dynamicProto(PageVisitTimeManager, this, function (_self) {\r\n _self[_DYN_TRACK_PREVIOUS_PAGE_9 /* @min:%2etrackPreviousPageVisit */] = function (currentPageName, currentPageUrl) {\r\n try {\r\n // Restart timer for new page view\r\n var prevPageVisitTimeData = restartPageVisitTimer(currentPageName, currentPageUrl);\r\n // If there was a page already being timed, track the visit time for it now.\r\n if (prevPageVisitTimeData) {\r\n pageVisitTimeTrackingHandler(prevPageVisitTimeData.pageName, prevPageVisitTimeData.pageUrl, prevPageVisitTimeData.pageVisitTime);\r\n }\r\n }\r\n catch (e) {\r\n _warnToConsole(logger, \"Auto track page visit time failed, metric will not be collected: \" + dumpObj(e));\r\n }\r\n };\r\n /**\r\n * Stops timing of current page (if exists) and starts timing for duration of visit to pageName\r\n * @param pageName Name of page to begin timing visit duration\r\n * @returns {PageVisitData} Page visit data (including duration) of pageName from last call to start or restart, if exists. Null if not.\r\n */\r\n function restartPageVisitTimer(pageName, pageUrl) {\r\n var prevPageVisitData = null;\r\n try {\r\n prevPageVisitData = stopPageVisitTimer();\r\n startPageVisitTimer(pageName, pageUrl);\r\n }\r\n catch (e) {\r\n _warnToConsole(logger, \"Call to restart failed: \" + dumpObj(e));\r\n prevPageVisitData = null;\r\n }\r\n return prevPageVisitData;\r\n }\r\n /**\r\n * Starts timing visit duration of pageName\r\n * @param pageName\r\n * @returns {}\r\n */\r\n function startPageVisitTimer(pageName, pageUrl) {\r\n try {\r\n if (utlCanUseSessionStorage()) {\r\n if (utlGetSessionStorage(logger, prevPageVisitDataKeyName) != null) {\r\n throwError(\"Cannot call startPageVisit consecutively without first calling stopPageVisit\");\r\n }\r\n var currPageVisitData = new PageVisitData(pageName, pageUrl);\r\n var currPageVisitDataStr = getJSON().stringify(currPageVisitData);\r\n utlSetSessionStorage(logger, prevPageVisitDataKeyName, currPageVisitDataStr);\r\n }\r\n }\r\n catch (e) {\r\n // TODO: Remove this catch in next phase, since if start is called twice in a row the exception needs to be propagated out\r\n _warnToConsole(logger, \"Call to start failed: \" + dumpObj(e));\r\n }\r\n }\r\n /**\r\n * Stops timing of current page, if exists.\r\n * @returns {PageVisitData} Page visit data (including duration) of pageName from call to start, if exists. Null if not.\r\n */\r\n function stopPageVisitTimer() {\r\n var prevPageVisitData = null;\r\n try {\r\n if (utlCanUseSessionStorage()) {\r\n // Define end time of page's visit\r\n var pageVisitEndTime = dateNow();\r\n // Try to retrieve page name and start time from session storage\r\n var pageVisitDataJsonStr = utlGetSessionStorage(logger, prevPageVisitDataKeyName);\r\n if (pageVisitDataJsonStr && hasJSON()) {\r\n // if previous page data exists, set end time of visit\r\n prevPageVisitData = getJSON().parse(pageVisitDataJsonStr);\r\n prevPageVisitData.pageVisitTime = pageVisitEndTime - prevPageVisitData[_DYN_PAGE_VISIT_START_TIM20 /* @min:%2epageVisitStartTime */];\r\n // Remove data from storage since we already used it\r\n utlRemoveSessionStorage(logger, prevPageVisitDataKeyName);\r\n }\r\n }\r\n }\r\n catch (e) {\r\n _warnToConsole(logger, \"Stop page visit timer failed: \" + dumpObj(e));\r\n prevPageVisitData = null;\r\n }\r\n return prevPageVisitData;\r\n }\r\n // For backward compatibility\r\n objDefineAccessors(_self, \"_logger\", function () { return logger; });\r\n objDefineAccessors(_self, \"pageVisitTimeTrackingHandler\", function () { return pageVisitTimeTrackingHandler; });\r\n });\r\n }\r\n /**\r\n * Tracks the previous page visit time telemetry (if exists) and starts timing of new page visit time\r\n * @param currentPageName Name of page to begin timing for visit duration\r\n * @param currentPageUrl Url of page to begin timing for visit duration\r\n */\r\n PageVisitTimeManager.prototype.trackPreviousPageVisit = function (currentPageName, currentPageUrl) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n return PageVisitTimeManager;\r\n}());\r\nexport { PageVisitTimeManager };\r\nvar PageVisitData = /** @class */ (function () {\r\n function PageVisitData(pageName, pageUrl) {\r\n this[_DYN_PAGE_VISIT_START_TIM20 /* @min:%2epageVisitStartTime */] = dateNow();\r\n this.pageName = pageName;\r\n this.pageUrl = pageUrl;\r\n }\r\n return PageVisitData;\r\n}());\r\nexport { PageVisitData };\r\n//# sourceMappingURL=PageVisitTimeManager.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { dateTimeUtilsDuration } from \"@microsoft/applicationinsights-common\";\r\nimport { _throwInternal } from \"@microsoft/applicationinsights-core-js\";\r\n/**\r\n * Used to record timed events and page views.\r\n */\r\nvar Timing = /** @class */ (function () {\r\n function Timing(logger, name) {\r\n var _self = this;\r\n var _events = {};\r\n _self.start = function (name) {\r\n if (typeof _events[name] !== \"undefined\") {\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 62 /* _eInternalMessageId.StartCalledMoreThanOnce */, \"start was called more than once for this event without calling stop.\", { name: name, key: name }, true);\r\n }\r\n _events[name] = +new Date;\r\n };\r\n _self.stop = function (name, url, properties, measurements) {\r\n var start = _events[name];\r\n if (isNaN(start)) {\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 63 /* _eInternalMessageId.StopCalledWithoutStart */, \"stop was called without a corresponding start.\", { name: name, key: name }, true);\r\n }\r\n else {\r\n var end = +new Date;\r\n var duration = dateTimeUtilsDuration(start, end);\r\n _self.action(name, url, duration, properties, measurements);\r\n }\r\n delete _events[name];\r\n _events[name] = undefined;\r\n };\r\n }\r\n return Timing;\r\n}());\r\nexport { Timing };\r\n//# sourceMappingURL=Timing.js.map","/**\r\n* ApplicationInsights.ts\r\n* @copyright Microsoft 2018\r\n*/\r\nimport { __assign, __extends } from \"tslib\";\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { AnalyticsPluginIdentifier, Event as EventTelemetry, Exception, Metric, PageView, PageViewPerformance, PropertiesPluginIdentifier, RemoteDependencyData, Trace, createDistributedTraceContextFromTrace, createDomEvent, createTelemetryItem, dataSanitizeString, isCrossOriginError, strNotSpecified, stringToBoolOrDefault, utlDisableStorage, utlEnableStorage, utlSetStoragePrefix } from \"@microsoft/applicationinsights-common\";\r\nimport { BaseTelemetryPlugin, InstrumentEvent, arrForEach, createProcessTelemetryContext, createUniqueNamespace, dumpObj, eventOff, eventOn, generateW3CId, getDocument, getExceptionName, getHistory, getLocation, getWindow, hasHistory, hasWindow, isError, isFunction, isNullOrUndefined, isString, isUndefined, mergeEvtNamespace, objDefineAccessors, objForEachKey, safeGetCookieMgr, strUndefined, throwError } from \"@microsoft/applicationinsights-core-js\";\r\nimport { _DYN_ADD_TELEMETRY_INITIA15, _DYN_AUTO_TRACK_PAGE_VISI1, _DYN_COLUMN_NUMBER, _DYN_CORE, _DYN_DATA_TYPE, _DYN_DIAG_LOG, _DYN_DISABLE_EXCEPTION_TR0, _DYN_DISABLE_FLUSH_ON_BEF7, _DYN_ENABLE_AUTO_ROUTE_TR6, _DYN_ENABLE_UNHANDLED_PRO3, _DYN_ENVELOPE_TYPE, _DYN_ERROR, _DYN_ERROR_SRC, _DYN_EXCEPTION, _DYN_HREF, _DYN_IS_BROWSER_LINK_TRAC5, _DYN_IS_STORAGE_USE_DISAB4, _DYN_LENGTH, _DYN_LINE_NUMBER, _DYN_MESSAGE, _DYN_NAME_PREFIX, _DYN_OVERRIDE_PAGE_VIEW_D2, _DYN_POPULATE_PAGE_VIEW_P12, _DYN_SAMPLING_PERCENTAGE, _DYN_SEND_EXCEPTION_INTER13, _DYN_SEND_PAGE_VIEW_INTER10, _DYN_SEND_PAGE_VIEW_PERFO11, _DYN_TO_STRING, _DYN_TRACK, _DYN_TRACK_PAGE_VIEW, _DYN_TRACK_PREVIOUS_PAGE_9, _DYN__CREATE_AUTO_EXCEPTI14, _DYN__ONERROR } from \"../__DynamicConstants\";\r\nimport { PageViewManager } from \"./Telemetry/PageViewManager\";\r\nimport { PageViewPerformanceManager } from \"./Telemetry/PageViewPerformanceManager\";\r\nimport { PageVisitTimeManager } from \"./Telemetry/PageVisitTimeManager\";\r\nimport { Timing } from \"./Timing\";\r\nvar strEvent = \"event\";\r\nfunction _dispatchEvent(target, evnt) {\r\n if (target && target.dispatchEvent && evnt) {\r\n target.dispatchEvent(evnt);\r\n }\r\n}\r\nfunction _getReason(error) {\r\n if (error && error.reason) {\r\n var reason = error.reason;\r\n if (!isString(reason) && isFunction(reason[_DYN_TO_STRING /* @min:%2etoString */])) {\r\n return reason[_DYN_TO_STRING /* @min:%2etoString */]();\r\n }\r\n return dumpObj(reason);\r\n }\r\n // Pass the original object down which will eventually get evaluated for any message or description\r\n return error || \"\";\r\n}\r\nvar MinMilliSeconds = 60000;\r\nfunction _configMilliseconds(value, defValue) {\r\n value = value || defValue;\r\n if (value < MinMilliSeconds) {\r\n value = MinMilliSeconds;\r\n }\r\n return value;\r\n}\r\nfunction _getDefaultConfig(config) {\r\n if (!config) {\r\n config = {};\r\n }\r\n // set default values\r\n config.sessionRenewalMs = _configMilliseconds(config.sessionRenewalMs, 30 * 60 * 1000);\r\n config.sessionExpirationMs = _configMilliseconds(config.sessionExpirationMs, 24 * 60 * 60 * 1000);\r\n config[_DYN_DISABLE_EXCEPTION_TR0 /* @min:%2edisableExceptionTracking */] = stringToBoolOrDefault(config[_DYN_DISABLE_EXCEPTION_TR0 /* @min:%2edisableExceptionTracking */]);\r\n config[_DYN_AUTO_TRACK_PAGE_VISI1 /* @min:%2eautoTrackPageVisitTime */] = stringToBoolOrDefault(config[_DYN_AUTO_TRACK_PAGE_VISI1 /* @min:%2eautoTrackPageVisitTime */]);\r\n config[_DYN_OVERRIDE_PAGE_VIEW_D2 /* @min:%2eoverridePageViewDuration */] = stringToBoolOrDefault(config[_DYN_OVERRIDE_PAGE_VIEW_D2 /* @min:%2eoverridePageViewDuration */]);\r\n config[_DYN_ENABLE_UNHANDLED_PRO3 /* @min:%2eenableUnhandledPromiseRejectionTracking */] = stringToBoolOrDefault(config[_DYN_ENABLE_UNHANDLED_PRO3 /* @min:%2eenableUnhandledPromiseRejectionTracking */]);\r\n if (isNaN(config[_DYN_SAMPLING_PERCENTAGE /* @min:%2esamplingPercentage */]) || config[_DYN_SAMPLING_PERCENTAGE /* @min:%2esamplingPercentage */] <= 0 || config[_DYN_SAMPLING_PERCENTAGE /* @min:%2esamplingPercentage */] >= 100) {\r\n config[_DYN_SAMPLING_PERCENTAGE /* @min:%2esamplingPercentage */] = 100;\r\n }\r\n config[_DYN_IS_STORAGE_USE_DISAB4 /* @min:%2eisStorageUseDisabled */] = stringToBoolOrDefault(config[_DYN_IS_STORAGE_USE_DISAB4 /* @min:%2eisStorageUseDisabled */]);\r\n config[_DYN_IS_BROWSER_LINK_TRAC5 /* @min:%2eisBrowserLinkTrackingEnabled */] = stringToBoolOrDefault(config[_DYN_IS_BROWSER_LINK_TRAC5 /* @min:%2eisBrowserLinkTrackingEnabled */]);\r\n config[_DYN_ENABLE_AUTO_ROUTE_TR6 /* @min:%2eenableAutoRouteTracking */] = stringToBoolOrDefault(config[_DYN_ENABLE_AUTO_ROUTE_TR6 /* @min:%2eenableAutoRouteTracking */]);\r\n config[_DYN_NAME_PREFIX /* @min:%2enamePrefix */] = config[_DYN_NAME_PREFIX /* @min:%2enamePrefix */] || \"\";\r\n config.enableDebug = stringToBoolOrDefault(config.enableDebug);\r\n config[_DYN_DISABLE_FLUSH_ON_BEF7 /* @min:%2edisableFlushOnBeforeUnload */] = stringToBoolOrDefault(config[_DYN_DISABLE_FLUSH_ON_BEF7 /* @min:%2edisableFlushOnBeforeUnload */]);\r\n config.disableFlushOnUnload = stringToBoolOrDefault(config.disableFlushOnUnload, config[_DYN_DISABLE_FLUSH_ON_BEF7 /* @min:%2edisableFlushOnBeforeUnload */]);\r\n return config;\r\n}\r\nfunction _updateStorageUsage(extConfig) {\r\n // Not resetting the storage usage as someone may have manually called utlDisableStorage, so this will only\r\n // reset based if the configuration option is provided\r\n if (!isUndefined(extConfig[_DYN_IS_STORAGE_USE_DISAB4 /* @min:%2eisStorageUseDisabled */])) {\r\n if (extConfig[_DYN_IS_STORAGE_USE_DISAB4 /* @min:%2eisStorageUseDisabled */]) {\r\n utlDisableStorage();\r\n }\r\n else {\r\n utlEnableStorage();\r\n }\r\n }\r\n}\r\nvar AnalyticsPlugin = /** @class */ (function (_super) {\r\n __extends(AnalyticsPlugin, _super);\r\n function AnalyticsPlugin() {\r\n var _this = _super.call(this) || this;\r\n _this.identifier = AnalyticsPluginIdentifier; // do not change name or priority\r\n _this.priority = 180; // take from reserved priority range 100- 200\r\n _this.autoRoutePVDelay = 500; // ms; Time to wait after a route change before triggering a pageview to allow DOM changes to take place\r\n var _eventTracking;\r\n var _pageTracking;\r\n var _pageViewManager;\r\n var _pageViewPerformanceManager;\r\n var _pageVisitTimeManager;\r\n var _preInitTelemetryInitializers;\r\n var _isBrowserLinkTrackingEnabled;\r\n var _browserLinkInitializerAdded;\r\n var _enableAutoRouteTracking;\r\n var _historyListenerAdded;\r\n var _disableExceptionTracking;\r\n var _autoExceptionInstrumented;\r\n var _enableUnhandledPromiseRejectionTracking;\r\n var _autoUnhandledPromiseInstrumented;\r\n // Counts number of trackAjax invocations.\r\n // By default we only monitor X ajax call per view to avoid too much load.\r\n // Default value is set in config.\r\n // This counter keeps increasing even after the limit is reached.\r\n var _trackAjaxAttempts = 0;\r\n // array with max length of 2 that store current url and previous url for SPA page route change trackPageview use.\r\n var _prevUri; // Assigned in the constructor\r\n var _currUri;\r\n var _evtNamespace;\r\n dynamicProto(AnalyticsPlugin, _this, function (_self, _base) {\r\n var _addHook = _base._addHook;\r\n _initDefaults();\r\n _self.getCookieMgr = function () {\r\n return safeGetCookieMgr(_self[_DYN_CORE /* @min:%2ecore */]);\r\n };\r\n _self.processTelemetry = function (env, itemCtx) {\r\n _self.processNext(env, itemCtx);\r\n };\r\n _self.trackEvent = function (event, customProperties) {\r\n try {\r\n var telemetryItem = createTelemetryItem(event, EventTelemetry[_DYN_DATA_TYPE /* @min:%2edataType */], EventTelemetry[_DYN_ENVELOPE_TYPE /* @min:%2eenvelopeType */], _self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), customProperties);\r\n _self[_DYN_CORE /* @min:%2ecore */][_DYN_TRACK /* @min:%2etrack */](telemetryItem);\r\n }\r\n catch (e) {\r\n _throwInternal(2 /* eLoggingSeverity.WARNING */, 39 /* _eInternalMessageId.TrackTraceFailed */, \"trackTrace failed, trace will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n };\r\n /**\r\n * Start timing an extended event. Call `stopTrackEvent` to log the event when it ends.\r\n * @param name A string that identifies this event uniquely within the document.\r\n */\r\n _self.startTrackEvent = function (name) {\r\n try {\r\n _eventTracking.start(name);\r\n }\r\n catch (e) {\r\n _throwInternal(1 /* eLoggingSeverity.CRITICAL */, 29 /* _eInternalMessageId.StartTrackEventFailed */, \"startTrackEvent failed, event will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n };\r\n /**\r\n * Log an extended event that you started timing with `startTrackEvent`.\r\n * @param name The string you used to identify this event in `startTrackEvent`.\r\n * @param properties map[string, string] - additional data used to filter events and metrics in the portal. Defaults to empty.\r\n * @param measurements map[string, number] - metrics associated with this event, displayed in Metrics Explorer on the portal. Defaults to empty.\r\n */\r\n _self.stopTrackEvent = function (name, properties, measurements) {\r\n try {\r\n _eventTracking.stop(name, undefined, properties, measurements);\r\n }\r\n catch (e) {\r\n _throwInternal(1 /* eLoggingSeverity.CRITICAL */, 30 /* _eInternalMessageId.StopTrackEventFailed */, \"stopTrackEvent failed, event will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n };\r\n /**\r\n * @description Log a diagnostic message\r\n * @param {ITraceTelemetry} trace\r\n * @param ICustomProperties.\r\n * @memberof ApplicationInsights\r\n */\r\n _self.trackTrace = function (trace, customProperties) {\r\n try {\r\n var telemetryItem = createTelemetryItem(trace, Trace[_DYN_DATA_TYPE /* @min:%2edataType */], Trace[_DYN_ENVELOPE_TYPE /* @min:%2eenvelopeType */], _self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), customProperties);\r\n _self[_DYN_CORE /* @min:%2ecore */][_DYN_TRACK /* @min:%2etrack */](telemetryItem);\r\n }\r\n catch (e) {\r\n _throwInternal(2 /* eLoggingSeverity.WARNING */, 39 /* _eInternalMessageId.TrackTraceFailed */, \"trackTrace failed, trace will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n };\r\n /**\r\n * @description Log a numeric value that is not associated with a specific event. Typically\r\n * used to send regular reports of performance indicators. To send single measurement, just\r\n * use the name and average fields of {@link IMetricTelemetry}. If you take measurements\r\n * frequently, you can reduce the telemetry bandwidth by aggregating multiple measurements\r\n * and sending the resulting average at intervals\r\n * @param {IMetricTelemetry} metric input object argument. Only name and average are mandatory.\r\n * @param {{[key: string]: any}} customProperties additional data used to filter metrics in the\r\n * portal. Defaults to empty.\r\n * @memberof ApplicationInsights\r\n */\r\n _self.trackMetric = function (metric, customProperties) {\r\n try {\r\n var telemetryItem = createTelemetryItem(metric, Metric[_DYN_DATA_TYPE /* @min:%2edataType */], Metric[_DYN_ENVELOPE_TYPE /* @min:%2eenvelopeType */], _self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), customProperties);\r\n _self[_DYN_CORE /* @min:%2ecore */][_DYN_TRACK /* @min:%2etrack */](telemetryItem);\r\n }\r\n catch (e) {\r\n _throwInternal(1 /* eLoggingSeverity.CRITICAL */, 36 /* _eInternalMessageId.TrackMetricFailed */, \"trackMetric failed, metric will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n };\r\n /**\r\n * Logs that a page or other item was viewed.\r\n * @param IPageViewTelemetry The string you used as the name in startTrackPage. Defaults to the document title.\r\n * @param customProperties Additional data used to filter events and metrics. Defaults to empty.\r\n * If a user wants to provide duration for pageLoad, it'll have to be in pageView.properties.duration\r\n */\r\n _self[_DYN_TRACK_PAGE_VIEW /* @min:%2etrackPageView */] = function (pageView, customProperties) {\r\n try {\r\n var inPv = pageView || {};\r\n _pageViewManager[_DYN_TRACK_PAGE_VIEW /* @min:%2etrackPageView */](inPv, __assign(__assign(__assign({}, inPv.properties), inPv.measurements), customProperties));\r\n if (_self.config[_DYN_AUTO_TRACK_PAGE_VISI1 /* @min:%2eautoTrackPageVisitTime */]) {\r\n _pageVisitTimeManager[_DYN_TRACK_PREVIOUS_PAGE_9 /* @min:%2etrackPreviousPageVisit */](inPv.name, inPv.uri);\r\n }\r\n }\r\n catch (e) {\r\n _throwInternal(1 /* eLoggingSeverity.CRITICAL */, 37 /* _eInternalMessageId.TrackPVFailed */, \"trackPageView failed, page view will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n };\r\n /**\r\n * Create a page view telemetry item and send it to the SDK pipeline through the core.track API\r\n * @param pageView Page view item to be sent\r\n * @param properties Custom properties (Part C) that a user can add to the telemetry item\r\n * @param systemProperties System level properties (Part A) that a user can add to the telemetry item\r\n */\r\n _self[_DYN_SEND_PAGE_VIEW_INTER10 /* @min:%2esendPageViewInternal */] = function (pageView, properties, systemProperties) {\r\n var doc = getDocument();\r\n if (doc) {\r\n pageView.refUri = pageView.refUri === undefined ? doc.referrer : pageView.refUri;\r\n }\r\n var telemetryItem = createTelemetryItem(pageView, PageView[_DYN_DATA_TYPE /* @min:%2edataType */], PageView[_DYN_ENVELOPE_TYPE /* @min:%2eenvelopeType */], _self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), properties, systemProperties);\r\n _self[_DYN_CORE /* @min:%2ecore */][_DYN_TRACK /* @min:%2etrack */](telemetryItem);\r\n // reset ajaxes counter\r\n _trackAjaxAttempts = 0;\r\n };\r\n /**\r\n * @ignore INTERNAL ONLY\r\n * @param pageViewPerformance\r\n * @param properties\r\n */\r\n _self[_DYN_SEND_PAGE_VIEW_PERFO11 /* @min:%2esendPageViewPerformanceInternal */] = function (pageViewPerformance, properties, systemProperties) {\r\n var telemetryItem = createTelemetryItem(pageViewPerformance, PageViewPerformance[_DYN_DATA_TYPE /* @min:%2edataType */], PageViewPerformance[_DYN_ENVELOPE_TYPE /* @min:%2eenvelopeType */], _self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), properties, systemProperties);\r\n _self[_DYN_CORE /* @min:%2ecore */][_DYN_TRACK /* @min:%2etrack */](telemetryItem);\r\n };\r\n /**\r\n * Send browser performance metrics.\r\n * @param pageViewPerformance\r\n * @param customProperties\r\n */\r\n _self.trackPageViewPerformance = function (pageViewPerformance, customProperties) {\r\n var inPvp = pageViewPerformance || {};\r\n try {\r\n _pageViewPerformanceManager[_DYN_POPULATE_PAGE_VIEW_P12 /* @min:%2epopulatePageViewPerformanceEvent */](inPvp);\r\n _self[_DYN_SEND_PAGE_VIEW_PERFO11 /* @min:%2esendPageViewPerformanceInternal */](inPvp, customProperties);\r\n }\r\n catch (e) {\r\n _throwInternal(1 /* eLoggingSeverity.CRITICAL */, 37 /* _eInternalMessageId.TrackPVFailed */, \"trackPageViewPerformance failed, page view will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n };\r\n /**\r\n * Starts the timer for tracking a page load time. Use this instead of `trackPageView` if you want to control when the page view timer starts and stops,\r\n * but don't want to calculate the duration yourself. This method doesn't send any telemetry. Call `stopTrackPage` to log the end of the page view\r\n * and send the event.\r\n * @param name A string that idenfities this item, unique within this HTML document. Defaults to the document title.\r\n */\r\n _self.startTrackPage = function (name) {\r\n try {\r\n if (typeof name !== \"string\") {\r\n var doc = getDocument();\r\n name = doc && doc.title || \"\";\r\n }\r\n _pageTracking.start(name);\r\n }\r\n catch (e) {\r\n _throwInternal(1 /* eLoggingSeverity.CRITICAL */, 31 /* _eInternalMessageId.StartTrackFailed */, \"startTrackPage failed, page view may not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n };\r\n /**\r\n * Stops the timer that was started by calling `startTrackPage` and sends the pageview load time telemetry with the specified properties and measurements.\r\n * The duration of the page view will be the time between calling `startTrackPage` and `stopTrackPage`.\r\n * @param name The string you used as the name in startTrackPage. Defaults to the document title.\r\n * @param url String - a relative or absolute URL that identifies the page or other item. Defaults to the window location.\r\n * @param properties map[string, string] - additional data used to filter pages and metrics in the portal. Defaults to empty.\r\n * @param measurements map[string, number] - metrics associated with this page, displayed in Metrics Explorer on the portal. Defaults to empty.\r\n */\r\n _self.stopTrackPage = function (name, url, properties, measurement) {\r\n try {\r\n if (typeof name !== \"string\") {\r\n var doc = getDocument();\r\n name = doc && doc.title || \"\";\r\n }\r\n if (typeof url !== \"string\") {\r\n var loc = getLocation();\r\n url = loc && loc[_DYN_HREF /* @min:%2ehref */] || \"\";\r\n }\r\n _pageTracking.stop(name, url, properties, measurement);\r\n if (_self.config[_DYN_AUTO_TRACK_PAGE_VISI1 /* @min:%2eautoTrackPageVisitTime */]) {\r\n _pageVisitTimeManager[_DYN_TRACK_PREVIOUS_PAGE_9 /* @min:%2etrackPreviousPageVisit */](name, url);\r\n }\r\n }\r\n catch (e) {\r\n _throwInternal(1 /* eLoggingSeverity.CRITICAL */, 32 /* _eInternalMessageId.StopTrackFailed */, \"stopTrackPage failed, page view will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n };\r\n /**\r\n * @ignore INTERNAL ONLY\r\n * @param exception\r\n * @param properties\r\n * @param systemProperties\r\n */\r\n _self[_DYN_SEND_EXCEPTION_INTER13 /* @min:%2esendExceptionInternal */] = function (exception, customProperties, systemProperties) {\r\n // Adding additional edge cases to handle\r\n // - Not passing anything (null / undefined)\r\n var theError = (exception && (exception[_DYN_EXCEPTION /* @min:%2eexception */] || exception[_DYN_ERROR /* @min:%2eerror */])) ||\r\n // - Handle someone calling trackException based of v1 API where the exception was the Error\r\n isError(exception) && exception ||\r\n // - Handles no error being defined and instead of creating a new Error() instance attempt to map so any stacktrace\r\n // is preserved and does not list ApplicationInsights code as the source\r\n { name: (exception && typeof exception), message: exception || strNotSpecified };\r\n // If no exception object was passed assign to an empty object to avoid internal exceptions\r\n exception = exception || {};\r\n var exceptionPartB = new Exception(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), theError, exception.properties || customProperties, exception.measurements, exception.severityLevel, exception.id).toInterface();\r\n var telemetryItem = createTelemetryItem(exceptionPartB, Exception[_DYN_DATA_TYPE /* @min:%2edataType */], Exception[_DYN_ENVELOPE_TYPE /* @min:%2eenvelopeType */], _self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), customProperties, systemProperties);\r\n _self[_DYN_CORE /* @min:%2ecore */][_DYN_TRACK /* @min:%2etrack */](telemetryItem);\r\n };\r\n /**\r\n * Log an exception you have caught.\r\n *\r\n * @param {IExceptionTelemetry} exception Object which contains exception to be sent\r\n * @param {{[key: string]: any}} customProperties Additional data used to filter pages and metrics in the portal. Defaults to empty.\r\n *\r\n * Any property of type double will be considered a measurement, and will be treated by Application Insights as a metric.\r\n * @memberof ApplicationInsights\r\n */\r\n _self.trackException = function (exception, customProperties) {\r\n if (exception && !exception[_DYN_EXCEPTION /* @min:%2eexception */] && exception[_DYN_ERROR /* @min:%2eerror */]) {\r\n exception[_DYN_EXCEPTION /* @min:%2eexception */] = exception[_DYN_ERROR /* @min:%2eerror */];\r\n }\r\n try {\r\n _self[_DYN_SEND_EXCEPTION_INTER13 /* @min:%2esendExceptionInternal */](exception, customProperties);\r\n }\r\n catch (e) {\r\n _throwInternal(1 /* eLoggingSeverity.CRITICAL */, 35 /* _eInternalMessageId.TrackExceptionFailed */, \"trackException failed, exception will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n };\r\n /**\r\n * @description Custom error handler for Application Insights Analytics\r\n * @param {IAutoExceptionTelemetry} exception\r\n * @memberof ApplicationInsights\r\n */\r\n _self[_DYN__ONERROR /* @min:%2e_onerror */] = function (exception) {\r\n var error = exception && exception[_DYN_ERROR /* @min:%2eerror */];\r\n var evt = exception && exception.evt;\r\n try {\r\n if (!evt) {\r\n var _window = getWindow();\r\n if (_window) {\r\n evt = _window[strEvent];\r\n }\r\n }\r\n var url = (exception && exception.url) || (getDocument() || {}).URL;\r\n // If no error source is provided assume the default window.onerror handler\r\n var errorSrc = exception[_DYN_ERROR_SRC /* @min:%2eerrorSrc */] || \"window.onerror@\" + url + \":\" + (exception[_DYN_LINE_NUMBER /* @min:%2elineNumber */] || 0) + \":\" + (exception[_DYN_COLUMN_NUMBER /* @min:%2ecolumnNumber */] || 0);\r\n var properties = {\r\n errorSrc: errorSrc,\r\n url: url,\r\n lineNumber: exception[_DYN_LINE_NUMBER /* @min:%2elineNumber */] || 0,\r\n columnNumber: exception[_DYN_COLUMN_NUMBER /* @min:%2ecolumnNumber */] || 0,\r\n message: exception[_DYN_MESSAGE /* @min:%2emessage */]\r\n };\r\n if (isCrossOriginError(exception.message, exception.url, exception.lineNumber, exception.columnNumber, exception[_DYN_ERROR /* @min:%2eerror */])) {\r\n _sendCORSException(Exception[_DYN__CREATE_AUTO_EXCEPTI14 /* @min:%2eCreateAutoException */](\"Script error: The browser's same-origin policy prevents us from getting the details of this exception. Consider using the 'crossorigin' attribute.\", url, exception[_DYN_LINE_NUMBER /* @min:%2elineNumber */] || 0, exception[_DYN_COLUMN_NUMBER /* @min:%2ecolumnNumber */] || 0, error, evt, null, errorSrc), properties);\r\n }\r\n else {\r\n if (!exception[_DYN_ERROR_SRC /* @min:%2eerrorSrc */]) {\r\n exception[_DYN_ERROR_SRC /* @min:%2eerrorSrc */] = errorSrc;\r\n }\r\n _self.trackException({ exception: exception, severityLevel: 3 /* eSeverityLevel.Error */ }, properties);\r\n }\r\n }\r\n catch (e) {\r\n var errorString = error ? (error.name + \", \" + error[_DYN_MESSAGE /* @min:%2emessage */]) : \"null\";\r\n _throwInternal(1 /* eLoggingSeverity.CRITICAL */, 11 /* _eInternalMessageId.ExceptionWhileLoggingError */, \"_onError threw exception while logging error, error will not be collected: \"\r\n + getExceptionName(e), { exception: dumpObj(e), errorString: errorString });\r\n }\r\n };\r\n _self[_DYN_ADD_TELEMETRY_INITIA15 /* @min:%2eaddTelemetryInitializer */] = function (telemetryInitializer) {\r\n if (_self[_DYN_CORE /* @min:%2ecore */]) {\r\n // Just add to the core\r\n return _self[_DYN_CORE /* @min:%2ecore */][_DYN_ADD_TELEMETRY_INITIA15 /* @min:%2eaddTelemetryInitializer */](telemetryInitializer);\r\n }\r\n // Handle \"pre-initialization\" telemetry initializers (for backward compatibility)\r\n if (!_preInitTelemetryInitializers) {\r\n _preInitTelemetryInitializers = [];\r\n }\r\n _preInitTelemetryInitializers.push(telemetryInitializer);\r\n };\r\n _self.initialize = function (config, core, extensions, pluginChain) {\r\n if (_self.isInitialized()) {\r\n return;\r\n }\r\n if (isNullOrUndefined(core)) {\r\n throwError(\"Error initializing\");\r\n }\r\n _base.initialize(config, core, extensions, pluginChain);\r\n if (config.storagePrefix) {\r\n utlSetStoragePrefix(config.storagePrefix);\r\n }\r\n try {\r\n _evtNamespace = mergeEvtNamespace(createUniqueNamespace(_self.identifier), core.evtNamespace && core.evtNamespace());\r\n if (_preInitTelemetryInitializers) {\r\n arrForEach(_preInitTelemetryInitializers, function (initializer) {\r\n core[_DYN_ADD_TELEMETRY_INITIA15 /* @min:%2eaddTelemetryInitializer */](initializer);\r\n });\r\n _preInitTelemetryInitializers = null;\r\n }\r\n var extConfig = _populateDefaults(config);\r\n _updateStorageUsage(extConfig);\r\n _pageViewPerformanceManager = new PageViewPerformanceManager(_self[_DYN_CORE /* @min:%2ecore */]);\r\n _pageViewManager = new PageViewManager(_self, extConfig[_DYN_OVERRIDE_PAGE_VIEW_D2 /* @min:%2eoverridePageViewDuration */], _self[_DYN_CORE /* @min:%2ecore */], _pageViewPerformanceManager);\r\n _pageVisitTimeManager = new PageVisitTimeManager(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), function (pageName, pageUrl, pageVisitTime) { return trackPageVisitTime(pageName, pageUrl, pageVisitTime); });\r\n _updateBrowserLinkTracking(extConfig, config);\r\n _eventTracking = new Timing(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), \"trackEvent\");\r\n _eventTracking.action =\r\n function (name, url, duration, properties, measurements) {\r\n if (!properties) {\r\n properties = {};\r\n }\r\n if (!measurements) {\r\n measurements = {};\r\n }\r\n properties.duration = duration[_DYN_TO_STRING /* @min:%2etoString */]();\r\n _self.trackEvent({ name: name, properties: properties, measurements: measurements });\r\n };\r\n // initialize page view timing\r\n _pageTracking = new Timing(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), \"trackPageView\");\r\n _pageTracking.action = function (name, url, duration, properties, measurements) {\r\n // duration must be a custom property in order for the collector to extract it\r\n if (isNullOrUndefined(properties)) {\r\n properties = {};\r\n }\r\n properties.duration = duration[_DYN_TO_STRING /* @min:%2etoString */]();\r\n var pageViewItem = {\r\n name: name,\r\n uri: url,\r\n properties: properties,\r\n measurements: measurements\r\n };\r\n _self[_DYN_SEND_PAGE_VIEW_INTER10 /* @min:%2esendPageViewInternal */](pageViewItem, properties);\r\n };\r\n if (hasWindow()) {\r\n _updateExceptionTracking(extConfig);\r\n _updateLocationChange(extConfig);\r\n }\r\n }\r\n catch (e) {\r\n // resetting the initialized state because of failure\r\n _self.setInitialized(false);\r\n throw e;\r\n }\r\n };\r\n _self._doTeardown = function (unloadCtx, unloadState) {\r\n _pageViewManager && _pageViewManager.teardown(unloadCtx, unloadState);\r\n // Just register to remove all events associated with this namespace\r\n eventOff(window, null, null, _evtNamespace);\r\n _initDefaults();\r\n };\r\n function _populateDefaults(config) {\r\n var ctx = createProcessTelemetryContext(null, config, _self[_DYN_CORE /* @min:%2ecore */]);\r\n var identifier = _self.identifier;\r\n // load default values if specified\r\n var defaults = _getDefaultConfig(config);\r\n var extConfig = _self.config = ctx.getExtCfg(identifier);\r\n if (defaults !== undefined) {\r\n objForEachKey(defaults, function (field, value) {\r\n // for each unspecified field, set the default value\r\n extConfig[field] = ctx.getConfig(identifier, field, value);\r\n if (extConfig[field] === undefined) {\r\n extConfig = value;\r\n }\r\n });\r\n }\r\n return extConfig;\r\n }\r\n function _updateBrowserLinkTracking(extConfig, config) {\r\n _isBrowserLinkTrackingEnabled = extConfig[_DYN_IS_BROWSER_LINK_TRAC5 /* @min:%2eisBrowserLinkTrackingEnabled */] || config[_DYN_IS_BROWSER_LINK_TRAC5 /* @min:%2eisBrowserLinkTrackingEnabled */];\r\n _addDefaultTelemetryInitializers();\r\n }\r\n /**\r\n * Log a page visit time\r\n * @param pageName Name of page\r\n * @param pageVisitDuration Duration of visit to the page in milleseconds\r\n */\r\n function trackPageVisitTime(pageName, pageUrl, pageVisitTime) {\r\n var properties = { PageName: pageName, PageUrl: pageUrl };\r\n _self.trackMetric({\r\n name: \"PageVisitTime\",\r\n average: pageVisitTime,\r\n max: pageVisitTime,\r\n min: pageVisitTime,\r\n sampleCount: 1\r\n }, properties);\r\n }\r\n function _addDefaultTelemetryInitializers() {\r\n if (!_browserLinkInitializerAdded && _isBrowserLinkTrackingEnabled) {\r\n var browserLinkPaths_1 = [\"/browserLinkSignalR/\", \"/__browserLink/\"];\r\n var dropBrowserLinkRequests = function (envelope) {\r\n if (_isBrowserLinkTrackingEnabled && envelope.baseType === RemoteDependencyData[_DYN_DATA_TYPE /* @min:%2edataType */]) {\r\n var remoteData = envelope.baseData;\r\n if (remoteData) {\r\n for (var i = 0; i < browserLinkPaths_1[_DYN_LENGTH /* @min:%2elength */]; i++) {\r\n if (remoteData.target && remoteData.target.indexOf(browserLinkPaths_1[i]) >= 0) {\r\n return false;\r\n }\r\n }\r\n }\r\n }\r\n return true;\r\n };\r\n _self[_DYN_ADD_TELEMETRY_INITIA15 /* @min:%2eaddTelemetryInitializer */](dropBrowserLinkRequests);\r\n _browserLinkInitializerAdded = true;\r\n }\r\n }\r\n function _sendCORSException(exception, properties) {\r\n var telemetryItem = createTelemetryItem(exception, Exception[_DYN_DATA_TYPE /* @min:%2edataType */], Exception[_DYN_ENVELOPE_TYPE /* @min:%2eenvelopeType */], _self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), properties);\r\n _self[_DYN_CORE /* @min:%2ecore */][_DYN_TRACK /* @min:%2etrack */](telemetryItem);\r\n }\r\n function _updateExceptionTracking(extConfig) {\r\n var _window = getWindow();\r\n var locn = getLocation(true);\r\n _disableExceptionTracking = extConfig[_DYN_DISABLE_EXCEPTION_TR0 /* @min:%2edisableExceptionTracking */];\r\n if (!_disableExceptionTracking && !_autoExceptionInstrumented && !extConfig.autoExceptionInstrumented) {\r\n // We want to enable exception auto collection and it has not been done so yet\r\n _addHook(InstrumentEvent(_window, \"onerror\", {\r\n ns: _evtNamespace,\r\n rsp: function (callDetails, message, url, lineNumber, columnNumber, error) {\r\n if (!_disableExceptionTracking && callDetails.rslt !== true) {\r\n _self[_DYN__ONERROR /* @min:%2e_onerror */](Exception[_DYN__CREATE_AUTO_EXCEPTI14 /* @min:%2eCreateAutoException */](message, url, lineNumber, columnNumber, error, callDetails.evt));\r\n }\r\n }\r\n }, false));\r\n _autoExceptionInstrumented = true;\r\n }\r\n _addUnhandledPromiseRejectionTracking(extConfig, _window, locn);\r\n }\r\n function _updateLocationChange(extConfig) {\r\n var win = getWindow();\r\n var locn = getLocation(true);\r\n _enableAutoRouteTracking = extConfig[_DYN_ENABLE_AUTO_ROUTE_TR6 /* @min:%2eenableAutoRouteTracking */] === true;\r\n /**\r\n * Create a custom \"locationchange\" event which is triggered each time the history object is changed\r\n */\r\n if (win && _enableAutoRouteTracking && hasHistory()) {\r\n var _history = getHistory();\r\n if (isFunction(_history.pushState) && isFunction(_history.replaceState) && typeof Event !== strUndefined) {\r\n _addHistoryListener(extConfig, win, _history, locn);\r\n }\r\n }\r\n }\r\n function _getDistributedTraceCtx() {\r\n var distributedTraceCtx = null;\r\n if (_self[_DYN_CORE /* @min:%2ecore */] && _self[_DYN_CORE /* @min:%2ecore */].getTraceCtx) {\r\n distributedTraceCtx = _self[_DYN_CORE /* @min:%2ecore */].getTraceCtx(false);\r\n }\r\n if (!distributedTraceCtx) {\r\n // Fallback when using an older Core and PropertiesPlugin\r\n var properties = _self[_DYN_CORE /* @min:%2ecore */].getPlugin(PropertiesPluginIdentifier);\r\n if (properties) {\r\n var context = properties.plugin.context;\r\n if (context) {\r\n distributedTraceCtx = createDistributedTraceContextFromTrace(context.telemetryTrace);\r\n }\r\n }\r\n }\r\n return distributedTraceCtx;\r\n }\r\n /**\r\n * Create a custom \"locationchange\" event which is triggered each time the history object is changed\r\n */\r\n function _addHistoryListener(extConfig, win, history, locn) {\r\n var namePrefix = extConfig[_DYN_NAME_PREFIX /* @min:%2enamePrefix */] || \"\";\r\n function _popstateHandler() {\r\n if (_enableAutoRouteTracking) {\r\n _dispatchEvent(win, createDomEvent(namePrefix + \"locationchange\"));\r\n }\r\n }\r\n function _locationChangeHandler() {\r\n // We always track the changes (if the handler is installed) to handle the feature being disabled between location changes\r\n if (_currUri) {\r\n _prevUri = _currUri;\r\n _currUri = locn && locn[_DYN_HREF /* @min:%2ehref */] || \"\";\r\n }\r\n else {\r\n _currUri = locn && locn[_DYN_HREF /* @min:%2ehref */] || \"\";\r\n }\r\n if (_enableAutoRouteTracking) {\r\n var distributedTraceCtx = _getDistributedTraceCtx();\r\n if (distributedTraceCtx) {\r\n distributedTraceCtx.setTraceId(generateW3CId());\r\n var traceLocationName = \"_unknown_\";\r\n if (locn && locn.pathname) {\r\n traceLocationName = locn.pathname + (locn.hash || \"\");\r\n }\r\n // This populates the ai.operation.name which has a maximum size of 1024 so we need to sanitize it\r\n distributedTraceCtx.setName(dataSanitizeString(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), traceLocationName));\r\n }\r\n setTimeout((function (uri) {\r\n // todo: override start time so that it is not affected by autoRoutePVDelay\r\n _self[_DYN_TRACK_PAGE_VIEW /* @min:%2etrackPageView */]({ refUri: uri, properties: { duration: 0 } }); // SPA route change loading durations are undefined, so send 0\r\n }).bind(_self, _prevUri), _self.autoRoutePVDelay);\r\n }\r\n }\r\n if (!_historyListenerAdded) {\r\n _addHook(InstrumentEvent(history, \"pushState\", {\r\n ns: _evtNamespace,\r\n rsp: function () {\r\n if (_enableAutoRouteTracking) {\r\n _dispatchEvent(win, createDomEvent(namePrefix + \"pushState\"));\r\n _dispatchEvent(win, createDomEvent(namePrefix + \"locationchange\"));\r\n }\r\n }\r\n }, true));\r\n _addHook(InstrumentEvent(history, \"replaceState\", {\r\n ns: _evtNamespace,\r\n rsp: function () {\r\n if (_enableAutoRouteTracking) {\r\n _dispatchEvent(win, createDomEvent(namePrefix + \"replaceState\"));\r\n _dispatchEvent(win, createDomEvent(namePrefix + \"locationchange\"));\r\n }\r\n }\r\n }, true));\r\n eventOn(win, namePrefix + \"popstate\", _popstateHandler, _evtNamespace);\r\n eventOn(win, namePrefix + \"locationchange\", _locationChangeHandler, _evtNamespace);\r\n _historyListenerAdded = true;\r\n }\r\n }\r\n function _addUnhandledPromiseRejectionTracking(extConfig, _window, _location) {\r\n _enableUnhandledPromiseRejectionTracking = extConfig[_DYN_ENABLE_UNHANDLED_PRO3 /* @min:%2eenableUnhandledPromiseRejectionTracking */] === true;\r\n if (_enableUnhandledPromiseRejectionTracking && !_autoUnhandledPromiseInstrumented) {\r\n // We want to enable exception auto collection and it has not been done so yet\r\n _addHook(InstrumentEvent(_window, \"onunhandledrejection\", {\r\n ns: _evtNamespace,\r\n rsp: function (callDetails, error) {\r\n if (_enableUnhandledPromiseRejectionTracking && callDetails.rslt !== true) { // handled could be typeof function\r\n _self[_DYN__ONERROR /* @min:%2e_onerror */](Exception[_DYN__CREATE_AUTO_EXCEPTI14 /* @min:%2eCreateAutoException */](_getReason(error), _location ? _location[_DYN_HREF /* @min:%2ehref */] : \"\", 0, 0, error, callDetails.evt));\r\n }\r\n }\r\n }, false));\r\n _autoUnhandledPromiseInstrumented = true;\r\n extConfig.autoUnhandledPromiseInstrumented = _autoUnhandledPromiseInstrumented;\r\n }\r\n }\r\n /**\r\n * This method will throw exceptions in debug mode or attempt to log the error as a console warning.\r\n * @param severity {eLoggingSeverity} - The severity of the log message\r\n * @param message {_InternalLogMessage} - The log message.\r\n */\r\n function _throwInternal(severity, msgId, msg, properties, isUserAct) {\r\n _self[_DYN_DIAG_LOG /* @min:%2ediagLog */]().throwInternal(severity, msgId, msg, properties, isUserAct);\r\n }\r\n function _initDefaults() {\r\n _eventTracking = null;\r\n _pageTracking = null;\r\n _pageViewManager = null;\r\n _pageViewPerformanceManager = null;\r\n _pageVisitTimeManager = null;\r\n _preInitTelemetryInitializers = null;\r\n _isBrowserLinkTrackingEnabled = false;\r\n _browserLinkInitializerAdded = false;\r\n _enableAutoRouteTracking = false;\r\n _historyListenerAdded = false;\r\n _disableExceptionTracking = false;\r\n _autoExceptionInstrumented = false;\r\n _enableUnhandledPromiseRejectionTracking = false;\r\n _autoUnhandledPromiseInstrumented = false;\r\n // Counts number of trackAjax invocations.\r\n // By default we only monitor X ajax call per view to avoid too much load.\r\n // Default value is set in config.\r\n // This counter keeps increasing even after the limit is reached.\r\n _trackAjaxAttempts = 0;\r\n // array with max length of 2 that store current url and previous url for SPA page route change trackPageview use.\r\n var location = getLocation(true);\r\n _prevUri = location && location[_DYN_HREF /* @min:%2ehref */] || \"\";\r\n _currUri = null;\r\n _evtNamespace = null;\r\n }\r\n // For backward compatibility\r\n objDefineAccessors(_self, \"_pageViewManager\", function () { return _pageViewManager; });\r\n objDefineAccessors(_self, \"_pageViewPerformanceManager\", function () { return _pageViewPerformanceManager; });\r\n objDefineAccessors(_self, \"_pageVisitTimeManager\", function () { return _pageVisitTimeManager; });\r\n objDefineAccessors(_self, \"_evtNamespace\", function () { return \".\" + _evtNamespace; });\r\n });\r\n return _this;\r\n }\r\n /**\r\n * Get the current cookie manager for this instance\r\n */\r\n AnalyticsPlugin.prototype.getCookieMgr = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n return null;\r\n };\r\n AnalyticsPlugin.prototype.processTelemetry = function (env, itemCtx) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n AnalyticsPlugin.prototype.trackEvent = function (event, customProperties) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Start timing an extended event. Call `stopTrackEvent` to log the event when it ends.\r\n * @param name A string that identifies this event uniquely within the document.\r\n */\r\n AnalyticsPlugin.prototype.startTrackEvent = function (name) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Log an extended event that you started timing with `startTrackEvent`.\r\n * @param name The string you used to identify this event in `startTrackEvent`.\r\n * @param properties map[string, string] - additional data used to filter events and metrics in the portal. Defaults to empty.\r\n * @param measurements map[string, number] - metrics associated with this event, displayed in Metrics Explorer on the portal. Defaults to empty.\r\n */\r\n AnalyticsPlugin.prototype.stopTrackEvent = function (name, properties, measurements) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * @description Log a diagnostic message\r\n * @param {ITraceTelemetry} trace\r\n * @param ICustomProperties.\r\n * @memberof ApplicationInsights\r\n */\r\n AnalyticsPlugin.prototype.trackTrace = function (trace, customProperties) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * @description Log a numeric value that is not associated with a specific event. Typically\r\n * used to send regular reports of performance indicators. To send single measurement, just\r\n * use the name and average fields of {@link IMetricTelemetry}. If you take measurements\r\n * frequently, you can reduce the telemetry bandwidth by aggregating multiple measurements\r\n * and sending the resulting average at intervals\r\n * @param {IMetricTelemetry} metric input object argument. Only name and average are mandatory.\r\n * @param {{[key: string]: any}} customProperties additional data used to filter metrics in the\r\n * portal. Defaults to empty.\r\n * @memberof ApplicationInsights\r\n */\r\n AnalyticsPlugin.prototype.trackMetric = function (metric, customProperties) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Logs that a page or other item was viewed.\r\n * @param IPageViewTelemetry The string you used as the name in startTrackPage. Defaults to the document title.\r\n * @param customProperties Additional data used to filter events and metrics. Defaults to empty.\r\n * If a user wants to provide duration for pageLoad, it'll have to be in pageView.properties.duration\r\n */\r\n AnalyticsPlugin.prototype.trackPageView = function (pageView, customProperties) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Create a page view telemetry item and send it to the SDK pipeline through the core.track API\r\n * @param pageView Page view item to be sent\r\n * @param properties Custom properties (Part C) that a user can add to the telemetry item\r\n * @param systemProperties System level properties (Part A) that a user can add to the telemetry item\r\n */\r\n AnalyticsPlugin.prototype.sendPageViewInternal = function (pageView, properties, systemProperties) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * @ignore INTERNAL ONLY\r\n * @param pageViewPerformance\r\n * @param properties\r\n */\r\n AnalyticsPlugin.prototype.sendPageViewPerformanceInternal = function (pageViewPerformance, properties, systemProperties) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Send browser performance metrics.\r\n * @param pageViewPerformance\r\n * @param customProperties\r\n */\r\n AnalyticsPlugin.prototype.trackPageViewPerformance = function (pageViewPerformance, customProperties) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Starts the timer for tracking a page load time. Use this instead of `trackPageView` if you want to control when the page view timer starts and stops,\r\n * but don't want to calculate the duration yourself. This method doesn't send any telemetry. Call `stopTrackPage` to log the end of the page view\r\n * and send the event.\r\n * @param name A string that idenfities this item, unique within this HTML document. Defaults to the document title.\r\n */\r\n AnalyticsPlugin.prototype.startTrackPage = function (name) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Stops the timer that was started by calling `startTrackPage` and sends the pageview load time telemetry with the specified properties and measurements.\r\n * The duration of the page view will be the time between calling `startTrackPage` and `stopTrackPage`.\r\n * @param name The string you used as the name in startTrackPage. Defaults to the document title.\r\n * @param url String - a relative or absolute URL that identifies the page or other item. Defaults to the window location.\r\n * @param properties map[string, string] - additional data used to filter pages and metrics in the portal. Defaults to empty.\r\n * @param measurements map[string, number] - metrics associated with this page, displayed in Metrics Explorer on the portal. Defaults to empty.\r\n */\r\n AnalyticsPlugin.prototype.stopTrackPage = function (name, url, properties, measurement) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * @ignore INTERNAL ONLY\r\n * @param exception\r\n * @param properties\r\n * @param systemProperties\r\n */\r\n AnalyticsPlugin.prototype.sendExceptionInternal = function (exception, customProperties, systemProperties) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Log an exception you have caught.\r\n *\r\n * @param {IExceptionTelemetry} exception Object which contains exception to be sent\r\n * @param {{[key: string]: any}} customProperties Additional data used to filter pages and metrics in the portal. Defaults to empty.\r\n *\r\n * Any property of type double will be considered a measurement, and will be treated by Application Insights as a metric.\r\n * @memberof ApplicationInsights\r\n */\r\n AnalyticsPlugin.prototype.trackException = function (exception, customProperties) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * @description Custom error handler for Application Insights Analytics\r\n * @param {IAutoExceptionTelemetry} exception\r\n * @memberof ApplicationInsights\r\n */\r\n AnalyticsPlugin.prototype._onerror = function (exception) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n AnalyticsPlugin.prototype.addTelemetryInitializer = function (telemetryInitializer) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n AnalyticsPlugin.prototype.initialize = function (config, core, extensions, pluginChain) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n AnalyticsPlugin.Version = '2.8.18'; // Not currently used anywhere\r\n AnalyticsPlugin.getDefaultConfig = _getDefaultConfig;\r\n return AnalyticsPlugin;\r\n}(BaseTelemetryPlugin));\r\nexport { AnalyticsPlugin };\r\n//# sourceMappingURL=AnalyticsPlugin.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { __extends } from \"tslib\";\r\nimport { createClassFromInterface } from \"@microsoft/applicationinsights-core-js\";\r\nfunction _aiNameFunc(baseName) {\r\n var aiName = \"ai.\" + baseName + \".\";\r\n return function (name) {\r\n return aiName + name;\r\n };\r\n}\r\nvar _aiApplication = _aiNameFunc(\"application\");\r\nvar _aiDevice = _aiNameFunc(\"device\");\r\nvar _aiLocation = _aiNameFunc(\"location\");\r\nvar _aiOperation = _aiNameFunc(\"operation\");\r\nvar _aiSession = _aiNameFunc(\"session\");\r\nvar _aiUser = _aiNameFunc(\"user\");\r\nvar _aiCloud = _aiNameFunc(\"cloud\");\r\nvar _aiInternal = _aiNameFunc(\"internal\");\r\nvar ContextTagKeys = /** @class */ (function (_super) {\r\n __extends(ContextTagKeys, _super);\r\n function ContextTagKeys() {\r\n return _super.call(this) || this;\r\n }\r\n return ContextTagKeys;\r\n}(createClassFromInterface({\r\n applicationVersion: _aiApplication(\"ver\"),\r\n applicationBuild: _aiApplication(\"build\"),\r\n applicationTypeId: _aiApplication(\"typeId\"),\r\n applicationId: _aiApplication(\"applicationId\"),\r\n applicationLayer: _aiApplication(\"layer\"),\r\n deviceId: _aiDevice(\"id\"),\r\n deviceIp: _aiDevice(\"ip\"),\r\n deviceLanguage: _aiDevice(\"language\"),\r\n deviceLocale: _aiDevice(\"locale\"),\r\n deviceModel: _aiDevice(\"model\"),\r\n deviceFriendlyName: _aiDevice(\"friendlyName\"),\r\n deviceNetwork: _aiDevice(\"network\"),\r\n deviceNetworkName: _aiDevice(\"networkName\"),\r\n deviceOEMName: _aiDevice(\"oemName\"),\r\n deviceOS: _aiDevice(\"os\"),\r\n deviceOSVersion: _aiDevice(\"osVersion\"),\r\n deviceRoleInstance: _aiDevice(\"roleInstance\"),\r\n deviceRoleName: _aiDevice(\"roleName\"),\r\n deviceScreenResolution: _aiDevice(\"screenResolution\"),\r\n deviceType: _aiDevice(\"type\"),\r\n deviceMachineName: _aiDevice(\"machineName\"),\r\n deviceVMName: _aiDevice(\"vmName\"),\r\n deviceBrowser: _aiDevice(\"browser\"),\r\n deviceBrowserVersion: _aiDevice(\"browserVersion\"),\r\n locationIp: _aiLocation(\"ip\"),\r\n locationCountry: _aiLocation(\"country\"),\r\n locationProvince: _aiLocation(\"province\"),\r\n locationCity: _aiLocation(\"city\"),\r\n operationId: _aiOperation(\"id\"),\r\n operationName: _aiOperation(\"name\"),\r\n operationParentId: _aiOperation(\"parentId\"),\r\n operationRootId: _aiOperation(\"rootId\"),\r\n operationSyntheticSource: _aiOperation(\"syntheticSource\"),\r\n operationCorrelationVector: _aiOperation(\"correlationVector\"),\r\n sessionId: _aiSession(\"id\"),\r\n sessionIsFirst: _aiSession(\"isFirst\"),\r\n sessionIsNew: _aiSession(\"isNew\"),\r\n userAccountAcquisitionDate: _aiUser(\"accountAcquisitionDate\"),\r\n userAccountId: _aiUser(\"accountId\"),\r\n userAgent: _aiUser(\"userAgent\"),\r\n userId: _aiUser(\"id\"),\r\n userStoreRegion: _aiUser(\"storeRegion\"),\r\n userAuthUserId: _aiUser(\"authUserId\"),\r\n userAnonymousUserAcquisitionDate: _aiUser(\"anonUserAcquisitionDate\"),\r\n userAuthenticatedUserAcquisitionDate: _aiUser(\"authUserAcquisitionDate\"),\r\n cloudName: _aiCloud(\"name\"),\r\n cloudRole: _aiCloud(\"role\"),\r\n cloudRoleVer: _aiCloud(\"roleVer\"),\r\n cloudRoleInstance: _aiCloud(\"roleInstance\"),\r\n cloudEnvironment: _aiCloud(\"environment\"),\r\n cloudLocation: _aiCloud(\"location\"),\r\n cloudDeploymentUnit: _aiCloud(\"deploymentUnit\"),\r\n internalNodeName: _aiInternal(\"nodeName\"),\r\n internalSdkVersion: _aiInternal(\"sdkVersion\"),\r\n internalAgentVersion: _aiInternal(\"agentVersion\"),\r\n internalSnippet: _aiInternal(\"snippet\"),\r\n internalSdkSrc: _aiInternal(\"sdkSrc\")\r\n})));\r\nexport { ContextTagKeys };\r\n//# sourceMappingURL=ContextTagKeys.js.map","import { ContextTagKeys } from \"./Contracts/ContextTagKeys\";\r\nexport var Extensions = {\r\n UserExt: \"user\",\r\n DeviceExt: \"device\",\r\n TraceExt: \"trace\",\r\n WebExt: \"web\",\r\n AppExt: \"app\",\r\n OSExt: \"os\",\r\n SessionExt: \"ses\",\r\n SDKExt: \"sdk\"\r\n};\r\nexport var CtxTagKeys = new ContextTagKeys();\r\n//# sourceMappingURL=PartAExtensions.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { toISOString } from \"@microsoft/applicationinsights-core-js\";\r\nimport { strNotSpecified } from \"../../Constants\";\r\nimport { _DYN_NAME } from \"../../__DynamicConstants\";\r\nimport { dataSanitizeString } from \"./DataSanitizer\";\r\nvar Envelope = /** @class */ (function () {\r\n /**\r\n * Constructs a new instance of telemetry data.\r\n */\r\n function Envelope(logger, data, name) {\r\n var _this = this;\r\n var _self = this;\r\n _self.ver = 1;\r\n _self.sampleRate = 100.0;\r\n _self.tags = {};\r\n _self[_DYN_NAME /* @min:%2ename */] = dataSanitizeString(logger, name) || strNotSpecified;\r\n _self.data = data;\r\n _self.time = toISOString(new Date());\r\n _self.aiDataContract = {\r\n time: 1 /* FieldType.Required */,\r\n iKey: 1 /* FieldType.Required */,\r\n name: 1 /* FieldType.Required */,\r\n sampleRate: function () {\r\n return (_this.sampleRate === 100) ? 4 /* FieldType.Hidden */ : 1 /* FieldType.Required */;\r\n },\r\n tags: 1 /* FieldType.Required */,\r\n data: 1 /* FieldType.Required */\r\n };\r\n }\r\n return Envelope;\r\n}());\r\nexport { Envelope };\r\n//# sourceMappingURL=Envelope.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nvar Data = /** @class */ (function () {\r\n /**\r\n * Constructs a new instance of telemetry data.\r\n */\r\n function Data(baseType, data) {\r\n /**\r\n * The data contract for serializing this object.\r\n */\r\n this.aiDataContract = {\r\n baseType: 1 /* FieldType.Required */,\r\n baseData: 1 /* FieldType.Required */\r\n };\r\n this.baseType = baseType;\r\n this.baseData = data;\r\n }\r\n return Data;\r\n}());\r\nexport { Data };\r\n//# sourceMappingURL=Data.js.map","import { __assign } from \"tslib\";\r\nimport { CtxTagKeys, Data, Envelope, Event, Exception, HttpMethod, Metric, PageView, PageViewPerformance, RemoteDependencyData, SampleRate, Trace, dataSanitizeString } from \"@microsoft/applicationinsights-common\";\r\nimport { _throwInternal, _warnToConsole, getJSON, hasJSON, isNullOrUndefined, isNumber, isString, isTruthy, objForEachKey, optimizeObject, setValue, toISOString } from \"@microsoft/applicationinsights-core-js\";\r\nimport { STR_DURATION } from \"./InternalConstants\";\r\nimport { _DYN_DATA, _DYN_DATA_TYPE, _DYN_DEVICE_TYPE, _DYN_ENVELOPE_TYPE, _DYN_LENGTH, _DYN_MEASUREMENTS, _DYN_NAME, _DYN_STRINGIFY, _DYN_TAGS, _DYN_TO_STRING, _DYN_TRACE_ID } from \"./__DynamicConstants\";\r\n// these two constants are used to filter out properties not needed when trying to extract custom properties and measurements from the incoming payload\r\nvar strBaseType = \"baseType\";\r\nvar strBaseData = \"baseData\";\r\nvar strProperties = \"properties\";\r\nvar strTrue = \"true\";\r\nfunction _setValueIf(target, field, value) {\r\n return setValue(target, field, value, isTruthy);\r\n}\r\n/*\r\n * Maps Part A data from CS 4.0\r\n */\r\nfunction _extractPartAExtensions(logger, item, env) {\r\n // todo: switch to keys from common in this method\r\n var envTags = env[_DYN_TAGS /* @min:%2etags */] = env[_DYN_TAGS /* @min:%2etags */] || {};\r\n var itmExt = item.ext = item.ext || {};\r\n var itmTags = item[_DYN_TAGS /* @min:%2etags */] = item[_DYN_TAGS /* @min:%2etags */] || [];\r\n var extUser = itmExt.user;\r\n if (extUser) {\r\n _setValueIf(envTags, CtxTagKeys.userAuthUserId, extUser.authId);\r\n _setValueIf(envTags, CtxTagKeys.userId, extUser.id || extUser.localId);\r\n }\r\n var extApp = itmExt.app;\r\n if (extApp) {\r\n _setValueIf(envTags, CtxTagKeys.sessionId, extApp.sesId);\r\n }\r\n var extDevice = itmExt.device;\r\n if (extDevice) {\r\n _setValueIf(envTags, CtxTagKeys.deviceId, extDevice.id || extDevice.localId);\r\n _setValueIf(envTags, CtxTagKeys[_DYN_DEVICE_TYPE /* @min:%2edeviceType */], extDevice.deviceClass);\r\n _setValueIf(envTags, CtxTagKeys.deviceIp, extDevice.ip);\r\n _setValueIf(envTags, CtxTagKeys.deviceModel, extDevice.model);\r\n _setValueIf(envTags, CtxTagKeys[_DYN_DEVICE_TYPE /* @min:%2edeviceType */], extDevice[_DYN_DEVICE_TYPE /* @min:%2edeviceType */]);\r\n }\r\n var web = item.ext.web;\r\n if (web) {\r\n _setValueIf(envTags, CtxTagKeys.deviceLanguage, web.browserLang);\r\n _setValueIf(envTags, CtxTagKeys.deviceBrowserVersion, web.browserVer);\r\n _setValueIf(envTags, CtxTagKeys.deviceBrowser, web.browser);\r\n var envData = env[_DYN_DATA /* @min:%2edata */] = env[_DYN_DATA /* @min:%2edata */] || {};\r\n var envBaseData = envData[strBaseData] = envData[strBaseData] || {};\r\n var envProps = envBaseData[strProperties] = envBaseData[strProperties] || {};\r\n _setValueIf(envProps, \"domain\", web.domain);\r\n _setValueIf(envProps, \"isManual\", web.isManual ? strTrue : null);\r\n _setValueIf(envProps, \"screenRes\", web.screenRes);\r\n _setValueIf(envProps, \"userConsent\", web.userConsent ? strTrue : null);\r\n }\r\n var extOs = itmExt.os;\r\n if (extOs) {\r\n _setValueIf(envTags, CtxTagKeys.deviceOS, extOs[_DYN_NAME /* @min:%2ename */]);\r\n }\r\n // No support for mapping Trace.traceState to 2.0 as it is currently empty\r\n var extTrace = itmExt.trace;\r\n if (extTrace) {\r\n _setValueIf(envTags, CtxTagKeys.operationParentId, extTrace.parentID);\r\n _setValueIf(envTags, CtxTagKeys.operationName, dataSanitizeString(logger, extTrace[_DYN_NAME /* @min:%2ename */]));\r\n _setValueIf(envTags, CtxTagKeys.operationId, extTrace[_DYN_TRACE_ID /* @min:%2etraceID */]);\r\n }\r\n // Sample 4.0 schema\r\n // {\r\n // \"time\" : \"2018-09-05T22:51:22.4936Z\",\r\n // \"name\" : \"MetricWithNamespace\",\r\n // \"iKey\" : \"ABC-5a4cbd20-e601-4ef5-a3c6-5d6577e4398e\",\r\n // \"ext\": { \"cloud\": {\r\n // \"role\": \"WATSON3\",\r\n // \"roleInstance\": \"CO4AEAP00000260\"\r\n // },\r\n // \"device\": {}, \"correlation\": {} },\r\n // \"tags\": [\r\n // { \"amazon.region\" : \"east2\" },\r\n // { \"os.expid\" : \"wp:02df239\" }\r\n // ]\r\n // }\r\n var tgs = {};\r\n // deals with tags.push({object})\r\n for (var i = itmTags[_DYN_LENGTH /* @min:%2elength */] - 1; i >= 0; i--) {\r\n var tg = itmTags[i];\r\n objForEachKey(tg, function (key, value) {\r\n tgs[key] = value;\r\n });\r\n itmTags.splice(i, 1);\r\n }\r\n // deals with tags[key]=value (and handles hasOwnProperty)\r\n objForEachKey(itmTags, function (tg, value) {\r\n tgs[tg] = value;\r\n });\r\n var theTags = __assign(__assign({}, envTags), tgs);\r\n if (!theTags[CtxTagKeys.internalSdkVersion]) {\r\n // Append a version in case it is not already set\r\n theTags[CtxTagKeys.internalSdkVersion] = dataSanitizeString(logger, \"javascript:\".concat(EnvelopeCreator.Version), 64);\r\n }\r\n env[_DYN_TAGS /* @min:%2etags */] = optimizeObject(theTags);\r\n}\r\nfunction _extractPropsAndMeasurements(data, properties, measurements) {\r\n if (!isNullOrUndefined(data)) {\r\n objForEachKey(data, function (key, value) {\r\n if (isNumber(value)) {\r\n measurements[key] = value;\r\n }\r\n else if (isString(value)) {\r\n properties[key] = value;\r\n }\r\n else if (hasJSON()) {\r\n properties[key] = getJSON()[_DYN_STRINGIFY /* @min:%2estringify */](value);\r\n }\r\n });\r\n }\r\n}\r\nfunction _convertPropsUndefinedToCustomDefinedValue(properties, customUndefinedValue) {\r\n if (!isNullOrUndefined(properties)) {\r\n objForEachKey(properties, function (key, value) {\r\n properties[key] = value || customUndefinedValue;\r\n });\r\n }\r\n}\r\n// TODO: Do we want this to take logger as arg or use this._logger as nonstatic?\r\nfunction _createEnvelope(logger, envelopeType, telemetryItem, data) {\r\n var envelope = new Envelope(logger, data, envelopeType);\r\n _setValueIf(envelope, \"sampleRate\", telemetryItem[SampleRate]);\r\n if ((telemetryItem[strBaseData] || {}).startTime) {\r\n envelope.time = toISOString(telemetryItem[strBaseData].startTime);\r\n }\r\n envelope.iKey = telemetryItem.iKey;\r\n var iKeyNoDashes = telemetryItem.iKey.replace(/-/g, \"\");\r\n envelope[_DYN_NAME /* @min:%2ename */] = envelope[_DYN_NAME /* @min:%2ename */].replace(\"{0}\", iKeyNoDashes);\r\n // extract all extensions from ctx\r\n _extractPartAExtensions(logger, telemetryItem, envelope);\r\n // loop through the envelope tags (extension of Part A) and pick out the ones that should go in outgoing envelope tags\r\n telemetryItem[_DYN_TAGS /* @min:%2etags */] = telemetryItem[_DYN_TAGS /* @min:%2etags */] || [];\r\n return optimizeObject(envelope);\r\n}\r\nfunction EnvelopeCreatorInit(logger, telemetryItem) {\r\n if (isNullOrUndefined(telemetryItem[strBaseData])) {\r\n _throwInternal(logger, 1 /* eLoggingSeverity.CRITICAL */, 46 /* _eInternalMessageId.TelemetryEnvelopeInvalid */, \"telemetryItem.baseData cannot be null.\");\r\n }\r\n}\r\nexport var EnvelopeCreator = {\r\n Version: '2.8.18'\r\n};\r\nexport function DependencyEnvelopeCreator(logger, telemetryItem, customUndefinedValue) {\r\n EnvelopeCreatorInit(logger, telemetryItem);\r\n var customMeasurements = telemetryItem[strBaseData][_DYN_MEASUREMENTS /* @min:%2emeasurements */] || {};\r\n var customProperties = telemetryItem[strBaseData][strProperties] || {};\r\n _extractPropsAndMeasurements(telemetryItem[_DYN_DATA /* @min:%2edata */], customProperties, customMeasurements);\r\n if (!isNullOrUndefined(customUndefinedValue)) {\r\n _convertPropsUndefinedToCustomDefinedValue(customProperties, customUndefinedValue);\r\n }\r\n var bd = telemetryItem[strBaseData];\r\n if (isNullOrUndefined(bd)) {\r\n _warnToConsole(logger, \"Invalid input for dependency data\");\r\n return null;\r\n }\r\n var method = bd[strProperties] && bd[strProperties][HttpMethod] ? bd[strProperties][HttpMethod] : \"GET\";\r\n var remoteDepData = new RemoteDependencyData(logger, bd.id, bd.target, bd[_DYN_NAME /* @min:%2ename */], bd[STR_DURATION /* @min:%2eduration */], bd.success, bd.responseCode, method, bd.type, bd.correlationContext, customProperties, customMeasurements);\r\n var data = new Data(RemoteDependencyData[_DYN_DATA_TYPE /* @min:%2edataType */], remoteDepData);\r\n return _createEnvelope(logger, RemoteDependencyData[_DYN_ENVELOPE_TYPE /* @min:%2eenvelopeType */], telemetryItem, data);\r\n}\r\nexport function EventEnvelopeCreator(logger, telemetryItem, customUndefinedValue) {\r\n EnvelopeCreatorInit(logger, telemetryItem);\r\n var customProperties = {};\r\n var customMeasurements = {};\r\n if (telemetryItem[strBaseType] !== Event[_DYN_DATA_TYPE /* @min:%2edataType */]) {\r\n customProperties[\"baseTypeSource\"] = telemetryItem[strBaseType]; // save the passed in base type as a property\r\n }\r\n if (telemetryItem[strBaseType] === Event[_DYN_DATA_TYPE /* @min:%2edataType */]) { // take collection\r\n customProperties = telemetryItem[strBaseData][strProperties] || {};\r\n customMeasurements = telemetryItem[strBaseData][_DYN_MEASUREMENTS /* @min:%2emeasurements */] || {};\r\n }\r\n else { // if its not a known type, convert to custom event\r\n if (telemetryItem[strBaseData]) {\r\n _extractPropsAndMeasurements(telemetryItem[strBaseData], customProperties, customMeasurements);\r\n }\r\n }\r\n // Extract root level properties from part C telemetryItem.data\r\n _extractPropsAndMeasurements(telemetryItem[_DYN_DATA /* @min:%2edata */], customProperties, customMeasurements);\r\n if (!isNullOrUndefined(customUndefinedValue)) {\r\n _convertPropsUndefinedToCustomDefinedValue(customProperties, customUndefinedValue);\r\n }\r\n var eventName = telemetryItem[strBaseData][_DYN_NAME /* @min:%2ename */];\r\n var eventData = new Event(logger, eventName, customProperties, customMeasurements);\r\n var data = new Data(Event[_DYN_DATA_TYPE /* @min:%2edataType */], eventData);\r\n return _createEnvelope(logger, Event[_DYN_ENVELOPE_TYPE /* @min:%2eenvelopeType */], telemetryItem, data);\r\n}\r\nexport function ExceptionEnvelopeCreator(logger, telemetryItem, customUndefinedValue) {\r\n EnvelopeCreatorInit(logger, telemetryItem);\r\n // Extract root level properties from part C telemetryItem.data\r\n var customMeasurements = telemetryItem[strBaseData][_DYN_MEASUREMENTS /* @min:%2emeasurements */] || {};\r\n var customProperties = telemetryItem[strBaseData][strProperties] || {};\r\n _extractPropsAndMeasurements(telemetryItem[_DYN_DATA /* @min:%2edata */], customProperties, customMeasurements);\r\n if (!isNullOrUndefined(customUndefinedValue)) {\r\n _convertPropsUndefinedToCustomDefinedValue(customProperties, customUndefinedValue);\r\n }\r\n var bd = telemetryItem[strBaseData];\r\n var exData = Exception.CreateFromInterface(logger, bd, customProperties, customMeasurements);\r\n var data = new Data(Exception[_DYN_DATA_TYPE /* @min:%2edataType */], exData);\r\n return _createEnvelope(logger, Exception[_DYN_ENVELOPE_TYPE /* @min:%2eenvelopeType */], telemetryItem, data);\r\n}\r\nexport function MetricEnvelopeCreator(logger, telemetryItem, customUndefinedValue) {\r\n EnvelopeCreatorInit(logger, telemetryItem);\r\n var baseData = telemetryItem[strBaseData];\r\n var props = baseData[strProperties] || {};\r\n var measurements = baseData[_DYN_MEASUREMENTS /* @min:%2emeasurements */] || {};\r\n _extractPropsAndMeasurements(telemetryItem[_DYN_DATA /* @min:%2edata */], props, measurements);\r\n if (!isNullOrUndefined(customUndefinedValue)) {\r\n _convertPropsUndefinedToCustomDefinedValue(props, customUndefinedValue);\r\n }\r\n var baseMetricData = new Metric(logger, baseData[_DYN_NAME /* @min:%2ename */], baseData.average, baseData.sampleCount, baseData.min, baseData.max, baseData.stdDev, props, measurements);\r\n var data = new Data(Metric[_DYN_DATA_TYPE /* @min:%2edataType */], baseMetricData);\r\n return _createEnvelope(logger, Metric[_DYN_ENVELOPE_TYPE /* @min:%2eenvelopeType */], telemetryItem, data);\r\n}\r\nexport function PageViewEnvelopeCreator(logger, telemetryItem, customUndefinedValue) {\r\n EnvelopeCreatorInit(logger, telemetryItem);\r\n // Since duration is not part of the domain properties in Common Schema, extract it from part C\r\n var duration;\r\n var baseData = telemetryItem[strBaseData];\r\n if (!isNullOrUndefined(baseData) &&\r\n !isNullOrUndefined(baseData[strProperties]) &&\r\n !isNullOrUndefined(baseData[strProperties][STR_DURATION])) { // from part B properties\r\n duration = baseData[strProperties][STR_DURATION];\r\n delete baseData[strProperties][STR_DURATION];\r\n }\r\n else if (!isNullOrUndefined(telemetryItem[_DYN_DATA /* @min:%2edata */]) &&\r\n !isNullOrUndefined(telemetryItem[_DYN_DATA /* @min:%2edata */][STR_DURATION])) { // from custom properties\r\n duration = telemetryItem[_DYN_DATA /* @min:%2edata */][STR_DURATION];\r\n delete telemetryItem[_DYN_DATA /* @min:%2edata */][STR_DURATION];\r\n }\r\n var bd = telemetryItem[strBaseData];\r\n // special case: pageview.id is grabbed from current operation id. Analytics plugin is decoupled from properties plugin, so this is done here instead. This can be made a default telemetry intializer instead if needed to be decoupled from channel\r\n var currentContextId;\r\n if (((telemetryItem.ext || {}).trace || {})[_DYN_TRACE_ID /* @min:%2etraceID */]) {\r\n currentContextId = telemetryItem.ext.trace[_DYN_TRACE_ID /* @min:%2etraceID */];\r\n }\r\n var id = bd.id || currentContextId;\r\n var name = bd[_DYN_NAME /* @min:%2ename */];\r\n var url = bd.uri;\r\n var properties = bd[strProperties] || {};\r\n var measurements = bd[_DYN_MEASUREMENTS /* @min:%2emeasurements */] || {};\r\n // refUri is a field that Breeze still does not recognize as part of Part B. For now, put it in Part C until it supports it as a domain property\r\n if (!isNullOrUndefined(bd.refUri)) {\r\n properties[\"refUri\"] = bd.refUri;\r\n }\r\n // pageType is a field that Breeze still does not recognize as part of Part B. For now, put it in Part C until it supports it as a domain property\r\n if (!isNullOrUndefined(bd.pageType)) {\r\n properties[\"pageType\"] = bd.pageType;\r\n }\r\n // isLoggedIn is a field that Breeze still does not recognize as part of Part B. For now, put it in Part C until it supports it as a domain property\r\n if (!isNullOrUndefined(bd.isLoggedIn)) {\r\n properties[\"isLoggedIn\"] = bd.isLoggedIn[_DYN_TO_STRING /* @min:%2etoString */]();\r\n }\r\n // pageTags is a field that Breeze still does not recognize as part of Part B. For now, put it in Part C until it supports it as a domain property\r\n if (!isNullOrUndefined(bd[strProperties])) {\r\n var pageTags = bd[strProperties];\r\n objForEachKey(pageTags, function (key, value) {\r\n properties[key] = value;\r\n });\r\n }\r\n _extractPropsAndMeasurements(telemetryItem[_DYN_DATA /* @min:%2edata */], properties, measurements);\r\n if (!isNullOrUndefined(customUndefinedValue)) {\r\n _convertPropsUndefinedToCustomDefinedValue(properties, customUndefinedValue);\r\n }\r\n var pageViewData = new PageView(logger, name, url, duration, properties, measurements, id);\r\n var data = new Data(PageView[_DYN_DATA_TYPE /* @min:%2edataType */], pageViewData);\r\n return _createEnvelope(logger, PageView[_DYN_ENVELOPE_TYPE /* @min:%2eenvelopeType */], telemetryItem, data);\r\n}\r\nexport function PageViewPerformanceEnvelopeCreator(logger, telemetryItem, customUndefinedValue) {\r\n EnvelopeCreatorInit(logger, telemetryItem);\r\n var bd = telemetryItem[strBaseData];\r\n var name = bd[_DYN_NAME /* @min:%2ename */];\r\n var url = bd.uri || bd.url;\r\n var properties = bd[strProperties] || {};\r\n var measurements = bd[_DYN_MEASUREMENTS /* @min:%2emeasurements */] || {};\r\n _extractPropsAndMeasurements(telemetryItem[_DYN_DATA /* @min:%2edata */], properties, measurements);\r\n if (!isNullOrUndefined(customUndefinedValue)) {\r\n _convertPropsUndefinedToCustomDefinedValue(properties, customUndefinedValue);\r\n }\r\n var baseData = new PageViewPerformance(logger, name, url, undefined, properties, measurements, bd);\r\n var data = new Data(PageViewPerformance[_DYN_DATA_TYPE /* @min:%2edataType */], baseData);\r\n return _createEnvelope(logger, PageViewPerformance[_DYN_ENVELOPE_TYPE /* @min:%2eenvelopeType */], telemetryItem, data);\r\n}\r\nexport function TraceEnvelopeCreator(logger, telemetryItem, customUndefinedValue) {\r\n EnvelopeCreatorInit(logger, telemetryItem);\r\n var message = telemetryItem[strBaseData].message;\r\n var severityLevel = telemetryItem[strBaseData].severityLevel;\r\n var props = telemetryItem[strBaseData][strProperties] || {};\r\n var measurements = telemetryItem[strBaseData][_DYN_MEASUREMENTS /* @min:%2emeasurements */] || {};\r\n _extractPropsAndMeasurements(telemetryItem[_DYN_DATA /* @min:%2edata */], props, measurements);\r\n if (!isNullOrUndefined(customUndefinedValue)) {\r\n _convertPropsUndefinedToCustomDefinedValue(props, customUndefinedValue);\r\n }\r\n var baseData = new Trace(logger, message, severityLevel, props, measurements);\r\n var data = new Data(Trace[_DYN_DATA_TYPE /* @min:%2edataType */], baseData);\r\n return _createEnvelope(logger, Trace[_DYN_ENVELOPE_TYPE /* @min:%2eenvelopeType */], telemetryItem, data);\r\n}\r\n//# sourceMappingURL=EnvelopeCreator.js.map","import { createUniqueNamespace, eventOff, eventOn, getDocument, getNavigator, getWindow, isNullOrUndefined, isUndefined, mergeEvtNamespace } from \"@microsoft/applicationinsights-core-js\";\r\nimport { _DYN_IS_ONLINE, _DYN_ON_LINE } from \"./__DynamicConstants\";\r\nfunction _disableEvents(target, evtNamespace) {\r\n eventOff(target, null, null, evtNamespace);\r\n}\r\n/**\r\n * Create a new OfflineListener instance to monitor browser online / offline events\r\n * @param parentEvtNamespace - The parent event namespace to append to any specific events for this instance\r\n */\r\nexport function createOfflineListener(parentEvtNamespace) {\r\n var _a;\r\n var _document = getDocument();\r\n var _navigator = getNavigator(); // Gets the window.navigator or workerNavigator depending on the global\r\n var _isListening = false;\r\n var _onlineStatus = true;\r\n var _evtNamespace = mergeEvtNamespace(createUniqueNamespace(\"OfflineListener\"), parentEvtNamespace);\r\n try {\r\n if (_enableEvents(getWindow())) {\r\n _isListening = true;\r\n }\r\n if (_document) {\r\n // Also attach to the document.body or document\r\n var target = _document.body || _document;\r\n if (target.ononline) {\r\n if (_enableEvents(target)) {\r\n _isListening = true;\r\n }\r\n }\r\n }\r\n if (_isListening) {\r\n // We are listening to events so lets set the current status rather than assuming we are online #1538\r\n if (_navigator && !isNullOrUndefined(_navigator[_DYN_ON_LINE /* @min:%2eonLine */])) { // navigator.onLine is undefined in react-native\r\n _onlineStatus = _navigator[_DYN_ON_LINE /* @min:%2eonLine */];\r\n }\r\n }\r\n }\r\n catch (e) {\r\n // this makes react-native less angry\r\n _isListening = false;\r\n }\r\n function _enableEvents(target) {\r\n var enabled = false;\r\n if (target) {\r\n enabled = eventOn(target, \"online\", _setOnline, _evtNamespace);\r\n if (enabled) {\r\n eventOn(target, \"offline\", _setOffline, _evtNamespace);\r\n }\r\n }\r\n return enabled;\r\n }\r\n function _setOnline() {\r\n _onlineStatus = true;\r\n }\r\n function _setOffline() {\r\n _onlineStatus = false;\r\n }\r\n function _isOnline() {\r\n var result = true;\r\n if (_isListening) {\r\n result = _onlineStatus;\r\n }\r\n else if (_navigator && !isNullOrUndefined(_navigator[_DYN_ON_LINE /* @min:%2eonLine */])) { // navigator.onLine is undefined in react-native\r\n result = _navigator[_DYN_ON_LINE /* @min:%2eonLine */];\r\n }\r\n return result;\r\n }\r\n function _unload() {\r\n var win = getWindow();\r\n if (win && _isListening) {\r\n _disableEvents(win, _evtNamespace);\r\n if (_document) {\r\n // Also attach to the document.body or document\r\n var target = _document.body || _document;\r\n if (!isUndefined(target.ononline)) {\r\n _disableEvents(target, _evtNamespace);\r\n }\r\n }\r\n _isListening = false;\r\n }\r\n }\r\n return _a = {},\r\n _a[_DYN_IS_ONLINE /* @min:isOnline */] = _isOnline,\r\n _a.isListening = function () { return _isListening; },\r\n _a.unload = _unload,\r\n _a;\r\n}\r\n//# sourceMappingURL=Offline.js.map","import { __extends } from \"tslib\";\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { utlGetSessionStorage, utlSetSessionStorage } from \"@microsoft/applicationinsights-common\";\r\nimport { _throwInternal, arrForEach, arrIndexOf, dumpObj, getExceptionName, getJSON, isArray, isFunction, isString } from \"@microsoft/applicationinsights-core-js\";\r\nimport { _DYN_BATCH_PAYLOADS, _DYN_BUFFER_OVERRIDE, _DYN_CLEAR, _DYN_CLEAR_SENT, _DYN_COUNT, _DYN_EMIT_LINE_DELIMITED_0, _DYN_ENQUEUE, _DYN_EVENTS_LIMIT_IN_MEM, _DYN_LENGTH, _DYN_MARK_AS_SENT, _DYN_NAME_PREFIX, _DYN_PUSH, _DYN_STRINGIFY, _DYN__BUFFER__KEY, _DYN__MAX__BUFFER__SIZE, _DYN__SENT__BUFFER__KEY } from \"./__DynamicConstants\";\r\nvar BaseSendBuffer = /** @class */ (function () {\r\n function BaseSendBuffer(logger, config) {\r\n var _buffer = [];\r\n var _bufferFullMessageSent = false;\r\n this._get = function () {\r\n return _buffer;\r\n };\r\n this._set = function (buffer) {\r\n _buffer = buffer;\r\n return _buffer;\r\n };\r\n dynamicProto(BaseSendBuffer, this, function (_self) {\r\n _self[_DYN_ENQUEUE /* @min:%2eenqueue */] = function (payload) {\r\n if (_self[_DYN_COUNT /* @min:%2ecount */]() >= config[_DYN_EVENTS_LIMIT_IN_MEM /* @min:%2eeventsLimitInMem */]()) {\r\n // sent internal log only once per page view\r\n if (!_bufferFullMessageSent) {\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 105 /* _eInternalMessageId.InMemoryStorageBufferFull */, \"Maximum in-memory buffer size reached: \" + _self[_DYN_COUNT /* @min:%2ecount */](), true);\r\n _bufferFullMessageSent = true;\r\n }\r\n return;\r\n }\r\n _buffer[_DYN_PUSH /* @min:%2epush */](payload);\r\n };\r\n _self[_DYN_COUNT /* @min:%2ecount */] = function () {\r\n return _buffer[_DYN_LENGTH /* @min:%2elength */];\r\n };\r\n _self.size = function () {\r\n var size = _buffer[_DYN_LENGTH /* @min:%2elength */];\r\n for (var lp = 0; lp < _buffer[_DYN_LENGTH /* @min:%2elength */]; lp++) {\r\n size += _buffer[lp][_DYN_LENGTH /* @min:%2elength */];\r\n }\r\n if (!config[_DYN_EMIT_LINE_DELIMITED_0 /* @min:%2eemitLineDelimitedJson */]()) {\r\n size += 2;\r\n }\r\n return size;\r\n };\r\n _self[_DYN_CLEAR /* @min:%2eclear */] = function () {\r\n _buffer = [];\r\n _bufferFullMessageSent = false;\r\n };\r\n _self.getItems = function () {\r\n return _buffer.slice(0);\r\n };\r\n _self[_DYN_BATCH_PAYLOADS /* @min:%2ebatchPayloads */] = function (payload) {\r\n if (payload && payload[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n var batch = config[_DYN_EMIT_LINE_DELIMITED_0 /* @min:%2eemitLineDelimitedJson */]() ?\r\n payload.join(\"\\n\") :\r\n \"[\" + payload.join(\",\") + \"]\";\r\n return batch;\r\n }\r\n return null;\r\n };\r\n });\r\n }\r\n BaseSendBuffer.prototype.enqueue = function (payload) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n BaseSendBuffer.prototype.count = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n return 0;\r\n };\r\n BaseSendBuffer.prototype.size = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n return 0;\r\n };\r\n BaseSendBuffer.prototype.clear = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n BaseSendBuffer.prototype.getItems = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n return null;\r\n };\r\n BaseSendBuffer.prototype.batchPayloads = function (payload) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n return null;\r\n };\r\n return BaseSendBuffer;\r\n}());\r\n/*\r\n * An array based send buffer.\r\n */\r\nvar ArraySendBuffer = /** @class */ (function (_super) {\r\n __extends(ArraySendBuffer, _super);\r\n function ArraySendBuffer(logger, config) {\r\n var _this = _super.call(this, logger, config) || this;\r\n dynamicProto(ArraySendBuffer, _this, function (_self, _base) {\r\n _self[_DYN_MARK_AS_SENT /* @min:%2emarkAsSent */] = function (payload) {\r\n _base[_DYN_CLEAR /* @min:%2eclear */]();\r\n };\r\n _self[_DYN_CLEAR_SENT /* @min:%2eclearSent */] = function (payload) {\r\n // not supported\r\n };\r\n });\r\n return _this;\r\n }\r\n ArraySendBuffer.prototype.markAsSent = function (payload) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n ArraySendBuffer.prototype.clearSent = function (payload) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n return ArraySendBuffer;\r\n}(BaseSendBuffer));\r\nexport { ArraySendBuffer };\r\n/*\r\n * Session storage buffer holds a copy of all unsent items in the browser session storage.\r\n */\r\nvar SessionStorageSendBuffer = /** @class */ (function (_super) {\r\n __extends(SessionStorageSendBuffer, _super);\r\n function SessionStorageSendBuffer(logger, config) {\r\n var _this = _super.call(this, logger, config) || this;\r\n var _bufferFullMessageSent = false;\r\n var _a = config[_DYN_BUFFER_OVERRIDE /* @min:%2ebufferOverride */]() || { getItem: utlGetSessionStorage, setItem: utlSetSessionStorage }, getItem = _a.getItem, setItem = _a.setItem;\r\n dynamicProto(SessionStorageSendBuffer, _this, function (_self, _base) {\r\n var bufferItems = _getBuffer(SessionStorageSendBuffer[_DYN__BUFFER__KEY /* @min:%2eBUFFER_KEY */]);\r\n var notDeliveredItems = _getBuffer(SessionStorageSendBuffer[_DYN__SENT__BUFFER__KEY /* @min:%2eSENT_BUFFER_KEY */]);\r\n var buffer = _self._set(bufferItems.concat(notDeliveredItems));\r\n // If the buffer has too many items, drop items from the end.\r\n if (buffer[_DYN_LENGTH /* @min:%2elength */] > SessionStorageSendBuffer[_DYN__MAX__BUFFER__SIZE /* @min:%2eMAX_BUFFER_SIZE */]) {\r\n buffer[_DYN_LENGTH /* @min:%2elength */] = SessionStorageSendBuffer[_DYN__MAX__BUFFER__SIZE /* @min:%2eMAX_BUFFER_SIZE */];\r\n }\r\n _setBuffer(SessionStorageSendBuffer[_DYN__SENT__BUFFER__KEY /* @min:%2eSENT_BUFFER_KEY */], []);\r\n _setBuffer(SessionStorageSendBuffer[_DYN__BUFFER__KEY /* @min:%2eBUFFER_KEY */], buffer);\r\n _self[_DYN_ENQUEUE /* @min:%2eenqueue */] = function (payload) {\r\n if (_self[_DYN_COUNT /* @min:%2ecount */]() >= SessionStorageSendBuffer[_DYN__MAX__BUFFER__SIZE /* @min:%2eMAX_BUFFER_SIZE */]) {\r\n // sent internal log only once per page view\r\n if (!_bufferFullMessageSent) {\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 67 /* _eInternalMessageId.SessionStorageBufferFull */, \"Maximum buffer size reached: \" + _self[_DYN_COUNT /* @min:%2ecount */](), true);\r\n _bufferFullMessageSent = true;\r\n }\r\n return;\r\n }\r\n _base[_DYN_ENQUEUE /* @min:%2eenqueue */](payload);\r\n _setBuffer(SessionStorageSendBuffer[_DYN__BUFFER__KEY /* @min:%2eBUFFER_KEY */], _self._get());\r\n };\r\n _self[_DYN_CLEAR /* @min:%2eclear */] = function () {\r\n _base[_DYN_CLEAR /* @min:%2eclear */]();\r\n _setBuffer(SessionStorageSendBuffer[_DYN__BUFFER__KEY /* @min:%2eBUFFER_KEY */], _self._get());\r\n _setBuffer(SessionStorageSendBuffer[_DYN__SENT__BUFFER__KEY /* @min:%2eSENT_BUFFER_KEY */], []);\r\n _bufferFullMessageSent = false;\r\n };\r\n _self[_DYN_MARK_AS_SENT /* @min:%2emarkAsSent */] = function (payload) {\r\n _setBuffer(SessionStorageSendBuffer[_DYN__BUFFER__KEY /* @min:%2eBUFFER_KEY */], _self._set(_removePayloadsFromBuffer(payload, _self._get())));\r\n var sentElements = _getBuffer(SessionStorageSendBuffer[_DYN__SENT__BUFFER__KEY /* @min:%2eSENT_BUFFER_KEY */]);\r\n if (sentElements instanceof Array && payload instanceof Array) {\r\n sentElements = sentElements.concat(payload);\r\n if (sentElements[_DYN_LENGTH /* @min:%2elength */] > SessionStorageSendBuffer[_DYN__MAX__BUFFER__SIZE /* @min:%2eMAX_BUFFER_SIZE */]) {\r\n // We send telemetry normally. If the SENT_BUFFER is too big we don't add new elements\r\n // until we receive a response from the backend and the buffer has free space again (see clearSent method)\r\n _throwInternal(logger, 1 /* eLoggingSeverity.CRITICAL */, 67 /* _eInternalMessageId.SessionStorageBufferFull */, \"Sent buffer reached its maximum size: \" + sentElements[_DYN_LENGTH /* @min:%2elength */], true);\r\n sentElements[_DYN_LENGTH /* @min:%2elength */] = SessionStorageSendBuffer[_DYN__MAX__BUFFER__SIZE /* @min:%2eMAX_BUFFER_SIZE */];\r\n }\r\n _setBuffer(SessionStorageSendBuffer[_DYN__SENT__BUFFER__KEY /* @min:%2eSENT_BUFFER_KEY */], sentElements);\r\n }\r\n };\r\n _self[_DYN_CLEAR_SENT /* @min:%2eclearSent */] = function (payload) {\r\n var sentElements = _getBuffer(SessionStorageSendBuffer[_DYN__SENT__BUFFER__KEY /* @min:%2eSENT_BUFFER_KEY */]);\r\n sentElements = _removePayloadsFromBuffer(payload, sentElements);\r\n _setBuffer(SessionStorageSendBuffer[_DYN__SENT__BUFFER__KEY /* @min:%2eSENT_BUFFER_KEY */], sentElements);\r\n };\r\n function _removePayloadsFromBuffer(payloads, buffer) {\r\n var remaining = [];\r\n arrForEach(buffer, function (value) {\r\n if (!isFunction(value) && arrIndexOf(payloads, value) === -1) {\r\n remaining[_DYN_PUSH /* @min:%2epush */](value);\r\n }\r\n });\r\n return remaining;\r\n }\r\n function _getBuffer(key) {\r\n var prefixedKey = key;\r\n try {\r\n prefixedKey = config[_DYN_NAME_PREFIX /* @min:%2enamePrefix */] && config[_DYN_NAME_PREFIX /* @min:%2enamePrefix */]() ? config[_DYN_NAME_PREFIX /* @min:%2enamePrefix */]() + \"_\" + prefixedKey : prefixedKey;\r\n var bufferJson = getItem(logger, prefixedKey);\r\n if (bufferJson) {\r\n var buffer_1 = getJSON().parse(bufferJson);\r\n if (isString(buffer_1)) {\r\n // When using some version prototype.js the stringify / parse cycle does not decode array's correctly\r\n buffer_1 = getJSON().parse(buffer_1);\r\n }\r\n if (buffer_1 && isArray(buffer_1)) {\r\n return buffer_1;\r\n }\r\n }\r\n }\r\n catch (e) {\r\n _throwInternal(logger, 1 /* eLoggingSeverity.CRITICAL */, 42 /* _eInternalMessageId.FailedToRestoreStorageBuffer */, \" storage key: \" + prefixedKey + \", \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n return [];\r\n }\r\n function _setBuffer(key, buffer) {\r\n var prefixedKey = key;\r\n try {\r\n prefixedKey = config[_DYN_NAME_PREFIX /* @min:%2enamePrefix */] && config[_DYN_NAME_PREFIX /* @min:%2enamePrefix */]() ? config[_DYN_NAME_PREFIX /* @min:%2enamePrefix */]() + \"_\" + prefixedKey : prefixedKey;\r\n var bufferJson = JSON[_DYN_STRINGIFY /* @min:%2estringify */](buffer);\r\n setItem(logger, prefixedKey, bufferJson);\r\n }\r\n catch (e) {\r\n // if there was an error, clear the buffer\r\n // telemetry is stored in the _buffer array so we won't loose any items\r\n setItem(logger, prefixedKey, JSON[_DYN_STRINGIFY /* @min:%2estringify */]([]));\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 41 /* _eInternalMessageId.FailedToSetStorageBuffer */, \" storage key: \" + prefixedKey + \", \" + getExceptionName(e) + \". Buffer cleared\", { exception: dumpObj(e) });\r\n }\r\n }\r\n });\r\n return _this;\r\n }\r\n SessionStorageSendBuffer.prototype.enqueue = function (payload) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n SessionStorageSendBuffer.prototype.clear = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n SessionStorageSendBuffer.prototype.markAsSent = function (payload) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n SessionStorageSendBuffer.prototype.clearSent = function (payload) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n SessionStorageSendBuffer.BUFFER_KEY = \"AI_buffer\";\r\n SessionStorageSendBuffer.SENT_BUFFER_KEY = \"AI_sentBuffer\";\r\n // Maximum number of payloads stored in the buffer. If the buffer is full, new elements will be dropped.\r\n SessionStorageSendBuffer.MAX_BUFFER_SIZE = 2000;\r\n return SessionStorageSendBuffer;\r\n}(BaseSendBuffer));\r\nexport { SessionStorageSendBuffer };\r\n//# sourceMappingURL=SendBuffer.js.map","var _a;\r\nimport { __assign, __extends } from \"tslib\";\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { BreezeChannelIdentifier, DEFAULT_BREEZE_ENDPOINT, DEFAULT_BREEZE_PATH, DisabledPropertyName, Event, Exception, Metric, PageView, PageViewPerformance, ProcessLegacy, RemoteDependencyData, RequestHeaders, SampleRate, Trace, isInternalApplicationInsightsEndpoint, utlCanUseSessionStorage, utlSetStoragePrefix } from \"@microsoft/applicationinsights-common\";\r\nimport { BaseTelemetryPlugin, _throwInternal, _warnToConsole, arrForEach, arrIndexOf, createUniqueNamespace, dateNow, dumpObj, getExceptionName, getIEVersion, getJSON, getNavigator, getWindow, isArray, isBeaconsSupported, isFetchSupported, isNullOrUndefined, isXhrSupported, mergeEvtNamespace, objForEachKey, objKeys, useXDomainRequest } from \"@microsoft/applicationinsights-core-js\";\r\nimport { DependencyEnvelopeCreator, EventEnvelopeCreator, ExceptionEnvelopeCreator, MetricEnvelopeCreator, PageViewEnvelopeCreator, PageViewPerformanceEnvelopeCreator, TraceEnvelopeCreator } from \"./EnvelopeCreator\";\r\nimport { createOfflineListener } from \"./Offline\";\r\nimport { ArraySendBuffer, SessionStorageSendBuffer } from \"./SendBuffer\";\r\nimport { Serializer } from \"./Serializer\";\r\nimport { Sample } from \"./TelemetryProcessors/Sample\";\r\nimport { _DYN_BASE_TYPE, _DYN_BATCH_PAYLOADS, _DYN_BUFFER_OVERRIDE, _DYN_CLEAR, _DYN_CLEAR_SENT, _DYN_CONVERT_UNDEFINED, _DYN_COUNT, _DYN_CUSTOM_HEADERS, _DYN_DIAG_LOG, _DYN_DISABLE_INSTRUMENTAT7, _DYN_DISABLE_TELEMETRY, _DYN_DISABLE_XHR, _DYN_EMIT_LINE_DELIMITED_0, _DYN_ENABLE_SESSION_STORA4, _DYN_ENDPOINT_URL, _DYN_ENQUEUE, _DYN_EVENTS_LIMIT_IN_MEM, _DYN_EVENTS_SEND_REQUEST, _DYN_INSTRUMENTATION_KEY, _DYN_IS_BEACON_API_DISABL3, _DYN_IS_ONLINE, _DYN_IS_RETRY_DISABLED, _DYN_ITEMS_ACCEPTED, _DYN_ITEMS_RECEIVED, _DYN_LENGTH, _DYN_MARK_AS_SENT, _DYN_MAX_BATCH_INTERVAL, _DYN_MAX_BATCH_SIZE_IN_BY1, _DYN_NAME_PREFIX, _DYN_ONUNLOAD_DISABLE_BEA2, _DYN_ONUNLOAD_DISABLE_FET5, _DYN_PUSH, _DYN_SAMPLE_RATE, _DYN_SAMPLING_PERCENTAGE, _DYN_SET_REQUEST_HEADER, _DYN_TAGS, _DYN_TRIGGER_SEND, _DYN__BUFFER, _DYN__ON_ERROR, _DYN__ON_PARTIAL_SUCCESS, _DYN__ON_SUCCESS, _DYN__SENDER, _DYN__SENDER_CONFIG, _DYN__XHR_READY_STATE_CHA6 } from \"./__DynamicConstants\";\r\nvar FetchSyncRequestSizeLimitBytes = 65000; // approx 64kb (the current Edge, Firefox and Chrome max limit)\r\nfunction _getResponseText(xhr) {\r\n try {\r\n return xhr.responseText;\r\n }\r\n catch (e) {\r\n // Best effort, as XHR may throw while XDR wont so just ignore\r\n }\r\n return null;\r\n}\r\nfunction _getDefaultAppInsightsChannelConfig() {\r\n var _a;\r\n var defaultValue;\r\n var defaultCustomHeaders;\r\n // set default values\r\n return _a = {\r\n endpointUrl: function () { return DEFAULT_BREEZE_ENDPOINT + DEFAULT_BREEZE_PATH; }\r\n },\r\n _a[_DYN_EMIT_LINE_DELIMITED_0 /* @min:emitLineDelimitedJson */] = function () { return false; },\r\n _a[_DYN_MAX_BATCH_INTERVAL /* @min:maxBatchInterval */] = function () { return 15000; },\r\n _a[_DYN_MAX_BATCH_SIZE_IN_BY1 /* @min:maxBatchSizeInBytes */] = function () { return 102400; },\r\n _a[_DYN_DISABLE_TELEMETRY /* @min:disableTelemetry */] = function () { return false; },\r\n _a[_DYN_ENABLE_SESSION_STORA4 /* @min:enableSessionStorageBuffer */] = function () { return true; },\r\n _a[_DYN_BUFFER_OVERRIDE /* @min:bufferOverride */] = function () { return false; },\r\n _a[_DYN_IS_RETRY_DISABLED /* @min:isRetryDisabled */] = function () { return false; },\r\n _a[_DYN_IS_BEACON_API_DISABL3 /* @min:isBeaconApiDisabled */] = function () { return true; },\r\n _a[_DYN_DISABLE_XHR /* @min:disableXhr */] = function () { return false; },\r\n _a[_DYN_ONUNLOAD_DISABLE_FET5 /* @min:onunloadDisableFetch */] = function () { return false; },\r\n _a[_DYN_ONUNLOAD_DISABLE_BEA2 /* @min:onunloadDisableBeacon */] = function () { return false; },\r\n _a[_DYN_INSTRUMENTATION_KEY /* @min:instrumentationKey */] = function () { return defaultValue; },\r\n _a[_DYN_NAME_PREFIX /* @min:namePrefix */] = function () { return defaultValue; },\r\n _a[_DYN_SAMPLING_PERCENTAGE /* @min:samplingPercentage */] = function () { return 100; },\r\n _a[_DYN_CUSTOM_HEADERS /* @min:customHeaders */] = function () { return defaultCustomHeaders; },\r\n _a[_DYN_CONVERT_UNDEFINED /* @min:convertUndefined */] = function () { return defaultValue; },\r\n _a[_DYN_EVENTS_LIMIT_IN_MEM /* @min:eventsLimitInMem */] = function () { return 10000; },\r\n _a.retryCodes = function () { return null; },\r\n _a;\r\n}\r\nvar EnvelopeTypeCreator = (_a = {},\r\n _a[Event.dataType] = EventEnvelopeCreator,\r\n _a[Trace.dataType] = TraceEnvelopeCreator,\r\n _a[PageView.dataType] = PageViewEnvelopeCreator,\r\n _a[PageViewPerformance.dataType] = PageViewPerformanceEnvelopeCreator,\r\n _a[Exception.dataType] = ExceptionEnvelopeCreator,\r\n _a[Metric.dataType] = MetricEnvelopeCreator,\r\n _a[RemoteDependencyData.dataType] = DependencyEnvelopeCreator,\r\n _a);\r\nvar Sender = /** @class */ (function (_super) {\r\n __extends(Sender, _super);\r\n function Sender() {\r\n var _this = _super.call(this) || this;\r\n _this.priority = 1001;\r\n _this.identifier = BreezeChannelIdentifier;\r\n /**\r\n * The configuration for this sender instance\r\n */\r\n _this._senderConfig = _getDefaultAppInsightsChannelConfig();\r\n // Don't set the defaults here, set them in the _initDefaults() as this is also called during unload\r\n var _consecutiveErrors; // How many times in a row a retryable error condition has occurred.\r\n var _retryAt; // The time to retry at in milliseconds from 1970/01/01 (this makes the timer calculation easy).\r\n var _lastSend; // The time of the last send operation.\r\n var _paused; // Flag indicating that the sending should be paused\r\n var _timeoutHandle; // Handle to the timer for delayed sending of batches of data.\r\n var _serializer;\r\n var _stamp_specific_redirects;\r\n var _headers;\r\n var _syncFetchPayload = 0; // Keep track of the outstanding sync fetch payload total (as sync fetch has limits)\r\n var _fallbackSender; // The sender to use if the payload size is too large\r\n var _syncUnloadSender; // The identified sender to use for the synchronous unload stage\r\n var _offlineListener;\r\n var _evtNamespace;\r\n var _retryCodes;\r\n dynamicProto(Sender, _this, function (_self, _base) {\r\n _initDefaults();\r\n _self.pause = function () {\r\n _clearScheduledTimer();\r\n _paused = true;\r\n };\r\n _self.resume = function () {\r\n if (_paused) {\r\n _paused = false;\r\n _retryAt = null;\r\n // flush if we have exceeded the max-size already\r\n if (_self._buffer.size() > _self._senderConfig[_DYN_MAX_BATCH_SIZE_IN_BY1 /* @min:%2emaxBatchSizeInBytes */]()) {\r\n _self[_DYN_TRIGGER_SEND /* @min:%2etriggerSend */](true, null, 10 /* SendRequestReason.MaxBatchSize */);\r\n }\r\n _setupTimer();\r\n }\r\n };\r\n _self.flush = function (isAsync, callBack, sendReason) {\r\n if (isAsync === void 0) { isAsync = true; }\r\n if (!_paused) {\r\n // Clear the normal schedule timer as we are going to try and flush ASAP\r\n _clearScheduledTimer();\r\n try {\r\n _self[_DYN_TRIGGER_SEND /* @min:%2etriggerSend */](isAsync, null, sendReason || 1 /* SendRequestReason.ManualFlush */);\r\n }\r\n catch (e) {\r\n _throwInternal(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 1 /* eLoggingSeverity.CRITICAL */, 22 /* _eInternalMessageId.FlushFailed */, \"flush failed, telemetry will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n }\r\n };\r\n _self.onunloadFlush = function () {\r\n if (!_paused) {\r\n if ((_self._senderConfig[_DYN_ONUNLOAD_DISABLE_BEA2 /* @min:%2eonunloadDisableBeacon */]() === false || _self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_IS_BEACON_API_DISABL3 /* @min:%2eisBeaconApiDisabled */]() === false) && isBeaconsSupported()) {\r\n try {\r\n _self[_DYN_TRIGGER_SEND /* @min:%2etriggerSend */](true, _doUnloadSend, 2 /* SendRequestReason.Unload */);\r\n }\r\n catch (e) {\r\n _throwInternal(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 1 /* eLoggingSeverity.CRITICAL */, 20 /* _eInternalMessageId.FailedToSendQueuedTelemetry */, \"failed to flush with beacon sender on page unload, telemetry will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n }\r\n else {\r\n _self.flush();\r\n }\r\n }\r\n };\r\n _self.addHeader = function (name, value) {\r\n _headers[name] = value;\r\n };\r\n _self.initialize = function (config, core, extensions, pluginChain) {\r\n if (_self.isInitialized()) {\r\n _throwInternal(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 1 /* eLoggingSeverity.CRITICAL */, 28 /* _eInternalMessageId.SenderNotInitialized */, \"Sender is already initialized\");\r\n }\r\n _base.initialize(config, core, extensions, pluginChain);\r\n var ctx = _self._getTelCtx();\r\n var identifier = _self.identifier;\r\n _serializer = new Serializer(core.logger);\r\n _consecutiveErrors = 0;\r\n _retryAt = null;\r\n _lastSend = 0;\r\n _self[_DYN__SENDER /* @min:%2e_sender */] = null;\r\n _stamp_specific_redirects = 0;\r\n var diagLog = _self[_DYN_DIAG_LOG /* @min:%2ediagLog */]();\r\n _evtNamespace = mergeEvtNamespace(createUniqueNamespace(\"Sender\"), core.evtNamespace && core.evtNamespace());\r\n _offlineListener = createOfflineListener(_evtNamespace);\r\n // TODO v3.x: Change the ISenderConfig to not be function calls\r\n var defaultConfig = _getDefaultAppInsightsChannelConfig();\r\n objForEachKey(defaultConfig, function (field, value) {\r\n _self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][field] = function () {\r\n var theValue = ctx.getConfig(identifier, field, value());\r\n if (!theValue && field === \"endpointUrl\") {\r\n // Use the default value (handles empty string in the configuration)\r\n theValue = value();\r\n }\r\n return theValue;\r\n };\r\n });\r\n _retryCodes = _self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */].retryCodes();\r\n if (config.storagePrefix) {\r\n utlSetStoragePrefix(config.storagePrefix);\r\n }\r\n var useSessionStorage = _self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_ENABLE_SESSION_STORA4 /* @min:%2eenableSessionStorageBuffer */]() &&\r\n !!(_self._senderConfig[_DYN_BUFFER_OVERRIDE /* @min:%2ebufferOverride */]() || utlCanUseSessionStorage());\r\n _self[_DYN__BUFFER /* @min:%2e_buffer */] = useSessionStorage\r\n ? new SessionStorageSendBuffer(diagLog, _self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */])\r\n : new ArraySendBuffer(diagLog, _self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */]);\r\n _self._sample = new Sample(_self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_SAMPLING_PERCENTAGE /* @min:%2esamplingPercentage */](), diagLog);\r\n if (!_validateInstrumentationKey(config)) {\r\n _throwInternal(diagLog, 1 /* eLoggingSeverity.CRITICAL */, 100 /* _eInternalMessageId.InvalidInstrumentationKey */, \"Invalid Instrumentation key \" + config[_DYN_INSTRUMENTATION_KEY /* @min:%2einstrumentationKey */]);\r\n }\r\n if (!isInternalApplicationInsightsEndpoint(_self._senderConfig.endpointUrl()) && _self._senderConfig.customHeaders() && _self._senderConfig.customHeaders()[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n arrForEach(_self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_CUSTOM_HEADERS /* @min:%2ecustomHeaders */](), function (customHeader) {\r\n _this.addHeader(customHeader.header, customHeader.value);\r\n });\r\n }\r\n var senderConfig = _self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */];\r\n var sendPostFunc = null;\r\n if (!senderConfig[_DYN_DISABLE_XHR /* @min:%2edisableXhr */]() && useXDomainRequest()) {\r\n sendPostFunc = _xdrSender; // IE 8 and 9\r\n }\r\n else if (!senderConfig[_DYN_DISABLE_XHR /* @min:%2edisableXhr */]() && isXhrSupported()) {\r\n sendPostFunc = _xhrSender;\r\n }\r\n if (!sendPostFunc && isFetchSupported()) {\r\n sendPostFunc = _fetchSender;\r\n }\r\n // always fallback to XHR\r\n _fallbackSender = sendPostFunc || _xhrSender;\r\n if (!senderConfig[_DYN_IS_BEACON_API_DISABL3 /* @min:%2eisBeaconApiDisabled */]() && isBeaconsSupported()) {\r\n // Config is set to always used beacon sending\r\n sendPostFunc = _beaconSender;\r\n }\r\n _self[_DYN__SENDER /* @min:%2e_sender */] = sendPostFunc || _xhrSender;\r\n if (!senderConfig[_DYN_ONUNLOAD_DISABLE_FET5 /* @min:%2eonunloadDisableFetch */]() && isFetchSupported(true)) {\r\n // Try and use the fetch with keepalive\r\n _syncUnloadSender = _fetchKeepAliveSender;\r\n }\r\n else if (isBeaconsSupported()) {\r\n // Try and use sendBeacon\r\n _syncUnloadSender = _beaconSender;\r\n }\r\n else if (!senderConfig[_DYN_DISABLE_XHR /* @min:%2edisableXhr */]() && useXDomainRequest()) {\r\n _syncUnloadSender = _xdrSender; // IE 8 and 9\r\n }\r\n else if (!senderConfig[_DYN_DISABLE_XHR /* @min:%2edisableXhr */]() && isXhrSupported()) {\r\n _syncUnloadSender = _xhrSender;\r\n }\r\n else {\r\n _syncUnloadSender = _fallbackSender;\r\n }\r\n };\r\n _self.processTelemetry = function (telemetryItem, itemCtx) {\r\n itemCtx = _self._getTelCtx(itemCtx);\r\n var diagLogger = itemCtx[_DYN_DIAG_LOG /* @min:%2ediagLog */]();\r\n try {\r\n // if master off switch is set, don't send any data\r\n if (_self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_DISABLE_TELEMETRY /* @min:%2edisableTelemetry */]()) {\r\n // Do not send/save data\r\n return;\r\n }\r\n // validate input\r\n if (!telemetryItem) {\r\n _throwInternal(diagLogger, 1 /* eLoggingSeverity.CRITICAL */, 7 /* _eInternalMessageId.CannotSendEmptyTelemetry */, \"Cannot send empty telemetry\");\r\n return;\r\n }\r\n // validate event\r\n if (telemetryItem.baseData && !telemetryItem[_DYN_BASE_TYPE /* @min:%2ebaseType */]) {\r\n _throwInternal(diagLogger, 1 /* eLoggingSeverity.CRITICAL */, 70 /* _eInternalMessageId.InvalidEvent */, \"Cannot send telemetry without baseData and baseType\");\r\n return;\r\n }\r\n if (!telemetryItem[_DYN_BASE_TYPE /* @min:%2ebaseType */]) {\r\n // Default\r\n telemetryItem[_DYN_BASE_TYPE /* @min:%2ebaseType */] = \"EventData\";\r\n }\r\n // ensure a sender was constructed\r\n if (!_self[_DYN__SENDER /* @min:%2e_sender */]) {\r\n _throwInternal(diagLogger, 1 /* eLoggingSeverity.CRITICAL */, 28 /* _eInternalMessageId.SenderNotInitialized */, \"Sender was not initialized\");\r\n return;\r\n }\r\n // check if this item should be sampled in, else add sampleRate tag\r\n if (!_isSampledIn(telemetryItem)) {\r\n // Item is sampled out, do not send it\r\n _throwInternal(diagLogger, 2 /* eLoggingSeverity.WARNING */, 33 /* _eInternalMessageId.TelemetrySampledAndNotSent */, \"Telemetry item was sampled out and not sent\", { SampleRate: _self._sample[_DYN_SAMPLE_RATE /* @min:%2esampleRate */] });\r\n return;\r\n }\r\n else {\r\n telemetryItem[SampleRate] = _self._sample[_DYN_SAMPLE_RATE /* @min:%2esampleRate */];\r\n }\r\n var convertUndefined = _self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_CONVERT_UNDEFINED /* @min:%2econvertUndefined */]() || undefined;\r\n // construct an envelope that Application Insights endpoint can understand\r\n // if ikey of telemetry is provided and not empty, envelope will use this iKey instead of senderConfig iKey\r\n var defaultEnvelopeIkey = telemetryItem.iKey || _self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_INSTRUMENTATION_KEY /* @min:%2einstrumentationKey */]();\r\n var aiEnvelope_1 = Sender.constructEnvelope(telemetryItem, defaultEnvelopeIkey, diagLogger, convertUndefined);\r\n if (!aiEnvelope_1) {\r\n _throwInternal(diagLogger, 1 /* eLoggingSeverity.CRITICAL */, 47 /* _eInternalMessageId.CreateEnvelopeError */, \"Unable to create an AppInsights envelope\");\r\n return;\r\n }\r\n var doNotSendItem_1 = false;\r\n // this is for running in legacy mode, where customer may already have a custom initializer present\r\n if (telemetryItem[_DYN_TAGS /* @min:%2etags */] && telemetryItem[_DYN_TAGS /* @min:%2etags */][ProcessLegacy]) {\r\n arrForEach(telemetryItem[_DYN_TAGS /* @min:%2etags */][ProcessLegacy], function (callBack) {\r\n try {\r\n if (callBack && callBack(aiEnvelope_1) === false) {\r\n doNotSendItem_1 = true;\r\n _warnToConsole(diagLogger, \"Telemetry processor check returns false\");\r\n }\r\n }\r\n catch (e) {\r\n // log error but dont stop executing rest of the telemetry initializers\r\n // doNotSendItem = true;\r\n _throwInternal(diagLogger, 1 /* eLoggingSeverity.CRITICAL */, 64 /* _eInternalMessageId.TelemetryInitializerFailed */, \"One of telemetry initializers failed, telemetry item will not be sent: \" + getExceptionName(e), { exception: dumpObj(e) }, true);\r\n }\r\n });\r\n delete telemetryItem[_DYN_TAGS /* @min:%2etags */][ProcessLegacy];\r\n }\r\n if (doNotSendItem_1) {\r\n return; // do not send, no need to execute next plugin\r\n }\r\n // check if the incoming payload is too large, truncate if necessary\r\n var payload = _serializer.serialize(aiEnvelope_1);\r\n // flush if we would exceed the max-size limit by adding this item\r\n var buffer = _self[_DYN__BUFFER /* @min:%2e_buffer */];\r\n var bufferSize = buffer.size();\r\n if ((bufferSize + payload[_DYN_LENGTH /* @min:%2elength */]) > _self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_MAX_BATCH_SIZE_IN_BY1 /* @min:%2emaxBatchSizeInBytes */]()) {\r\n if (!_offlineListener || _offlineListener[_DYN_IS_ONLINE /* @min:%2eisOnline */]()) { // only trigger send when currently online\r\n _self[_DYN_TRIGGER_SEND /* @min:%2etriggerSend */](true, null, 10 /* SendRequestReason.MaxBatchSize */);\r\n }\r\n }\r\n // enqueue the payload\r\n buffer[_DYN_ENQUEUE /* @min:%2eenqueue */](payload);\r\n // ensure an invocation timeout is set\r\n _setupTimer();\r\n }\r\n catch (e) {\r\n _throwInternal(diagLogger, 2 /* eLoggingSeverity.WARNING */, 12 /* _eInternalMessageId.FailedAddingTelemetryToBuffer */, \"Failed adding telemetry to the sender's buffer, some telemetry will be lost: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n // hand off the telemetry item to the next plugin\r\n _self.processNext(telemetryItem, itemCtx);\r\n };\r\n /**\r\n * xhr state changes\r\n */\r\n _self[_DYN__XHR_READY_STATE_CHA6 /* @min:%2e_xhrReadyStateChange */] = function (xhr, payload, countOfItemsInPayload) {\r\n if (xhr.readyState === 4) {\r\n _checkResponsStatus(xhr.status, payload, xhr.responseURL, countOfItemsInPayload, _formatErrorMessageXhr(xhr), _getResponseText(xhr) || xhr.response);\r\n }\r\n };\r\n /**\r\n * Immediately send buffered data\r\n * @param async {boolean} - Indicates if the events should be sent asynchronously\r\n * @param forcedSender {SenderFunction} - Indicates the forcedSender, undefined if not passed\r\n */\r\n _self[_DYN_TRIGGER_SEND /* @min:%2etriggerSend */] = function (async, forcedSender, sendReason) {\r\n if (async === void 0) { async = true; }\r\n if (!_paused) {\r\n try {\r\n var buffer = _self[_DYN__BUFFER /* @min:%2e_buffer */];\r\n // Send data only if disableTelemetry is false\r\n if (!_self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_DISABLE_TELEMETRY /* @min:%2edisableTelemetry */]()) {\r\n if (buffer[_DYN_COUNT /* @min:%2ecount */]() > 0) {\r\n var payload = buffer.getItems();\r\n _notifySendRequest(sendReason || 0 /* SendRequestReason.Undefined */, async);\r\n // invoke send\r\n if (forcedSender) {\r\n forcedSender.call(_self, payload, async);\r\n }\r\n else {\r\n _self[_DYN__SENDER /* @min:%2e_sender */](payload, async);\r\n }\r\n }\r\n // update lastSend time to enable throttling\r\n _lastSend = +new Date;\r\n }\r\n else {\r\n buffer[_DYN_CLEAR /* @min:%2eclear */]();\r\n }\r\n _clearScheduledTimer();\r\n }\r\n catch (e) {\r\n /* Ignore this error for IE under v10 */\r\n var ieVer = getIEVersion();\r\n if (!ieVer || ieVer > 9) {\r\n _throwInternal(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 1 /* eLoggingSeverity.CRITICAL */, 40 /* _eInternalMessageId.TransmissionFailed */, \"Telemetry transmission failed, some telemetry will be lost: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n }\r\n }\r\n };\r\n _self._doTeardown = function (unloadCtx, unloadState) {\r\n _self.onunloadFlush();\r\n _offlineListener.unload();\r\n _initDefaults();\r\n };\r\n /**\r\n * error handler\r\n */\r\n _self[_DYN__ON_ERROR /* @min:%2e_onError */] = function (payload, message, event) {\r\n _throwInternal(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 2 /* eLoggingSeverity.WARNING */, 26 /* _eInternalMessageId.OnError */, \"Failed to send telemetry.\", { message: message });\r\n _self._buffer && _self._buffer[_DYN_CLEAR_SENT /* @min:%2eclearSent */](payload);\r\n };\r\n /**\r\n * partial success handler\r\n */\r\n _self[_DYN__ON_PARTIAL_SUCCESS /* @min:%2e_onPartialSuccess */] = function (payload, results) {\r\n var failed = [];\r\n var retry = [];\r\n // Iterate through the reversed array of errors so that splicing doesn't have invalid indexes after the first item.\r\n var errors = results.errors.reverse();\r\n for (var _i = 0, errors_1 = errors; _i < errors_1.length; _i++) {\r\n var error = errors_1[_i];\r\n var extracted = payload.splice(error.index, 1)[0];\r\n if (_isRetriable(error.statusCode)) {\r\n retry[_DYN_PUSH /* @min:%2epush */](extracted);\r\n }\r\n else {\r\n // All other errors, including: 402 (Monthly quota exceeded) and 439 (Too many requests and refresh cache).\r\n failed[_DYN_PUSH /* @min:%2epush */](extracted);\r\n }\r\n }\r\n if (payload[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n _self[_DYN__ON_SUCCESS /* @min:%2e_onSuccess */](payload, results[_DYN_ITEMS_ACCEPTED /* @min:%2eitemsAccepted */]);\r\n }\r\n if (failed[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n _self[_DYN__ON_ERROR /* @min:%2e_onError */](failed, _formatErrorMessageXhr(null, [\"partial success\", results[_DYN_ITEMS_ACCEPTED /* @min:%2eitemsAccepted */], \"of\", results.itemsReceived].join(\" \")));\r\n }\r\n if (retry[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n _resendPayload(retry);\r\n _throwInternal(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 2 /* eLoggingSeverity.WARNING */, 40 /* _eInternalMessageId.TransmissionFailed */, \"Partial success. \" +\r\n \"Delivered: \" + payload[_DYN_LENGTH /* @min:%2elength */] + \", Failed: \" + failed[_DYN_LENGTH /* @min:%2elength */] +\r\n \". Will retry to send \" + retry[_DYN_LENGTH /* @min:%2elength */] + \" our of \" + results[_DYN_ITEMS_RECEIVED /* @min:%2eitemsReceived */] + \" items\");\r\n }\r\n };\r\n /**\r\n * success handler\r\n */\r\n _self[_DYN__ON_SUCCESS /* @min:%2e_onSuccess */] = function (payload, countOfItemsInPayload) {\r\n _self._buffer && _self._buffer[_DYN_CLEAR_SENT /* @min:%2eclearSent */](payload);\r\n };\r\n /**\r\n * xdr state changes\r\n */\r\n _self._xdrOnLoad = function (xdr, payload) {\r\n var responseText = _getResponseText(xdr);\r\n if (xdr && (responseText + \"\" === \"200\" || responseText === \"\")) {\r\n _consecutiveErrors = 0;\r\n _self[_DYN__ON_SUCCESS /* @min:%2e_onSuccess */](payload, 0);\r\n }\r\n else {\r\n var results = _parseResponse(responseText);\r\n if (results && results.itemsReceived && results.itemsReceived > results[_DYN_ITEMS_ACCEPTED /* @min:%2eitemsAccepted */]\r\n && !_self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_IS_RETRY_DISABLED /* @min:%2eisRetryDisabled */]()) {\r\n _self[_DYN__ON_PARTIAL_SUCCESS /* @min:%2e_onPartialSuccess */](payload, results);\r\n }\r\n else {\r\n _self[_DYN__ON_ERROR /* @min:%2e_onError */](payload, _formatErrorMessageXdr(xdr));\r\n }\r\n }\r\n };\r\n function _isSampledIn(envelope) {\r\n return _self._sample.isSampledIn(envelope);\r\n }\r\n function _checkResponsStatus(status, payload, responseUrl, countOfItemsInPayload, errorMessage, res) {\r\n var response = null;\r\n if (!_self._appId) {\r\n response = _parseResponse(res);\r\n if (response && response.appId) {\r\n _self._appId = response.appId;\r\n }\r\n }\r\n if ((status < 200 || status >= 300) && status !== 0) {\r\n // Update End Point url if permanent redirect or moved permanently\r\n // Updates the end point url before retry\r\n if (status === 301 || status === 307 || status === 308) {\r\n if (!_checkAndUpdateEndPointUrl(responseUrl)) {\r\n _self[_DYN__ON_ERROR /* @min:%2e_onError */](payload, errorMessage);\r\n return;\r\n }\r\n }\r\n if (!_self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_IS_RETRY_DISABLED /* @min:%2eisRetryDisabled */]() && _isRetriable(status)) {\r\n _resendPayload(payload);\r\n _throwInternal(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 2 /* eLoggingSeverity.WARNING */, 40 /* _eInternalMessageId.TransmissionFailed */, \". \" +\r\n \"Response code \" + status + \". Will retry to send \" + payload[_DYN_LENGTH /* @min:%2elength */] + \" items.\");\r\n }\r\n else {\r\n _self[_DYN__ON_ERROR /* @min:%2e_onError */](payload, errorMessage);\r\n }\r\n }\r\n else if (_offlineListener && !_offlineListener[_DYN_IS_ONLINE /* @min:%2eisOnline */]()) { // offline\r\n // Note: Don't check for status == 0, since adblock gives this code\r\n if (!_self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_IS_RETRY_DISABLED /* @min:%2eisRetryDisabled */]()) {\r\n var offlineBackOffMultiplier = 10; // arbritrary number\r\n _resendPayload(payload, offlineBackOffMultiplier);\r\n _throwInternal(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 2 /* eLoggingSeverity.WARNING */, 40 /* _eInternalMessageId.TransmissionFailed */, \". Offline - Response Code: \".concat(status, \". Offline status: \").concat(!_offlineListener.isOnline(), \". Will retry to send \").concat(payload.length, \" items.\"));\r\n }\r\n }\r\n else {\r\n // check if the xhr's responseURL or fetch's response.url is same as endpoint url\r\n // TODO after 10 redirects force send telemetry with 'redirect=false' as query parameter.\r\n _checkAndUpdateEndPointUrl(responseUrl);\r\n if (status === 206) {\r\n if (!response) {\r\n response = _parseResponse(res);\r\n }\r\n if (response && !_self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_IS_RETRY_DISABLED /* @min:%2eisRetryDisabled */]()) {\r\n _self[_DYN__ON_PARTIAL_SUCCESS /* @min:%2e_onPartialSuccess */](payload, response);\r\n }\r\n else {\r\n _self[_DYN__ON_ERROR /* @min:%2e_onError */](payload, errorMessage);\r\n }\r\n }\r\n else {\r\n _consecutiveErrors = 0;\r\n _self[_DYN__ON_SUCCESS /* @min:%2e_onSuccess */](payload, countOfItemsInPayload);\r\n }\r\n }\r\n }\r\n function _checkAndUpdateEndPointUrl(responseUrl) {\r\n // Maximum stamp specific redirects allowed(uncomment this when breeze is ready with not allowing redirects feature)\r\n if (_stamp_specific_redirects >= 10) {\r\n // _self._senderConfig.endpointUrl = () => Sender._getDefaultAppInsightsChannelConfig().endpointUrl()+\"/?redirect=false\";\r\n // _stamp_specific_redirects = 0;\r\n return false;\r\n }\r\n if (!isNullOrUndefined(responseUrl) && responseUrl !== \"\") {\r\n if (responseUrl !== _self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_ENDPOINT_URL /* @min:%2eendpointUrl */]()) {\r\n _self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_ENDPOINT_URL /* @min:%2eendpointUrl */] = function () { return responseUrl; };\r\n ++_stamp_specific_redirects;\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n function _doUnloadSend(payload, isAsync) {\r\n if (_syncUnloadSender) {\r\n // We are unloading so always call the sender with sync set to false\r\n _syncUnloadSender(payload, false);\r\n }\r\n else {\r\n // Fallback to the previous beacon Sender (which causes a CORB warning on chrome now)\r\n _beaconSender(payload, isAsync);\r\n }\r\n }\r\n function _doBeaconSend(payload) {\r\n var nav = getNavigator();\r\n var buffer = _self[_DYN__BUFFER /* @min:%2e_buffer */];\r\n var url = _self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_ENDPOINT_URL /* @min:%2eendpointUrl */]();\r\n var batch = _self._buffer[_DYN_BATCH_PAYLOADS /* @min:%2ebatchPayloads */](payload);\r\n // Chrome only allows CORS-safelisted values for the sendBeacon data argument\r\n // see: https://bugs.chromium.org/p/chromium/issues/detail?id=720283\r\n var plainTextBatch = new Blob([batch], { type: \"text/plain;charset=UTF-8\" });\r\n // The sendBeacon method returns true if the user agent is able to successfully queue the data for transfer. Otherwise it returns false.\r\n var queued = nav.sendBeacon(url, plainTextBatch);\r\n if (queued) {\r\n buffer[_DYN_MARK_AS_SENT /* @min:%2emarkAsSent */](payload);\r\n // no response from beaconSender, clear buffer\r\n _self._onSuccess(payload, payload[_DYN_LENGTH /* @min:%2elength */]);\r\n }\r\n return queued;\r\n }\r\n /**\r\n * Send Beacon API request\r\n * @param payload {string} - The data payload to be sent.\r\n * @param isAsync {boolean} - not used\r\n * Note: Beacon API does not support custom headers and we are not able to get\r\n * appId from the backend for the correct correlation.\r\n */\r\n function _beaconSender(payload, isAsync) {\r\n if (isArray(payload) && payload[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n // The sendBeacon method returns true if the user agent is able to successfully queue the data for transfer. Otherwise it returns false.\r\n if (!_doBeaconSend(payload)) {\r\n // Failed to send entire payload so try and split data and try to send as much events as possible\r\n var droppedPayload = [];\r\n for (var lp = 0; lp < payload[_DYN_LENGTH /* @min:%2elength */]; lp++) {\r\n var thePayload = payload[lp];\r\n if (!_doBeaconSend([thePayload])) {\r\n // Can't send anymore, so split the batch and drop the rest\r\n droppedPayload[_DYN_PUSH /* @min:%2epush */](thePayload);\r\n }\r\n }\r\n if (droppedPayload[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n _fallbackSender && _fallbackSender(droppedPayload, true);\r\n _throwInternal(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 2 /* eLoggingSeverity.WARNING */, 40 /* _eInternalMessageId.TransmissionFailed */, \". \" + \"Failed to send telemetry with Beacon API, retried with normal sender.\");\r\n }\r\n }\r\n }\r\n }\r\n /**\r\n * Send XMLHttpRequest\r\n * @param payload {string} - The data payload to be sent.\r\n * @param isAsync {boolean} - Indicates if the request should be sent asynchronously\r\n */\r\n function _xhrSender(payload, isAsync) {\r\n var xhr = new XMLHttpRequest();\r\n var endPointUrl = _self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_ENDPOINT_URL /* @min:%2eendpointUrl */]();\r\n try {\r\n xhr[DisabledPropertyName] = true;\r\n }\r\n catch (e) {\r\n // If the environment has locked down the XMLHttpRequest (preventExtensions and/or freeze), this would\r\n // cause the request to fail and we no telemetry would be sent\r\n }\r\n xhr.open(\"POST\", endPointUrl, isAsync);\r\n xhr[_DYN_SET_REQUEST_HEADER /* @min:%2esetRequestHeader */](\"Content-type\", \"application/json\");\r\n // append Sdk-Context request header only in case of breeze endpoint\r\n if (isInternalApplicationInsightsEndpoint(endPointUrl)) {\r\n xhr[_DYN_SET_REQUEST_HEADER /* @min:%2esetRequestHeader */](RequestHeaders[6 /* eRequestHeaders.sdkContextHeader */], RequestHeaders[7 /* eRequestHeaders.sdkContextHeaderAppIdRequest */]);\r\n }\r\n arrForEach(objKeys(_headers), function (headerName) {\r\n xhr[_DYN_SET_REQUEST_HEADER /* @min:%2esetRequestHeader */](headerName, _headers[headerName]);\r\n });\r\n xhr.onreadystatechange = function () { return _self._xhrReadyStateChange(xhr, payload, payload[_DYN_LENGTH /* @min:%2elength */]); };\r\n xhr.onerror = function (event) { return _self[_DYN__ON_ERROR /* @min:%2e_onError */](payload, _formatErrorMessageXhr(xhr), event); };\r\n // compose an array of payloads\r\n var batch = _self._buffer[_DYN_BATCH_PAYLOADS /* @min:%2ebatchPayloads */](payload);\r\n xhr.send(batch);\r\n _self._buffer[_DYN_MARK_AS_SENT /* @min:%2emarkAsSent */](payload);\r\n }\r\n function _fetchKeepAliveSender(payload, isAsync) {\r\n if (isArray(payload)) {\r\n var payloadSize = payload[_DYN_LENGTH /* @min:%2elength */];\r\n for (var lp = 0; lp < payload[_DYN_LENGTH /* @min:%2elength */]; lp++) {\r\n payloadSize += payload[lp][_DYN_LENGTH /* @min:%2elength */];\r\n }\r\n if ((_syncFetchPayload + payloadSize) <= FetchSyncRequestSizeLimitBytes) {\r\n _doFetchSender(payload, false);\r\n }\r\n else if (isBeaconsSupported()) {\r\n // Fallback to beacon sender as we at least get told which events can't be scheduled\r\n _beaconSender(payload, isAsync);\r\n }\r\n else {\r\n // Payload is going to be too big so just try and send via XHR\r\n _fallbackSender && _fallbackSender(payload, true);\r\n _throwInternal(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 2 /* eLoggingSeverity.WARNING */, 40 /* _eInternalMessageId.TransmissionFailed */, \". \" + \"Failed to send telemetry with Beacon API, retried with xhrSender.\");\r\n }\r\n }\r\n }\r\n /**\r\n * Send fetch API request\r\n * @param payload {string} - The data payload to be sent.\r\n * @param isAsync {boolean} - not used\r\n */\r\n function _fetchSender(payload, isAsync) {\r\n _doFetchSender(payload, true);\r\n }\r\n /**\r\n * Send fetch API request\r\n * @param payload {string} - The data payload to be sent.\r\n * @param isAsync {boolean} - For fetch this identifies whether we are \"unloading\" (false) or a normal request\r\n */\r\n function _doFetchSender(payload, isAsync) {\r\n var _a;\r\n var endPointUrl = _self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_ENDPOINT_URL /* @min:%2eendpointUrl */]();\r\n var batch = _self._buffer[_DYN_BATCH_PAYLOADS /* @min:%2ebatchPayloads */](payload);\r\n var plainTextBatch = new Blob([batch], { type: \"application/json\" });\r\n var requestHeaders = new Headers();\r\n var batchLength = batch[_DYN_LENGTH /* @min:%2elength */];\r\n var ignoreResponse = false;\r\n var responseHandled = false;\r\n // append Sdk-Context request header only in case of breeze endpoint\r\n if (isInternalApplicationInsightsEndpoint(endPointUrl)) {\r\n requestHeaders.append(RequestHeaders[6 /* eRequestHeaders.sdkContextHeader */], RequestHeaders[7 /* eRequestHeaders.sdkContextHeaderAppIdRequest */]);\r\n }\r\n arrForEach(objKeys(_headers), function (headerName) {\r\n requestHeaders.append(headerName, _headers[headerName]);\r\n });\r\n var init = (_a = {\r\n method: \"POST\",\r\n headers: requestHeaders,\r\n body: plainTextBatch\r\n },\r\n _a[DisabledPropertyName] = true // Mark so we don't attempt to track this request\r\n ,\r\n _a);\r\n if (!isAsync) {\r\n init.keepalive = true;\r\n // As a sync request (during unload), it is unlikely that we will get a chance to process the response so\r\n // just like beacon send assume that the events have been accepted and processed\r\n ignoreResponse = true;\r\n _syncFetchPayload += batchLength;\r\n }\r\n var request = new Request(endPointUrl, init);\r\n try {\r\n // Also try and tag the request (just in case the value in init is not copied over)\r\n request[DisabledPropertyName] = true;\r\n }\r\n catch (e) {\r\n // If the environment has locked down the XMLHttpRequest (preventExtensions and/or freeze), this would\r\n // cause the request to fail and we no telemetry would be sent\r\n }\r\n _self._buffer[_DYN_MARK_AS_SENT /* @min:%2emarkAsSent */](payload);\r\n try {\r\n fetch(request).then(function (response) {\r\n if (!isAsync) {\r\n _syncFetchPayload -= batchLength;\r\n batchLength = 0;\r\n }\r\n if (!responseHandled) {\r\n responseHandled = true;\r\n /**\r\n * The Promise returned from fetch() won’t reject on HTTP error status even if the response is an HTTP 404 or 500.\r\n * Instead, it will resolve normally (with ok status set to false), and it will only reject on network failure\r\n * or if anything prevented the request from completing.\r\n */\r\n if (!response.ok) {\r\n _self[_DYN__ON_ERROR /* @min:%2e_onError */](payload, response.statusText);\r\n }\r\n else {\r\n response.text().then(function (text) {\r\n _checkResponsStatus(response.status, payload, response.url, payload[_DYN_LENGTH /* @min:%2elength */], response.statusText, text);\r\n });\r\n }\r\n }\r\n })[\"catch\"](function (error) {\r\n if (!isAsync) {\r\n _syncFetchPayload -= batchLength;\r\n batchLength = 0;\r\n }\r\n if (!responseHandled) {\r\n responseHandled = true;\r\n _self[_DYN__ON_ERROR /* @min:%2e_onError */](payload, error.message);\r\n }\r\n });\r\n }\r\n catch (e) {\r\n if (!responseHandled) {\r\n _self[_DYN__ON_ERROR /* @min:%2e_onError */](payload, dumpObj(e));\r\n }\r\n }\r\n if (ignoreResponse && !responseHandled) {\r\n // Assume success during unload processing as we most likely won't get the response\r\n responseHandled = true;\r\n _self._onSuccess(payload, payload[_DYN_LENGTH /* @min:%2elength */]);\r\n }\r\n }\r\n /**\r\n * Parses the response from the backend.\r\n * @param response - XMLHttpRequest or XDomainRequest response\r\n */\r\n function _parseResponse(response) {\r\n try {\r\n if (response && response !== \"\") {\r\n var result = getJSON().parse(response);\r\n if (result && result.itemsReceived && result.itemsReceived >= result[_DYN_ITEMS_ACCEPTED /* @min:%2eitemsAccepted */] &&\r\n result.itemsReceived - result.itemsAccepted === result.errors[_DYN_LENGTH /* @min:%2elength */]) {\r\n return result;\r\n }\r\n }\r\n }\r\n catch (e) {\r\n _throwInternal(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 1 /* eLoggingSeverity.CRITICAL */, 43 /* _eInternalMessageId.InvalidBackendResponse */, \"Cannot parse the response. \" + getExceptionName(e), {\r\n response: response\r\n });\r\n }\r\n return null;\r\n }\r\n /**\r\n * Resend payload. Adds payload back to the send buffer and setup a send timer (with exponential backoff).\r\n * @param payload\r\n */\r\n function _resendPayload(payload, linearFactor) {\r\n if (linearFactor === void 0) { linearFactor = 1; }\r\n if (!payload || payload[_DYN_LENGTH /* @min:%2elength */] === 0) {\r\n return;\r\n }\r\n var buffer = _self[_DYN__BUFFER /* @min:%2e_buffer */];\r\n buffer[_DYN_CLEAR_SENT /* @min:%2eclearSent */](payload);\r\n _consecutiveErrors++;\r\n for (var _i = 0, payload_1 = payload; _i < payload_1.length; _i++) {\r\n var item = payload_1[_i];\r\n buffer[_DYN_ENQUEUE /* @min:%2eenqueue */](item);\r\n }\r\n // setup timer\r\n _setRetryTime(linearFactor);\r\n _setupTimer();\r\n }\r\n /**\r\n * Calculates the time to wait before retrying in case of an error based on\r\n * http://en.wikipedia.org/wiki/Exponential_backoff\r\n */\r\n function _setRetryTime(linearFactor) {\r\n var SlotDelayInSeconds = 10;\r\n var delayInSeconds;\r\n if (_consecutiveErrors <= 1) {\r\n delayInSeconds = SlotDelayInSeconds;\r\n }\r\n else {\r\n var backOffSlot = (Math.pow(2, _consecutiveErrors) - 1) / 2;\r\n // tslint:disable-next-line:insecure-random\r\n var backOffDelay = Math.floor(Math.random() * backOffSlot * SlotDelayInSeconds) + 1;\r\n backOffDelay = linearFactor * backOffDelay;\r\n delayInSeconds = Math.max(Math.min(backOffDelay, 3600), SlotDelayInSeconds);\r\n }\r\n // TODO: Log the backoff time like the C# version does.\r\n var retryAfterTimeSpan = dateNow() + (delayInSeconds * 1000);\r\n // TODO: Log the retry at time like the C# version does.\r\n _retryAt = retryAfterTimeSpan;\r\n }\r\n /**\r\n * Sets up the timer which triggers actually sending the data.\r\n */\r\n function _setupTimer() {\r\n if (!_timeoutHandle && !_paused) {\r\n var retryInterval = _retryAt ? Math.max(0, _retryAt - dateNow()) : 0;\r\n var timerValue = Math.max(_self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_MAX_BATCH_INTERVAL /* @min:%2emaxBatchInterval */](), retryInterval);\r\n _timeoutHandle = setTimeout(function () {\r\n _timeoutHandle = null;\r\n _self[_DYN_TRIGGER_SEND /* @min:%2etriggerSend */](true, null, 1 /* SendRequestReason.NormalSchedule */);\r\n }, timerValue);\r\n }\r\n }\r\n function _clearScheduledTimer() {\r\n clearTimeout(_timeoutHandle);\r\n _timeoutHandle = null;\r\n _retryAt = null;\r\n }\r\n /**\r\n * Checks if the SDK should resend the payload after receiving this status code from the backend.\r\n * @param statusCode\r\n */\r\n function _isRetriable(statusCode) {\r\n // retryCodes = [] means should not retry\r\n if (!isNullOrUndefined(_retryCodes)) {\r\n return _retryCodes[_DYN_LENGTH /* @min:%2elength */] && arrIndexOf(_retryCodes, statusCode) > -1;\r\n }\r\n return statusCode === 401 // Unauthorized\r\n // Removing as private links can return a 403 which causes excessive retries and session storage usage\r\n //|| statusCode === 403 // Forbidden\r\n || statusCode === 408 // Timeout\r\n || statusCode === 429 // Too many requests.\r\n || statusCode === 500 // Internal server error.\r\n || statusCode === 502 // Bad Gateway.\r\n || statusCode === 503 // Service unavailable.\r\n || statusCode === 504; // Gateway timeout.\r\n }\r\n function _formatErrorMessageXhr(xhr, message) {\r\n if (xhr) {\r\n return \"XMLHttpRequest,Status:\" + xhr.status + \",Response:\" + _getResponseText(xhr) || xhr.response || \"\";\r\n }\r\n return message;\r\n }\r\n /**\r\n * Send XDomainRequest\r\n * @param payload {string} - The data payload to be sent.\r\n * @param isAsync {boolean} - Indicates if the request should be sent asynchronously\r\n *\r\n * Note: XDomainRequest does not support sync requests. This 'isAsync' parameter is added\r\n * to maintain consistency with the xhrSender's contract\r\n * Note: XDomainRequest does not support custom headers and we are not able to get\r\n * appId from the backend for the correct correlation.\r\n */\r\n function _xdrSender(payload, isAsync) {\r\n var buffer = _self[_DYN__BUFFER /* @min:%2e_buffer */];\r\n var _window = getWindow();\r\n var xdr = new XDomainRequest();\r\n xdr.onload = function () { return _self._xdrOnLoad(xdr, payload); };\r\n xdr.onerror = function (event) { return _self[_DYN__ON_ERROR /* @min:%2e_onError */](payload, _formatErrorMessageXdr(xdr), event); };\r\n // XDomainRequest requires the same protocol as the hosting page.\r\n // If the protocol doesn't match, we can't send the telemetry :(.\r\n var hostingProtocol = _window && _window.location && _window.location.protocol || \"\";\r\n if (_self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_ENDPOINT_URL /* @min:%2eendpointUrl */]().lastIndexOf(hostingProtocol, 0) !== 0) {\r\n _throwInternal(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 2 /* eLoggingSeverity.WARNING */, 40 /* _eInternalMessageId.TransmissionFailed */, \". \" +\r\n \"Cannot send XDomain request. The endpoint URL protocol doesn't match the hosting page protocol.\");\r\n buffer[_DYN_CLEAR /* @min:%2eclear */]();\r\n return;\r\n }\r\n var endpointUrl = _self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_ENDPOINT_URL /* @min:%2eendpointUrl */]().replace(/^(https?:)/, \"\");\r\n xdr.open(\"POST\", endpointUrl);\r\n // compose an array of payloads\r\n var batch = buffer[_DYN_BATCH_PAYLOADS /* @min:%2ebatchPayloads */](payload);\r\n xdr.send(batch);\r\n buffer[_DYN_MARK_AS_SENT /* @min:%2emarkAsSent */](payload);\r\n }\r\n function _formatErrorMessageXdr(xdr, message) {\r\n if (xdr) {\r\n return \"XDomainRequest,Response:\" + _getResponseText(xdr) || \"\";\r\n }\r\n return message;\r\n }\r\n // Using function lookups for backward compatibility as the getNotifyMgr() did not exist until after v2.5.6\r\n function _getNotifyMgr() {\r\n var func = \"getNotifyMgr\";\r\n if (_self.core[func]) {\r\n return _self.core[func]();\r\n }\r\n // using _self.core['_notificationManager'] for backward compatibility\r\n return _self.core[\"_notificationManager\"];\r\n }\r\n function _notifySendRequest(sendRequest, isAsync) {\r\n var manager = _getNotifyMgr();\r\n if (manager && manager[_DYN_EVENTS_SEND_REQUEST /* @min:%2eeventsSendRequest */]) {\r\n try {\r\n manager[_DYN_EVENTS_SEND_REQUEST /* @min:%2eeventsSendRequest */](sendRequest, isAsync);\r\n }\r\n catch (e) {\r\n _throwInternal(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 1 /* eLoggingSeverity.CRITICAL */, 74 /* _eInternalMessageId.NotificationException */, \"send request notification failed: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n }\r\n }\r\n /**\r\n * Validate UUID Format\r\n * Specs taken from https://tools.ietf.org/html/rfc4122 and breeze repo\r\n */\r\n function _validateInstrumentationKey(config) {\r\n var disableIKeyValidationFlag = isNullOrUndefined(config[_DYN_DISABLE_INSTRUMENTAT7 /* @min:%2edisableInstrumentationKeyValidation */]) ? false : config[_DYN_DISABLE_INSTRUMENTAT7 /* @min:%2edisableInstrumentationKeyValidation */];\r\n if (disableIKeyValidationFlag) {\r\n return true;\r\n }\r\n var UUID_Regex = \"^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$\";\r\n var regexp = new RegExp(UUID_Regex);\r\n return regexp.test(config[_DYN_INSTRUMENTATION_KEY /* @min:%2einstrumentationKey */]);\r\n }\r\n function _initDefaults() {\r\n _self[_DYN__SENDER /* @min:%2e_sender */] = null;\r\n _self[_DYN__BUFFER /* @min:%2e_buffer */] = null;\r\n _self._appId = null;\r\n _self._sample = null;\r\n _headers = {};\r\n _offlineListener = null;\r\n _consecutiveErrors = 0;\r\n _retryAt = null;\r\n _lastSend = null;\r\n _paused = false;\r\n _timeoutHandle = null;\r\n _serializer = null;\r\n _stamp_specific_redirects = 0;\r\n _syncFetchPayload = 0;\r\n _fallbackSender = null;\r\n _syncUnloadSender = null;\r\n _evtNamespace = null;\r\n }\r\n });\r\n return _this;\r\n }\r\n Sender.constructEnvelope = function (orig, iKey, logger, convertUndefined) {\r\n var envelope;\r\n if (iKey !== orig.iKey && !isNullOrUndefined(iKey)) {\r\n envelope = __assign(__assign({}, orig), { iKey: iKey });\r\n }\r\n else {\r\n envelope = orig;\r\n }\r\n var creator = EnvelopeTypeCreator[envelope.baseType] || EventEnvelopeCreator;\r\n return creator(logger, envelope, convertUndefined);\r\n };\r\n /**\r\n * Pause the sending (transmission) of events, this will cause all events to be batched only until the maximum limits are\r\n * hit at which point new events are dropped. Will also cause events to NOT be sent during page unload, so if Session storage\r\n * is disabled events will be lost.\r\n * SessionStorage Limit is 2000 events, In-Memory (Array) Storage is 10,000 events (can be configured via the eventsLimitInMem).\r\n */\r\n Sender.prototype.pause = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Resume the sending (transmission) of events, this will restart the timer and any batched events will be sent using the normal\r\n * send interval.\r\n */\r\n Sender.prototype.resume = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Flush the batched events immediately (not synchronously).\r\n * Will not flush if the Sender has been paused.\r\n */\r\n Sender.prototype.flush = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Flush the batched events synchronously (if possible -- based on configuration).\r\n * Will not flush if the Send has been paused.\r\n */\r\n Sender.prototype.onunloadFlush = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n Sender.prototype.initialize = function (config, core, extensions, pluginChain) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n Sender.prototype.processTelemetry = function (telemetryItem, itemCtx) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * xhr state changes\r\n */\r\n Sender.prototype._xhrReadyStateChange = function (xhr, payload, countOfItemsInPayload) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Immediately send buffered data\r\n * @param async {boolean} - Indicates if the events should be sent asynchronously\r\n * @param forcedSender {SenderFunction} - Indicates the forcedSender, undefined if not passed\r\n */\r\n Sender.prototype.triggerSend = function (async, forcedSender, sendReason) {\r\n if (async === void 0) { async = true; }\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * error handler\r\n */\r\n Sender.prototype._onError = function (payload, message, event) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * partial success handler\r\n */\r\n Sender.prototype._onPartialSuccess = function (payload, results) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * success handler\r\n */\r\n Sender.prototype._onSuccess = function (payload, countOfItemsInPayload) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * xdr state changes\r\n */\r\n Sender.prototype._xdrOnLoad = function (xdr, payload) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Add header to request\r\n * @param name - Header name.\r\n * @param value - Header value.\r\n */\r\n Sender.prototype.addHeader = function (name, value) {\r\n // @DynamicProtoStub - DO NOT add any code as this will be removed during packaging\r\n };\r\n return Sender;\r\n}(BaseTelemetryPlugin));\r\nexport { Sender };\r\n//# sourceMappingURL=Sender.js.map","import dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { _throwInternal, getJSON, isArray, isFunction, isObject, objForEachKey } from \"@microsoft/applicationinsights-core-js\";\r\nimport { _DYN_LENGTH, _DYN_PUSH, _DYN_STRINGIFY, _DYN_TO_STRING } from \"./__DynamicConstants\";\r\nvar Serializer = /** @class */ (function () {\r\n function Serializer(logger) {\r\n dynamicProto(Serializer, this, function (_self) {\r\n /**\r\n * Serializes the current object to a JSON string.\r\n */\r\n _self.serialize = function (input) {\r\n var output = _serializeObject(input, \"root\");\r\n try {\r\n return getJSON()[_DYN_STRINGIFY /* @min:%2estringify */](output);\r\n }\r\n catch (e) {\r\n // if serialization fails return an empty string\r\n _throwInternal(logger, 1 /* eLoggingSeverity.CRITICAL */, 48 /* _eInternalMessageId.CannotSerializeObject */, (e && isFunction(e[_DYN_TO_STRING /* @min:%2etoString */])) ? e[_DYN_TO_STRING /* @min:%2etoString */]() : \"Error serializing object\", null, true);\r\n }\r\n };\r\n function _serializeObject(source, name) {\r\n var circularReferenceCheck = \"__aiCircularRefCheck\";\r\n var output = {};\r\n if (!source) {\r\n _throwInternal(logger, 1 /* eLoggingSeverity.CRITICAL */, 48 /* _eInternalMessageId.CannotSerializeObject */, \"cannot serialize object because it is null or undefined\", { name: name }, true);\r\n return output;\r\n }\r\n if (source[circularReferenceCheck]) {\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 50 /* _eInternalMessageId.CircularReferenceDetected */, \"Circular reference detected while serializing object\", { name: name }, true);\r\n return output;\r\n }\r\n if (!source.aiDataContract) {\r\n // special case for measurements/properties/tags\r\n if (name === \"measurements\") {\r\n output = _serializeStringMap(source, \"number\", name);\r\n }\r\n else if (name === \"properties\") {\r\n output = _serializeStringMap(source, \"string\", name);\r\n }\r\n else if (name === \"tags\") {\r\n output = _serializeStringMap(source, \"string\", name);\r\n }\r\n else if (isArray(source)) {\r\n output = _serializeArray(source, name);\r\n }\r\n else {\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 49 /* _eInternalMessageId.CannotSerializeObjectNonSerializable */, \"Attempting to serialize an object which does not implement ISerializable\", { name: name }, true);\r\n try {\r\n // verify that the object can be stringified\r\n getJSON()[_DYN_STRINGIFY /* @min:%2estringify */](source);\r\n output = source;\r\n }\r\n catch (e) {\r\n // if serialization fails return an empty string\r\n _throwInternal(logger, 1 /* eLoggingSeverity.CRITICAL */, 48 /* _eInternalMessageId.CannotSerializeObject */, (e && isFunction(e[_DYN_TO_STRING /* @min:%2etoString */])) ? e[_DYN_TO_STRING /* @min:%2etoString */]() : \"Error serializing object\", null, true);\r\n }\r\n }\r\n return output;\r\n }\r\n source[circularReferenceCheck] = true;\r\n objForEachKey(source.aiDataContract, function (field, contract) {\r\n var isRequired = (isFunction(contract)) ? (contract() & 1 /* FieldType.Required */) : (contract & 1 /* FieldType.Required */);\r\n var isHidden = (isFunction(contract)) ? (contract() & 4 /* FieldType.Hidden */) : (contract & 4 /* FieldType.Hidden */);\r\n var isArray = contract & 2 /* FieldType.Array */;\r\n var isPresent = source[field] !== undefined;\r\n var isObj = isObject(source[field]) && source[field] !== null;\r\n if (isRequired && !isPresent && !isArray) {\r\n _throwInternal(logger, 1 /* eLoggingSeverity.CRITICAL */, 24 /* _eInternalMessageId.MissingRequiredFieldSpecification */, \"Missing required field specification. The field is required but not present on source\", { field: field, name: name });\r\n // If not in debug mode, continue and hope the error is permissible\r\n }\r\n else if (!isHidden) { // Don't serialize hidden fields\r\n var value = void 0;\r\n if (isObj) {\r\n if (isArray) {\r\n // special case; recurse on each object in the source array\r\n value = _serializeArray(source[field], field);\r\n }\r\n else {\r\n // recurse on the source object in this field\r\n value = _serializeObject(source[field], field);\r\n }\r\n }\r\n else {\r\n // assign the source field to the output even if undefined or required\r\n value = source[field];\r\n }\r\n // only emit this field if the value is defined\r\n if (value !== undefined) {\r\n output[field] = value;\r\n }\r\n }\r\n });\r\n delete source[circularReferenceCheck];\r\n return output;\r\n }\r\n function _serializeArray(sources, name) {\r\n var output;\r\n if (!!sources) {\r\n if (!isArray(sources)) {\r\n _throwInternal(logger, 1 /* eLoggingSeverity.CRITICAL */, 54 /* _eInternalMessageId.ItemNotInArray */, \"This field was specified as an array in the contract but the item is not an array.\\r\\n\", { name: name }, true);\r\n }\r\n else {\r\n output = [];\r\n for (var i = 0; i < sources[_DYN_LENGTH /* @min:%2elength */]; i++) {\r\n var source = sources[i];\r\n var item = _serializeObject(source, name + \"[\" + i + \"]\");\r\n output[_DYN_PUSH /* @min:%2epush */](item);\r\n }\r\n }\r\n }\r\n return output;\r\n }\r\n function _serializeStringMap(map, expectedType, name) {\r\n var output;\r\n if (map) {\r\n output = {};\r\n objForEachKey(map, function (field, value) {\r\n if (expectedType === \"string\") {\r\n if (value === undefined) {\r\n output[field] = \"undefined\";\r\n }\r\n else if (value === null) {\r\n output[field] = \"null\";\r\n }\r\n else if (!value[_DYN_TO_STRING /* @min:%2etoString */]) {\r\n output[field] = \"invalid field: toString() is not defined.\";\r\n }\r\n else {\r\n output[field] = value[_DYN_TO_STRING /* @min:%2etoString */]();\r\n }\r\n }\r\n else if (expectedType === \"number\") {\r\n if (value === undefined) {\r\n output[field] = \"undefined\";\r\n }\r\n else if (value === null) {\r\n output[field] = \"null\";\r\n }\r\n else {\r\n var num = parseFloat(value);\r\n if (isNaN(num)) {\r\n output[field] = \"NaN\";\r\n }\r\n else {\r\n output[field] = num;\r\n }\r\n }\r\n }\r\n else {\r\n output[field] = \"invalid field: \" + name + \" is of unknown type.\";\r\n _throwInternal(logger, 1 /* eLoggingSeverity.CRITICAL */, output[field], null, true);\r\n }\r\n });\r\n }\r\n return output;\r\n }\r\n });\r\n }\r\n /**\r\n * Serializes the current object to a JSON string.\r\n */\r\n Serializer.prototype.serialize = function (input) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n return null;\r\n };\r\n return Serializer;\r\n}());\r\nexport { Serializer };\r\n//# sourceMappingURL=Serializer.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { _DYN_LENGTH } from \"../../__DynamicConstants\";\r\n// (Magic number) DJB algorithm can't work on shorter strings (results in poor distribution\r\nvar MIN_INPUT_LENGTH = 8;\r\nvar HashCodeScoreGenerator = /** @class */ (function () {\r\n function HashCodeScoreGenerator() {\r\n }\r\n HashCodeScoreGenerator.prototype.getHashCodeScore = function (key) {\r\n var score = this.getHashCode(key) / HashCodeScoreGenerator.INT_MAX_VALUE;\r\n return score * 100;\r\n };\r\n HashCodeScoreGenerator.prototype.getHashCode = function (input) {\r\n if (input === \"\") {\r\n return 0;\r\n }\r\n while (input[_DYN_LENGTH /* @min:%2elength */] < MIN_INPUT_LENGTH) {\r\n input = input.concat(input);\r\n }\r\n // 5381 is a magic number: http://stackoverflow.com/questions/10696223/reason-for-5381-number-in-djb-hash-function\r\n var hash = 5381;\r\n for (var i = 0; i < input[_DYN_LENGTH /* @min:%2elength */]; ++i) {\r\n hash = ((hash << 5) + hash) + input.charCodeAt(i);\r\n // 'hash' is of number type which means 53 bit integer (http://www.ecma-international.org/ecma-262/6.0/#sec-ecmascript-language-types-number-type)\r\n // 'hash & hash' will keep it 32 bit integer - just to make it clearer what the result is.\r\n hash = hash & hash;\r\n }\r\n return Math.abs(hash);\r\n };\r\n // We're using 32 bit math, hence max value is (2^31 - 1)\r\n HashCodeScoreGenerator.INT_MAX_VALUE = 2147483647;\r\n return HashCodeScoreGenerator;\r\n}());\r\nexport { HashCodeScoreGenerator };\r\n//# sourceMappingURL=HashCodeScoreGenerator.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { ContextTagKeys } from \"@microsoft/applicationinsights-common\";\r\nimport { _DYN_GET_HASH_CODE_SCORE, _DYN_GET_SAMPLING_SCORE, _DYN_TAGS, _DYN_TRACE_ID } from \"../../__DynamicConstants\";\r\nimport { HashCodeScoreGenerator } from \"./HashCodeScoreGenerator\";\r\nvar SamplingScoreGenerator = /** @class */ (function () {\r\n function SamplingScoreGenerator() {\r\n var _self = this;\r\n var hashCodeGenerator = new HashCodeScoreGenerator();\r\n var keys = new ContextTagKeys();\r\n _self[_DYN_GET_SAMPLING_SCORE /* @min:%2egetSamplingScore */] = function (item) {\r\n var score = 0;\r\n if (item[_DYN_TAGS /* @min:%2etags */] && item[_DYN_TAGS /* @min:%2etags */][keys.userId]) { // search in tags first, then ext\r\n score = hashCodeGenerator.getHashCodeScore(item[_DYN_TAGS /* @min:%2etags */][keys.userId]);\r\n }\r\n else if (item.ext && item.ext.user && item.ext.user.id) {\r\n score = hashCodeGenerator[_DYN_GET_HASH_CODE_SCORE /* @min:%2egetHashCodeScore */](item.ext.user.id);\r\n }\r\n else if (item[_DYN_TAGS /* @min:%2etags */] && item[_DYN_TAGS /* @min:%2etags */][keys.operationId]) { // search in tags first, then ext\r\n score = hashCodeGenerator.getHashCodeScore(item[_DYN_TAGS /* @min:%2etags */][keys.operationId]);\r\n }\r\n else if (item.ext && item.ext.telemetryTrace && item.ext.telemetryTrace[_DYN_TRACE_ID /* @min:%2etraceID */]) {\r\n score = hashCodeGenerator.getHashCodeScore(item.ext.telemetryTrace[_DYN_TRACE_ID /* @min:%2etraceID */]);\r\n }\r\n else {\r\n // tslint:disable-next-line:insecure-random\r\n score = (Math.random() * 100);\r\n }\r\n return score;\r\n };\r\n }\r\n return SamplingScoreGenerator;\r\n}());\r\nexport { SamplingScoreGenerator };\r\n//# sourceMappingURL=SamplingScoreGenerator.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { Metric } from \"@microsoft/applicationinsights-common\";\r\nimport { safeGetLogger } from \"@microsoft/applicationinsights-core-js\";\r\nimport { _DYN_DATA_TYPE, _DYN_GET_SAMPLING_SCORE, _DYN_SAMPLE_RATE } from \"../__DynamicConstants\";\r\nimport { SamplingScoreGenerator } from \"./SamplingScoreGenerators/SamplingScoreGenerator\";\r\nvar Sample = /** @class */ (function () {\r\n function Sample(sampleRate, logger) {\r\n // We're using 32 bit math, hence max value is (2^31 - 1)\r\n this.INT_MAX_VALUE = 2147483647;\r\n var _logger = logger || safeGetLogger(null);\r\n if (sampleRate > 100 || sampleRate < 0) {\r\n _logger.throwInternal(2 /* eLoggingSeverity.WARNING */, 58 /* _eInternalMessageId.SampleRateOutOfRange */, \"Sampling rate is out of range (0..100). Sampling will be disabled, you may be sending too much data which may affect your AI service level.\", { samplingRate: sampleRate }, true);\r\n sampleRate = 100;\r\n }\r\n this[_DYN_SAMPLE_RATE /* @min:%2esampleRate */] = sampleRate;\r\n this.samplingScoreGenerator = new SamplingScoreGenerator();\r\n }\r\n /**\r\n * Determines if an envelope is sampled in (i.e. will be sent) or not (i.e. will be dropped).\r\n */\r\n Sample.prototype.isSampledIn = function (envelope) {\r\n var samplingPercentage = this[_DYN_SAMPLE_RATE /* @min:%2esampleRate */]; // 0 - 100\r\n var isSampledIn = false;\r\n if (samplingPercentage === null || samplingPercentage === undefined || samplingPercentage >= 100) {\r\n return true;\r\n }\r\n else if (envelope.baseType === Metric[_DYN_DATA_TYPE /* @min:%2edataType */]) {\r\n // exclude MetricData telemetry from sampling\r\n return true;\r\n }\r\n isSampledIn = this.samplingScoreGenerator[_DYN_GET_SAMPLING_SCORE /* @min:%2egetSamplingScore */](envelope) < samplingPercentage;\r\n return isSampledIn;\r\n };\r\n return Sample;\r\n}());\r\nexport { Sample };\r\n//# sourceMappingURL=Sample.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { arrReduce, objKeys, strEndsWith } from \"@microsoft/applicationinsights-core-js\";\r\nimport { DEFAULT_BREEZE_ENDPOINT } from \"./Constants\";\r\nimport { _DYN_INGESTIONENDPOINT, _DYN_LENGTH, _DYN_SPLIT, _DYN_TO_LOWER_CASE } from \"./__DynamicConstants\";\r\nvar _FIELDS_SEPARATOR = \";\";\r\nvar _FIELD_KEY_VALUE_SEPARATOR = \"=\";\r\nexport function parseConnectionString(connectionString) {\r\n if (!connectionString) {\r\n return {};\r\n }\r\n var kvPairs = connectionString[_DYN_SPLIT /* @min:%2esplit */](_FIELDS_SEPARATOR);\r\n var result = arrReduce(kvPairs, function (fields, kv) {\r\n var kvParts = kv[_DYN_SPLIT /* @min:%2esplit */](_FIELD_KEY_VALUE_SEPARATOR);\r\n if (kvParts[_DYN_LENGTH /* @min:%2elength */] === 2) { // only save fields with valid formats\r\n var key = kvParts[0][_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]();\r\n var value = kvParts[1];\r\n fields[key] = value;\r\n }\r\n return fields;\r\n }, {});\r\n if (objKeys(result)[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n // this is a valid connection string, so parse the results\r\n if (result.endpointsuffix) {\r\n // use endpoint suffix where overrides are not provided\r\n var locationPrefix = result.location ? result.location + \".\" : \"\";\r\n result[_DYN_INGESTIONENDPOINT /* @min:%2eingestionendpoint */] = result[_DYN_INGESTIONENDPOINT /* @min:%2eingestionendpoint */] || (\"https://\" + locationPrefix + \"dc.\" + result.endpointsuffix);\r\n if (strEndsWith(result[_DYN_INGESTIONENDPOINT /* @min:%2eingestionendpoint */], \"/\")) {\r\n result[_DYN_INGESTIONENDPOINT /* @min:%2eingestionendpoint */] = result[_DYN_INGESTIONENDPOINT /* @min:%2eingestionendpoint */].slice(0, -1);\r\n }\r\n }\r\n // apply the default endpoints\r\n result[_DYN_INGESTIONENDPOINT /* @min:%2eingestionendpoint */] = result[_DYN_INGESTIONENDPOINT /* @min:%2eingestionendpoint */] || DEFAULT_BREEZE_ENDPOINT;\r\n }\r\n return result;\r\n}\r\nexport var ConnectionStringParser = {\r\n parse: parseConnectionString\r\n};\r\n//# sourceMappingURL=ConnectionStringParser.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { isNullOrUndefined } from \"@microsoft/applicationinsights-core-js\";\r\nimport { _DYN_EXTENSION_CONFIG } from \"../__DynamicConstants\";\r\nvar ConfigurationManager = /** @class */ (function () {\r\n function ConfigurationManager() {\r\n }\r\n ConfigurationManager.getConfig = function (config, field, identifier, defaultValue) {\r\n if (defaultValue === void 0) { defaultValue = false; }\r\n var configValue;\r\n if (identifier && config[_DYN_EXTENSION_CONFIG /* @min:%2eextensionConfig */] && config[_DYN_EXTENSION_CONFIG /* @min:%2eextensionConfig */][identifier] && !isNullOrUndefined(config[_DYN_EXTENSION_CONFIG /* @min:%2eextensionConfig */][identifier][field])) {\r\n configValue = config[_DYN_EXTENSION_CONFIG /* @min:%2eextensionConfig */][identifier][field];\r\n }\r\n else {\r\n configValue = config[field];\r\n }\r\n return !isNullOrUndefined(configValue) ? configValue : defaultValue;\r\n };\r\n return ConfigurationManager;\r\n}());\r\nexport { ConfigurationManager };\r\n//# sourceMappingURL=IConfig.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// // Licensed under the MIT License.\r\nimport { _DYN_CONFIG, _DYN_CREATE_NEW, _DYN_FLUSH, _DYN_IDENTIFIER, _DYN_LENGTH, _DYN_ON_COMPLETE, _DYN_PROCESS_NEXT, _DYN_PUSH } from \"../__DynamicConstants\";\r\nimport { arrForEach, isArray, objFreeze, throwError } from \"./HelperFuncs\";\r\nimport { STR_PRIORITY } from \"./InternalConstants\";\r\nimport { createProcessTelemetryContext, createTelemetryProxyChain } from \"./ProcessTelemetryContext\";\r\nimport { initializePlugins } from \"./TelemetryHelpers\";\r\nexport var ChannelControllerPriority = 500;\r\nvar ChannelValidationMessage = \"Channel has invalid priority - \";\r\nfunction _addChannelQueue(channelQueue, queue, core) {\r\n if (queue && isArray(queue) && queue[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n queue = queue.sort(function (a, b) {\r\n return a[STR_PRIORITY /* @min:%2epriority */] - b[STR_PRIORITY /* @min:%2epriority */];\r\n });\r\n arrForEach(queue, function (queueItem) {\r\n if (queueItem[STR_PRIORITY /* @min:%2epriority */] < ChannelControllerPriority) {\r\n throwError(ChannelValidationMessage + queueItem[_DYN_IDENTIFIER /* @min:%2eidentifier */]);\r\n }\r\n });\r\n channelQueue[_DYN_PUSH /* @min:%2epush */]({\r\n queue: objFreeze(queue),\r\n chain: createTelemetryProxyChain(queue, core[_DYN_CONFIG /* @min:%2econfig */], core)\r\n });\r\n }\r\n}\r\nexport function createChannelControllerPlugin(channelQueue, core) {\r\n function _getTelCtx() {\r\n return createProcessTelemetryContext(null, core[_DYN_CONFIG /* @min:%2econfig */], core, null);\r\n }\r\n function _processChannelQueue(theChannels, itemCtx, processFn, onComplete) {\r\n var waiting = theChannels ? (theChannels[_DYN_LENGTH /* @min:%2elength */] + 1) : 1;\r\n function _runChainOnComplete() {\r\n waiting--;\r\n if (waiting === 0) {\r\n onComplete && onComplete();\r\n onComplete = null;\r\n }\r\n }\r\n if (waiting > 0) {\r\n arrForEach(theChannels, function (channels) {\r\n // pass on to first item in queue\r\n if (channels && channels.queue[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n var channelChain = channels.chain;\r\n var chainCtx = itemCtx[_DYN_CREATE_NEW /* @min:%2ecreateNew */](channelChain);\r\n chainCtx[_DYN_ON_COMPLETE /* @min:%2eonComplete */](_runChainOnComplete);\r\n // Cause this chain to start processing\r\n processFn(chainCtx);\r\n }\r\n else {\r\n waiting--;\r\n }\r\n });\r\n }\r\n _runChainOnComplete();\r\n }\r\n function _doUpdate(updateCtx, updateState) {\r\n var theUpdateState = updateState || {\r\n reason: 0 /* TelemetryUpdateReason.Unknown */\r\n };\r\n _processChannelQueue(channelQueue, updateCtx, function (chainCtx) {\r\n chainCtx[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](theUpdateState);\r\n }, function () {\r\n updateCtx[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](theUpdateState);\r\n });\r\n return true;\r\n }\r\n function _doTeardown(unloadCtx, unloadState) {\r\n var theUnloadState = unloadState || {\r\n reason: 0 /* TelemetryUnloadReason.ManualTeardown */,\r\n isAsync: false\r\n };\r\n _processChannelQueue(channelQueue, unloadCtx, function (chainCtx) {\r\n chainCtx[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](theUnloadState);\r\n }, function () {\r\n unloadCtx[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](theUnloadState);\r\n isInitialized = false;\r\n });\r\n return true;\r\n }\r\n function _getChannel(pluginIdentifier) {\r\n var thePlugin = null;\r\n if (channelQueue && channelQueue[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n arrForEach(channelQueue, function (channels) {\r\n // pass on to first item in queue\r\n if (channels && channels.queue[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n arrForEach(channels.queue, function (ext) {\r\n if (ext[_DYN_IDENTIFIER /* @min:%2eidentifier */] === pluginIdentifier) {\r\n thePlugin = ext;\r\n // Cause arrForEach to stop iterating\r\n return -1;\r\n }\r\n });\r\n if (thePlugin) {\r\n // Cause arrForEach to stop iterating\r\n return -1;\r\n }\r\n }\r\n });\r\n }\r\n return thePlugin;\r\n }\r\n var isInitialized = false;\r\n var channelController = {\r\n identifier: \"ChannelControllerPlugin\",\r\n priority: ChannelControllerPriority,\r\n initialize: function (config, core, extensions, pluginChain) {\r\n isInitialized = true;\r\n arrForEach(channelQueue, function (channels) {\r\n if (channels && channels.queue[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n initializePlugins(createProcessTelemetryContext(channels.chain, config, core), extensions);\r\n }\r\n });\r\n },\r\n isInitialized: function () {\r\n return isInitialized;\r\n },\r\n processTelemetry: function (item, itemCtx) {\r\n _processChannelQueue(channelQueue, itemCtx || _getTelCtx(), function (chainCtx) {\r\n chainCtx[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](item);\r\n }, function () {\r\n itemCtx[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](item);\r\n });\r\n },\r\n update: _doUpdate,\r\n pause: function () {\r\n _processChannelQueue(channelQueue, _getTelCtx(), function (chainCtx) {\r\n chainCtx.iterate(function (plugin) {\r\n plugin.pause && plugin.pause();\r\n });\r\n }, null);\r\n },\r\n resume: function () {\r\n _processChannelQueue(channelQueue, _getTelCtx(), function (chainCtx) {\r\n chainCtx.iterate(function (plugin) {\r\n plugin.resume && plugin.resume();\r\n });\r\n }, null);\r\n },\r\n teardown: _doTeardown,\r\n getChannel: _getChannel,\r\n flush: function (isAsync, callBack, sendReason, cbTimeout) {\r\n // Setting waiting to one so that we don't call the callBack until we finish iterating\r\n var waiting = 1;\r\n var doneIterating = false;\r\n var cbTimer = null;\r\n cbTimeout = cbTimeout || 5000;\r\n function doCallback() {\r\n waiting--;\r\n if (doneIterating && waiting === 0) {\r\n if (cbTimer) {\r\n clearTimeout(cbTimer);\r\n cbTimer = null;\r\n }\r\n callBack && callBack(doneIterating);\r\n callBack = null;\r\n }\r\n }\r\n _processChannelQueue(channelQueue, _getTelCtx(), function (chainCtx) {\r\n chainCtx.iterate(function (plugin) {\r\n if (plugin[_DYN_FLUSH /* @min:%2eflush */]) {\r\n waiting++;\r\n var handled_1 = false;\r\n // Not all channels will call this callback for every scenario\r\n if (!plugin[_DYN_FLUSH /* @min:%2eflush */](isAsync, function () {\r\n handled_1 = true;\r\n doCallback();\r\n }, sendReason)) {\r\n if (!handled_1) {\r\n // If any channel doesn't return true and it didn't call the callback, then we should assume that the callback\r\n // will never be called, so use a timeout to allow the channel(s) some time to \"finish\" before triggering any\r\n // followup function (such as unloading)\r\n if (isAsync && cbTimer == null) {\r\n cbTimer = setTimeout(function () {\r\n cbTimer = null;\r\n doCallback();\r\n }, cbTimeout);\r\n }\r\n else {\r\n doCallback();\r\n }\r\n }\r\n }\r\n }\r\n });\r\n }, function () {\r\n doneIterating = true;\r\n doCallback();\r\n });\r\n return true;\r\n },\r\n _setQueue: function (queue) {\r\n channelQueue = queue;\r\n }\r\n };\r\n return channelController;\r\n}\r\nexport function createChannelQueues(channels, extensions, core) {\r\n var channelQueue = [];\r\n if (channels) {\r\n // Add and sort the configuration channel queues\r\n arrForEach(channels, function (queue) { return _addChannelQueue(channelQueue, queue, core); });\r\n }\r\n if (extensions) {\r\n // Create a new channel queue for any extensions with a priority > the ChannelControllerPriority\r\n var extensionQueue_1 = [];\r\n arrForEach(extensions, function (plugin) {\r\n if (plugin[STR_PRIORITY /* @min:%2epriority */] > ChannelControllerPriority) {\r\n extensionQueue_1[_DYN_PUSH /* @min:%2epush */](plugin);\r\n }\r\n });\r\n _addChannelQueue(channelQueue, extensionQueue_1, core);\r\n }\r\n return channelQueue;\r\n}\r\n//# sourceMappingURL=ChannelController.js.map","// // Copyright (c) Microsoft Corporation. All rights reserved.\r\n// // Licensed under the MIT License.\r\nimport { __extends } from \"tslib\";\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { _DYN_APPLY, _DYN_DIAG_LOG, _DYN_LENGTH, _DYN_PROCESS_NEXT, _DYN_PUSH, _DYN_SPLICE, _DYN__DO_TEARDOWN } from \"../__DynamicConstants\";\r\nimport { BaseTelemetryPlugin } from \"./BaseTelemetryPlugin\";\r\nimport { _throwInternal } from \"./DiagnosticLogger\";\r\nimport { dumpObj } from \"./EnvUtils\";\r\nimport { arrForEach, getExceptionName } from \"./HelperFuncs\";\r\nimport { STR_PROCESS_TELEMETRY } from \"./InternalConstants\";\r\nvar TelemetryInitializerPlugin = /** @class */ (function (_super) {\r\n __extends(TelemetryInitializerPlugin, _super);\r\n function TelemetryInitializerPlugin() {\r\n var _this = _super.call(this) || this;\r\n _this.identifier = \"TelemetryInitializerPlugin\";\r\n _this.priority = 199;\r\n // NOTE!: DON'T set default values here, instead set them in the _initDefaults() function as it is also called during teardown()\r\n var _id;\r\n var _initializers;\r\n _initDefaults();\r\n dynamicProto(TelemetryInitializerPlugin, _this, function (_self, _base) {\r\n _self.addTelemetryInitializer = function (telemetryInitializer) {\r\n var theInitializer = {\r\n id: _id++,\r\n fn: telemetryInitializer\r\n };\r\n _initializers[_DYN_PUSH /* @min:%2epush */](theInitializer);\r\n var handler = {\r\n remove: function () {\r\n arrForEach(_initializers, function (initializer, idx) {\r\n if (initializer.id === theInitializer.id) {\r\n _initializers[_DYN_SPLICE /* @min:%2esplice */](idx, 1);\r\n return -1;\r\n }\r\n });\r\n }\r\n };\r\n return handler;\r\n };\r\n _self[STR_PROCESS_TELEMETRY /* @min:%2eprocessTelemetry */] = function (item, itemCtx) {\r\n var doNotSendItem = false;\r\n var telemetryInitializersCount = _initializers[_DYN_LENGTH /* @min:%2elength */];\r\n for (var i = 0; i < telemetryInitializersCount; ++i) {\r\n var telemetryInitializer = _initializers[i];\r\n if (telemetryInitializer) {\r\n try {\r\n if (telemetryInitializer.fn[_DYN_APPLY /* @min:%2eapply */](null, [item]) === false) {\r\n doNotSendItem = true;\r\n break;\r\n }\r\n }\r\n catch (e) {\r\n // log error but dont stop executing rest of the telemetry initializers\r\n // doNotSendItem = true;\r\n _throwInternal(itemCtx[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 1 /* eLoggingSeverity.CRITICAL */, 64 /* _eInternalMessageId.TelemetryInitializerFailed */, \"One of telemetry initializers failed, telemetry item will not be sent: \" + getExceptionName(e), { exception: dumpObj(e) }, true);\r\n }\r\n }\r\n }\r\n if (!doNotSendItem) {\r\n _self[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](item, itemCtx);\r\n }\r\n };\r\n _self[_DYN__DO_TEARDOWN /* @min:%2e_doTeardown */] = function () {\r\n _initDefaults();\r\n };\r\n });\r\n function _initDefaults() {\r\n _id = 0;\r\n _initializers = [];\r\n }\r\n return _this;\r\n }\r\n /**\r\n * Add a telemetry processor to decorate or drop telemetry events.\r\n * @param telemetryInitializer - The Telemetry Initializer function\r\n * @returns - A ITelemetryInitializerHandler to enable the initializer to be removed\r\n */\r\n TelemetryInitializerPlugin.prototype.addTelemetryInitializer = function (telemetryInitializer) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n return null;\r\n };\r\n TelemetryInitializerPlugin.prototype.processTelemetry = function (env, itemCtx) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n return TelemetryInitializerPlugin;\r\n}(BaseTelemetryPlugin));\r\nexport { TelemetryInitializerPlugin };\r\n//# sourceMappingURL=TelemetryInitializerPlugin.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\"use strict\";\r\nimport { __spreadArray } from \"tslib\";\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { objCreateFn } from \"@microsoft/applicationinsights-shims\";\r\nimport { _DYN_ADD_NOTIFICATION_LIS1, _DYN_CONFIG, _DYN_FLUSH, _DYN_GET_NOTIFY_MGR, _DYN_GET_PLUGIN, _DYN_GET_PROCESS_TEL_CONT0, _DYN_IDENTIFIER, _DYN_INITIALIZE, _DYN_INSTRUMENTATION_KEY, _DYN_IS_ASYNC, _DYN_IS_INITIALIZED, _DYN_LENGTH, _DYN_LOGGER, _DYN_MESSAGE, _DYN_MESSAGE_ID, _DYN_NAME, _DYN_ON_COMPLETE, _DYN_PROCESS_NEXT, _DYN_PUSH, _DYN_REMOVE_NOTIFICATION_2, _DYN_SET_ENABLED, _DYN_SPLICE, _DYN_STOP_POLLING_INTERNA3, _DYN_TEARDOWN, _DYN_TIME, _DYN__EXTENSIONS } from \"../__DynamicConstants\";\r\nimport { ChannelControllerPriority, createChannelControllerPlugin, createChannelQueues } from \"./ChannelController\";\r\nimport { createCookieMgr } from \"./CookieMgr\";\r\nimport { createUniqueNamespace } from \"./DataCacheHelper\";\r\nimport { getDebugListener } from \"./DbgExtensionUtils\";\r\nimport { DiagnosticLogger, _InternalLogMessage, _throwInternal, _warnToConsole } from \"./DiagnosticLogger\";\r\nimport { arrForEach, arrIndexOf, getCfgValue, getSetValue, isFunction, isNullOrUndefined, objExtend, objFreeze, proxyFunctionAs, proxyFunctions, throwError, toISOString } from \"./HelperFuncs\";\r\nimport { STR_CHANNELS, STR_CORE, STR_CREATE_PERF_MGR, STR_DISABLED, STR_EVENTS_DISCARDED, STR_EVENTS_SEND_REQUEST, STR_EVENTS_SENT, STR_EXTENSIONS, STR_EXTENSION_CONFIG, STR_GET_PERF_MGR, STR_PRIORITY } from \"./InternalConstants\";\r\nimport { PerfManager, getGblPerfMgr } from \"./PerfManager\";\r\nimport { createProcessTelemetryContext, createProcessTelemetryUnloadContext, createProcessTelemetryUpdateContext, createTelemetryProxyChain } from \"./ProcessTelemetryContext\";\r\nimport { _getPluginState, createDistributedTraceContext, initializePlugins, sortPlugins } from \"./TelemetryHelpers\";\r\nimport { TelemetryInitializerPlugin } from \"./TelemetryInitializerPlugin\";\r\nimport { createUnloadHandlerContainer } from \"./UnloadHandlerContainer\";\r\nvar strValidationError = \"Plugins must provide initialize method\";\r\nvar strNotificationManager = \"_notificationManager\";\r\nvar strSdkUnloadingError = \"SDK is still unloading...\";\r\nvar strSdkNotInitialized = \"SDK is not initialized\";\r\n// const strPluginUnloadFailed = \"Failed to unload plugin\";\r\nvar defaultInitConfig = {\r\n // Have the Diagnostic Logger default to log critical errors to the console\r\n loggingLevelConsole: 1 /* eLoggingSeverity.CRITICAL */\r\n};\r\n/**\r\n * Helper to create the default performance manager\r\n * @param core\r\n * @param notificationMgr\r\n */\r\nfunction _createPerfManager(core, notificationMgr) {\r\n return new PerfManager(notificationMgr);\r\n}\r\nfunction _validateExtensions(logger, channelPriority, allExtensions) {\r\n var _a;\r\n // Concat all available extensions\r\n var coreExtensions = [];\r\n // Check if any two extensions have the same priority, then warn to console\r\n // And extract the local extensions from the\r\n var extPriorities = {};\r\n // Extension validation\r\n arrForEach(allExtensions, function (ext) {\r\n // Check for ext.initialize\r\n if (isNullOrUndefined(ext) || isNullOrUndefined(ext[_DYN_INITIALIZE /* @min:%2einitialize */])) {\r\n throwError(strValidationError);\r\n }\r\n var extPriority = ext[STR_PRIORITY /* @min:%2epriority */];\r\n var identifier = ext[_DYN_IDENTIFIER /* @min:%2eidentifier */];\r\n if (ext && extPriority) {\r\n if (!isNullOrUndefined(extPriorities[extPriority])) {\r\n _warnToConsole(logger, \"Two extensions have same priority #\" + extPriority + \" - \" + extPriorities[extPriority] + \", \" + identifier);\r\n }\r\n else {\r\n // set a value\r\n extPriorities[extPriority] = identifier;\r\n }\r\n }\r\n // Split extensions to core and channelController\r\n if (!extPriority || extPriority < channelPriority) {\r\n // Add to core extension that will be managed by BaseCore\r\n coreExtensions[_DYN_PUSH /* @min:%2epush */](ext);\r\n }\r\n });\r\n return _a = {\r\n all: allExtensions\r\n },\r\n _a[STR_CORE /* @min:core */] = coreExtensions,\r\n _a;\r\n}\r\nfunction _isPluginPresent(thePlugin, plugins) {\r\n var exists = false;\r\n arrForEach(plugins, function (plugin) {\r\n if (plugin === thePlugin) {\r\n exists = true;\r\n return -1;\r\n }\r\n });\r\n return exists;\r\n}\r\nfunction _createDummyNotificationManager() {\r\n var _a;\r\n return objCreateFn((_a = {},\r\n _a[_DYN_ADD_NOTIFICATION_LIS1 /* @min:addNotificationListener */] = function (listener) { },\r\n _a[_DYN_REMOVE_NOTIFICATION_2 /* @min:removeNotificationListener */] = function (listener) { },\r\n _a[STR_EVENTS_SENT /* @min:eventsSent */] = function (events) { },\r\n _a[STR_EVENTS_DISCARDED /* @min:eventsDiscarded */] = function (events, reason) { },\r\n _a[STR_EVENTS_SEND_REQUEST /* @min:eventsSendRequest */] = function (sendReason, isAsync) { },\r\n _a));\r\n}\r\nvar BaseCore = /** @class */ (function () {\r\n function BaseCore() {\r\n // NOTE!: DON'T set default values here, instead set them in the _initDefaults() function as it is also called during teardown()\r\n var _config;\r\n var _isInitialized;\r\n var _eventQueue;\r\n var _notificationManager;\r\n var _perfManager;\r\n var _cfgPerfManager;\r\n var _cookieManager;\r\n var _pluginChain;\r\n var _configExtensions;\r\n var _coreExtensions;\r\n var _channelControl;\r\n var _channelConfig;\r\n var _channelQueue;\r\n var _isUnloading;\r\n var _telemetryInitializerPlugin;\r\n var _internalLogsEventName;\r\n var _evtNamespace;\r\n var _unloadHandlers;\r\n var _debugListener;\r\n var _traceCtx;\r\n /**\r\n * Internal log poller\r\n */\r\n var _internalLogPoller = 0;\r\n var _forceStopInternalLogPoller = false;\r\n dynamicProto(BaseCore, this, function (_self) {\r\n // Set the default values (also called during teardown)\r\n _initDefaults();\r\n _self[_DYN_IS_INITIALIZED /* @min:%2eisInitialized */] = function () { return _isInitialized; };\r\n // Creating the self.initialize = ()\r\n _self[_DYN_INITIALIZE /* @min:%2einitialize */] = function (config, extensions, logger, notificationManager) {\r\n if (_isUnloading) {\r\n throwError(strSdkUnloadingError);\r\n }\r\n // Make sure core is only initialized once\r\n if (_self[_DYN_IS_INITIALIZED /* @min:%2eisInitialized */]()) {\r\n throwError(\"Core should not be initialized more than once\");\r\n }\r\n _config = config || {};\r\n _self[_DYN_CONFIG /* @min:%2econfig */] = _config;\r\n if (isNullOrUndefined(config[_DYN_INSTRUMENTATION_KEY /* @min:%2einstrumentationKey */])) {\r\n throwError(\"Please provide instrumentation key\");\r\n }\r\n _notificationManager = notificationManager;\r\n // For backward compatibility only\r\n _self[strNotificationManager] = notificationManager;\r\n _initDebugListener();\r\n _initPerfManager();\r\n // add notification to the extensions in the config so other plugins can access it\r\n _initExtConfig();\r\n if (logger) {\r\n _self[_DYN_LOGGER /* @min:%2elogger */] = logger;\r\n }\r\n var cfgExtensions = getSetValue(_config, STR_EXTENSIONS, []);\r\n // Extension validation\r\n _configExtensions = [];\r\n _configExtensions[_DYN_PUSH /* @min:%2epush */].apply(_configExtensions, __spreadArray(__spreadArray([], extensions, false), cfgExtensions, false));\r\n _channelConfig = getSetValue(_config, STR_CHANNELS, []);\r\n _initPluginChain(null);\r\n if (!_channelQueue || _channelQueue[_DYN_LENGTH /* @min:%2elength */] === 0) {\r\n throwError(\"No \" + STR_CHANNELS + \" available\");\r\n }\r\n _isInitialized = true;\r\n _self.releaseQueue();\r\n };\r\n _self.getTransmissionControls = function () {\r\n var controls = [];\r\n if (_channelQueue) {\r\n arrForEach(_channelQueue, function (channels) {\r\n controls[_DYN_PUSH /* @min:%2epush */](channels.queue);\r\n });\r\n }\r\n return objFreeze(controls);\r\n };\r\n _self.track = function (telemetryItem) {\r\n // setup default iKey if not passed in\r\n telemetryItem.iKey = telemetryItem.iKey || _config[_DYN_INSTRUMENTATION_KEY /* @min:%2einstrumentationKey */];\r\n // add default timestamp if not passed in\r\n telemetryItem[_DYN_TIME /* @min:%2etime */] = telemetryItem[_DYN_TIME /* @min:%2etime */] || toISOString(new Date());\r\n // Common Schema 4.0\r\n telemetryItem.ver = telemetryItem.ver || \"4.0\";\r\n if (!_isUnloading && _self[_DYN_IS_INITIALIZED /* @min:%2eisInitialized */]()) {\r\n // Process the telemetry plugin chain\r\n _createTelCtx()[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](telemetryItem);\r\n }\r\n else {\r\n // Queue events until all extensions are initialized\r\n _eventQueue[_DYN_PUSH /* @min:%2epush */](telemetryItem);\r\n }\r\n };\r\n _self[_DYN_GET_PROCESS_TEL_CONT0 /* @min:%2egetProcessTelContext */] = _createTelCtx;\r\n _self[_DYN_GET_NOTIFY_MGR /* @min:%2egetNotifyMgr */] = function () {\r\n if (!_notificationManager) {\r\n // Create Dummy notification manager\r\n _notificationManager = _createDummyNotificationManager();\r\n // For backward compatibility only\r\n _self[strNotificationManager] = _notificationManager;\r\n }\r\n return _notificationManager;\r\n };\r\n /**\r\n * Adds a notification listener. The SDK calls methods on the listener when an appropriate notification is raised.\r\n * The added plugins must raise notifications. If the plugins do not implement the notifications, then no methods will be\r\n * called.\r\n * @param {INotificationListener} listener - An INotificationListener object.\r\n */\r\n _self[_DYN_ADD_NOTIFICATION_LIS1 /* @min:%2eaddNotificationListener */] = function (listener) {\r\n if (_notificationManager) {\r\n _notificationManager[_DYN_ADD_NOTIFICATION_LIS1 /* @min:%2eaddNotificationListener */](listener);\r\n }\r\n };\r\n /**\r\n * Removes all instances of the listener.\r\n * @param {INotificationListener} listener - INotificationListener to remove.\r\n */\r\n _self[_DYN_REMOVE_NOTIFICATION_2 /* @min:%2eremoveNotificationListener */] = function (listener) {\r\n if (_notificationManager) {\r\n _notificationManager[_DYN_REMOVE_NOTIFICATION_2 /* @min:%2eremoveNotificationListener */](listener);\r\n }\r\n };\r\n _self.getCookieMgr = function () {\r\n if (!_cookieManager) {\r\n _cookieManager = createCookieMgr(_config, _self[_DYN_LOGGER /* @min:%2elogger */]);\r\n }\r\n return _cookieManager;\r\n };\r\n _self.setCookieMgr = function (cookieMgr) {\r\n _cookieManager = cookieMgr;\r\n };\r\n _self[STR_GET_PERF_MGR /* @min:%2egetPerfMgr */] = function () {\r\n if (!_perfManager && !_cfgPerfManager) {\r\n if (getCfgValue(_config.enablePerfMgr)) {\r\n var createPerfMgr = getCfgValue(_config[STR_CREATE_PERF_MGR /* @min:%2ecreatePerfMgr */]);\r\n if (isFunction(createPerfMgr)) {\r\n _cfgPerfManager = createPerfMgr(_self, _self[_DYN_GET_NOTIFY_MGR /* @min:%2egetNotifyMgr */]());\r\n }\r\n }\r\n }\r\n return _perfManager || _cfgPerfManager || getGblPerfMgr();\r\n };\r\n _self.setPerfMgr = function (perfMgr) {\r\n _perfManager = perfMgr;\r\n };\r\n _self.eventCnt = function () {\r\n return _eventQueue[_DYN_LENGTH /* @min:%2elength */];\r\n };\r\n _self.releaseQueue = function () {\r\n if (_isInitialized && _eventQueue[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n var eventQueue = _eventQueue;\r\n _eventQueue = [];\r\n arrForEach(eventQueue, function (event) {\r\n _createTelCtx()[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](event);\r\n });\r\n }\r\n };\r\n _self.pollInternalLogs = function (eventName) {\r\n _internalLogsEventName = eventName || null;\r\n _forceStopInternalLogPoller = false;\r\n if (_internalLogPoller) {\r\n clearInterval(_internalLogPoller);\r\n _internalLogPoller = null;\r\n }\r\n return _startInternalLogTimer(true);\r\n };\r\n function _startInternalLogTimer(alwaysStart) {\r\n if (!_internalLogPoller && !_forceStopInternalLogPoller) {\r\n var shouldStart = alwaysStart || (_self[_DYN_LOGGER /* @min:%2elogger */] && _self[_DYN_LOGGER /* @min:%2elogger */].queue[_DYN_LENGTH /* @min:%2elength */] > 0);\r\n if (shouldStart) {\r\n var interval = getCfgValue(_config.diagnosticLogInterval);\r\n if (!interval || !(interval > 0)) {\r\n interval = 10000;\r\n }\r\n // Keeping as an interval timer for backward compatibility as it returns the result\r\n _internalLogPoller = setInterval(function () {\r\n clearInterval(_internalLogPoller);\r\n _internalLogPoller = 0;\r\n _flushInternalLogs();\r\n }, interval);\r\n }\r\n }\r\n return _internalLogPoller;\r\n }\r\n _self[_DYN_STOP_POLLING_INTERNA3 /* @min:%2estopPollingInternalLogs */] = function () {\r\n _forceStopInternalLogPoller = true;\r\n if (_internalLogPoller) {\r\n clearInterval(_internalLogPoller);\r\n _internalLogPoller = 0;\r\n _flushInternalLogs();\r\n }\r\n };\r\n // Add addTelemetryInitializer\r\n proxyFunctions(_self, function () { return _telemetryInitializerPlugin; }, [\"addTelemetryInitializer\"]);\r\n _self.unload = function (isAsync, unloadComplete, cbTimeout) {\r\n var _a;\r\n if (isAsync === void 0) { isAsync = true; }\r\n if (!_isInitialized) {\r\n // The SDK is not initialized\r\n throwError(strSdkNotInitialized);\r\n }\r\n // Check if the SDK still unloading so throw\r\n if (_isUnloading) {\r\n // The SDK is already unloading\r\n throwError(strSdkUnloadingError);\r\n }\r\n var unloadState = (_a = {\r\n reason: 50 /* TelemetryUnloadReason.SdkUnload */\r\n },\r\n _a[_DYN_IS_ASYNC /* @min:isAsync */] = isAsync,\r\n _a.flushComplete = false,\r\n _a);\r\n var processUnloadCtx = createProcessTelemetryUnloadContext(_getPluginChain(), _self);\r\n processUnloadCtx[_DYN_ON_COMPLETE /* @min:%2eonComplete */](function () {\r\n _initDefaults();\r\n unloadComplete && unloadComplete(unloadState);\r\n }, _self);\r\n function _doUnload(flushComplete) {\r\n unloadState.flushComplete = flushComplete;\r\n _isUnloading = true;\r\n // Run all of the unload handlers first (before unloading the plugins)\r\n _unloadHandlers.run(processUnloadCtx, unloadState);\r\n // Stop polling the internal logs\r\n _self[_DYN_STOP_POLLING_INTERNA3 /* @min:%2estopPollingInternalLogs */]();\r\n // Start unloading the components, from this point onwards the SDK should be considered to be in an unstable state\r\n processUnloadCtx[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](unloadState);\r\n }\r\n _flushInternalLogs();\r\n if (!_flushChannels(isAsync, _doUnload, 6 /* SendRequestReason.SdkUnload */, cbTimeout)) {\r\n _doUnload(false);\r\n }\r\n };\r\n _self[_DYN_GET_PLUGIN /* @min:%2egetPlugin */] = _getPlugin;\r\n _self.addPlugin = function (plugin, replaceExisting, isAsync, addCb) {\r\n if (!plugin) {\r\n addCb && addCb(false);\r\n _logOrThrowError(strValidationError);\r\n return;\r\n }\r\n var existingPlugin = _getPlugin(plugin[_DYN_IDENTIFIER /* @min:%2eidentifier */]);\r\n if (existingPlugin && !replaceExisting) {\r\n addCb && addCb(false);\r\n _logOrThrowError(\"Plugin [\" + plugin[_DYN_IDENTIFIER /* @min:%2eidentifier */] + \"] is already loaded!\");\r\n return;\r\n }\r\n var updateState = {\r\n reason: 16 /* TelemetryUpdateReason.PluginAdded */\r\n };\r\n function _addPlugin(removed) {\r\n _configExtensions[_DYN_PUSH /* @min:%2epush */](plugin);\r\n updateState.added = [plugin];\r\n // Re-Initialize the plugin chain\r\n _initPluginChain(updateState);\r\n addCb && addCb(true);\r\n }\r\n if (existingPlugin) {\r\n var removedPlugins_1 = [existingPlugin.plugin];\r\n var unloadState = {\r\n reason: 2 /* TelemetryUnloadReason.PluginReplace */,\r\n isAsync: !!isAsync\r\n };\r\n _removePlugins(removedPlugins_1, unloadState, function (removed) {\r\n if (!removed) {\r\n // Previous plugin was successfully removed or was not installed\r\n addCb && addCb(false);\r\n }\r\n else {\r\n updateState.removed = removedPlugins_1;\r\n updateState.reason |= 32 /* TelemetryUpdateReason.PluginRemoved */;\r\n _addPlugin(true);\r\n }\r\n });\r\n }\r\n else {\r\n _addPlugin(false);\r\n }\r\n };\r\n _self.evtNamespace = function () {\r\n return _evtNamespace;\r\n };\r\n _self[_DYN_FLUSH /* @min:%2eflush */] = _flushChannels;\r\n _self.getTraceCtx = function (createNew) {\r\n if (!_traceCtx) {\r\n _traceCtx = createDistributedTraceContext();\r\n }\r\n return _traceCtx;\r\n };\r\n _self.setTraceCtx = function (traceCtx) {\r\n _traceCtx = traceCtx || null;\r\n };\r\n // Create the addUnloadCb\r\n proxyFunctionAs(_self, \"addUnloadCb\", function () { return _unloadHandlers; }, \"add\");\r\n function _initDefaults() {\r\n _isInitialized = false;\r\n // Use a default logger so initialization errors are not dropped on the floor with full logging\r\n _config = objExtend(true, {}, defaultInitConfig);\r\n _self[_DYN_CONFIG /* @min:%2econfig */] = _config;\r\n _self[_DYN_LOGGER /* @min:%2elogger */] = new DiagnosticLogger(_config);\r\n _self[_DYN__EXTENSIONS /* @min:%2e_extensions */] = [];\r\n _telemetryInitializerPlugin = new TelemetryInitializerPlugin();\r\n _eventQueue = [];\r\n _notificationManager = null;\r\n _perfManager = null;\r\n _cfgPerfManager = null;\r\n _cookieManager = null;\r\n _pluginChain = null;\r\n _coreExtensions = null;\r\n _configExtensions = [];\r\n _channelControl = null;\r\n _channelConfig = null;\r\n _channelQueue = null;\r\n _isUnloading = false;\r\n _internalLogsEventName = null;\r\n _evtNamespace = createUniqueNamespace(\"AIBaseCore\", true);\r\n _unloadHandlers = createUnloadHandlerContainer();\r\n _traceCtx = null;\r\n }\r\n function _createTelCtx() {\r\n var theCtx = createProcessTelemetryContext(_getPluginChain(), _config, _self);\r\n theCtx[_DYN_ON_COMPLETE /* @min:%2eonComplete */](_startInternalLogTimer);\r\n return theCtx;\r\n }\r\n // Initialize or Re-initialize the plugins\r\n function _initPluginChain(updateState) {\r\n // Extension validation\r\n var theExtensions = _validateExtensions(_self[_DYN_LOGGER /* @min:%2elogger */], ChannelControllerPriority, _configExtensions);\r\n _coreExtensions = theExtensions[STR_CORE /* @min:%2ecore */];\r\n _pluginChain = null;\r\n // Sort the complete set of extensions by priority\r\n var allExtensions = theExtensions.all;\r\n // Initialize the Channel Queues and the channel plugins first\r\n _channelQueue = objFreeze(createChannelQueues(_channelConfig, allExtensions, _self));\r\n if (_channelControl) {\r\n // During add / remove of a plugin this may get called again, so don't re-add if already present\r\n // But we also want the controller as the last, so remove if already present\r\n // And reusing the existing instance, just in case an installed plugin has a reference and\r\n // is using it.\r\n var idx = arrIndexOf(allExtensions, _channelControl);\r\n if (idx !== -1) {\r\n allExtensions[_DYN_SPLICE /* @min:%2esplice */](idx, 1);\r\n }\r\n idx = arrIndexOf(_coreExtensions, _channelControl);\r\n if (idx !== -1) {\r\n _coreExtensions[_DYN_SPLICE /* @min:%2esplice */](idx, 1);\r\n }\r\n _channelControl._setQueue(_channelQueue);\r\n }\r\n else {\r\n _channelControl = createChannelControllerPlugin(_channelQueue, _self);\r\n }\r\n // Add on \"channelController\" as the last \"plugin\"\r\n allExtensions[_DYN_PUSH /* @min:%2epush */](_channelControl);\r\n _coreExtensions[_DYN_PUSH /* @min:%2epush */](_channelControl);\r\n // Required to allow plugins to call core.getPlugin() during their own initialization\r\n _self[_DYN__EXTENSIONS /* @min:%2e_extensions */] = sortPlugins(allExtensions);\r\n // Initialize the controls\r\n _channelControl[_DYN_INITIALIZE /* @min:%2einitialize */](_config, _self, allExtensions);\r\n var initCtx = _createTelCtx();\r\n initializePlugins(initCtx, allExtensions);\r\n // Now reset the extensions to just those being managed by Basecore\r\n _self[_DYN__EXTENSIONS /* @min:%2e_extensions */] = objFreeze(sortPlugins(_coreExtensions || [])).slice();\r\n if (updateState) {\r\n _doUpdate(updateState);\r\n }\r\n }\r\n function _getPlugin(pluginIdentifier) {\r\n var _a;\r\n var theExt = null;\r\n var thePlugin = null;\r\n arrForEach(_self[_DYN__EXTENSIONS /* @min:%2e_extensions */], function (ext) {\r\n if (ext[_DYN_IDENTIFIER /* @min:%2eidentifier */] === pluginIdentifier && ext !== _channelControl && ext !== _telemetryInitializerPlugin) {\r\n thePlugin = ext;\r\n return -1;\r\n }\r\n });\r\n if (!thePlugin && _channelControl) {\r\n // Check the channel Controller\r\n thePlugin = _channelControl.getChannel(pluginIdentifier);\r\n }\r\n if (thePlugin) {\r\n theExt = (_a = {\r\n plugin: thePlugin\r\n },\r\n _a[_DYN_SET_ENABLED /* @min:setEnabled */] = function (enabled) {\r\n _getPluginState(thePlugin)[STR_DISABLED] = !enabled;\r\n },\r\n _a.isEnabled = function () {\r\n var pluginState = _getPluginState(thePlugin);\r\n return !pluginState[_DYN_TEARDOWN /* @min:%2eteardown */] && !pluginState[STR_DISABLED];\r\n },\r\n _a.remove = function (isAsync, removeCb) {\r\n var _a;\r\n if (isAsync === void 0) { isAsync = true; }\r\n var pluginsToRemove = [thePlugin];\r\n var unloadState = (_a = {\r\n reason: 1 /* TelemetryUnloadReason.PluginUnload */\r\n },\r\n _a[_DYN_IS_ASYNC /* @min:isAsync */] = isAsync,\r\n _a);\r\n _removePlugins(pluginsToRemove, unloadState, function (removed) {\r\n if (removed) {\r\n // Re-Initialize the plugin chain\r\n _initPluginChain({\r\n reason: 32 /* TelemetryUpdateReason.PluginRemoved */,\r\n removed: pluginsToRemove\r\n });\r\n }\r\n removeCb && removeCb(removed);\r\n });\r\n },\r\n _a);\r\n }\r\n return theExt;\r\n }\r\n function _getPluginChain() {\r\n if (!_pluginChain) {\r\n // copy the collection of extensions\r\n var extensions = (_coreExtensions || []).slice();\r\n // During add / remove this may get called again, so don't readd if already present\r\n if (arrIndexOf(extensions, _telemetryInitializerPlugin) === -1) {\r\n extensions[_DYN_PUSH /* @min:%2epush */](_telemetryInitializerPlugin);\r\n }\r\n _pluginChain = createTelemetryProxyChain(sortPlugins(extensions), _config, _self);\r\n }\r\n return _pluginChain;\r\n }\r\n function _removePlugins(thePlugins, unloadState, removeComplete) {\r\n if (thePlugins && thePlugins[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n var unloadChain = createTelemetryProxyChain(thePlugins, _config, _self);\r\n var unloadCtx = createProcessTelemetryUnloadContext(unloadChain, _self);\r\n unloadCtx[_DYN_ON_COMPLETE /* @min:%2eonComplete */](function () {\r\n var removed = false;\r\n // Remove the listed config extensions\r\n var newConfigExtensions = [];\r\n arrForEach(_configExtensions, function (plugin, idx) {\r\n if (!_isPluginPresent(plugin, thePlugins)) {\r\n newConfigExtensions[_DYN_PUSH /* @min:%2epush */](plugin);\r\n }\r\n else {\r\n removed = true;\r\n }\r\n });\r\n _configExtensions = newConfigExtensions;\r\n // Re-Create the channel config\r\n var newChannelConfig = [];\r\n if (_channelConfig) {\r\n arrForEach(_channelConfig, function (queue, idx) {\r\n var newQueue = [];\r\n arrForEach(queue, function (channel) {\r\n if (!_isPluginPresent(channel, thePlugins)) {\r\n newQueue[_DYN_PUSH /* @min:%2epush */](channel);\r\n }\r\n else {\r\n removed = true;\r\n }\r\n });\r\n newChannelConfig[_DYN_PUSH /* @min:%2epush */](newQueue);\r\n });\r\n _channelConfig = newChannelConfig;\r\n }\r\n removeComplete && removeComplete(removed);\r\n _startInternalLogTimer();\r\n });\r\n unloadCtx[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](unloadState);\r\n }\r\n else {\r\n removeComplete(false);\r\n }\r\n }\r\n function _flushInternalLogs() {\r\n if (_self[_DYN_LOGGER /* @min:%2elogger */] && _self[_DYN_LOGGER /* @min:%2elogger */].queue) {\r\n var queue = _self[_DYN_LOGGER /* @min:%2elogger */].queue.slice(0);\r\n _self[_DYN_LOGGER /* @min:%2elogger */].queue[_DYN_LENGTH /* @min:%2elength */] = 0;\r\n arrForEach(queue, function (logMessage) {\r\n var _a;\r\n var item = (_a = {},\r\n _a[_DYN_NAME /* @min:name */] = _internalLogsEventName ? _internalLogsEventName : \"InternalMessageId: \" + logMessage[_DYN_MESSAGE_ID /* @min:%2emessageId */],\r\n _a.iKey = getCfgValue(_config[_DYN_INSTRUMENTATION_KEY /* @min:%2einstrumentationKey */]),\r\n _a.time = toISOString(new Date()),\r\n _a.baseType = _InternalLogMessage.dataType,\r\n _a.baseData = { message: logMessage[_DYN_MESSAGE /* @min:%2emessage */] },\r\n _a);\r\n _self.track(item);\r\n });\r\n }\r\n }\r\n function _flushChannels(isAsync, callBack, sendReason, cbTimeout) {\r\n if (_channelControl) {\r\n return _channelControl[_DYN_FLUSH /* @min:%2eflush */](isAsync, callBack, sendReason || 6 /* SendRequestReason.SdkUnload */, cbTimeout);\r\n }\r\n callBack && callBack(false);\r\n return true;\r\n }\r\n function _initDebugListener() {\r\n var disableDbgExt = getCfgValue(_config.disableDbgExt);\r\n if (disableDbgExt === true && _debugListener) {\r\n // Remove any previously loaded debug listener\r\n _notificationManager[_DYN_REMOVE_NOTIFICATION_2 /* @min:%2eremoveNotificationListener */](_debugListener);\r\n _debugListener = null;\r\n }\r\n if (_notificationManager && !_debugListener && disableDbgExt !== true) {\r\n _debugListener = getDebugListener(_config);\r\n _notificationManager[_DYN_ADD_NOTIFICATION_LIS1 /* @min:%2eaddNotificationListener */](_debugListener);\r\n }\r\n }\r\n function _initPerfManager() {\r\n var enablePerfMgr = getCfgValue(_config.enablePerfMgr);\r\n if (!enablePerfMgr && _cfgPerfManager) {\r\n // Remove any existing config based performance manager\r\n _cfgPerfManager = null;\r\n }\r\n if (enablePerfMgr) {\r\n // Set the performance manager creation function if not defined\r\n getSetValue(_config, STR_CREATE_PERF_MGR, _createPerfManager);\r\n }\r\n }\r\n function _initExtConfig() {\r\n var extConfig = getSetValue(_config, STR_EXTENSION_CONFIG, {});\r\n extConfig.NotificationManager = _notificationManager;\r\n }\r\n function _doUpdate(updateState) {\r\n var updateCtx = createProcessTelemetryUpdateContext(_getPluginChain(), _self);\r\n updateCtx[_DYN_ON_COMPLETE /* @min:%2eonComplete */](_startInternalLogTimer);\r\n if (!_self._updateHook || _self._updateHook(updateCtx, updateState) !== true) {\r\n updateCtx[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](updateState);\r\n }\r\n }\r\n function _logOrThrowError(message) {\r\n var logger = _self[_DYN_LOGGER /* @min:%2elogger */];\r\n if (logger) {\r\n // there should always be a logger\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 73 /* _eInternalMessageId.PluginException */, message);\r\n _startInternalLogTimer();\r\n }\r\n else {\r\n throwError(message);\r\n }\r\n }\r\n });\r\n }\r\n BaseCore.prototype.initialize = function (config, extensions, logger, notificationManager) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n BaseCore.prototype.getTransmissionControls = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n return null;\r\n };\r\n BaseCore.prototype.track = function (telemetryItem) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n BaseCore.prototype.getProcessTelContext = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n return null;\r\n };\r\n BaseCore.prototype.getNotifyMgr = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n return null;\r\n };\r\n /**\r\n * Adds a notification listener. The SDK calls methods on the listener when an appropriate notification is raised.\r\n * The added plugins must raise notifications. If the plugins do not implement the notifications, then no methods will be\r\n * called.\r\n * @param {INotificationListener} listener - An INotificationListener object.\r\n */\r\n BaseCore.prototype.addNotificationListener = function (listener) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Removes all instances of the listener.\r\n * @param {INotificationListener} listener - INotificationListener to remove.\r\n */\r\n BaseCore.prototype.removeNotificationListener = function (listener) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Get the current cookie manager for this instance\r\n */\r\n BaseCore.prototype.getCookieMgr = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n return null;\r\n };\r\n /**\r\n * Set the current cookie manager for this instance\r\n * @param cookieMgr - The manager, if set to null/undefined will cause the default to be created\r\n */\r\n BaseCore.prototype.setCookieMgr = function (cookieMgr) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n BaseCore.prototype.getPerfMgr = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n return null;\r\n };\r\n BaseCore.prototype.setPerfMgr = function (perfMgr) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n BaseCore.prototype.eventCnt = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n return 0;\r\n };\r\n /**\r\n * Enable the timer that checks the logger.queue for log messages to be flushed.\r\n * Note: Since 3.0.1 and 2.8.13 this is no longer an interval timer but is a normal\r\n * timer that is only started when this function is called and then subsequently\r\n * only _if_ there are any logger.queue messages to be sent.\r\n */\r\n BaseCore.prototype.pollInternalLogs = function (eventName) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n return 0;\r\n };\r\n /**\r\n * Stop the timer that log messages from logger.queue when available\r\n */\r\n BaseCore.prototype.stopPollingInternalLogs = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Add a telemetry processor to decorate or drop telemetry events.\r\n * @param telemetryInitializer - The Telemetry Initializer function\r\n * @returns - A ITelemetryInitializerHandler to enable the initializer to be removed\r\n */\r\n BaseCore.prototype.addTelemetryInitializer = function (telemetryInitializer) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Unload and Tear down the SDK and any initialized plugins, after calling this the SDK will be considered\r\n * to be un-initialized and non-operational, re-initializing the SDK should only be attempted if the previous\r\n * unload call return `true` stating that all plugins reported that they also unloaded, the recommended\r\n * approach is to create a new instance and initialize that instance.\r\n * This is due to possible unexpected side effects caused by plugins not supporting unload / teardown, unable\r\n * to successfully remove any global references or they may just be completing the unload process asynchronously.\r\n * @param isAsync - Can the unload be performed asynchronously (default)\r\n * @param unloadComplete - An optional callback that will be called once the unload has completed\r\n * @param cbTimeout - An optional timeout to wait for any flush operations to complete before proceeding with the unload. Defaults to 5 seconds.\r\n */\r\n BaseCore.prototype.unload = function (isAsync, unloadComplete, cbTimeout) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n BaseCore.prototype.getPlugin = function (pluginIdentifier) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n return null;\r\n };\r\n /**\r\n * Add a new plugin to the installation\r\n * @param plugin - The new plugin to add\r\n * @param replaceExisting - should any existing plugin be replaced, default is false\r\n * @param doAsync - Should the add be performed asynchronously\r\n * @param addCb - [Optional] callback to call after the plugin has been added\r\n */\r\n BaseCore.prototype.addPlugin = function (plugin, replaceExisting, doAsync, addCb) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Returns the unique event namespace that should be used\r\n */\r\n BaseCore.prototype.evtNamespace = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n return null;\r\n };\r\n /**\r\n * Add an unload handler that will be called when the SDK is being unloaded\r\n * @param handler - the handler\r\n */\r\n BaseCore.prototype.addUnloadCb = function (handler) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Flush and send any batched / cached data immediately\r\n * @param async - send data asynchronously when true (defaults to true)\r\n * @param callBack - if specified, notify caller when send is complete, the channel should return true to indicate to the caller that it will be called.\r\n * If the caller doesn't return true the caller should assume that it may never be called.\r\n * @param sendReason - specify the reason that you are calling \"flush\" defaults to ManualFlush (1) if not specified\r\n * @returns - true if the callback will be return after the flush is complete otherwise the caller should assume that any provided callback will never be called\r\n */\r\n BaseCore.prototype.flush = function (isAsync, callBack, sendReason) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Gets the current distributed trace context for this instance if available\r\n * @param createNew - Optional flag to create a new instance if one doesn't currently exist, defaults to true\r\n */\r\n BaseCore.prototype.getTraceCtx = function (createNew) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n return null;\r\n };\r\n /**\r\n * Sets the current distributed trace context for this instance if available\r\n */\r\n BaseCore.prototype.setTraceCtx = function (newTracectx) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n BaseCore.prototype.releaseQueue = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Hook for Core extensions to allow them to update their own configuration before updating all of the plugins.\r\n * @param updateCtx - The plugin update context\r\n * @param updateState - The Update State\r\n * @returns boolean - True means the extension class will call updateState otherwise the Core will\r\n */\r\n BaseCore.prototype._updateHook = function (updateCtx, updateState) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n return false;\r\n };\r\n return BaseCore;\r\n}());\r\nexport { BaseCore };\r\n//# sourceMappingURL=BaseCore.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { _DYN_ADD_NOTIFICATION_LIS1, _DYN_IS_ASYNC, _DYN_IS_CHILD_EVT, _DYN_LISTENERS, _DYN_PUSH, _DYN_REMOVE_NOTIFICATION_2, _DYN_SPLICE } from \"../__DynamicConstants\";\r\nimport { arrForEach, arrIndexOf } from \"./HelperFuncs\";\r\nimport { STR_EVENTS_DISCARDED, STR_EVENTS_SEND_REQUEST, STR_EVENTS_SENT, STR_PERF_EVENT } from \"./InternalConstants\";\r\nfunction _runListeners(listeners, name, isAsync, callback) {\r\n arrForEach(listeners, function (listener) {\r\n if (listener && listener[name]) {\r\n if (isAsync) {\r\n setTimeout(function () { return callback(listener); }, 0);\r\n }\r\n else {\r\n try {\r\n callback(listener);\r\n }\r\n catch (e) {\r\n // Catch errors to ensure we don't block sending the requests\r\n }\r\n }\r\n }\r\n });\r\n}\r\n/**\r\n * Class to manage sending notifications to all the listeners.\r\n */\r\nvar NotificationManager = /** @class */ (function () {\r\n function NotificationManager(config) {\r\n this.listeners = [];\r\n var perfEvtsSendAll = !!(config || {}).perfEvtsSendAll;\r\n dynamicProto(NotificationManager, this, function (_self) {\r\n _self[_DYN_ADD_NOTIFICATION_LIS1 /* @min:%2eaddNotificationListener */] = function (listener) {\r\n _self.listeners[_DYN_PUSH /* @min:%2epush */](listener);\r\n };\r\n /**\r\n * Removes all instances of the listener.\r\n * @param {INotificationListener} listener - AWTNotificationListener to remove.\r\n */\r\n _self[_DYN_REMOVE_NOTIFICATION_2 /* @min:%2eremoveNotificationListener */] = function (listener) {\r\n var index = arrIndexOf(_self[_DYN_LISTENERS /* @min:%2elisteners */], listener);\r\n while (index > -1) {\r\n _self.listeners[_DYN_SPLICE /* @min:%2esplice */](index, 1);\r\n index = arrIndexOf(_self[_DYN_LISTENERS /* @min:%2elisteners */], listener);\r\n }\r\n };\r\n /**\r\n * Notification for events sent.\r\n * @param {ITelemetryItem[]} events - The array of events that have been sent.\r\n */\r\n _self[STR_EVENTS_SENT /* @min:%2eeventsSent */] = function (events) {\r\n _runListeners(_self[_DYN_LISTENERS /* @min:%2elisteners */], STR_EVENTS_SENT, true, function (listener) {\r\n listener[STR_EVENTS_SENT /* @min:%2eeventsSent */](events);\r\n });\r\n };\r\n /**\r\n * Notification for events being discarded.\r\n * @param {ITelemetryItem[]} events - The array of events that have been discarded by the SDK.\r\n * @param {number} reason - The reason for which the SDK discarded the events. The EventsDiscardedReason\r\n * constant should be used to check the different values.\r\n */\r\n _self[STR_EVENTS_DISCARDED /* @min:%2eeventsDiscarded */] = function (events, reason) {\r\n _runListeners(_self[_DYN_LISTENERS /* @min:%2elisteners */], STR_EVENTS_DISCARDED, true, function (listener) {\r\n listener[STR_EVENTS_DISCARDED /* @min:%2eeventsDiscarded */](events, reason);\r\n });\r\n };\r\n /**\r\n * [Optional] A function called when the events have been requested to be sent to the sever.\r\n * @param {number} sendReason - The reason why the event batch is being sent.\r\n * @param {boolean} isAsync - A flag which identifies whether the requests are being sent in an async or sync manner.\r\n */\r\n _self[STR_EVENTS_SEND_REQUEST /* @min:%2eeventsSendRequest */] = function (sendReason, isAsync) {\r\n _runListeners(_self[_DYN_LISTENERS /* @min:%2elisteners */], STR_EVENTS_SEND_REQUEST, isAsync, function (listener) {\r\n listener[STR_EVENTS_SEND_REQUEST /* @min:%2eeventsSendRequest */](sendReason, isAsync);\r\n });\r\n };\r\n _self[STR_PERF_EVENT /* @min:%2eperfEvent */] = function (perfEvent) {\r\n if (perfEvent) {\r\n // Send all events or only parent events\r\n if (perfEvtsSendAll || !perfEvent[_DYN_IS_CHILD_EVT /* @min:%2eisChildEvt */]()) {\r\n _runListeners(_self[_DYN_LISTENERS /* @min:%2elisteners */], STR_PERF_EVENT, false, function (listener) {\r\n if (perfEvent[_DYN_IS_ASYNC /* @min:%2eisAsync */]) {\r\n setTimeout(function () { return listener[STR_PERF_EVENT /* @min:%2eperfEvent */](perfEvent); }, 0);\r\n }\r\n else {\r\n listener[STR_PERF_EVENT /* @min:%2eperfEvent */](perfEvent);\r\n }\r\n });\r\n }\r\n }\r\n };\r\n });\r\n }\r\n /**\r\n * Adds a notification listener.\r\n * @param {INotificationListener} listener - The notification listener to be added.\r\n */\r\n NotificationManager.prototype.addNotificationListener = function (listener) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Removes all instances of the listener.\r\n * @param {INotificationListener} listener - AWTNotificationListener to remove.\r\n */\r\n NotificationManager.prototype.removeNotificationListener = function (listener) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Notification for events sent.\r\n * @param {ITelemetryItem[]} events - The array of events that have been sent.\r\n */\r\n NotificationManager.prototype.eventsSent = function (events) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Notification for events being discarded.\r\n * @param {ITelemetryItem[]} events - The array of events that have been discarded by the SDK.\r\n * @param {number} reason - The reason for which the SDK discarded the events. The EventsDiscardedReason\r\n * constant should be used to check the different values.\r\n */\r\n NotificationManager.prototype.eventsDiscarded = function (events, reason) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * [Optional] A function called when the events have been requested to be sent to the sever.\r\n * @param {number} sendReason - The reason why the event batch is being sent.\r\n * @param {boolean} isAsync - A flag which identifies whether the requests are being sent in an async or sync manner.\r\n */\r\n NotificationManager.prototype.eventsSendRequest = function (sendReason, isAsync) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n return NotificationManager;\r\n}());\r\nexport { NotificationManager };\r\n//# sourceMappingURL=NotificationManager.js.map","import { __extends } from \"tslib\";\r\n// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { _DYN_GET_NOTIFY_MGR, _DYN_INITIALIZE, _DYN_NAME } from \"../__DynamicConstants\";\r\nimport { BaseCore } from \"./BaseCore\";\r\nimport { DiagnosticLogger } from \"./DiagnosticLogger\";\r\nimport { isNullOrUndefined, throwError } from \"./HelperFuncs\";\r\nimport { STR_EVENTS_DISCARDED, STR_GET_PERF_MGR } from \"./InternalConstants\";\r\nimport { NotificationManager } from \"./NotificationManager\";\r\nimport { doPerf } from \"./PerfManager\";\r\nvar AppInsightsCore = /** @class */ (function (_super) {\r\n __extends(AppInsightsCore, _super);\r\n function AppInsightsCore() {\r\n var _this = _super.call(this) || this;\r\n dynamicProto(AppInsightsCore, _this, function (_self, _base) {\r\n _self[_DYN_INITIALIZE /* @min:%2einitialize */] = function (config, extensions, logger, notificationManager) {\r\n _base[_DYN_INITIALIZE /* @min:%2einitialize */](config, extensions, logger || new DiagnosticLogger(config), notificationManager || new NotificationManager(config));\r\n };\r\n _self.track = function (telemetryItem) {\r\n doPerf(_self[STR_GET_PERF_MGR /* @min:%2egetPerfMgr */](), function () { return \"AppInsightsCore:track\"; }, function () {\r\n if (telemetryItem === null) {\r\n _notifyInvalidEvent(telemetryItem);\r\n // throw error\r\n throwError(\"Invalid telemetry item\");\r\n }\r\n // do basic validation before sending it through the pipeline\r\n _validateTelemetryItem(telemetryItem);\r\n _base.track(telemetryItem);\r\n }, function () { return ({ item: telemetryItem }); }, !(telemetryItem.sync));\r\n };\r\n function _validateTelemetryItem(telemetryItem) {\r\n if (isNullOrUndefined(telemetryItem[_DYN_NAME /* @min:%2ename */])) {\r\n _notifyInvalidEvent(telemetryItem);\r\n throwError(\"telemetry name required\");\r\n }\r\n }\r\n function _notifyInvalidEvent(telemetryItem) {\r\n var manager = _self[_DYN_GET_NOTIFY_MGR /* @min:%2egetNotifyMgr */]();\r\n if (manager) {\r\n manager[STR_EVENTS_DISCARDED /* @min:%2eeventsDiscarded */]([telemetryItem], 2 /* eEventsDiscardedReason.InvalidEvent */);\r\n }\r\n }\r\n });\r\n return _this;\r\n }\r\n AppInsightsCore.prototype.initialize = function (config, extensions, logger, notificationManager) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n AppInsightsCore.prototype.track = function (telemetryItem) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n return AppInsightsCore;\r\n}(BaseCore));\r\nexport { AppInsightsCore };\r\n//# sourceMappingURL=AppInsightsCore.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { Extensions, dataSanitizeUrl, dateTimeUtilsDuration, msToTimeSpan, urlGetAbsoluteUrl, urlGetCompleteUrl } from \"@microsoft/applicationinsights-common\";\r\nimport { arrForEach, isNullOrUndefined, isNumber, isString, normalizeJsName, objForEachKey, objKeys } from \"@microsoft/applicationinsights-core-js\";\r\nimport { STR_DURATION, STR_PROPERTIES } from \"./InternalConstants\";\r\nimport { _DYN_ABORTED, _DYN_ABORT_DONE, _DYN_AJAX_TOTAL_DURATION, _DYN_CORRELATION_CONTEXT, _DYN_ERROR_STATUS_TEXT, _DYN_EVENT_TRACE_CTX, _DYN_GET_ABSOLUTE_URL, _DYN_GET_PART_APROPS, _DYN_GET_TRACE_FLAGS, _DYN_GET_TRACE_ID, _DYN_HEADER_MAP, _DYN_LENGTH, _DYN_METHOD, _DYN_NAME, _DYN_OPEN_DONE, _DYN_PERF_MARK, _DYN_PERF_TIMING, _DYN_REQUEST_HEADERS, _DYN_REQUEST_SENT_TIME, _DYN_REQUEST_URL, _DYN_RESPONSE, _DYN_RESPONSE_FINISHED_TI15, _DYN_SEND_DONE, _DYN_SPAN_ID, _DYN_SPAN_ID1, _DYN_START_TIME, _DYN_STATE_CHANGE_ATTACHE14, _DYN_STATUS, _DYN_STATUS_TEXT, _DYN_TRACE_FLAGS, _DYN_TRACE_ID, _DYN_TRACE_ID0, _DYN__CREATE_TRACK_ITEM } from \"./__DynamicConstants\";\r\n/** @ignore */\r\nfunction _calcPerfDuration(resourceEntry, start, end) {\r\n var result = 0;\r\n var from = resourceEntry[start];\r\n var to = resourceEntry[end];\r\n if (from && to) {\r\n result = dateTimeUtilsDuration(from, to);\r\n }\r\n return result;\r\n}\r\n/** @ignore */\r\nfunction _setPerfDuration(props, name, resourceEntry, start, end) {\r\n var result = 0;\r\n var value = _calcPerfDuration(resourceEntry, start, end);\r\n if (value) {\r\n result = _setPerfValue(props, name, msToTimeSpan(value));\r\n }\r\n return result;\r\n}\r\n/** @ignore */\r\nfunction _setPerfValue(props, name, value) {\r\n var strPerf = \"ajaxPerf\";\r\n var result = 0;\r\n if (props && name && value) {\r\n var perfData = props[strPerf] = (props[strPerf] || {});\r\n perfData[name] = value;\r\n result = 1;\r\n }\r\n return result;\r\n}\r\n/** @ignore */\r\nfunction _populatePerfData(ajaxData, dependency) {\r\n /*\r\n * https://developer.mozilla.org/en-US/docs/Web/API/Resource_Timing_API/Using_the_Resource_Timing_API\r\n * | -startTime\r\n * | -redirectStart\r\n * | | -redirectEnd\r\n * | | | -fetchStart\r\n * | | | | -domainLookupStart\r\n * | | | | |- domainLookupEnd\r\n * | | | | | | -connectStart\r\n * | | | | | | | -secureConnectionStart\r\n * | | | | | | | | -connectEnd\r\n * | | | | | | | | | -requestStart\r\n * | | | | | | | | | | | -responseStart\r\n * | | | | | | | | | | | | | -responseEnd\r\n * +------------+-+---+----------------+-+--+--------+-+-----------+-+------------+-+\r\n * |--redirect--| |---|--domainLookup--| |--connect--| |--request--| |--response--| |\r\n * |-------------------networkConnect----------------|\r\n * | |---------sentRequest--------|\r\n * |------------------------------------perfTotal-----------------------------------|\r\n */\r\n var resourceEntry = ajaxData[_DYN_PERF_TIMING /* @min:%2eperfTiming */];\r\n var props = dependency[STR_PROPERTIES /* @min:%2eproperties */] || {};\r\n var propsSet = 0;\r\n var strName = \"name\";\r\n var strStart = \"Start\";\r\n var strEnd = \"End\";\r\n var strDomainLookup = \"domainLookup\";\r\n var strConnect = \"connect\";\r\n var strRedirect = \"redirect\";\r\n var strRequest = \"request\";\r\n var strResponse = \"response\";\r\n var strStartTime = \"startTime\";\r\n var strDomainLookupStart = strDomainLookup + strStart;\r\n var strDomainLookupEnd = strDomainLookup + strEnd;\r\n var strConnectStart = strConnect + strStart;\r\n var strConnectEnd = strConnect + strEnd;\r\n var strRequestStart = strRequest + strStart;\r\n var strRequestEnd = strRequest + strEnd;\r\n var strResponseStart = strResponse + strStart;\r\n var strResponseEnd = strResponse + strEnd;\r\n var strRedirectStart = strRedirect + strStart;\r\n var strRedirectEnd = strRedirect = strEnd;\r\n var strTransferSize = \"transferSize\";\r\n var strEncodedBodySize = \"encodedBodySize\";\r\n var strDecodedBodySize = \"decodedBodySize\";\r\n var strServerTiming = \"serverTiming\";\r\n if (resourceEntry) {\r\n // redirect\r\n propsSet |= _setPerfDuration(props, strRedirect, resourceEntry, strRedirectStart, strRedirectEnd);\r\n // domainLookup\r\n propsSet |= _setPerfDuration(props, strDomainLookup, resourceEntry, strDomainLookupStart, strDomainLookupEnd);\r\n // connect\r\n propsSet |= _setPerfDuration(props, strConnect, resourceEntry, strConnectStart, strConnectEnd);\r\n // request\r\n propsSet |= _setPerfDuration(props, strRequest, resourceEntry, strRequestStart, strRequestEnd);\r\n // response\r\n propsSet |= _setPerfDuration(props, strResponse, resourceEntry, strResponseStart, strResponseEnd);\r\n // Network connection time\r\n propsSet |= _setPerfDuration(props, \"networkConnect\", resourceEntry, strStartTime, strConnectEnd);\r\n // Sent Request\r\n propsSet |= _setPerfDuration(props, \"sentRequest\", resourceEntry, strRequestStart, strResponseEnd);\r\n // PerfTotal / Duration\r\n var duration = resourceEntry[STR_DURATION /* @min:%2eduration */];\r\n if (!duration) {\r\n duration = _calcPerfDuration(resourceEntry, strStartTime, strResponseEnd) || 0;\r\n }\r\n propsSet |= _setPerfValue(props, STR_DURATION, duration);\r\n propsSet |= _setPerfValue(props, \"perfTotal\", duration);\r\n var serverTiming = resourceEntry[strServerTiming];\r\n if (serverTiming) {\r\n var server_1 = {};\r\n arrForEach(serverTiming, function (value, idx) {\r\n var name = normalizeJsName(value[strName] || \"\" + idx);\r\n var newValue = server_1[name] || {};\r\n objForEachKey(value, function (key, val) {\r\n if (key !== strName && isString(val) || isNumber(val)) {\r\n if (newValue[key]) {\r\n val = newValue[key] + \";\" + val;\r\n }\r\n if (val || !isString(val)) {\r\n // Only set the value if it has a value and it's not an empty string\r\n newValue[key] = val;\r\n }\r\n }\r\n });\r\n server_1[name] = newValue;\r\n });\r\n propsSet |= _setPerfValue(props, strServerTiming, server_1);\r\n }\r\n propsSet |= _setPerfValue(props, strTransferSize, resourceEntry[strTransferSize]);\r\n propsSet |= _setPerfValue(props, strEncodedBodySize, resourceEntry[strEncodedBodySize]);\r\n propsSet |= _setPerfValue(props, strDecodedBodySize, resourceEntry[strDecodedBodySize]);\r\n }\r\n else {\r\n if (ajaxData[_DYN_PERF_MARK /* @min:%2eperfMark */]) {\r\n propsSet |= _setPerfValue(props, \"missing\", ajaxData.perfAttempts);\r\n }\r\n }\r\n if (propsSet) {\r\n dependency[STR_PROPERTIES /* @min:%2eproperties */] = props;\r\n }\r\n}\r\nvar XHRMonitoringState = /** @class */ (function () {\r\n function XHRMonitoringState() {\r\n var self = this;\r\n self[_DYN_OPEN_DONE /* @min:%2eopenDone */] = false;\r\n self.setRequestHeaderDone = false;\r\n self[_DYN_SEND_DONE /* @min:%2esendDone */] = false;\r\n self[_DYN_ABORT_DONE /* @min:%2eabortDone */] = false;\r\n // <summary>True, if onreadyStateChangeCallback function attached to xhr, otherwise false</summary>\r\n self[_DYN_STATE_CHANGE_ATTACHE14 /* @min:%2estateChangeAttached */] = false;\r\n }\r\n return XHRMonitoringState;\r\n}());\r\nexport { XHRMonitoringState };\r\nvar ajaxRecord = /** @class */ (function () {\r\n function ajaxRecord(traceId, spanId, logger, traceCtx) {\r\n var _a;\r\n var self = this;\r\n var _logger = logger;\r\n var strResponseText = \"responseText\";\r\n // Assigning the initial/default values within the constructor to avoid typescript from creating a bunch of\r\n // this.XXXX = null\r\n self[_DYN_PERF_MARK /* @min:%2eperfMark */] = null;\r\n self.completed = false;\r\n self.requestHeadersSize = null;\r\n self[_DYN_REQUEST_HEADERS /* @min:%2erequestHeaders */] = null;\r\n self.responseReceivingDuration = null;\r\n self.callbackDuration = null;\r\n self[_DYN_AJAX_TOTAL_DURATION /* @min:%2eajaxTotalDuration */] = null;\r\n self[_DYN_ABORTED /* @min:%2eaborted */] = 0;\r\n self.pageUrl = null;\r\n self[_DYN_REQUEST_URL /* @min:%2erequestUrl */] = null;\r\n self.requestSize = 0;\r\n self[_DYN_METHOD /* @min:%2emethod */] = null;\r\n self[_DYN_STATUS /* @min:%2estatus */] = null;\r\n self[_DYN_REQUEST_SENT_TIME /* @min:%2erequestSentTime */] = null;\r\n self.responseStartedTime = null;\r\n self[_DYN_RESPONSE_FINISHED_TI15 /* @min:%2eresponseFinishedTime */] = null;\r\n self.callbackFinishedTime = null;\r\n self.endTime = null;\r\n self.xhrMonitoringState = new XHRMonitoringState();\r\n self.clientFailure = 0;\r\n self[_DYN_TRACE_ID /* @min:%2etraceID */] = traceId;\r\n self[_DYN_SPAN_ID /* @min:%2espanID */] = spanId;\r\n self[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */] = traceCtx === null || traceCtx === void 0 ? void 0 : traceCtx.getTraceFlags();\r\n if (traceCtx) {\r\n self[_DYN_EVENT_TRACE_CTX /* @min:%2eeventTraceCtx */] = (_a = {},\r\n _a[_DYN_TRACE_ID0 /* @min:traceId */] = traceCtx[_DYN_GET_TRACE_ID /* @min:%2egetTraceId */](),\r\n _a[_DYN_SPAN_ID1 /* @min:spanId */] = traceCtx.getSpanId(),\r\n _a[_DYN_TRACE_FLAGS /* @min:traceFlags */] = traceCtx[_DYN_GET_TRACE_FLAGS /* @min:%2egetTraceFlags */](),\r\n _a);\r\n }\r\n else {\r\n self[_DYN_EVENT_TRACE_CTX /* @min:%2eeventTraceCtx */] = null;\r\n }\r\n dynamicProto(ajaxRecord, self, function (self) {\r\n self.getAbsoluteUrl = function () {\r\n return self[_DYN_REQUEST_URL /* @min:%2erequestUrl */] ? urlGetAbsoluteUrl(self[_DYN_REQUEST_URL /* @min:%2erequestUrl */]) : null;\r\n };\r\n self.getPathName = function () {\r\n return self[_DYN_REQUEST_URL /* @min:%2erequestUrl */] ? dataSanitizeUrl(_logger, urlGetCompleteUrl(self[_DYN_METHOD /* @min:%2emethod */], self[_DYN_REQUEST_URL /* @min:%2erequestUrl */])) : null;\r\n };\r\n self[_DYN__CREATE_TRACK_ITEM /* @min:%2eCreateTrackItem */] = function (ajaxType, enableRequestHeaderTracking, getResponse) {\r\n var _a;\r\n // round to 3 decimal points\r\n self.ajaxTotalDuration = Math.round(dateTimeUtilsDuration(self.requestSentTime, self.responseFinishedTime) * 1000) / 1000;\r\n if (self[_DYN_AJAX_TOTAL_DURATION /* @min:%2eajaxTotalDuration */] < 0) {\r\n return null;\r\n }\r\n var dependency = (_a = {\r\n id: \"|\" + self[_DYN_TRACE_ID /* @min:%2etraceID */] + \".\" + self[_DYN_SPAN_ID /* @min:%2espanID */],\r\n target: self[_DYN_GET_ABSOLUTE_URL /* @min:%2egetAbsoluteUrl */]()\r\n },\r\n _a[_DYN_NAME /* @min:name */] = self.getPathName(),\r\n _a.type = ajaxType,\r\n _a[_DYN_START_TIME /* @min:startTime */] = null,\r\n _a.duration = self[_DYN_AJAX_TOTAL_DURATION /* @min:%2eajaxTotalDuration */],\r\n _a.success = (+(self[_DYN_STATUS /* @min:%2estatus */])) >= 200 && (+(self[_DYN_STATUS /* @min:%2estatus */])) < 400,\r\n _a.responseCode = (+(self[_DYN_STATUS /* @min:%2estatus */])),\r\n _a[STR_PROPERTIES] = { HttpMethod: self[_DYN_METHOD /* @min:%2emethod */] },\r\n _a);\r\n var props = dependency[STR_PROPERTIES];\r\n if (self[_DYN_ABORTED /* @min:%2eaborted */]) {\r\n props[_DYN_ABORTED /* @min:%2eaborted */] = true;\r\n }\r\n if (self[_DYN_REQUEST_SENT_TIME /* @min:%2erequestSentTime */]) {\r\n // Set the correct dependency start time\r\n dependency[_DYN_START_TIME /* @min:%2estartTime */] = new Date();\r\n dependency[_DYN_START_TIME /* @min:%2estartTime */].setTime(self[_DYN_REQUEST_SENT_TIME /* @min:%2erequestSentTime */]);\r\n }\r\n // Add Ajax perf details if available\r\n _populatePerfData(self, dependency);\r\n if (enableRequestHeaderTracking) {\r\n if (objKeys(self.requestHeaders)[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n props[_DYN_REQUEST_HEADERS /* @min:%2erequestHeaders */] = self[_DYN_REQUEST_HEADERS /* @min:%2erequestHeaders */];\r\n }\r\n }\r\n if (getResponse) {\r\n var response = getResponse();\r\n if (response) {\r\n // enrich dependency target with correlation context from the server\r\n var correlationContext = response[_DYN_CORRELATION_CONTEXT /* @min:%2ecorrelationContext */];\r\n if (correlationContext) {\r\n dependency.correlationContext = /* dependency.target + \" | \" + */ correlationContext;\r\n }\r\n if (response[_DYN_HEADER_MAP /* @min:%2eheaderMap */]) {\r\n if (objKeys(response.headerMap)[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n props.responseHeaders = response[_DYN_HEADER_MAP /* @min:%2eheaderMap */];\r\n }\r\n }\r\n if (self[_DYN_ERROR_STATUS_TEXT /* @min:%2eerrorStatusText */]) {\r\n if (self[_DYN_STATUS /* @min:%2estatus */] >= 400) {\r\n var responseType = response.type;\r\n if (responseType === \"\" || responseType === \"text\") {\r\n props.responseText = response.responseText ? response[_DYN_STATUS_TEXT /* @min:%2estatusText */] + \" - \" + response[strResponseText] : response[_DYN_STATUS_TEXT /* @min:%2estatusText */];\r\n }\r\n if (responseType === \"json\") {\r\n props.responseText = response.response ? response[_DYN_STATUS_TEXT /* @min:%2estatusText */] + \" - \" + JSON.stringify(response[_DYN_RESPONSE /* @min:%2eresponse */]) : response[_DYN_STATUS_TEXT /* @min:%2estatusText */];\r\n }\r\n }\r\n else if (self[_DYN_STATUS /* @min:%2estatus */] === 0) {\r\n props.responseText = response[_DYN_STATUS_TEXT /* @min:%2estatusText */] || \"\";\r\n }\r\n }\r\n }\r\n }\r\n return dependency;\r\n };\r\n self[_DYN_GET_PART_APROPS /* @min:%2egetPartAProps */] = function () {\r\n var _a;\r\n var partA = null;\r\n var traceCtx = self[_DYN_EVENT_TRACE_CTX /* @min:%2eeventTraceCtx */];\r\n if (traceCtx && (traceCtx[_DYN_TRACE_ID0 /* @min:%2etraceId */] || traceCtx[_DYN_SPAN_ID1 /* @min:%2espanId */])) {\r\n partA = {};\r\n var traceExt = partA[Extensions.TraceExt] = (_a = {},\r\n _a[_DYN_TRACE_ID /* @min:traceID */] = traceCtx[_DYN_TRACE_ID0 /* @min:%2etraceId */],\r\n _a.parentID = traceCtx[_DYN_SPAN_ID1 /* @min:%2espanId */],\r\n _a);\r\n if (!isNullOrUndefined(traceCtx[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */])) {\r\n traceExt[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */] = traceCtx[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */];\r\n }\r\n }\r\n return partA;\r\n };\r\n });\r\n }\r\n ajaxRecord.prototype.getAbsoluteUrl = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n return null;\r\n };\r\n ajaxRecord.prototype.getPathName = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n return null;\r\n };\r\n ajaxRecord.prototype.CreateTrackItem = function (ajaxType, enableRequestHeaderTracking, getResponse) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n return null;\r\n };\r\n ajaxRecord.prototype.getPartAProps = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n return null;\r\n };\r\n return ajaxRecord;\r\n}());\r\nexport { ajaxRecord };\r\n//# sourceMappingURL=ajaxRecord.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { __assign, __extends } from \"tslib\";\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { CorrelationIdHelper, DisabledPropertyName, PropertiesPluginIdentifier, RemoteDependencyData, RequestHeaders, createDistributedTraceContextFromTrace, createTelemetryItem, createTraceParent, dateTimeUtilsNow, formatTraceParent, isInternalApplicationInsightsEndpoint } from \"@microsoft/applicationinsights-common\";\r\nimport { BaseTelemetryPlugin, InstrumentFunc, InstrumentProto, _throwInternal, arrForEach, createProcessTelemetryContext, createUniqueNamespace, deepFreeze, dumpObj, eventOn, generateW3CId, getExceptionName, getGlobal, getIEVersion, getLocation, getPerformance, isFunction, isNullOrUndefined, isString, isXhrSupported, mergeEvtNamespace, objForEachKey, strPrototype, strTrim } from \"@microsoft/applicationinsights-core-js\";\r\nimport { STR_PROPERTIES } from \"./InternalConstants\";\r\nimport { _DYN_ABORTED, _DYN_ABORT_DONE, _DYN_ADD_REQUEST_CONTEXT, _DYN_AJAX_PERF_LOOKUP_DEL18, _DYN_APP_ID, _DYN_CAN_INCLUDE_CORRELAT3, _DYN_CONTEXT, _DYN_CORE, _DYN_DISABLE_AJAX_TRACKIN12, _DYN_DISABLE_FETCH_TRACKI13, _DYN_DISTRIBUTED_TRACING_5, _DYN_ENABLE_AJAX_ERROR_ST7, _DYN_ENABLE_AJAX_PERF_TRA8, _DYN_ENABLE_REQUEST_HEADE6, _DYN_ENABLE_RESPONSE_HEAD10, _DYN_ERROR_STATUS_TEXT, _DYN_EXCLUDE_REQUEST_FROM11, _DYN_GET_ABSOLUTE_URL, _DYN_GET_ALL_RESPONSE_HEA16, _DYN_GET_CORRELATION_CONT17, _DYN_GET_PART_APROPS, _DYN_GET_TRACE_FLAGS, _DYN_GET_TRACE_ID, _DYN_HEADERS, _DYN_HEADER_MAP, _DYN_INCLUDE_CORRELATION_2, _DYN_INST, _DYN_LENGTH, _DYN_MAX_AJAX_CALLS_PER_V9, _DYN_METHOD, _DYN_NAME, _DYN_OPEN_DONE, _DYN_PERF_MARK, _DYN_PERF_TIMING, _DYN_REQUEST_HEADERS, _DYN_REQUEST_SENT_TIME, _DYN_REQUEST_URL, _DYN_RESPONSE, _DYN_RESPONSE_FINISHED_TI15, _DYN_RESPONSE_TEXT, _DYN_SEND_DONE, _DYN_SET_REQUEST_HEADER, _DYN_SPAN_ID, _DYN_SPAN_ID1, _DYN_START_TIME, _DYN_STATE_CHANGE_ATTACHE14, _DYN_STATUS, _DYN_STATUS_TEXT, _DYN_TO_LOWER_CASE, _DYN_TRACE_FLAGS, _DYN_TRACE_ID, _DYN_TRACE_ID0, _DYN_TRACK_DEPENDENCY_DAT4, _DYN__CREATE_TRACK_ITEM } from \"./__DynamicConstants\";\r\nimport { ajaxRecord } from \"./ajaxRecord\";\r\nvar AJAX_MONITOR_PREFIX = \"ai.ajxmn.\";\r\nvar strDiagLog = \"diagLog\";\r\nvar AJAX_DATA_CONTAINER = \"_ajaxData\";\r\nvar STR_FETCH = \"fetch\";\r\nvar ERROR_HEADER = \"Failed to monitor XMLHttpRequest\";\r\nvar ERROR_PREFIX = \", monitoring data for this ajax call \";\r\nvar ERROR_POSTFIX = ERROR_PREFIX + \"may be incorrect.\";\r\nvar ERROR_NOT_SENT = ERROR_PREFIX + \"won't be sent.\";\r\nvar CORRELATION_HEADER_ERROR = \"Failed to get Request-Context correlation header as it may be not included in the response or not accessible.\";\r\nvar CUSTOM_REQUEST_CONTEXT_ERROR = \"Failed to add custom defined request context as configured call back may missing a null check.\";\r\nvar FAILED_TO_CALCULATE_DURATION_ERROR = \"Failed to calculate the duration of the \";\r\n// Using a global value so that to handle same iKey with multiple app insights instances (mostly for testing)\r\nvar _markCount = 0;\r\n/** @Ignore */\r\nfunction _supportsFetch() {\r\n var _global = getGlobal();\r\n if (!_global ||\r\n isNullOrUndefined(_global.Request) ||\r\n isNullOrUndefined(_global.Request[strPrototype]) ||\r\n isNullOrUndefined(_global[STR_FETCH])) {\r\n return null;\r\n }\r\n return _global[STR_FETCH];\r\n}\r\nvar _isWebWorker = null;\r\nfunction isWebWorker() {\r\n if (_isWebWorker == null) {\r\n try {\r\n _isWebWorker = !!(self && self instanceof WorkerGlobalScope);\r\n }\r\n catch (e) {\r\n _isWebWorker = false;\r\n }\r\n }\r\n return _isWebWorker;\r\n}\r\n/**\r\n * Determines whether ajax monitoring can be enabled on this document\r\n * @returns True if Ajax monitoring is supported on this page, otherwise false\r\n * @ignore\r\n */\r\nfunction _supportsAjaxMonitoring(ajaxMonitorInstance, ajaxDataId) {\r\n var _a;\r\n var result = false;\r\n if (isXhrSupported()) {\r\n var proto = XMLHttpRequest[strPrototype];\r\n result = !isNullOrUndefined(proto) &&\r\n !isNullOrUndefined(proto.open) && // eslint-disable-line security/detect-non-literal-fs-filename -- false positive\r\n !isNullOrUndefined(proto.send) &&\r\n !isNullOrUndefined(proto.abort);\r\n }\r\n var ieVer = getIEVersion();\r\n if (ieVer && ieVer < 9) {\r\n result = false;\r\n }\r\n if (result) {\r\n // Disable if the XmlHttpRequest can't be extended or hooked\r\n try {\r\n var xhr = new XMLHttpRequest();\r\n var xhrData = {\r\n xh: [],\r\n i: (_a = {},\r\n _a[ajaxDataId] = {},\r\n _a)\r\n };\r\n xhr[AJAX_DATA_CONTAINER] = xhrData;\r\n // Check that we can update the prototype\r\n var theOpen = XMLHttpRequest[strPrototype].open;\r\n XMLHttpRequest[strPrototype].open = theOpen;\r\n }\r\n catch (e) {\r\n // We can't decorate the xhr object so disable monitoring\r\n result = false;\r\n _throwInternalCritical(ajaxMonitorInstance, 15 /* _eInternalMessageId.FailedMonitorAjaxOpen */, \"Failed to enable XMLHttpRequest monitoring, extension is not supported\", {\r\n exception: dumpObj(e)\r\n });\r\n }\r\n }\r\n return result;\r\n}\r\n/**\r\n * Internal helper to fetch the SDK instance tracking data for this XHR request\r\n * @param xhr\r\n * @param ajaxDataId\r\n * @returns\r\n */\r\nvar _getAjaxData = function (xhr, ajaxDataId) {\r\n if (xhr && ajaxDataId && xhr[AJAX_DATA_CONTAINER]) {\r\n return (xhr[AJAX_DATA_CONTAINER].i || {})[ajaxDataId];\r\n }\r\n return null;\r\n};\r\n/**\r\n * @ignore\r\n * Internal helper to track the singleton shared tracking headers, so we can attempt to not create headers\r\n * that might cause an issue if multiple values are populated.\r\n * @param xhr - The instrumented XHR instance\r\n */\r\nvar _addSharedXhrHeaders = function (xhr, name, value) {\r\n if (xhr) {\r\n var headers = (xhr[AJAX_DATA_CONTAINER] || {}).xh;\r\n if (headers) {\r\n headers.push({\r\n n: name,\r\n v: value\r\n });\r\n }\r\n }\r\n};\r\nvar _isHeaderSet = function (xhr, name) {\r\n var isPresent = false;\r\n if (xhr) {\r\n var headers = (xhr[AJAX_DATA_CONTAINER] || {}).xh;\r\n if (headers) {\r\n arrForEach(headers, function (header) {\r\n if (header.n === name) {\r\n isPresent = true;\r\n return -1;\r\n }\r\n });\r\n }\r\n }\r\n return isPresent;\r\n};\r\n/** @Ignore */\r\nfunction _getFailedAjaxDiagnosticsMessage(xhr, ajaxDataId) {\r\n var result = \"\";\r\n try {\r\n var ajaxData = _getAjaxData(xhr, ajaxDataId);\r\n if (ajaxData && ajaxData[_DYN_REQUEST_URL /* @min:%2erequestUrl */]) {\r\n result += \"(url: '\" + ajaxData[_DYN_REQUEST_URL /* @min:%2erequestUrl */] + \"')\";\r\n }\r\n }\r\n catch (e) {\r\n // eslint-disable-next-line no-empty\r\n }\r\n return result;\r\n}\r\n/** @ignore */\r\nfunction _throwInternalCritical(ajaxMonitorInstance, msgId, message, properties, isUserAct) {\r\n _throwInternal(ajaxMonitorInstance[strDiagLog](), 1 /* eLoggingSeverity.CRITICAL */, msgId, message, properties, isUserAct);\r\n}\r\n/** @ignore */\r\nfunction _throwInternalWarning(ajaxMonitorInstance, msgId, message, properties, isUserAct) {\r\n _throwInternal(ajaxMonitorInstance[strDiagLog](), 2 /* eLoggingSeverity.WARNING */, msgId, message, properties, isUserAct);\r\n}\r\n/** @Ignore */\r\nfunction _createErrorCallbackFunc(ajaxMonitorInstance, internalMessage, message) {\r\n // tslint:disable-next-line\r\n return function (callDetails) {\r\n _throwInternalCritical(ajaxMonitorInstance, internalMessage, message, {\r\n ajaxDiagnosticsMessage: _getFailedAjaxDiagnosticsMessage(callDetails[_DYN_INST /* @min:%2einst */], ajaxMonitorInstance._ajaxDataId),\r\n exception: dumpObj(callDetails.err)\r\n });\r\n };\r\n}\r\nfunction _indexOf(value, match) {\r\n if (value && match) {\r\n return value.indexOf(match);\r\n }\r\n return -1;\r\n}\r\nfunction _addHandler(container, id, theFunc) {\r\n var theHandler = {\r\n id: id,\r\n fn: theFunc\r\n };\r\n container.push(theHandler);\r\n return {\r\n remove: function () {\r\n arrForEach(container, function (initializer, idx) {\r\n if (initializer.id === theHandler.id) {\r\n container.splice(idx, 1);\r\n return -1;\r\n }\r\n });\r\n }\r\n };\r\n}\r\nfunction _processDependencyContainer(core, container, details, message) {\r\n var result = true;\r\n arrForEach(container, function (theFunc, idx) {\r\n try {\r\n if (theFunc.fn.call(null, details) === false) {\r\n result = false;\r\n }\r\n }\r\n catch (e) {\r\n _throwInternal(core && core.logger, 1 /* eLoggingSeverity.CRITICAL */, 64 /* _eInternalMessageId.TelemetryInitializerFailed */, \"Dependency \" + message + \" [#\" + idx + \"] failed: \" + getExceptionName(e), { exception: dumpObj(e) }, true);\r\n }\r\n });\r\n return result;\r\n}\r\nfunction _processDependencyListeners(listeners, core, ajaxData, xhr, input, init) {\r\n var initializersCount = listeners[_DYN_LENGTH /* @min:%2elength */];\r\n if (initializersCount > 0) {\r\n var details = {\r\n core: core,\r\n xhr: xhr,\r\n input: input,\r\n init: init,\r\n traceId: ajaxData[_DYN_TRACE_ID /* @min:%2etraceID */],\r\n spanId: ajaxData[_DYN_SPAN_ID /* @min:%2espanID */],\r\n traceFlags: ajaxData[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */],\r\n context: ajaxData[_DYN_CONTEXT /* @min:%2econtext */] || {},\r\n aborted: !!ajaxData[_DYN_ABORTED /* @min:%2eaborted */]\r\n };\r\n _processDependencyContainer(core, listeners, details, \"listener\");\r\n ajaxData[_DYN_TRACE_ID /* @min:%2etraceID */] = details[_DYN_TRACE_ID0 /* @min:%2etraceId */];\r\n ajaxData[_DYN_SPAN_ID /* @min:%2espanID */] = details[_DYN_SPAN_ID1 /* @min:%2espanId */];\r\n ajaxData[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */] = details[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */];\r\n ajaxData[_DYN_CONTEXT /* @min:%2econtext */] = details[_DYN_CONTEXT /* @min:%2econtext */];\r\n }\r\n}\r\nvar BLOB_CORE = \"*.blob.core.\";\r\nexport var DfltAjaxCorrelationHeaderExDomains = deepFreeze([\r\n BLOB_CORE + \"windows.net\",\r\n BLOB_CORE + \"chinacloudapi.cn\",\r\n BLOB_CORE + \"cloudapi.de\",\r\n BLOB_CORE + \"usgovcloudapi.net\"\r\n]);\r\nvar _internalExcludeEndpoints = [\r\n /https:\\/\\/[^\\/]*(\\.pipe\\.aria|aria\\.pipe|events\\.data|collector\\.azure)\\.[^\\/]+\\/(OneCollector\\/1|Collector\\/3)\\.0/i\r\n];\r\nfunction _getDefaultConfig() {\r\n var config = {\r\n maxAjaxCallsPerView: 500,\r\n disableAjaxTracking: false,\r\n disableFetchTracking: false,\r\n excludeRequestFromAutoTrackingPatterns: undefined,\r\n disableCorrelationHeaders: false,\r\n distributedTracingMode: 1 /* eDistributedTracingModes.AI_AND_W3C */,\r\n correlationHeaderExcludedDomains: DfltAjaxCorrelationHeaderExDomains,\r\n correlationHeaderDomains: undefined,\r\n correlationHeaderExcludePatterns: undefined,\r\n appId: undefined,\r\n enableCorsCorrelation: false,\r\n enableRequestHeaderTracking: false,\r\n enableResponseHeaderTracking: false,\r\n enableAjaxErrorStatusText: false,\r\n enableAjaxPerfTracking: false,\r\n maxAjaxPerfLookupAttempts: 3,\r\n ajaxPerfLookupDelay: 25,\r\n ignoreHeaders: [\r\n \"Authorization\",\r\n \"X-API-Key\",\r\n \"WWW-Authenticate\"\r\n ],\r\n addRequestContext: undefined,\r\n addIntEndpoints: true\r\n };\r\n return config;\r\n}\r\nfunction _getEmptyConfig() {\r\n var emptyConfig = _getDefaultConfig();\r\n objForEachKey(emptyConfig, function (value) {\r\n emptyConfig[value] = undefined;\r\n });\r\n return emptyConfig;\r\n}\r\nvar AjaxMonitor = /** @class */ (function (_super) {\r\n __extends(AjaxMonitor, _super);\r\n function AjaxMonitor() {\r\n var _this = _super.call(this) || this;\r\n _this.identifier = AjaxMonitor.identifier;\r\n _this.priority = 120;\r\n var _fetchInitialized; // fetch monitoring initialized\r\n var _xhrInitialized; // XHR monitoring initialized\r\n var _currentWindowHost;\r\n var _config;\r\n var _enableRequestHeaderTracking;\r\n var _enableAjaxErrorStatusText;\r\n var _trackAjaxAttempts;\r\n var _context;\r\n var _isUsingW3CHeaders;\r\n var _isUsingAIHeaders;\r\n var _markPrefix;\r\n var _enableAjaxPerfTracking;\r\n var _maxAjaxCallsPerView;\r\n var _enableResponseHeaderTracking;\r\n var _disabledUrls;\r\n var _disableAjaxTracking;\r\n var _disableFetchTracking;\r\n var _excludeRequestFromAutoTrackingPatterns;\r\n var _addRequestContext;\r\n var _evtNamespace;\r\n var _ajaxDataId;\r\n var _dependencyHandlerId;\r\n var _dependencyListeners;\r\n var _dependencyInitializers;\r\n dynamicProto(AjaxMonitor, _this, function (_self, _base) {\r\n var _addHook = _base._addHook;\r\n _initDefaults();\r\n _self.initialize = function (config, core, extensions, pluginChain) {\r\n if (!_self.isInitialized()) {\r\n _base.initialize(config, core, extensions, pluginChain);\r\n _evtNamespace = mergeEvtNamespace(createUniqueNamespace(\"ajax\"), core && core.evtNamespace && core.evtNamespace());\r\n _populateDefaults(config);\r\n _instrumentXhr();\r\n _instrumentFetch();\r\n _populateContext();\r\n }\r\n };\r\n _self._doTeardown = function () {\r\n _initDefaults();\r\n };\r\n _self.trackDependencyData = function (dependency, properties) {\r\n _reportDependencyInternal(_dependencyInitializers, _self[_DYN_CORE /* @min:%2ecore */], null, dependency, properties);\r\n };\r\n _self[_DYN_INCLUDE_CORRELATION_2 /* @min:%2eincludeCorrelationHeaders */] = function (ajaxData, input, init, xhr) {\r\n // Test Hook to allow the overriding of the location host\r\n var currentWindowHost = _self[\"_currentWindowHost\"] || _currentWindowHost;\r\n _processDependencyListeners(_dependencyListeners, _self[_DYN_CORE /* @min:%2ecore */], ajaxData, xhr, input, init);\r\n if (input || input === \"\") { // Fetch\r\n if (CorrelationIdHelper[_DYN_CAN_INCLUDE_CORRELAT3 /* @min:%2ecanIncludeCorrelationHeader */](_config, ajaxData[_DYN_GET_ABSOLUTE_URL /* @min:%2egetAbsoluteUrl */](), currentWindowHost)) {\r\n if (!init) {\r\n init = {};\r\n }\r\n // init headers override original request headers\r\n // so, if they exist use only them, otherwise use request's because they should have been applied in the first place\r\n // not using original request headers will result in them being lost\r\n var headers = new Headers(init[_DYN_HEADERS /* @min:%2eheaders */] || (input instanceof Request ? (input[_DYN_HEADERS /* @min:%2eheaders */] || {}) : {}));\r\n if (_isUsingAIHeaders) {\r\n var id = \"|\" + ajaxData[_DYN_TRACE_ID /* @min:%2etraceID */] + \".\" + ajaxData[_DYN_SPAN_ID /* @min:%2espanID */];\r\n headers.set(RequestHeaders[3 /* eRequestHeaders.requestIdHeader */], id);\r\n if (_enableRequestHeaderTracking) {\r\n ajaxData[_DYN_REQUEST_HEADERS /* @min:%2erequestHeaders */][RequestHeaders[3 /* eRequestHeaders.requestIdHeader */]] = id;\r\n }\r\n }\r\n var appId = _config[_DYN_APP_ID /* @min:%2eappId */] || (_context && _context[_DYN_APP_ID /* @min:%2eappId */]());\r\n if (appId) {\r\n headers.set(RequestHeaders[0 /* eRequestHeaders.requestContextHeader */], RequestHeaders[2 /* eRequestHeaders.requestContextAppIdFormat */] + appId);\r\n if (_enableRequestHeaderTracking) {\r\n ajaxData[_DYN_REQUEST_HEADERS /* @min:%2erequestHeaders */][RequestHeaders[0 /* eRequestHeaders.requestContextHeader */]] = RequestHeaders[2 /* eRequestHeaders.requestContextAppIdFormat */] + appId;\r\n }\r\n }\r\n if (_isUsingW3CHeaders) {\r\n var traceFlags = ajaxData[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */];\r\n if (isNullOrUndefined(traceFlags)) {\r\n traceFlags = 0x01;\r\n }\r\n var traceParent = formatTraceParent(createTraceParent(ajaxData[_DYN_TRACE_ID /* @min:%2etraceID */], ajaxData[_DYN_SPAN_ID /* @min:%2espanID */], traceFlags));\r\n headers.set(RequestHeaders[4 /* eRequestHeaders.traceParentHeader */], traceParent);\r\n if (_enableRequestHeaderTracking) {\r\n ajaxData[_DYN_REQUEST_HEADERS /* @min:%2erequestHeaders */][RequestHeaders[4 /* eRequestHeaders.traceParentHeader */]] = traceParent;\r\n }\r\n }\r\n init[_DYN_HEADERS /* @min:%2eheaders */] = headers;\r\n }\r\n return init;\r\n }\r\n else if (xhr) { // XHR\r\n if (CorrelationIdHelper[_DYN_CAN_INCLUDE_CORRELAT3 /* @min:%2ecanIncludeCorrelationHeader */](_config, ajaxData[_DYN_GET_ABSOLUTE_URL /* @min:%2egetAbsoluteUrl */](), currentWindowHost)) {\r\n if (_isUsingAIHeaders) {\r\n if (!_isHeaderSet(xhr, RequestHeaders[3 /* eRequestHeaders.requestIdHeader */])) {\r\n var id = \"|\" + ajaxData[_DYN_TRACE_ID /* @min:%2etraceID */] + \".\" + ajaxData[_DYN_SPAN_ID /* @min:%2espanID */];\r\n xhr[_DYN_SET_REQUEST_HEADER /* @min:%2esetRequestHeader */](RequestHeaders[3 /* eRequestHeaders.requestIdHeader */], id);\r\n if (_enableRequestHeaderTracking) {\r\n ajaxData[_DYN_REQUEST_HEADERS /* @min:%2erequestHeaders */][RequestHeaders[3 /* eRequestHeaders.requestIdHeader */]] = id;\r\n }\r\n }\r\n else {\r\n _throwInternalWarning(_self, 71 /* _eInternalMessageId.FailedMonitorAjaxSetRequestHeader */, \"Unable to set [\" + RequestHeaders[3 /* eRequestHeaders.requestIdHeader */] + \"] as it has already been set by another instance\");\r\n }\r\n }\r\n var appId = _config[_DYN_APP_ID /* @min:%2eappId */] || (_context && _context[_DYN_APP_ID /* @min:%2eappId */]());\r\n if (appId) {\r\n if (!_isHeaderSet(xhr, RequestHeaders[0 /* eRequestHeaders.requestContextHeader */])) {\r\n xhr[_DYN_SET_REQUEST_HEADER /* @min:%2esetRequestHeader */](RequestHeaders[0 /* eRequestHeaders.requestContextHeader */], RequestHeaders[2 /* eRequestHeaders.requestContextAppIdFormat */] + appId);\r\n if (_enableRequestHeaderTracking) {\r\n ajaxData[_DYN_REQUEST_HEADERS /* @min:%2erequestHeaders */][RequestHeaders[0 /* eRequestHeaders.requestContextHeader */]] = RequestHeaders[2 /* eRequestHeaders.requestContextAppIdFormat */] + appId;\r\n }\r\n }\r\n else {\r\n _throwInternalWarning(_self, 71 /* _eInternalMessageId.FailedMonitorAjaxSetRequestHeader */, \"Unable to set [\" + RequestHeaders[0 /* eRequestHeaders.requestContextHeader */] + \"] as it has already been set by another instance\");\r\n }\r\n }\r\n if (_isUsingW3CHeaders) {\r\n var traceFlags = ajaxData[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */];\r\n if (isNullOrUndefined(traceFlags)) {\r\n traceFlags = 0x01;\r\n }\r\n if (!_isHeaderSet(xhr, RequestHeaders[4 /* eRequestHeaders.traceParentHeader */])) {\r\n var traceParent = formatTraceParent(createTraceParent(ajaxData[_DYN_TRACE_ID /* @min:%2etraceID */], ajaxData[_DYN_SPAN_ID /* @min:%2espanID */], traceFlags));\r\n xhr[_DYN_SET_REQUEST_HEADER /* @min:%2esetRequestHeader */](RequestHeaders[4 /* eRequestHeaders.traceParentHeader */], traceParent);\r\n if (_enableRequestHeaderTracking) {\r\n ajaxData[_DYN_REQUEST_HEADERS /* @min:%2erequestHeaders */][RequestHeaders[4 /* eRequestHeaders.traceParentHeader */]] = traceParent;\r\n }\r\n }\r\n else {\r\n _throwInternalWarning(_self, 71 /* _eInternalMessageId.FailedMonitorAjaxSetRequestHeader */, \"Unable to set [\" + RequestHeaders[4 /* eRequestHeaders.traceParentHeader */] + \"] as it has already been set by another instance\");\r\n }\r\n }\r\n }\r\n return xhr;\r\n }\r\n return undefined;\r\n };\r\n _self[_DYN_TRACK_DEPENDENCY_DAT4 /* @min:%2etrackDependencyDataInternal */] = function (dependency, properties, systemProperties) {\r\n if (_maxAjaxCallsPerView === -1 || _trackAjaxAttempts < _maxAjaxCallsPerView) {\r\n // Hack since expected format in w3c mode is |abc.def.\r\n // Non-w3c format is |abc.def\r\n // @todo Remove if better solution is available, e.g. handle in portal\r\n if ((_config[_DYN_DISTRIBUTED_TRACING_5 /* @min:%2edistributedTracingMode */] === 2 /* eDistributedTracingModes.W3C */\r\n || _config[_DYN_DISTRIBUTED_TRACING_5 /* @min:%2edistributedTracingMode */] === 1 /* eDistributedTracingModes.AI_AND_W3C */)\r\n && typeof dependency.id === \"string\" && dependency.id[dependency.id[_DYN_LENGTH /* @min:%2elength */] - 1] !== \".\") {\r\n dependency.id += \".\";\r\n }\r\n if (isNullOrUndefined(dependency[_DYN_START_TIME /* @min:%2estartTime */])) {\r\n dependency[_DYN_START_TIME /* @min:%2estartTime */] = new Date();\r\n }\r\n var item = createTelemetryItem(dependency, RemoteDependencyData.dataType, RemoteDependencyData.envelopeType, _self[strDiagLog](), properties, systemProperties);\r\n _self[_DYN_CORE /* @min:%2ecore */].track(item);\r\n }\r\n else if (_trackAjaxAttempts === _maxAjaxCallsPerView) {\r\n _throwInternalCritical(_self, 55 /* _eInternalMessageId.MaxAjaxPerPVExceeded */, \"Maximum ajax per page view limit reached, ajax monitoring is paused until the next trackPageView(). In order to increase the limit set the maxAjaxCallsPerView configuration parameter.\", true);\r\n }\r\n ++_trackAjaxAttempts;\r\n };\r\n _self.addDependencyListener = function (dependencyListener) {\r\n return _addHandler(_dependencyListeners, _dependencyHandlerId++, dependencyListener);\r\n };\r\n _self.addDependencyInitializer = function (dependencyInitializer) {\r\n return _addHandler(_dependencyInitializers, _dependencyHandlerId++, dependencyInitializer);\r\n };\r\n function _initDefaults() {\r\n var location = getLocation();\r\n _fetchInitialized = false; // fetch monitoring initialized\r\n _xhrInitialized = false; // XHR monitoring initialized\r\n _currentWindowHost = location && location.host && location.host[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]();\r\n _config = AjaxMonitor.getEmptyConfig();\r\n _enableRequestHeaderTracking = false;\r\n _enableAjaxErrorStatusText = false;\r\n _trackAjaxAttempts = 0;\r\n _context = null;\r\n _isUsingW3CHeaders = false;\r\n _isUsingAIHeaders = false;\r\n _markPrefix = null;\r\n _enableAjaxPerfTracking = false;\r\n _maxAjaxCallsPerView = 0;\r\n _enableResponseHeaderTracking = false;\r\n _disabledUrls = {};\r\n _disableAjaxTracking = false;\r\n _disableFetchTracking = false;\r\n _excludeRequestFromAutoTrackingPatterns = null;\r\n _addRequestContext = null;\r\n _evtNamespace = null;\r\n _dependencyHandlerId = 0;\r\n _dependencyListeners = [];\r\n _dependencyInitializers = [];\r\n _ajaxDataId = createUniqueNamespace(\"ajaxData\");\r\n _self._ajaxDataId = _ajaxDataId;\r\n }\r\n function _populateDefaults(config) {\r\n var ctx = createProcessTelemetryContext(null, config, _self[_DYN_CORE /* @min:%2ecore */]);\r\n // Reset to the empty config\r\n _config = _getEmptyConfig();\r\n var defaultConfig = _getDefaultConfig();\r\n objForEachKey(defaultConfig, function (field, value) {\r\n _config[field] = ctx.getConfig(AjaxMonitor.identifier, field, value);\r\n });\r\n var distributedTracingMode = _config[_DYN_DISTRIBUTED_TRACING_5 /* @min:%2edistributedTracingMode */];\r\n _enableRequestHeaderTracking = _config[_DYN_ENABLE_REQUEST_HEADE6 /* @min:%2eenableRequestHeaderTracking */];\r\n _enableAjaxErrorStatusText = _config[_DYN_ENABLE_AJAX_ERROR_ST7 /* @min:%2eenableAjaxErrorStatusText */];\r\n _enableAjaxPerfTracking = _config[_DYN_ENABLE_AJAX_PERF_TRA8 /* @min:%2eenableAjaxPerfTracking */];\r\n _maxAjaxCallsPerView = _config[_DYN_MAX_AJAX_CALLS_PER_V9 /* @min:%2emaxAjaxCallsPerView */];\r\n _enableResponseHeaderTracking = _config[_DYN_ENABLE_RESPONSE_HEAD10 /* @min:%2eenableResponseHeaderTracking */];\r\n _excludeRequestFromAutoTrackingPatterns = [].concat(_config[_DYN_EXCLUDE_REQUEST_FROM11 /* @min:%2eexcludeRequestFromAutoTrackingPatterns */] || [], _config.addIntEndpoints !== false ? _internalExcludeEndpoints : []);\r\n _addRequestContext = _config[_DYN_ADD_REQUEST_CONTEXT /* @min:%2eaddRequestContext */];\r\n _isUsingAIHeaders = distributedTracingMode === 0 /* eDistributedTracingModes.AI */ || distributedTracingMode === 1 /* eDistributedTracingModes.AI_AND_W3C */;\r\n _isUsingW3CHeaders = distributedTracingMode === 1 /* eDistributedTracingModes.AI_AND_W3C */ || distributedTracingMode === 2 /* eDistributedTracingModes.W3C */;\r\n if (_enableAjaxPerfTracking) {\r\n var iKey = config.instrumentationKey || \"unkwn\";\r\n if (iKey[_DYN_LENGTH /* @min:%2elength */] > 5) {\r\n _markPrefix = AJAX_MONITOR_PREFIX + iKey.substring(iKey[_DYN_LENGTH /* @min:%2elength */] - 5) + \".\";\r\n }\r\n else {\r\n _markPrefix = AJAX_MONITOR_PREFIX + iKey + \".\";\r\n }\r\n }\r\n _disableAjaxTracking = !!_config[_DYN_DISABLE_AJAX_TRACKIN12 /* @min:%2edisableAjaxTracking */];\r\n _disableFetchTracking = !!_config[_DYN_DISABLE_FETCH_TRACKI13 /* @min:%2edisableFetchTracking */];\r\n }\r\n function _populateContext() {\r\n var propExt = _self[_DYN_CORE /* @min:%2ecore */].getPlugin(PropertiesPluginIdentifier);\r\n if (propExt) {\r\n _context = propExt.plugin[_DYN_CONTEXT /* @min:%2econtext */]; // we could move IPropertiesPlugin to common as well\r\n }\r\n }\r\n // discard the header if it's defined as ignoreHeaders in ICorrelationConfig\r\n function _canIncludeHeaders(header) {\r\n var rlt = true;\r\n if (header || _config.ignoreHeaders) {\r\n arrForEach(_config.ignoreHeaders, (function (key) {\r\n if (key[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]() === header[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]()) {\r\n rlt = false;\r\n return -1;\r\n }\r\n }));\r\n }\r\n return rlt;\r\n }\r\n // Fetch Stuff\r\n function _instrumentFetch() {\r\n var fetch = _supportsFetch();\r\n if (!fetch) {\r\n return;\r\n }\r\n var global = getGlobal();\r\n var isPolyfill = fetch.polyfill;\r\n if (!_disableFetchTracking && !_fetchInitialized) {\r\n _addHook(InstrumentFunc(global, STR_FETCH, {\r\n ns: _evtNamespace,\r\n // Add request hook\r\n req: function (callDetails, input, init) {\r\n var fetchData;\r\n if (!_disableFetchTracking && _fetchInitialized &&\r\n !_isDisabledRequest(null, input, init) &&\r\n // If we have a polyfil and XHR instrumented then let XHR report otherwise we get duplicates\r\n !(isPolyfill && _xhrInitialized)) {\r\n var ctx = callDetails.ctx();\r\n fetchData = _createFetchRecord(input, init);\r\n var newInit = _self[_DYN_INCLUDE_CORRELATION_2 /* @min:%2eincludeCorrelationHeaders */](fetchData, input, init);\r\n if (newInit !== init) {\r\n callDetails.set(1, newInit);\r\n }\r\n ctx.data = fetchData;\r\n }\r\n },\r\n rsp: function (callDetails, input) {\r\n if (!_disableFetchTracking) {\r\n var fetchData_1 = callDetails.ctx().data;\r\n if (fetchData_1) {\r\n // Replace the result with the new promise from this code\r\n callDetails.rslt = callDetails.rslt.then(function (response) {\r\n _reportFetchMetrics(callDetails, (response || {})[_DYN_STATUS /* @min:%2estatus */], input, response, fetchData_1, function () {\r\n var ajaxResponse = {\r\n statusText: (response || {})[_DYN_STATUS_TEXT /* @min:%2estatusText */],\r\n headerMap: null,\r\n correlationContext: _getFetchCorrelationContext(response)\r\n };\r\n if (_enableResponseHeaderTracking && response) {\r\n var responseHeaderMap_1 = {};\r\n response.headers.forEach(function (value, name) {\r\n if (_canIncludeHeaders(name)) {\r\n responseHeaderMap_1[name] = value;\r\n }\r\n });\r\n ajaxResponse[_DYN_HEADER_MAP /* @min:%2eheaderMap */] = responseHeaderMap_1;\r\n }\r\n return ajaxResponse;\r\n });\r\n return response;\r\n })[\"catch\"](function (reason) {\r\n _reportFetchMetrics(callDetails, 0, input, null, fetchData_1, null, { error: reason.message || dumpObj(reason) });\r\n throw reason;\r\n });\r\n }\r\n }\r\n },\r\n // Create an error callback to report any hook errors\r\n hkErr: _createErrorCallbackFunc(_self, 15 /* _eInternalMessageId.FailedMonitorAjaxOpen */, \"Failed to monitor Window.fetch\" + ERROR_POSTFIX)\r\n }, true, isWebWorker()));\r\n _fetchInitialized = true;\r\n }\r\n else if (isPolyfill) {\r\n // If fetch is a polyfill we need to capture the request to ensure that we correctly track\r\n // disabled request URLS (i.e. internal urls) to ensure we don't end up in a constant loop\r\n // of reporting ourselves, for example React Native uses a polyfill for fetch\r\n // Note: Polyfill implementations that don't support the \"poyyfill\" tag are not supported\r\n // the workaround is to add a polyfill property to your fetch implementation before initializing\r\n // App Insights\r\n _addHook(InstrumentFunc(global, STR_FETCH, {\r\n ns: _evtNamespace,\r\n req: function (callDetails, input, init) {\r\n // Just call so that we record any disabled URL\r\n _isDisabledRequest(null, input, init);\r\n }\r\n }));\r\n }\r\n if (isPolyfill) {\r\n // retag the instrumented fetch with the same polyfill settings this is mostly for testing\r\n // But also supports multiple App Insights usages\r\n global[STR_FETCH].polyfill = isPolyfill;\r\n }\r\n }\r\n function _hookProto(target, funcName, callbacks) {\r\n _addHook(InstrumentProto(target, funcName, callbacks));\r\n }\r\n function _instrumentXhr() {\r\n if (_supportsAjaxMonitoring(_self, _ajaxDataId) && !_disableAjaxTracking && !_xhrInitialized) {\r\n // Instrument open\r\n _hookProto(XMLHttpRequest, \"open\", {\r\n ns: _evtNamespace,\r\n req: function (callDetails, method, url, async) {\r\n if (!_disableAjaxTracking) {\r\n var xhr = callDetails[_DYN_INST /* @min:%2einst */];\r\n var ajaxData = _getAjaxData(xhr, _ajaxDataId);\r\n if (!_isDisabledRequest(xhr, url) && _isMonitoredXhrInstance(xhr, ajaxData, true)) {\r\n if (!ajaxData || !ajaxData.xhrMonitoringState[_DYN_OPEN_DONE /* @min:%2eopenDone */]) {\r\n // Only create a single ajaxData (even when multiple AI instances are running)\r\n ajaxData = _openHandler(xhr, method, url, async);\r\n }\r\n // always attach to the on ready state change (required for handling multiple instances)\r\n _attachToOnReadyStateChange(xhr, ajaxData);\r\n }\r\n }\r\n },\r\n hkErr: _createErrorCallbackFunc(_self, 15 /* _eInternalMessageId.FailedMonitorAjaxOpen */, ERROR_HEADER + \".open\" + ERROR_POSTFIX)\r\n });\r\n // Instrument send\r\n _hookProto(XMLHttpRequest, \"send\", {\r\n ns: _evtNamespace,\r\n req: function (callDetails, context) {\r\n if (!_disableAjaxTracking) {\r\n var xhr = callDetails[_DYN_INST /* @min:%2einst */];\r\n var ajaxData = _getAjaxData(xhr, _ajaxDataId);\r\n if (_isMonitoredXhrInstance(xhr, ajaxData) && !ajaxData.xhrMonitoringState[_DYN_SEND_DONE /* @min:%2esendDone */]) {\r\n _createMarkId(\"xhr\", ajaxData);\r\n ajaxData[_DYN_REQUEST_SENT_TIME /* @min:%2erequestSentTime */] = dateTimeUtilsNow();\r\n _self[_DYN_INCLUDE_CORRELATION_2 /* @min:%2eincludeCorrelationHeaders */](ajaxData, undefined, undefined, xhr);\r\n ajaxData.xhrMonitoringState[_DYN_SEND_DONE /* @min:%2esendDone */] = true;\r\n }\r\n }\r\n },\r\n hkErr: _createErrorCallbackFunc(_self, 17 /* _eInternalMessageId.FailedMonitorAjaxSend */, ERROR_HEADER + ERROR_POSTFIX)\r\n });\r\n // Instrument abort\r\n _hookProto(XMLHttpRequest, \"abort\", {\r\n ns: _evtNamespace,\r\n req: function (callDetails) {\r\n if (!_disableAjaxTracking) {\r\n var xhr = callDetails[_DYN_INST /* @min:%2einst */];\r\n var ajaxData = _getAjaxData(xhr, _ajaxDataId);\r\n if (_isMonitoredXhrInstance(xhr, ajaxData) && !ajaxData.xhrMonitoringState[_DYN_ABORT_DONE /* @min:%2eabortDone */]) {\r\n ajaxData[_DYN_ABORTED /* @min:%2eaborted */] = 1;\r\n ajaxData.xhrMonitoringState[_DYN_ABORT_DONE /* @min:%2eabortDone */] = true;\r\n }\r\n }\r\n },\r\n hkErr: _createErrorCallbackFunc(_self, 13 /* _eInternalMessageId.FailedMonitorAjaxAbort */, ERROR_HEADER + \".abort\" + ERROR_POSTFIX)\r\n });\r\n // Instrument setRequestHeader\r\n _hookProto(XMLHttpRequest, \"setRequestHeader\", {\r\n ns: _evtNamespace,\r\n req: function (callDetails, header, value) {\r\n if (!_disableAjaxTracking) {\r\n var xhr = callDetails[_DYN_INST /* @min:%2einst */];\r\n var ajaxData = _getAjaxData(xhr, _ajaxDataId);\r\n if (ajaxData && _isMonitoredXhrInstance(xhr, ajaxData)) {\r\n _addSharedXhrHeaders(xhr, header, value);\r\n if (_enableRequestHeaderTracking && _canIncludeHeaders(header)) {\r\n if (ajaxData) {\r\n ajaxData[_DYN_REQUEST_HEADERS /* @min:%2erequestHeaders */][header] = value;\r\n }\r\n }\r\n }\r\n }\r\n },\r\n hkErr: _createErrorCallbackFunc(_self, 71 /* _eInternalMessageId.FailedMonitorAjaxSetRequestHeader */, ERROR_HEADER + \".setRequestHeader\" + ERROR_POSTFIX)\r\n });\r\n _xhrInitialized = true;\r\n }\r\n }\r\n function _isDisabledRequest(xhr, request, init) {\r\n var isDisabled = false;\r\n var theUrl = ((!isString(request) ? (request || {}).url || \"\" : request) || \"\")[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]();\r\n // check excludeRequestFromAutoTrackingPatterns before stripping off any query string\r\n arrForEach(_excludeRequestFromAutoTrackingPatterns, function (regex) {\r\n var theRegex = regex;\r\n if (isString(regex)) {\r\n theRegex = new RegExp(regex);\r\n }\r\n if (!isDisabled) {\r\n isDisabled = theRegex.test(theUrl);\r\n }\r\n });\r\n // if request url matches with exclude regex pattern, return true and no need to check for headers\r\n if (isDisabled) {\r\n return isDisabled;\r\n }\r\n var idx = _indexOf(theUrl, \"?\");\r\n var idx2 = _indexOf(theUrl, \"#\");\r\n if (idx === -1 || (idx2 !== -1 && idx2 < idx)) {\r\n idx = idx2;\r\n }\r\n if (idx !== -1) {\r\n // Strip off any Query string\r\n theUrl = theUrl.substring(0, idx);\r\n }\r\n // check that this instance is not not used by ajax call performed inside client side monitoring to send data to collector\r\n if (!isNullOrUndefined(xhr)) {\r\n // Look on the XMLHttpRequest of the URL string value\r\n isDisabled = xhr[DisabledPropertyName] === true || theUrl[DisabledPropertyName] === true;\r\n }\r\n else if (!isNullOrUndefined(request)) { // fetch\r\n // Look for DisabledPropertyName in either Request or RequestInit\r\n isDisabled = (typeof request === \"object\" ? request[DisabledPropertyName] === true : false) ||\r\n (init ? init[DisabledPropertyName] === true : false);\r\n }\r\n // Also add extra check just in case the XHR or fetch objects where not decorated with the DisableProperty due to sealing or freezing\r\n if (!isDisabled && theUrl && isInternalApplicationInsightsEndpoint(theUrl)) {\r\n isDisabled = true;\r\n }\r\n if (isDisabled) {\r\n // Add the disabled url if not present\r\n if (!_disabledUrls[theUrl]) {\r\n _disabledUrls[theUrl] = 1;\r\n }\r\n }\r\n else {\r\n // Check to see if the url is listed as disabled\r\n if (_disabledUrls[theUrl]) {\r\n isDisabled = true;\r\n }\r\n }\r\n return isDisabled;\r\n }\r\n /// <summary>Verifies that particular instance of XMLHttpRequest needs to be monitored</summary>\r\n /// <param name=\"excludeAjaxDataValidation\">Optional parameter. True if ajaxData must be excluded from verification</param>\r\n /// <returns type=\"bool\">True if instance needs to be monitored, otherwise false</returns>\r\n function _isMonitoredXhrInstance(xhr, ajaxData, excludeAjaxDataValidation) {\r\n var ajaxValidation = true;\r\n var initialized = _xhrInitialized;\r\n if (!isNullOrUndefined(xhr)) {\r\n ajaxValidation = excludeAjaxDataValidation === true || !isNullOrUndefined(ajaxData);\r\n }\r\n // checking to see that all interested functions on xhr were instrumented\r\n return initialized\r\n // checking on ajaxData to see that it was not removed in user code\r\n && ajaxValidation;\r\n }\r\n function _getDistributedTraceCtx() {\r\n var distributedTraceCtx = null;\r\n if (_self[_DYN_CORE /* @min:%2ecore */] && _self[_DYN_CORE /* @min:%2ecore */].getTraceCtx) {\r\n distributedTraceCtx = _self[_DYN_CORE /* @min:%2ecore */].getTraceCtx(false);\r\n }\r\n // Fall back\r\n if (!distributedTraceCtx && _context && _context.telemetryTrace) {\r\n distributedTraceCtx = createDistributedTraceContextFromTrace(_context.telemetryTrace);\r\n }\r\n return distributedTraceCtx;\r\n }\r\n function _openHandler(xhr, method, url, async) {\r\n var _a;\r\n var distributedTraceCtx = _getDistributedTraceCtx();\r\n var traceID = (distributedTraceCtx && distributedTraceCtx[_DYN_GET_TRACE_ID /* @min:%2egetTraceId */]()) || generateW3CId();\r\n var spanID = generateW3CId().substr(0, 16);\r\n var xhrRequestData = xhr[AJAX_DATA_CONTAINER] = (xhr[AJAX_DATA_CONTAINER] || { xh: [], i: {} });\r\n var ajaxDataCntr = xhrRequestData.i = (xhrRequestData.i || {});\r\n var ajaxData = ajaxDataCntr[_ajaxDataId] = (ajaxDataCntr[_ajaxDataId] || new ajaxRecord(traceID, spanID, _self[strDiagLog](), (_a = _self.core) === null || _a === void 0 ? void 0 : _a.getTraceCtx()));\r\n ajaxData[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */] = distributedTraceCtx && distributedTraceCtx[_DYN_GET_TRACE_FLAGS /* @min:%2egetTraceFlags */]();\r\n ajaxData[_DYN_METHOD /* @min:%2emethod */] = method;\r\n ajaxData[_DYN_REQUEST_URL /* @min:%2erequestUrl */] = url;\r\n ajaxData.xhrMonitoringState[_DYN_OPEN_DONE /* @min:%2eopenDone */] = true;\r\n ajaxData[_DYN_REQUEST_HEADERS /* @min:%2erequestHeaders */] = {};\r\n ajaxData.async = async;\r\n ajaxData[_DYN_ERROR_STATUS_TEXT /* @min:%2eerrorStatusText */] = _enableAjaxErrorStatusText;\r\n return ajaxData;\r\n }\r\n function _attachToOnReadyStateChange(xhr, ajaxData) {\r\n ajaxData.xhrMonitoringState[_DYN_STATE_CHANGE_ATTACHE14 /* @min:%2estateChangeAttached */] = eventOn(xhr, \"readystatechange\", function () {\r\n try {\r\n if (xhr && xhr.readyState === 4 && _isMonitoredXhrInstance(xhr, ajaxData)) {\r\n _onAjaxComplete(xhr);\r\n }\r\n }\r\n catch (e) {\r\n var exceptionText = dumpObj(e);\r\n // ignore messages with c00c023f, as this a known IE9 XHR abort issue\r\n if (!exceptionText || _indexOf(exceptionText[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */](), \"c00c023f\") === -1) {\r\n _throwInternalCritical(_self, 16 /* _eInternalMessageId.FailedMonitorAjaxRSC */, ERROR_HEADER + \" 'readystatechange' event handler\" + ERROR_POSTFIX, {\r\n ajaxDiagnosticsMessage: _getFailedAjaxDiagnosticsMessage(xhr, _ajaxDataId),\r\n exception: exceptionText\r\n });\r\n }\r\n }\r\n }, _evtNamespace);\r\n }\r\n function _getResponseText(xhr) {\r\n try {\r\n var responseType = xhr.responseType;\r\n if (responseType === \"\" || responseType === \"text\") {\r\n // As per the specification responseText is only valid if the type is an empty string or \"text\"\r\n return xhr[_DYN_RESPONSE_TEXT /* @min:%2eresponseText */];\r\n }\r\n }\r\n catch (e) {\r\n // This shouldn't happen because of the above check -- but just in case, so just ignore\r\n }\r\n return null;\r\n }\r\n function _onAjaxComplete(xhr) {\r\n var ajaxData = _getAjaxData(xhr, _ajaxDataId);\r\n ajaxData[_DYN_RESPONSE_FINISHED_TI15 /* @min:%2eresponseFinishedTime */] = dateTimeUtilsNow();\r\n ajaxData[_DYN_STATUS /* @min:%2estatus */] = xhr[_DYN_STATUS /* @min:%2estatus */];\r\n function _reportXhrError(e, failedProps) {\r\n var errorProps = failedProps || {};\r\n errorProps[\"ajaxDiagnosticsMessage\"] = _getFailedAjaxDiagnosticsMessage(xhr, _ajaxDataId);\r\n if (e) {\r\n errorProps[\"exception\"] = dumpObj(e);\r\n }\r\n _throwInternalWarning(_self, 14 /* _eInternalMessageId.FailedMonitorAjaxDur */, FAILED_TO_CALCULATE_DURATION_ERROR + \"ajax call\" + ERROR_NOT_SENT, errorProps);\r\n }\r\n _findPerfResourceEntry(\"xmlhttprequest\", ajaxData, function () {\r\n try {\r\n var dependency = ajaxData[_DYN__CREATE_TRACK_ITEM /* @min:%2eCreateTrackItem */](\"Ajax\", _enableRequestHeaderTracking, function () {\r\n var ajaxResponse = {\r\n statusText: xhr[_DYN_STATUS_TEXT /* @min:%2estatusText */],\r\n headerMap: null,\r\n correlationContext: _getAjaxCorrelationContext(xhr),\r\n type: xhr.responseType,\r\n responseText: _getResponseText(xhr),\r\n response: xhr[_DYN_RESPONSE /* @min:%2eresponse */]\r\n };\r\n if (_enableResponseHeaderTracking) {\r\n var headers = xhr[_DYN_GET_ALL_RESPONSE_HEA16 /* @min:%2egetAllResponseHeaders */]();\r\n if (headers) {\r\n // xhr.getAllResponseHeaders() method returns all the response headers, separated by CRLF, as a string or null\r\n // the regex converts the header string into an array of individual headers\r\n var arr = strTrim(headers).split(/[\\r\\n]+/);\r\n var responseHeaderMap_2 = {};\r\n arrForEach(arr, function (line) {\r\n var parts = line.split(\": \");\r\n var header = parts.shift();\r\n var value = parts.join(\": \");\r\n if (_canIncludeHeaders(header)) {\r\n responseHeaderMap_2[header] = value;\r\n }\r\n });\r\n ajaxResponse[_DYN_HEADER_MAP /* @min:%2eheaderMap */] = responseHeaderMap_2;\r\n }\r\n }\r\n return ajaxResponse;\r\n });\r\n var properties = void 0;\r\n try {\r\n if (!!_addRequestContext) {\r\n properties = _addRequestContext({ status: xhr[_DYN_STATUS /* @min:%2estatus */], xhr: xhr });\r\n }\r\n }\r\n catch (e) {\r\n _throwInternalWarning(_self, 104 /* _eInternalMessageId.FailedAddingCustomDefinedRequestContext */, CUSTOM_REQUEST_CONTEXT_ERROR);\r\n }\r\n if (dependency) {\r\n if (properties !== undefined) {\r\n dependency[STR_PROPERTIES /* @min:%2eproperties */] = __assign(__assign({}, dependency.properties), properties);\r\n }\r\n var sysProperties = ajaxData[_DYN_GET_PART_APROPS /* @min:%2egetPartAProps */]();\r\n _reportDependencyInternal(_dependencyInitializers, _self[_DYN_CORE /* @min:%2ecore */], ajaxData, dependency, null, sysProperties);\r\n }\r\n else {\r\n _reportXhrError(null, {\r\n requestSentTime: ajaxData[_DYN_REQUEST_SENT_TIME /* @min:%2erequestSentTime */],\r\n responseFinishedTime: ajaxData[_DYN_RESPONSE_FINISHED_TI15 /* @min:%2eresponseFinishedTime */]\r\n });\r\n }\r\n }\r\n finally {\r\n // cleanup telemetry data\r\n try {\r\n var xhrRequestData = (xhr[AJAX_DATA_CONTAINER] || { i: {} });\r\n var ajaxDataCntr = (xhrRequestData.i || {});\r\n if (ajaxDataCntr[_ajaxDataId]) {\r\n ajaxDataCntr[_ajaxDataId] = null;\r\n }\r\n }\r\n catch (e) {\r\n // May throw in environments that prevent extension or freeze xhr\r\n }\r\n }\r\n }, function (e) {\r\n _reportXhrError(e, null);\r\n });\r\n }\r\n function _getAjaxCorrelationContext(xhr) {\r\n try {\r\n var responseHeadersString = xhr[_DYN_GET_ALL_RESPONSE_HEA16 /* @min:%2egetAllResponseHeaders */]();\r\n if (responseHeadersString !== null) {\r\n var index = _indexOf(responseHeadersString[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */](), RequestHeaders[8 /* eRequestHeaders.requestContextHeaderLowerCase */]);\r\n if (index !== -1) {\r\n var responseHeader = xhr.getResponseHeader(RequestHeaders[0 /* eRequestHeaders.requestContextHeader */]);\r\n return CorrelationIdHelper[_DYN_GET_CORRELATION_CONT17 /* @min:%2egetCorrelationContext */](responseHeader);\r\n }\r\n }\r\n }\r\n catch (e) {\r\n _throwInternalWarning(_self, 18 /* _eInternalMessageId.FailedMonitorAjaxGetCorrelationHeader */, CORRELATION_HEADER_ERROR, {\r\n ajaxDiagnosticsMessage: _getFailedAjaxDiagnosticsMessage(xhr, _ajaxDataId),\r\n exception: dumpObj(e)\r\n });\r\n }\r\n }\r\n function _createMarkId(type, ajaxData) {\r\n if (ajaxData[_DYN_REQUEST_URL /* @min:%2erequestUrl */] && _markPrefix && _enableAjaxPerfTracking) {\r\n var performance_1 = getPerformance();\r\n if (performance_1 && isFunction(performance_1.mark)) {\r\n _markCount++;\r\n var markId = _markPrefix + type + \"#\" + _markCount;\r\n performance_1.mark(markId);\r\n var entries = performance_1.getEntriesByName(markId);\r\n if (entries && entries[_DYN_LENGTH /* @min:%2elength */] === 1) {\r\n ajaxData[_DYN_PERF_MARK /* @min:%2eperfMark */] = entries[0];\r\n }\r\n }\r\n }\r\n }\r\n function _findPerfResourceEntry(initiatorType, ajaxData, trackCallback, reportError) {\r\n var perfMark = ajaxData[_DYN_PERF_MARK /* @min:%2eperfMark */];\r\n var performance = getPerformance();\r\n var maxAttempts = _config.maxAjaxPerfLookupAttempts;\r\n var retryDelay = _config[_DYN_AJAX_PERF_LOOKUP_DEL18 /* @min:%2eajaxPerfLookupDelay */];\r\n var requestUrl = ajaxData[_DYN_REQUEST_URL /* @min:%2erequestUrl */];\r\n var attempt = 0;\r\n (function locateResourceTiming() {\r\n try {\r\n if (performance && perfMark) {\r\n attempt++;\r\n var perfTiming = null;\r\n var entries = performance.getEntries();\r\n for (var lp = entries[_DYN_LENGTH /* @min:%2elength */] - 1; lp >= 0; lp--) {\r\n var entry = entries[lp];\r\n if (entry) {\r\n if (entry.entryType === \"resource\") {\r\n if (entry.initiatorType === initiatorType &&\r\n (_indexOf(entry[_DYN_NAME /* @min:%2ename */], requestUrl) !== -1 || _indexOf(requestUrl, entry[_DYN_NAME /* @min:%2ename */]) !== -1)) {\r\n perfTiming = entry;\r\n }\r\n }\r\n else if (entry.entryType === \"mark\" && entry[_DYN_NAME /* @min:%2ename */] === perfMark[_DYN_NAME /* @min:%2ename */]) {\r\n // We hit the start event\r\n ajaxData[_DYN_PERF_TIMING /* @min:%2eperfTiming */] = perfTiming;\r\n break;\r\n }\r\n if (entry[_DYN_START_TIME /* @min:%2estartTime */] < perfMark[_DYN_START_TIME /* @min:%2estartTime */] - 1000) {\r\n // Fallback to try and reduce the time spent looking for the perf entry\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n if (!perfMark || // - we don't have a perfMark or\r\n ajaxData[_DYN_PERF_TIMING /* @min:%2eperfTiming */] || // - we have not found the perf entry or\r\n attempt >= maxAttempts || // - we have tried too many attempts or\r\n ajaxData.async === false) { // - this is a sync request\r\n if (perfMark && isFunction(performance.clearMarks)) {\r\n // Remove the mark so we don't fill up the performance resources too much\r\n performance.clearMarks(perfMark[_DYN_NAME /* @min:%2ename */]);\r\n }\r\n ajaxData.perfAttempts = attempt;\r\n // just continue and report the track event\r\n trackCallback();\r\n }\r\n else {\r\n // We need to wait for the browser to populate the window.performance entry\r\n // This needs to be at least 1ms as waiting <= 1 (on firefox) is not enough time for fetch or xhr,\r\n // this is a scheduling issue for the browser implementation\r\n setTimeout(locateResourceTiming, retryDelay);\r\n }\r\n }\r\n catch (e) {\r\n reportError(e);\r\n }\r\n })();\r\n }\r\n function _createFetchRecord(input, init) {\r\n var _a;\r\n var distributedTraceCtx = _getDistributedTraceCtx();\r\n var traceID = (distributedTraceCtx && distributedTraceCtx[_DYN_GET_TRACE_ID /* @min:%2egetTraceId */]()) || generateW3CId();\r\n var spanID = generateW3CId().substr(0, 16);\r\n var ajaxData = new ajaxRecord(traceID, spanID, _self[strDiagLog](), (_a = _self.core) === null || _a === void 0 ? void 0 : _a.getTraceCtx());\r\n ajaxData[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */] = distributedTraceCtx && distributedTraceCtx[_DYN_GET_TRACE_FLAGS /* @min:%2egetTraceFlags */]();\r\n ajaxData[_DYN_REQUEST_SENT_TIME /* @min:%2erequestSentTime */] = dateTimeUtilsNow();\r\n ajaxData[_DYN_ERROR_STATUS_TEXT /* @min:%2eerrorStatusText */] = _enableAjaxErrorStatusText;\r\n if (input instanceof Request) {\r\n ajaxData[_DYN_REQUEST_URL /* @min:%2erequestUrl */] = input ? input.url : \"\";\r\n }\r\n else {\r\n ajaxData[_DYN_REQUEST_URL /* @min:%2erequestUrl */] = input;\r\n }\r\n var method = \"GET\";\r\n if (init && init[_DYN_METHOD /* @min:%2emethod */]) {\r\n method = init[_DYN_METHOD /* @min:%2emethod */];\r\n }\r\n else if (input && input instanceof Request) {\r\n method = input[_DYN_METHOD /* @min:%2emethod */];\r\n }\r\n ajaxData[_DYN_METHOD /* @min:%2emethod */] = method;\r\n var requestHeaders = {};\r\n if (_enableRequestHeaderTracking) {\r\n var headers = new Headers((init ? init[_DYN_HEADERS /* @min:%2eheaders */] : 0) || (input instanceof Request ? (input[_DYN_HEADERS /* @min:%2eheaders */] || {}) : {}));\r\n headers.forEach(function (value, key) {\r\n if (_canIncludeHeaders(key)) {\r\n requestHeaders[key] = value;\r\n }\r\n });\r\n }\r\n ajaxData[_DYN_REQUEST_HEADERS /* @min:%2erequestHeaders */] = requestHeaders;\r\n _createMarkId(STR_FETCH, ajaxData);\r\n return ajaxData;\r\n }\r\n function _getFailedFetchDiagnosticsMessage(input) {\r\n var result = \"\";\r\n try {\r\n if (!isNullOrUndefined(input)) {\r\n if (isString(input)) {\r\n result += \"(url: '\".concat(input, \"')\");\r\n }\r\n else {\r\n result += \"(url: '\".concat(input.url, \"')\");\r\n }\r\n }\r\n }\r\n catch (e) {\r\n _throwInternalCritical(_self, 15 /* _eInternalMessageId.FailedMonitorAjaxOpen */, \"Failed to grab failed fetch diagnostics message\", { exception: dumpObj(e) });\r\n }\r\n return result;\r\n }\r\n function _reportFetchMetrics(callDetails, status, input, response, ajaxData, getResponse, properties) {\r\n if (!ajaxData) {\r\n return;\r\n }\r\n function _reportFetchError(msgId, e, failedProps) {\r\n var errorProps = failedProps || {};\r\n errorProps[\"fetchDiagnosticsMessage\"] = _getFailedFetchDiagnosticsMessage(input);\r\n if (e) {\r\n errorProps[\"exception\"] = dumpObj(e);\r\n }\r\n _throwInternalWarning(_self, msgId, FAILED_TO_CALCULATE_DURATION_ERROR + \"fetch call\" + ERROR_NOT_SENT, errorProps);\r\n }\r\n ajaxData[_DYN_RESPONSE_FINISHED_TI15 /* @min:%2eresponseFinishedTime */] = dateTimeUtilsNow();\r\n ajaxData[_DYN_STATUS /* @min:%2estatus */] = status;\r\n _findPerfResourceEntry(STR_FETCH, ajaxData, function () {\r\n var dependency = ajaxData[_DYN__CREATE_TRACK_ITEM /* @min:%2eCreateTrackItem */](\"Fetch\", _enableRequestHeaderTracking, getResponse);\r\n var properties;\r\n try {\r\n if (!!_addRequestContext) {\r\n properties = _addRequestContext({ status: status, request: input, response: response });\r\n }\r\n }\r\n catch (e) {\r\n _throwInternalWarning(_self, 104 /* _eInternalMessageId.FailedAddingCustomDefinedRequestContext */, CUSTOM_REQUEST_CONTEXT_ERROR);\r\n }\r\n if (dependency) {\r\n if (properties !== undefined) {\r\n dependency[STR_PROPERTIES /* @min:%2eproperties */] = __assign(__assign({}, dependency.properties), properties);\r\n }\r\n var sysProperties = ajaxData[_DYN_GET_PART_APROPS /* @min:%2egetPartAProps */]();\r\n _reportDependencyInternal(_dependencyInitializers, _self[_DYN_CORE /* @min:%2ecore */], ajaxData, dependency, null, sysProperties);\r\n }\r\n else {\r\n _reportFetchError(14 /* _eInternalMessageId.FailedMonitorAjaxDur */, null, {\r\n requestSentTime: ajaxData[_DYN_REQUEST_SENT_TIME /* @min:%2erequestSentTime */],\r\n responseFinishedTime: ajaxData[_DYN_RESPONSE_FINISHED_TI15 /* @min:%2eresponseFinishedTime */]\r\n });\r\n }\r\n }, function (e) {\r\n _reportFetchError(18 /* _eInternalMessageId.FailedMonitorAjaxGetCorrelationHeader */, e, null);\r\n });\r\n }\r\n function _getFetchCorrelationContext(response) {\r\n if (response && response[_DYN_HEADERS /* @min:%2eheaders */]) {\r\n try {\r\n var responseHeader = response[_DYN_HEADERS /* @min:%2eheaders */].get(RequestHeaders[0 /* eRequestHeaders.requestContextHeader */]);\r\n return CorrelationIdHelper[_DYN_GET_CORRELATION_CONT17 /* @min:%2egetCorrelationContext */](responseHeader);\r\n }\r\n catch (e) {\r\n _throwInternalWarning(_self, 18 /* _eInternalMessageId.FailedMonitorAjaxGetCorrelationHeader */, CORRELATION_HEADER_ERROR, {\r\n fetchDiagnosticsMessage: _getFailedFetchDiagnosticsMessage(response),\r\n exception: dumpObj(e)\r\n });\r\n }\r\n }\r\n }\r\n function _reportDependencyInternal(initializers, core, ajaxData, dependency, properties, systemProperties) {\r\n var result = true;\r\n var initializersCount = initializers[_DYN_LENGTH /* @min:%2elength */];\r\n if (initializersCount > 0) {\r\n var details = {\r\n item: dependency,\r\n properties: properties,\r\n sysProperties: systemProperties,\r\n context: ajaxData ? ajaxData[_DYN_CONTEXT /* @min:%2econtext */] : null,\r\n aborted: ajaxData ? !!ajaxData[_DYN_ABORTED /* @min:%2eaborted */] : false\r\n };\r\n result = _processDependencyContainer(core, initializers, details, \"initializer\");\r\n }\r\n if (result) {\r\n _self[_DYN_TRACK_DEPENDENCY_DAT4 /* @min:%2etrackDependencyDataInternal */](dependency, properties, systemProperties);\r\n }\r\n }\r\n });\r\n return _this;\r\n }\r\n AjaxMonitor.prototype.initialize = function (config, core, extensions, pluginChain) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n AjaxMonitor.prototype.processTelemetry = function (item, itemCtx) {\r\n this.processNext(item, itemCtx);\r\n };\r\n /**\r\n * Logs dependency call\r\n * @param dependencyData - dependency data object\r\n */\r\n AjaxMonitor.prototype.trackDependencyData = function (dependency, properties) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n AjaxMonitor.prototype.includeCorrelationHeaders = function (ajaxData, input, init, xhr) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Add an ajax listener which is called just prior to the request being sent and before the correlation headers are added, to allow you\r\n * to access the headers and modify the values used to generate the distributed tracing correlation headers.\r\n * @param dependencyListener - The Telemetry Initializer function\r\n * @returns - A IDependencyListenerHandler to enable the initializer to be removed\r\n */\r\n AjaxMonitor.prototype.addDependencyListener = function (dependencyListener) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n return null;\r\n };\r\n /**\r\n * Add an dependency telemetry initializer callback function to allow populating additional properties or drop the request.\r\n * It is called after the dependency call has completed and any available performance details are available. A dependency\r\n * initializer is similar to the TelemetryInitializer function but it allows you to block the reporting of the dependency\r\n * request so that it doesn't count against the `maxAjaxCallsPerView`.\r\n * @param dependencyInitializer - The Dependency Telemetry Initializer function\r\n * @returns - A IDependencyInitializerHandler to enable the initializer to be removed\r\n */\r\n AjaxMonitor.prototype.addDependencyInitializer = function (dependencyInitializer) {\r\n return null;\r\n };\r\n /**\r\n * Protected function to allow sub classes the chance to add additional properties to the dependency event\r\n * before it's sent. This function calls track, so sub-classes must call this function after they have\r\n * populated their properties.\r\n * @param dependencyData - dependency data object\r\n */\r\n AjaxMonitor.prototype.trackDependencyDataInternal = function (dependency, properties, systemProperties) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n AjaxMonitor.identifier = \"AjaxDependencyPlugin\";\r\n AjaxMonitor.getDefaultConfig = _getDefaultConfig;\r\n AjaxMonitor.getEmptyConfig = _getEmptyConfig;\r\n return AjaxMonitor;\r\n}(BaseTelemetryPlugin));\r\nexport { AjaxMonitor };\r\n//# sourceMappingURL=ajax.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nvar Application = /** @class */ (function () {\r\n function Application() {\r\n }\r\n return Application;\r\n}());\r\nexport { Application };\r\n//# sourceMappingURL=Application.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nvar Device = /** @class */ (function () {\r\n /**\r\n * Constructs a new instance of the Device class\r\n */\r\n function Device() {\r\n // don't attempt to fingerprint browsers\r\n this.id = \"browser\";\r\n // Device type is a dimension in our data platform\r\n // Setting it to 'Browser' allows to separate client and server dependencies/exceptions\r\n this.deviceClass = \"Browser\";\r\n }\r\n return Device;\r\n}());\r\nexport { Device };\r\n//# sourceMappingURL=Device.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { _DYN_SDK_EXTENSION } from \"../__DynamicConstants\";\r\nvar Version = '2.8.18';\r\nvar Internal = /** @class */ (function () {\r\n /**\r\n * Constructs a new instance of the internal telemetry data class.\r\n */\r\n function Internal(config) {\r\n this.sdkVersion = (config[_DYN_SDK_EXTENSION /* @min:%2esdkExtension */] && config[_DYN_SDK_EXTENSION /* @min:%2esdkExtension */]() ? config[_DYN_SDK_EXTENSION /* @min:%2esdkExtension */]() + \"_\" : \"\") + \"javascript:\" + Version;\r\n }\r\n return Internal;\r\n}());\r\nexport { Internal };\r\n//# sourceMappingURL=Internal.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nvar Location = /** @class */ (function () {\r\n function Location() {\r\n }\r\n return Location;\r\n}());\r\nexport { Location };\r\n//# sourceMappingURL=Location.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { utlCanUseLocalStorage, utlGetLocalStorage, utlSetLocalStorage } from \"@microsoft/applicationinsights-common\";\r\nimport { _throwInternal, dateNow, dumpObj, getExceptionName, isFunction, newId, safeGetCookieMgr, safeGetLogger } from \"@microsoft/applicationinsights-core-js\";\r\nimport { _DYN_ACQUISITION_DATE, _DYN_AUTOMATIC_SESSION, _DYN_CONFIG, _DYN_COOKIE_DOMAIN, _DYN_GET_NEW_ID, _DYN_ID_LENGTH, _DYN_JOIN, _DYN_LENGTH, _DYN_NAME_PREFIX, _DYN_RENEWAL_DATE, _DYN_SESSION_COOKIE_POSTF6, _DYN_SESSION_EXPIRATION_M7, _DYN_SESSION_RENEWAL_MS, _DYN_UPDATE } from \"../__DynamicConstants\";\r\nvar cookieNameConst = \"ai_session\";\r\nvar Session = /** @class */ (function () {\r\n function Session() {\r\n }\r\n return Session;\r\n}());\r\nexport { Session };\r\nvar _SessionManager = /** @class */ (function () {\r\n function _SessionManager(config, core) {\r\n var self = this;\r\n var _storageNamePrefix;\r\n var _cookieUpdatedTimestamp;\r\n var _logger = safeGetLogger(core);\r\n var _cookieManager = safeGetCookieMgr(core);\r\n dynamicProto(_SessionManager, self, function (_self) {\r\n if (!config) {\r\n config = {};\r\n }\r\n if (!isFunction(config[_DYN_SESSION_EXPIRATION_M7 /* @min:%2esessionExpirationMs */])) {\r\n config[_DYN_SESSION_EXPIRATION_M7 /* @min:%2esessionExpirationMs */] = function () { return _SessionManager.acquisitionSpan; };\r\n }\r\n if (!isFunction(config[_DYN_SESSION_RENEWAL_MS /* @min:%2esessionRenewalMs */])) {\r\n config[_DYN_SESSION_RENEWAL_MS /* @min:%2esessionRenewalMs */] = function () { return _SessionManager.renewalSpan; };\r\n }\r\n _self[_DYN_CONFIG /* @min:%2econfig */] = config;\r\n // sessionCookiePostfix takes the preference if it is configured, otherwise takes namePrefix if configured.\r\n var sessionCookiePostfix = (_self.config[_DYN_SESSION_COOKIE_POSTF6 /* @min:%2esessionCookiePostfix */] && _self[_DYN_CONFIG /* @min:%2econfig */][_DYN_SESSION_COOKIE_POSTF6 /* @min:%2esessionCookiePostfix */]()) ?\r\n _self.config[_DYN_SESSION_COOKIE_POSTF6 /* @min:%2esessionCookiePostfix */]() :\r\n ((_self.config[_DYN_NAME_PREFIX /* @min:%2enamePrefix */] && _self[_DYN_CONFIG /* @min:%2econfig */][_DYN_NAME_PREFIX /* @min:%2enamePrefix */]()) ? _self[_DYN_CONFIG /* @min:%2econfig */][_DYN_NAME_PREFIX /* @min:%2enamePrefix */]() : \"\");\r\n _storageNamePrefix = function () { return cookieNameConst + sessionCookiePostfix; };\r\n _self[_DYN_AUTOMATIC_SESSION /* @min:%2eautomaticSession */] = new Session();\r\n _self[_DYN_UPDATE /* @min:%2eupdate */] = function () {\r\n // Always using Date getTime() as there is a bug in older IE instances that causes the performance timings to have the hi-bit set eg 0x800000000 causing\r\n // the number to be incorrect.\r\n var nowMs = dateNow();\r\n var isExpired = false;\r\n var session = _self[_DYN_AUTOMATIC_SESSION /* @min:%2eautomaticSession */];\r\n if (!session.id) {\r\n isExpired = !_initializeAutomaticSession(session, nowMs);\r\n }\r\n var sessionExpirationMs = _self.config[_DYN_SESSION_EXPIRATION_M7 /* @min:%2esessionExpirationMs */]();\r\n if (!isExpired && sessionExpirationMs > 0) {\r\n var sessionRenewalMs = _self.config[_DYN_SESSION_RENEWAL_MS /* @min:%2esessionRenewalMs */]();\r\n var timeSinceAcqMs = nowMs - session[_DYN_ACQUISITION_DATE /* @min:%2eacquisitionDate */];\r\n var timeSinceRenewalMs = nowMs - session[_DYN_RENEWAL_DATE /* @min:%2erenewalDate */];\r\n isExpired = timeSinceAcqMs < 0 || timeSinceRenewalMs < 0; // expired if the acquisition or last renewal are in the future\r\n isExpired = isExpired || timeSinceAcqMs > sessionExpirationMs; // expired if the time since acquisition is more than session Expiration\r\n isExpired = isExpired || timeSinceRenewalMs > sessionRenewalMs; // expired if the time since last renewal is more than renewal period\r\n }\r\n // renew if acquisitionSpan or renewalSpan has elapsed\r\n if (isExpired) {\r\n // update automaticSession so session state has correct id\r\n _renew(nowMs);\r\n }\r\n else {\r\n // do not update the cookie more often than cookieUpdateInterval\r\n if (!_cookieUpdatedTimestamp || nowMs - _cookieUpdatedTimestamp > _SessionManager.cookieUpdateInterval) {\r\n _setCookie(session, nowMs);\r\n }\r\n }\r\n };\r\n /**\r\n * Record the current state of the automatic session and store it in our cookie string format\r\n * into the browser's local storage. This is used to restore the session data when the cookie\r\n * expires.\r\n */\r\n _self.backup = function () {\r\n var session = _self[_DYN_AUTOMATIC_SESSION /* @min:%2eautomaticSession */];\r\n _setStorage(session.id, session[_DYN_ACQUISITION_DATE /* @min:%2eacquisitionDate */], session[_DYN_RENEWAL_DATE /* @min:%2erenewalDate */]);\r\n };\r\n /**\r\n * Use config.namePrefix + ai_session cookie data or local storage data (when the cookie is unavailable) to\r\n * initialize the automatic session.\r\n * @returns true if values set otherwise false\r\n */\r\n function _initializeAutomaticSession(session, now) {\r\n var isValid = false;\r\n var cookieValue = _cookieManager.get(_storageNamePrefix());\r\n if (cookieValue && isFunction(cookieValue.split)) {\r\n isValid = _initializeAutomaticSessionWithData(session, cookieValue);\r\n }\r\n else {\r\n // There's no cookie, but we might have session data in local storage\r\n // This can happen if the session expired or the user actively deleted the cookie\r\n // We only want to recover data if the cookie is missing from expiry. We should respect the user's wishes if the cookie was deleted actively.\r\n // The User class handles this for us and deletes our local storage object if the persistent user cookie was removed.\r\n var storageValue = utlGetLocalStorage(_logger, _storageNamePrefix());\r\n if (storageValue) {\r\n isValid = _initializeAutomaticSessionWithData(session, storageValue);\r\n }\r\n }\r\n return isValid || !!session.id;\r\n }\r\n /**\r\n * Extract id, acquisitionDate, and renewalDate from an ai_session payload string and\r\n * use this data to initialize automaticSession.\r\n *\r\n * @param {string} sessionData - The string stored in an ai_session cookie or local storage backup\r\n * @returns true if values set otherwise false\r\n */\r\n function _initializeAutomaticSessionWithData(session, sessionData) {\r\n var isValid = false;\r\n var sessionReset = \", session will be reset\";\r\n var tokens = sessionData.split(\"|\");\r\n if (tokens[_DYN_LENGTH /* @min:%2elength */] >= 2) {\r\n try {\r\n var acqMs = +tokens[1] || 0;\r\n var renewalMs = +tokens[2] || 0;\r\n if (isNaN(acqMs) || acqMs <= 0) {\r\n _throwInternal(_logger, 2 /* eLoggingSeverity.WARNING */, 27 /* _eInternalMessageId.SessionRenewalDateIsZero */, \"AI session acquisition date is 0\" + sessionReset);\r\n }\r\n else if (isNaN(renewalMs) || renewalMs <= 0) {\r\n _throwInternal(_logger, 2 /* eLoggingSeverity.WARNING */, 27 /* _eInternalMessageId.SessionRenewalDateIsZero */, \"AI session renewal date is 0\" + sessionReset);\r\n }\r\n else if (tokens[0]) {\r\n // Everything looks valid so set the values\r\n session.id = tokens[0];\r\n session[_DYN_ACQUISITION_DATE /* @min:%2eacquisitionDate */] = acqMs;\r\n session[_DYN_RENEWAL_DATE /* @min:%2erenewalDate */] = renewalMs;\r\n isValid = true;\r\n }\r\n }\r\n catch (e) {\r\n _throwInternal(_logger, 1 /* eLoggingSeverity.CRITICAL */, 9 /* _eInternalMessageId.ErrorParsingAISessionCookie */, \"Error parsing ai_session value [\" + (sessionData || \"\") + \"]\" + sessionReset + \" - \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n }\r\n return isValid;\r\n }\r\n function _renew(nowMs) {\r\n var theConfig = (_self[_DYN_CONFIG /* @min:%2econfig */] || {});\r\n var getNewId = (theConfig[_DYN_GET_NEW_ID /* @min:%2egetNewId */] ? theConfig[_DYN_GET_NEW_ID /* @min:%2egetNewId */]() : null) || newId;\r\n _self.automaticSession.id = getNewId(theConfig[_DYN_ID_LENGTH /* @min:%2eidLength */] ? theConfig[_DYN_ID_LENGTH /* @min:%2eidLength */]() : 22);\r\n _self[_DYN_AUTOMATIC_SESSION /* @min:%2eautomaticSession */][_DYN_ACQUISITION_DATE /* @min:%2eacquisitionDate */] = nowMs;\r\n _setCookie(_self[_DYN_AUTOMATIC_SESSION /* @min:%2eautomaticSession */], nowMs);\r\n // If this browser does not support local storage, fire an internal log to keep track of it at this point\r\n if (!utlCanUseLocalStorage()) {\r\n _throwInternal(_logger, 2 /* eLoggingSeverity.WARNING */, 0 /* _eInternalMessageId.BrowserDoesNotSupportLocalStorage */, \"Browser does not support local storage. Session durations will be inaccurate.\");\r\n }\r\n }\r\n function _setCookie(session, nowMs) {\r\n var acq = session[_DYN_ACQUISITION_DATE /* @min:%2eacquisitionDate */];\r\n session[_DYN_RENEWAL_DATE /* @min:%2erenewalDate */] = nowMs;\r\n var config = _self[_DYN_CONFIG /* @min:%2econfig */];\r\n var renewalPeriodMs = config[_DYN_SESSION_RENEWAL_MS /* @min:%2esessionRenewalMs */]();\r\n // Set cookie to expire after the session expiry time passes or the session renewal deadline, whichever is sooner\r\n // Expiring the cookie will cause the session to expire even if the user isn't on the page\r\n var acqTimeLeftMs = (acq + config[_DYN_SESSION_EXPIRATION_M7 /* @min:%2esessionExpirationMs */]()) - nowMs;\r\n var cookie = [session.id, acq, nowMs];\r\n var maxAgeSec = 0;\r\n if (acqTimeLeftMs < renewalPeriodMs) {\r\n maxAgeSec = acqTimeLeftMs / 1000;\r\n }\r\n else {\r\n maxAgeSec = renewalPeriodMs / 1000;\r\n }\r\n var cookieDomain = config[_DYN_COOKIE_DOMAIN /* @min:%2ecookieDomain */] ? config[_DYN_COOKIE_DOMAIN /* @min:%2ecookieDomain */]() : null;\r\n // if sessionExpirationMs is set to 0, it means the expiry is set to 0 for this session cookie\r\n // A cookie with 0 expiry in the session cookie will never expire for that browser session. If the browser is closed the cookie expires.\r\n // Depending on the browser, another instance does not inherit this cookie, however, another tab will\r\n _cookieManager.set(_storageNamePrefix(), cookie.join(\"|\"), config[_DYN_SESSION_EXPIRATION_M7 /* @min:%2esessionExpirationMs */]() > 0 ? maxAgeSec : null, cookieDomain);\r\n _cookieUpdatedTimestamp = nowMs;\r\n }\r\n function _setStorage(guid, acq, renewal) {\r\n // Keep data in local storage to retain the last session id, allowing us to cleanly end the session when it expires\r\n // Browsers that don't support local storage won't be able to end sessions cleanly from the client\r\n // The server will notice this and end the sessions itself, with loss of accurate session duration\r\n utlSetLocalStorage(_logger, _storageNamePrefix(), [guid, acq, renewal][_DYN_JOIN /* @min:%2ejoin */](\"|\"));\r\n }\r\n });\r\n }\r\n _SessionManager.prototype.update = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Record the current state of the automatic session and store it in our cookie string format\r\n * into the browser's local storage. This is used to restore the session data when the cookie\r\n * expires.\r\n */\r\n _SessionManager.prototype.backup = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n _SessionManager.acquisitionSpan = 86400000; // 24 hours in ms\r\n _SessionManager.renewalSpan = 1800000; // 30 minutes in ms\r\n _SessionManager.cookieUpdateInterval = 60000; // 1 minute in ms\r\n return _SessionManager;\r\n}());\r\nexport { _SessionManager };\r\n//# sourceMappingURL=Session.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { dataSanitizeString } from \"@microsoft/applicationinsights-common\";\r\nimport { generateW3CId, getLocation } from \"@microsoft/applicationinsights-core-js\";\r\nvar TelemetryTrace = /** @class */ (function () {\r\n function TelemetryTrace(id, parentId, name, logger) {\r\n var _self = this;\r\n _self.traceID = id || generateW3CId();\r\n _self.parentID = parentId;\r\n var location = getLocation();\r\n if (!name && location && location.pathname) {\r\n name = location.pathname;\r\n }\r\n _self.name = dataSanitizeString(logger, name);\r\n }\r\n return TelemetryTrace;\r\n}());\r\nexport { TelemetryTrace };\r\n//# sourceMappingURL=TelemetryTrace.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { utlRemoveStorage } from \"@microsoft/applicationinsights-common\";\r\nimport { _throwInternal, newId, safeGetCookieMgr, safeGetLogger, toISOString } from \"@microsoft/applicationinsights-core-js\";\r\nimport { _DYN_ACCOUNT_ID, _DYN_AUTHENTICATED_ID, _DYN_AUTH_USER_COOKIE_NAM8, _DYN_CONFIG, _DYN_COOKIE_SEPARATOR, _DYN_GET_NEW_ID, _DYN_ID_LENGTH, _DYN_IS_NEW_USER, _DYN_IS_USER_COOKIE_SET, _DYN_JOIN, _DYN_LENGTH, _DYN_NAME_PREFIX, _DYN_UPDATE, _DYN_USER_COOKIE_POSTFIX } from \"../__DynamicConstants\";\r\nfunction _validateUserInput(id) {\r\n // Validate:\r\n // 1. Id is a non-empty string.\r\n // 2. It does not contain special characters for cookies.\r\n if (typeof id !== \"string\" ||\r\n !id ||\r\n id.match(/,|;|=| |\\|/)) {\r\n return false;\r\n }\r\n return true;\r\n}\r\nvar User = /** @class */ (function () {\r\n function User(config, core) {\r\n /**\r\n * A flag indicating whether this represents a new user\r\n */\r\n this.isNewUser = false;\r\n /**\r\n * A flag indicating whether the user cookie has been set\r\n */\r\n this.isUserCookieSet = false;\r\n var _logger = safeGetLogger(core);\r\n var _cookieManager = safeGetCookieMgr(core);\r\n var _storageNamePrefix;\r\n dynamicProto(User, this, function (_self) {\r\n _self[_DYN_CONFIG /* @min:%2econfig */] = config;\r\n var userCookiePostfix = (_self.config[_DYN_USER_COOKIE_POSTFIX /* @min:%2euserCookiePostfix */] && _self[_DYN_CONFIG /* @min:%2econfig */][_DYN_USER_COOKIE_POSTFIX /* @min:%2euserCookiePostfix */]()) ? _self[_DYN_CONFIG /* @min:%2econfig */][_DYN_USER_COOKIE_POSTFIX /* @min:%2euserCookiePostfix */]() : \"\";\r\n _storageNamePrefix = function () { return User.userCookieName + userCookiePostfix; };\r\n // get userId or create new one if none exists\r\n var cookie = _cookieManager.get(_storageNamePrefix());\r\n if (cookie) {\r\n _self[_DYN_IS_NEW_USER /* @min:%2eisNewUser */] = false;\r\n var params = cookie.split(User[_DYN_COOKIE_SEPARATOR /* @min:%2ecookieSeparator */]);\r\n if (params[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n _self.id = params[0];\r\n // we already have a cookie\r\n _self[_DYN_IS_USER_COOKIE_SET /* @min:%2eisUserCookieSet */] = !!_self.id;\r\n }\r\n }\r\n function _generateNewId() {\r\n var theConfig = (config || {});\r\n var getNewId = (theConfig[_DYN_GET_NEW_ID /* @min:%2egetNewId */] ? theConfig[_DYN_GET_NEW_ID /* @min:%2egetNewId */]() : null) || newId;\r\n var id = getNewId(theConfig[_DYN_ID_LENGTH /* @min:%2eidLength */] ? config[_DYN_ID_LENGTH /* @min:%2eidLength */]() : 22);\r\n return id;\r\n }\r\n function _generateNewCookie(userId) {\r\n var acqStr = toISOString(new Date());\r\n _self.accountAcquisitionDate = acqStr;\r\n _self[_DYN_IS_NEW_USER /* @min:%2eisNewUser */] = true;\r\n var newCookie = [userId, acqStr];\r\n return newCookie;\r\n }\r\n function _setUserCookie(cookie) {\r\n // without expiration, cookies expire at the end of the session\r\n // set it to 365 days from now\r\n // 365 * 24 * 60 * 60 = 31536000\r\n var oneYear = 31536000;\r\n _self[_DYN_IS_USER_COOKIE_SET /* @min:%2eisUserCookieSet */] = _cookieManager.set(_storageNamePrefix(), cookie, oneYear);\r\n }\r\n if (!_self.id) {\r\n _self.id = _generateNewId();\r\n var newCookie = _generateNewCookie(_self.id);\r\n _setUserCookie(newCookie[_DYN_JOIN /* @min:%2ejoin */](User[_DYN_COOKIE_SEPARATOR /* @min:%2ecookieSeparator */]));\r\n // If we have an config.namePrefix() + ai_session in local storage this means the user actively removed our cookies.\r\n // We should respect their wishes and clear ourselves from local storage\r\n var name_1 = config[_DYN_NAME_PREFIX /* @min:%2enamePrefix */] && config[_DYN_NAME_PREFIX /* @min:%2enamePrefix */]() ? config[_DYN_NAME_PREFIX /* @min:%2enamePrefix */]() + \"ai_session\" : \"ai_session\";\r\n utlRemoveStorage(_logger, name_1);\r\n }\r\n // We still take the account id from the ctor param for backward compatibility.\r\n // But if the the customer set the accountId through the newer setAuthenticatedUserContext API, we will override it.\r\n _self[_DYN_ACCOUNT_ID /* @min:%2eaccountId */] = config[_DYN_ACCOUNT_ID /* @min:%2eaccountId */] ? config[_DYN_ACCOUNT_ID /* @min:%2eaccountId */]() : undefined;\r\n // Get the auth user id and account id from the cookie if exists\r\n // Cookie is in the pattern: <authenticatedId>|<accountId>\r\n var authCookie = _cookieManager.get(User[_DYN_AUTH_USER_COOKIE_NAM8 /* @min:%2eauthUserCookieName */]);\r\n if (authCookie) {\r\n authCookie = decodeURI(authCookie);\r\n var authCookieString = authCookie.split(User[_DYN_COOKIE_SEPARATOR /* @min:%2ecookieSeparator */]);\r\n if (authCookieString[0]) {\r\n _self[_DYN_AUTHENTICATED_ID /* @min:%2eauthenticatedId */] = authCookieString[0];\r\n }\r\n if (authCookieString[_DYN_LENGTH /* @min:%2elength */] > 1 && authCookieString[1]) {\r\n _self[_DYN_ACCOUNT_ID /* @min:%2eaccountId */] = authCookieString[1];\r\n }\r\n }\r\n _self.setAuthenticatedUserContext = function (authenticatedUserId, accountId, storeInCookie) {\r\n if (storeInCookie === void 0) { storeInCookie = false; }\r\n // Validate inputs to ensure no cookie control characters.\r\n var isInvalidInput = !_validateUserInput(authenticatedUserId) || (accountId && !_validateUserInput(accountId));\r\n if (isInvalidInput) {\r\n _throwInternal(_logger, 2 /* eLoggingSeverity.WARNING */, 60 /* _eInternalMessageId.SetAuthContextFailedAccountName */, \"Setting auth user context failed. \" +\r\n \"User auth/account id should be of type string, and not contain commas, semi-colons, equal signs, spaces, or vertical-bars.\", true);\r\n return;\r\n }\r\n // Create cookie string.\r\n _self[_DYN_AUTHENTICATED_ID /* @min:%2eauthenticatedId */] = authenticatedUserId;\r\n var authCookie = _self[_DYN_AUTHENTICATED_ID /* @min:%2eauthenticatedId */];\r\n if (accountId) {\r\n _self[_DYN_ACCOUNT_ID /* @min:%2eaccountId */] = accountId;\r\n authCookie = [_self[_DYN_AUTHENTICATED_ID /* @min:%2eauthenticatedId */], _self.accountId][_DYN_JOIN /* @min:%2ejoin */](User[_DYN_COOKIE_SEPARATOR /* @min:%2ecookieSeparator */]);\r\n }\r\n if (storeInCookie) {\r\n // Set the cookie. No expiration date because this is a session cookie (expires when browser closed).\r\n // Encoding the cookie to handle unexpected unicode characters.\r\n _cookieManager.set(User[_DYN_AUTH_USER_COOKIE_NAM8 /* @min:%2eauthUserCookieName */], encodeURI(authCookie));\r\n }\r\n };\r\n /**\r\n * Clears the authenticated user id and the account id from the user context.\r\n * @returns {}\r\n */\r\n _self.clearAuthenticatedUserContext = function () {\r\n _self[_DYN_AUTHENTICATED_ID /* @min:%2eauthenticatedId */] = null;\r\n _self[_DYN_ACCOUNT_ID /* @min:%2eaccountId */] = null;\r\n _cookieManager.del(User[_DYN_AUTH_USER_COOKIE_NAM8 /* @min:%2eauthUserCookieName */]);\r\n };\r\n _self[_DYN_UPDATE /* @min:%2eupdate */] = function (userId) {\r\n // Optimizations to avoid setting and processing the cookie when not needed\r\n if (_self.id !== userId || !_self[_DYN_IS_USER_COOKIE_SET /* @min:%2eisUserCookieSet */]) {\r\n var user_id = userId ? userId : _generateNewId();\r\n var user_cookie = _generateNewCookie(user_id);\r\n _setUserCookie(user_cookie[_DYN_JOIN /* @min:%2ejoin */](User[_DYN_COOKIE_SEPARATOR /* @min:%2ecookieSeparator */]));\r\n }\r\n };\r\n });\r\n }\r\n /**\r\n * Sets the authenticated user id and the account id in this session.\r\n *\r\n * @param authenticatedUserId {string} - The authenticated user id. A unique and persistent string that represents each authenticated user in the service.\r\n * @param accountId {string} - An optional string to represent the account associated with the authenticated user.\r\n */\r\n User.prototype.setAuthenticatedUserContext = function (authenticatedUserId, accountId, storeInCookie) {\r\n if (storeInCookie === void 0) { storeInCookie = false; }\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Clears the authenticated user id and the account id from the user context.\r\n * @returns {}\r\n */\r\n User.prototype.clearAuthenticatedUserContext = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Update or create the user cookie if cookies where previously disabled or the new userId does not match the existing value.\r\n * If you pass nothing a new random user id will be created.\r\n * @param userId - Specific either the current (via appInsights.context.user.id) or new id that you want to set\r\n */\r\n User.prototype.update = function (userId) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n User.cookieSeparator = \"|\";\r\n User.userCookieName = \"ai_user\";\r\n User.authUserCookieName = \"ai_authUser\";\r\n return User;\r\n}());\r\nexport { User };\r\n//# sourceMappingURL=User.js.map","/**\r\n* TelemetryContext.ts\r\n* @copyright Microsoft 2018\r\n*/\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { CtxTagKeys, Extensions, PageView, dataSanitizeString } from \"@microsoft/applicationinsights-common\";\r\nimport { _InternalLogMessage, getSetValue, hasWindow, isNullOrUndefined, isString, objKeys, setValue } from \"@microsoft/applicationinsights-core-js\";\r\nimport { Application } from \"./Context/Application\";\r\nimport { Device } from \"./Context/Device\";\r\nimport { Internal } from \"./Context/Internal\";\r\nimport { Location } from \"./Context/Location\";\r\nimport { Session, _SessionManager } from \"./Context/Session\";\r\nimport { TelemetryTrace } from \"./Context/TelemetryTrace\";\r\nimport { User } from \"./Context/User\";\r\nimport { _DYN_ACCOUNT_ID, _DYN_APPLY_APPLICATION_CO1, _DYN_APPLY_DEVICE_CONTEXT, _DYN_APPLY_INTERNAL_CONTE5, _DYN_APPLY_LOCATION_CONTE4, _DYN_APPLY_OPERATING_SYST3, _DYN_APPLY_OPERATION_CONT2, _DYN_APPLY_SESSION_CONTEX0, _DYN_APPLY_USER_CONTEXT, _DYN_AUTHENTICATED_ID, _DYN_AUTOMATIC_SESSION, _DYN_GET_SESSION_ID, _DYN_LENGTH, _DYN_SESSION_MANAGER, _DYN_TELEMETRY_TRACE } from \"./__DynamicConstants\";\r\nvar strExt = \"ext\";\r\nvar strTags = \"tags\";\r\nfunction _removeEmpty(target, name) {\r\n if (target && target[name] && objKeys(target[name])[_DYN_LENGTH /* @min:%2elength */] === 0) {\r\n delete target[name];\r\n }\r\n}\r\nvar TelemetryContext = /** @class */ (function () {\r\n function TelemetryContext(core, defaultConfig, previousTraceCtx) {\r\n var _this = this;\r\n var logger = core.logger;\r\n this.appId = function () { return null; };\r\n this[_DYN_GET_SESSION_ID /* @min:%2egetSessionId */] = function () { return null; };\r\n dynamicProto(TelemetryContext, this, function (_self) {\r\n _self.application = new Application();\r\n _self.internal = new Internal(defaultConfig);\r\n if (hasWindow()) {\r\n _self[_DYN_SESSION_MANAGER /* @min:%2esessionManager */] = new _SessionManager(defaultConfig, core);\r\n _self.device = new Device();\r\n _self.location = new Location();\r\n _self.user = new User(defaultConfig, core);\r\n var traceId = void 0;\r\n var parentId = void 0;\r\n var name_1;\r\n if (previousTraceCtx) {\r\n traceId = previousTraceCtx.getTraceId();\r\n parentId = previousTraceCtx.getSpanId();\r\n name_1 = previousTraceCtx.getName();\r\n }\r\n _self[_DYN_TELEMETRY_TRACE /* @min:%2etelemetryTrace */] = new TelemetryTrace(traceId, parentId, name_1, logger);\r\n _self.session = new Session();\r\n }\r\n _self[_DYN_GET_SESSION_ID /* @min:%2egetSessionId */] = function () {\r\n var session = _self.session;\r\n var sesId = null;\r\n // If customer set session info, apply their context; otherwise apply context automatically generated\r\n if (session && isString(session.id)) {\r\n sesId = session.id;\r\n }\r\n else {\r\n // Gets the automatic session if it exists or an empty object\r\n var autoSession = (_self[_DYN_SESSION_MANAGER /* @min:%2esessionManager */] || {})[_DYN_AUTOMATIC_SESSION /* @min:%2eautomaticSession */];\r\n sesId = autoSession && isString(autoSession.id) ? autoSession.id : null;\r\n }\r\n return sesId;\r\n };\r\n _self[_DYN_APPLY_SESSION_CONTEX0 /* @min:%2eapplySessionContext */] = function (evt, itemCtx) {\r\n setValue(getSetValue(evt.ext, Extensions.AppExt), \"sesId\", _self[_DYN_GET_SESSION_ID /* @min:%2egetSessionId */](), isString);\r\n };\r\n _self[_DYN_APPLY_OPERATING_SYST3 /* @min:%2eapplyOperatingSystemContxt */] = function (evt, itemCtx) {\r\n setValue(evt.ext, Extensions.OSExt, _self.os);\r\n };\r\n _self[_DYN_APPLY_APPLICATION_CO1 /* @min:%2eapplyApplicationContext */] = function (evt, itemCtx) {\r\n var application = _self.application;\r\n if (application) {\r\n // evt.ext.app\r\n var tags = getSetValue(evt, strTags);\r\n setValue(tags, CtxTagKeys.applicationVersion, application.ver, isString);\r\n setValue(tags, CtxTagKeys.applicationBuild, application.build, isString);\r\n }\r\n };\r\n _self[_DYN_APPLY_DEVICE_CONTEXT /* @min:%2eapplyDeviceContext */] = function (evt, itemCtx) {\r\n var device = _self.device;\r\n if (device) {\r\n // evt.ext.device\r\n var extDevice = getSetValue(getSetValue(evt, strExt), Extensions.DeviceExt);\r\n setValue(extDevice, \"localId\", device.id, isString);\r\n setValue(extDevice, \"ip\", device.ip, isString);\r\n setValue(extDevice, \"model\", device.model, isString);\r\n setValue(extDevice, \"deviceClass\", device.deviceClass, isString);\r\n }\r\n };\r\n _self[_DYN_APPLY_INTERNAL_CONTE5 /* @min:%2eapplyInternalContext */] = function (evt, itemCtx) {\r\n var internal = _self.internal;\r\n if (internal) {\r\n var tags = getSetValue(evt, strTags);\r\n setValue(tags, CtxTagKeys.internalAgentVersion, internal.agentVersion, isString); // not mapped in CS 4.0\r\n setValue(tags, CtxTagKeys.internalSdkVersion, dataSanitizeString(logger, internal.sdkVersion, 64), isString);\r\n if (evt.baseType === _InternalLogMessage.dataType || evt.baseType === PageView.dataType) {\r\n setValue(tags, CtxTagKeys.internalSnippet, internal.snippetVer, isString);\r\n setValue(tags, CtxTagKeys.internalSdkSrc, internal.sdkSrc, isString);\r\n }\r\n }\r\n };\r\n _self[_DYN_APPLY_LOCATION_CONTE4 /* @min:%2eapplyLocationContext */] = function (evt, itemCtx) {\r\n var location = _this.location;\r\n if (location) {\r\n setValue(getSetValue(evt, strTags, []), CtxTagKeys.locationIp, location.ip, isString);\r\n }\r\n };\r\n _self[_DYN_APPLY_OPERATION_CONT2 /* @min:%2eapplyOperationContext */] = function (evt, itemCtx) {\r\n var telemetryTrace = _self[_DYN_TELEMETRY_TRACE /* @min:%2etelemetryTrace */];\r\n if (telemetryTrace) {\r\n var extTrace = getSetValue(getSetValue(evt, strExt), Extensions.TraceExt, { traceID: undefined, parentID: undefined });\r\n setValue(extTrace, \"traceID\", telemetryTrace.traceID, isString, isNullOrUndefined);\r\n setValue(extTrace, \"name\", telemetryTrace.name, isString, isNullOrUndefined);\r\n setValue(extTrace, \"parentID\", telemetryTrace.parentID, isString, isNullOrUndefined);\r\n }\r\n };\r\n _self.applyWebContext = function (evt, itemCtx) {\r\n var web = _this.web;\r\n if (web) {\r\n setValue(getSetValue(evt, strExt), Extensions.WebExt, web);\r\n }\r\n };\r\n _self[_DYN_APPLY_USER_CONTEXT /* @min:%2eapplyUserContext */] = function (evt, itemCtx) {\r\n var user = _self.user;\r\n if (user) {\r\n var tags = getSetValue(evt, strTags, []);\r\n // stays in tags\r\n setValue(tags, CtxTagKeys.userAccountId, user[_DYN_ACCOUNT_ID /* @min:%2eaccountId */], isString);\r\n // CS 4.0\r\n var extUser = getSetValue(getSetValue(evt, strExt), Extensions.UserExt);\r\n setValue(extUser, \"id\", user.id, isString);\r\n setValue(extUser, \"authId\", user[_DYN_AUTHENTICATED_ID /* @min:%2eauthenticatedId */], isString);\r\n }\r\n };\r\n _self.cleanUp = function (evt, itemCtx) {\r\n var ext = evt.ext;\r\n if (ext) {\r\n _removeEmpty(ext, Extensions.DeviceExt);\r\n _removeEmpty(ext, Extensions.UserExt);\r\n _removeEmpty(ext, Extensions.WebExt);\r\n _removeEmpty(ext, Extensions.OSExt);\r\n _removeEmpty(ext, Extensions.AppExt);\r\n _removeEmpty(ext, Extensions.TraceExt);\r\n }\r\n };\r\n });\r\n }\r\n TelemetryContext.prototype.applySessionContext = function (evt, itemCtx) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n TelemetryContext.prototype.applyOperatingSystemContxt = function (event, itemCtx) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n TelemetryContext.prototype.applyApplicationContext = function (event, itemCtx) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n TelemetryContext.prototype.applyDeviceContext = function (event, itemCtx) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n TelemetryContext.prototype.applyInternalContext = function (event, itemCtx) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n TelemetryContext.prototype.applyLocationContext = function (event, itemCtx) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n TelemetryContext.prototype.applyOperationContext = function (event, itemCtx) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n TelemetryContext.prototype.applyWebContext = function (event, itemCtx) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n TelemetryContext.prototype.applyUserContext = function (event, itemCtx) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n TelemetryContext.prototype.cleanUp = function (event, itemCtx) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n return TelemetryContext;\r\n}());\r\nexport { TelemetryContext };\r\n//# sourceMappingURL=TelemetryContext.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\"use strict\";\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { AnalyticsPlugin } from \"@microsoft/applicationinsights-analytics-js\";\r\nimport { Sender } from \"@microsoft/applicationinsights-channel-js\";\r\nimport { AnalyticsPluginIdentifier, BreezeChannelIdentifier, ConfigurationManager, ConnectionStringParser, ContextTagKeys, CorrelationIdHelper, CtxTagKeys, DEFAULT_BREEZE_ENDPOINT, DEFAULT_BREEZE_PATH, Data, DataSanitizer, DateTimeUtils, DisabledPropertyName, DistributedTracingModes, Envelope, Event, Exception, Extensions, HttpMethod, Metric, PageView, PageViewPerformance, ProcessLegacy, PropertiesPluginIdentifier, RemoteDependencyData, RequestHeaders, SampleRate, SeverityLevel, TelemetryItemCreator, Trace, UrlHelper, Util, parseConnectionString } from \"@microsoft/applicationinsights-common\";\r\nimport { AppInsightsCore, _throwInternal, addPageHideEventListener, addPageUnloadEventListener, arrForEach, arrIndexOf, createUniqueNamespace, doPerf, hasDocument, hasWindow, isArray, isFunction, isNullOrUndefined, isReactNative, isString, mergeEvtNamespace, objForEachKey, proxyAssign, proxyFunctions, removePageHideEventListener, removePageUnloadEventListener, throwError } from \"@microsoft/applicationinsights-core-js\";\r\nimport { AjaxPlugin as DependenciesPlugin } from \"@microsoft/applicationinsights-dependencies-js\";\r\nimport { PropertiesPlugin } from \"@microsoft/applicationinsights-properties-js\";\r\nimport { STR_ADD_TELEMETRY_INITIALIZER, STR_CLEAR_AUTHENTICATED_USER_CONTEXT, STR_EVT_NAMESPACE, STR_FLUSH, STR_GET_COOKIE_MGR, STR_GET_PLUGIN, STR_POLL_INTERNAL_LOGS, STR_SET_AUTHENTICATED_USER_CONTEXT, STR_SNIPPET, STR_START_TRACK_EVENT, STR_START_TRACK_PAGE, STR_STOP_TRACK_EVENT, STR_STOP_TRACK_PAGE, STR_TRACK_DEPENDENCY_DATA, STR_TRACK_EVENT, STR_TRACK_EXCEPTION, STR_TRACK_METRIC, STR_TRACK_PAGE_VIEW, STR_TRACK_TRACE } from \"./InternalConstants\";\r\nimport { _DYN_ADD_HOUSEKEEPING_BEF20, _DYN_APP_INSIGHTS, _DYN_CONFIG, _DYN_CONNECTION_STRING, _DYN_CONTEXT, _DYN_DIAGNOSTIC_LOG_INTER4, _DYN_DISABLE_FLUSH_ON_BEF11, _DYN_DISABLE_FLUSH_ON_UNL12, _DYN_DISABLE_IKEY_DEPRECA18, _DYN_ENDPOINT_URL, _DYN_GET_TRANSMISSION_CON19, _DYN_INDEX_OF, _DYN_INSTRUMENTATION_KEY, _DYN_LOAD_APP_INSIGHTS, _DYN_ONUNLOAD_FLUSH, _DYN_PUSH, _DYN_QUEUE, _DYN_UPDATE_SNIPPET_DEFIN0, _DYN_VERSION } from \"./__DynamicConstants\";\r\nvar _internalSdkSrc;\r\n// This is an exclude list of properties that should not be updated during initialization\r\n// They include a combination of private and internal property names\r\nvar _ignoreUpdateSnippetProperties = [\r\n STR_SNIPPET, \"dependencies\", \"properties\", \"_snippetVersion\", \"appInsightsNew\", \"getSKUDefaults\"\r\n];\r\n// Re-exposing the Common classes as Telemetry, the list was taken by reviewing the generated code for the build while using\r\n// the previous configuration :-\r\n// import * as Common from \"@microsoft/applicationinsights-common\"\r\n// export const Telemetry = Common;\r\nvar fieldType = {\r\n Default: 0 /* FieldType.Default */,\r\n Required: 1 /* FieldType.Required */,\r\n Array: 2 /* FieldType.Array */,\r\n Hidden: 4 /* FieldType.Hidden */\r\n};\r\n/**\r\n * Telemetry type classes, e.g. PageView, Exception, etc\r\n */\r\nexport var Telemetry = {\r\n __proto__: null,\r\n PropertiesPluginIdentifier: PropertiesPluginIdentifier,\r\n BreezeChannelIdentifier: BreezeChannelIdentifier,\r\n AnalyticsPluginIdentifier: AnalyticsPluginIdentifier,\r\n Util: Util,\r\n CorrelationIdHelper: CorrelationIdHelper,\r\n UrlHelper: UrlHelper,\r\n DateTimeUtils: DateTimeUtils,\r\n ConnectionStringParser: ConnectionStringParser,\r\n FieldType: fieldType,\r\n RequestHeaders: RequestHeaders,\r\n DisabledPropertyName: DisabledPropertyName,\r\n ProcessLegacy: ProcessLegacy,\r\n SampleRate: SampleRate,\r\n HttpMethod: HttpMethod,\r\n DEFAULT_BREEZE_ENDPOINT: DEFAULT_BREEZE_ENDPOINT,\r\n Envelope: Envelope,\r\n Event: Event,\r\n Exception: Exception,\r\n Metric: Metric,\r\n PageView: PageView,\r\n RemoteDependencyData: RemoteDependencyData,\r\n Trace: Trace,\r\n PageViewPerformance: PageViewPerformance,\r\n Data: Data,\r\n SeverityLevel: SeverityLevel,\r\n ConfigurationManager: ConfigurationManager,\r\n ContextTagKeys: ContextTagKeys,\r\n DataSanitizer: DataSanitizer,\r\n TelemetryItemCreator: TelemetryItemCreator,\r\n CtxTagKeys: CtxTagKeys,\r\n Extensions: Extensions,\r\n DistributedTracingModes: DistributedTracingModes\r\n};\r\n/**\r\n * Application Insights API\r\n * @class Initialization\r\n * @implements {IApplicationInsights}\r\n */\r\nvar Initialization = /** @class */ (function () {\r\n function Initialization(snippet) {\r\n var _this = this;\r\n // NOTE!: DON'T set default values here, instead set them in the _initDefaults() function as it is also called during teardown()\r\n var dependencies;\r\n var properties;\r\n var _sender;\r\n var _snippetVersion;\r\n var _evtNamespace;\r\n var _houseKeepingNamespace;\r\n var _core;\r\n dynamicProto(Initialization, this, function (_self) {\r\n _initDefaults();\r\n // initialize the queue and config in case they are undefined\r\n _snippetVersion = \"\" + (snippet.sv || snippet[_DYN_VERSION /* @min:%2eversion */] || \"\");\r\n snippet[_DYN_QUEUE /* @min:%2equeue */] = snippet[_DYN_QUEUE /* @min:%2equeue */] || [];\r\n snippet[_DYN_VERSION /* @min:%2eversion */] = snippet[_DYN_VERSION /* @min:%2eversion */] || 2.0; // Default to new version\r\n var config = snippet[_DYN_CONFIG /* @min:%2econfig */] || {};\r\n if (config[_DYN_CONNECTION_STRING /* @min:%2econnectionString */]) {\r\n var cs = parseConnectionString(config[_DYN_CONNECTION_STRING /* @min:%2econnectionString */]);\r\n var ingest = cs.ingestionendpoint;\r\n config[_DYN_ENDPOINT_URL /* @min:%2eendpointUrl */] = ingest ? (ingest + DEFAULT_BREEZE_PATH) : config[_DYN_ENDPOINT_URL /* @min:%2eendpointUrl */]; // only add /v2/track when from connectionstring\r\n config[_DYN_INSTRUMENTATION_KEY /* @min:%2einstrumentationKey */] = cs.instrumentationkey || config[_DYN_INSTRUMENTATION_KEY /* @min:%2einstrumentationKey */];\r\n }\r\n _self[_DYN_APP_INSIGHTS /* @min:%2eappInsights */] = new AnalyticsPlugin();\r\n properties = new PropertiesPlugin();\r\n dependencies = new DependenciesPlugin();\r\n _sender = new Sender();\r\n _core = new AppInsightsCore();\r\n _self.core = _core;\r\n var isErrMessageDisabled = isNullOrUndefined(config[_DYN_DISABLE_IKEY_DEPRECA18 /* @min:%2edisableIkeyDeprecationMessage */]) ? true : config[_DYN_DISABLE_IKEY_DEPRECA18 /* @min:%2edisableIkeyDeprecationMessage */];\r\n if (!config[_DYN_CONNECTION_STRING /* @min:%2econnectionString */] && !isErrMessageDisabled) {\r\n _throwInternal(_core.logger, 1 /* eLoggingSeverity.CRITICAL */, 106 /* _eInternalMessageId.InstrumentationKeyDeprecation */, \"Instrumentation key support will end soon, see aka.ms/IkeyMigrate\");\r\n }\r\n _self[STR_SNIPPET /* @min:%2esnippet */] = snippet;\r\n _self[_DYN_CONFIG /* @min:%2econfig */] = config;\r\n _getSKUDefaults();\r\n _self[STR_FLUSH /* @min:%2eflush */] = function (async) {\r\n if (async === void 0) { async = true; }\r\n doPerf(_core, function () { return \"AISKU.flush\"; }, function () {\r\n arrForEach(_core[_DYN_GET_TRANSMISSION_CON19 /* @min:%2egetTransmissionControls */](), function (channels) {\r\n arrForEach(channels, function (channel) {\r\n channel[STR_FLUSH /* @min:%2eflush */](async);\r\n });\r\n });\r\n }, null, async);\r\n };\r\n _self[_DYN_ONUNLOAD_FLUSH /* @min:%2eonunloadFlush */] = function (async) {\r\n if (async === void 0) { async = true; }\r\n arrForEach(_core[_DYN_GET_TRANSMISSION_CON19 /* @min:%2egetTransmissionControls */](), function (channels) {\r\n arrForEach(channels, function (channel) {\r\n if (channel[_DYN_ONUNLOAD_FLUSH /* @min:%2eonunloadFlush */]) {\r\n channel[_DYN_ONUNLOAD_FLUSH /* @min:%2eonunloadFlush */]();\r\n }\r\n else {\r\n channel[STR_FLUSH /* @min:%2eflush */](async);\r\n }\r\n });\r\n });\r\n };\r\n _self[_DYN_LOAD_APP_INSIGHTS /* @min:%2eloadAppInsights */] = function (legacyMode, logger, notificationManager) {\r\n if (legacyMode === void 0) { legacyMode = false; }\r\n function _updateSnippetProperties(snippet) {\r\n if (snippet) {\r\n var snippetVer = \"\";\r\n if (!isNullOrUndefined(_snippetVersion)) {\r\n snippetVer += _snippetVersion;\r\n }\r\n if (legacyMode) {\r\n snippetVer += \".lg\";\r\n }\r\n if (_self[_DYN_CONTEXT /* @min:%2econtext */] && _self[_DYN_CONTEXT /* @min:%2econtext */].internal) {\r\n _self[_DYN_CONTEXT /* @min:%2econtext */].internal.snippetVer = snippetVer || \"-\";\r\n }\r\n // apply updated properties to the global instance (snippet)\r\n objForEachKey(_self, function (field, value) {\r\n if (isString(field) &&\r\n !isFunction(value) &&\r\n field && field[0] !== \"_\" && // Don't copy \"internal\" values\r\n arrIndexOf(_ignoreUpdateSnippetProperties, field) === -1) {\r\n snippet[field] = value;\r\n }\r\n });\r\n }\r\n }\r\n // dont allow additional channels/other extensions for legacy mode; legacy mode is only to allow users to switch with no code changes!\r\n if (legacyMode && _self[_DYN_CONFIG /* @min:%2econfig */].extensions && _self[_DYN_CONFIG /* @min:%2econfig */].extensions.length > 0) {\r\n throwError(\"Extensions not allowed in legacy mode\");\r\n }\r\n doPerf(_self.core, function () { return \"AISKU.loadAppInsights\"; }, function () {\r\n var extensions = [];\r\n extensions[_DYN_PUSH /* @min:%2epush */](_sender);\r\n extensions[_DYN_PUSH /* @min:%2epush */](properties);\r\n extensions[_DYN_PUSH /* @min:%2epush */](dependencies);\r\n extensions[_DYN_PUSH /* @min:%2epush */](_self[_DYN_APP_INSIGHTS /* @min:%2eappInsights */]);\r\n // initialize core\r\n _core.initialize(_self[_DYN_CONFIG /* @min:%2econfig */], extensions, logger, notificationManager);\r\n _self[_DYN_CONTEXT /* @min:%2econtext */] = properties[_DYN_CONTEXT /* @min:%2econtext */];\r\n if (_internalSdkSrc && _self[_DYN_CONTEXT /* @min:%2econtext */]) {\r\n _self[_DYN_CONTEXT /* @min:%2econtext */].internal.sdkSrc = _internalSdkSrc;\r\n }\r\n _updateSnippetProperties(_self[STR_SNIPPET /* @min:%2esnippet */]);\r\n // Empty queue of all api calls logged prior to sdk download\r\n _self.emptyQueue();\r\n _self[STR_POLL_INTERNAL_LOGS /* @min:%2epollInternalLogs */]();\r\n _self[_DYN_ADD_HOUSEKEEPING_BEF20 /* @min:%2eaddHousekeepingBeforeUnload */](_self);\r\n });\r\n return _self;\r\n };\r\n _self[_DYN_UPDATE_SNIPPET_DEFIN0 /* @min:%2eupdateSnippetDefinitions */] = function (snippet) {\r\n // apply full appInsights to the global instance\r\n // Note: This must be called before loadAppInsights is called\r\n proxyAssign(snippet, _self, function (name) {\r\n // Not excluding names prefixed with \"_\" as we need to proxy some functions like _onError\r\n return name && arrIndexOf(_ignoreUpdateSnippetProperties, name) === -1;\r\n });\r\n };\r\n _self.emptyQueue = function () {\r\n // call functions that were queued before the main script was loaded\r\n try {\r\n if (isArray(_self.snippet[_DYN_QUEUE /* @min:%2equeue */])) {\r\n // note: do not check length in the for-loop conditional in case something goes wrong and the stub methods are not overridden.\r\n var length_1 = _self.snippet[_DYN_QUEUE /* @min:%2equeue */].length;\r\n for (var i = 0; i < length_1; i++) {\r\n var call = _self.snippet[_DYN_QUEUE /* @min:%2equeue */][i];\r\n call();\r\n }\r\n _self.snippet[_DYN_QUEUE /* @min:%2equeue */] = undefined;\r\n delete _self.snippet[_DYN_QUEUE /* @min:%2equeue */];\r\n }\r\n }\r\n catch (exception) {\r\n var properties_1 = {};\r\n if (exception && isFunction(exception.toString)) {\r\n properties_1.exception = exception.toString();\r\n }\r\n // need from core\r\n // Microsoft.ApplicationInsights._InternalLogging.throwInternal(\r\n // eLoggingSeverity.WARNING,\r\n // _eInternalMessageId.FailedToSendQueuedTelemetry,\r\n // \"Failed to send queued telemetry\",\r\n // properties);\r\n }\r\n };\r\n _self[_DYN_ADD_HOUSEKEEPING_BEF20 /* @min:%2eaddHousekeepingBeforeUnload */] = function (appInsightsInstance) {\r\n // Add callback to push events when the user navigates away\r\n if (hasWindow() || hasDocument()) {\r\n var performHousekeeping = function () {\r\n // Adds the ability to flush all data before the page unloads.\r\n // Note: This approach tries to push a sync request with all the pending events onbeforeunload.\r\n // Firefox does not respect this.Other browsers DO push out the call with < 100% hit rate.\r\n // Telemetry here will help us analyze how effective this approach is.\r\n // Another approach would be to make this call sync with a acceptable timeout to reduce the\r\n // impact on user experience.\r\n // appInsightsInstance.context._sender.triggerSend();\r\n appInsightsInstance[_DYN_ONUNLOAD_FLUSH /* @min:%2eonunloadFlush */](false);\r\n // Back up the current session to local storage\r\n // This lets us close expired sessions after the cookies themselves expire\r\n if (isFunction(_this.core[STR_GET_PLUGIN /* @min:%2egetPlugin */])) {\r\n var loadedPlugin = _this.core[STR_GET_PLUGIN /* @min:%2egetPlugin */](PropertiesPluginIdentifier);\r\n if (loadedPlugin) {\r\n var propertiesPlugin = loadedPlugin.plugin;\r\n if (propertiesPlugin && propertiesPlugin[_DYN_CONTEXT /* @min:%2econtext */] && propertiesPlugin[_DYN_CONTEXT /* @min:%2econtext */]._sessionManager) {\r\n propertiesPlugin[_DYN_CONTEXT /* @min:%2econtext */]._sessionManager.backup();\r\n }\r\n }\r\n }\r\n };\r\n var added = false;\r\n var excludePageUnloadEvents = appInsightsInstance.appInsights[_DYN_CONFIG /* @min:%2econfig */].disablePageUnloadEvents;\r\n if (!_houseKeepingNamespace) {\r\n _houseKeepingNamespace = mergeEvtNamespace(_evtNamespace, _core[STR_EVT_NAMESPACE /* @min:%2eevtNamespace */] && _core[STR_EVT_NAMESPACE /* @min:%2eevtNamespace */]());\r\n }\r\n if (!appInsightsInstance.appInsights.config[_DYN_DISABLE_FLUSH_ON_BEF11 /* @min:%2edisableFlushOnBeforeUnload */]) {\r\n // Hook the unload event for the document, window and body to ensure that the client events are flushed to the server\r\n // As just hooking the window does not always fire (on chrome) for page navigation's.\r\n if (addPageUnloadEventListener(performHousekeeping, excludePageUnloadEvents, _houseKeepingNamespace)) {\r\n added = true;\r\n }\r\n // We also need to hook the pagehide and visibilitychange events as not all versions of Safari support load/unload events.\r\n if (addPageHideEventListener(performHousekeeping, excludePageUnloadEvents, _houseKeepingNamespace)) {\r\n added = true;\r\n }\r\n // A reactNative app may not have a window and therefore the beforeunload/pagehide events -- so don't\r\n // log the failure in this case\r\n if (!added && !isReactNative()) {\r\n _throwInternal(appInsightsInstance[_DYN_APP_INSIGHTS /* @min:%2eappInsights */].core.logger, 1 /* eLoggingSeverity.CRITICAL */, 19 /* _eInternalMessageId.FailedToAddHandlerForOnBeforeUnload */, \"Could not add handler for beforeunload and pagehide\");\r\n }\r\n }\r\n if (!added && !appInsightsInstance.appInsights.config[_DYN_DISABLE_FLUSH_ON_UNL12 /* @min:%2edisableFlushOnUnload */]) {\r\n // If we didn't add the normal set then attempt to add the pagehide and visibilitychange only\r\n addPageHideEventListener(performHousekeeping, excludePageUnloadEvents, _houseKeepingNamespace);\r\n }\r\n }\r\n };\r\n _self.getSender = function () {\r\n return _sender;\r\n };\r\n _self.unload = function (isAsync, unloadComplete, cbTimeout) {\r\n _self[_DYN_ONUNLOAD_FLUSH /* @min:%2eonunloadFlush */](isAsync);\r\n // Remove any registered event handlers\r\n if (_houseKeepingNamespace) {\r\n removePageUnloadEventListener(null, _houseKeepingNamespace);\r\n removePageHideEventListener(null, _houseKeepingNamespace);\r\n }\r\n _core.unload && _core.unload(isAsync, unloadComplete, cbTimeout);\r\n };\r\n proxyFunctions(_self, _self[_DYN_APP_INSIGHTS /* @min:%2eappInsights */], [\r\n STR_GET_COOKIE_MGR,\r\n STR_TRACK_EVENT,\r\n STR_TRACK_PAGE_VIEW,\r\n \"trackPageViewPerformance\",\r\n STR_TRACK_EXCEPTION,\r\n \"_onerror\",\r\n STR_TRACK_TRACE,\r\n STR_TRACK_METRIC,\r\n STR_START_TRACK_PAGE,\r\n STR_STOP_TRACK_PAGE,\r\n STR_START_TRACK_EVENT,\r\n STR_STOP_TRACK_EVENT\r\n ]);\r\n proxyFunctions(_self, _getCurrentDependencies, [\r\n STR_TRACK_DEPENDENCY_DATA,\r\n \"addDependencyListener\",\r\n \"addDependencyInitializer\"\r\n ]);\r\n proxyFunctions(_self, _core, [\r\n STR_ADD_TELEMETRY_INITIALIZER,\r\n STR_POLL_INTERNAL_LOGS,\r\n \"stopPollingInternalLogs\",\r\n STR_GET_PLUGIN,\r\n \"addPlugin\",\r\n STR_EVT_NAMESPACE,\r\n \"addUnloadCb\",\r\n \"getTraceCtx\"\r\n ]);\r\n proxyFunctions(_self, function () {\r\n var context = properties[_DYN_CONTEXT /* @min:%2econtext */];\r\n return context ? context.user : null;\r\n }, [\r\n STR_SET_AUTHENTICATED_USER_CONTEXT,\r\n STR_CLEAR_AUTHENTICATED_USER_CONTEXT\r\n ]);\r\n function _getSKUDefaults() {\r\n _self.config[_DYN_DIAGNOSTIC_LOG_INTER4 /* @min:%2ediagnosticLogInterval */] =\r\n _self.config[_DYN_DIAGNOSTIC_LOG_INTER4 /* @min:%2ediagnosticLogInterval */] && _self[_DYN_CONFIG /* @min:%2econfig */][_DYN_DIAGNOSTIC_LOG_INTER4 /* @min:%2ediagnosticLogInterval */] > 0 ? _self[_DYN_CONFIG /* @min:%2econfig */][_DYN_DIAGNOSTIC_LOG_INTER4 /* @min:%2ediagnosticLogInterval */] : 10000;\r\n }\r\n // Using a function to support the dynamic adding / removal of plugins, so this will always return the current value\r\n function _getCurrentDependencies() {\r\n return dependencies;\r\n }\r\n function _initDefaults() {\r\n _evtNamespace = createUniqueNamespace(\"AISKU\");\r\n _houseKeepingNamespace = null;\r\n dependencies = null;\r\n properties = null;\r\n _sender = null;\r\n _snippetVersion = null;\r\n }\r\n });\r\n }\r\n // Analytics Plugin\r\n /**\r\n * Get the current cookie manager for this instance\r\n */\r\n Initialization.prototype.getCookieMgr = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n return null;\r\n };\r\n /**\r\n * Log a user action or other occurrence.\r\n * @param {IEventTelemetry} event\r\n * @param {ICustomProperties} [customProperties]\r\n * @memberof Initialization\r\n */\r\n Initialization.prototype.trackEvent = function (event, customProperties) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Logs that a page, or similar container was displayed to the user.\r\n * @param {IPageViewTelemetry} pageView\r\n * @memberof Initialization\r\n */\r\n Initialization.prototype.trackPageView = function (pageView) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Log a bag of performance information via the customProperties field.\r\n * @param {IPageViewPerformanceTelemetry} pageViewPerformance\r\n * @memberof Initialization\r\n */\r\n Initialization.prototype.trackPageViewPerformance = function (pageViewPerformance) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Log an exception that you have caught.\r\n * @param {IExceptionTelemetry} exception\r\n * @param {{[key: string]: any}} customProperties Additional data used to filter pages and metrics in the portal. Defaults to empty.\r\n * @memberof Initialization\r\n */\r\n Initialization.prototype.trackException = function (exception, customProperties) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Manually send uncaught exception telemetry. This method is automatically triggered\r\n * on a window.onerror event.\r\n * @param {IAutoExceptionTelemetry} exception\r\n * @memberof Initialization\r\n */\r\n Initialization.prototype._onerror = function (exception) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Log a diagnostic scenario such entering or leaving a function.\r\n * @param {ITraceTelemetry} trace\r\n * @param {ICustomProperties} [customProperties]\r\n * @memberof Initialization\r\n */\r\n Initialization.prototype.trackTrace = function (trace, customProperties) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Log a numeric value that is not associated with a specific event. Typically used\r\n * to send regular reports of performance indicators.\r\n *\r\n * To send a single measurement, just use the `name` and `average` fields\r\n * of {@link IMetricTelemetry}.\r\n *\r\n * If you take measurements frequently, you can reduce the telemetry bandwidth by\r\n * aggregating multiple measurements and sending the resulting average and modifying\r\n * the `sampleCount` field of {@link IMetricTelemetry}.\r\n * @param {IMetricTelemetry} metric input object argument. Only `name` and `average` are mandatory.\r\n * @param {ICustomProperties} [customProperties]\r\n * @memberof Initialization\r\n */\r\n Initialization.prototype.trackMetric = function (metric, customProperties) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Starts the timer for tracking a page load time. Use this instead of `trackPageView` if you want to control when the page view timer starts and stops,\r\n * but don't want to calculate the duration yourself. This method doesn't send any telemetry. Call `stopTrackPage` to log the end of the page view\r\n * and send the event.\r\n * @param name A string that idenfities this item, unique within this HTML document. Defaults to the document title.\r\n */\r\n Initialization.prototype.startTrackPage = function (name) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Stops the timer that was started by calling `startTrackPage` and sends the pageview load time telemetry with the specified properties and measurements.\r\n * The duration of the page view will be the time between calling `startTrackPage` and `stopTrackPage`.\r\n * @param name The string you used as the name in startTrackPage. Defaults to the document title.\r\n * @param url String - a relative or absolute URL that identifies the page or other item. Defaults to the window location.\r\n * @param properties map[string, string] - additional data used to filter pages and metrics in the portal. Defaults to empty.\r\n * @param measurements map[string, number] - metrics associated with this page, displayed in Metrics Explorer on the portal. Defaults to empty.\r\n */\r\n Initialization.prototype.stopTrackPage = function (name, url, customProperties, measurements) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n Initialization.prototype.startTrackEvent = function (name) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Log an extended event that you started timing with `startTrackEvent`.\r\n * @param name The string you used to identify this event in `startTrackEvent`.\r\n * @param properties map[string, string] - additional data used to filter events and metrics in the portal. Defaults to empty.\r\n * @param measurements map[string, number] - metrics associated with this event, displayed in Metrics Explorer on the portal. Defaults to empty.\r\n */\r\n Initialization.prototype.stopTrackEvent = function (name, properties, measurements) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n Initialization.prototype.addTelemetryInitializer = function (telemetryInitializer) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n // Properties Plugin\r\n /**\r\n * Set the authenticated user id and the account id. Used for identifying a specific signed-in user. Parameters must not contain whitespace or ,;=|\r\n *\r\n * The method will only set the `authenticatedUserId` and `accountId` in the current page view. To set them for the whole session, you should set `storeInCookie = true`\r\n * @param {string} authenticatedUserId\r\n * @param {string} [accountId]\r\n * @param {boolean} [storeInCookie=false]\r\n */\r\n Initialization.prototype.setAuthenticatedUserContext = function (authenticatedUserId, accountId, storeInCookie) {\r\n if (storeInCookie === void 0) { storeInCookie = false; }\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Clears the authenticated user id and account id. The associated cookie is cleared, if present.\r\n */\r\n Initialization.prototype.clearAuthenticatedUserContext = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n // Dependencies Plugin\r\n /**\r\n * Log a dependency call (e.g. ajax)\r\n * @param {IDependencyTelemetry} dependency\r\n * @memberof Initialization\r\n */\r\n Initialization.prototype.trackDependencyData = function (dependency) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n // Misc\r\n /**\r\n * Manually trigger an immediate send of all telemetry still in the buffer.\r\n * @param {boolean} [async=true]\r\n * @memberof Initialization\r\n */\r\n Initialization.prototype.flush = function (async) {\r\n if (async === void 0) { async = true; }\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Manually trigger an immediate send of all telemetry still in the buffer using beacon Sender.\r\n * Fall back to xhr sender if beacon is not supported.\r\n * @param {boolean} [async=true]\r\n * @memberof Initialization\r\n */\r\n Initialization.prototype.onunloadFlush = function (async) {\r\n if (async === void 0) { async = true; }\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Initialize this instance of ApplicationInsights\r\n * @returns {IApplicationInsights}\r\n * @memberof Initialization\r\n */\r\n Initialization.prototype.loadAppInsights = function (legacyMode, logger, notificationManager) {\r\n if (legacyMode === void 0) { legacyMode = false; }\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n return null;\r\n };\r\n /**\r\n * Overwrite the lazy loaded fields of global window snippet to contain the\r\n * actual initialized API methods\r\n * @param {Snippet} snippet\r\n * @memberof Initialization\r\n */\r\n Initialization.prototype.updateSnippetDefinitions = function (snippet) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Call any functions that were queued before the main script was loaded\r\n * @memberof Initialization\r\n */\r\n Initialization.prototype.emptyQueue = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n Initialization.prototype.pollInternalLogs = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n Initialization.prototype.stopPollingInternalLogs = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n Initialization.prototype.addHousekeepingBeforeUnload = function (appInsightsInstance) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n Initialization.prototype.getSender = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n return null;\r\n };\r\n /**\r\n * Unload and Tear down the SDK and any initialized plugins, after calling this the SDK will be considered\r\n * to be un-initialized and non-operational, re-initializing the SDK should only be attempted if the previous\r\n * unload call return `true` stating that all plugins reported that they also unloaded, the recommended\r\n * approach is to create a new instance and initialize that instance.\r\n * This is due to possible unexpected side effects caused by plugins not supporting unload / teardown, unable\r\n * to successfully remove any global references or they may just be completing the unload process asynchronously.\r\n */\r\n Initialization.prototype.unload = function (isAsync, unloadComplete) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n return null;\r\n };\r\n Initialization.prototype.getPlugin = function (pluginIdentifier) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n return null;\r\n };\r\n Initialization.prototype.addPlugin = function (plugin, replaceExisting, doAsync, addCb) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Returns the unique event namespace that should be used\r\n */\r\n Initialization.prototype.evtNamespace = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n return null;\r\n };\r\n /**\r\n * Add an unload handler that will be called when the SDK is being unloaded\r\n * @param handler - the handler\r\n */\r\n Initialization.prototype.addUnloadCb = function (handler) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Add an ajax listener which is called just prior to the request being sent and before the correlation headers are added, to allow you\r\n * to access the headers and modify the values used to generate the distributed tracing correlation headers. (added in v2.8.4)\r\n * @param dependencyListener - The Telemetry Initializer function\r\n * @returns - A IDependencyListenerHandler to enable the initializer to be removed\r\n */\r\n Initialization.prototype.addDependencyListener = function (dependencyListener) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n return null;\r\n };\r\n /**\r\n * Add an dependency telemetry initializer callback function to allow populating additional properties or drop the request.\r\n * It is called after the dependency call has completed and any available performance details are available. A dependency\r\n * initializer is similar to the TelemetryInitializer function but it allows you to block the reporting of the dependency\r\n * request so that it doesn't count against the `maxAjaxCallsPerView`.\r\n * @param dependencyInitializer - The Dependency Telemetry Initializer function\r\n * @returns - A IDependencyInitializerHandler to enable the initializer to be removed\r\n */\r\n Initialization.prototype.addDependencyInitializer = function (dependencyInitializer) {\r\n return null;\r\n };\r\n /**\r\n * Gets the current distributed trace context for this instance if available\r\n */\r\n Initialization.prototype.getTraceCtx = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n return null;\r\n };\r\n return Initialization;\r\n}());\r\nexport { Initialization };\r\n// tslint:disable-next-line\r\n(function () {\r\n var sdkSrc = null;\r\n var isModule = false;\r\n var cdns = [\r\n \"://js.monitor.azure.com/\",\r\n \"://az416426.vo.msecnd.net/\"\r\n ];\r\n try {\r\n // Try and determine whether the sdk is being loaded from the CDN\r\n // currentScript is only valid during initial processing\r\n var scrpt = (document || {}).currentScript;\r\n if (scrpt) {\r\n sdkSrc = scrpt.src;\r\n // } else {\r\n // // We need to update to at least typescript 2.9 for this to work :-(\r\n // // Leaving as a stub for now so after we upgrade this breadcrumb is available\r\n // let meta = import.meta;\r\n // sdkSrc = (meta || {}).url;\r\n // isModule = true;\r\n }\r\n }\r\n catch (e) {\r\n // eslint-disable-next-line no-empty\r\n }\r\n if (sdkSrc) {\r\n try {\r\n var url = sdkSrc.toLowerCase();\r\n if (url) {\r\n var src = \"\";\r\n for (var idx = 0; idx < cdns.length; idx++) {\r\n if (url[_DYN_INDEX_OF /* @min:%2eindexOf */](cdns[idx]) !== -1) {\r\n src = \"cdn\" + (idx + 1);\r\n if (url[_DYN_INDEX_OF /* @min:%2eindexOf */](\"/scripts/\") === -1) {\r\n if (url[_DYN_INDEX_OF /* @min:%2eindexOf */](\"/next/\") !== -1) {\r\n src += \"-next\";\r\n }\r\n else if (url[_DYN_INDEX_OF /* @min:%2eindexOf */](\"/beta/\") !== -1) {\r\n src += \"-beta\";\r\n }\r\n }\r\n _internalSdkSrc = src + (isModule ? \".mod\" : \"\");\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n catch (e) {\r\n // eslint-disable-next-line no-empty\r\n }\r\n }\r\n})();\r\n//# sourceMappingURL=Initialization.js.map","/**\r\n* PropertiesPlugin.ts\r\n* @copyright Microsoft 2018\r\n*/\r\nimport { __extends } from \"tslib\";\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { BreezeChannelIdentifier, PageView, PropertiesPluginIdentifier, createDistributedTraceContextFromTrace, utlSetStoragePrefix } from \"@microsoft/applicationinsights-common\";\r\nimport { BaseTelemetryPlugin, _InternalLogMessage, _logInternalMessage, createProcessTelemetryContext, getNavigator, getSetValue, isNullOrUndefined, objForEachKey } from \"@microsoft/applicationinsights-core-js\";\r\nimport { TelemetryContext } from \"./TelemetryContext\";\r\nimport { _DYN_ACCOUNT_ID, _DYN_APPLY_APPLICATION_CO1, _DYN_APPLY_DEVICE_CONTEXT, _DYN_APPLY_INTERNAL_CONTE5, _DYN_APPLY_LOCATION_CONTE4, _DYN_APPLY_OPERATING_SYST3, _DYN_APPLY_OPERATION_CONT2, _DYN_APPLY_SESSION_CONTEX0, _DYN_APPLY_USER_CONTEXT, _DYN_COOKIE_DOMAIN, _DYN_GET_NEW_ID, _DYN_GET_SESSION_ID, _DYN_GET_TRACE_CTX, _DYN_ID_LENGTH, _DYN_IS_NEW_USER, _DYN_IS_USER_COOKIE_SET, _DYN_NAME_PREFIX, _DYN_SDK_EXTENSION, _DYN_SESSION_COOKIE_POSTF6, _DYN_SESSION_MANAGER, _DYN_TELEMETRY_TRACE, _DYN_UPDATE, _DYN_USER_COOKIE_POSTFIX } from \"./__DynamicConstants\";\r\nvar PropertiesPlugin = /** @class */ (function (_super) {\r\n __extends(PropertiesPlugin, _super);\r\n function PropertiesPlugin() {\r\n var _this = _super.call(this) || this;\r\n _this.priority = 110;\r\n _this.identifier = PropertiesPluginIdentifier;\r\n var _extensionConfig;\r\n var _distributedTraceCtx;\r\n var _previousTraceCtx;\r\n dynamicProto(PropertiesPlugin, _this, function (_self, _base) {\r\n _initDefaults();\r\n _self.initialize = function (config, core, extensions, pluginChain) {\r\n _base.initialize(config, core, extensions, pluginChain);\r\n _populateDefaults(config);\r\n };\r\n /**\r\n * Add Part A fields to the event\r\n * @param event The event that needs to be processed\r\n */\r\n _self.processTelemetry = function (event, itemCtx) {\r\n if (isNullOrUndefined(event)) {\r\n // TODO(barustum): throw an internal event once we have support for internal logging\r\n }\r\n else {\r\n itemCtx = _self._getTelCtx(itemCtx);\r\n // If the envelope is PageView, reset the internal message count so that we can send internal telemetry for the new page.\r\n if (event.name === PageView.envelopeType) {\r\n itemCtx.diagLog().resetInternalMessageCount();\r\n }\r\n var theContext = (_self.context || {});\r\n if (theContext.session) {\r\n // If customer did not provide custom session id update the session manager\r\n if (typeof _self.context.session.id !== \"string\" && theContext[_DYN_SESSION_MANAGER /* @min:%2esessionManager */]) {\r\n theContext[_DYN_SESSION_MANAGER /* @min:%2esessionManager */][_DYN_UPDATE /* @min:%2eupdate */]();\r\n }\r\n }\r\n var userCtx = theContext.user;\r\n if (userCtx && !userCtx[_DYN_IS_USER_COOKIE_SET /* @min:%2eisUserCookieSet */]) {\r\n userCtx[_DYN_UPDATE /* @min:%2eupdate */](theContext.user.id);\r\n }\r\n _processTelemetryInternal(event, itemCtx);\r\n if (userCtx && userCtx[_DYN_IS_NEW_USER /* @min:%2eisNewUser */]) {\r\n userCtx[_DYN_IS_NEW_USER /* @min:%2eisNewUser */] = false;\r\n var message = new _InternalLogMessage(72 /* _eInternalMessageId.SendBrowserInfoOnUserInit */, ((getNavigator() || {}).userAgent || \"\"));\r\n _logInternalMessage(itemCtx.diagLog(), 1 /* eLoggingSeverity.CRITICAL */, message);\r\n }\r\n _self.processNext(event, itemCtx);\r\n }\r\n };\r\n _self._doTeardown = function (unloadCtx, unloadState) {\r\n var core = (unloadCtx || {}).core();\r\n if (core && core[_DYN_GET_TRACE_CTX /* @min:%2egetTraceCtx */]) {\r\n var traceCtx = core[_DYN_GET_TRACE_CTX /* @min:%2egetTraceCtx */](false);\r\n if (traceCtx === _distributedTraceCtx) {\r\n core.setTraceCtx(_previousTraceCtx);\r\n }\r\n }\r\n _initDefaults();\r\n };\r\n function _initDefaults() {\r\n _extensionConfig = null;\r\n _distributedTraceCtx = null;\r\n _previousTraceCtx = null;\r\n }\r\n function _populateDefaults(config) {\r\n var identifier = _self.identifier;\r\n var core = _self.core;\r\n var ctx = createProcessTelemetryContext(null, config, core);\r\n var defaultConfig = PropertiesPlugin.getDefaultConfig();\r\n _extensionConfig = _extensionConfig || {};\r\n objForEachKey(defaultConfig, function (field, value) {\r\n _extensionConfig[field] = function () { return ctx.getConfig(identifier, field, value()); };\r\n });\r\n if (config.storagePrefix) {\r\n utlSetStoragePrefix(config.storagePrefix);\r\n }\r\n _previousTraceCtx = core[_DYN_GET_TRACE_CTX /* @min:%2egetTraceCtx */](false);\r\n _self.context = new TelemetryContext(core, _extensionConfig, _previousTraceCtx);\r\n _distributedTraceCtx = createDistributedTraceContextFromTrace(_self.context[_DYN_TELEMETRY_TRACE /* @min:%2etelemetryTrace */], _previousTraceCtx);\r\n core.setTraceCtx(_distributedTraceCtx);\r\n _self.context.appId = function () {\r\n var breezeChannel = core.getPlugin(BreezeChannelIdentifier);\r\n return breezeChannel ? breezeChannel.plugin[\"_appId\"] : null;\r\n };\r\n // Test hook to allow accessing the internal values -- explicitly not defined as an available property on the class\r\n _self[\"_extConfig\"] = _extensionConfig;\r\n }\r\n function _processTelemetryInternal(evt, itemCtx) {\r\n // Set Part A fields\r\n getSetValue(evt, \"tags\", []);\r\n getSetValue(evt, \"ext\", {});\r\n var ctx = _self.context;\r\n ctx[_DYN_APPLY_SESSION_CONTEX0 /* @min:%2eapplySessionContext */](evt, itemCtx);\r\n ctx[_DYN_APPLY_APPLICATION_CO1 /* @min:%2eapplyApplicationContext */](evt, itemCtx);\r\n ctx[_DYN_APPLY_DEVICE_CONTEXT /* @min:%2eapplyDeviceContext */](evt, itemCtx);\r\n ctx[_DYN_APPLY_OPERATION_CONT2 /* @min:%2eapplyOperationContext */](evt, itemCtx);\r\n ctx[_DYN_APPLY_USER_CONTEXT /* @min:%2eapplyUserContext */](evt, itemCtx);\r\n ctx[_DYN_APPLY_OPERATING_SYST3 /* @min:%2eapplyOperatingSystemContxt */](evt, itemCtx);\r\n ctx.applyWebContext(evt, itemCtx);\r\n ctx[_DYN_APPLY_LOCATION_CONTE4 /* @min:%2eapplyLocationContext */](evt, itemCtx); // legacy tags\r\n ctx[_DYN_APPLY_INTERNAL_CONTE5 /* @min:%2eapplyInternalContext */](evt, itemCtx); // legacy tags\r\n ctx.cleanUp(evt, itemCtx);\r\n }\r\n });\r\n return _this;\r\n }\r\n PropertiesPlugin.getDefaultConfig = function () {\r\n var _a;\r\n var defaultValue;\r\n var nullValue = null;\r\n var defaultConfig = (_a = {\r\n instrumentationKey: function () { return defaultValue; }\r\n },\r\n _a[_DYN_ACCOUNT_ID /* @min:accountId */] = function () { return nullValue; },\r\n _a.sessionRenewalMs = function () { return 30 * 60 * 1000; },\r\n _a.samplingPercentage = function () { return 100; },\r\n _a.sessionExpirationMs = function () { return 24 * 60 * 60 * 1000; },\r\n _a[_DYN_COOKIE_DOMAIN /* @min:cookieDomain */] = function () { return nullValue; },\r\n _a[_DYN_SDK_EXTENSION /* @min:sdkExtension */] = function () { return nullValue; },\r\n _a.isBrowserLinkTrackingEnabled = function () { return false; },\r\n _a.appId = function () { return nullValue; },\r\n _a[_DYN_GET_SESSION_ID /* @min:getSessionId */] = function () { return nullValue; },\r\n _a[_DYN_NAME_PREFIX /* @min:namePrefix */] = function () { return defaultValue; },\r\n _a[_DYN_SESSION_COOKIE_POSTF6 /* @min:sessionCookiePostfix */] = function () { return defaultValue; },\r\n _a[_DYN_USER_COOKIE_POSTFIX /* @min:userCookiePostfix */] = function () { return defaultValue; },\r\n _a[_DYN_ID_LENGTH /* @min:idLength */] = function () { return 22; },\r\n _a[_DYN_GET_NEW_ID /* @min:getNewId */] = function () { return nullValue; },\r\n _a);\r\n return defaultConfig;\r\n };\r\n PropertiesPlugin.prototype.initialize = function (config, core, extensions, pluginChain) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Add Part A fields to the event\r\n * @param event The event that needs to be processed\r\n */\r\n PropertiesPlugin.prototype.processTelemetry = function (event, itemCtx) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n return PropertiesPlugin;\r\n}(BaseTelemetryPlugin));\r\nexport default PropertiesPlugin;\r\n//# sourceMappingURL=PropertiesPlugin.js.map","/*! *****************************************************************************\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n 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 function __createBinding(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, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = 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\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * @hidden\r\n */\r\nvar CryptoUtils = /** @class */ (function () {\r\n function CryptoUtils() {\r\n }\r\n /**\r\n * Creates a new random GUID\r\n * @returns string (GUID)\r\n */\r\n CryptoUtils.createNewGuid = function () {\r\n /*\r\n * RFC4122: The version 4 UUID is meant for generating UUIDs from truly-random or\r\n * pseudo-random numbers.\r\n * The algorithm is as follows:\r\n * Set the two most significant bits (bits 6 and 7) of the\r\n * clock_seq_hi_and_reserved to zero and one, respectively.\r\n * Set the four most significant bits (bits 12 through 15) of the\r\n * time_hi_and_version field to the 4-bit version number from\r\n * Section 4.1.3. Version4\r\n * Set all the other bits to randomly (or pseudo-randomly) chosen\r\n * values.\r\n * UUID = time-low \"-\" time-mid \"-\"time-high-and-version \"-\"clock-seq-reserved and low(2hexOctet)\"-\" node\r\n * time-low = 4hexOctet\r\n * time-mid = 2hexOctet\r\n * time-high-and-version = 2hexOctet\r\n * clock-seq-and-reserved = hexOctet:\r\n * clock-seq-low = hexOctet\r\n * node = 6hexOctet\r\n * Format: xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\r\n * y could be 1000, 1001, 1010, 1011 since most significant two bits needs to be 10\r\n * y values are 8, 9, A, B\r\n */\r\n var cryptoObj = window.crypto; // for IE 11\r\n if (cryptoObj && cryptoObj.getRandomValues) {\r\n var buffer = new Uint8Array(16);\r\n cryptoObj.getRandomValues(buffer);\r\n // buffer[6] and buffer[7] represents the time_hi_and_version field. We will set the four most significant bits (4 through 7) of buffer[6] to represent decimal number 4 (UUID version number).\r\n buffer[6] |= 0x40; // buffer[6] | 01000000 will set the 6 bit to 1.\r\n buffer[6] &= 0x4f; // buffer[6] & 01001111 will set the 4, 5, and 7 bit to 0 such that bits 4-7 == 0100 = \"4\".\r\n // buffer[8] represents the clock_seq_hi_and_reserved field. We will set the two most significant bits (6 and 7) of the clock_seq_hi_and_reserved to zero and one, respectively.\r\n buffer[8] |= 0x80; // buffer[8] | 10000000 will set the 7 bit to 1.\r\n buffer[8] &= 0xbf; // buffer[8] & 10111111 will set the 6 bit to 0.\r\n return CryptoUtils.decimalToHex(buffer[0]) + CryptoUtils.decimalToHex(buffer[1])\r\n + CryptoUtils.decimalToHex(buffer[2]) + CryptoUtils.decimalToHex(buffer[3])\r\n + \"-\" + CryptoUtils.decimalToHex(buffer[4]) + CryptoUtils.decimalToHex(buffer[5])\r\n + \"-\" + CryptoUtils.decimalToHex(buffer[6]) + CryptoUtils.decimalToHex(buffer[7])\r\n + \"-\" + CryptoUtils.decimalToHex(buffer[8]) + CryptoUtils.decimalToHex(buffer[9])\r\n + \"-\" + CryptoUtils.decimalToHex(buffer[10]) + CryptoUtils.decimalToHex(buffer[11])\r\n + CryptoUtils.decimalToHex(buffer[12]) + CryptoUtils.decimalToHex(buffer[13])\r\n + CryptoUtils.decimalToHex(buffer[14]) + CryptoUtils.decimalToHex(buffer[15]);\r\n }\r\n else {\r\n var guidHolder = \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\";\r\n var hex = \"0123456789abcdef\";\r\n var r = 0;\r\n var guidResponse = \"\";\r\n for (var i = 0; i < 36; i++) {\r\n if (guidHolder[i] !== \"-\" && guidHolder[i] !== \"4\") {\r\n // each x and y needs to be random\r\n r = Math.random() * 16 | 0;\r\n }\r\n if (guidHolder[i] === \"x\") {\r\n guidResponse += hex[r];\r\n }\r\n else if (guidHolder[i] === \"y\") {\r\n // clock-seq-and-reserved first hex is filtered and remaining hex values are random\r\n r &= 0x3; // bit and with 0011 to set pos 2 to zero ?0??\r\n r |= 0x8; // set pos 3 to 1 as 1???\r\n guidResponse += hex[r];\r\n }\r\n else {\r\n guidResponse += guidHolder[i];\r\n }\r\n }\r\n return guidResponse;\r\n }\r\n };\r\n /**\r\n * verifies if a string is GUID\r\n * @param guid\r\n */\r\n CryptoUtils.isGuid = function (guid) {\r\n var regexGuid = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;\r\n return regexGuid.test(guid);\r\n };\r\n /**\r\n * Decimal to Hex\r\n *\r\n * @param num\r\n */\r\n CryptoUtils.decimalToHex = function (num) {\r\n var hex = num.toString(16);\r\n while (hex.length < 2) {\r\n hex = \"0\" + hex;\r\n }\r\n return hex;\r\n };\r\n // See: https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/Base64_encoding_and_decoding#Solution_4_%E2%80%93_escaping_the_string_before_encoding_it\r\n /**\r\n * encoding string to base64 - platform specific check\r\n *\r\n * @param input\r\n */\r\n CryptoUtils.base64Encode = function (input) {\r\n return btoa(encodeURIComponent(input).replace(/%([0-9A-F]{2})/g, function toSolidBytes(match, p1) {\r\n return String.fromCharCode(Number(\"0x\" + p1));\r\n }));\r\n };\r\n /**\r\n * Decodes a base64 encoded string.\r\n *\r\n * @param input\r\n */\r\n CryptoUtils.base64Decode = function (input) {\r\n var encodedString = input.replace(/-/g, \"+\").replace(/_/g, \"/\");\r\n switch (encodedString.length % 4) {\r\n case 0:\r\n break;\r\n case 2:\r\n encodedString += \"==\";\r\n break;\r\n case 3:\r\n encodedString += \"=\";\r\n break;\r\n default:\r\n throw new Error(\"Invalid base64 string\");\r\n }\r\n return decodeURIComponent(atob(encodedString).split(\"\").map(function (c) {\r\n return \"%\" + (\"00\" + c.charCodeAt(0).toString(16)).slice(-2);\r\n }).join(\"\"));\r\n };\r\n /**\r\n * deserialize a string\r\n *\r\n * @param query\r\n */\r\n CryptoUtils.deserialize = function (query) {\r\n var match; // Regex for replacing addition symbol with a space\r\n var pl = /\\+/g;\r\n var search = /([^&=]+)=([^&]*)/g;\r\n var decode = function (s) { return decodeURIComponent(s.replace(pl, \" \")); };\r\n var obj = {};\r\n match = search.exec(query);\r\n while (match) {\r\n obj[decode(match[1])] = decode(match[2]);\r\n match = search.exec(query);\r\n }\r\n return obj;\r\n };\r\n return CryptoUtils;\r\n}());\r\nexport { CryptoUtils };\r\n//# sourceMappingURL=CryptoUtils.js.map","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * @hidden\r\n * Constants\r\n */\r\nvar Constants = /** @class */ (function () {\r\n function Constants() {\r\n }\r\n Object.defineProperty(Constants, \"libraryName\", {\r\n get: function () { return \"Msal.js\"; } // used in telemetry sdkName\r\n ,\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Constants, \"claims\", {\r\n get: function () { return \"claims\"; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Constants, \"clientId\", {\r\n get: function () { return \"clientId\"; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Constants, \"adalIdToken\", {\r\n get: function () { return \"adal.idtoken\"; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Constants, \"cachePrefix\", {\r\n get: function () { return \"msal\"; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Constants, \"scopes\", {\r\n get: function () { return \"scopes\"; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Constants, \"no_account\", {\r\n get: function () { return \"NO_ACCOUNT\"; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Constants, \"upn\", {\r\n get: function () { return \"upn\"; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Constants, \"domain_hint\", {\r\n get: function () { return \"domain_hint\"; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Constants, \"prompt_select_account\", {\r\n get: function () { return \"&prompt=select_account\"; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Constants, \"prompt_none\", {\r\n get: function () { return \"&prompt=none\"; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Constants, \"prompt\", {\r\n get: function () { return \"prompt\"; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Constants, \"response_mode_fragment\", {\r\n get: function () { return \"&response_mode=fragment\"; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Constants, \"resourceDelimiter\", {\r\n get: function () { return \"|\"; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Constants, \"cacheDelimiter\", {\r\n get: function () { return \".\"; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Constants, \"popUpWidth\", {\r\n get: function () { return this._popUpWidth; },\r\n set: function (width) {\r\n this._popUpWidth = width;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Constants, \"popUpHeight\", {\r\n get: function () { return this._popUpHeight; },\r\n set: function (height) {\r\n this._popUpHeight = height;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Constants, \"login\", {\r\n get: function () { return \"LOGIN\"; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Constants, \"renewToken\", {\r\n get: function () { return \"RENEW_TOKEN\"; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Constants, \"unknown\", {\r\n get: function () { return \"UNKNOWN\"; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Constants, \"ADFS\", {\r\n get: function () { return \"adfs\"; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Constants, \"homeAccountIdentifier\", {\r\n get: function () { return \"homeAccountIdentifier\"; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Constants, \"common\", {\r\n get: function () { return \"common\"; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Constants, \"openidScope\", {\r\n get: function () { return \"openid\"; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Constants, \"profileScope\", {\r\n get: function () { return \"profile\"; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Constants, \"oidcScopes\", {\r\n get: function () { return [this.openidScope, this.profileScope]; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Constants, \"interactionTypeRedirect\", {\r\n get: function () { return \"redirectInteraction\"; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Constants, \"interactionTypePopup\", {\r\n get: function () { return \"popupInteraction\"; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Constants, \"interactionTypeSilent\", {\r\n get: function () { return \"silentInteraction\"; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Constants, \"inProgress\", {\r\n get: function () { return \"inProgress\"; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Constants._popUpWidth = 483;\r\n Constants._popUpHeight = 600;\r\n return Constants;\r\n}());\r\nexport { Constants };\r\nexport var SESSION_STORAGE = \"sessionStorage\";\r\n/**\r\n * Keys in the hashParams\r\n */\r\nexport var ServerHashParamKeys;\r\n(function (ServerHashParamKeys) {\r\n ServerHashParamKeys[\"SCOPE\"] = \"scope\";\r\n ServerHashParamKeys[\"STATE\"] = \"state\";\r\n ServerHashParamKeys[\"ERROR\"] = \"error\";\r\n ServerHashParamKeys[\"ERROR_DESCRIPTION\"] = \"error_description\";\r\n ServerHashParamKeys[\"ACCESS_TOKEN\"] = \"access_token\";\r\n ServerHashParamKeys[\"ID_TOKEN\"] = \"id_token\";\r\n ServerHashParamKeys[\"EXPIRES_IN\"] = \"expires_in\";\r\n ServerHashParamKeys[\"SESSION_STATE\"] = \"session_state\";\r\n ServerHashParamKeys[\"CLIENT_INFO\"] = \"client_info\";\r\n})(ServerHashParamKeys || (ServerHashParamKeys = {}));\r\n/**\r\n * @hidden\r\n * @ignore\r\n * response_type from OpenIDConnect\r\n * References: https://openid.net/specs/oauth-v2-multiple-response-types-1_0.html & https://tools.ietf.org/html/rfc6749#section-4.2.1\r\n *\r\n */\r\nexport var ResponseTypes = {\r\n id_token: \"id_token\",\r\n token: \"token\",\r\n id_token_token: \"id_token token\"\r\n};\r\n/**\r\n * @hidden\r\n * CacheKeys for MSAL\r\n */\r\nexport var TemporaryCacheKeys;\r\n(function (TemporaryCacheKeys) {\r\n TemporaryCacheKeys[\"AUTHORITY\"] = \"authority\";\r\n TemporaryCacheKeys[\"ACQUIRE_TOKEN_ACCOUNT\"] = \"acquireTokenAccount\";\r\n TemporaryCacheKeys[\"SESSION_STATE\"] = \"session.state\";\r\n TemporaryCacheKeys[\"STATE_LOGIN\"] = \"state.login\";\r\n TemporaryCacheKeys[\"STATE_ACQ_TOKEN\"] = \"state.acquireToken\";\r\n TemporaryCacheKeys[\"STATE_RENEW\"] = \"state.renew\";\r\n TemporaryCacheKeys[\"NONCE_IDTOKEN\"] = \"nonce.idtoken\";\r\n TemporaryCacheKeys[\"LOGIN_REQUEST\"] = \"login.request\";\r\n TemporaryCacheKeys[\"RENEW_STATUS\"] = \"token.renew.status\";\r\n TemporaryCacheKeys[\"URL_HASH\"] = \"urlHash\";\r\n TemporaryCacheKeys[\"INTERACTION_STATUS\"] = \"interaction.status\";\r\n TemporaryCacheKeys[\"REDIRECT_REQUEST\"] = \"redirect_request\";\r\n})(TemporaryCacheKeys || (TemporaryCacheKeys = {}));\r\nexport var PersistentCacheKeys;\r\n(function (PersistentCacheKeys) {\r\n PersistentCacheKeys[\"IDTOKEN\"] = \"idtoken\";\r\n PersistentCacheKeys[\"CLIENT_INFO\"] = \"client.info\";\r\n})(PersistentCacheKeys || (PersistentCacheKeys = {}));\r\nexport var ErrorCacheKeys;\r\n(function (ErrorCacheKeys) {\r\n ErrorCacheKeys[\"LOGIN_ERROR\"] = \"login.error\";\r\n ErrorCacheKeys[\"ERROR\"] = \"error\";\r\n ErrorCacheKeys[\"ERROR_DESC\"] = \"error.description\";\r\n})(ErrorCacheKeys || (ErrorCacheKeys = {}));\r\nexport var DEFAULT_AUTHORITY = \"https://login.microsoftonline.com/common/\";\r\nexport var AAD_INSTANCE_DISCOVERY_ENDPOINT = DEFAULT_AUTHORITY + \"/discovery/instance?api-version=1.1&authorization_endpoint=\";\r\nexport var WELL_KNOWN_SUFFIX = \".well-known/openid-configuration\";\r\n/**\r\n * @hidden\r\n * SSO Types - generated to populate hints\r\n */\r\nexport var SSOTypes;\r\n(function (SSOTypes) {\r\n SSOTypes[\"ACCOUNT\"] = \"account\";\r\n SSOTypes[\"SID\"] = \"sid\";\r\n SSOTypes[\"LOGIN_HINT\"] = \"login_hint\";\r\n SSOTypes[\"ORGANIZATIONS\"] = \"organizations\";\r\n SSOTypes[\"CONSUMERS\"] = \"consumers\";\r\n SSOTypes[\"ID_TOKEN\"] = \"id_token\";\r\n SSOTypes[\"ACCOUNT_ID\"] = \"accountIdentifier\";\r\n SSOTypes[\"HOMEACCOUNT_ID\"] = \"homeAccountIdentifier\";\r\n})(SSOTypes || (SSOTypes = {}));\r\n/**\r\n * @hidden\r\n */\r\nexport var DisallowedEQParams = [\r\n SSOTypes.SID,\r\n SSOTypes.LOGIN_HINT\r\n];\r\nexport var NetworkRequestType = {\r\n GET: \"GET\",\r\n POST: \"POST\"\r\n};\r\n/**\r\n * we considered making this \"enum\" in the request instead of string, however it looks like the allowed list of\r\n * prompt values kept changing over past couple of years. There are some undocumented prompt values for some\r\n * internal partners too, hence the choice of generic \"string\" type instead of the \"enum\"\r\n * @hidden\r\n */\r\nexport var PromptState = {\r\n LOGIN: \"login\",\r\n SELECT_ACCOUNT: \"select_account\",\r\n CONSENT: \"consent\",\r\n NONE: \"none\"\r\n};\r\n/**\r\n * Frame name prefixes for the hidden iframe created in silent frames\r\n */\r\nexport var FramePrefix = {\r\n ID_TOKEN_FRAME: \"msalIdTokenFrame\",\r\n TOKEN_FRAME: \"msalRenewFrame\"\r\n};\r\n//# sourceMappingURL=Constants.js.map","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nimport { __awaiter, __generator } from \"tslib\";\r\nimport { ClientConfigurationErrorMessage, ClientConfigurationError } from \"../error/ClientConfigurationError\";\r\nimport { XhrClient } from \"../XHRClient\";\r\nimport { UrlUtils } from \"../utils/UrlUtils\";\r\nimport { TrustedAuthority } from \"./TrustedAuthority\";\r\nimport { NetworkRequestType, Constants, WELL_KNOWN_SUFFIX } from \"../utils/Constants\";\r\n/**\r\n * @hidden\r\n */\r\nexport var AuthorityType;\r\n(function (AuthorityType) {\r\n AuthorityType[AuthorityType[\"Default\"] = 0] = \"Default\";\r\n AuthorityType[AuthorityType[\"Adfs\"] = 1] = \"Adfs\";\r\n})(AuthorityType || (AuthorityType = {}));\r\n/**\r\n * @hidden\r\n */\r\nvar Authority = /** @class */ (function () {\r\n function Authority(authority, validateAuthority, authorityMetadata) {\r\n this.IsValidationEnabled = validateAuthority;\r\n this.CanonicalAuthority = authority;\r\n this.validateAsUri();\r\n this.tenantDiscoveryResponse = authorityMetadata;\r\n }\r\n Authority.isAdfs = function (authorityUrl) {\r\n var components = UrlUtils.GetUrlComponents(authorityUrl);\r\n var pathSegments = components.PathSegments;\r\n return (pathSegments.length && pathSegments[0].toLowerCase() === Constants.ADFS);\r\n };\r\n Object.defineProperty(Authority.prototype, \"AuthorityType\", {\r\n get: function () {\r\n return Authority.isAdfs(this.canonicalAuthority) ? AuthorityType.Adfs : AuthorityType.Default;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Authority.prototype, \"Tenant\", {\r\n get: function () {\r\n return this.CanonicalAuthorityUrlComponents.PathSegments[0];\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Authority.prototype, \"AuthorizationEndpoint\", {\r\n get: function () {\r\n this.validateResolved();\r\n return this.tenantDiscoveryResponse.AuthorizationEndpoint.replace(/{tenant}|{tenantid}/g, this.Tenant);\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Authority.prototype, \"EndSessionEndpoint\", {\r\n get: function () {\r\n this.validateResolved();\r\n return this.tenantDiscoveryResponse.EndSessionEndpoint.replace(/{tenant}|{tenantid}/g, this.Tenant);\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Authority.prototype, \"SelfSignedJwtAudience\", {\r\n get: function () {\r\n this.validateResolved();\r\n return this.tenantDiscoveryResponse.Issuer.replace(/{tenant}|{tenantid}/g, this.Tenant);\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Authority.prototype.validateResolved = function () {\r\n if (!this.hasCachedMetadata()) {\r\n throw \"Please call ResolveEndpointsAsync first\";\r\n }\r\n };\r\n Object.defineProperty(Authority.prototype, \"CanonicalAuthority\", {\r\n /**\r\n * A URL that is the authority set by the developer\r\n */\r\n get: function () {\r\n return this.canonicalAuthority;\r\n },\r\n set: function (url) {\r\n this.canonicalAuthority = UrlUtils.CanonicalizeUri(url);\r\n this.canonicalAuthorityUrlComponents = null;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Authority.prototype, \"CanonicalAuthorityUrlComponents\", {\r\n get: function () {\r\n if (!this.canonicalAuthorityUrlComponents) {\r\n this.canonicalAuthorityUrlComponents = UrlUtils.GetUrlComponents(this.CanonicalAuthority);\r\n }\r\n return this.canonicalAuthorityUrlComponents;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Authority.prototype, \"DefaultOpenIdConfigurationEndpoint\", {\r\n // http://openid.net/specs/openid-connect-discovery-1_0.html#ProviderMetadata\r\n get: function () {\r\n return (this.AuthorityType === AuthorityType.Adfs) ? \"\" + this.CanonicalAuthority + WELL_KNOWN_SUFFIX : this.CanonicalAuthority + \"v2.0/\" + WELL_KNOWN_SUFFIX;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n /**\r\n * Given a string, validate that it is of the form https://domain/path\r\n */\r\n Authority.prototype.validateAsUri = function () {\r\n var components;\r\n try {\r\n components = this.CanonicalAuthorityUrlComponents;\r\n }\r\n catch (e) {\r\n throw ClientConfigurationErrorMessage.invalidAuthorityType;\r\n }\r\n if (!components.Protocol || components.Protocol.toLowerCase() !== \"https:\") {\r\n throw ClientConfigurationErrorMessage.authorityUriInsecure;\r\n }\r\n if (!components.PathSegments || components.PathSegments.length < 1) {\r\n throw ClientConfigurationErrorMessage.authorityUriInvalidPath;\r\n }\r\n };\r\n /**\r\n * Calls the OIDC endpoint and returns the response\r\n */\r\n Authority.prototype.DiscoverEndpoints = function (openIdConfigurationEndpoint, telemetryManager, correlationId) {\r\n var client = new XhrClient();\r\n var httpMethod = NetworkRequestType.GET;\r\n var httpEvent = telemetryManager.createAndStartHttpEvent(correlationId, httpMethod, openIdConfigurationEndpoint, \"openIdConfigurationEndpoint\");\r\n return client.sendRequestAsync(openIdConfigurationEndpoint, httpMethod, /* enableCaching: */ true)\r\n .then(function (response) {\r\n httpEvent.httpResponseStatus = response.statusCode;\r\n telemetryManager.stopEvent(httpEvent);\r\n return {\r\n AuthorizationEndpoint: response.body[\"authorization_endpoint\"],\r\n EndSessionEndpoint: response.body[\"end_session_endpoint\"],\r\n Issuer: response.body[\"issuer\"]\r\n };\r\n })\r\n .catch(function (err) {\r\n httpEvent.serverErrorCode = err;\r\n telemetryManager.stopEvent(httpEvent);\r\n throw err;\r\n });\r\n };\r\n /**\r\n * Returns a promise.\r\n * Checks to see if the authority is in the cache\r\n * Discover endpoints via openid-configuration\r\n * If successful, caches the endpoint for later use in OIDC\r\n */\r\n Authority.prototype.resolveEndpointsAsync = function (telemetryManager, correlationId) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var host, openIdConfigurationEndpointResponse, _a;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n if (!this.IsValidationEnabled) return [3 /*break*/, 3];\r\n host = this.canonicalAuthorityUrlComponents.HostNameAndPort;\r\n if (!(TrustedAuthority.getTrustedHostList().length === 0)) return [3 /*break*/, 2];\r\n return [4 /*yield*/, TrustedAuthority.setTrustedAuthoritiesFromNetwork(this.canonicalAuthority, telemetryManager, correlationId)];\r\n case 1:\r\n _b.sent();\r\n _b.label = 2;\r\n case 2:\r\n if (!TrustedAuthority.IsInTrustedHostList(host)) {\r\n throw ClientConfigurationError.createUntrustedAuthorityError(host);\r\n }\r\n _b.label = 3;\r\n case 3:\r\n openIdConfigurationEndpointResponse = this.GetOpenIdConfigurationEndpoint();\r\n _a = this;\r\n return [4 /*yield*/, this.DiscoverEndpoints(openIdConfigurationEndpointResponse, telemetryManager, correlationId)];\r\n case 4:\r\n _a.tenantDiscoveryResponse = _b.sent();\r\n return [2 /*return*/, this.tenantDiscoveryResponse];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Checks if there is a cached tenant discovery response with required fields.\r\n */\r\n Authority.prototype.hasCachedMetadata = function () {\r\n return !!(this.tenantDiscoveryResponse &&\r\n this.tenantDiscoveryResponse.AuthorizationEndpoint &&\r\n this.tenantDiscoveryResponse.EndSessionEndpoint &&\r\n this.tenantDiscoveryResponse.Issuer);\r\n };\r\n /**\r\n * Returns a promise which resolves to the OIDC endpoint\r\n * Only responds with the endpoint\r\n */\r\n Authority.prototype.GetOpenIdConfigurationEndpoint = function () {\r\n return this.DefaultOpenIdConfigurationEndpoint;\r\n };\r\n return Authority;\r\n}());\r\nexport { Authority };\r\n//# sourceMappingURL=Authority.js.map","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nimport { __extends } from \"tslib\";\r\nexport var AuthErrorMessage = {\r\n unexpectedError: {\r\n code: \"unexpected_error\",\r\n desc: \"Unexpected error in authentication.\"\r\n },\r\n noWindowObjectError: {\r\n code: \"no_window_object\",\r\n desc: \"No window object available. Details:\"\r\n }\r\n};\r\n/**\r\n * General error class thrown by the MSAL.js library.\r\n */\r\nvar AuthError = /** @class */ (function (_super) {\r\n __extends(AuthError, _super);\r\n function AuthError(errorCode, errorMessage) {\r\n var _this = _super.call(this, errorMessage) || this;\r\n Object.setPrototypeOf(_this, AuthError.prototype);\r\n _this.errorCode = errorCode;\r\n _this.errorMessage = errorMessage;\r\n _this.name = \"AuthError\";\r\n return _this;\r\n }\r\n AuthError.createUnexpectedError = function (errDesc) {\r\n return new AuthError(AuthErrorMessage.unexpectedError.code, AuthErrorMessage.unexpectedError.desc + \": \" + errDesc);\r\n };\r\n AuthError.createNoWindowObjectError = function (errDesc) {\r\n return new AuthError(AuthErrorMessage.noWindowObjectError.code, AuthErrorMessage.noWindowObjectError.desc + \" \" + errDesc);\r\n };\r\n return AuthError;\r\n}(Error));\r\nexport { AuthError };\r\n//# sourceMappingURL=AuthError.js.map","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * @hidden\r\n */\r\nvar StringUtils = /** @class */ (function () {\r\n function StringUtils() {\r\n }\r\n /**\r\n * Check if a string is empty\r\n *\r\n * @param str\r\n */\r\n StringUtils.isEmpty = function (str) {\r\n return (typeof str === \"undefined\" || !str || 0 === str.length);\r\n };\r\n /**\r\n * Check if a string's value is a valid JSON object\r\n *\r\n * @param str\r\n */\r\n StringUtils.validateAndParseJsonCacheKey = function (str) {\r\n try {\r\n var parsedKey = JSON.parse(str);\r\n /**\r\n * There are edge cases in which JSON.parse will successfully parse a non-valid JSON object\r\n * (e.g. JSON.parse will parse an escaped string into an unescaped string), so adding a type check\r\n * of the parsed value is necessary in order to be certain that the string represents a valid JSON object.\r\n *\r\n */\r\n return (parsedKey && typeof parsedKey === \"object\") ? parsedKey : null;\r\n }\r\n catch (error) {\r\n return null;\r\n }\r\n };\r\n return StringUtils;\r\n}());\r\nexport { StringUtils };\r\n//# sourceMappingURL=StringUtils.js.map","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nimport { __extends } from \"tslib\";\r\nimport { AuthError } from \"./AuthError\";\r\nimport { StringUtils } from \"../utils/StringUtils\";\r\nexport var ClientAuthErrorMessage = {\r\n endpointResolutionError: {\r\n code: \"endpoints_resolution_error\",\r\n desc: \"Error: could not resolve endpoints. Please check network and try again.\"\r\n },\r\n popUpWindowError: {\r\n code: \"popup_window_error\",\r\n desc: \"Error opening popup window. This can happen if you are using IE or if popups are blocked in the browser.\"\r\n },\r\n tokenRenewalError: {\r\n code: \"token_renewal_error\",\r\n desc: \"Token renewal operation failed due to timeout.\"\r\n },\r\n invalidIdToken: {\r\n code: \"invalid_id_token\",\r\n desc: \"Invalid ID token format.\"\r\n },\r\n invalidStateError: {\r\n code: \"invalid_state_error\",\r\n desc: \"Invalid state.\"\r\n },\r\n nonceMismatchError: {\r\n code: \"nonce_mismatch_error\",\r\n desc: \"Nonce is not matching, Nonce received: \"\r\n },\r\n loginProgressError: {\r\n code: \"login_progress_error\",\r\n desc: \"Login_In_Progress: Error during login call - login is already in progress.\"\r\n },\r\n acquireTokenProgressError: {\r\n code: \"acquiretoken_progress_error\",\r\n desc: \"AcquireToken_In_Progress: Error during login call - login is already in progress.\"\r\n },\r\n userCancelledError: {\r\n code: \"user_cancelled\",\r\n desc: \"User cancelled the flow.\"\r\n },\r\n callbackError: {\r\n code: \"callback_error\",\r\n desc: \"Error occurred in token received callback function.\"\r\n },\r\n userLoginRequiredError: {\r\n code: \"user_login_error\",\r\n desc: \"User login is required. For silent calls, request must contain either sid or login_hint\"\r\n },\r\n userDoesNotExistError: {\r\n code: \"user_non_existent\",\r\n desc: \"User object does not exist. Please call a login API.\"\r\n },\r\n clientInfoDecodingError: {\r\n code: \"client_info_decoding_error\",\r\n desc: \"The client info could not be parsed/decoded correctly. Please review the trace to determine the root cause.\"\r\n },\r\n clientInfoNotPopulatedError: {\r\n code: \"client_info_not_populated_error\",\r\n desc: \"The service did not populate client_info in the response, Please verify with the service team\"\r\n },\r\n nullOrEmptyIdToken: {\r\n code: \"null_or_empty_id_token\",\r\n desc: \"The idToken is null or empty. Please review the trace to determine the root cause.\"\r\n },\r\n idTokenNotParsed: {\r\n code: \"id_token_parsing_error\",\r\n desc: \"ID token cannot be parsed. Please review stack trace to determine root cause.\"\r\n },\r\n tokenEncodingError: {\r\n code: \"token_encoding_error\",\r\n desc: \"The token to be decoded is not encoded correctly.\"\r\n },\r\n invalidInteractionType: {\r\n code: \"invalid_interaction_type\",\r\n desc: \"The interaction type passed to the handler was incorrect or unknown\"\r\n },\r\n cacheParseError: {\r\n code: \"cannot_parse_cache\",\r\n desc: \"The cached token key is not a valid JSON and cannot be parsed\"\r\n },\r\n blockTokenRequestsInHiddenIframe: {\r\n code: \"block_token_requests\",\r\n desc: \"Token calls are blocked in hidden iframes\"\r\n }\r\n};\r\n/**\r\n * Error thrown when there is an error in the client code running on the browser.\r\n */\r\nvar ClientAuthError = /** @class */ (function (_super) {\r\n __extends(ClientAuthError, _super);\r\n function ClientAuthError(errorCode, errorMessage) {\r\n var _this = _super.call(this, errorCode, errorMessage) || this;\r\n _this.name = \"ClientAuthError\";\r\n Object.setPrototypeOf(_this, ClientAuthError.prototype);\r\n return _this;\r\n }\r\n ClientAuthError.createEndpointResolutionError = function (errDetail) {\r\n var errorMessage = ClientAuthErrorMessage.endpointResolutionError.desc;\r\n if (errDetail && !StringUtils.isEmpty(errDetail)) {\r\n errorMessage += \" Details: \" + errDetail;\r\n }\r\n return new ClientAuthError(ClientAuthErrorMessage.endpointResolutionError.code, errorMessage);\r\n };\r\n ClientAuthError.createPopupWindowError = function (errDetail) {\r\n var errorMessage = ClientAuthErrorMessage.popUpWindowError.desc;\r\n if (errDetail && !StringUtils.isEmpty(errDetail)) {\r\n errorMessage += \" Details: \" + errDetail;\r\n }\r\n return new ClientAuthError(ClientAuthErrorMessage.popUpWindowError.code, errorMessage);\r\n };\r\n ClientAuthError.createTokenRenewalTimeoutError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.tokenRenewalError.code, ClientAuthErrorMessage.tokenRenewalError.desc);\r\n };\r\n ClientAuthError.createInvalidIdTokenError = function (idToken) {\r\n return new ClientAuthError(ClientAuthErrorMessage.invalidIdToken.code, ClientAuthErrorMessage.invalidIdToken.desc + \" Given token: \" + idToken);\r\n };\r\n // TODO: Is this not a security flaw to send the user the state expected??\r\n ClientAuthError.createInvalidStateError = function (invalidState, actualState) {\r\n return new ClientAuthError(ClientAuthErrorMessage.invalidStateError.code, ClientAuthErrorMessage.invalidStateError.desc + \" \" + invalidState + \", state expected : \" + actualState + \".\");\r\n };\r\n // TODO: Is this not a security flaw to send the user the Nonce expected??\r\n ClientAuthError.createNonceMismatchError = function (invalidNonce, actualNonce) {\r\n return new ClientAuthError(ClientAuthErrorMessage.nonceMismatchError.code, ClientAuthErrorMessage.nonceMismatchError.desc + \" \" + invalidNonce + \", nonce expected : \" + actualNonce + \".\");\r\n };\r\n ClientAuthError.createLoginInProgressError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.loginProgressError.code, ClientAuthErrorMessage.loginProgressError.desc);\r\n };\r\n ClientAuthError.createAcquireTokenInProgressError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.acquireTokenProgressError.code, ClientAuthErrorMessage.acquireTokenProgressError.desc);\r\n };\r\n ClientAuthError.createUserCancelledError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.userCancelledError.code, ClientAuthErrorMessage.userCancelledError.desc);\r\n };\r\n ClientAuthError.createErrorInCallbackFunction = function (errorDesc) {\r\n return new ClientAuthError(ClientAuthErrorMessage.callbackError.code, ClientAuthErrorMessage.callbackError.desc + \" \" + errorDesc + \".\");\r\n };\r\n ClientAuthError.createUserLoginRequiredError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.userLoginRequiredError.code, ClientAuthErrorMessage.userLoginRequiredError.desc);\r\n };\r\n ClientAuthError.createUserDoesNotExistError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.userDoesNotExistError.code, ClientAuthErrorMessage.userDoesNotExistError.desc);\r\n };\r\n ClientAuthError.createClientInfoDecodingError = function (caughtError) {\r\n return new ClientAuthError(ClientAuthErrorMessage.clientInfoDecodingError.code, ClientAuthErrorMessage.clientInfoDecodingError.desc + \" Failed with error: \" + caughtError);\r\n };\r\n ClientAuthError.createClientInfoNotPopulatedError = function (caughtError) {\r\n return new ClientAuthError(ClientAuthErrorMessage.clientInfoNotPopulatedError.code, ClientAuthErrorMessage.clientInfoNotPopulatedError.desc + \" Failed with error: \" + caughtError);\r\n };\r\n ClientAuthError.createIdTokenNullOrEmptyError = function (invalidRawTokenString) {\r\n return new ClientAuthError(ClientAuthErrorMessage.nullOrEmptyIdToken.code, ClientAuthErrorMessage.nullOrEmptyIdToken.desc + \" Raw ID Token Value: \" + invalidRawTokenString);\r\n };\r\n ClientAuthError.createIdTokenParsingError = function (caughtParsingError) {\r\n return new ClientAuthError(ClientAuthErrorMessage.idTokenNotParsed.code, ClientAuthErrorMessage.idTokenNotParsed.desc + \" Failed with error: \" + caughtParsingError);\r\n };\r\n ClientAuthError.createTokenEncodingError = function (incorrectlyEncodedToken) {\r\n return new ClientAuthError(ClientAuthErrorMessage.tokenEncodingError.code, ClientAuthErrorMessage.tokenEncodingError.desc + \" Attempted to decode: \" + incorrectlyEncodedToken);\r\n };\r\n ClientAuthError.createInvalidInteractionTypeError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.invalidInteractionType.code, ClientAuthErrorMessage.invalidInteractionType.desc);\r\n };\r\n ClientAuthError.createCacheParseError = function (key) {\r\n var errorMessage = \"invalid key: \" + key + \", \" + ClientAuthErrorMessage.cacheParseError.desc;\r\n return new ClientAuthError(ClientAuthErrorMessage.cacheParseError.code, errorMessage);\r\n };\r\n ClientAuthError.createBlockTokenRequestsInHiddenIframeError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.blockTokenRequestsInHiddenIframe.code, ClientAuthErrorMessage.blockTokenRequestsInHiddenIframe.desc);\r\n };\r\n return ClientAuthError;\r\n}(AuthError));\r\nexport { ClientAuthError };\r\n//# sourceMappingURL=ClientAuthError.js.map","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nimport { __extends } from \"tslib\";\r\nimport { ClientAuthError } from \"./ClientAuthError\";\r\nexport var ClientConfigurationErrorMessage = {\r\n configurationNotSet: {\r\n code: \"no_config_set\",\r\n desc: \"Configuration has not been set. Please call the UserAgentApplication constructor with a valid Configuration object.\"\r\n },\r\n storageNotSupported: {\r\n code: \"storage_not_supported\",\r\n desc: \"The value for the cacheLocation is not supported.\"\r\n },\r\n noRedirectCallbacksSet: {\r\n code: \"no_redirect_callbacks\",\r\n desc: \"No redirect callbacks have been set. Please call handleRedirectCallback() with the appropriate function arguments before continuing. \" +\r\n \"More information is available here: https://github.com/AzureAD/microsoft-authentication-library-for-js/wiki/MSAL-basics.\"\r\n },\r\n invalidCallbackObject: {\r\n code: \"invalid_callback_object\",\r\n desc: \"The object passed for the callback was invalid. \" +\r\n \"More information is available here: https://github.com/AzureAD/microsoft-authentication-library-for-js/wiki/MSAL-basics.\"\r\n },\r\n scopesRequired: {\r\n code: \"scopes_required\",\r\n desc: \"Scopes are required to obtain an access token.\"\r\n },\r\n emptyScopes: {\r\n code: \"empty_input_scopes_error\",\r\n desc: \"Scopes cannot be passed as empty array.\"\r\n },\r\n nonArrayScopes: {\r\n code: \"nonarray_input_scopes_error\",\r\n desc: \"Scopes cannot be passed as non-array.\"\r\n },\r\n invalidPrompt: {\r\n code: \"invalid_prompt_value\",\r\n desc: \"Supported prompt values are 'login', 'select_account', 'consent' and 'none'\",\r\n },\r\n invalidAuthorityType: {\r\n code: \"invalid_authority_type\",\r\n desc: \"The given authority is not a valid type of authority supported by MSAL. Please see here for valid authorities: <insert URL here>.\"\r\n },\r\n authorityUriInsecure: {\r\n code: \"authority_uri_insecure\",\r\n desc: \"Authority URIs must use https.\"\r\n },\r\n authorityUriInvalidPath: {\r\n code: \"authority_uri_invalid_path\",\r\n desc: \"Given authority URI is invalid.\"\r\n },\r\n unsupportedAuthorityValidation: {\r\n code: \"unsupported_authority_validation\",\r\n desc: \"The authority validation is not supported for this authority type.\"\r\n },\r\n untrustedAuthority: {\r\n code: \"untrusted_authority\",\r\n desc: \"The provided authority is not a trusted authority. Please include this authority in the knownAuthorities config parameter or set validateAuthority=false.\"\r\n },\r\n b2cAuthorityUriInvalidPath: {\r\n code: \"b2c_authority_uri_invalid_path\",\r\n desc: \"The given URI for the B2C authority is invalid.\"\r\n },\r\n b2cKnownAuthoritiesNotSet: {\r\n code: \"b2c_known_authorities_not_set\",\r\n desc: \"Must set known authorities when validateAuthority is set to True and using B2C\"\r\n },\r\n claimsRequestParsingError: {\r\n code: \"claims_request_parsing_error\",\r\n desc: \"Could not parse the given claims request object.\"\r\n },\r\n emptyRequestError: {\r\n code: \"empty_request_error\",\r\n desc: \"Request object is required.\"\r\n },\r\n invalidCorrelationIdError: {\r\n code: \"invalid_guid_sent_as_correlationId\",\r\n desc: \"Please set the correlationId as a valid guid\"\r\n },\r\n telemetryConfigError: {\r\n code: \"telemetry_config_error\",\r\n desc: \"Telemetry config is not configured with required values\"\r\n },\r\n ssoSilentError: {\r\n code: \"sso_silent_error\",\r\n desc: \"request must contain either sid or login_hint\"\r\n },\r\n invalidAuthorityMetadataError: {\r\n code: \"authority_metadata_error\",\r\n desc: \"Invalid authorityMetadata. Must be a JSON object containing authorization_endpoint, end_session_endpoint, and issuer fields.\"\r\n }\r\n};\r\n/**\r\n * Error thrown when there is an error in configuration of the .js library.\r\n */\r\nvar ClientConfigurationError = /** @class */ (function (_super) {\r\n __extends(ClientConfigurationError, _super);\r\n function ClientConfigurationError(errorCode, errorMessage) {\r\n var _this = _super.call(this, errorCode, errorMessage) || this;\r\n _this.name = \"ClientConfigurationError\";\r\n Object.setPrototypeOf(_this, ClientConfigurationError.prototype);\r\n return _this;\r\n }\r\n ClientConfigurationError.createNoSetConfigurationError = function () {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.configurationNotSet.code, \"\" + ClientConfigurationErrorMessage.configurationNotSet.desc);\r\n };\r\n ClientConfigurationError.createStorageNotSupportedError = function (givenCacheLocation) {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.storageNotSupported.code, ClientConfigurationErrorMessage.storageNotSupported.desc + \" Given location: \" + givenCacheLocation);\r\n };\r\n ClientConfigurationError.createRedirectCallbacksNotSetError = function () {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.noRedirectCallbacksSet.code, ClientConfigurationErrorMessage.noRedirectCallbacksSet.desc);\r\n };\r\n ClientConfigurationError.createInvalidCallbackObjectError = function (callbackObject) {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.invalidCallbackObject.code, ClientConfigurationErrorMessage.invalidCallbackObject.desc + \" Given value for callback function: \" + callbackObject);\r\n };\r\n ClientConfigurationError.createEmptyScopesArrayError = function (scopesValue) {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.emptyScopes.code, ClientConfigurationErrorMessage.emptyScopes.desc + \" Given value: \" + scopesValue + \".\");\r\n };\r\n ClientConfigurationError.createScopesNonArrayError = function (scopesValue) {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.nonArrayScopes.code, ClientConfigurationErrorMessage.nonArrayScopes.desc + \" Given value: \" + scopesValue + \".\");\r\n };\r\n ClientConfigurationError.createScopesRequiredError = function (scopesValue) {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.scopesRequired.code, ClientConfigurationErrorMessage.scopesRequired.desc + \" Given value: \" + scopesValue);\r\n };\r\n ClientConfigurationError.createInvalidPromptError = function (promptValue) {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.invalidPrompt.code, ClientConfigurationErrorMessage.invalidPrompt.desc + \" Given value: \" + promptValue);\r\n };\r\n ClientConfigurationError.createClaimsRequestParsingError = function (claimsRequestParseError) {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.claimsRequestParsingError.code, ClientConfigurationErrorMessage.claimsRequestParsingError.desc + \" Given value: \" + claimsRequestParseError);\r\n };\r\n ClientConfigurationError.createEmptyRequestError = function () {\r\n var _a = ClientConfigurationErrorMessage.emptyRequestError, code = _a.code, desc = _a.desc;\r\n return new ClientConfigurationError(code, desc);\r\n };\r\n ClientConfigurationError.createInvalidCorrelationIdError = function () {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.invalidCorrelationIdError.code, ClientConfigurationErrorMessage.invalidCorrelationIdError.desc);\r\n };\r\n ClientConfigurationError.createKnownAuthoritiesNotSetError = function () {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.b2cKnownAuthoritiesNotSet.code, ClientConfigurationErrorMessage.b2cKnownAuthoritiesNotSet.desc);\r\n };\r\n ClientConfigurationError.createInvalidAuthorityTypeError = function () {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.invalidAuthorityType.code, ClientConfigurationErrorMessage.invalidAuthorityType.desc);\r\n };\r\n ClientConfigurationError.createUntrustedAuthorityError = function (host) {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.untrustedAuthority.code, ClientConfigurationErrorMessage.untrustedAuthority.desc + \" Provided Authority: \" + host);\r\n };\r\n ClientConfigurationError.createTelemetryConfigError = function (config) {\r\n var _a = ClientConfigurationErrorMessage.telemetryConfigError, code = _a.code, desc = _a.desc;\r\n var requiredKeys = {\r\n applicationName: \"string\",\r\n applicationVersion: \"string\",\r\n telemetryEmitter: \"function\"\r\n };\r\n var missingKeys = Object.keys(requiredKeys)\r\n .reduce(function (keys, key) {\r\n return config[key] ? keys : keys.concat([key + \" (\" + requiredKeys[key] + \")\"]);\r\n }, []);\r\n return new ClientConfigurationError(code, desc + \" mising values: \" + missingKeys.join(\",\"));\r\n };\r\n ClientConfigurationError.createSsoSilentError = function () {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.ssoSilentError.code, ClientConfigurationErrorMessage.ssoSilentError.desc);\r\n };\r\n ClientConfigurationError.createInvalidAuthorityMetadataError = function () {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.invalidAuthorityMetadataError.code, ClientConfigurationErrorMessage.invalidAuthorityMetadataError.desc);\r\n };\r\n return ClientConfigurationError;\r\n}(ClientAuthError));\r\nexport { ClientConfigurationError };\r\n//# sourceMappingURL=ClientConfigurationError.js.map","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nimport { __spreadArrays } from \"tslib\";\r\nimport { ClientConfigurationError } from \"./error/ClientConfigurationError\";\r\nimport { Constants } from \"./utils/Constants\";\r\nvar ScopeSet = /** @class */ (function () {\r\n function ScopeSet() {\r\n }\r\n /**\r\n * Check if there are dup scopes in a given request\r\n *\r\n * @param cachedScopes\r\n * @param scopes\r\n */\r\n // TODO: Rename this, intersecting scopes isn't a great name for duplicate checker\r\n ScopeSet.isIntersectingScopes = function (cachedScopes, scopes) {\r\n var convertedCachedScopes = this.trimAndConvertArrayToLowerCase(__spreadArrays(cachedScopes));\r\n var requestScopes = this.trimAndConvertArrayToLowerCase(__spreadArrays(scopes));\r\n for (var i = 0; i < requestScopes.length; i++) {\r\n if (convertedCachedScopes.indexOf(requestScopes[i].toLowerCase()) > -1) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n };\r\n /**\r\n * Check if a given scope is present in the request\r\n *\r\n * @param cachedScopes\r\n * @param scopes\r\n */\r\n ScopeSet.containsScope = function (cachedScopes, scopes) {\r\n var convertedCachedScopes = this.trimAndConvertArrayToLowerCase(__spreadArrays(cachedScopes));\r\n var requestScopes = this.trimAndConvertArrayToLowerCase(__spreadArrays(scopes));\r\n return requestScopes.every(function (value) { return convertedCachedScopes.indexOf(value.toString().toLowerCase()) >= 0; });\r\n };\r\n /**\r\n * Trims and converts string to lower case\r\n *\r\n * @param scopes\r\n */\r\n // TODO: Rename this, too generic name for a function that only deals with scopes\r\n ScopeSet.trimAndConvertToLowerCase = function (scope) {\r\n return scope.trim().toLowerCase();\r\n };\r\n /**\r\n * Performs trimAndConvertToLowerCase on string array\r\n * @param scopes\r\n */\r\n ScopeSet.trimAndConvertArrayToLowerCase = function (scopes) {\r\n var _this = this;\r\n return scopes.map(function (scope) { return _this.trimAndConvertToLowerCase(scope); });\r\n };\r\n /**\r\n * Trims each scope in scopes array\r\n * @param scopes\r\n */\r\n ScopeSet.trimScopes = function (scopes) {\r\n return scopes.map(function (scope) { return scope.trim(); });\r\n };\r\n /**\r\n * Remove one element from a scope array\r\n *\r\n * @param scopes\r\n * @param scope\r\n */\r\n // TODO: Rename this, too generic name for a function that only deals with scopes\r\n ScopeSet.removeElement = function (scopes, scope) {\r\n var scopeVal = this.trimAndConvertToLowerCase(scope);\r\n return scopes.filter(function (value) { return value !== scopeVal; });\r\n };\r\n /**\r\n * Parse the scopes into a formatted scopeList\r\n * @param scopes\r\n */\r\n ScopeSet.parseScope = function (scopes) {\r\n var scopeList = \"\";\r\n if (scopes) {\r\n for (var i = 0; i < scopes.length; ++i) {\r\n scopeList += (i !== scopes.length - 1) ? scopes[i] + \" \" : scopes[i];\r\n }\r\n }\r\n return scopeList;\r\n };\r\n /**\r\n * @hidden\r\n *\r\n * Used to validate the scopes input parameter requested by the developer.\r\n * @param {Array<string>} scopes - Developer requested permissions. Not all scopes are guaranteed to be included in the access token returned.\r\n * @param {boolean} scopesRequired - Boolean indicating whether the scopes array is required or not\r\n * @ignore\r\n */\r\n ScopeSet.validateInputScope = function (scopes, scopesRequired) {\r\n if (!scopes) {\r\n if (scopesRequired) {\r\n throw ClientConfigurationError.createScopesRequiredError(scopes);\r\n }\r\n else {\r\n return;\r\n }\r\n }\r\n // Check that scopes is an array object (also throws error if scopes == null)\r\n if (!Array.isArray(scopes)) {\r\n throw ClientConfigurationError.createScopesNonArrayError(scopes);\r\n }\r\n // Check that scopes is not an empty array\r\n if (scopes.length < 1 && scopesRequired) {\r\n throw ClientConfigurationError.createEmptyScopesArrayError(scopes.toString());\r\n }\r\n };\r\n /**\r\n * @hidden\r\n *\r\n * Extracts scope value from the state sent with the authentication request.\r\n * @param {string} state\r\n * @returns {string} scope.\r\n * @ignore\r\n */\r\n ScopeSet.getScopeFromState = function (state) {\r\n if (state) {\r\n var splitIndex = state.indexOf(Constants.resourceDelimiter);\r\n if (splitIndex > -1 && splitIndex + 1 < state.length) {\r\n return state.substring(splitIndex + 1);\r\n }\r\n }\r\n return \"\";\r\n };\r\n /**\r\n * @ignore\r\n * Appends extraScopesToConsent if passed\r\n * @param {@link AuthenticationParameters}\r\n */\r\n ScopeSet.appendScopes = function (reqScopes, reqExtraScopesToConsent) {\r\n if (reqScopes) {\r\n var convertedExtraScopes = reqExtraScopesToConsent ? this.trimAndConvertArrayToLowerCase(__spreadArrays(reqExtraScopesToConsent)) : null;\r\n var convertedReqScopes = this.trimAndConvertArrayToLowerCase(__spreadArrays(reqScopes));\r\n return convertedExtraScopes ? __spreadArrays(convertedReqScopes, convertedExtraScopes) : convertedReqScopes;\r\n }\r\n return null;\r\n };\r\n // #endregion\r\n /**\r\n * @ignore\r\n * Returns true if the scopes array only contains openid and/or profile\r\n */\r\n ScopeSet.onlyContainsOidcScopes = function (scopes) {\r\n var scopesCount = scopes.length;\r\n var oidcScopesFound = 0;\r\n if (scopes.indexOf(Constants.openidScope) > -1) {\r\n oidcScopesFound += 1;\r\n }\r\n if (scopes.indexOf(Constants.profileScope) > -1) {\r\n oidcScopesFound += 1;\r\n }\r\n return (scopesCount > 0 && scopesCount === oidcScopesFound);\r\n };\r\n /**\r\n * @ignore\r\n * Returns true if the scopes array only contains openid and/or profile\r\n */\r\n ScopeSet.containsAnyOidcScopes = function (scopes) {\r\n var containsOpenIdScope = scopes.indexOf(Constants.openidScope) > -1;\r\n var containsProfileScope = scopes.indexOf(Constants.profileScope) > -1;\r\n return (containsOpenIdScope || containsProfileScope);\r\n };\r\n /**\r\n * @ignore\r\n * Returns true if the clientId is the only scope in the array\r\n */\r\n ScopeSet.onlyContainsClientId = function (scopes, clientId) {\r\n // Double negation to force false value returned in case scopes is null\r\n return !!scopes && (scopes.indexOf(clientId) > -1 && scopes.length === 1);\r\n };\r\n /**\r\n * @ignore\r\n * Adds missing OIDC scopes to scopes array without duplication. Since STS requires OIDC scopes for\r\n * all implicit flow requests, 'openid' and 'profile' should always be included in the final request\r\n */\r\n ScopeSet.appendDefaultScopes = function (scopes) {\r\n var extendedScopes = scopes;\r\n if (extendedScopes.indexOf(Constants.openidScope) === -1) {\r\n extendedScopes.push(Constants.openidScope);\r\n }\r\n if (extendedScopes.indexOf(Constants.profileScope) === -1) {\r\n extendedScopes.push(Constants.profileScope);\r\n }\r\n return extendedScopes;\r\n };\r\n /**\r\n * @ignore\r\n * Removes present OIDC scopes from scopes array.\r\n */\r\n ScopeSet.removeDefaultScopes = function (scopes) {\r\n return scopes.filter(function (scope) {\r\n return (scope !== Constants.openidScope && scope !== Constants.profileScope);\r\n });\r\n };\r\n /**\r\n * @ignore\r\n * Removes clientId from scopes array if included as only scope. If it's not the only scope, it is treated as a resource scope.\r\n * @param scopes Array<string>: Pre-normalized scopes array\r\n * @param clientId string: The application's clientId that is searched for in the scopes array\r\n */\r\n ScopeSet.translateClientIdIfSingleScope = function (scopes, clientId) {\r\n return this.onlyContainsClientId(scopes, clientId) ? Constants.oidcScopes : scopes;\r\n };\r\n return ScopeSet;\r\n}());\r\nexport { ScopeSet };\r\n//# sourceMappingURL=ScopeSet.js.map","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nimport { Constants, SSOTypes, ServerHashParamKeys } from \"./Constants\";\r\nimport { ScopeSet } from \"../ScopeSet\";\r\nimport { StringUtils } from \"./StringUtils\";\r\nimport { CryptoUtils } from \"./CryptoUtils\";\r\n/**\r\n * @hidden\r\n */\r\nvar UrlUtils = /** @class */ (function () {\r\n function UrlUtils() {\r\n }\r\n /**\r\n * generates the URL with QueryString Parameters\r\n * @param scopes\r\n */\r\n UrlUtils.createNavigateUrl = function (serverRequestParams) {\r\n var str = this.createNavigationUrlString(serverRequestParams);\r\n var authEndpoint = serverRequestParams.authorityInstance.AuthorizationEndpoint;\r\n // if the endpoint already has queryparams, lets add to it, otherwise add the first one\r\n if (authEndpoint.indexOf(\"?\") < 0) {\r\n authEndpoint += \"?\";\r\n }\r\n else {\r\n authEndpoint += \"&\";\r\n }\r\n var requestUrl = \"\" + authEndpoint + str.join(\"&\");\r\n return requestUrl;\r\n };\r\n /**\r\n * Generate the array of all QueryStringParams to be sent to the server\r\n * @param scopes\r\n */\r\n UrlUtils.createNavigationUrlString = function (serverRequestParams) {\r\n var scopes = ScopeSet.appendDefaultScopes(serverRequestParams.scopes);\r\n var str = [];\r\n str.push(\"response_type=\" + serverRequestParams.responseType);\r\n str.push(\"scope=\" + encodeURIComponent(ScopeSet.parseScope(scopes)));\r\n str.push(\"client_id=\" + encodeURIComponent(serverRequestParams.clientId));\r\n str.push(\"redirect_uri=\" + encodeURIComponent(serverRequestParams.redirectUri));\r\n str.push(\"state=\" + encodeURIComponent(serverRequestParams.state));\r\n str.push(\"nonce=\" + encodeURIComponent(serverRequestParams.nonce));\r\n str.push(\"client_info=1\");\r\n str.push(\"x-client-SKU=\" + serverRequestParams.xClientSku);\r\n str.push(\"x-client-Ver=\" + serverRequestParams.xClientVer);\r\n if (serverRequestParams.promptValue) {\r\n str.push(\"prompt=\" + encodeURIComponent(serverRequestParams.promptValue));\r\n }\r\n if (serverRequestParams.claimsValue) {\r\n str.push(\"claims=\" + encodeURIComponent(serverRequestParams.claimsValue));\r\n }\r\n if (serverRequestParams.queryParameters) {\r\n str.push(serverRequestParams.queryParameters);\r\n }\r\n if (serverRequestParams.extraQueryParameters) {\r\n str.push(serverRequestParams.extraQueryParameters);\r\n }\r\n str.push(\"client-request-id=\" + encodeURIComponent(serverRequestParams.correlationId));\r\n return str;\r\n };\r\n /**\r\n * Returns current window URL as redirect uri\r\n */\r\n UrlUtils.getCurrentUrl = function () {\r\n return window.location.href.split(\"?\")[0].split(\"#\")[0];\r\n };\r\n /**\r\n * Returns given URL with query string removed\r\n */\r\n UrlUtils.removeHashFromUrl = function (url) {\r\n return url.split(\"#\")[0];\r\n };\r\n /**\r\n * Given a url like https://a:b/common/d?e=f#g, and a tenantId, returns https://a:b/tenantId/d\r\n * @param href The url\r\n * @param tenantId The tenant id to replace\r\n */\r\n UrlUtils.replaceTenantPath = function (url, tenantId) {\r\n var lowerCaseUrl = url.toLowerCase();\r\n var urlObject = this.GetUrlComponents(lowerCaseUrl);\r\n var pathArray = urlObject.PathSegments;\r\n if (tenantId && (pathArray.length !== 0 && (pathArray[0] === Constants.common || pathArray[0] === SSOTypes.ORGANIZATIONS || pathArray[0] === SSOTypes.CONSUMERS))) {\r\n pathArray[0] = tenantId;\r\n }\r\n return this.constructAuthorityUriFromObject(urlObject, pathArray);\r\n };\r\n UrlUtils.constructAuthorityUriFromObject = function (urlObject, pathArray) {\r\n return this.CanonicalizeUri(urlObject.Protocol + \"//\" + urlObject.HostNameAndPort + \"/\" + pathArray.join(\"/\"));\r\n };\r\n /**\r\n * Checks if an authority is common (ex. https://a:b/common/)\r\n * @param url The url\r\n * @returns true if authority is common and false otherwise\r\n */\r\n UrlUtils.isCommonAuthority = function (url) {\r\n var authority = this.CanonicalizeUri(url);\r\n var pathArray = this.GetUrlComponents(authority).PathSegments;\r\n return (pathArray.length !== 0 && pathArray[0] === Constants.common);\r\n };\r\n /**\r\n * Checks if an authority is for organizations (ex. https://a:b/organizations/)\r\n * @param url The url\r\n * @returns true if authority is for and false otherwise\r\n */\r\n UrlUtils.isOrganizationsAuthority = function (url) {\r\n var authority = this.CanonicalizeUri(url);\r\n var pathArray = this.GetUrlComponents(authority).PathSegments;\r\n return (pathArray.length !== 0 && pathArray[0] === SSOTypes.ORGANIZATIONS);\r\n };\r\n /**\r\n * Checks if an authority is for consumers (ex. https://a:b/consumers/)\r\n * @param url The url\r\n * @returns true if authority is for and false otherwise\r\n */\r\n UrlUtils.isConsumersAuthority = function (url) {\r\n var authority = this.CanonicalizeUri(url);\r\n var pathArray = this.GetUrlComponents(authority).PathSegments;\r\n return (pathArray.length !== 0 && pathArray[0] === SSOTypes.CONSUMERS);\r\n };\r\n /**\r\n * Parses out the components from a url string.\r\n * @returns An object with the various components. Please cache this value insted of calling this multiple times on the same url.\r\n */\r\n UrlUtils.GetUrlComponents = function (url) {\r\n if (!url) {\r\n throw \"Url required\";\r\n }\r\n // https://gist.github.com/curtisz/11139b2cfcaef4a261e0\r\n var regEx = RegExp(\"^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\\\?([^#]*))?(#(.*))?\");\r\n var match = url.match(regEx);\r\n if (!match || match.length < 6) {\r\n throw \"Valid url required\";\r\n }\r\n var urlComponents = {\r\n Protocol: match[1],\r\n HostNameAndPort: match[4],\r\n AbsolutePath: match[5]\r\n };\r\n var pathSegments = urlComponents.AbsolutePath.split(\"/\");\r\n pathSegments = pathSegments.filter(function (val) { return val && val.length > 0; }); // remove empty elements\r\n urlComponents.PathSegments = pathSegments;\r\n if (match[6]) {\r\n urlComponents.Search = match[6];\r\n }\r\n if (match[8]) {\r\n urlComponents.Hash = match[8];\r\n }\r\n return urlComponents;\r\n };\r\n /**\r\n * Given a url or path, append a trailing slash if one doesnt exist\r\n *\r\n * @param url\r\n */\r\n UrlUtils.CanonicalizeUri = function (url) {\r\n if (url) {\r\n var lowerCaseUrl = url.toLowerCase();\r\n if (!UrlUtils.endsWith(lowerCaseUrl, \"/\")) {\r\n lowerCaseUrl += \"/\";\r\n }\r\n return lowerCaseUrl;\r\n }\r\n return url;\r\n };\r\n /**\r\n * Checks to see if the url ends with the suffix\r\n * Required because we are compiling for es5 instead of es6\r\n * @param url\r\n * @param str\r\n */\r\n // TODO: Rename this, not clear what it is supposed to do\r\n UrlUtils.endsWith = function (url, suffix) {\r\n if (!url || !suffix) {\r\n return false;\r\n }\r\n return url.indexOf(suffix, url.length - suffix.length) !== -1;\r\n };\r\n /**\r\n * Utils function to remove the login_hint and domain_hint from the i/p extraQueryParameters\r\n * @param url\r\n * @param name\r\n */\r\n UrlUtils.urlRemoveQueryStringParameter = function (url, name) {\r\n if (StringUtils.isEmpty(url)) {\r\n return url;\r\n }\r\n var updatedUrl = url;\r\n var regex = new RegExp(\"(\\\\&\" + name + \"=)[^\\&]+\");\r\n updatedUrl = url.replace(regex, \"\");\r\n // name=value&\r\n regex = new RegExp(\"(\" + name + \"=)[^\\&]+&\");\r\n updatedUrl = url.replace(regex, \"\");\r\n // name=value\r\n regex = new RegExp(\"(\" + name + \"=)[^\\&]+\");\r\n updatedUrl = url.replace(regex, \"\");\r\n return updatedUrl;\r\n };\r\n /**\r\n * @hidden\r\n * @ignore\r\n *\r\n * Returns the anchor part(#) of the URL\r\n */\r\n UrlUtils.getHashFromUrl = function (urlStringOrFragment) {\r\n var hashIndex1 = urlStringOrFragment.indexOf(\"#\");\r\n var hashIndex2 = urlStringOrFragment.indexOf(\"#/\");\r\n if (hashIndex2 > -1) {\r\n return urlStringOrFragment.substring(hashIndex2 + 2);\r\n }\r\n else if (hashIndex1 > -1) {\r\n return urlStringOrFragment.substring(hashIndex1 + 1);\r\n }\r\n return urlStringOrFragment;\r\n };\r\n /**\r\n * @hidden\r\n * Check if the url contains a hash with known properties\r\n * @ignore\r\n */\r\n UrlUtils.urlContainsHash = function (urlString) {\r\n var parameters = UrlUtils.deserializeHash(urlString);\r\n return (parameters.hasOwnProperty(ServerHashParamKeys.ERROR_DESCRIPTION) ||\r\n parameters.hasOwnProperty(ServerHashParamKeys.ERROR) ||\r\n parameters.hasOwnProperty(ServerHashParamKeys.ACCESS_TOKEN) ||\r\n parameters.hasOwnProperty(ServerHashParamKeys.ID_TOKEN));\r\n };\r\n /**\r\n * @hidden\r\n * Returns deserialized portion of URL hash\r\n * @ignore\r\n */\r\n UrlUtils.deserializeHash = function (urlFragment) {\r\n var hash = UrlUtils.getHashFromUrl(urlFragment);\r\n return CryptoUtils.deserialize(hash);\r\n };\r\n /**\r\n * @ignore\r\n * @param {string} URI\r\n * @returns {string} host from the URI\r\n *\r\n * extract URI from the host\r\n */\r\n UrlUtils.getHostFromUri = function (uri) {\r\n // remove http:// or https:// from uri\r\n var extractedUri = String(uri).replace(/^(https?:)\\/\\//, \"\");\r\n extractedUri = extractedUri.split(\"/\")[0];\r\n return extractedUri;\r\n };\r\n return UrlUtils;\r\n}());\r\nexport { UrlUtils };\r\n//# sourceMappingURL=UrlUtils.js.map","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nimport { CryptoUtils } from \"../utils/CryptoUtils\";\r\nimport { UrlUtils } from \"../utils/UrlUtils\";\r\n/**\r\n * @hidden\r\n */\r\nvar AccessTokenKey = /** @class */ (function () {\r\n function AccessTokenKey(authority, clientId, scopes, uid, utid) {\r\n this.authority = UrlUtils.CanonicalizeUri(authority);\r\n this.clientId = clientId;\r\n this.scopes = scopes;\r\n this.homeAccountIdentifier = CryptoUtils.base64Encode(uid) + \".\" + CryptoUtils.base64Encode(utid);\r\n }\r\n return AccessTokenKey;\r\n}());\r\nexport { AccessTokenKey };\r\n//# sourceMappingURL=AccessTokenKey.js.map","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * @hidden\r\n */\r\nvar AccessTokenValue = /** @class */ (function () {\r\n function AccessTokenValue(accessToken, idToken, expiresIn, homeAccountIdentifier) {\r\n this.accessToken = accessToken;\r\n this.idToken = idToken;\r\n this.expiresIn = expiresIn;\r\n this.homeAccountIdentifier = homeAccountIdentifier;\r\n }\r\n return AccessTokenValue;\r\n}());\r\nexport { AccessTokenValue };\r\n//# sourceMappingURL=AccessTokenValue.js.map","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nimport { __spreadArrays } from \"tslib\";\r\nimport { CryptoUtils } from \"./utils/CryptoUtils\";\r\nimport { SSOTypes, Constants, PromptState, ResponseTypes } from \"./utils/Constants\";\r\nimport { ScopeSet } from \"./ScopeSet\";\r\nimport { version as libraryVersion } from \"./packageMetadata\";\r\n/**\r\n * Nonce: OIDC Nonce definition: https://openid.net/specs/openid-connect-core-1_0.html#IDToken\r\n * State: OAuth Spec: https://tools.ietf.org/html/rfc6749#section-10.12\r\n * @hidden\r\n */\r\nvar ServerRequestParameters = /** @class */ (function () {\r\n /**\r\n * Constructor\r\n * @param authority\r\n * @param clientId\r\n * @param scope\r\n * @param responseType\r\n * @param redirectUri\r\n * @param state\r\n */\r\n function ServerRequestParameters(authority, clientId, responseType, redirectUri, scopes, state, correlationId) {\r\n this.authorityInstance = authority;\r\n this.clientId = clientId;\r\n this.nonce = CryptoUtils.createNewGuid();\r\n // set scope to clientId if null\r\n this.scopes = scopes ? __spreadArrays(scopes) : Constants.oidcScopes;\r\n this.scopes = ScopeSet.trimScopes(this.scopes);\r\n // set state (already set at top level)\r\n this.state = state;\r\n // set correlationId\r\n this.correlationId = correlationId;\r\n // telemetry information\r\n this.xClientSku = \"MSAL.JS\";\r\n this.xClientVer = libraryVersion;\r\n this.responseType = responseType;\r\n this.redirectUri = redirectUri;\r\n }\r\n Object.defineProperty(ServerRequestParameters.prototype, \"authority\", {\r\n get: function () {\r\n return this.authorityInstance ? this.authorityInstance.CanonicalAuthority : null;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n /**\r\n * @hidden\r\n * @ignore\r\n *\r\n * Utility to populate QueryParameters and ExtraQueryParameters to ServerRequestParamerers\r\n * @param request\r\n * @param serverAuthenticationRequest\r\n */\r\n ServerRequestParameters.prototype.populateQueryParams = function (account, request, adalIdTokenObject, silentCall) {\r\n var queryParameters = {};\r\n if (request) {\r\n // add the prompt parameter to serverRequestParameters if passed\r\n if (request.prompt) {\r\n this.promptValue = request.prompt;\r\n }\r\n // Add claims challenge to serverRequestParameters if passed\r\n if (request.claimsRequest) {\r\n this.claimsValue = request.claimsRequest;\r\n }\r\n // if the developer provides one of these, give preference to developer choice\r\n if (ServerRequestParameters.isSSOParam(request)) {\r\n queryParameters = this.constructUnifiedCacheQueryParameter(request, null);\r\n }\r\n }\r\n if (adalIdTokenObject) {\r\n queryParameters = this.constructUnifiedCacheQueryParameter(null, adalIdTokenObject);\r\n }\r\n /*\r\n * adds sid/login_hint if not populated\r\n * this.logger.verbose(\"Calling addHint parameters\");\r\n */\r\n queryParameters = this.addHintParameters(account, queryParameters);\r\n // sanity check for developer passed extraQueryParameters\r\n var eQParams = request ? request.extraQueryParameters : null;\r\n // Populate the extraQueryParameters to be sent to the server\r\n this.queryParameters = ServerRequestParameters.generateQueryParametersString(queryParameters);\r\n this.extraQueryParameters = ServerRequestParameters.generateQueryParametersString(eQParams, silentCall);\r\n };\r\n // #region QueryParam helpers\r\n /**\r\n * Constructs extraQueryParameters to be sent to the server for the AuthenticationParameters set by the developer\r\n * in any login() or acquireToken() calls\r\n * @param idTokenObject\r\n * @param extraQueryParameters\r\n * @param sid\r\n * @param loginHint\r\n */\r\n // TODO: check how this behaves when domain_hint only is sent in extraparameters and idToken has no upn.\r\n ServerRequestParameters.prototype.constructUnifiedCacheQueryParameter = function (request, idTokenObject) {\r\n var _a;\r\n // preference order: account > sid > login_hint\r\n var ssoType;\r\n var ssoData;\r\n var serverReqParam = {};\r\n // if account info is passed, account.login_hint claim > account.sid > account.username\r\n if (request) {\r\n if (request.account) {\r\n var account = request.account;\r\n if ((_a = account.idTokenClaims) === null || _a === void 0 ? void 0 : _a.login_hint) {\r\n ssoType = SSOTypes.LOGIN_HINT;\r\n ssoData = account.idTokenClaims.login_hint;\r\n }\r\n else if (account.sid) {\r\n ssoType = SSOTypes.SID;\r\n ssoData = account.sid;\r\n }\r\n else if (account.userName) {\r\n ssoType = SSOTypes.LOGIN_HINT;\r\n ssoData = account.userName;\r\n }\r\n }\r\n // sid from request\r\n else if (request.sid) {\r\n ssoType = SSOTypes.SID;\r\n ssoData = request.sid;\r\n }\r\n // loginHint from request\r\n else if (request.loginHint) {\r\n ssoType = SSOTypes.LOGIN_HINT;\r\n ssoData = request.loginHint;\r\n }\r\n }\r\n // adalIdToken retrieved from cache\r\n else if (idTokenObject) {\r\n if (idTokenObject.hasOwnProperty(Constants.upn)) {\r\n ssoType = SSOTypes.ID_TOKEN;\r\n ssoData = idTokenObject[\"upn\"];\r\n }\r\n }\r\n serverReqParam = this.addSSOParameter(ssoType, ssoData);\r\n return serverReqParam;\r\n };\r\n /**\r\n * @hidden\r\n *\r\n * Adds login_hint to authorization URL which is used to pre-fill the username field of sign in page for the user if known ahead of time\r\n * domain_hint if added skips the email based discovery process of the user - only supported for interactive calls in implicit_flow\r\n * domain_req utid received as part of the clientInfo\r\n * login_req uid received as part of clientInfo\r\n * Also does a sanity check for extraQueryParameters passed by the user to ensure no repeat queryParameters\r\n *\r\n * @param {@link Account} account - Account for which the token is requested\r\n * @param queryparams\r\n * @param {@link ServerRequestParameters}\r\n * @ignore\r\n */\r\n ServerRequestParameters.prototype.addHintParameters = function (account, params) {\r\n var _a, _b;\r\n /*\r\n * This is a final check for all queryParams added so far; preference order: sid > login_hint\r\n * sid cannot be passed along with login_hint or domain_hint, hence we check both are not populated yet in queryParameters\r\n */\r\n var qParams = params;\r\n if (account) {\r\n if (!qParams[SSOTypes.SID] && !qParams[SSOTypes.LOGIN_HINT]) {\r\n if ((_a = account.idTokenClaims) === null || _a === void 0 ? void 0 : _a.login_hint) {\r\n // Use login_hint claim if available over sid or email/upn\r\n qParams = this.addSSOParameter(SSOTypes.LOGIN_HINT, (_b = account.idTokenClaims) === null || _b === void 0 ? void 0 : _b.login_hint, qParams);\r\n }\r\n else if (account.sid && this.promptValue === PromptState.NONE) {\r\n // sid - populate only if login_hint is not already populated and the account has sid\r\n qParams = this.addSSOParameter(SSOTypes.SID, account.sid, qParams);\r\n }\r\n else if (account.userName) {\r\n // Add username/upn as loginHint if nothing else available\r\n qParams = this.addSSOParameter(SSOTypes.LOGIN_HINT, account.userName, qParams);\r\n }\r\n }\r\n }\r\n return qParams;\r\n };\r\n /**\r\n * Add SID to extraQueryParameters\r\n * @param sid\r\n */\r\n ServerRequestParameters.prototype.addSSOParameter = function (ssoType, ssoData, params) {\r\n var ssoParam = params || {};\r\n if (!ssoData) {\r\n return ssoParam;\r\n }\r\n switch (ssoType) {\r\n case SSOTypes.SID: {\r\n ssoParam[SSOTypes.SID] = ssoData;\r\n break;\r\n }\r\n case SSOTypes.ID_TOKEN: {\r\n ssoParam[SSOTypes.LOGIN_HINT] = ssoData;\r\n break;\r\n }\r\n case SSOTypes.LOGIN_HINT: {\r\n ssoParam[SSOTypes.LOGIN_HINT] = ssoData;\r\n break;\r\n }\r\n }\r\n return ssoParam;\r\n };\r\n /**\r\n * Utility to generate a QueryParameterString from a Key-Value mapping of extraQueryParameters passed\r\n * @param extraQueryParameters\r\n */\r\n ServerRequestParameters.generateQueryParametersString = function (queryParameters, silentCall) {\r\n var paramsString = null;\r\n if (queryParameters) {\r\n Object.keys(queryParameters).forEach(function (key) {\r\n // sid cannot be passed along with login_hint or domain_hint\r\n if (key === Constants.domain_hint && (silentCall || queryParameters[SSOTypes.SID])) {\r\n return;\r\n }\r\n if (!paramsString) {\r\n paramsString = key + \"=\" + encodeURIComponent(queryParameters[key]);\r\n }\r\n else {\r\n paramsString += \"&\" + key + \"=\" + encodeURIComponent(queryParameters[key]);\r\n }\r\n });\r\n }\r\n return paramsString;\r\n };\r\n // #endregion\r\n /**\r\n * Check to see if there are SSO params set in the Request\r\n * @param request\r\n */\r\n ServerRequestParameters.isSSOParam = function (request) {\r\n return !!(request && (request.account || request.sid || request.loginHint));\r\n };\r\n /**\r\n * Returns the correct response_type string attribute for an acquireToken request configuration\r\n * @param accountsMatch boolean: Determines whether the account in the request matches the cached account\r\n * @param scopes Array<string>: AuthenticationRequest scopes configuration\r\n * @param loginScopesOnly boolean: True if the scopes array ONLY contains the clientId or any combination of OIDC scopes, without resource scopes\r\n */\r\n ServerRequestParameters.determineResponseType = function (accountsMatch, scopes) {\r\n // Supports getting an id_token by sending in clientId as only scope or OIDC scopes as only scopes\r\n if (ScopeSet.onlyContainsOidcScopes(scopes)) {\r\n return ResponseTypes.id_token;\r\n }\r\n // If accounts match, check if OIDC scopes are included, otherwise return id_token_token\r\n return (accountsMatch) ? this.responseTypeForMatchingAccounts(scopes) : ResponseTypes.id_token_token;\r\n };\r\n /**\r\n * Returns the correct response_type string attribute for an acquireToken request configuration that contains an\r\n * account that matches the account in the MSAL cache.\r\n * @param scopes Array<string>: AuthenticationRequest scopes configuration\r\n */\r\n ServerRequestParameters.responseTypeForMatchingAccounts = function (scopes) {\r\n // Opt-into also requesting an ID token by sending in 'openid', 'profile' or both along with resource scopes when login is not necessary.\r\n return (ScopeSet.containsAnyOidcScopes(scopes)) ? ResponseTypes.id_token_token : ResponseTypes.token;\r\n };\r\n return ServerRequestParameters;\r\n}());\r\nexport { ServerRequestParameters };\r\n//# sourceMappingURL=ServerRequestParameters.js.map","/* eslint-disable header/header */\r\nexport var name = \"msal\";\r\nexport var version = \"1.4.18\";\r\n//# sourceMappingURL=packageMetadata.js.map","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nimport { NetworkRequestType } from \"./utils/Constants\";\r\n/**\r\n * XHR client for JSON endpoints\r\n * https://www.npmjs.com/package/async-promise\r\n * @hidden\r\n */\r\nvar XhrClient = /** @class */ (function () {\r\n function XhrClient() {\r\n }\r\n XhrClient.prototype.sendRequestAsync = function (url, method, enableCaching) {\r\n var _this = this;\r\n return new Promise(function (resolve, reject) {\r\n var xhr = new XMLHttpRequest();\r\n xhr.open(method, url, /* async: */ true);\r\n if (enableCaching) {\r\n /*\r\n * TODO: (shivb) ensure that this can be cached\r\n * xhr.setRequestHeader(\"Cache-Control\", \"Public\");\r\n */\r\n }\r\n xhr.onload = function () {\r\n if (xhr.status < 200 || xhr.status >= 300) {\r\n reject(_this.handleError(xhr.responseText));\r\n }\r\n var jsonResponse;\r\n try {\r\n jsonResponse = JSON.parse(xhr.responseText);\r\n }\r\n catch (e) {\r\n reject(_this.handleError(xhr.responseText));\r\n }\r\n var response = {\r\n statusCode: xhr.status,\r\n body: jsonResponse\r\n };\r\n resolve(response);\r\n };\r\n xhr.onerror = function () {\r\n reject(xhr.status);\r\n };\r\n if (method === NetworkRequestType.GET) {\r\n xhr.send();\r\n }\r\n else {\r\n throw \"not implemented\";\r\n }\r\n });\r\n };\r\n XhrClient.prototype.handleError = function (responseText) {\r\n var jsonResponse;\r\n try {\r\n jsonResponse = JSON.parse(responseText);\r\n if (jsonResponse[\"error\"]) {\r\n return jsonResponse[\"error\"];\r\n }\r\n else {\r\n throw responseText;\r\n }\r\n }\r\n catch (e) {\r\n return responseText;\r\n }\r\n };\r\n return XhrClient;\r\n}());\r\nexport { XhrClient };\r\n//# sourceMappingURL=XHRClient.js.map","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nimport { __awaiter, __generator } from \"tslib\";\r\nimport { XhrClient } from \"../XHRClient\";\r\nimport { AAD_INSTANCE_DISCOVERY_ENDPOINT, NetworkRequestType } from \"../utils/Constants\";\r\nimport { UrlUtils } from \"../utils/UrlUtils\";\r\nvar TrustedAuthority = /** @class */ (function () {\r\n function TrustedAuthority() {\r\n }\r\n /**\r\n *\r\n * @param validateAuthority\r\n * @param knownAuthorities\r\n */\r\n TrustedAuthority.setTrustedAuthoritiesFromConfig = function (validateAuthority, knownAuthorities) {\r\n if (validateAuthority && !this.getTrustedHostList().length) {\r\n knownAuthorities.forEach(function (authority) {\r\n TrustedAuthority.TrustedHostList.push(authority.toLowerCase());\r\n });\r\n }\r\n };\r\n /**\r\n *\r\n * @param telemetryManager\r\n * @param correlationId\r\n */\r\n TrustedAuthority.getAliases = function (authorityToVerify, telemetryManager, correlationId) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var client, httpMethod, instanceDiscoveryEndpoint, httpEvent;\r\n return __generator(this, function (_a) {\r\n client = new XhrClient();\r\n httpMethod = NetworkRequestType.GET;\r\n instanceDiscoveryEndpoint = \"\" + AAD_INSTANCE_DISCOVERY_ENDPOINT + authorityToVerify + \"oauth2/v2.0/authorize\";\r\n httpEvent = telemetryManager.createAndStartHttpEvent(correlationId, httpMethod, instanceDiscoveryEndpoint, \"getAliases\");\r\n return [2 /*return*/, client.sendRequestAsync(instanceDiscoveryEndpoint, httpMethod, true)\r\n .then(function (response) {\r\n httpEvent.httpResponseStatus = response.statusCode;\r\n telemetryManager.stopEvent(httpEvent);\r\n return response.body[\"metadata\"];\r\n })\r\n .catch(function (err) {\r\n httpEvent.serverErrorCode = err;\r\n telemetryManager.stopEvent(httpEvent);\r\n throw err;\r\n })];\r\n });\r\n });\r\n };\r\n /**\r\n *\r\n * @param telemetryManager\r\n * @param correlationId\r\n */\r\n TrustedAuthority.setTrustedAuthoritiesFromNetwork = function (authorityToVerify, telemetryManager, correlationId) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var metadata, host;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, this.getAliases(authorityToVerify, telemetryManager, correlationId)];\r\n case 1:\r\n metadata = _a.sent();\r\n metadata.forEach(function (entry) {\r\n var authorities = entry[\"aliases\"];\r\n authorities.forEach(function (authority) {\r\n TrustedAuthority.TrustedHostList.push(authority.toLowerCase());\r\n });\r\n });\r\n host = UrlUtils.GetUrlComponents(authorityToVerify).HostNameAndPort;\r\n if (TrustedAuthority.getTrustedHostList().length && !TrustedAuthority.IsInTrustedHostList(host)) {\r\n // Custom Domain scenario, host is trusted because Instance Discovery call succeeded\r\n TrustedAuthority.TrustedHostList.push(host.toLowerCase());\r\n }\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n TrustedAuthority.getTrustedHostList = function () {\r\n return this.TrustedHostList;\r\n };\r\n /**\r\n * Checks to see if the host is in a list of trusted hosts\r\n * @param host\r\n */\r\n TrustedAuthority.IsInTrustedHostList = function (host) {\r\n return this.TrustedHostList.indexOf(host.toLowerCase()) > -1;\r\n };\r\n TrustedAuthority.TrustedHostList = [];\r\n return TrustedAuthority;\r\n}());\r\nexport { TrustedAuthority };\r\n//# sourceMappingURL=TrustedAuthority.js.map","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nimport { StringUtils } from \"./utils/StringUtils\";\r\nimport { version as libraryVersion } from \"./packageMetadata\";\r\nexport var LogLevel;\r\n(function (LogLevel) {\r\n LogLevel[LogLevel[\"Error\"] = 0] = \"Error\";\r\n LogLevel[LogLevel[\"Warning\"] = 1] = \"Warning\";\r\n LogLevel[LogLevel[\"Info\"] = 2] = \"Info\";\r\n LogLevel[LogLevel[\"Verbose\"] = 3] = \"Verbose\";\r\n})(LogLevel || (LogLevel = {}));\r\nvar Logger = /** @class */ (function () {\r\n function Logger(localCallback, options) {\r\n if (options === void 0) { options = {}; }\r\n /**\r\n * @hidden\r\n */\r\n this.level = LogLevel.Info;\r\n var _a = options.correlationId, correlationId = _a === void 0 ? \"\" : _a, _b = options.level, level = _b === void 0 ? LogLevel.Info : _b, _c = options.piiLoggingEnabled, piiLoggingEnabled = _c === void 0 ? false : _c;\r\n this.localCallback = localCallback;\r\n this.correlationId = correlationId;\r\n this.level = level;\r\n this.piiLoggingEnabled = piiLoggingEnabled;\r\n }\r\n /**\r\n * @hidden\r\n */\r\n Logger.prototype.logMessage = function (logLevel, logMessage, containsPii) {\r\n if ((logLevel > this.level) || (!this.piiLoggingEnabled && containsPii)) {\r\n return;\r\n }\r\n var timestamp = new Date().toUTCString();\r\n var log;\r\n if (!StringUtils.isEmpty(this.correlationId)) {\r\n log = timestamp + \":\" + this.correlationId + \"-\" + libraryVersion + \"-\" + LogLevel[logLevel] + (containsPii ? \"-pii\" : \"\") + \" \" + logMessage;\r\n }\r\n else {\r\n log = timestamp + \":\" + libraryVersion + \"-\" + LogLevel[logLevel] + (containsPii ? \"-pii\" : \"\") + \" \" + logMessage;\r\n }\r\n this.executeCallback(logLevel, log, containsPii);\r\n };\r\n /**\r\n * @hidden\r\n */\r\n Logger.prototype.executeCallback = function (level, message, containsPii) {\r\n if (this.localCallback) {\r\n this.localCallback(level, message, containsPii);\r\n }\r\n };\r\n /**\r\n * @hidden\r\n */\r\n Logger.prototype.error = function (message) {\r\n this.logMessage(LogLevel.Error, message, false);\r\n };\r\n /**\r\n * @hidden\r\n */\r\n Logger.prototype.errorPii = function (message) {\r\n this.logMessage(LogLevel.Error, message, true);\r\n };\r\n /**\r\n * @hidden\r\n */\r\n Logger.prototype.warning = function (message) {\r\n this.logMessage(LogLevel.Warning, message, false);\r\n };\r\n /**\r\n * @hidden\r\n */\r\n Logger.prototype.warningPii = function (message) {\r\n this.logMessage(LogLevel.Warning, message, true);\r\n };\r\n /**\r\n * @hidden\r\n */\r\n Logger.prototype.info = function (message) {\r\n this.logMessage(LogLevel.Info, message, false);\r\n };\r\n /**\r\n * @hidden\r\n */\r\n Logger.prototype.infoPii = function (message) {\r\n this.logMessage(LogLevel.Info, message, true);\r\n };\r\n /**\r\n * @hidden\r\n */\r\n Logger.prototype.verbose = function (message) {\r\n this.logMessage(LogLevel.Verbose, message, false);\r\n };\r\n /**\r\n * @hidden\r\n */\r\n Logger.prototype.verbosePii = function (message) {\r\n this.logMessage(LogLevel.Verbose, message, true);\r\n };\r\n Logger.prototype.isPiiLoggingEnabled = function () {\r\n return this.piiLoggingEnabled;\r\n };\r\n return Logger;\r\n}());\r\nexport { Logger };\r\n//# sourceMappingURL=Logger.js.map","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nimport { CryptoUtils } from \"./utils/CryptoUtils\";\r\nimport { ClientAuthError } from \"./error/ClientAuthError\";\r\nimport { StringUtils } from \"./utils/StringUtils\";\r\n/**\r\n * @hidden\r\n */\r\nvar ClientInfo = /** @class */ (function () {\r\n function ClientInfo(rawClientInfo, authority) {\r\n if (!rawClientInfo || StringUtils.isEmpty(rawClientInfo)) {\r\n this.uid = \"\";\r\n this.utid = \"\";\r\n return;\r\n }\r\n try {\r\n var decodedClientInfo = CryptoUtils.base64Decode(rawClientInfo);\r\n var clientInfo = JSON.parse(decodedClientInfo);\r\n if (clientInfo) {\r\n if (clientInfo.hasOwnProperty(\"uid\")) {\r\n this.uid = authority ? ClientInfo.stripPolicyFromUid(clientInfo.uid, authority) : clientInfo.uid;\r\n }\r\n if (clientInfo.hasOwnProperty(\"utid\")) {\r\n this.utid = clientInfo.utid;\r\n }\r\n }\r\n }\r\n catch (e) {\r\n throw ClientAuthError.createClientInfoDecodingError(e);\r\n }\r\n }\r\n Object.defineProperty(ClientInfo.prototype, \"uid\", {\r\n get: function () {\r\n return this._uid ? this._uid : \"\";\r\n },\r\n set: function (uid) {\r\n this._uid = uid;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(ClientInfo.prototype, \"utid\", {\r\n get: function () {\r\n return this._utid ? this._utid : \"\";\r\n },\r\n set: function (utid) {\r\n this._utid = utid;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n ClientInfo.createClientInfoFromIdToken = function (idToken, authority) {\r\n var clientInfo = {\r\n uid: idToken.subject,\r\n utid: \"\"\r\n };\r\n return new ClientInfo(CryptoUtils.base64Encode(JSON.stringify(clientInfo)), authority);\r\n };\r\n ClientInfo.stripPolicyFromUid = function (uid, authority) {\r\n var uidSegments = uid.split(\"-\");\r\n // Reverse the url segments so the last one is more easily accessible\r\n var urlSegments = authority.split(\"/\").reverse();\r\n var policy = \"\";\r\n if (!StringUtils.isEmpty(urlSegments[0])) {\r\n policy = urlSegments[0];\r\n }\r\n else if (urlSegments.length > 1) {\r\n // If the original url had a trailing slash, urlSegments[0] would be \"\" so take the next element\r\n policy = urlSegments[1];\r\n }\r\n if (uidSegments[uidSegments.length - 1] === policy) {\r\n // If the last segment of uid matches the last segment of authority url, remove the last segment of uid\r\n return uidSegments.slice(0, uidSegments.length - 1).join(\"-\");\r\n }\r\n return uid;\r\n };\r\n ClientInfo.prototype.encodeClientInfo = function () {\r\n var clientInfo = JSON.stringify({ uid: this.uid, utid: this.utid });\r\n return CryptoUtils.base64Encode(clientInfo);\r\n };\r\n return ClientInfo;\r\n}());\r\nexport { ClientInfo };\r\n//# sourceMappingURL=ClientInfo.js.map","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * @hidden\r\n */\r\nvar TimeUtils = /** @class */ (function () {\r\n function TimeUtils() {\r\n }\r\n /**\r\n * Returns time in seconds for expiration based on string value passed in.\r\n *\r\n * @param expiresIn\r\n */\r\n TimeUtils.parseExpiresIn = function (expiresIn) {\r\n // if AAD did not send \"expires_in\" property, use default expiration of 3599 seconds, for some reason AAD sends 3599 as \"expires_in\" value instead of 3600\r\n var expires = expiresIn || \"3599\";\r\n return parseInt(expires, 10);\r\n };\r\n /**\r\n * Return the current time in Unix time (seconds). Date.getTime() returns in milliseconds.\r\n */\r\n TimeUtils.now = function () {\r\n return Math.round(new Date().getTime() / 1000.0);\r\n };\r\n /**\r\n * Returns the amount of time in milliseconds since the page loaded.\r\n */\r\n TimeUtils.relativeNowMs = function () {\r\n return window.performance.now();\r\n };\r\n return TimeUtils;\r\n}());\r\nexport { TimeUtils };\r\n//# sourceMappingURL=TimeUtils.js.map","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nimport { CryptoUtils } from \"./CryptoUtils\";\r\nimport { StringUtils } from \"./StringUtils\";\r\nimport { TimeUtils } from \"./TimeUtils\";\r\n/**\r\n * @hidden\r\n */\r\nvar TokenUtils = /** @class */ (function () {\r\n function TokenUtils() {\r\n }\r\n /**\r\n * decode a JWT\r\n *\r\n * @param jwtToken\r\n */\r\n TokenUtils.decodeJwt = function (jwtToken) {\r\n if (StringUtils.isEmpty(jwtToken)) {\r\n return null;\r\n }\r\n var idTokenPartsRegex = /^([^\\.\\s]*)\\.([^\\.\\s]+)\\.([^\\.\\s]*)$/;\r\n var matches = idTokenPartsRegex.exec(jwtToken);\r\n if (!matches || matches.length < 4) {\r\n // this._requestContext.logger.warn(\"The returned id_token is not parseable.\");\r\n return null;\r\n }\r\n var crackedToken = {\r\n header: matches[1],\r\n JWSPayload: matches[2],\r\n JWSSig: matches[3]\r\n };\r\n return crackedToken;\r\n };\r\n /**\r\n * Evaluates whether token cache item expiration is within expiration offset range\r\n * @param tokenCacheItem\r\n */\r\n TokenUtils.validateExpirationIsWithinOffset = function (expiration, tokenRenewalOffsetSeconds) {\r\n var offset = tokenRenewalOffsetSeconds || 300;\r\n return expiration && (expiration > TimeUtils.now() + offset);\r\n };\r\n /**\r\n * Extract IdToken by decoding the RAWIdToken\r\n *\r\n * @param encodedIdToken\r\n */\r\n TokenUtils.extractIdToken = function (encodedIdToken) {\r\n // id token will be decoded to get the username\r\n var decodedToken = this.decodeJwt(encodedIdToken);\r\n if (!decodedToken) {\r\n return null;\r\n }\r\n try {\r\n var base64IdToken = decodedToken[\"JWSPayload\"];\r\n var base64Decoded = CryptoUtils.base64Decode(base64IdToken);\r\n if (!base64Decoded) {\r\n // this._requestContext.logger.info(\"The returned id_token could not be base64 url safe decoded.\");\r\n return null;\r\n }\r\n // ECMA script has JSON built-in support\r\n return JSON.parse(base64Decoded);\r\n }\r\n catch (err) {\r\n // this._requestContext.logger.error(\"The returned id_token could not be decoded\" + err);\r\n }\r\n return null;\r\n };\r\n return TokenUtils;\r\n}());\r\nexport { TokenUtils };\r\n//# sourceMappingURL=TokenUtils.js.map","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nimport { ClientAuthError } from \"./error/ClientAuthError\";\r\nimport { TokenUtils } from \"./utils/TokenUtils\";\r\nimport { StringUtils } from \"./utils/StringUtils\";\r\n/**\r\n * @hidden\r\n */\r\nvar IdToken = /** @class */ (function () {\r\n /* tslint:disable:no-string-literal */\r\n function IdToken(rawIdToken) {\r\n if (StringUtils.isEmpty(rawIdToken)) {\r\n throw ClientAuthError.createIdTokenNullOrEmptyError(rawIdToken);\r\n }\r\n try {\r\n this.rawIdToken = rawIdToken;\r\n this.claims = TokenUtils.extractIdToken(rawIdToken);\r\n if (this.claims) {\r\n if (this.claims.hasOwnProperty(\"iss\")) {\r\n this.issuer = this.claims[\"iss\"];\r\n }\r\n if (this.claims.hasOwnProperty(\"oid\")) {\r\n this.objectId = this.claims[\"oid\"];\r\n }\r\n if (this.claims.hasOwnProperty(\"sub\")) {\r\n this.subject = this.claims[\"sub\"];\r\n }\r\n if (this.claims.hasOwnProperty(\"tid\")) {\r\n this.tenantId = this.claims[\"tid\"];\r\n }\r\n if (this.claims.hasOwnProperty(\"ver\")) {\r\n this.version = this.claims[\"ver\"];\r\n }\r\n if (this.claims.hasOwnProperty(\"preferred_username\")) {\r\n this.preferredName = this.claims[\"preferred_username\"];\r\n }\r\n else if (this.claims.hasOwnProperty(\"upn\")) {\r\n this.preferredName = this.claims[\"upn\"];\r\n }\r\n if (this.claims.hasOwnProperty(\"name\")) {\r\n this.name = this.claims[\"name\"];\r\n }\r\n if (this.claims.hasOwnProperty(\"nonce\")) {\r\n this.nonce = this.claims[\"nonce\"];\r\n }\r\n if (this.claims.hasOwnProperty(\"exp\")) {\r\n this.expiration = this.claims[\"exp\"];\r\n }\r\n if (this.claims.hasOwnProperty(\"home_oid\")) {\r\n this.homeObjectId = this.claims[\"home_oid\"];\r\n }\r\n if (this.claims.hasOwnProperty(\"sid\")) {\r\n this.sid = this.claims[\"sid\"];\r\n }\r\n if (this.claims.hasOwnProperty(\"cloud_instance_host_name\")) {\r\n this.cloudInstance = this.claims[\"cloud_instance_host_name\"];\r\n }\r\n /* tslint:enable:no-string-literal */\r\n }\r\n }\r\n catch (e) {\r\n /*\r\n * TODO: This error here won't really every be thrown, since extractIdToken() returns null if the decodeJwt() fails.\r\n * Need to add better error handling here to account for being unable to decode jwts.\r\n */\r\n throw ClientAuthError.createIdTokenParsingError(e);\r\n }\r\n }\r\n return IdToken;\r\n}());\r\nexport { IdToken };\r\n//# sourceMappingURL=IdToken.js.map","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * @hidden\r\n */\r\nvar AccessTokenCacheItem = /** @class */ (function () {\r\n function AccessTokenCacheItem(key, value) {\r\n this.key = key;\r\n this.value = value;\r\n }\r\n return AccessTokenCacheItem;\r\n}());\r\nexport { AccessTokenCacheItem };\r\n//# sourceMappingURL=AccessTokenCacheItem.js.map","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nimport { ClientConfigurationError } from \"../error/ClientConfigurationError\";\r\nimport { AuthError } from \"../error/AuthError\";\r\n/**\r\n * @hidden\r\n */\r\nvar BrowserStorage = /** @class */ (function () {\r\n function BrowserStorage(cacheLocation) {\r\n if (!window) {\r\n throw AuthError.createNoWindowObjectError(\"Browser storage class could not find window object\");\r\n }\r\n var storageSupported = typeof window[cacheLocation] !== \"undefined\" && window[cacheLocation] !== null;\r\n if (!storageSupported) {\r\n throw ClientConfigurationError.createStorageNotSupportedError(cacheLocation);\r\n }\r\n this.cacheLocation = cacheLocation;\r\n }\r\n /**\r\n * add value to storage\r\n * @param key\r\n * @param value\r\n * @param enableCookieStorage\r\n */\r\n BrowserStorage.prototype.setItem = function (key, value, enableCookieStorage) {\r\n window[this.cacheLocation].setItem(key, value);\r\n if (enableCookieStorage) {\r\n this.setItemCookie(key, value);\r\n }\r\n };\r\n /**\r\n * get one item by key from storage\r\n * @param key\r\n * @param enableCookieStorage\r\n */\r\n BrowserStorage.prototype.getItem = function (key, enableCookieStorage) {\r\n if (enableCookieStorage && this.getItemCookie(key)) {\r\n return this.getItemCookie(key);\r\n }\r\n return window[this.cacheLocation].getItem(key);\r\n };\r\n /**\r\n * remove value from storage\r\n * @param key\r\n */\r\n BrowserStorage.prototype.removeItem = function (key) {\r\n return window[this.cacheLocation].removeItem(key);\r\n };\r\n /**\r\n * clear storage (remove all items from it)\r\n */\r\n BrowserStorage.prototype.clear = function () {\r\n return window[this.cacheLocation].clear();\r\n };\r\n /**\r\n * add value to cookies\r\n * @param cName\r\n * @param cValue\r\n * @param expires\r\n */\r\n BrowserStorage.prototype.setItemCookie = function (cName, cValue, expires) {\r\n var cookieStr = encodeURIComponent(cName) + \"=\" + encodeURIComponent(cValue) + \";path=/;\";\r\n if (expires) {\r\n var expireTime = this.getCookieExpirationTime(expires);\r\n cookieStr += \"expires=\" + expireTime + \";\";\r\n }\r\n document.cookie = cookieStr;\r\n };\r\n /**\r\n * get one item by key from cookies\r\n * @param cName\r\n */\r\n BrowserStorage.prototype.getItemCookie = function (cName) {\r\n var name = encodeURIComponent(cName) + \"=\";\r\n var ca = document.cookie.split(\";\");\r\n for (var i = 0; i < ca.length; i++) {\r\n var c = ca[i];\r\n while (c.charAt(0) === \" \") {\r\n c = c.substring(1);\r\n }\r\n if (c.indexOf(name) === 0) {\r\n return decodeURIComponent(c.substring(name.length, c.length));\r\n }\r\n }\r\n return \"\";\r\n };\r\n /**\r\n * Clear an item in the cookies by key\r\n * @param cName\r\n */\r\n BrowserStorage.prototype.clearItemCookie = function (cName) {\r\n this.setItemCookie(cName, \"\", -1);\r\n };\r\n /**\r\n * Get cookie expiration time\r\n * @param cookieLifeDays\r\n */\r\n BrowserStorage.prototype.getCookieExpirationTime = function (cookieLifeDays) {\r\n var today = new Date();\r\n var expr = new Date(today.getTime() + cookieLifeDays * 24 * 60 * 60 * 1000);\r\n return expr.toUTCString();\r\n };\r\n return BrowserStorage;\r\n}());\r\nexport { BrowserStorage };\r\n//# sourceMappingURL=BrowserStorage.js.map","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nimport { __assign } from \"tslib\";\r\nimport { Constants, PromptState, DisallowedEQParams } from \"./Constants\";\r\nimport { ClientConfigurationError } from \"../error/ClientConfigurationError\";\r\nimport { ScopeSet } from \"../ScopeSet\";\r\nimport { StringUtils } from \"./StringUtils\";\r\nimport { CryptoUtils } from \"./CryptoUtils\";\r\nimport { TimeUtils } from \"./TimeUtils\";\r\nimport { ClientAuthError } from \"../error/ClientAuthError\";\r\n/**\r\n * @hidden\r\n */\r\nvar RequestUtils = /** @class */ (function () {\r\n function RequestUtils() {\r\n }\r\n /**\r\n * @ignore\r\n *\r\n * @param request\r\n * @param isLoginCall\r\n * @param cacheStorage\r\n * @param clientId\r\n *\r\n * validates all request parameters and generates a consumable request object\r\n */\r\n RequestUtils.validateRequest = function (request, isLoginCall, clientId, interactionType) {\r\n // Throw error if request is empty for acquire * calls\r\n if (!isLoginCall && !request) {\r\n throw ClientConfigurationError.createEmptyRequestError();\r\n }\r\n var scopes;\r\n var extraQueryParameters;\r\n if (request) {\r\n // if extraScopesToConsent is passed in loginCall, append them to the login request; Validate and filter scopes (the validate function will throw if validation fails)\r\n scopes = isLoginCall ? ScopeSet.appendScopes(request.scopes, request.extraScopesToConsent) : request.scopes;\r\n ScopeSet.validateInputScope(scopes, !isLoginCall);\r\n scopes = ScopeSet.translateClientIdIfSingleScope(scopes, clientId);\r\n // validate prompt parameter\r\n this.validatePromptParameter(request.prompt);\r\n // validate extraQueryParameters\r\n extraQueryParameters = this.validateEQParameters(request.extraQueryParameters, request.claimsRequest);\r\n // validate claimsRequest\r\n this.validateClaimsRequest(request.claimsRequest);\r\n }\r\n // validate and generate state and correlationId\r\n var state = this.validateAndGenerateState(request && request.state, interactionType);\r\n var correlationId = this.validateAndGenerateCorrelationId(request && request.correlationId);\r\n var validatedRequest = __assign(__assign({}, request), { extraQueryParameters: extraQueryParameters,\r\n scopes: scopes,\r\n state: state,\r\n correlationId: correlationId });\r\n return validatedRequest;\r\n };\r\n /**\r\n * @ignore\r\n *\r\n * Utility to test if valid prompt value is passed in the request\r\n * @param request\r\n */\r\n RequestUtils.validatePromptParameter = function (prompt) {\r\n if (prompt) {\r\n if ([PromptState.LOGIN, PromptState.SELECT_ACCOUNT, PromptState.CONSENT, PromptState.NONE].indexOf(prompt) < 0) {\r\n throw ClientConfigurationError.createInvalidPromptError(prompt);\r\n }\r\n }\r\n };\r\n /**\r\n * @ignore\r\n *\r\n * Removes unnecessary or duplicate query parameters from extraQueryParameters\r\n * @param request\r\n */\r\n RequestUtils.validateEQParameters = function (extraQueryParameters, claimsRequest) {\r\n var eQParams = __assign({}, extraQueryParameters);\r\n if (!eQParams) {\r\n return null;\r\n }\r\n if (claimsRequest) {\r\n // this.logger.warning(\"Removed duplicate claims from extraQueryParameters. Please use either the claimsRequest field OR pass as extraQueryParameter - not both.\");\r\n delete eQParams[Constants.claims];\r\n }\r\n DisallowedEQParams.forEach(function (param) {\r\n if (eQParams[param]) {\r\n // this.logger.warning(\"Removed duplicate \" + param + \" from extraQueryParameters. Please use the \" + param + \" field in request object.\");\r\n delete eQParams[param];\r\n }\r\n });\r\n return eQParams;\r\n };\r\n /**\r\n * @ignore\r\n *\r\n * Validates the claims passed in request is a JSON\r\n * TODO: More validation will be added when the server team tells us how they have actually implemented claims\r\n * @param claimsRequest\r\n */\r\n RequestUtils.validateClaimsRequest = function (claimsRequest) {\r\n if (!claimsRequest) {\r\n return;\r\n }\r\n try {\r\n JSON.parse(claimsRequest);\r\n }\r\n catch (e) {\r\n throw ClientConfigurationError.createClaimsRequestParsingError(e);\r\n }\r\n };\r\n /**\r\n * @ignore\r\n *\r\n * generate unique state per request\r\n * @param userState User-provided state value\r\n * @returns State string include library state and user state\r\n */\r\n RequestUtils.validateAndGenerateState = function (userState, interactionType) {\r\n return !StringUtils.isEmpty(userState) ? \"\" + RequestUtils.generateLibraryState(interactionType) + Constants.resourceDelimiter + userState : RequestUtils.generateLibraryState(interactionType);\r\n };\r\n /**\r\n * Generates the state value used by the library.\r\n *\r\n * @returns Base64 encoded string representing the state\r\n */\r\n RequestUtils.generateLibraryState = function (interactionType) {\r\n var stateObject = {\r\n id: CryptoUtils.createNewGuid(),\r\n ts: TimeUtils.now(),\r\n method: interactionType\r\n };\r\n var stateString = JSON.stringify(stateObject);\r\n return CryptoUtils.base64Encode(stateString);\r\n };\r\n /**\r\n * Decodes the state value into a StateObject\r\n *\r\n * @param state State value returned in the request\r\n * @returns Parsed values from the encoded state value\r\n */\r\n RequestUtils.parseLibraryState = function (state) {\r\n var libraryState = decodeURIComponent(state).split(Constants.resourceDelimiter)[0];\r\n if (CryptoUtils.isGuid(libraryState)) {\r\n // If state is guid, assume timestamp is now and is redirect, as redirect should be only method where this can happen.\r\n return {\r\n id: libraryState,\r\n ts: TimeUtils.now(),\r\n method: Constants.interactionTypeRedirect\r\n };\r\n }\r\n try {\r\n var stateString = CryptoUtils.base64Decode(libraryState);\r\n var stateObject = JSON.parse(stateString);\r\n return stateObject;\r\n }\r\n catch (e) {\r\n throw ClientAuthError.createInvalidStateError(state, null);\r\n }\r\n };\r\n /**\r\n * @ignore\r\n *\r\n * validate correlationId and generate if not valid or not set by the user\r\n * @param correlationId\r\n */\r\n RequestUtils.validateAndGenerateCorrelationId = function (correlationId) {\r\n // validate user set correlationId or set one for the user if null\r\n if (correlationId && !CryptoUtils.isGuid(correlationId)) {\r\n throw ClientConfigurationError.createInvalidCorrelationIdError();\r\n }\r\n return CryptoUtils.isGuid(correlationId) ? correlationId : CryptoUtils.createNewGuid();\r\n };\r\n /**\r\n * Create a request signature\r\n * @param request\r\n */\r\n RequestUtils.createRequestSignature = function (request) {\r\n return \"\" + request.scopes.join(\" \").toLowerCase() + Constants.resourceDelimiter + request.authority;\r\n };\r\n return RequestUtils;\r\n}());\r\nexport { RequestUtils };\r\n//# sourceMappingURL=RequestUtils.js.map","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nimport { __extends, __spreadArrays } from \"tslib\";\r\nimport { Constants, PersistentCacheKeys, TemporaryCacheKeys, ErrorCacheKeys, ServerHashParamKeys, SESSION_STORAGE } from \"../utils/Constants\";\r\nimport { AccessTokenCacheItem } from \"./AccessTokenCacheItem\";\r\nimport { BrowserStorage } from \"./BrowserStorage\";\r\nimport { RequestUtils } from \"../utils/RequestUtils\";\r\nimport { StringUtils } from \"../utils/StringUtils\";\r\nimport { IdToken } from \"../IdToken\";\r\nimport { ClientAuthError } from \"../error/ClientAuthError\";\r\n/**\r\n * @hidden\r\n */\r\nvar AuthCache = /** @class */ (function (_super) {\r\n __extends(AuthCache, _super);\r\n function AuthCache(clientId, cacheLocation, storeAuthStateInCookie) {\r\n var _this = _super.call(this, cacheLocation) || this;\r\n _this.temporaryCache = new BrowserStorage(SESSION_STORAGE);\r\n _this.clientId = clientId;\r\n // This is hardcoded to true for now. We may make this configurable in the future\r\n _this.rollbackEnabled = true;\r\n _this.migrateCacheEntries(storeAuthStateInCookie);\r\n return _this;\r\n }\r\n /**\r\n * Support roll back to old cache schema until the next major release: true by default now\r\n * @param storeAuthStateInCookie\r\n */\r\n AuthCache.prototype.migrateCacheEntries = function (storeAuthStateInCookie) {\r\n var _this = this;\r\n var idTokenKey = Constants.cachePrefix + \".\" + PersistentCacheKeys.IDTOKEN;\r\n var clientInfoKey = Constants.cachePrefix + \".\" + PersistentCacheKeys.CLIENT_INFO;\r\n var errorKey = Constants.cachePrefix + \".\" + ErrorCacheKeys.ERROR;\r\n var errorDescKey = Constants.cachePrefix + \".\" + ErrorCacheKeys.ERROR_DESC;\r\n var idTokenValue = _super.prototype.getItem.call(this, idTokenKey);\r\n var idToken;\r\n if (idTokenValue) {\r\n try {\r\n idToken = new IdToken(idTokenValue);\r\n }\r\n catch (e) {\r\n return;\r\n }\r\n }\r\n if (idToken && idToken.claims && idToken.claims.aud === this.clientId) {\r\n var clientInfoValue = _super.prototype.getItem.call(this, clientInfoKey);\r\n var errorValue = _super.prototype.getItem.call(this, errorKey);\r\n var errorDescValue = _super.prototype.getItem.call(this, errorDescKey);\r\n var values_1 = [idTokenValue, clientInfoValue, errorValue, errorDescValue];\r\n var keysToMigrate = [PersistentCacheKeys.IDTOKEN, PersistentCacheKeys.CLIENT_INFO, ErrorCacheKeys.ERROR, ErrorCacheKeys.ERROR_DESC];\r\n keysToMigrate.forEach(function (cacheKey, index) { return _this.duplicateCacheEntry(cacheKey, values_1[index], storeAuthStateInCookie); });\r\n }\r\n };\r\n /**\r\n * Utility function to help with roll back keys\r\n * @param newKey\r\n * @param value\r\n * @param storeAuthStateInCookie\r\n */\r\n AuthCache.prototype.duplicateCacheEntry = function (newKey, value, storeAuthStateInCookie) {\r\n if (value) {\r\n this.setItem(newKey, value, storeAuthStateInCookie);\r\n }\r\n };\r\n /**\r\n * Prepend msal.<client-id> to each key; Skip for any JSON object as Key (defined schemas do not need the key appended: AccessToken Keys or the upcoming schema)\r\n * @param key\r\n * @param addInstanceId\r\n */\r\n AuthCache.prototype.generateCacheKey = function (key, addInstanceId) {\r\n try {\r\n // Defined schemas do not need the key appended\r\n JSON.parse(key);\r\n return key;\r\n }\r\n catch (e) {\r\n if (key.indexOf(\"\" + Constants.cachePrefix) === 0 || key.indexOf(Constants.adalIdToken) === 0) {\r\n return key;\r\n }\r\n return addInstanceId ? Constants.cachePrefix + \".\" + this.clientId + \".\" + key : Constants.cachePrefix + \".\" + key;\r\n }\r\n };\r\n /**\r\n * Validates that the input cache key contains the account search terms (clientId and homeAccountIdentifier) and\r\n * then whether or not it contains the \"scopes\", depending on the token type being searched for. With matching account\r\n * search terms, Access Token search tries to match the \"scopes\" keyword, while Id Token search expects \"scopes\" to not be included.\r\n * @param key\r\n * @param clientId\r\n * @param homeAccountIdentifier\r\n * @param tokenType\r\n */\r\n AuthCache.prototype.matchKeyForType = function (key, clientId, homeAccountIdentifier, tokenType) {\r\n // All valid token cache item keys are valid JSON objects, ignore keys that aren't\r\n var parsedKey = StringUtils.validateAndParseJsonCacheKey(key);\r\n if (!parsedKey) {\r\n return null;\r\n }\r\n // Does the cache item match the request account\r\n var accountMatches = key.match(clientId) && key.match(homeAccountIdentifier);\r\n // Does the cache item match the requested token type\r\n var tokenTypeMatches = false;\r\n switch (tokenType) {\r\n case ServerHashParamKeys.ACCESS_TOKEN:\r\n // Cache item is an access token if scopes are included in the cache item key\r\n tokenTypeMatches = !!key.match(Constants.scopes);\r\n break;\r\n case ServerHashParamKeys.ID_TOKEN:\r\n // Cache may be an ID token if scopes are NOT included in the cache item key\r\n tokenTypeMatches = !key.match(Constants.scopes);\r\n break;\r\n }\r\n return (accountMatches && tokenTypeMatches) ? parsedKey : null;\r\n };\r\n /**\r\n * add value to storage\r\n * @param key\r\n * @param value\r\n * @param enableCookieStorage\r\n */\r\n AuthCache.prototype.setItem = function (key, value, enableCookieStorage) {\r\n _super.prototype.setItem.call(this, this.generateCacheKey(key, true), value, enableCookieStorage);\r\n // Values stored in cookies will have rollback disabled to minimize cookie length\r\n if (this.rollbackEnabled && !enableCookieStorage) {\r\n _super.prototype.setItem.call(this, this.generateCacheKey(key, false), value, enableCookieStorage);\r\n }\r\n };\r\n /**\r\n * get one item by key from storage\r\n * @param key\r\n * @param enableCookieStorage\r\n */\r\n AuthCache.prototype.getItem = function (key, enableCookieStorage) {\r\n return _super.prototype.getItem.call(this, this.generateCacheKey(key, true), enableCookieStorage);\r\n };\r\n /**\r\n * remove value from storage\r\n * @param key\r\n */\r\n AuthCache.prototype.removeItem = function (key) {\r\n this.temporaryCache.removeItem(this.generateCacheKey(key, true));\r\n _super.prototype.removeItem.call(this, this.generateCacheKey(key, true));\r\n if (this.rollbackEnabled) {\r\n _super.prototype.removeItem.call(this, this.generateCacheKey(key, false));\r\n }\r\n };\r\n /**\r\n * Sets temporary cache value\r\n * @param key\r\n * @param value\r\n * @param enableCookieStorage\r\n */\r\n AuthCache.prototype.setTemporaryItem = function (key, value, enableCookieStorage) {\r\n this.temporaryCache.setItem(this.generateCacheKey(key, true), value, enableCookieStorage);\r\n };\r\n /**\r\n * Gets temporary cache value\r\n * @param key\r\n * @param enableCookieStorage\r\n */\r\n AuthCache.prototype.getTemporaryItem = function (key, enableCookieStorage) {\r\n return this.temporaryCache.getItem(this.generateCacheKey(key, true), enableCookieStorage);\r\n };\r\n /**\r\n * Reset the cache items\r\n */\r\n AuthCache.prototype.resetCacheItems = function () {\r\n var storage = window[this.cacheLocation];\r\n var key;\r\n for (key in storage) {\r\n // Check if key contains msal prefix; For now, we are clearing all cache items created by MSAL.js\r\n if (storage.hasOwnProperty(key) && (key.indexOf(Constants.cachePrefix) !== -1)) {\r\n _super.prototype.removeItem.call(this, key);\r\n // TODO: Clear cache based on client id (clarify use cases where this is needed)\r\n }\r\n }\r\n };\r\n /**\r\n * Reset all temporary cache items\r\n */\r\n AuthCache.prototype.resetTempCacheItems = function (state) {\r\n var _this = this;\r\n var stateId = state && RequestUtils.parseLibraryState(state).id;\r\n var isTokenRenewalInProgress = this.tokenRenewalInProgress(state);\r\n var storage = window[this.cacheLocation];\r\n // check state and remove associated cache\r\n if (stateId && !isTokenRenewalInProgress) {\r\n Object.keys(storage).forEach(function (key) {\r\n if (key.indexOf(stateId) !== -1) {\r\n _this.removeItem(key);\r\n _super.prototype.clearItemCookie.call(_this, key);\r\n }\r\n });\r\n }\r\n // delete the interaction status cache\r\n this.setInteractionInProgress(false);\r\n this.removeItem(TemporaryCacheKeys.REDIRECT_REQUEST);\r\n };\r\n /**\r\n * Set cookies for IE\r\n * @param cName\r\n * @param cValue\r\n * @param expires\r\n */\r\n AuthCache.prototype.setItemCookie = function (cName, cValue, expires) {\r\n _super.prototype.setItemCookie.call(this, this.generateCacheKey(cName, true), cValue, expires);\r\n if (this.rollbackEnabled) {\r\n _super.prototype.setItemCookie.call(this, this.generateCacheKey(cName, false), cValue, expires);\r\n }\r\n };\r\n AuthCache.prototype.clearItemCookie = function (cName) {\r\n _super.prototype.clearItemCookie.call(this, this.generateCacheKey(cName, true));\r\n if (this.rollbackEnabled) {\r\n _super.prototype.clearItemCookie.call(this, this.generateCacheKey(cName, false));\r\n }\r\n };\r\n /**\r\n * get one item by key from cookies\r\n * @param cName\r\n */\r\n AuthCache.prototype.getItemCookie = function (cName) {\r\n return _super.prototype.getItemCookie.call(this, this.generateCacheKey(cName, true));\r\n };\r\n /**\r\n * Get all tokens of a certain type from the cache\r\n * @param clientId\r\n * @param homeAccountIdentifier\r\n * @param tokenType\r\n */\r\n AuthCache.prototype.getAllTokensByType = function (clientId, homeAccountIdentifier, tokenType) {\r\n var _this = this;\r\n var results = Object.keys(window[this.cacheLocation]).reduce(function (tokens, key) {\r\n var matchedTokenKey = _this.matchKeyForType(key, clientId, homeAccountIdentifier, tokenType);\r\n if (matchedTokenKey) {\r\n var value = _this.getItem(key);\r\n if (value) {\r\n try {\r\n var newAccessTokenCacheItem = new AccessTokenCacheItem(matchedTokenKey, JSON.parse(value));\r\n return tokens.concat([newAccessTokenCacheItem]);\r\n }\r\n catch (err) {\r\n // Skip cache items with non-valid JSON values\r\n return tokens;\r\n }\r\n }\r\n }\r\n return tokens;\r\n }, []);\r\n return results;\r\n };\r\n /**\r\n * Get all access tokens in the cache\r\n * @param clientId\r\n * @param homeAccountIdentifier\r\n */\r\n AuthCache.prototype.getAllAccessTokens = function (clientId, homeAccountIdentifier) {\r\n return this.getAllTokensByType(clientId, homeAccountIdentifier, ServerHashParamKeys.ACCESS_TOKEN);\r\n };\r\n /**\r\n * Get all id tokens in the cache in the form of AccessTokenCacheItem objects so they are\r\n * in a normalized format and can make use of the existing cached access token validation logic\r\n */\r\n AuthCache.prototype.getAllIdTokens = function (clientId, homeAccountIdentifier) {\r\n return this.getAllTokensByType(clientId, homeAccountIdentifier, ServerHashParamKeys.ID_TOKEN);\r\n };\r\n /**\r\n * Get all access and ID tokens in the cache\r\n * @param clientId\r\n * @param homeAccountIdentifier\r\n */\r\n AuthCache.prototype.getAllTokens = function (clientId, homeAccountIdentifier) {\r\n var accessTokens = this.getAllAccessTokens(clientId, homeAccountIdentifier);\r\n var idTokens = this.getAllIdTokens(clientId, homeAccountIdentifier);\r\n return __spreadArrays(accessTokens, idTokens);\r\n };\r\n /**\r\n * Returns whether or not interaction is currently in progress. Optionally scope it to just this clientId\r\n * @param forThisClient\r\n */\r\n AuthCache.prototype.isInteractionInProgress = function (matchClientId) {\r\n var clientId = this.getInteractionInProgress();\r\n if (matchClientId) {\r\n return clientId === this.clientId;\r\n }\r\n else {\r\n return !!clientId;\r\n }\r\n };\r\n /**\r\n * Returns the clientId of the interaction currently in progress\r\n */\r\n AuthCache.prototype.getInteractionInProgress = function () {\r\n return this.getTemporaryItem(this.generateCacheKey(TemporaryCacheKeys.INTERACTION_STATUS, false));\r\n };\r\n /**\r\n * Sets interaction in progress state\r\n * @param isInProgress\r\n */\r\n AuthCache.prototype.setInteractionInProgress = function (newInProgressValue) {\r\n if (newInProgressValue) {\r\n if (this.isInteractionInProgress(false)) {\r\n throw ClientAuthError.createAcquireTokenInProgressError();\r\n }\r\n else {\r\n // Ensure we don't overwrite interaction in progress for a different clientId\r\n this.setTemporaryItem(this.generateCacheKey(TemporaryCacheKeys.INTERACTION_STATUS, false), this.clientId);\r\n }\r\n }\r\n else if (!newInProgressValue && this.isInteractionInProgress(true)) {\r\n // Only remove if the current in progress interaction is for this clientId\r\n this.removeItem(this.generateCacheKey(TemporaryCacheKeys.INTERACTION_STATUS, false));\r\n }\r\n };\r\n /**\r\n * Return if the token renewal is still in progress\r\n *\r\n * @param stateValue\r\n */\r\n AuthCache.prototype.tokenRenewalInProgress = function (stateValue) {\r\n var renewStatus = this.getItem(AuthCache.generateTemporaryCacheKey(TemporaryCacheKeys.RENEW_STATUS, stateValue));\r\n return !!(renewStatus && renewStatus === Constants.inProgress);\r\n };\r\n /**\r\n * Clear all cookies\r\n */\r\n AuthCache.prototype.clearMsalCookie = function (state) {\r\n var _this = this;\r\n /*\r\n * If state is truthy, remove values associated with that request.\r\n * Otherwise, remove all MSAL cookies.\r\n */\r\n if (state) {\r\n this.clearItemCookie(AuthCache.generateTemporaryCacheKey(TemporaryCacheKeys.NONCE_IDTOKEN, state));\r\n this.clearItemCookie(AuthCache.generateTemporaryCacheKey(TemporaryCacheKeys.STATE_LOGIN, state));\r\n this.clearItemCookie(AuthCache.generateTemporaryCacheKey(TemporaryCacheKeys.LOGIN_REQUEST, state));\r\n this.clearItemCookie(AuthCache.generateTemporaryCacheKey(TemporaryCacheKeys.STATE_ACQ_TOKEN, state));\r\n }\r\n else {\r\n var cookies = document.cookie.split(\";\");\r\n cookies.forEach(function (cookieString) {\r\n var cookieName = cookieString.trim().split(\"=\")[0];\r\n if (cookieName.indexOf(Constants.cachePrefix) > -1) {\r\n _super.prototype.clearItemCookie.call(_this, cookieName);\r\n }\r\n });\r\n }\r\n };\r\n /**\r\n * Create acquireTokenAccountKey to cache account object\r\n * @param accountId\r\n * @param state\r\n */\r\n AuthCache.generateAcquireTokenAccountKey = function (accountId, state) {\r\n var stateId = RequestUtils.parseLibraryState(state).id;\r\n return \"\" + TemporaryCacheKeys.ACQUIRE_TOKEN_ACCOUNT + Constants.resourceDelimiter + accountId + Constants.resourceDelimiter + stateId;\r\n };\r\n /**\r\n * Create authorityKey to cache authority\r\n * @param state\r\n */\r\n AuthCache.generateAuthorityKey = function (state) {\r\n return AuthCache.generateTemporaryCacheKey(TemporaryCacheKeys.AUTHORITY, state);\r\n };\r\n /**\r\n * Generates the cache key for temporary cache items, using request state\r\n * @param tempCacheKey Cache key prefix\r\n * @param state Request state value\r\n */\r\n AuthCache.generateTemporaryCacheKey = function (tempCacheKey, state) {\r\n // Use the state id (a guid), in the interest of shorter key names, which is important for cookies.\r\n var stateId = RequestUtils.parseLibraryState(state).id;\r\n return \"\" + tempCacheKey + Constants.resourceDelimiter + stateId;\r\n };\r\n return AuthCache;\r\n}(BrowserStorage));\r\nexport { AuthCache };\r\n//# sourceMappingURL=AuthCache.js.map","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nimport { CryptoUtils } from \"./utils/CryptoUtils\";\r\nimport { StringUtils } from \"./utils/StringUtils\";\r\n/**\r\n * accountIdentifier combination of idToken.uid and idToken.utid\r\n * homeAccountIdentifier combination of clientInfo.uid and clientInfo.utid\r\n * userName idToken.preferred_username\r\n * name idToken.name\r\n * idToken idToken\r\n * sid idToken.sid - session identifier\r\n * environment idtoken.issuer (the authority that issues the token)\r\n */\r\nvar Account = /** @class */ (function () {\r\n /**\r\n * Creates an Account Object\r\n * @praram accountIdentifier\r\n * @param homeAccountIdentifier\r\n * @param userName\r\n * @param name\r\n * @param idToken\r\n * @param sid\r\n * @param environment\r\n */\r\n function Account(accountIdentifier, homeAccountIdentifier, userName, name, idTokenClaims, sid, environment) {\r\n this.accountIdentifier = accountIdentifier;\r\n this.homeAccountIdentifier = homeAccountIdentifier;\r\n this.userName = userName;\r\n this.name = name;\r\n // will be deprecated soon\r\n this.idToken = idTokenClaims;\r\n this.idTokenClaims = idTokenClaims;\r\n this.sid = sid;\r\n this.environment = environment;\r\n }\r\n /**\r\n * @hidden\r\n * @param idToken\r\n * @param clientInfo\r\n */\r\n Account.createAccount = function (idToken, clientInfo) {\r\n // create accountIdentifier\r\n var accountIdentifier = idToken.objectId || idToken.subject;\r\n // create homeAccountIdentifier\r\n var uid = clientInfo ? clientInfo.uid : \"\";\r\n var utid = clientInfo ? clientInfo.utid : \"\";\r\n var homeAccountIdentifier;\r\n if (!StringUtils.isEmpty(uid)) {\r\n homeAccountIdentifier = StringUtils.isEmpty(utid) ? CryptoUtils.base64Encode(uid) : CryptoUtils.base64Encode(uid) + \".\" + CryptoUtils.base64Encode(utid);\r\n }\r\n return new Account(accountIdentifier, homeAccountIdentifier, idToken.preferredName, idToken.name, idToken.claims, idToken.sid, idToken.issuer);\r\n };\r\n /**\r\n * Utils function to compare two Account objects - used to check if the same user account is logged in\r\n *\r\n * @param a1: Account object\r\n * @param a2: Account object\r\n */\r\n Account.compareAccounts = function (a1, a2) {\r\n if (!a1 || !a2) {\r\n return false;\r\n }\r\n if (a1.homeAccountIdentifier && a2.homeAccountIdentifier) {\r\n if (a1.homeAccountIdentifier === a2.homeAccountIdentifier) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n };\r\n return Account;\r\n}());\r\nexport { Account };\r\n//# sourceMappingURL=Account.js.map","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nimport { ClientAuthError } from \"../error/ClientAuthError\";\r\nimport { UrlUtils } from \"./UrlUtils\";\r\nimport { TemporaryCacheKeys, Constants } from \"./Constants\";\r\nimport { TimeUtils } from \"./TimeUtils\";\r\nvar WindowUtils = /** @class */ (function () {\r\n function WindowUtils() {\r\n }\r\n /**\r\n * @hidden\r\n * Checks if the current page is running in an iframe.\r\n * @ignore\r\n */\r\n WindowUtils.isInIframe = function () {\r\n return window.parent !== window;\r\n };\r\n /**\r\n * @hidden\r\n * Check if the current page is running in a popup.\r\n * @ignore\r\n */\r\n WindowUtils.isInPopup = function () {\r\n return !!(window.opener && window.opener !== window);\r\n };\r\n /**\r\n * @hidden\r\n * @param prefix\r\n * @param scopes\r\n * @param authority\r\n */\r\n WindowUtils.generateFrameName = function (prefix, requestSignature) {\r\n return \"\" + prefix + Constants.resourceDelimiter + requestSignature;\r\n };\r\n /**\r\n * @hidden\r\n * Polls an iframe until it loads a url with a hash\r\n * @ignore\r\n */\r\n WindowUtils.monitorIframeForHash = function (contentWindow, timeout, urlNavigate, logger) {\r\n return new Promise(function (resolve, reject) {\r\n /*\r\n * Polling for iframes can be purely timing based,\r\n * since we don't need to account for interaction.\r\n */\r\n var nowMark = TimeUtils.relativeNowMs();\r\n var timeoutMark = nowMark + timeout;\r\n logger.verbose(\"monitorWindowForIframe polling started\");\r\n var intervalId = setInterval(function () {\r\n if (TimeUtils.relativeNowMs() > timeoutMark) {\r\n logger.error(\"monitorIframeForHash unable to find hash in url, timing out\");\r\n logger.errorPii(\"monitorIframeForHash polling timed out for url: \" + urlNavigate);\r\n clearInterval(intervalId);\r\n reject(ClientAuthError.createTokenRenewalTimeoutError());\r\n return;\r\n }\r\n var href;\r\n try {\r\n /*\r\n * Will throw if cross origin,\r\n * which should be caught and ignored\r\n * since we need the interval to keep running while on STS UI.\r\n */\r\n href = contentWindow.location.href;\r\n }\r\n catch (e) { }\r\n if (href && UrlUtils.urlContainsHash(href)) {\r\n logger.verbose(\"monitorIframeForHash found url in hash\");\r\n clearInterval(intervalId);\r\n resolve(contentWindow.location.hash);\r\n }\r\n }, WindowUtils.POLLING_INTERVAL_MS);\r\n });\r\n };\r\n /**\r\n * @hidden\r\n * Polls a popup until it loads a url with a hash\r\n * @ignore\r\n */\r\n WindowUtils.monitorPopupForHash = function (contentWindow, timeout, urlNavigate, logger) {\r\n return new Promise(function (resolve, reject) {\r\n /*\r\n * Polling for popups needs to be tick-based,\r\n * since a non-trivial amount of time can be spent on interaction (which should not count against the timeout).\r\n */\r\n var maxTicks = timeout / WindowUtils.POLLING_INTERVAL_MS;\r\n var ticks = 0;\r\n logger.verbose(\"monitorWindowForHash polling started\");\r\n var intervalId = setInterval(function () {\r\n if (contentWindow.closed) {\r\n logger.error(\"monitorWindowForHash window closed\");\r\n clearInterval(intervalId);\r\n reject(ClientAuthError.createUserCancelledError());\r\n return;\r\n }\r\n var href;\r\n try {\r\n /*\r\n * Will throw if cross origin,\r\n * which should be caught and ignored\r\n * since we need the interval to keep running while on STS UI.\r\n */\r\n href = contentWindow.location.href;\r\n }\r\n catch (e) { }\r\n // Don't process blank pages or cross domain\r\n if (!href || href === \"about:blank\") {\r\n return;\r\n }\r\n /*\r\n * Only run clock when we are on same domain for popups\r\n * as popup operations can take a long time.\r\n */\r\n ticks++;\r\n if (href && UrlUtils.urlContainsHash(href)) {\r\n logger.verbose(\"monitorPopupForHash found url in hash\");\r\n clearInterval(intervalId);\r\n var hash = contentWindow.location.hash;\r\n WindowUtils.clearUrlFragment(contentWindow);\r\n resolve(hash);\r\n }\r\n else if (ticks > maxTicks) {\r\n logger.error(\"monitorPopupForHash unable to find hash in url, timing out\");\r\n logger.errorPii(\"monitorPopupForHash polling timed out for url: \" + urlNavigate);\r\n clearInterval(intervalId);\r\n reject(ClientAuthError.createTokenRenewalTimeoutError());\r\n }\r\n }, WindowUtils.POLLING_INTERVAL_MS);\r\n });\r\n };\r\n /**\r\n * @hidden\r\n * Loads iframe with authorization endpoint URL\r\n * @ignore\r\n */\r\n WindowUtils.loadFrame = function (urlNavigate, frameName, timeoutMs, logger) {\r\n var _this = this;\r\n /*\r\n * This trick overcomes iframe navigation in IE\r\n * IE does not load the page consistently in iframe\r\n */\r\n logger.infoPii(\"LoadFrame: \" + frameName);\r\n return new Promise(function (resolve, reject) {\r\n setTimeout(function () {\r\n var frameHandle = _this.loadFrameSync(urlNavigate, frameName, logger);\r\n if (!frameHandle) {\r\n reject(\"Unable to load iframe with name: \" + frameName);\r\n return;\r\n }\r\n resolve(frameHandle);\r\n }, timeoutMs);\r\n });\r\n };\r\n /**\r\n * @hidden\r\n * Loads the iframe synchronously when the navigateTimeFrame is set to `0`\r\n * @param urlNavigate\r\n * @param frameName\r\n * @param logger\r\n */\r\n WindowUtils.loadFrameSync = function (urlNavigate, frameName, logger) {\r\n var frameHandle = WindowUtils.addHiddenIFrame(frameName, logger);\r\n // returning to handle null in loadFrame, also to avoid null object access errors\r\n if (!frameHandle) {\r\n return null;\r\n }\r\n else if (frameHandle.src === \"\" || frameHandle.src === \"about:blank\") {\r\n frameHandle.src = urlNavigate;\r\n logger.infoPii(\"Frame Name : \" + frameName + \" Navigated to: \" + urlNavigate);\r\n }\r\n return frameHandle;\r\n };\r\n /**\r\n * @hidden\r\n * Adds the hidden iframe for silent token renewal.\r\n * @ignore\r\n */\r\n WindowUtils.addHiddenIFrame = function (iframeId, logger) {\r\n if (typeof iframeId === \"undefined\") {\r\n return null;\r\n }\r\n logger.info(\"Add msal iframe to document\");\r\n logger.infoPii(\"Add msal frame to document:\" + iframeId);\r\n var adalFrame = document.getElementById(iframeId);\r\n if (!adalFrame) {\r\n logger.verbose(\"Add msal iframe does not exist\");\r\n var ifr = document.createElement(\"iframe\");\r\n ifr.setAttribute(\"id\", iframeId);\r\n ifr.setAttribute(\"aria-hidden\", \"true\");\r\n ifr.style.visibility = \"hidden\";\r\n ifr.style.position = \"absolute\";\r\n ifr.style.width = ifr.style.height = \"0\";\r\n ifr.style.border = \"0\";\r\n ifr.setAttribute(\"sandbox\", \"allow-scripts allow-same-origin allow-forms\");\r\n adalFrame = document.getElementsByTagName(\"body\")[0].appendChild(ifr);\r\n }\r\n else {\r\n logger.verbose(\"Add msal iframe already exists\");\r\n }\r\n return adalFrame;\r\n };\r\n /**\r\n * @hidden\r\n * Removes a hidden iframe from the page.\r\n * @ignore\r\n */\r\n WindowUtils.removeHiddenIframe = function (iframe) {\r\n if (document.body === iframe.parentNode) {\r\n document.body.removeChild(iframe);\r\n }\r\n };\r\n /**\r\n * @hidden\r\n * Find and return the iframe element with the given hash\r\n * @ignore\r\n */\r\n WindowUtils.getIframeWithHash = function (hash) {\r\n var iframes = document.getElementsByTagName(\"iframe\");\r\n var iframeArray = Array.apply(null, Array(iframes.length)).map(function (iframe, index) { return iframes.item(index); }); // eslint-disable-line prefer-spread\r\n return iframeArray.filter(function (iframe) {\r\n try {\r\n return iframe.contentWindow.location.hash === hash;\r\n }\r\n catch (e) {\r\n return false;\r\n }\r\n })[0];\r\n };\r\n /**\r\n * @hidden\r\n * Returns an array of all the popups opened by MSAL\r\n * @ignore\r\n */\r\n WindowUtils.getPopups = function () {\r\n if (!window.openedWindows) {\r\n window.openedWindows = [];\r\n }\r\n return window.openedWindows;\r\n };\r\n /**\r\n * @hidden\r\n * Find and return the popup with the given hash\r\n * @ignore\r\n */\r\n WindowUtils.getPopUpWithHash = function (hash) {\r\n return WindowUtils.getPopups().filter(function (popup) {\r\n try {\r\n return popup.location.hash === hash;\r\n }\r\n catch (e) {\r\n return false;\r\n }\r\n })[0];\r\n };\r\n /**\r\n * @hidden\r\n * Add the popup to the known list of popups\r\n * @ignore\r\n */\r\n WindowUtils.trackPopup = function (popup) {\r\n WindowUtils.getPopups().push(popup);\r\n };\r\n /**\r\n * @hidden\r\n * Close all popups\r\n * @ignore\r\n */\r\n WindowUtils.closePopups = function () {\r\n WindowUtils.getPopups().forEach(function (popup) { return popup.close(); });\r\n };\r\n /**\r\n * @ignore\r\n *\r\n * blocks any login/acquireToken calls to reload from within a hidden iframe (generated for silent calls)\r\n */\r\n WindowUtils.blockReloadInHiddenIframes = function () {\r\n // return an error if called from the hidden iframe created by the msal js silent calls\r\n if (UrlUtils.urlContainsHash(window.location.hash) && WindowUtils.isInIframe()) {\r\n throw ClientAuthError.createBlockTokenRequestsInHiddenIframeError();\r\n }\r\n };\r\n /**\r\n *\r\n * @param cacheStorage\r\n */\r\n WindowUtils.checkIfBackButtonIsPressed = function (cacheStorage) {\r\n var redirectCache = cacheStorage.getItem(TemporaryCacheKeys.REDIRECT_REQUEST);\r\n // if redirect request is set and there is no hash\r\n if (redirectCache && !UrlUtils.urlContainsHash(window.location.hash)) {\r\n var splitCache = redirectCache.split(Constants.resourceDelimiter);\r\n splitCache.shift();\r\n var state = splitCache.length > 0 ? splitCache.join(Constants.resourceDelimiter) : null;\r\n cacheStorage.resetTempCacheItems(state);\r\n }\r\n };\r\n /**\r\n * Removes url fragment from browser url\r\n */\r\n WindowUtils.clearUrlFragment = function (contentWindow) {\r\n contentWindow.location.hash = \"\";\r\n // Office.js sets history.replaceState to null\r\n if (typeof contentWindow.history.replaceState === \"function\") {\r\n // Full removes \"#\" from url\r\n contentWindow.history.replaceState(null, null, \"\" + contentWindow.location.pathname + contentWindow.location.search);\r\n }\r\n };\r\n /**\r\n * @hidden\r\n * Interval in milliseconds that we poll a window\r\n * @ignore\r\n */\r\n WindowUtils.POLLING_INTERVAL_MS = 50;\r\n return WindowUtils;\r\n}());\r\nexport { WindowUtils };\r\n//# sourceMappingURL=WindowUtils.js.map","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nimport { __assign } from \"tslib\";\r\nimport { ResponseTypes, ServerHashParamKeys } from \"./Constants\";\r\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * @hidden\r\n */\r\nvar ResponseUtils = /** @class */ (function () {\r\n function ResponseUtils() {\r\n }\r\n ResponseUtils.setResponseIdToken = function (originalResponse, idTokenObj) {\r\n if (!originalResponse) {\r\n return null;\r\n }\r\n else if (!idTokenObj) {\r\n return originalResponse;\r\n }\r\n var exp = Number(idTokenObj.expiration);\r\n if (exp && !originalResponse.expiresOn) {\r\n originalResponse.expiresOn = new Date(exp * 1000);\r\n }\r\n return __assign(__assign({}, originalResponse), { idToken: idTokenObj, idTokenClaims: idTokenObj.claims, uniqueId: idTokenObj.objectId || idTokenObj.subject, tenantId: idTokenObj.tenantId });\r\n };\r\n ResponseUtils.buildAuthResponse = function (idToken, authResponse, serverAuthenticationRequest, account, scopes, accountState) {\r\n switch (serverAuthenticationRequest.responseType) {\r\n case ResponseTypes.id_token:\r\n var idTokenResponse = __assign(__assign({}, authResponse), { tokenType: ServerHashParamKeys.ID_TOKEN, account: account, scopes: scopes, accountState: accountState });\r\n idTokenResponse = ResponseUtils.setResponseIdToken(idTokenResponse, idToken);\r\n return (idTokenResponse.idToken) ? idTokenResponse : null;\r\n case ResponseTypes.id_token_token:\r\n var idTokeTokenResponse = ResponseUtils.setResponseIdToken(authResponse, idToken);\r\n return (idTokeTokenResponse && idTokeTokenResponse.accessToken && idTokeTokenResponse.idToken) ? idTokeTokenResponse : null;\r\n case ResponseTypes.token:\r\n var tokenResponse = ResponseUtils.setResponseIdToken(authResponse, idToken);\r\n return tokenResponse;\r\n default:\r\n return null;\r\n }\r\n };\r\n return ResponseUtils;\r\n}());\r\nexport { ResponseUtils };\r\n//# sourceMappingURL=ResponseUtils.js.map","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nimport { __awaiter, __generator } from \"tslib\";\r\n/**\r\n * @hidden\r\n */\r\nimport { Authority } from \"./Authority\";\r\nimport { StringUtils } from \"../utils/StringUtils\";\r\nimport { ClientConfigurationError } from \"../error/ClientConfigurationError\";\r\nvar AuthorityFactory = /** @class */ (function () {\r\n function AuthorityFactory() {\r\n }\r\n AuthorityFactory.saveMetadataFromNetwork = function (authorityInstance, telemetryManager, correlationId) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var metadata;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, authorityInstance.resolveEndpointsAsync(telemetryManager, correlationId)];\r\n case 1:\r\n metadata = _a.sent();\r\n this.metadataMap.set(authorityInstance.CanonicalAuthority, metadata);\r\n return [2 /*return*/, metadata];\r\n }\r\n });\r\n });\r\n };\r\n AuthorityFactory.getMetadata = function (authorityUrl) {\r\n return this.metadataMap.get(authorityUrl);\r\n };\r\n AuthorityFactory.saveMetadataFromConfig = function (authorityUrl, authorityMetadataJson) {\r\n try {\r\n if (authorityMetadataJson) {\r\n var parsedMetadata = JSON.parse(authorityMetadataJson);\r\n if (!parsedMetadata.authorization_endpoint || !parsedMetadata.end_session_endpoint || !parsedMetadata.issuer) {\r\n throw ClientConfigurationError.createInvalidAuthorityMetadataError();\r\n }\r\n this.metadataMap.set(authorityUrl, {\r\n AuthorizationEndpoint: parsedMetadata.authorization_endpoint,\r\n EndSessionEndpoint: parsedMetadata.end_session_endpoint,\r\n Issuer: parsedMetadata.issuer\r\n });\r\n }\r\n }\r\n catch (e) {\r\n throw ClientConfigurationError.createInvalidAuthorityMetadataError();\r\n }\r\n };\r\n /**\r\n * Create an authority object of the correct type based on the url\r\n * Performs basic authority validation - checks to see if the authority is of a valid type (eg aad, b2c)\r\n */\r\n AuthorityFactory.CreateInstance = function (authorityUrl, validateAuthority, authorityMetadata) {\r\n if (StringUtils.isEmpty(authorityUrl)) {\r\n return null;\r\n }\r\n if (authorityMetadata) {\r\n // todo: log statements\r\n this.saveMetadataFromConfig(authorityUrl, authorityMetadata);\r\n }\r\n return new Authority(authorityUrl, validateAuthority, this.metadataMap.get(authorityUrl));\r\n };\r\n AuthorityFactory.metadataMap = new Map();\r\n return AuthorityFactory;\r\n}());\r\nexport { AuthorityFactory };\r\n//# sourceMappingURL=AuthorityFactory.js.map","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nimport { __assign } from \"tslib\";\r\nimport { Logger } from \"./Logger\";\r\nimport { UrlUtils } from \"./utils/UrlUtils\";\r\n/**\r\n * Defaults for the Configuration Options\r\n */\r\nvar FRAME_TIMEOUT = 6000;\r\nvar OFFSET = 300;\r\nvar NAVIGATE_FRAME_WAIT = 500;\r\nvar DEFAULT_AUTH_OPTIONS = {\r\n clientId: \"\",\r\n authority: null,\r\n validateAuthority: true,\r\n authorityMetadata: \"\",\r\n knownAuthorities: [],\r\n redirectUri: function () { return UrlUtils.getCurrentUrl(); },\r\n postLogoutRedirectUri: function () { return UrlUtils.getCurrentUrl(); },\r\n navigateToLoginRequestUrl: true\r\n};\r\nvar DEFAULT_CACHE_OPTIONS = {\r\n cacheLocation: \"sessionStorage\",\r\n storeAuthStateInCookie: false\r\n};\r\nvar DEFAULT_SYSTEM_OPTIONS = {\r\n logger: new Logger(null),\r\n loadFrameTimeout: FRAME_TIMEOUT,\r\n tokenRenewalOffsetSeconds: OFFSET,\r\n navigateFrameWait: NAVIGATE_FRAME_WAIT\r\n};\r\nvar DEFAULT_FRAMEWORK_OPTIONS = {\r\n isAngular: false,\r\n unprotectedResources: new Array(),\r\n protectedResourceMap: new Map()\r\n};\r\n/**\r\n * MSAL function that sets the default options when not explicitly configured from app developer\r\n *\r\n * @param TAuthOptions\r\n * @param TCacheOptions\r\n * @param TSystemOptions\r\n * @param TFrameworkOptions\r\n * @param TAuthorityDataOptions\r\n *\r\n * @returns TConfiguration object\r\n */\r\nexport function buildConfiguration(_a) {\r\n var auth = _a.auth, _b = _a.cache, cache = _b === void 0 ? {} : _b, _c = _a.system, system = _c === void 0 ? {} : _c, _d = _a.framework, framework = _d === void 0 ? {} : _d;\r\n var overlayedConfig = {\r\n auth: __assign(__assign({}, DEFAULT_AUTH_OPTIONS), auth),\r\n cache: __assign(__assign({}, DEFAULT_CACHE_OPTIONS), cache),\r\n system: __assign(__assign({}, DEFAULT_SYSTEM_OPTIONS), system),\r\n framework: __assign(__assign({}, DEFAULT_FRAMEWORK_OPTIONS), framework)\r\n };\r\n return overlayedConfig;\r\n}\r\n//# sourceMappingURL=Configuration.js.map","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nimport { __extends } from \"tslib\";\r\nimport { AuthError } from \"./AuthError\";\r\nexport var ServerErrorMessage = {\r\n serverUnavailable: {\r\n code: \"server_unavailable\",\r\n desc: \"Server is temporarily unavailable.\"\r\n },\r\n unknownServerError: {\r\n code: \"unknown_server_error\"\r\n },\r\n};\r\n/**\r\n * Error thrown when there is an error with the server code, for example, unavailability.\r\n */\r\nvar ServerError = /** @class */ (function (_super) {\r\n __extends(ServerError, _super);\r\n function ServerError(errorCode, errorMessage) {\r\n var _this = _super.call(this, errorCode, errorMessage) || this;\r\n _this.name = \"ServerError\";\r\n Object.setPrototypeOf(_this, ServerError.prototype);\r\n return _this;\r\n }\r\n ServerError.createServerUnavailableError = function () {\r\n return new ServerError(ServerErrorMessage.serverUnavailable.code, ServerErrorMessage.serverUnavailable.desc);\r\n };\r\n ServerError.createUnknownServerError = function (errorDesc) {\r\n return new ServerError(ServerErrorMessage.unknownServerError.code, errorDesc);\r\n };\r\n return ServerError;\r\n}(AuthError));\r\nexport { ServerError };\r\n//# sourceMappingURL=ServerError.js.map","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nimport { __extends } from \"tslib\";\r\nimport { ServerError } from \"./ServerError\";\r\nexport var InteractionRequiredAuthErrorMessage = {\r\n interactionRequired: {\r\n code: \"interaction_required\"\r\n },\r\n consentRequired: {\r\n code: \"consent_required\"\r\n },\r\n loginRequired: {\r\n code: \"login_required\"\r\n },\r\n};\r\n/**\r\n * Error thrown when the user is required to perform an interactive token request.\r\n */\r\nvar InteractionRequiredAuthError = /** @class */ (function (_super) {\r\n __extends(InteractionRequiredAuthError, _super);\r\n function InteractionRequiredAuthError(errorCode, errorMessage) {\r\n var _this = _super.call(this, errorCode, errorMessage) || this;\r\n _this.name = \"InteractionRequiredAuthError\";\r\n Object.setPrototypeOf(_this, InteractionRequiredAuthError.prototype);\r\n return _this;\r\n }\r\n InteractionRequiredAuthError.isInteractionRequiredError = function (errorString) {\r\n var interactionRequiredCodes = [\r\n InteractionRequiredAuthErrorMessage.interactionRequired.code,\r\n InteractionRequiredAuthErrorMessage.consentRequired.code,\r\n InteractionRequiredAuthErrorMessage.loginRequired.code\r\n ];\r\n return errorString && interactionRequiredCodes.indexOf(errorString) > -1;\r\n };\r\n InteractionRequiredAuthError.createLoginRequiredAuthError = function (errorDesc) {\r\n return new InteractionRequiredAuthError(InteractionRequiredAuthErrorMessage.loginRequired.code, errorDesc);\r\n };\r\n InteractionRequiredAuthError.createInteractionRequiredAuthError = function (errorDesc) {\r\n return new InteractionRequiredAuthError(InteractionRequiredAuthErrorMessage.interactionRequired.code, errorDesc);\r\n };\r\n InteractionRequiredAuthError.createConsentRequiredAuthError = function (errorDesc) {\r\n return new InteractionRequiredAuthError(InteractionRequiredAuthErrorMessage.consentRequired.code, errorDesc);\r\n };\r\n return InteractionRequiredAuthError;\r\n}(ServerError));\r\nexport { InteractionRequiredAuthError };\r\n//# sourceMappingURL=InteractionRequiredAuthError.js.map","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nexport function buildResponseStateOnly(state) {\r\n return {\r\n uniqueId: \"\",\r\n tenantId: \"\",\r\n tokenType: \"\",\r\n idToken: null,\r\n idTokenClaims: null,\r\n accessToken: \"\",\r\n scopes: null,\r\n expiresOn: null,\r\n account: null,\r\n accountState: state,\r\n fromCache: false\r\n };\r\n}\r\n//# sourceMappingURL=AuthResponse.js.map","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nexport var EVENT_NAME_PREFIX = \"msal.\";\r\nexport var EVENT_NAME_KEY = \"event_name\";\r\nexport var START_TIME_KEY = \"start_time\";\r\nexport var ELAPSED_TIME_KEY = \"elapsed_time\";\r\nexport var TELEMETRY_BLOB_EVENT_NAMES = {\r\n MsalCorrelationIdConstStrKey: \"Microsoft.MSAL.correlation_id\",\r\n ApiTelemIdConstStrKey: \"msal.api_telem_id\",\r\n ApiIdConstStrKey: \"msal.api_id\",\r\n BrokerAppConstStrKey: \"Microsoft_MSAL_broker_app\",\r\n CacheEventCountConstStrKey: \"Microsoft_MSAL_cache_event_count\",\r\n HttpEventCountTelemetryBatchKey: \"Microsoft_MSAL_http_event_count\",\r\n IdpConstStrKey: \"Microsoft_MSAL_idp\",\r\n IsSilentTelemetryBatchKey: \"\",\r\n IsSuccessfulConstStrKey: \"Microsoft_MSAL_is_successful\",\r\n ResponseTimeConstStrKey: \"Microsoft_MSAL_response_time\",\r\n TenantIdConstStrKey: \"Microsoft_MSAL_tenant_id\",\r\n UiEventCountTelemetryBatchKey: \"Microsoft_MSAL_ui_event_count\"\r\n};\r\n// This is used to replace the real tenant in telemetry info\r\nexport var TENANT_PLACEHOLDER = \"<tenant>\";\r\n//# sourceMappingURL=TelemetryConstants.js.map","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar _a;\r\nimport { __extends } from \"tslib\";\r\nimport TelemetryEvent from \"./TelemetryEvent\";\r\nimport { TELEMETRY_BLOB_EVENT_NAMES } from \"./TelemetryConstants\";\r\nimport { scrubTenantFromUri, hashPersonalIdentifier, prependEventNamePrefix } from \"./TelemetryUtils\";\r\nexport var EVENT_KEYS = {\r\n AUTHORITY: prependEventNamePrefix(\"authority\"),\r\n AUTHORITY_TYPE: prependEventNamePrefix(\"authority_type\"),\r\n PROMPT: prependEventNamePrefix(\"ui_behavior\"),\r\n TENANT_ID: prependEventNamePrefix(\"tenant_id\"),\r\n USER_ID: prependEventNamePrefix(\"user_id\"),\r\n WAS_SUCESSFUL: prependEventNamePrefix(\"was_successful\"),\r\n API_ERROR_CODE: prependEventNamePrefix(\"api_error_code\"),\r\n LOGIN_HINT: prependEventNamePrefix(\"login_hint\")\r\n};\r\nexport var API_CODE;\r\n(function (API_CODE) {\r\n API_CODE[API_CODE[\"AcquireTokenRedirect\"] = 2001] = \"AcquireTokenRedirect\";\r\n API_CODE[API_CODE[\"AcquireTokenSilent\"] = 2002] = \"AcquireTokenSilent\";\r\n API_CODE[API_CODE[\"AcquireTokenPopup\"] = 2003] = \"AcquireTokenPopup\";\r\n API_CODE[API_CODE[\"LoginRedirect\"] = 2004] = \"LoginRedirect\";\r\n API_CODE[API_CODE[\"LoginPopup\"] = 2005] = \"LoginPopup\";\r\n API_CODE[API_CODE[\"Logout\"] = 2006] = \"Logout\";\r\n})(API_CODE || (API_CODE = {}));\r\nexport var API_EVENT_IDENTIFIER;\r\n(function (API_EVENT_IDENTIFIER) {\r\n API_EVENT_IDENTIFIER[\"AcquireTokenRedirect\"] = \"AcquireTokenRedirect\";\r\n API_EVENT_IDENTIFIER[\"AcquireTokenSilent\"] = \"AcquireTokenSilent\";\r\n API_EVENT_IDENTIFIER[\"AcquireTokenPopup\"] = \"AcquireTokenPopup\";\r\n API_EVENT_IDENTIFIER[\"LoginRedirect\"] = \"LoginRedirect\";\r\n API_EVENT_IDENTIFIER[\"LoginPopup\"] = \"LoginPopup\";\r\n API_EVENT_IDENTIFIER[\"Logout\"] = \"Logout\";\r\n})(API_EVENT_IDENTIFIER || (API_EVENT_IDENTIFIER = {}));\r\nvar mapEventIdentiferToCode = (_a = {},\r\n _a[API_EVENT_IDENTIFIER.AcquireTokenSilent] = API_CODE.AcquireTokenSilent,\r\n _a[API_EVENT_IDENTIFIER.AcquireTokenPopup] = API_CODE.AcquireTokenPopup,\r\n _a[API_EVENT_IDENTIFIER.AcquireTokenRedirect] = API_CODE.AcquireTokenRedirect,\r\n _a[API_EVENT_IDENTIFIER.LoginPopup] = API_CODE.LoginPopup,\r\n _a[API_EVENT_IDENTIFIER.LoginRedirect] = API_CODE.LoginRedirect,\r\n _a[API_EVENT_IDENTIFIER.Logout] = API_CODE.Logout,\r\n _a);\r\nvar ApiEvent = /** @class */ (function (_super) {\r\n __extends(ApiEvent, _super);\r\n function ApiEvent(correlationId, piiEnabled, apiEventIdentifier) {\r\n var _this = _super.call(this, prependEventNamePrefix(\"api_event\"), correlationId, apiEventIdentifier) || this;\r\n if (apiEventIdentifier) {\r\n _this.apiCode = mapEventIdentiferToCode[apiEventIdentifier];\r\n _this.apiEventIdentifier = apiEventIdentifier;\r\n }\r\n _this.piiEnabled = piiEnabled;\r\n return _this;\r\n }\r\n Object.defineProperty(ApiEvent.prototype, \"apiEventIdentifier\", {\r\n set: function (apiEventIdentifier) {\r\n this.event[TELEMETRY_BLOB_EVENT_NAMES.ApiTelemIdConstStrKey] = apiEventIdentifier;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(ApiEvent.prototype, \"apiCode\", {\r\n set: function (apiCode) {\r\n this.event[TELEMETRY_BLOB_EVENT_NAMES.ApiIdConstStrKey] = apiCode;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(ApiEvent.prototype, \"authority\", {\r\n set: function (uri) {\r\n this.event[EVENT_KEYS.AUTHORITY] = scrubTenantFromUri(uri).toLowerCase();\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(ApiEvent.prototype, \"apiErrorCode\", {\r\n set: function (errorCode) {\r\n this.event[EVENT_KEYS.API_ERROR_CODE] = errorCode;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(ApiEvent.prototype, \"tenantId\", {\r\n set: function (tenantId) {\r\n this.event[EVENT_KEYS.TENANT_ID] = this.piiEnabled && tenantId ?\r\n hashPersonalIdentifier(tenantId)\r\n : null;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(ApiEvent.prototype, \"accountId\", {\r\n set: function (accountId) {\r\n this.event[EVENT_KEYS.USER_ID] = this.piiEnabled && accountId ?\r\n hashPersonalIdentifier(accountId)\r\n : null;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(ApiEvent.prototype, \"wasSuccessful\", {\r\n get: function () {\r\n return this.event[EVENT_KEYS.WAS_SUCESSFUL] === true;\r\n },\r\n set: function (wasSuccessful) {\r\n this.event[EVENT_KEYS.WAS_SUCESSFUL] = wasSuccessful;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(ApiEvent.prototype, \"loginHint\", {\r\n set: function (loginHint) {\r\n this.event[EVENT_KEYS.LOGIN_HINT] = this.piiEnabled && loginHint ?\r\n hashPersonalIdentifier(loginHint)\r\n : null;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(ApiEvent.prototype, \"authorityType\", {\r\n set: function (authorityType) {\r\n this.event[EVENT_KEYS.AUTHORITY_TYPE] = authorityType.toLowerCase();\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(ApiEvent.prototype, \"promptType\", {\r\n set: function (promptType) {\r\n this.event[EVENT_KEYS.PROMPT] = promptType.toLowerCase();\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n return ApiEvent;\r\n}(TelemetryEvent));\r\nexport default ApiEvent;\r\n//# sourceMappingURL=ApiEvent.js.map","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nimport { TENANT_PLACEHOLDER, EVENT_NAME_PREFIX } from \"./TelemetryConstants\";\r\nimport { CryptoUtils } from \"../utils/CryptoUtils\";\r\nimport { UrlUtils } from \"../utils/UrlUtils\";\r\nimport { Authority } from \"../authority/Authority\";\r\nexport var scrubTenantFromUri = function (uri) {\r\n var url = UrlUtils.GetUrlComponents(uri);\r\n // validate trusted host\r\n if (Authority.isAdfs(uri)) {\r\n /**\r\n * returning what was passed because the library needs to work with uris that are non\r\n * AAD trusted but passed by users such as B2C or others.\r\n * HTTP Events for instance can take a url to the open id config endpoint\r\n */\r\n return uri;\r\n }\r\n var pathParams = url.PathSegments;\r\n if (pathParams && pathParams.length >= 2) {\r\n var tenantPosition = pathParams[1] === \"tfp\" ? 2 : 1;\r\n if (tenantPosition < pathParams.length) {\r\n pathParams[tenantPosition] = TENANT_PLACEHOLDER;\r\n }\r\n }\r\n return url.Protocol + \"//\" + url.HostNameAndPort + \"/\" + pathParams.join(\"/\");\r\n};\r\nexport var hashPersonalIdentifier = function (valueToHash) {\r\n /*\r\n * TODO sha256 this\r\n * Current test runner is being funny with node libs that are webpacked anyway\r\n * need a different solution\r\n */\r\n return CryptoUtils.base64Encode(valueToHash);\r\n};\r\nexport var prependEventNamePrefix = function (suffix) { return \"\" + EVENT_NAME_PREFIX + (suffix || \"\"); };\r\nexport var supportsBrowserPerformance = function () { return !!(typeof window !== \"undefined\" &&\r\n \"performance\" in window &&\r\n window.performance.mark &&\r\n window.performance.measure); };\r\nexport var endBrowserPerformanceMeasurement = function (measureName, startMark, endMark) {\r\n if (supportsBrowserPerformance()) {\r\n window.performance.mark(endMark);\r\n window.performance.measure(measureName, startMark, endMark);\r\n window.performance.clearMeasures(measureName);\r\n window.performance.clearMarks(startMark);\r\n window.performance.clearMarks(endMark);\r\n }\r\n};\r\nexport var startBrowserPerformanceMeasurement = function (startMark) {\r\n if (supportsBrowserPerformance()) {\r\n window.performance.mark(startMark);\r\n }\r\n};\r\n//# sourceMappingURL=TelemetryUtils.js.map","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nimport { __assign } from \"tslib\";\r\nimport { TELEMETRY_BLOB_EVENT_NAMES, EVENT_NAME_KEY, START_TIME_KEY, ELAPSED_TIME_KEY } from \"./TelemetryConstants\";\r\nimport { prependEventNamePrefix, startBrowserPerformanceMeasurement, endBrowserPerformanceMeasurement } from \"./TelemetryUtils\";\r\nimport { CryptoUtils } from \"../utils/CryptoUtils\";\r\nvar TelemetryEvent = /** @class */ (function () {\r\n function TelemetryEvent(eventName, correlationId, eventLabel) {\r\n var _a;\r\n this.eventId = CryptoUtils.createNewGuid();\r\n this.label = eventLabel;\r\n this.event = (_a = {},\r\n _a[prependEventNamePrefix(EVENT_NAME_KEY)] = eventName,\r\n _a[prependEventNamePrefix(ELAPSED_TIME_KEY)] = -1,\r\n _a[\"\" + TELEMETRY_BLOB_EVENT_NAMES.MsalCorrelationIdConstStrKey] = correlationId,\r\n _a);\r\n }\r\n TelemetryEvent.prototype.setElapsedTime = function (time) {\r\n this.event[prependEventNamePrefix(ELAPSED_TIME_KEY)] = time;\r\n };\r\n TelemetryEvent.prototype.stop = function () {\r\n // Set duration of event\r\n this.setElapsedTime(+Date.now() - +this.startTimestamp);\r\n endBrowserPerformanceMeasurement(this.displayName, this.perfStartMark, this.perfEndMark);\r\n };\r\n TelemetryEvent.prototype.start = function () {\r\n this.startTimestamp = Date.now();\r\n this.event[prependEventNamePrefix(START_TIME_KEY)] = this.startTimestamp;\r\n startBrowserPerformanceMeasurement(this.perfStartMark);\r\n };\r\n Object.defineProperty(TelemetryEvent.prototype, \"telemetryCorrelationId\", {\r\n get: function () {\r\n return this.event[\"\" + TELEMETRY_BLOB_EVENT_NAMES.MsalCorrelationIdConstStrKey];\r\n },\r\n set: function (value) {\r\n this.event[\"\" + TELEMETRY_BLOB_EVENT_NAMES.MsalCorrelationIdConstStrKey] = value;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(TelemetryEvent.prototype, \"eventName\", {\r\n get: function () {\r\n return this.event[prependEventNamePrefix(EVENT_NAME_KEY)];\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n TelemetryEvent.prototype.get = function () {\r\n return __assign(__assign({}, this.event), { eventId: this.eventId });\r\n };\r\n Object.defineProperty(TelemetryEvent.prototype, \"key\", {\r\n get: function () {\r\n return this.telemetryCorrelationId + \"_\" + this.eventId + \"-\" + this.eventName;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(TelemetryEvent.prototype, \"displayName\", {\r\n get: function () {\r\n return \"Msal-\" + this.label + \"-\" + this.telemetryCorrelationId;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(TelemetryEvent.prototype, \"perfStartMark\", {\r\n get: function () {\r\n return \"start-\" + this.key;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(TelemetryEvent.prototype, \"perfEndMark\", {\r\n get: function () {\r\n return \"end-\" + this.key;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n return TelemetryEvent;\r\n}());\r\nexport default TelemetryEvent;\r\n//# sourceMappingURL=TelemetryEvent.js.map","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nimport { __extends } from \"tslib\";\r\nimport { TELEMETRY_BLOB_EVENT_NAMES } from \"./TelemetryConstants\";\r\nimport TelemetryEvent from \"./TelemetryEvent\";\r\nimport { prependEventNamePrefix } from \"./TelemetryUtils\";\r\nvar DefaultEvent = /** @class */ (function (_super) {\r\n __extends(DefaultEvent, _super);\r\n // TODO Platform Type\r\n function DefaultEvent(platform, correlationId, clientId, eventCount) {\r\n var _this = _super.call(this, prependEventNamePrefix(\"default_event\"), correlationId, \"DefaultEvent\") || this;\r\n _this.event[prependEventNamePrefix(\"client_id\")] = clientId;\r\n _this.event[prependEventNamePrefix(\"sdk_plaform\")] = platform.sdk;\r\n _this.event[prependEventNamePrefix(\"sdk_version\")] = platform.sdkVersion;\r\n _this.event[prependEventNamePrefix(\"application_name\")] = platform.applicationName;\r\n _this.event[prependEventNamePrefix(\"application_version\")] = platform.applicationVersion;\r\n _this.event[prependEventNamePrefix(\"effective_connection_speed\")] = platform.networkInformation && platform.networkInformation.connectionSpeed;\r\n _this.event[\"\" + TELEMETRY_BLOB_EVENT_NAMES.UiEventCountTelemetryBatchKey] = _this.getEventCount(prependEventNamePrefix(\"ui_event\"), eventCount);\r\n _this.event[\"\" + TELEMETRY_BLOB_EVENT_NAMES.HttpEventCountTelemetryBatchKey] = _this.getEventCount(prependEventNamePrefix(\"http_event\"), eventCount);\r\n _this.event[\"\" + TELEMETRY_BLOB_EVENT_NAMES.CacheEventCountConstStrKey] = _this.getEventCount(prependEventNamePrefix(\"cache_event\"), eventCount);\r\n return _this;\r\n // / Device id?\r\n }\r\n DefaultEvent.prototype.getEventCount = function (eventName, eventCount) {\r\n if (!eventCount[eventName]) {\r\n return 0;\r\n }\r\n return eventCount[eventName];\r\n };\r\n return DefaultEvent;\r\n}(TelemetryEvent));\r\nexport default DefaultEvent;\r\n//# sourceMappingURL=DefaultEvent.js.map","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nimport { __extends } from \"tslib\";\r\nimport TelemetryEvent from \"./TelemetryEvent\";\r\nimport { scrubTenantFromUri, prependEventNamePrefix } from \"./TelemetryUtils\";\r\nimport { ServerRequestParameters } from \"../ServerRequestParameters\";\r\nexport var EVENT_KEYS = {\r\n HTTP_PATH: prependEventNamePrefix(\"http_path\"),\r\n USER_AGENT: prependEventNamePrefix(\"user_agent\"),\r\n QUERY_PARAMETERS: prependEventNamePrefix(\"query_parameters\"),\r\n API_VERSION: prependEventNamePrefix(\"api_version\"),\r\n RESPONSE_CODE: prependEventNamePrefix(\"response_code\"),\r\n O_AUTH_ERROR_CODE: prependEventNamePrefix(\"oauth_error_code\"),\r\n HTTP_METHOD: prependEventNamePrefix(\"http_method\"),\r\n REQUEST_ID_HEADER: prependEventNamePrefix(\"request_id_header\"),\r\n SPE_INFO: prependEventNamePrefix(\"spe_info\"),\r\n SERVER_ERROR_CODE: prependEventNamePrefix(\"server_error_code\"),\r\n SERVER_SUB_ERROR_CODE: prependEventNamePrefix(\"server_sub_error_code\"),\r\n URL: prependEventNamePrefix(\"url\")\r\n};\r\nvar HttpEvent = /** @class */ (function (_super) {\r\n __extends(HttpEvent, _super);\r\n function HttpEvent(correlationId, eventLabel) {\r\n return _super.call(this, prependEventNamePrefix(\"http_event\"), correlationId, eventLabel) || this;\r\n }\r\n Object.defineProperty(HttpEvent.prototype, \"url\", {\r\n set: function (url) {\r\n var scrubbedUri = scrubTenantFromUri(url);\r\n this.event[EVENT_KEYS.URL] = scrubbedUri && scrubbedUri.toLowerCase();\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(HttpEvent.prototype, \"httpPath\", {\r\n set: function (httpPath) {\r\n this.event[EVENT_KEYS.HTTP_PATH] = scrubTenantFromUri(httpPath).toLowerCase();\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(HttpEvent.prototype, \"userAgent\", {\r\n set: function (userAgent) {\r\n this.event[EVENT_KEYS.USER_AGENT] = userAgent;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(HttpEvent.prototype, \"queryParams\", {\r\n set: function (queryParams) {\r\n this.event[EVENT_KEYS.QUERY_PARAMETERS] = ServerRequestParameters.generateQueryParametersString(queryParams);\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(HttpEvent.prototype, \"apiVersion\", {\r\n set: function (apiVersion) {\r\n this.event[EVENT_KEYS.API_VERSION] = apiVersion.toLowerCase();\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(HttpEvent.prototype, \"httpResponseStatus\", {\r\n set: function (statusCode) {\r\n this.event[EVENT_KEYS.RESPONSE_CODE] = statusCode;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(HttpEvent.prototype, \"oAuthErrorCode\", {\r\n set: function (errorCode) {\r\n this.event[EVENT_KEYS.O_AUTH_ERROR_CODE] = errorCode;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(HttpEvent.prototype, \"httpMethod\", {\r\n set: function (httpMethod) {\r\n this.event[EVENT_KEYS.HTTP_METHOD] = httpMethod;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(HttpEvent.prototype, \"requestIdHeader\", {\r\n set: function (requestIdHeader) {\r\n this.event[EVENT_KEYS.REQUEST_ID_HEADER] = requestIdHeader;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(HttpEvent.prototype, \"speInfo\", {\r\n /**\r\n * Indicates whether the request was executed on a ring serving SPE traffic.\r\n * An empty string indicates this occurred on an outer ring, and the string \"I\"\r\n * indicates the request occurred on the inner ring\r\n */\r\n set: function (speInfo) {\r\n this.event[EVENT_KEYS.SPE_INFO] = speInfo;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(HttpEvent.prototype, \"serverErrorCode\", {\r\n set: function (errorCode) {\r\n this.event[EVENT_KEYS.SERVER_ERROR_CODE] = errorCode;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(HttpEvent.prototype, \"serverSubErrorCode\", {\r\n set: function (subErrorCode) {\r\n this.event[EVENT_KEYS.SERVER_SUB_ERROR_CODE] = subErrorCode;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n return HttpEvent;\r\n}(TelemetryEvent));\r\nexport default HttpEvent;\r\n//# sourceMappingURL=HttpEvent.js.map","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nimport { __assign, __spreadArrays } from \"tslib\";\r\nimport DefaultEvent from \"./DefaultEvent\";\r\nimport { Constants } from \"../utils/Constants\";\r\nimport ApiEvent from \"./ApiEvent\";\r\nimport HttpEvent from \"./HttpEvent\";\r\nimport { version as libraryVersion } from \"../packageMetadata\";\r\nvar TelemetryManager = /** @class */ (function () {\r\n function TelemetryManager(config, telemetryEmitter, logger) {\r\n // correlation Id to list of events\r\n this.completedEvents = {};\r\n // event key to event\r\n this.inProgressEvents = {};\r\n // correlation id to map of eventname to count\r\n this.eventCountByCorrelationId = {};\r\n // Implement after API EVENT\r\n this.onlySendFailureTelemetry = false;\r\n // TODO THROW if bad options\r\n this.telemetryPlatform = __assign({ sdk: Constants.libraryName, sdkVersion: libraryVersion, networkInformation: {\r\n // @ts-ignore\r\n connectionSpeed: typeof navigator !== \"undefined\" && navigator.connection && navigator.connection.effectiveType\r\n } }, config.platform);\r\n this.clientId = config.clientId;\r\n this.onlySendFailureTelemetry = config.onlySendFailureTelemetry;\r\n /*\r\n * TODO, when i get to wiring this through, think about what it means if\r\n * a developer does not implement telem at all, we still instrument, but telemetryEmitter can be\r\n * optional?\r\n */\r\n this.telemetryEmitter = telemetryEmitter;\r\n this.logger = logger;\r\n }\r\n TelemetryManager.getTelemetrymanagerStub = function (clientId, logger) {\r\n var applicationName = \"UnSetStub\";\r\n var applicationVersion = \"0.0\";\r\n var telemetryEmitter = function () { };\r\n var telemetryPlatform = {\r\n applicationName: applicationName,\r\n applicationVersion: applicationVersion\r\n };\r\n var telemetryManagerConfig = {\r\n platform: telemetryPlatform,\r\n clientId: clientId\r\n };\r\n return new this(telemetryManagerConfig, telemetryEmitter, logger);\r\n };\r\n TelemetryManager.prototype.startEvent = function (event) {\r\n this.logger.verbose(\"Telemetry Event started: \" + event.key);\r\n if (!this.telemetryEmitter) {\r\n return;\r\n }\r\n event.start();\r\n this.inProgressEvents[event.key] = event;\r\n };\r\n TelemetryManager.prototype.stopEvent = function (event) {\r\n this.logger.verbose(\"Telemetry Event stopped: \" + event.key);\r\n if (!this.telemetryEmitter || !this.inProgressEvents[event.key]) {\r\n return;\r\n }\r\n event.stop();\r\n this.incrementEventCount(event);\r\n var completedEvents = this.completedEvents[event.telemetryCorrelationId];\r\n this.completedEvents[event.telemetryCorrelationId] = __spreadArrays((completedEvents || []), [event]);\r\n delete this.inProgressEvents[event.key];\r\n };\r\n TelemetryManager.prototype.flush = function (correlationId) {\r\n var _this = this;\r\n this.logger.verbose(\"Flushing telemetry events: \" + correlationId);\r\n // If there is only unfinished events should this still return them?\r\n if (!this.telemetryEmitter || !this.completedEvents[correlationId]) {\r\n return;\r\n }\r\n var orphanedEvents = this.getOrphanedEvents(correlationId);\r\n orphanedEvents.forEach(function (event) { return _this.incrementEventCount(event); });\r\n var eventsToFlush = __spreadArrays(this.completedEvents[correlationId], orphanedEvents);\r\n delete this.completedEvents[correlationId];\r\n var eventCountsToFlush = this.eventCountByCorrelationId[correlationId];\r\n delete this.eventCountByCorrelationId[correlationId];\r\n // TODO add funcitonality for onlyFlushFailures after implementing api event? ??\r\n if (!eventsToFlush || !eventsToFlush.length) {\r\n return;\r\n }\r\n var defaultEvent = new DefaultEvent(this.telemetryPlatform, correlationId, this.clientId, eventCountsToFlush);\r\n var eventsWithDefaultEvent = __spreadArrays(eventsToFlush, [defaultEvent]);\r\n this.telemetryEmitter(eventsWithDefaultEvent.map(function (e) { return e.get(); }));\r\n };\r\n TelemetryManager.prototype.createAndStartApiEvent = function (correlationId, apiEventIdentifier) {\r\n var apiEvent = new ApiEvent(correlationId, this.logger.isPiiLoggingEnabled(), apiEventIdentifier);\r\n this.startEvent(apiEvent);\r\n return apiEvent;\r\n };\r\n TelemetryManager.prototype.stopAndFlushApiEvent = function (correlationId, apiEvent, wasSuccessful, errorCode) {\r\n apiEvent.wasSuccessful = wasSuccessful;\r\n if (errorCode) {\r\n apiEvent.apiErrorCode = errorCode;\r\n }\r\n this.stopEvent(apiEvent);\r\n this.flush(correlationId);\r\n };\r\n TelemetryManager.prototype.createAndStartHttpEvent = function (correlation, httpMethod, url, eventLabel) {\r\n var httpEvent = new HttpEvent(correlation, eventLabel);\r\n httpEvent.url = url;\r\n httpEvent.httpMethod = httpMethod;\r\n this.startEvent(httpEvent);\r\n return httpEvent;\r\n };\r\n TelemetryManager.prototype.incrementEventCount = function (event) {\r\n var _a;\r\n /*\r\n * TODO, name cache event different?\r\n * if type is cache event, change name\r\n */\r\n var eventName = event.eventName;\r\n var eventCount = this.eventCountByCorrelationId[event.telemetryCorrelationId];\r\n if (!eventCount) {\r\n this.eventCountByCorrelationId[event.telemetryCorrelationId] = (_a = {},\r\n _a[eventName] = 1,\r\n _a);\r\n }\r\n else {\r\n eventCount[eventName] = eventCount[eventName] ? eventCount[eventName] + 1 : 1;\r\n }\r\n };\r\n TelemetryManager.prototype.getOrphanedEvents = function (correlationId) {\r\n var _this = this;\r\n return Object.keys(this.inProgressEvents)\r\n .reduce(function (memo, eventKey) {\r\n if (eventKey.indexOf(correlationId) !== -1) {\r\n var event_1 = _this.inProgressEvents[eventKey];\r\n delete _this.inProgressEvents[eventKey];\r\n return __spreadArrays(memo, [event_1]);\r\n }\r\n return memo;\r\n }, []);\r\n };\r\n return TelemetryManager;\r\n}());\r\nexport default TelemetryManager;\r\n//# sourceMappingURL=TelemetryManager.js.map","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nimport { ScopeSet } from \"../ScopeSet\";\r\nimport { UrlUtils } from \"./UrlUtils\";\r\n/**\r\n * @hidden\r\n */\r\nvar AuthCacheUtils = /** @class */ (function () {\r\n function AuthCacheUtils() {\r\n }\r\n AuthCacheUtils.filterTokenCacheItemsByScope = function (tokenCacheItems, requestScopes) {\r\n return tokenCacheItems.filter(function (cacheItem) {\r\n var cachedScopes = cacheItem.key.scopes.split(\" \");\r\n var searchScopes = ScopeSet.removeDefaultScopes(requestScopes);\r\n // If requestScopes contain only default scopes search for default scopes otherwise search for everything but default scopes\r\n return searchScopes.length === 0 ? ScopeSet.containsScope(cachedScopes, requestScopes) : ScopeSet.containsScope(cachedScopes, searchScopes);\r\n });\r\n };\r\n AuthCacheUtils.filterTokenCacheItemsByAuthority = function (tokenCacheItems, authority) {\r\n return tokenCacheItems.filter(function (cacheItem) { return UrlUtils.CanonicalizeUri(cacheItem.key.authority) === authority; });\r\n };\r\n AuthCacheUtils.filterTokenCacheItemsByDomain = function (tokenCacheItems, requestDomain) {\r\n return tokenCacheItems.filter(function (cacheItem) {\r\n var cacheItemDomain = UrlUtils.GetUrlComponents(cacheItem.key.authority).HostNameAndPort;\r\n return cacheItemDomain === requestDomain;\r\n });\r\n };\r\n return AuthCacheUtils;\r\n}());\r\nexport { AuthCacheUtils };\r\n//# sourceMappingURL=AuthCacheUtils.js.map","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nimport { __assign, __awaiter, __generator } from \"tslib\";\r\nimport { AccessTokenKey } from \"./cache/AccessTokenKey\";\r\nimport { AccessTokenValue } from \"./cache/AccessTokenValue\";\r\nimport { ServerRequestParameters } from \"./ServerRequestParameters\";\r\nimport { AuthorityType } from \"./authority/Authority\";\r\nimport { ClientInfo } from \"./ClientInfo\";\r\nimport { IdToken } from \"./IdToken\";\r\nimport { AuthCache } from \"./cache/AuthCache\";\r\nimport { Account } from \"./Account\";\r\nimport { ScopeSet } from \"./ScopeSet\";\r\nimport { StringUtils } from \"./utils/StringUtils\";\r\nimport { WindowUtils } from \"./utils/WindowUtils\";\r\nimport { TokenUtils } from \"./utils/TokenUtils\";\r\nimport { TimeUtils } from \"./utils/TimeUtils\";\r\nimport { UrlUtils } from \"./utils/UrlUtils\";\r\nimport { RequestUtils } from \"./utils/RequestUtils\";\r\nimport { ResponseUtils } from \"./utils/ResponseUtils\";\r\nimport { AuthorityFactory } from \"./authority/AuthorityFactory\";\r\nimport { buildConfiguration } from \"./Configuration\";\r\nimport { ClientConfigurationError } from \"./error/ClientConfigurationError\";\r\nimport { AuthError } from \"./error/AuthError\";\r\nimport { ClientAuthError, ClientAuthErrorMessage } from \"./error/ClientAuthError\";\r\nimport { ServerError } from \"./error/ServerError\";\r\nimport { InteractionRequiredAuthError } from \"./error/InteractionRequiredAuthError\";\r\nimport { buildResponseStateOnly } from \"./AuthResponse\";\r\nimport TelemetryManager from \"./telemetry/TelemetryManager\";\r\nimport { API_EVENT_IDENTIFIER } from \"./telemetry/ApiEvent\";\r\nimport { Constants, ServerHashParamKeys, ResponseTypes, TemporaryCacheKeys, PersistentCacheKeys, ErrorCacheKeys, FramePrefix } from \"./utils/Constants\";\r\nimport { CryptoUtils } from \"./utils/CryptoUtils\";\r\nimport { TrustedAuthority } from \"./authority/TrustedAuthority\";\r\nimport { AuthCacheUtils } from \"./utils/AuthCacheUtils\";\r\n// default authority\r\nvar DEFAULT_AUTHORITY = \"https://login.microsoftonline.com/common\";\r\n/**\r\n * UserAgentApplication class\r\n *\r\n * Object Instance that the developer can use to make loginXX OR acquireTokenXX functions\r\n */\r\nvar UserAgentApplication = /** @class */ (function () {\r\n /**\r\n * @constructor\r\n * Constructor for the UserAgentApplication used to instantiate the UserAgentApplication object\r\n *\r\n * Important attributes in the Configuration object for auth are:\r\n * - clientID: the application ID of your application.\r\n * You can obtain one by registering your application with our Application registration portal : https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/RegisteredAppsPreview\r\n * - authority: the authority URL for your application.\r\n *\r\n * In Azure AD, authority is a URL indicating the Azure active directory that MSAL uses to obtain tokens.\r\n * It is of the form https://login.microsoftonline.com/<Enter_the_Tenant_Info_Here>.\r\n * If your application supports Accounts in one organizational directory, replace \"Enter_the_Tenant_Info_Here\" value with the Tenant Id or Tenant name (for example, contoso.microsoft.com).\r\n * If your application supports Accounts in any organizational directory, replace \"Enter_the_Tenant_Info_Here\" value with organizations.\r\n * If your application supports Accounts in any organizational directory and personal Microsoft accounts, replace \"Enter_the_Tenant_Info_Here\" value with common.\r\n * To restrict support to Personal Microsoft accounts only, replace \"Enter_the_Tenant_Info_Here\" value with consumers.\r\n *\r\n *\r\n * In Azure B2C, authority is of the form https://<instance>/tfp/<tenant>/<policyName>/\r\n *\r\n * @param {@link (Configuration:type)} configuration object for the MSAL UserAgentApplication instance\r\n */\r\n function UserAgentApplication(configuration) {\r\n // callbacks for token/error\r\n this.authResponseCallback = null;\r\n this.tokenReceivedCallback = null;\r\n this.errorReceivedCallback = null;\r\n // Set the Configuration\r\n this.config = buildConfiguration(configuration);\r\n this.logger = this.config.system.logger;\r\n this.clientId = this.config.auth.clientId;\r\n this.inCookie = this.config.cache.storeAuthStateInCookie;\r\n this.telemetryManager = this.getTelemetryManagerFromConfig(this.config.system.telemetry, this.clientId);\r\n TrustedAuthority.setTrustedAuthoritiesFromConfig(this.config.auth.validateAuthority, this.config.auth.knownAuthorities);\r\n AuthorityFactory.saveMetadataFromConfig(this.config.auth.authority, this.config.auth.authorityMetadata);\r\n // if no authority is passed, set the default: \"https://login.microsoftonline.com/common\"\r\n this.authority = this.config.auth.authority || DEFAULT_AUTHORITY;\r\n // cache keys msal - typescript throws an error if any value other than \"localStorage\" or \"sessionStorage\" is passed\r\n this.cacheStorage = new AuthCache(this.clientId, this.config.cache.cacheLocation, this.inCookie);\r\n // Initialize window handling code\r\n if (!window.activeRenewals) {\r\n window.activeRenewals = {};\r\n }\r\n if (!window.renewStates) {\r\n window.renewStates = [];\r\n }\r\n if (!window.callbackMappedToRenewStates) {\r\n window.callbackMappedToRenewStates = {};\r\n }\r\n if (!window.promiseMappedToRenewStates) {\r\n window.promiseMappedToRenewStates = {};\r\n }\r\n window.msal = this;\r\n var urlHash = window.location.hash;\r\n var urlContainsHash = UrlUtils.urlContainsHash(urlHash);\r\n // check if back button is pressed\r\n WindowUtils.checkIfBackButtonIsPressed(this.cacheStorage);\r\n // On the server 302 - Redirect, handle this\r\n if (urlContainsHash && this.cacheStorage.isInteractionInProgress(true)) {\r\n var stateInfo = this.getResponseState(urlHash);\r\n if (stateInfo.method === Constants.interactionTypeRedirect) {\r\n this.handleRedirectAuthenticationResponse(urlHash);\r\n }\r\n }\r\n }\r\n Object.defineProperty(UserAgentApplication.prototype, \"authority\", {\r\n /**\r\n * Method to manage the authority URL.\r\n *\r\n * @returns {string} authority\r\n */\r\n get: function () {\r\n return this.authorityInstance.CanonicalAuthority;\r\n },\r\n /**\r\n * setter for the authority URL\r\n * @param {string} authority\r\n */\r\n // If the developer passes an authority, create an instance\r\n set: function (val) {\r\n this.authorityInstance = AuthorityFactory.CreateInstance(val, this.config.auth.validateAuthority);\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n /**\r\n * Get the current authority instance from the MSAL configuration object\r\n *\r\n * @returns {@link Authority} authority instance\r\n */\r\n UserAgentApplication.prototype.getAuthorityInstance = function () {\r\n return this.authorityInstance;\r\n };\r\n UserAgentApplication.prototype.handleRedirectCallback = function (authOrTokenCallback, errorReceivedCallback) {\r\n if (!authOrTokenCallback) {\r\n throw ClientConfigurationError.createInvalidCallbackObjectError(authOrTokenCallback);\r\n }\r\n // Set callbacks\r\n if (errorReceivedCallback) {\r\n this.tokenReceivedCallback = authOrTokenCallback;\r\n this.errorReceivedCallback = errorReceivedCallback;\r\n this.logger.warning(\"This overload for callback is deprecated - please change the format of the callbacks to a single callback as shown: (err: AuthError, response: AuthResponse).\");\r\n }\r\n else {\r\n this.authResponseCallback = authOrTokenCallback;\r\n }\r\n if (this.redirectError) {\r\n this.authErrorHandler(Constants.interactionTypeRedirect, this.redirectError, this.redirectResponse);\r\n }\r\n else if (this.redirectResponse) {\r\n this.authResponseHandler(Constants.interactionTypeRedirect, this.redirectResponse);\r\n }\r\n };\r\n /**\r\n * Public API to verify if the URL contains the hash with known properties\r\n * @param hash\r\n */\r\n UserAgentApplication.prototype.urlContainsHash = function (hash) {\r\n this.logger.verbose(\"UrlContainsHash has been called\");\r\n return UrlUtils.urlContainsHash(hash);\r\n };\r\n UserAgentApplication.prototype.authResponseHandler = function (interactionType, response, resolve) {\r\n this.logger.verbose(\"AuthResponseHandler has been called\");\r\n this.cacheStorage.setInteractionInProgress(false);\r\n if (interactionType === Constants.interactionTypeRedirect) {\r\n this.logger.verbose(\"Interaction type is redirect\");\r\n if (this.errorReceivedCallback) {\r\n this.logger.verbose(\"Two callbacks were provided to handleRedirectCallback, calling success callback with response\");\r\n this.tokenReceivedCallback(response);\r\n }\r\n else if (this.authResponseCallback) {\r\n this.logger.verbose(\"One callback was provided to handleRedirectCallback, calling authResponseCallback with response\");\r\n this.authResponseCallback(null, response);\r\n }\r\n }\r\n else if (interactionType === Constants.interactionTypePopup) {\r\n this.logger.verbose(\"Interaction type is popup, resolving\");\r\n resolve(response);\r\n }\r\n else {\r\n throw ClientAuthError.createInvalidInteractionTypeError();\r\n }\r\n };\r\n UserAgentApplication.prototype.authErrorHandler = function (interactionType, authErr, response, reject) {\r\n this.logger.verbose(\"AuthErrorHandler has been called\");\r\n // set interaction_status to complete\r\n this.cacheStorage.setInteractionInProgress(false);\r\n if (interactionType === Constants.interactionTypeRedirect) {\r\n this.logger.verbose(\"Interaction type is redirect\");\r\n if (this.errorReceivedCallback) {\r\n this.logger.verbose(\"Two callbacks were provided to handleRedirectCallback, calling error callback\");\r\n this.errorReceivedCallback(authErr, response.accountState);\r\n }\r\n else if (this.authResponseCallback) {\r\n this.logger.verbose(\"One callback was provided to handleRedirectCallback, calling authResponseCallback with error\");\r\n this.authResponseCallback(authErr, response);\r\n }\r\n else {\r\n this.logger.verbose(\"handleRedirectCallback has not been called and no callbacks are registered, throwing error\");\r\n throw authErr;\r\n }\r\n }\r\n else if (interactionType === Constants.interactionTypePopup) {\r\n this.logger.verbose(\"Interaction type is popup, rejecting\");\r\n reject(authErr);\r\n }\r\n else {\r\n throw ClientAuthError.createInvalidInteractionTypeError();\r\n }\r\n };\r\n // #endregion\r\n /**\r\n * Use when initiating the login process by redirecting the user's browser to the authorization endpoint.\r\n * @param {@link (AuthenticationParameters:type)}\r\n */\r\n UserAgentApplication.prototype.loginRedirect = function (userRequest) {\r\n this.logger.verbose(\"LoginRedirect has been called\");\r\n // validate request\r\n var request = RequestUtils.validateRequest(userRequest, true, this.clientId, Constants.interactionTypeRedirect);\r\n this.acquireTokenInteractive(Constants.interactionTypeRedirect, true, request, null, null);\r\n };\r\n /**\r\n * Use when you want to obtain an access_token for your API by redirecting the user's browser window to the authorization endpoint.\r\n * @param {@link (AuthenticationParameters:type)}\r\n *\r\n * To renew idToken, please pass clientId as the only scope in the Authentication Parameters\r\n */\r\n UserAgentApplication.prototype.acquireTokenRedirect = function (userRequest) {\r\n this.logger.verbose(\"AcquireTokenRedirect has been called\");\r\n // validate request\r\n var request = RequestUtils.validateRequest(userRequest, false, this.clientId, Constants.interactionTypeRedirect);\r\n this.acquireTokenInteractive(Constants.interactionTypeRedirect, false, request, null, null);\r\n };\r\n /**\r\n * Use when initiating the login process via opening a popup window in the user's browser\r\n *\r\n * @param {@link (AuthenticationParameters:type)}\r\n *\r\n * @returns {Promise.<AuthResponse>} - a promise that is fulfilled when this function has completed, or rejected if an error was raised. Returns the {@link AuthResponse} object\r\n */\r\n UserAgentApplication.prototype.loginPopup = function (userRequest) {\r\n var _this = this;\r\n this.logger.verbose(\"LoginPopup has been called\");\r\n // validate request\r\n var request = RequestUtils.validateRequest(userRequest, true, this.clientId, Constants.interactionTypePopup);\r\n var apiEvent = this.telemetryManager.createAndStartApiEvent(request.correlationId, API_EVENT_IDENTIFIER.LoginPopup);\r\n return new Promise(function (resolve, reject) {\r\n _this.acquireTokenInteractive(Constants.interactionTypePopup, true, request, resolve, reject);\r\n })\r\n .then(function (resp) {\r\n _this.logger.verbose(\"Successfully logged in\");\r\n _this.telemetryManager.stopAndFlushApiEvent(request.correlationId, apiEvent, true);\r\n return resp;\r\n })\r\n .catch(function (error) {\r\n _this.cacheStorage.resetTempCacheItems(request.state);\r\n _this.telemetryManager.stopAndFlushApiEvent(request.correlationId, apiEvent, false, error.errorCode);\r\n throw error;\r\n });\r\n };\r\n /**\r\n * Use when you want to obtain an access_token for your API via opening a popup window in the user's browser\r\n * @param {@link AuthenticationParameters}\r\n *\r\n * To renew idToken, please pass clientId as the only scope in the Authentication Parameters\r\n * @returns {Promise.<AuthResponse>} - a promise that is fulfilled when this function has completed, or rejected if an error was raised. Returns the {@link AuthResponse} object\r\n */\r\n UserAgentApplication.prototype.acquireTokenPopup = function (userRequest) {\r\n var _this = this;\r\n this.logger.verbose(\"AcquireTokenPopup has been called\");\r\n // validate request\r\n var request = RequestUtils.validateRequest(userRequest, false, this.clientId, Constants.interactionTypePopup);\r\n var apiEvent = this.telemetryManager.createAndStartApiEvent(request.correlationId, API_EVENT_IDENTIFIER.AcquireTokenPopup);\r\n return new Promise(function (resolve, reject) {\r\n _this.acquireTokenInteractive(Constants.interactionTypePopup, false, request, resolve, reject);\r\n })\r\n .then(function (resp) {\r\n _this.logger.verbose(\"Successfully acquired token\");\r\n _this.telemetryManager.stopAndFlushApiEvent(request.correlationId, apiEvent, true);\r\n return resp;\r\n })\r\n .catch(function (error) {\r\n _this.cacheStorage.resetTempCacheItems(request.state);\r\n _this.telemetryManager.stopAndFlushApiEvent(request.correlationId, apiEvent, false, error.errorCode);\r\n throw error;\r\n });\r\n };\r\n // #region Acquire Token\r\n /**\r\n * Use when initiating the login process or when you want to obtain an access_token for your API,\r\n * either by redirecting the user's browser window to the authorization endpoint or via opening a popup window in the user's browser.\r\n * @param {@link (AuthenticationParameters:type)}\r\n *\r\n * To renew idToken, please pass clientId as the only scope in the Authentication Parameters\r\n */\r\n UserAgentApplication.prototype.acquireTokenInteractive = function (interactionType, isLoginCall, request, resolve, reject) {\r\n var _this = this;\r\n this.logger.verbose(\"AcquireTokenInteractive has been called\");\r\n // block the request if made from the hidden iframe\r\n WindowUtils.blockReloadInHiddenIframes();\r\n try {\r\n this.cacheStorage.setInteractionInProgress(true);\r\n }\r\n catch (e) {\r\n // If already in progress, do not proceed\r\n var thrownError = isLoginCall ? ClientAuthError.createLoginInProgressError() : ClientAuthError.createAcquireTokenInProgressError();\r\n var stateOnlyResponse = buildResponseStateOnly(this.getAccountState(request.state));\r\n this.cacheStorage.resetTempCacheItems(request.state);\r\n this.authErrorHandler(interactionType, thrownError, stateOnlyResponse, reject);\r\n return;\r\n }\r\n if (interactionType === Constants.interactionTypeRedirect) {\r\n this.cacheStorage.setItem(TemporaryCacheKeys.REDIRECT_REQUEST, \"\" + Constants.inProgress + Constants.resourceDelimiter + request.state);\r\n }\r\n // Get the account object if a session exists\r\n var account;\r\n if (request && request.account && !isLoginCall) {\r\n account = request.account;\r\n this.logger.verbose(\"Account set from request\");\r\n }\r\n else {\r\n account = this.getAccount();\r\n this.logger.verbose(\"Account set from MSAL Cache\");\r\n }\r\n // If no session exists, prompt the user to login.\r\n if (!account && !ServerRequestParameters.isSSOParam(request)) {\r\n if (isLoginCall) {\r\n // extract ADAL id_token if exists\r\n var adalIdToken = this.extractADALIdToken();\r\n // silent login if ADAL id_token is retrieved successfully - SSO\r\n if (adalIdToken && !request.scopes) {\r\n this.logger.info(\"ADAL's idToken exists. Extracting login information from ADAL's idToken\");\r\n var tokenRequest = this.buildIDTokenRequest(request);\r\n this.silentLogin = true;\r\n this.acquireTokenSilent(tokenRequest).then(function (response) {\r\n _this.silentLogin = false;\r\n _this.logger.info(\"Unified cache call is successful\");\r\n _this.authResponseHandler(interactionType, response, resolve);\r\n return;\r\n }, function (error) {\r\n _this.silentLogin = false;\r\n _this.logger.error(\"Error occurred during unified cache ATS: \" + error);\r\n // proceed to login since ATS failed\r\n _this.acquireTokenHelper(null, interactionType, isLoginCall, request, resolve, reject);\r\n });\r\n }\r\n // No ADAL token found, proceed to login\r\n else {\r\n this.logger.verbose(\"Login call but no token found, proceed to login\");\r\n this.acquireTokenHelper(null, interactionType, isLoginCall, request, resolve, reject);\r\n }\r\n }\r\n // AcquireToken call, but no account or context given, so throw error\r\n else {\r\n this.logger.verbose(\"AcquireToken call, no context or account given\");\r\n this.logger.info(\"User login is required\");\r\n var stateOnlyResponse = buildResponseStateOnly(this.getAccountState(request.state));\r\n this.cacheStorage.resetTempCacheItems(request.state);\r\n this.authErrorHandler(interactionType, ClientAuthError.createUserLoginRequiredError(), stateOnlyResponse, reject);\r\n return;\r\n }\r\n }\r\n // User session exists\r\n else {\r\n this.logger.verbose(\"User session exists, login not required\");\r\n this.acquireTokenHelper(account, interactionType, isLoginCall, request, resolve, reject);\r\n }\r\n };\r\n /**\r\n * @hidden\r\n * @ignore\r\n * Helper function to acquireToken\r\n *\r\n */\r\n UserAgentApplication.prototype.acquireTokenHelper = function (account, interactionType, isLoginCall, request, resolve, reject) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var requestSignature, serverAuthenticationRequest, acquireTokenAuthority, popUpWindow, responseType, loginStartPage, urlNavigate, hash, error_1, navigate, err_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.logger.verbose(\"AcquireTokenHelper has been called\");\r\n this.logger.verbose(\"Interaction type: \" + interactionType + \". isLoginCall: \" + isLoginCall);\r\n requestSignature = request.scopes ? request.scopes.join(\" \").toLowerCase() : Constants.oidcScopes.join(\" \");\r\n this.logger.verbosePii(\"Request signature: \" + requestSignature);\r\n acquireTokenAuthority = (request && request.authority) ? AuthorityFactory.CreateInstance(request.authority, this.config.auth.validateAuthority, request.authorityMetadata) : this.authorityInstance;\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 11, , 12]);\r\n if (!!acquireTokenAuthority.hasCachedMetadata()) return [3 /*break*/, 3];\r\n this.logger.verbose(\"No cached metadata for authority\");\r\n return [4 /*yield*/, AuthorityFactory.saveMetadataFromNetwork(acquireTokenAuthority, this.telemetryManager, request.correlationId)];\r\n case 2:\r\n _a.sent();\r\n return [3 /*break*/, 4];\r\n case 3:\r\n this.logger.verbose(\"Cached metadata found for authority\");\r\n _a.label = 4;\r\n case 4:\r\n responseType = isLoginCall ? ResponseTypes.id_token : this.getTokenType(account, request.scopes);\r\n loginStartPage = request.redirectStartPage || window.location.href;\r\n serverAuthenticationRequest = new ServerRequestParameters(acquireTokenAuthority, this.clientId, responseType, this.getRedirectUri(request && request.redirectUri), request.scopes, request.state, request.correlationId);\r\n this.logger.verbose(\"Finished building server authentication request\");\r\n this.updateCacheEntries(serverAuthenticationRequest, account, isLoginCall, loginStartPage);\r\n this.logger.verbose(\"Updating cache entries\");\r\n // populate QueryParameters (sid/login_hint) and any other extraQueryParameters set by the developer\r\n serverAuthenticationRequest.populateQueryParams(account, request);\r\n this.logger.verbose(\"Query parameters populated from account\");\r\n urlNavigate = UrlUtils.createNavigateUrl(serverAuthenticationRequest) + Constants.response_mode_fragment;\r\n // set state in cache\r\n if (interactionType === Constants.interactionTypeRedirect) {\r\n if (!isLoginCall) {\r\n this.cacheStorage.setItem(AuthCache.generateTemporaryCacheKey(TemporaryCacheKeys.STATE_ACQ_TOKEN, request.state), serverAuthenticationRequest.state, this.inCookie);\r\n this.logger.verbose(\"State cached for redirect\");\r\n this.logger.verbosePii(\"State cached: \" + serverAuthenticationRequest.state);\r\n }\r\n else {\r\n this.logger.verbose(\"Interaction type redirect but login call is true. State not cached\");\r\n }\r\n }\r\n else if (interactionType === Constants.interactionTypePopup) {\r\n window.renewStates.push(serverAuthenticationRequest.state);\r\n window.requestType = isLoginCall ? Constants.login : Constants.renewToken;\r\n this.logger.verbose(\"State saved to window\");\r\n this.logger.verbosePii(\"State saved: \" + serverAuthenticationRequest.state);\r\n // Register callback to capture results from server\r\n this.registerCallback(serverAuthenticationRequest.state, requestSignature, resolve, reject);\r\n }\r\n else {\r\n this.logger.verbose(\"Invalid interaction error. State not cached\");\r\n throw ClientAuthError.createInvalidInteractionTypeError();\r\n }\r\n if (!(interactionType === Constants.interactionTypePopup)) return [3 /*break*/, 9];\r\n this.logger.verbose(\"Interaction type is popup. Generating popup window\");\r\n // Generate a popup window\r\n try {\r\n popUpWindow = this.openPopup(urlNavigate, \"msal\", Constants.popUpWidth, Constants.popUpHeight);\r\n // Push popup window handle onto stack for tracking\r\n WindowUtils.trackPopup(popUpWindow);\r\n }\r\n catch (e) {\r\n this.logger.info(ClientAuthErrorMessage.popUpWindowError.code + \":\" + ClientAuthErrorMessage.popUpWindowError.desc);\r\n this.cacheStorage.setItem(ErrorCacheKeys.ERROR, ClientAuthErrorMessage.popUpWindowError.code);\r\n this.cacheStorage.setItem(ErrorCacheKeys.ERROR_DESC, ClientAuthErrorMessage.popUpWindowError.desc);\r\n if (reject) {\r\n reject(ClientAuthError.createPopupWindowError());\r\n return [2 /*return*/];\r\n }\r\n }\r\n if (!popUpWindow) return [3 /*break*/, 8];\r\n _a.label = 5;\r\n case 5:\r\n _a.trys.push([5, 7, , 8]);\r\n return [4 /*yield*/, WindowUtils.monitorPopupForHash(popUpWindow, this.config.system.loadFrameTimeout, urlNavigate, this.logger)];\r\n case 6:\r\n hash = _a.sent();\r\n this.handleAuthenticationResponse(hash);\r\n // Request completed successfully, set to completed\r\n this.cacheStorage.setInteractionInProgress(false);\r\n this.logger.info(\"Closing popup window\");\r\n // TODO: Check how this can be extracted for any framework specific code?\r\n if (this.config.framework.isAngular) {\r\n this.broadcast(\"msal:popUpHashChanged\", hash);\r\n }\r\n WindowUtils.closePopups();\r\n return [3 /*break*/, 8];\r\n case 7:\r\n error_1 = _a.sent();\r\n if (reject) {\r\n reject(error_1);\r\n }\r\n if (this.config.framework.isAngular) {\r\n this.broadcast(\"msal:popUpClosed\", error_1.errorCode + Constants.resourceDelimiter + error_1.errorMessage);\r\n }\r\n else {\r\n // Request failed, set to canceled\r\n this.cacheStorage.setInteractionInProgress(false);\r\n popUpWindow.close();\r\n }\r\n return [3 /*break*/, 8];\r\n case 8: return [3 /*break*/, 10];\r\n case 9:\r\n // If onRedirectNavigate is implemented, invoke it and provide urlNavigate\r\n if (request.onRedirectNavigate) {\r\n this.logger.verbose(\"Invoking onRedirectNavigate callback\");\r\n navigate = request.onRedirectNavigate(urlNavigate);\r\n // Returning false from onRedirectNavigate will stop navigation\r\n if (navigate !== false) {\r\n this.logger.verbose(\"onRedirectNavigate did not return false, navigating\");\r\n this.navigateWindow(urlNavigate);\r\n }\r\n else {\r\n this.logger.verbose(\"onRedirectNavigate returned false, stopping navigation\");\r\n }\r\n }\r\n else {\r\n // Otherwise, perform navigation\r\n this.logger.verbose(\"Navigating window to urlNavigate\");\r\n this.navigateWindow(urlNavigate);\r\n }\r\n _a.label = 10;\r\n case 10: return [3 /*break*/, 12];\r\n case 11:\r\n err_1 = _a.sent();\r\n this.logger.error(err_1);\r\n this.cacheStorage.resetTempCacheItems(request.state);\r\n this.authErrorHandler(interactionType, ClientAuthError.createEndpointResolutionError(err_1.toString), buildResponseStateOnly(request.state), reject);\r\n if (popUpWindow) {\r\n popUpWindow.close();\r\n }\r\n return [3 /*break*/, 12];\r\n case 12: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * API interfacing idToken request when applications already have a session/hint acquired by authorization client applications\r\n * @param request\r\n */\r\n UserAgentApplication.prototype.ssoSilent = function (request) {\r\n this.logger.verbose(\"ssoSilent has been called\");\r\n // throw an error on an empty request\r\n if (!request) {\r\n throw ClientConfigurationError.createEmptyRequestError();\r\n }\r\n // throw an error on no hints passed\r\n if (!request.sid && !request.loginHint) {\r\n throw ClientConfigurationError.createSsoSilentError();\r\n }\r\n return this.acquireTokenSilent(__assign(__assign({}, request), { scopes: Constants.oidcScopes }));\r\n };\r\n /**\r\n * Use this function to obtain a token before every call to the API / resource provider\r\n *\r\n * MSAL return's a cached token when available\r\n * Or it send's a request to the STS to obtain a new token using a hidden iframe.\r\n *\r\n * @param {@link AuthenticationParameters}\r\n *\r\n * To renew idToken, please pass clientId as the only scope in the Authentication Parameters\r\n * @returns {Promise.<AuthResponse>} - a promise that is fulfilled when this function has completed, or rejected if an error was raised. Returns the {@link AuthResponse} object\r\n *\r\n */\r\n UserAgentApplication.prototype.acquireTokenSilent = function (userRequest) {\r\n var _this = this;\r\n this.logger.verbose(\"AcquireTokenSilent has been called\");\r\n // validate the request\r\n var request = RequestUtils.validateRequest(userRequest, false, this.clientId, Constants.interactionTypeSilent);\r\n var apiEvent = this.telemetryManager.createAndStartApiEvent(request.correlationId, API_EVENT_IDENTIFIER.AcquireTokenSilent);\r\n var requestSignature = RequestUtils.createRequestSignature(request);\r\n return new Promise(function (resolve, reject) { return __awaiter(_this, void 0, void 0, function () {\r\n var scope, account, adalIdToken, responseType, serverAuthenticationRequest, adalIdTokenObject, userContainedClaims, authErr, cacheResultResponse, logMessage, err_2;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n // block the request if made from the hidden iframe\r\n WindowUtils.blockReloadInHiddenIframes();\r\n scope = request.scopes.join(\" \").toLowerCase();\r\n this.logger.verbosePii(\"Serialized scopes: \" + scope);\r\n if (request.account) {\r\n account = request.account;\r\n this.logger.verbose(\"Account set from request\");\r\n }\r\n else {\r\n account = this.getAccount();\r\n this.logger.verbose(\"Account set from MSAL Cache\");\r\n }\r\n adalIdToken = this.cacheStorage.getItem(Constants.adalIdToken);\r\n // In the event of no account being passed in the config, no session id, and no pre-existing adalIdToken, user will need to log in\r\n if (!account && !(request.sid || request.loginHint) && StringUtils.isEmpty(adalIdToken)) {\r\n this.logger.info(\"User login is required\");\r\n // The promise rejects with a UserLoginRequiredError, which should be caught and user should be prompted to log in interactively\r\n return [2 /*return*/, reject(ClientAuthError.createUserLoginRequiredError())];\r\n }\r\n responseType = this.getTokenType(account, request.scopes);\r\n this.logger.verbose(\"Response type: \" + responseType);\r\n serverAuthenticationRequest = new ServerRequestParameters(AuthorityFactory.CreateInstance(request.authority, this.config.auth.validateAuthority, request.authorityMetadata), this.clientId, responseType, this.getRedirectUri(request.redirectUri), request.scopes, request.state, request.correlationId);\r\n this.logger.verbose(\"Finished building server authentication request\");\r\n // populate QueryParameters (sid/login_hint) and any other extraQueryParameters set by the developer\r\n if (ServerRequestParameters.isSSOParam(request) || account) {\r\n serverAuthenticationRequest.populateQueryParams(account, request, null, true);\r\n this.logger.verbose(\"Query parameters populated from existing SSO or account\");\r\n }\r\n // if user didn't pass login_hint/sid and adal's idtoken is present, extract the login_hint from the adalIdToken\r\n else if (!account && !StringUtils.isEmpty(adalIdToken)) {\r\n adalIdTokenObject = TokenUtils.extractIdToken(adalIdToken);\r\n this.logger.verbose(\"ADAL's idToken exists. Extracting login information from ADAL's idToken to populate query parameters\");\r\n serverAuthenticationRequest.populateQueryParams(account, null, adalIdTokenObject, true);\r\n }\r\n else {\r\n this.logger.verbose(\"No additional query parameters added\");\r\n }\r\n userContainedClaims = request.claimsRequest || serverAuthenticationRequest.claimsValue;\r\n // If request.forceRefresh is set to true, force a request for a new token instead of getting it from the cache\r\n if (!userContainedClaims && !request.forceRefresh) {\r\n try {\r\n cacheResultResponse = this.getCachedToken(serverAuthenticationRequest, account);\r\n }\r\n catch (e) {\r\n authErr = e;\r\n }\r\n }\r\n if (!cacheResultResponse) return [3 /*break*/, 1];\r\n this.logger.verbose(\"Token found in cache lookup\");\r\n this.logger.verbosePii(\"Scopes found: \" + JSON.stringify(cacheResultResponse.scopes));\r\n resolve(cacheResultResponse);\r\n return [2 /*return*/, null];\r\n case 1:\r\n if (!authErr) return [3 /*break*/, 2];\r\n this.logger.infoPii(authErr.errorCode + \":\" + authErr.errorMessage);\r\n reject(authErr);\r\n return [2 /*return*/, null];\r\n case 2:\r\n logMessage = void 0;\r\n if (userContainedClaims) {\r\n logMessage = \"Skipped cache lookup since claims were given\";\r\n }\r\n else if (request.forceRefresh) {\r\n logMessage = \"Skipped cache lookup since request.forceRefresh option was set to true\";\r\n }\r\n else {\r\n logMessage = \"No valid token found in cache lookup\";\r\n }\r\n this.logger.verbose(logMessage);\r\n // Cache result can return null if cache is empty. In that case, set authority to default value if no authority is passed to the API.\r\n if (!serverAuthenticationRequest.authorityInstance) {\r\n serverAuthenticationRequest.authorityInstance = request.authority ?\r\n AuthorityFactory.CreateInstance(request.authority, this.config.auth.validateAuthority, request.authorityMetadata)\r\n : this.authorityInstance;\r\n }\r\n this.logger.verbosePii(\"Authority instance: \" + serverAuthenticationRequest.authority);\r\n _a.label = 3;\r\n case 3:\r\n _a.trys.push([3, 7, , 8]);\r\n if (!!serverAuthenticationRequest.authorityInstance.hasCachedMetadata()) return [3 /*break*/, 5];\r\n this.logger.verbose(\"No cached metadata for authority\");\r\n return [4 /*yield*/, AuthorityFactory.saveMetadataFromNetwork(serverAuthenticationRequest.authorityInstance, this.telemetryManager, request.correlationId)];\r\n case 4:\r\n _a.sent();\r\n this.logger.verbose(\"Authority has been updated with endpoint discovery response\");\r\n return [3 /*break*/, 6];\r\n case 5:\r\n this.logger.verbose(\"Cached metadata found for authority\");\r\n _a.label = 6;\r\n case 6:\r\n /*\r\n * refresh attempt with iframe\r\n * Already renewing for this scope, callback when we get the token.\r\n */\r\n if (window.activeRenewals[requestSignature]) {\r\n this.logger.verbose(\"Renewing token in progress. Registering callback\");\r\n // Active renewals contains the state for each renewal.\r\n this.registerCallback(window.activeRenewals[requestSignature], requestSignature, resolve, reject);\r\n }\r\n else {\r\n if (request.scopes && ScopeSet.onlyContainsOidcScopes(request.scopes)) {\r\n /*\r\n * App uses idToken to send to api endpoints\r\n * Default scope is tracked as OIDC scopes to store this token\r\n */\r\n this.logger.verbose(\"OpenID Connect scopes only, renewing idToken\");\r\n this.silentLogin = true;\r\n this.renewIdToken(requestSignature, resolve, reject, account, serverAuthenticationRequest);\r\n }\r\n else {\r\n // renew access token\r\n this.logger.verbose(\"Renewing access token\");\r\n this.renewToken(requestSignature, resolve, reject, account, serverAuthenticationRequest);\r\n }\r\n }\r\n return [3 /*break*/, 8];\r\n case 7:\r\n err_2 = _a.sent();\r\n this.logger.error(err_2);\r\n reject(ClientAuthError.createEndpointResolutionError(err_2.toString()));\r\n return [2 /*return*/, null];\r\n case 8: return [2 /*return*/];\r\n }\r\n });\r\n }); })\r\n .then(function (res) {\r\n _this.logger.verbose(\"Successfully acquired token\");\r\n _this.telemetryManager.stopAndFlushApiEvent(request.correlationId, apiEvent, true);\r\n return res;\r\n })\r\n .catch(function (error) {\r\n _this.cacheStorage.resetTempCacheItems(request.state);\r\n _this.telemetryManager.stopAndFlushApiEvent(request.correlationId, apiEvent, false, error.errorCode);\r\n throw error;\r\n });\r\n };\r\n // #endregion\r\n // #region Popup Window Creation\r\n /**\r\n * @hidden\r\n *\r\n * Configures popup window for login.\r\n *\r\n * @param urlNavigate\r\n * @param title\r\n * @param popUpWidth\r\n * @param popUpHeight\r\n * @ignore\r\n * @hidden\r\n */\r\n UserAgentApplication.prototype.openPopup = function (urlNavigate, title, popUpWidth, popUpHeight) {\r\n this.logger.verbose(\"OpenPopup has been called\");\r\n try {\r\n /**\r\n * adding winLeft and winTop to account for dual monitor\r\n * using screenLeft and screenTop for IE8 and earlier\r\n */\r\n var winLeft = window.screenLeft ? window.screenLeft : window.screenX;\r\n var winTop = window.screenTop ? window.screenTop : window.screenY;\r\n /**\r\n * window.innerWidth displays browser window\"s height and width excluding toolbars\r\n * using document.documentElement.clientWidth for IE8 and earlier\r\n */\r\n var width = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;\r\n var height = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;\r\n var left = ((width / 2) - (popUpWidth / 2)) + winLeft;\r\n var top_1 = ((height / 2) - (popUpHeight / 2)) + winTop;\r\n // open the window\r\n var popupWindow = window.open(urlNavigate, title, \"width=\" + popUpWidth + \", height=\" + popUpHeight + \", top=\" + top_1 + \", left=\" + left + \", scrollbars=yes\");\r\n if (!popupWindow) {\r\n throw ClientAuthError.createPopupWindowError();\r\n }\r\n if (popupWindow.focus) {\r\n popupWindow.focus();\r\n }\r\n return popupWindow;\r\n }\r\n catch (e) {\r\n this.cacheStorage.setInteractionInProgress(false);\r\n throw ClientAuthError.createPopupWindowError(e.toString());\r\n }\r\n };\r\n // #endregion\r\n // #region Iframe Management\r\n /**\r\n * @hidden\r\n * Calling _loadFrame but with a timeout to signal failure in loadframeStatus. Callbacks are left.\r\n * registered when network errors occur and subsequent token requests for same resource are registered to the pending request.\r\n * @ignore\r\n */\r\n UserAgentApplication.prototype.loadIframeTimeout = function (urlNavigate, frameName, requestSignature) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var expectedState, iframe, _a, hash, error_2;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n expectedState = window.activeRenewals[requestSignature];\r\n this.logger.verbosePii(\"Set loading state to pending for: \" + requestSignature + \":\" + expectedState);\r\n this.cacheStorage.setItem(AuthCache.generateTemporaryCacheKey(TemporaryCacheKeys.RENEW_STATUS, expectedState), Constants.inProgress);\r\n if (!this.config.system.navigateFrameWait) return [3 /*break*/, 2];\r\n return [4 /*yield*/, WindowUtils.loadFrame(urlNavigate, frameName, this.config.system.navigateFrameWait, this.logger)];\r\n case 1:\r\n _a = _b.sent();\r\n return [3 /*break*/, 3];\r\n case 2:\r\n _a = WindowUtils.loadFrameSync(urlNavigate, frameName, this.logger);\r\n _b.label = 3;\r\n case 3:\r\n iframe = _a;\r\n _b.label = 4;\r\n case 4:\r\n _b.trys.push([4, 6, , 7]);\r\n return [4 /*yield*/, WindowUtils.monitorIframeForHash(iframe.contentWindow, this.config.system.loadFrameTimeout, urlNavigate, this.logger)];\r\n case 5:\r\n hash = _b.sent();\r\n if (hash) {\r\n this.handleAuthenticationResponse(hash);\r\n }\r\n return [3 /*break*/, 7];\r\n case 6:\r\n error_2 = _b.sent();\r\n if (this.cacheStorage.getItem(AuthCache.generateTemporaryCacheKey(TemporaryCacheKeys.RENEW_STATUS, expectedState)) === Constants.inProgress) {\r\n // fail the iframe session if it's in pending state\r\n this.logger.verbose(\"Loading frame has timed out after: \" + (this.config.system.loadFrameTimeout / 1000) + \" seconds for scope/authority \" + requestSignature + \":\" + expectedState);\r\n // Error after timeout\r\n if (expectedState && window.callbackMappedToRenewStates[expectedState]) {\r\n window.callbackMappedToRenewStates[expectedState](null, error_2);\r\n }\r\n this.cacheStorage.removeItem(AuthCache.generateTemporaryCacheKey(TemporaryCacheKeys.RENEW_STATUS, expectedState));\r\n }\r\n WindowUtils.removeHiddenIframe(iframe);\r\n throw error_2;\r\n case 7:\r\n WindowUtils.removeHiddenIframe(iframe);\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n // #endregion\r\n // #region General Helpers\r\n /**\r\n * @hidden\r\n * Used to redirect the browser to the STS authorization endpoint\r\n * @param {string} urlNavigate - URL of the authorization endpoint\r\n */\r\n UserAgentApplication.prototype.navigateWindow = function (urlNavigate, popupWindow) {\r\n // Navigate if valid URL\r\n if (urlNavigate && !StringUtils.isEmpty(urlNavigate)) {\r\n var navigateWindow = popupWindow ? popupWindow : window;\r\n var logMessage = popupWindow ? \"Navigated Popup window to:\" + urlNavigate : \"Navigate to:\" + urlNavigate;\r\n this.logger.infoPii(logMessage);\r\n navigateWindow.location.assign(urlNavigate);\r\n }\r\n else {\r\n this.logger.info(\"Navigate url is empty\");\r\n throw AuthError.createUnexpectedError(\"Navigate url is empty\");\r\n }\r\n };\r\n /**\r\n * @hidden\r\n * Used to add the developer requested callback to the array of callbacks for the specified scopes. The updated array is stored on the window object\r\n * @param {string} expectedState - Unique state identifier (guid).\r\n * @param {string} scope - Developer requested permissions. Not all scopes are guaranteed to be included in the access token returned.\r\n * @param {Function} resolve - The resolve function of the promise object.\r\n * @param {Function} reject - The reject function of the promise object.\r\n * @ignore\r\n */\r\n UserAgentApplication.prototype.registerCallback = function (expectedState, requestSignature, resolve, reject) {\r\n var _this = this;\r\n // track active renewals\r\n window.activeRenewals[requestSignature] = expectedState;\r\n // initialize callbacks mapped array\r\n if (!window.promiseMappedToRenewStates[expectedState]) {\r\n window.promiseMappedToRenewStates[expectedState] = [];\r\n }\r\n // indexing on the current state, push the callback params to callbacks mapped\r\n window.promiseMappedToRenewStates[expectedState].push({ resolve: resolve, reject: reject });\r\n // Store the server response in the current window??\r\n if (!window.callbackMappedToRenewStates[expectedState]) {\r\n window.callbackMappedToRenewStates[expectedState] = function (response, error) {\r\n // reset active renewals\r\n delete window.activeRenewals[requestSignature];\r\n // for all promiseMappedtoRenewStates for a given 'state' - call the reject/resolve with error/token respectively\r\n for (var i = 0; i < window.promiseMappedToRenewStates[expectedState].length; ++i) {\r\n try {\r\n if (error) {\r\n window.promiseMappedToRenewStates[expectedState][i].reject(error);\r\n }\r\n else if (response) {\r\n window.promiseMappedToRenewStates[expectedState][i].resolve(response);\r\n }\r\n else {\r\n _this.cacheStorage.resetTempCacheItems(expectedState);\r\n throw AuthError.createUnexpectedError(\"Error and response are both null\");\r\n }\r\n }\r\n catch (e) {\r\n _this.logger.warning(e);\r\n }\r\n }\r\n // reset\r\n delete window.promiseMappedToRenewStates[expectedState];\r\n delete window.callbackMappedToRenewStates[expectedState];\r\n };\r\n }\r\n };\r\n // #endregion\r\n // #region Logout\r\n /**\r\n * Use to log out the current user, and redirect the user to the postLogoutRedirectUri.\r\n * Default behaviour is to redirect the user to `window.location.href`.\r\n */\r\n UserAgentApplication.prototype.logout = function (correlationId) {\r\n this.logger.verbose(\"Logout has been called\");\r\n this.logoutAsync(correlationId);\r\n };\r\n /**\r\n * Async version of logout(). Use to log out the current user.\r\n * @param correlationId Request correlationId\r\n */\r\n UserAgentApplication.prototype.logoutAsync = function (correlationId) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var requestCorrelationId, apiEvent, correlationIdParam, postLogoutQueryParam, urlNavigate, error_3;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n requestCorrelationId = correlationId || CryptoUtils.createNewGuid();\r\n apiEvent = this.telemetryManager.createAndStartApiEvent(requestCorrelationId, API_EVENT_IDENTIFIER.Logout);\r\n this.clearCache();\r\n this.account = null;\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 5, , 6]);\r\n if (!!this.authorityInstance.hasCachedMetadata()) return [3 /*break*/, 3];\r\n this.logger.verbose(\"No cached metadata for authority\");\r\n return [4 /*yield*/, AuthorityFactory.saveMetadataFromNetwork(this.authorityInstance, this.telemetryManager, correlationId)];\r\n case 2:\r\n _a.sent();\r\n return [3 /*break*/, 4];\r\n case 3:\r\n this.logger.verbose(\"Cached metadata found for authority\");\r\n _a.label = 4;\r\n case 4:\r\n correlationIdParam = \"client-request-id=\" + requestCorrelationId;\r\n postLogoutQueryParam = void 0;\r\n if (this.getPostLogoutRedirectUri()) {\r\n postLogoutQueryParam = \"&post_logout_redirect_uri=\" + encodeURIComponent(this.getPostLogoutRedirectUri());\r\n this.logger.verbose(\"redirectUri found and set\");\r\n }\r\n else {\r\n postLogoutQueryParam = \"\";\r\n this.logger.verbose(\"No redirectUri set for app. postLogoutQueryParam is empty\");\r\n }\r\n urlNavigate = void 0;\r\n if (this.authorityInstance.EndSessionEndpoint) {\r\n urlNavigate = this.authorityInstance.EndSessionEndpoint + \"?\" + correlationIdParam + postLogoutQueryParam;\r\n this.logger.verbose(\"EndSessionEndpoint found and urlNavigate set\");\r\n this.logger.verbosePii(\"urlNavigate set to: \" + this.authorityInstance.EndSessionEndpoint);\r\n }\r\n else {\r\n urlNavigate = this.authority + \"oauth2/v2.0/logout?\" + correlationIdParam + postLogoutQueryParam;\r\n this.logger.verbose(\"No endpoint, urlNavigate set to default\");\r\n }\r\n this.telemetryManager.stopAndFlushApiEvent(requestCorrelationId, apiEvent, true);\r\n this.logger.verbose(\"Navigating window to urlNavigate\");\r\n this.navigateWindow(urlNavigate);\r\n return [3 /*break*/, 6];\r\n case 5:\r\n error_3 = _a.sent();\r\n this.telemetryManager.stopAndFlushApiEvent(requestCorrelationId, apiEvent, false, error_3.errorCode);\r\n return [3 /*break*/, 6];\r\n case 6: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * @hidden\r\n * Clear all access tokens and ID tokens in the cache.\r\n * @ignore\r\n */\r\n UserAgentApplication.prototype.clearCache = function () {\r\n this.logger.verbose(\"Clearing cache\");\r\n window.renewStates = [];\r\n var tokenCacheItems = this.cacheStorage.getAllTokens(Constants.clientId, Constants.homeAccountIdentifier);\r\n for (var i = 0; i < tokenCacheItems.length; i++) {\r\n this.cacheStorage.removeItem(JSON.stringify(tokenCacheItems[i].key));\r\n }\r\n this.cacheStorage.resetCacheItems();\r\n this.cacheStorage.clearMsalCookie();\r\n this.logger.verbose(\"Cache cleared\");\r\n };\r\n /**\r\n * @hidden\r\n * Clear a given access token from the cache.\r\n *\r\n * @param accessToken\r\n */\r\n UserAgentApplication.prototype.clearCacheForScope = function (accessToken) {\r\n this.logger.verbose(\"Clearing access token from cache\");\r\n var accessTokenItems = this.cacheStorage.getAllAccessTokens(Constants.clientId, Constants.homeAccountIdentifier);\r\n for (var i = 0; i < accessTokenItems.length; i++) {\r\n var token = accessTokenItems[i];\r\n if (token.value.accessToken === accessToken) {\r\n this.cacheStorage.removeItem(JSON.stringify(token.key));\r\n this.logger.verbosePii(\"Access token removed: \" + token.key);\r\n }\r\n }\r\n };\r\n // #endregion\r\n // #region Response\r\n /**\r\n * @hidden\r\n * @ignore\r\n * Checks if the redirect response is received from the STS. In case of redirect, the url fragment has either id_token, access_token or error.\r\n * @param {string} hash - Hash passed from redirect page.\r\n * @returns {Boolean} - true if response contains id_token, access_token or error, false otherwise.\r\n */\r\n UserAgentApplication.prototype.isCallback = function (hash) {\r\n this.logger.info(\"isCallback will be deprecated in favor of urlContainsHash in MSAL.js v2.0.\");\r\n this.logger.verbose(\"isCallback has been called\");\r\n return UrlUtils.urlContainsHash(hash);\r\n };\r\n /**\r\n * @hidden\r\n * Used to call the constructor callback with the token/error\r\n * @param {string} [hash=window.location.hash] - Hash fragment of Url.\r\n */\r\n UserAgentApplication.prototype.processCallBack = function (hash, respStateInfo, parentCallback) {\r\n this.logger.info(\"ProcessCallBack has been called. Processing callback from redirect response\");\r\n // get the state info from the hash\r\n var stateInfo = respStateInfo;\r\n if (!stateInfo) {\r\n this.logger.verbose(\"StateInfo is null, getting stateInfo from hash\");\r\n stateInfo = this.getResponseState(hash);\r\n }\r\n var response;\r\n var authErr;\r\n // Save the token info from the hash\r\n try {\r\n response = this.saveTokenFromHash(hash, stateInfo);\r\n }\r\n catch (err) {\r\n authErr = err;\r\n }\r\n try {\r\n // Clear the cookie in the hash\r\n this.cacheStorage.clearMsalCookie(stateInfo.state);\r\n var accountState = this.getAccountState(stateInfo.state);\r\n if (response) {\r\n if ((stateInfo.requestType === Constants.renewToken) || response.accessToken) {\r\n if (window.parent !== window) {\r\n this.logger.verbose(\"Window is in iframe, acquiring token silently\");\r\n }\r\n else {\r\n this.logger.verbose(\"Acquiring token interactive in progress\");\r\n }\r\n this.logger.verbose(\"Response tokenType set to \" + ServerHashParamKeys.ACCESS_TOKEN);\r\n response.tokenType = ServerHashParamKeys.ACCESS_TOKEN;\r\n }\r\n else if (stateInfo.requestType === Constants.login) {\r\n this.logger.verbose(\"Response tokenType set to \" + ServerHashParamKeys.ID_TOKEN);\r\n response.tokenType = ServerHashParamKeys.ID_TOKEN;\r\n }\r\n if (!parentCallback) {\r\n this.logger.verbose(\"Setting redirectResponse\");\r\n this.redirectResponse = response;\r\n return;\r\n }\r\n }\r\n else if (!parentCallback) {\r\n this.logger.verbose(\"Response is null, setting redirectResponse with state\");\r\n this.redirectResponse = buildResponseStateOnly(accountState);\r\n this.redirectError = authErr;\r\n this.cacheStorage.resetTempCacheItems(stateInfo.state);\r\n return;\r\n }\r\n this.logger.verbose(\"Calling callback provided to processCallback\");\r\n parentCallback(response, authErr);\r\n }\r\n catch (err) {\r\n this.logger.error(\"Error occurred in token received callback function: \" + err);\r\n throw ClientAuthError.createErrorInCallbackFunction(err.toString());\r\n }\r\n };\r\n /**\r\n * @hidden\r\n * This method must be called for processing the response received from the STS if using popups or iframes. It extracts the hash, processes the token or error\r\n * information and saves it in the cache. It then resolves the promises with the result.\r\n * @param {string} [hash=window.location.hash] - Hash fragment of Url.\r\n */\r\n UserAgentApplication.prototype.handleAuthenticationResponse = function (hash) {\r\n this.logger.verbose(\"HandleAuthenticationResponse has been called\");\r\n // retrieve the hash\r\n var locationHash = hash || window.location.hash;\r\n // if (window.parent !== window), by using self, window.parent becomes equal to window in getResponseState method specifically\r\n var stateInfo = this.getResponseState(locationHash);\r\n this.logger.verbose(\"Obtained state from response\");\r\n var tokenResponseCallback = window.callbackMappedToRenewStates[stateInfo.state];\r\n this.processCallBack(locationHash, stateInfo, tokenResponseCallback);\r\n };\r\n /**\r\n * @hidden\r\n * This method must be called for processing the response received from the STS when using redirect flows. It extracts the hash, processes the token or error\r\n * information and saves it in the cache. The result can then be accessed by user registered callbacks.\r\n * @param {string} [hash=window.location.hash] - Hash fragment of Url.\r\n */\r\n UserAgentApplication.prototype.handleRedirectAuthenticationResponse = function (hash) {\r\n this.logger.info(\"Returned from redirect url\");\r\n this.logger.verbose(\"HandleRedirectAuthenticationResponse has been called\");\r\n // clear hash from window\r\n WindowUtils.clearUrlFragment(window);\r\n this.logger.verbose(\"Window.location.hash cleared\");\r\n // if (window.parent !== window), by using self, window.parent becomes equal to window in getResponseState method specifically\r\n var stateInfo = this.getResponseState(hash);\r\n // if set to navigate to loginRequest page post login\r\n if (this.config.auth.navigateToLoginRequestUrl && window.parent === window) {\r\n this.logger.verbose(\"Window.parent is equal to window, not in popup or iframe. Navigation to login request url after login turned on\");\r\n var loginRequestUrl = this.cacheStorage.getItem(AuthCache.generateTemporaryCacheKey(TemporaryCacheKeys.LOGIN_REQUEST, stateInfo.state), this.inCookie);\r\n // Redirect to home page if login request url is null (real null or the string null)\r\n if (!loginRequestUrl || loginRequestUrl === \"null\") {\r\n this.logger.error(\"Unable to get valid login request url from cache, redirecting to home page\");\r\n window.location.assign(\"/\");\r\n return;\r\n }\r\n else {\r\n this.logger.verbose(\"Valid login request url obtained from cache\");\r\n var currentUrl = UrlUtils.removeHashFromUrl(window.location.href);\r\n var finalRedirectUrl = UrlUtils.removeHashFromUrl(loginRequestUrl);\r\n if (currentUrl !== finalRedirectUrl) {\r\n this.logger.verbose(\"Current url is not login request url, navigating\");\r\n this.logger.verbosePii(\"CurrentUrl: \" + currentUrl + \", finalRedirectUrl: \" + finalRedirectUrl);\r\n window.location.assign(\"\" + finalRedirectUrl + hash);\r\n return;\r\n }\r\n else {\r\n this.logger.verbose(\"Current url matches login request url\");\r\n var loginRequestUrlComponents = UrlUtils.GetUrlComponents(loginRequestUrl);\r\n if (loginRequestUrlComponents.Hash) {\r\n this.logger.verbose(\"Login request url contains hash, resetting non-msal hash\");\r\n window.location.hash = loginRequestUrlComponents.Hash;\r\n }\r\n }\r\n }\r\n }\r\n else if (!this.config.auth.navigateToLoginRequestUrl) {\r\n this.logger.verbose(\"Default navigation to start page after login turned off\");\r\n }\r\n this.processCallBack(hash, stateInfo, null);\r\n };\r\n /**\r\n * @hidden\r\n * Creates a stateInfo object from the URL fragment and returns it.\r\n * @param {string} hash - Hash passed from redirect page\r\n * @returns {TokenResponse} an object created from the redirect response from AAD comprising of the keys - parameters, requestType, stateMatch, stateResponse and valid.\r\n * @ignore\r\n */\r\n UserAgentApplication.prototype.getResponseState = function (hash) {\r\n this.logger.verbose(\"GetResponseState has been called\");\r\n var parameters = UrlUtils.deserializeHash(hash);\r\n var stateResponse;\r\n if (!parameters) {\r\n throw AuthError.createUnexpectedError(\"Hash was not parsed correctly.\");\r\n }\r\n if (parameters.hasOwnProperty(ServerHashParamKeys.STATE)) {\r\n this.logger.verbose(\"Hash contains state. Creating stateInfo object\");\r\n var parsedState = RequestUtils.parseLibraryState(parameters[\"state\"]);\r\n stateResponse = {\r\n requestType: Constants.unknown,\r\n state: parameters[\"state\"],\r\n timestamp: parsedState.ts,\r\n method: parsedState.method,\r\n stateMatch: false\r\n };\r\n }\r\n else {\r\n throw AuthError.createUnexpectedError(\"Hash does not contain state.\");\r\n }\r\n /*\r\n * async calls can fire iframe and login request at the same time if developer does not use the API as expected\r\n * incoming callback needs to be looked up to find the request type\r\n */\r\n // loginRedirect\r\n if (stateResponse.state === this.cacheStorage.getItem(AuthCache.generateTemporaryCacheKey(TemporaryCacheKeys.STATE_LOGIN, stateResponse.state), this.inCookie) || stateResponse.state === this.silentAuthenticationState) {\r\n this.logger.verbose(\"State matches cached state, setting requestType to login\");\r\n stateResponse.requestType = Constants.login;\r\n stateResponse.stateMatch = true;\r\n return stateResponse;\r\n }\r\n // acquireTokenRedirect\r\n else if (stateResponse.state === this.cacheStorage.getItem(AuthCache.generateTemporaryCacheKey(TemporaryCacheKeys.STATE_ACQ_TOKEN, stateResponse.state), this.inCookie)) {\r\n this.logger.verbose(\"State matches cached state, setting requestType to renewToken\");\r\n stateResponse.requestType = Constants.renewToken;\r\n stateResponse.stateMatch = true;\r\n return stateResponse;\r\n }\r\n // external api requests may have many renewtoken requests for different resource\r\n if (!stateResponse.stateMatch) {\r\n this.logger.verbose(\"State does not match cached state, setting requestType to type from window\");\r\n stateResponse.requestType = window.requestType;\r\n var statesInParentContext = window.renewStates;\r\n for (var i = 0; i < statesInParentContext.length; i++) {\r\n if (statesInParentContext[i] === stateResponse.state) {\r\n this.logger.verbose(\"Matching state found for request\");\r\n stateResponse.stateMatch = true;\r\n break;\r\n }\r\n }\r\n if (!stateResponse.stateMatch) {\r\n this.logger.verbose(\"Matching state not found for request\");\r\n }\r\n }\r\n return stateResponse;\r\n };\r\n // #endregion\r\n // #region Token Processing (Extract to TokenProcessing.ts)\r\n /**\r\n * @hidden\r\n * Used to get token for the specified set of scopes from the cache\r\n * @param {@link ServerRequestParameters} - Request sent to the STS to obtain an id_token/access_token\r\n * @param {Account} account - Account for which the scopes were requested\r\n */\r\n UserAgentApplication.prototype.getCachedToken = function (serverAuthenticationRequest, account) {\r\n this.logger.verbose(\"GetCachedToken has been called\");\r\n var scopes = serverAuthenticationRequest.scopes;\r\n /**\r\n * Id Token should be returned in every acquireTokenSilent call. The only exception is a response_type = token\r\n * request when a valid ID Token is not present in the cache.\r\n */\r\n var idToken = this.getCachedIdToken(serverAuthenticationRequest, account);\r\n var authResponse = this.getCachedAccessToken(serverAuthenticationRequest, account, scopes);\r\n var accountState = this.getAccountState(serverAuthenticationRequest.state);\r\n return ResponseUtils.buildAuthResponse(idToken, authResponse, serverAuthenticationRequest, account, scopes, accountState);\r\n };\r\n /**\r\n * @hidden\r\n *\r\n * Uses passed in authority to further filter an array of tokenCacheItems until only the token being searched for remains, then returns that tokenCacheItem.\r\n * This method will throw if authority filtering still yields multiple matching tokens and will return null if not tokens match the authority passed in.\r\n *\r\n * @param authority\r\n * @param tokenCacheItems\r\n * @param request\r\n * @param requestScopes\r\n * @param tokenType\r\n */\r\n UserAgentApplication.prototype.getTokenCacheItemByAuthority = function (authority, tokenCacheItems, requestScopes, tokenType) {\r\n var _this = this;\r\n var filteredAuthorityItems;\r\n if (UrlUtils.isCommonAuthority(authority) || UrlUtils.isOrganizationsAuthority(authority) || UrlUtils.isConsumersAuthority(authority)) {\r\n filteredAuthorityItems = AuthCacheUtils.filterTokenCacheItemsByDomain(tokenCacheItems, UrlUtils.GetUrlComponents(authority).HostNameAndPort);\r\n }\r\n else {\r\n filteredAuthorityItems = AuthCacheUtils.filterTokenCacheItemsByAuthority(tokenCacheItems, authority);\r\n }\r\n if (filteredAuthorityItems.length === 1) {\r\n return filteredAuthorityItems[0];\r\n }\r\n else if (filteredAuthorityItems.length > 1) {\r\n this.logger.warning(\"Multiple matching tokens found. Cleaning cache and requesting a new token.\");\r\n filteredAuthorityItems.forEach(function (accessTokenCacheItem) {\r\n _this.cacheStorage.removeItem(JSON.stringify(accessTokenCacheItem.key));\r\n });\r\n return null;\r\n }\r\n else {\r\n this.logger.verbose(\"No matching tokens of type \" + tokenType + \" found\");\r\n return null;\r\n }\r\n };\r\n /**\r\n *\r\n * @hidden\r\n *\r\n * Searches the token cache for an ID Token that matches the request parameter and returns it as an IdToken object.\r\n *\r\n * @param serverAuthenticationRequest\r\n * @param account\r\n */\r\n UserAgentApplication.prototype.getCachedIdToken = function (serverAuthenticationRequest, account) {\r\n this.logger.verbose(\"Getting all cached tokens of type ID Token\");\r\n var idTokenCacheItems = this.cacheStorage.getAllIdTokens(this.clientId, account ? account.homeAccountIdentifier : null);\r\n var matchAuthority = serverAuthenticationRequest.authority || this.authority;\r\n var idTokenCacheItem = this.getTokenCacheItemByAuthority(matchAuthority, idTokenCacheItems, null, ServerHashParamKeys.ID_TOKEN);\r\n if (idTokenCacheItem) {\r\n this.logger.verbose(\"Evaluating ID token found\");\r\n var idTokenIsStillValid = this.evaluateTokenExpiration(idTokenCacheItem);\r\n if (idTokenIsStillValid) {\r\n this.logger.verbose(\"ID token expiration is within offset, using ID token found in cache\");\r\n var idTokenValue = idTokenCacheItem.value;\r\n if (idTokenValue) {\r\n this.logger.verbose(\"ID Token found in cache is valid and unexpired\");\r\n }\r\n else {\r\n this.logger.verbose(\"ID Token found in cache is invalid\");\r\n }\r\n return (idTokenValue) ? new IdToken(idTokenValue.idToken) : null;\r\n }\r\n else {\r\n this.logger.verbose(\"Cached ID token is expired, removing from cache\");\r\n this.cacheStorage.removeItem(JSON.stringify(idTokenCacheItem.key));\r\n return null;\r\n }\r\n }\r\n else {\r\n this.logger.verbose(\"No tokens found\");\r\n return null;\r\n }\r\n };\r\n /**\r\n *\r\n * @hidden\r\n *\r\n * Searches the token cache for an access token that matches the request parameters and returns it as an AuthResponse.\r\n *\r\n * @param serverAuthenticationRequest\r\n * @param account\r\n * @param scopes\r\n */\r\n UserAgentApplication.prototype.getCachedAccessToken = function (serverAuthenticationRequest, account, scopes) {\r\n this.logger.verbose(\"Getting all cached tokens of type Access Token\");\r\n var tokenCacheItems = this.cacheStorage.getAllAccessTokens(this.clientId, account ? account.homeAccountIdentifier : null);\r\n var scopeFilteredTokenCacheItems = AuthCacheUtils.filterTokenCacheItemsByScope(tokenCacheItems, scopes);\r\n var matchAuthority = serverAuthenticationRequest.authority || this.authority;\r\n // serverAuthenticationRequest.authority can only be common or organizations if not null\r\n var accessTokenCacheItem = this.getTokenCacheItemByAuthority(matchAuthority, scopeFilteredTokenCacheItems, scopes, ServerHashParamKeys.ACCESS_TOKEN);\r\n if (!accessTokenCacheItem) {\r\n this.logger.verbose(\"No matching token found when filtering by scope and authority\");\r\n return null;\r\n }\r\n else {\r\n serverAuthenticationRequest.authorityInstance = AuthorityFactory.CreateInstance(accessTokenCacheItem.key.authority, this.config.auth.validateAuthority);\r\n this.logger.verbose(\"Evaluating access token found\");\r\n var tokenIsStillValid = this.evaluateTokenExpiration(accessTokenCacheItem);\r\n // The response value will stay null if token retrieved from the cache is expired, otherwise it will be populated with said token's data\r\n if (tokenIsStillValid) {\r\n this.logger.verbose(\"Access token expiration is within offset, using access token found in cache\");\r\n var responseAccount = account || this.getAccount();\r\n if (!responseAccount) {\r\n throw AuthError.createUnexpectedError(\"Account should not be null here.\");\r\n }\r\n var aState = this.getAccountState(serverAuthenticationRequest.state);\r\n var response = {\r\n uniqueId: \"\",\r\n tenantId: \"\",\r\n tokenType: ServerHashParamKeys.ACCESS_TOKEN,\r\n idToken: null,\r\n idTokenClaims: null,\r\n accessToken: accessTokenCacheItem.value.accessToken,\r\n scopes: accessTokenCacheItem.key.scopes.split(\" \"),\r\n expiresOn: new Date(Number(accessTokenCacheItem.value.expiresIn) * 1000),\r\n account: responseAccount,\r\n accountState: aState,\r\n fromCache: true\r\n };\r\n return response;\r\n }\r\n else {\r\n this.logger.verbose(\"Access token expired, removing from cache\");\r\n this.cacheStorage.removeItem(JSON.stringify(accessTokenCacheItem.key));\r\n return null;\r\n }\r\n }\r\n };\r\n /**\r\n * Returns true if the token passed in is within the acceptable expiration time offset, false if it is expired.\r\n * @param tokenCacheItem\r\n * @param serverAuthenticationRequest\r\n */\r\n UserAgentApplication.prototype.evaluateTokenExpiration = function (tokenCacheItem) {\r\n var expiration = Number(tokenCacheItem.value.expiresIn);\r\n return TokenUtils.validateExpirationIsWithinOffset(expiration, this.config.system.tokenRenewalOffsetSeconds);\r\n };\r\n /**\r\n * @hidden\r\n * Check if ADAL id_token exists and return if exists.\r\n *\r\n */\r\n UserAgentApplication.prototype.extractADALIdToken = function () {\r\n this.logger.verbose(\"ExtractADALIdToken has been called\");\r\n var adalIdToken = this.cacheStorage.getItem(Constants.adalIdToken);\r\n return (!StringUtils.isEmpty(adalIdToken)) ? TokenUtils.extractIdToken(adalIdToken) : null;\r\n };\r\n /**\r\n * @hidden\r\n * Acquires access token using a hidden iframe.\r\n * @ignore\r\n */\r\n UserAgentApplication.prototype.renewToken = function (requestSignature, resolve, reject, account, serverAuthenticationRequest) {\r\n this.logger.verbose(\"RenewToken has been called\");\r\n this.logger.verbosePii(\"RenewToken scope and authority: \" + requestSignature);\r\n var frameName = WindowUtils.generateFrameName(FramePrefix.TOKEN_FRAME, requestSignature);\r\n WindowUtils.addHiddenIFrame(frameName, this.logger);\r\n this.updateCacheEntries(serverAuthenticationRequest, account, false);\r\n this.logger.verbosePii(\"RenewToken expected state: \" + serverAuthenticationRequest.state);\r\n // Build urlNavigate with \"prompt=none\" and navigate to URL in hidden iFrame\r\n var urlNavigate = UrlUtils.urlRemoveQueryStringParameter(UrlUtils.createNavigateUrl(serverAuthenticationRequest), Constants.prompt) + Constants.prompt_none + Constants.response_mode_fragment;\r\n window.renewStates.push(serverAuthenticationRequest.state);\r\n window.requestType = Constants.renewToken;\r\n this.logger.verbose(\"Set window.renewState and requestType\");\r\n this.registerCallback(serverAuthenticationRequest.state, requestSignature, resolve, reject);\r\n this.logger.infoPii(\"Navigate to: \" + urlNavigate);\r\n this.loadIframeTimeout(urlNavigate, frameName, requestSignature).catch(function (error) { return reject(error); });\r\n };\r\n /**\r\n * @hidden\r\n * Renews idtoken for app's own backend when clientId is passed as a single scope in the scopes array.\r\n * @ignore\r\n */\r\n UserAgentApplication.prototype.renewIdToken = function (requestSignature, resolve, reject, account, serverAuthenticationRequest) {\r\n this.logger.info(\"RenewIdToken has been called\");\r\n var frameName = WindowUtils.generateFrameName(FramePrefix.ID_TOKEN_FRAME, requestSignature);\r\n WindowUtils.addHiddenIFrame(frameName, this.logger);\r\n this.updateCacheEntries(serverAuthenticationRequest, account, false);\r\n this.logger.verbose(\"RenewIdToken expected state: \" + serverAuthenticationRequest.state);\r\n // Build urlNavigate with \"prompt=none\" and navigate to URL in hidden iFrame\r\n var urlNavigate = UrlUtils.urlRemoveQueryStringParameter(UrlUtils.createNavigateUrl(serverAuthenticationRequest), Constants.prompt) + Constants.prompt_none + Constants.response_mode_fragment;\r\n if (this.silentLogin) {\r\n this.logger.verbose(\"Silent login is true, set silentAuthenticationState\");\r\n window.requestType = Constants.login;\r\n this.silentAuthenticationState = serverAuthenticationRequest.state;\r\n }\r\n else {\r\n this.logger.verbose(\"Not silent login, set window.renewState and requestType\");\r\n window.requestType = Constants.renewToken;\r\n window.renewStates.push(serverAuthenticationRequest.state);\r\n }\r\n // note: scope here is clientId\r\n this.registerCallback(serverAuthenticationRequest.state, requestSignature, resolve, reject);\r\n this.logger.infoPii(\"Navigate to:\\\" \" + urlNavigate);\r\n this.loadIframeTimeout(urlNavigate, frameName, requestSignature).catch(function (error) { return reject(error); });\r\n };\r\n /**\r\n * @hidden\r\n *\r\n * This method builds an Access Token Cache item and saves it to the cache, returning the original\r\n * AuthResponse augmented with a parsed expiresOn attribute.\r\n *\r\n * @param response The AuthResponse object that contains the token to be saved\r\n * @param authority The authority under which the ID token will be cached\r\n * @param scopes The scopes to be added to the cache item key (undefined for ID token cache items)\r\n * @param clientInfo Client Info object that is used to generate the homeAccountIdentifier\r\n * @param expiration Token expiration timestamp\r\n */\r\n UserAgentApplication.prototype.saveToken = function (response, authority, scopes, clientInfo, expiration) {\r\n var accessTokenKey = new AccessTokenKey(authority, this.clientId, scopes, clientInfo.uid, clientInfo.utid);\r\n var accessTokenValue = new AccessTokenValue(response.accessToken, response.idToken.rawIdToken, expiration.toString(), clientInfo.encodeClientInfo());\r\n this.cacheStorage.setItem(JSON.stringify(accessTokenKey), JSON.stringify(accessTokenValue));\r\n if (expiration) {\r\n this.logger.verbose(\"New expiration set for token\");\r\n response.expiresOn = new Date(expiration * 1000);\r\n }\r\n else {\r\n this.logger.error(\"Could not parse expiresIn parameter for access token\");\r\n }\r\n return response;\r\n };\r\n /**\r\n * @hidden\r\n *\r\n * This method sets up the elements of an ID Token cache item and calls saveToken to save it in\r\n * Access Token Cache item format for the client application to use.\r\n *\r\n * @param response The AuthResponse object that will be used to build the cache item\r\n * @param authority The authority under which the ID token will be cached\r\n * @param parameters The response's Hash Params, which contain the ID token returned from the server\r\n * @param clientInfo Client Info object that is used to generate the homeAccountIdentifier\r\n * @param idTokenObj ID Token object from which the ID token's expiration is extracted\r\n */\r\n /* tslint:disable:no-string-literal */\r\n UserAgentApplication.prototype.saveIdToken = function (response, authority, parameters, clientInfo, idTokenObj) {\r\n this.logger.verbose(\"SaveIdToken has been called\");\r\n var idTokenResponse = __assign({}, response);\r\n // Scopes are undefined so they don't show up in ID token cache key\r\n var scopes;\r\n idTokenResponse.scopes = Constants.oidcScopes;\r\n idTokenResponse.accessToken = parameters[ServerHashParamKeys.ID_TOKEN];\r\n var expiration = Number(idTokenObj.expiration);\r\n // Set ID Token item in cache\r\n this.logger.verbose(\"Saving ID token to cache\");\r\n return this.saveToken(idTokenResponse, authority, scopes, clientInfo, expiration);\r\n };\r\n /**\r\n * @hidden\r\n *\r\n * This method sets up the elements of an Access Token cache item and calls saveToken to save it to the cache\r\n *\r\n * @param response The AuthResponse object that will be used to build the cache item\r\n * @param authority The authority under which the access token will be cached\r\n * @param parameters The response's Hash Params, which contain the access token returned from the server\r\n * @param clientInfo Client Info object that is used to generate the homeAccountIdentifier\r\n */\r\n /* tslint:disable:no-string-literal */\r\n UserAgentApplication.prototype.saveAccessToken = function (response, authority, parameters, clientInfo) {\r\n this.logger.verbose(\"SaveAccessToken has been called\");\r\n var accessTokenResponse = __assign({}, response);\r\n // read the scopes\r\n var scope = parameters[ServerHashParamKeys.SCOPE];\r\n var consentedScopes = scope.split(\" \");\r\n // retrieve all access tokens from the cache, remove the dup scopes\r\n var accessTokenCacheItems = this.cacheStorage.getAllAccessTokens(this.clientId, authority);\r\n this.logger.verbose(\"Retrieving all access tokens from cache and removing duplicates\");\r\n for (var i = 0; i < accessTokenCacheItems.length; i++) {\r\n var accessTokenCacheItem = accessTokenCacheItems[i];\r\n if (accessTokenCacheItem.key.homeAccountIdentifier === response.account.homeAccountIdentifier) {\r\n var cachedScopes = accessTokenCacheItem.key.scopes.split(\" \");\r\n if (ScopeSet.isIntersectingScopes(cachedScopes, consentedScopes)) {\r\n this.cacheStorage.removeItem(JSON.stringify(accessTokenCacheItem.key));\r\n }\r\n }\r\n }\r\n accessTokenResponse.accessToken = parameters[ServerHashParamKeys.ACCESS_TOKEN];\r\n accessTokenResponse.scopes = consentedScopes;\r\n var expiresIn = TimeUtils.parseExpiresIn(parameters[ServerHashParamKeys.EXPIRES_IN]);\r\n var parsedState = RequestUtils.parseLibraryState(parameters[ServerHashParamKeys.STATE]);\r\n var expiration = parsedState.ts + expiresIn;\r\n this.logger.verbose(\"Saving access token to cache\");\r\n return this.saveToken(accessTokenResponse, authority, scope, clientInfo, expiration);\r\n };\r\n /**\r\n * @hidden\r\n * Saves token or error received in the response from AAD in the cache. In case of id_token, it also creates the account object.\r\n * @ignore\r\n */\r\n UserAgentApplication.prototype.saveTokenFromHash = function (hash, stateInfo) {\r\n this.logger.verbose(\"SaveTokenFromHash has been called\");\r\n this.logger.info(\"State status: \" + stateInfo.stateMatch + \"; Request type: \" + stateInfo.requestType);\r\n var response = {\r\n uniqueId: \"\",\r\n tenantId: \"\",\r\n tokenType: \"\",\r\n idToken: null,\r\n idTokenClaims: null,\r\n accessToken: null,\r\n scopes: [],\r\n expiresOn: null,\r\n account: null,\r\n accountState: \"\",\r\n fromCache: false\r\n };\r\n var error;\r\n var hashParams = UrlUtils.deserializeHash(hash);\r\n var authorityKey = \"\";\r\n var acquireTokenAccountKey = \"\";\r\n var idTokenObj = null;\r\n // If server returns an error\r\n if (hashParams.hasOwnProperty(ServerHashParamKeys.ERROR_DESCRIPTION) || hashParams.hasOwnProperty(ServerHashParamKeys.ERROR)) {\r\n this.logger.verbose(\"Server returned an error\");\r\n this.logger.infoPii(\"Error : \" + hashParams[ServerHashParamKeys.ERROR] + \"; Error description: \" + hashParams[ServerHashParamKeys.ERROR_DESCRIPTION]);\r\n this.cacheStorage.setItem(ErrorCacheKeys.ERROR, hashParams[ServerHashParamKeys.ERROR]);\r\n this.cacheStorage.setItem(ErrorCacheKeys.ERROR_DESC, hashParams[ServerHashParamKeys.ERROR_DESCRIPTION]);\r\n // login\r\n if (stateInfo.requestType === Constants.login) {\r\n this.logger.verbose(\"RequestType is login, caching login error, generating authorityKey\");\r\n this.cacheStorage.setItem(ErrorCacheKeys.LOGIN_ERROR, hashParams[ServerHashParamKeys.ERROR_DESCRIPTION] + \":\" + hashParams[ServerHashParamKeys.ERROR]);\r\n authorityKey = AuthCache.generateAuthorityKey(stateInfo.state);\r\n }\r\n // acquireToken\r\n if (stateInfo.requestType === Constants.renewToken) {\r\n this.logger.verbose(\"RequestType is renewToken, generating acquireTokenAccountKey\");\r\n authorityKey = AuthCache.generateAuthorityKey(stateInfo.state);\r\n var account = this.getAccount();\r\n var accountId = void 0;\r\n if (account && !StringUtils.isEmpty(account.homeAccountIdentifier)) {\r\n accountId = account.homeAccountIdentifier;\r\n this.logger.verbose(\"AccountId is set\");\r\n }\r\n else {\r\n accountId = Constants.no_account;\r\n this.logger.verbose(\"AccountId is set as no_account\");\r\n }\r\n acquireTokenAccountKey = AuthCache.generateAcquireTokenAccountKey(accountId, stateInfo.state);\r\n }\r\n var hashErr = hashParams[ServerHashParamKeys.ERROR];\r\n var hashErrDesc = hashParams[ServerHashParamKeys.ERROR_DESCRIPTION];\r\n if (InteractionRequiredAuthError.isInteractionRequiredError(hashErr) ||\r\n InteractionRequiredAuthError.isInteractionRequiredError(hashErrDesc)) {\r\n error = new InteractionRequiredAuthError(hashParams[ServerHashParamKeys.ERROR], hashParams[ServerHashParamKeys.ERROR_DESCRIPTION]);\r\n }\r\n else {\r\n error = new ServerError(hashParams[ServerHashParamKeys.ERROR], hashParams[ServerHashParamKeys.ERROR_DESCRIPTION]);\r\n }\r\n }\r\n // If the server returns \"Success\"\r\n else {\r\n this.logger.verbose(\"Server returns success\");\r\n // Verify the state from redirect and record tokens to storage if exists\r\n if (stateInfo.stateMatch) {\r\n this.logger.info(\"State is right\");\r\n if (hashParams.hasOwnProperty(ServerHashParamKeys.SESSION_STATE)) {\r\n this.logger.verbose(\"Fragment has session state, caching\");\r\n this.cacheStorage.setItem(AuthCache.generateTemporaryCacheKey(TemporaryCacheKeys.SESSION_STATE, stateInfo.state), hashParams[ServerHashParamKeys.SESSION_STATE]);\r\n }\r\n response.accountState = this.getAccountState(stateInfo.state);\r\n var clientInfo = void 0;\r\n // Process access_token\r\n if (hashParams.hasOwnProperty(ServerHashParamKeys.ACCESS_TOKEN)) {\r\n this.logger.info(\"Fragment has access token\");\r\n response.accessToken = hashParams[ServerHashParamKeys.ACCESS_TOKEN];\r\n if (hashParams.hasOwnProperty(ServerHashParamKeys.SCOPE)) {\r\n response.scopes = hashParams[ServerHashParamKeys.SCOPE].split(\" \");\r\n }\r\n // retrieve the id_token from response if present\r\n if (hashParams.hasOwnProperty(ServerHashParamKeys.ID_TOKEN)) {\r\n this.logger.verbose(\"Fragment has id_token\");\r\n idTokenObj = new IdToken(hashParams[ServerHashParamKeys.ID_TOKEN]);\r\n }\r\n else {\r\n this.logger.verbose(\"No idToken on fragment, getting idToken from cache\");\r\n idTokenObj = new IdToken(this.cacheStorage.getItem(PersistentCacheKeys.IDTOKEN));\r\n }\r\n response = ResponseUtils.setResponseIdToken(response, idTokenObj);\r\n // set authority\r\n var authority = this.populateAuthority(stateInfo.state, this.inCookie, this.cacheStorage, idTokenObj);\r\n this.logger.verbose(\"Got authority from cache\");\r\n // retrieve client_info - if it is not found, generate the uid and utid from idToken\r\n if (hashParams.hasOwnProperty(ServerHashParamKeys.CLIENT_INFO)) {\r\n this.logger.verbose(\"Fragment has clientInfo\");\r\n clientInfo = new ClientInfo(hashParams[ServerHashParamKeys.CLIENT_INFO], authority);\r\n }\r\n else if (this.authorityInstance.AuthorityType === AuthorityType.Adfs) {\r\n clientInfo = ClientInfo.createClientInfoFromIdToken(idTokenObj, authority);\r\n }\r\n else {\r\n this.logger.warning(\"ClientInfo not received in the response from AAD\");\r\n }\r\n response.account = Account.createAccount(idTokenObj, clientInfo);\r\n this.logger.verbose(\"Account object created from response\");\r\n var accountKey = void 0;\r\n if (response.account && !StringUtils.isEmpty(response.account.homeAccountIdentifier)) {\r\n this.logger.verbose(\"AccountKey set\");\r\n accountKey = response.account.homeAccountIdentifier;\r\n }\r\n else {\r\n this.logger.verbose(\"AccountKey set as no_account\");\r\n accountKey = Constants.no_account;\r\n }\r\n acquireTokenAccountKey = AuthCache.generateAcquireTokenAccountKey(accountKey, stateInfo.state);\r\n var acquireTokenAccountKey_noaccount = AuthCache.generateAcquireTokenAccountKey(Constants.no_account, stateInfo.state);\r\n this.logger.verbose(\"AcquireTokenAccountKey generated\");\r\n var cachedAccount = this.cacheStorage.getItem(acquireTokenAccountKey);\r\n var acquireTokenAccount = void 0;\r\n // Check with the account in the Cache\r\n if (!StringUtils.isEmpty(cachedAccount)) {\r\n acquireTokenAccount = JSON.parse(cachedAccount);\r\n this.logger.verbose(\"AcquireToken request account retrieved from cache\");\r\n if (response.account && acquireTokenAccount && Account.compareAccounts(response.account, acquireTokenAccount)) {\r\n response = this.saveAccessToken(response, authority, hashParams, clientInfo);\r\n this.logger.info(\"The user object received in the response is the same as the one passed in the acquireToken request\");\r\n }\r\n else {\r\n this.logger.warning(\"The account object created from the response is not the same as the one passed in the acquireToken request\");\r\n }\r\n }\r\n else if (!StringUtils.isEmpty(this.cacheStorage.getItem(acquireTokenAccountKey_noaccount))) {\r\n this.logger.verbose(\"No acquireToken account retrieved from cache\");\r\n response = this.saveAccessToken(response, authority, hashParams, clientInfo);\r\n }\r\n }\r\n // Process id_token\r\n if (hashParams.hasOwnProperty(ServerHashParamKeys.ID_TOKEN)) {\r\n this.logger.info(\"Fragment has idToken\");\r\n // set the idToken\r\n idTokenObj = new IdToken(hashParams[ServerHashParamKeys.ID_TOKEN]);\r\n // set authority\r\n var authority = this.populateAuthority(stateInfo.state, this.inCookie, this.cacheStorage, idTokenObj);\r\n response = ResponseUtils.setResponseIdToken(response, idTokenObj);\r\n if (hashParams.hasOwnProperty(ServerHashParamKeys.CLIENT_INFO)) {\r\n this.logger.verbose(\"Fragment has clientInfo\");\r\n clientInfo = new ClientInfo(hashParams[ServerHashParamKeys.CLIENT_INFO], authority);\r\n }\r\n else if (this.authorityInstance.AuthorityType === AuthorityType.Adfs) {\r\n clientInfo = ClientInfo.createClientInfoFromIdToken(idTokenObj, authority);\r\n }\r\n else {\r\n this.logger.warning(\"ClientInfo not received in the response from AAD\");\r\n }\r\n this.account = Account.createAccount(idTokenObj, clientInfo);\r\n response.account = this.account;\r\n this.logger.verbose(\"Account object created from response\");\r\n if (idTokenObj && idTokenObj.nonce) {\r\n this.logger.verbose(\"IdToken has nonce\");\r\n // check nonce integrity if idToken has nonce - throw an error if not matched\r\n var cachedNonce = this.cacheStorage.getItem(AuthCache.generateTemporaryCacheKey(TemporaryCacheKeys.NONCE_IDTOKEN, stateInfo.state), this.inCookie);\r\n if (idTokenObj.nonce !== cachedNonce) {\r\n this.account = null;\r\n this.cacheStorage.setItem(ErrorCacheKeys.LOGIN_ERROR, \"Nonce Mismatch. Expected Nonce: \" + cachedNonce + \",\" + \"Actual Nonce: \" + idTokenObj.nonce);\r\n this.logger.error(\"Nonce Mismatch. Expected Nonce: \" + cachedNonce + \", Actual Nonce: \" + idTokenObj.nonce);\r\n error = ClientAuthError.createNonceMismatchError(cachedNonce, idTokenObj.nonce);\r\n }\r\n // Save the token\r\n else {\r\n this.logger.verbose(\"Nonce matches, saving idToken to cache\");\r\n this.cacheStorage.setItem(PersistentCacheKeys.IDTOKEN, hashParams[ServerHashParamKeys.ID_TOKEN], this.inCookie);\r\n this.cacheStorage.setItem(PersistentCacheKeys.CLIENT_INFO, clientInfo.encodeClientInfo(), this.inCookie);\r\n // Save idToken as access token item for app itself\r\n this.saveIdToken(response, authority, hashParams, clientInfo, idTokenObj);\r\n }\r\n }\r\n else {\r\n this.logger.verbose(\"No idToken or no nonce. Cache key for Authority set as state\");\r\n authorityKey = stateInfo.state;\r\n acquireTokenAccountKey = stateInfo.state;\r\n this.logger.error(\"Invalid id_token received in the response\");\r\n error = ClientAuthError.createInvalidIdTokenError(idTokenObj);\r\n this.cacheStorage.setItem(ErrorCacheKeys.ERROR, error.errorCode);\r\n this.cacheStorage.setItem(ErrorCacheKeys.ERROR_DESC, error.errorMessage);\r\n }\r\n }\r\n }\r\n // State mismatch - unexpected/invalid state\r\n else {\r\n this.logger.verbose(\"State mismatch\");\r\n authorityKey = stateInfo.state;\r\n acquireTokenAccountKey = stateInfo.state;\r\n var expectedState = this.cacheStorage.getItem(AuthCache.generateTemporaryCacheKey(TemporaryCacheKeys.STATE_LOGIN, stateInfo.state), this.inCookie);\r\n this.logger.error(\"State Mismatch. Expected State: \" + expectedState + \", Actual State: \" + stateInfo.state);\r\n error = ClientAuthError.createInvalidStateError(stateInfo.state, expectedState);\r\n this.cacheStorage.setItem(ErrorCacheKeys.ERROR, error.errorCode);\r\n this.cacheStorage.setItem(ErrorCacheKeys.ERROR_DESC, error.errorMessage);\r\n }\r\n }\r\n // Set status to completed\r\n this.cacheStorage.removeItem(AuthCache.generateTemporaryCacheKey(TemporaryCacheKeys.RENEW_STATUS, stateInfo.state));\r\n this.cacheStorage.resetTempCacheItems(stateInfo.state);\r\n this.logger.verbose(\"Status set to complete, temporary cache cleared\");\r\n // this is required if navigateToLoginRequestUrl=false\r\n if (this.inCookie) {\r\n this.logger.verbose(\"InCookie is true, setting authorityKey in cookie\");\r\n this.cacheStorage.setItemCookie(authorityKey, \"\", -1);\r\n this.cacheStorage.clearMsalCookie(stateInfo.state);\r\n }\r\n if (error) {\r\n // Error case, set status to cancelled\r\n throw error;\r\n }\r\n if (!response) {\r\n throw AuthError.createUnexpectedError(\"Response is null\");\r\n }\r\n return response;\r\n };\r\n /**\r\n * Set Authority when saving Token from the hash\r\n * @param state\r\n * @param inCookie\r\n * @param cacheStorage\r\n * @param idTokenObj\r\n * @param response\r\n */\r\n UserAgentApplication.prototype.populateAuthority = function (state, inCookie, cacheStorage, idTokenObj) {\r\n this.logger.verbose(\"PopulateAuthority has been called\");\r\n var authorityKey = AuthCache.generateAuthorityKey(state);\r\n var cachedAuthority = cacheStorage.getItem(authorityKey, inCookie);\r\n // retrieve the authority from cache and replace with tenantID\r\n return StringUtils.isEmpty(cachedAuthority) ? cachedAuthority : UrlUtils.replaceTenantPath(cachedAuthority, idTokenObj.tenantId);\r\n };\r\n /* tslint:enable:no-string-literal */\r\n // #endregion\r\n // #region Account\r\n /**\r\n * Returns the signed in account\r\n * (the account object is created at the time of successful login)\r\n * or null when no state is found\r\n * @returns {@link Account} - the account object stored in MSAL\r\n */\r\n UserAgentApplication.prototype.getAccount = function () {\r\n // if a session already exists, get the account from the session\r\n if (this.account) {\r\n return this.account;\r\n }\r\n // frame is used to get idToken and populate the account for the given session\r\n var rawIdToken = this.cacheStorage.getItem(PersistentCacheKeys.IDTOKEN, this.inCookie);\r\n var rawClientInfo = this.cacheStorage.getItem(PersistentCacheKeys.CLIENT_INFO, this.inCookie);\r\n if (!StringUtils.isEmpty(rawIdToken) && !StringUtils.isEmpty(rawClientInfo)) {\r\n var idToken = new IdToken(rawIdToken);\r\n var clientInfo = new ClientInfo(rawClientInfo, \"\");\r\n this.account = Account.createAccount(idToken, clientInfo);\r\n return this.account;\r\n }\r\n // if login not yet done, return null\r\n return null;\r\n };\r\n /**\r\n * @hidden\r\n *\r\n * Extracts state value from the accountState sent with the authentication request.\r\n * @returns {string} scope.\r\n * @ignore\r\n */\r\n UserAgentApplication.prototype.getAccountState = function (state) {\r\n if (state) {\r\n var splitIndex = state.indexOf(Constants.resourceDelimiter);\r\n if (splitIndex > -1 && splitIndex + 1 < state.length) {\r\n return state.substring(splitIndex + 1);\r\n }\r\n }\r\n return state;\r\n };\r\n /**\r\n * Use to get a list of unique accounts in MSAL cache based on homeAccountIdentifier.\r\n *\r\n * @param {@link Array<Account>} Account - all unique accounts in MSAL cache.\r\n */\r\n UserAgentApplication.prototype.getAllAccounts = function () {\r\n var accounts = [];\r\n var accessTokenCacheItems = this.cacheStorage.getAllAccessTokens(Constants.clientId, Constants.homeAccountIdentifier);\r\n for (var i = 0; i < accessTokenCacheItems.length; i++) {\r\n var idToken = new IdToken(accessTokenCacheItems[i].value.idToken);\r\n var clientInfo = new ClientInfo(accessTokenCacheItems[i].value.homeAccountIdentifier, \"\");\r\n var account = Account.createAccount(idToken, clientInfo);\r\n accounts.push(account);\r\n }\r\n return this.getUniqueAccounts(accounts);\r\n };\r\n /**\r\n * @hidden\r\n *\r\n * Used to filter accounts based on homeAccountIdentifier\r\n * @param {Array<Account>} Accounts - accounts saved in the cache\r\n * @ignore\r\n */\r\n UserAgentApplication.prototype.getUniqueAccounts = function (accounts) {\r\n if (!accounts || accounts.length <= 1) {\r\n return accounts;\r\n }\r\n var flags = [];\r\n var uniqueAccounts = [];\r\n for (var index = 0; index < accounts.length; ++index) {\r\n if (accounts[index].homeAccountIdentifier && flags.indexOf(accounts[index].homeAccountIdentifier) === -1) {\r\n flags.push(accounts[index].homeAccountIdentifier);\r\n uniqueAccounts.push(accounts[index]);\r\n }\r\n }\r\n return uniqueAccounts;\r\n };\r\n // #endregion\r\n // #region Angular\r\n /**\r\n * @hidden\r\n *\r\n * Broadcast messages - Used only for Angular? *\r\n * @param eventName\r\n * @param data\r\n */\r\n UserAgentApplication.prototype.broadcast = function (eventName, data) {\r\n var evt = new CustomEvent(eventName, { detail: data });\r\n window.dispatchEvent(evt);\r\n };\r\n /**\r\n * @hidden\r\n *\r\n * Helper function to retrieve the cached token\r\n *\r\n * @param scopes\r\n * @param {@link Account} account\r\n * @param state\r\n * @return {@link AuthResponse} AuthResponse\r\n */\r\n UserAgentApplication.prototype.getCachedTokenInternal = function (scopes, account, state, correlationId) {\r\n // Get the current session's account object\r\n var accountObject = account || this.getAccount();\r\n if (!accountObject) {\r\n return null;\r\n }\r\n // Construct AuthenticationRequest based on response type; set \"redirectUri\" from the \"request\" which makes this call from Angular - for this.getRedirectUri()\r\n var newAuthority = this.authorityInstance ? this.authorityInstance : AuthorityFactory.CreateInstance(this.authority, this.config.auth.validateAuthority);\r\n var responseType = this.getTokenType(accountObject, scopes);\r\n var serverAuthenticationRequest = new ServerRequestParameters(newAuthority, this.clientId, responseType, this.getRedirectUri(), scopes, state, correlationId);\r\n // get cached token\r\n return this.getCachedToken(serverAuthenticationRequest, account);\r\n };\r\n /**\r\n * @hidden\r\n *\r\n * Get scopes for the Endpoint - Used in Angular to track protected and unprotected resources without interaction from the developer app\r\n * Note: Please check if we need to set the \"redirectUri\" from the \"request\" which makes this call from Angular - for this.getRedirectUri()\r\n *\r\n * @param endpoint\r\n */\r\n UserAgentApplication.prototype.getScopesForEndpoint = function (endpoint) {\r\n // if user specified list of unprotectedResources, no need to send token to these endpoints, return null.\r\n if (this.config.framework.unprotectedResources.length > 0) {\r\n for (var i = 0; i < this.config.framework.unprotectedResources.length; i++) {\r\n if (endpoint.indexOf(this.config.framework.unprotectedResources[i]) > -1) {\r\n return null;\r\n }\r\n }\r\n }\r\n // process all protected resources and send the matched one\r\n if (this.config.framework.protectedResourceMap.size > 0) {\r\n for (var _i = 0, _a = Array.from(this.config.framework.protectedResourceMap.keys()); _i < _a.length; _i++) {\r\n var key = _a[_i];\r\n // configEndpoint is like /api/Todo requested endpoint can be /api/Todo/1\r\n if (endpoint.indexOf(key) > -1) {\r\n return this.config.framework.protectedResourceMap.get(key);\r\n }\r\n }\r\n }\r\n /*\r\n * default resource will be clientid if nothing specified\r\n * App will use idtoken for calls to itself\r\n * check if it's staring from http or https, needs to match with app host\r\n */\r\n if (endpoint.indexOf(\"http://\") > -1 || endpoint.indexOf(\"https://\") > -1) {\r\n if (UrlUtils.getHostFromUri(endpoint) === UrlUtils.getHostFromUri(this.getRedirectUri())) {\r\n return new Array(this.clientId);\r\n }\r\n }\r\n else {\r\n /*\r\n * in angular level, the url for $http interceptor call could be relative url,\r\n * if it's relative call, we'll treat it as app backend call.\r\n */\r\n return new Array(this.clientId);\r\n }\r\n // if not the app's own backend or not a domain listed in the endpoints structure\r\n return null;\r\n };\r\n /**\r\n * Return boolean flag to developer to help inform if login is in progress\r\n * @returns {boolean} true/false\r\n */\r\n UserAgentApplication.prototype.getLoginInProgress = function () {\r\n return this.cacheStorage.isInteractionInProgress(true);\r\n };\r\n /**\r\n * @hidden\r\n * @ignore\r\n *\r\n * @param loginInProgress\r\n */\r\n UserAgentApplication.prototype.setInteractionInProgress = function (inProgress) {\r\n this.cacheStorage.setInteractionInProgress(inProgress);\r\n };\r\n /**\r\n * @hidden\r\n * @ignore\r\n *\r\n * @param loginInProgress\r\n */\r\n UserAgentApplication.prototype.setloginInProgress = function (loginInProgress) {\r\n this.setInteractionInProgress(loginInProgress);\r\n };\r\n /**\r\n * @hidden\r\n * @ignore\r\n *\r\n * returns the status of acquireTokenInProgress\r\n */\r\n UserAgentApplication.prototype.getAcquireTokenInProgress = function () {\r\n return this.cacheStorage.isInteractionInProgress(true);\r\n };\r\n /**\r\n * @hidden\r\n * @ignore\r\n *\r\n * @param acquireTokenInProgress\r\n */\r\n UserAgentApplication.prototype.setAcquireTokenInProgress = function (acquireTokenInProgress) {\r\n this.setInteractionInProgress(acquireTokenInProgress);\r\n };\r\n /**\r\n * @hidden\r\n * @ignore\r\n *\r\n * returns the logger handle\r\n */\r\n UserAgentApplication.prototype.getLogger = function () {\r\n return this.logger;\r\n };\r\n /**\r\n * Sets the logger callback.\r\n * @param logger Logger callback\r\n */\r\n UserAgentApplication.prototype.setLogger = function (logger) {\r\n this.logger = logger;\r\n };\r\n // #endregion\r\n // #region Getters and Setters\r\n /**\r\n * Use to get the redirect uri configured in MSAL or null.\r\n * Evaluates redirectUri if its a function, otherwise simply returns its value.\r\n *\r\n * @returns {string} redirect URL\r\n */\r\n UserAgentApplication.prototype.getRedirectUri = function (reqRedirectUri) {\r\n if (reqRedirectUri) {\r\n return reqRedirectUri;\r\n }\r\n else if (typeof this.config.auth.redirectUri === \"function\") {\r\n return this.config.auth.redirectUri();\r\n }\r\n return this.config.auth.redirectUri;\r\n };\r\n /**\r\n * Use to get the post logout redirect uri configured in MSAL or null.\r\n * Evaluates postLogoutredirectUri if its a function, otherwise simply returns its value.\r\n *\r\n * @returns {string} post logout redirect URL\r\n */\r\n UserAgentApplication.prototype.getPostLogoutRedirectUri = function () {\r\n if (typeof this.config.auth.postLogoutRedirectUri === \"function\") {\r\n return this.config.auth.postLogoutRedirectUri();\r\n }\r\n return this.config.auth.postLogoutRedirectUri;\r\n };\r\n /**\r\n * Use to get the current {@link Configuration} object in MSAL\r\n *\r\n * @returns {@link Configuration}\r\n */\r\n UserAgentApplication.prototype.getCurrentConfiguration = function () {\r\n if (!this.config) {\r\n throw ClientConfigurationError.createNoSetConfigurationError();\r\n }\r\n return this.config;\r\n };\r\n /**\r\n * @ignore\r\n *\r\n * Utils function to create the Authentication\r\n * @param {@link account} account object\r\n * @param scopes\r\n *\r\n * @returns {string} token type: token, id_token or id_token token\r\n *\r\n */\r\n UserAgentApplication.prototype.getTokenType = function (accountObject, scopes) {\r\n var accountsMatch = Account.compareAccounts(accountObject, this.getAccount());\r\n return ServerRequestParameters.determineResponseType(accountsMatch, scopes);\r\n };\r\n /**\r\n * @hidden\r\n * @ignore\r\n *\r\n * Sets the cachekeys for and stores the account information in cache\r\n * @param account\r\n * @param state\r\n * @hidden\r\n */\r\n UserAgentApplication.prototype.setAccountCache = function (account, state) {\r\n // Cache acquireTokenAccountKey\r\n var accountId = account ? this.getAccountId(account) : Constants.no_account;\r\n var acquireTokenAccountKey = AuthCache.generateAcquireTokenAccountKey(accountId, state);\r\n this.cacheStorage.setItem(acquireTokenAccountKey, JSON.stringify(account));\r\n };\r\n /**\r\n * @hidden\r\n * @ignore\r\n *\r\n * Sets the cacheKey for and stores the authority information in cache\r\n * @param state\r\n * @param authority\r\n * @hidden\r\n */\r\n UserAgentApplication.prototype.setAuthorityCache = function (state, authority) {\r\n // Cache authorityKey\r\n var authorityKey = AuthCache.generateAuthorityKey(state);\r\n this.cacheStorage.setItem(authorityKey, UrlUtils.CanonicalizeUri(authority), this.inCookie);\r\n };\r\n /**\r\n * Updates account, authority, and nonce in cache\r\n * @param serverAuthenticationRequest\r\n * @param account\r\n * @hidden\r\n * @ignore\r\n */\r\n UserAgentApplication.prototype.updateCacheEntries = function (serverAuthenticationRequest, account, isLoginCall, loginStartPage) {\r\n // Cache Request Originator Page\r\n if (loginStartPage) {\r\n this.cacheStorage.setItem(AuthCache.generateTemporaryCacheKey(TemporaryCacheKeys.LOGIN_REQUEST, serverAuthenticationRequest.state), loginStartPage, this.inCookie);\r\n }\r\n // Cache account and authority\r\n if (isLoginCall) {\r\n // Cache the state\r\n this.cacheStorage.setItem(AuthCache.generateTemporaryCacheKey(TemporaryCacheKeys.STATE_LOGIN, serverAuthenticationRequest.state), serverAuthenticationRequest.state, this.inCookie);\r\n }\r\n else {\r\n this.setAccountCache(account, serverAuthenticationRequest.state);\r\n }\r\n // Cache authorityKey\r\n this.setAuthorityCache(serverAuthenticationRequest.state, serverAuthenticationRequest.authority);\r\n // Cache nonce\r\n this.cacheStorage.setItem(AuthCache.generateTemporaryCacheKey(TemporaryCacheKeys.NONCE_IDTOKEN, serverAuthenticationRequest.state), serverAuthenticationRequest.nonce, this.inCookie);\r\n };\r\n /**\r\n * Returns the unique identifier for the logged in account\r\n * @param account\r\n * @hidden\r\n * @ignore\r\n */\r\n UserAgentApplication.prototype.getAccountId = function (account) {\r\n // return `${account.accountIdentifier}` + Constants.resourceDelimiter + `${account.homeAccountIdentifier}`;\r\n var accountId;\r\n if (!StringUtils.isEmpty(account.homeAccountIdentifier)) {\r\n accountId = account.homeAccountIdentifier;\r\n }\r\n else {\r\n accountId = Constants.no_account;\r\n }\r\n return accountId;\r\n };\r\n /**\r\n * @ignore\r\n * @param extraQueryParameters\r\n *\r\n * Construct 'tokenRequest' from the available data in adalIdToken\r\n */\r\n UserAgentApplication.prototype.buildIDTokenRequest = function (request) {\r\n var tokenRequest = {\r\n scopes: Constants.oidcScopes,\r\n authority: this.authority,\r\n account: this.getAccount(),\r\n extraQueryParameters: request.extraQueryParameters,\r\n correlationId: request.correlationId\r\n };\r\n return tokenRequest;\r\n };\r\n /**\r\n * @ignore\r\n * @param config\r\n * @param clientId\r\n *\r\n * Construct TelemetryManager from Configuration\r\n */\r\n UserAgentApplication.prototype.getTelemetryManagerFromConfig = function (config, clientId) {\r\n if (!config) { // if unset\r\n return TelemetryManager.getTelemetrymanagerStub(clientId, this.logger);\r\n }\r\n // if set then validate\r\n var applicationName = config.applicationName, applicationVersion = config.applicationVersion, telemetryEmitter = config.telemetryEmitter;\r\n if (!applicationName || !applicationVersion || !telemetryEmitter) {\r\n throw ClientConfigurationError.createTelemetryConfigError(config);\r\n }\r\n // if valid then construct\r\n var telemetryPlatform = {\r\n applicationName: applicationName,\r\n applicationVersion: applicationVersion\r\n };\r\n var telemetryManagerConfig = {\r\n platform: telemetryPlatform,\r\n clientId: clientId\r\n };\r\n return new TelemetryManager(telemetryManagerConfig, telemetryEmitter, this.logger);\r\n };\r\n return UserAgentApplication;\r\n}());\r\nexport { UserAgentApplication };\r\n//# sourceMappingURL=UserAgentApplication.js.map","// Your use of the content in the files referenced here is subject to the terms of the license at https://aka.ms/fluentui-assets-license\n\nimport { IIconOptions, IIconSubset, registerIcons } from '@uifabric/styling';\n\nexport function initializeIcons(baseUrl: string = '', options?: IIconOptions): void {\n const subset: IIconSubset = {\n style: {\n MozOsxFontSmoothing: 'grayscale',\n WebkitFontSmoothing: 'antialiased',\n fontStyle: 'normal',\n fontWeight: 'normal',\n speak: 'none',\n },\n fontFace: {\n fontFamily: `\"FabricMDL2Icons\"`,\n src: `url('${baseUrl}fabric-icons-a13498cf.woff') format('woff')`,\n },\n icons: {\n GlobalNavButton: '\\uE700',\n ChevronDown: '\\uE70D',\n ChevronUp: '\\uE70E',\n Edit: '\\uE70F',\n Add: '\\uE710',\n Cancel: '\\uE711',\n More: '\\uE712',\n Settings: '\\uE713',\n Mail: '\\uE715',\n Filter: '\\uE71C',\n Search: '\\uE721',\n Share: '\\uE72D',\n BlockedSite: '\\uE72F',\n FavoriteStar: '\\uE734',\n FavoriteStarFill: '\\uE735',\n CheckMark: '\\uE73E',\n Delete: '\\uE74D',\n ChevronLeft: '\\uE76B',\n ChevronRight: '\\uE76C',\n Calendar: '\\uE787',\n Megaphone: '\\uE789',\n Undo: '\\uE7A7',\n Flag: '\\uE7C1',\n Page: '\\uE7C3',\n Pinned: '\\uE840',\n View: '\\uE890',\n Clear: '\\uE894',\n Download: '\\uE896',\n Upload: '\\uE898',\n Folder: '\\uE8B7',\n Sort: '\\uE8CB',\n AlignRight: '\\uE8E2',\n AlignLeft: '\\uE8E4',\n Tag: '\\uE8EC',\n AddFriend: '\\uE8FA',\n Info: '\\uE946',\n SortLines: '\\uE9D0',\n List: '\\uEA37',\n CircleRing: '\\uEA3A',\n Heart: '\\uEB51',\n HeartFill: '\\uEB52',\n Tiles: '\\uECA5',\n Embed: '\\uECCE',\n Glimmer: '\\uECF4',\n Ascending: '\\uEDC0',\n Descending: '\\uEDC1',\n SortUp: '\\uEE68',\n SortDown: '\\uEE69',\n SyncToPC: '\\uEE6E',\n LargeGrid: '\\uEECB',\n SkypeCheck: '\\uEF80',\n SkypeClock: '\\uEF81',\n SkypeMinus: '\\uEF82',\n ClearFilter: '\\uEF8F',\n Flow: '\\uEF90',\n StatusCircleCheckmark: '\\uF13E',\n MoreVertical: '\\uF2BC',\n },\n };\n\n registerIcons(subset, options);\n}\n"," // Your use of the content in the files referenced here is subject to the terms of the license at https://aka.ms/fluentui-assets-license\n\nimport {\n IIconOptions,\n IIconSubset,\n registerIcons\n} from '@uifabric/styling';\n\nexport function initializeIcons(\n baseUrl: string = '',\n options?: IIconOptions\n): void {\n const subset: IIconSubset = {\n style: {\n MozOsxFontSmoothing: 'grayscale',\n WebkitFontSmoothing: 'antialiased',\n fontStyle: 'normal',\n fontWeight: 'normal',\n speak: 'none'\n },\n fontFace: {\n fontFamily: `\"FabricMDL2Icons-0\"`,\n src: `url('${baseUrl}fabric-icons-0-467ee27f.woff') format('woff')`\n },\n icons: {\n 'PageLink': '\\uE302',\n 'CommentSolid': '\\uE30E',\n 'ChangeEntitlements': '\\uE310',\n 'Installation': '\\uE311',\n 'WebAppBuilderModule': '\\uE313',\n 'WebAppBuilderFragment': '\\uE314',\n 'WebAppBuilderSlot': '\\uE315',\n 'BullseyeTargetEdit': '\\uE319',\n 'WebAppBuilderFragmentCreate': '\\uE31B',\n 'PageData': '\\uE31C',\n 'PageHeaderEdit': '\\uE31D',\n 'ProductList': '\\uE31E',\n 'UnpublishContent': '\\uE31F',\n 'DependencyAdd': '\\uE344',\n 'DependencyRemove': '\\uE345',\n 'EntitlementPolicy': '\\uE346',\n 'EntitlementRedemption': '\\uE347',\n 'SchoolDataSyncLogo': '\\uE34C',\n 'PinSolid12': '\\uE352',\n 'PinSolidOff12': '\\uE353',\n 'AddLink': '\\uE35E',\n 'SharepointAppIcon16': '\\uE365',\n 'DataflowsLink': '\\uE366',\n 'TimePicker': '\\uE367',\n 'UserWarning': '\\uE368',\n 'ComplianceAudit': '\\uE369',\n 'InternetSharing': '\\uE704',\n 'Brightness': '\\uE706',\n 'MapPin': '\\uE707',\n 'Airplane': '\\uE709',\n 'Tablet': '\\uE70A',\n 'QuickNote': '\\uE70B',\n 'Video': '\\uE714',\n 'People': '\\uE716',\n 'Phone': '\\uE717',\n 'Pin': '\\uE718',\n 'Shop': '\\uE719',\n 'Stop': '\\uE71A',\n 'Link': '\\uE71B',\n 'AllApps': '\\uE71D',\n 'Zoom': '\\uE71E',\n 'ZoomOut': '\\uE71F',\n 'Microphone': '\\uE720',\n 'Camera': '\\uE722',\n 'Attach': '\\uE723',\n 'Send': '\\uE724',\n 'FavoriteList': '\\uE728',\n 'PageSolid': '\\uE729',\n 'Forward': '\\uE72A',\n 'Back': '\\uE72B',\n 'Refresh': '\\uE72C',\n 'Lock': '\\uE72E',\n 'ReportHacked': '\\uE730',\n 'EMI': '\\uE731',\n 'MiniLink': '\\uE732',\n 'Blocked': '\\uE733',\n 'ReadingMode': '\\uE736',\n 'Favicon': '\\uE737',\n 'Remove': '\\uE738',\n 'Checkbox': '\\uE739',\n 'CheckboxComposite': '\\uE73A',\n 'CheckboxFill': '\\uE73B',\n 'CheckboxIndeterminate': '\\uE73C',\n 'CheckboxCompositeReversed': '\\uE73D',\n 'BackToWindow': '\\uE73F',\n 'FullScreen': '\\uE740',\n 'Print': '\\uE749',\n 'Up': '\\uE74A',\n 'Down': '\\uE74B',\n 'OEM': '\\uE74C',\n 'Save': '\\uE74E',\n 'ReturnKey': '\\uE751',\n 'Cloud': '\\uE753',\n 'Flashlight': '\\uE754',\n 'CommandPrompt': '\\uE756',\n 'Sad': '\\uE757',\n 'RealEstate': '\\uE758',\n 'SIPMove': '\\uE759',\n 'EraseTool': '\\uE75C',\n 'GripperTool': '\\uE75E',\n 'Dialpad': '\\uE75F',\n 'PageLeft': '\\uE760',\n 'PageRight': '\\uE761',\n 'MultiSelect': '\\uE762',\n 'KeyboardClassic': '\\uE765',\n 'Play': '\\uE768',\n 'Pause': '\\uE769',\n 'InkingTool': '\\uE76D',\n 'Emoji2': '\\uE76E',\n 'GripperBarHorizontal': '\\uE76F',\n 'System': '\\uE770',\n 'Personalize': '\\uE771',\n 'SearchAndApps': '\\uE773',\n 'Globe': '\\uE774',\n 'EaseOfAccess': '\\uE776',\n 'ContactInfo': '\\uE779',\n 'Unpin': '\\uE77A',\n 'Contact': '\\uE77B',\n 'Memo': '\\uE77C',\n 'IncomingCall': '\\uE77E'\n }\n };\n\n registerIcons(subset, options);\n}\n"," // Your use of the content in the files referenced here is subject to the terms of the license at https://aka.ms/fluentui-assets-license\n\nimport {\n IIconOptions,\n IIconSubset,\n registerIcons\n} from '@uifabric/styling';\n\nexport function initializeIcons(\n baseUrl: string = '',\n options?: IIconOptions\n): void {\n const subset: IIconSubset = {\n style: {\n MozOsxFontSmoothing: 'grayscale',\n WebkitFontSmoothing: 'antialiased',\n fontStyle: 'normal',\n fontWeight: 'normal',\n speak: 'none'\n },\n fontFace: {\n fontFamily: `\"FabricMDL2Icons-1\"`,\n src: `url('${baseUrl}fabric-icons-1-4d521695.woff') format('woff')`\n },\n icons: {\n 'Paste': '\\uE77F',\n 'WindowsLogo': '\\uE782',\n 'Error': '\\uE783',\n 'GripperBarVertical': '\\uE784',\n 'Unlock': '\\uE785',\n 'Slideshow': '\\uE786',\n 'Trim': '\\uE78A',\n 'AutoEnhanceOn': '\\uE78D',\n 'AutoEnhanceOff': '\\uE78E',\n 'Color': '\\uE790',\n 'SaveAs': '\\uE792',\n 'Light': '\\uE793',\n 'Filters': '\\uE795',\n 'AspectRatio': '\\uE799',\n 'Contrast': '\\uE7A1',\n 'Redo': '\\uE7A6',\n 'Crop': '\\uE7A8',\n 'PhotoCollection': '\\uE7AA',\n 'Album': '\\uE7AB',\n 'Rotate': '\\uE7AD',\n 'PanoIndicator': '\\uE7B0',\n 'Translate': '\\uE7B2',\n 'RedEye': '\\uE7B3',\n 'ViewOriginal': '\\uE7B4',\n 'ThumbnailView': '\\uE7B6',\n 'Package': '\\uE7B8',\n 'Telemarketer': '\\uE7B9',\n 'Warning': '\\uE7BA',\n 'Financial': '\\uE7BB',\n 'Education': '\\uE7BE',\n 'ShoppingCart': '\\uE7BF',\n 'Train': '\\uE7C0',\n 'Move': '\\uE7C2',\n 'TouchPointer': '\\uE7C9',\n 'Merge': '\\uE7D5',\n 'TurnRight': '\\uE7DB',\n 'Ferry': '\\uE7E3',\n 'Highlight': '\\uE7E6',\n 'PowerButton': '\\uE7E8',\n 'Tab': '\\uE7E9',\n 'Admin': '\\uE7EF',\n 'TVMonitor': '\\uE7F4',\n 'Speakers': '\\uE7F5',\n 'Game': '\\uE7FC',\n 'HorizontalTabKey': '\\uE7FD',\n 'UnstackSelected': '\\uE7FE',\n 'StackIndicator': '\\uE7FF',\n 'Nav2DMapView': '\\uE800',\n 'StreetsideSplitMinimize': '\\uE802',\n 'Car': '\\uE804',\n 'Bus': '\\uE806',\n 'EatDrink': '\\uE807',\n 'SeeDo': '\\uE808',\n 'LocationCircle': '\\uE80E',\n 'Home': '\\uE80F',\n 'SwitcherStartEnd': '\\uE810',\n 'ParkingLocation': '\\uE811',\n 'IncidentTriangle': '\\uE814',\n 'Touch': '\\uE815',\n 'MapDirections': '\\uE816',\n 'CaretHollow': '\\uE817',\n 'CaretSolid': '\\uE818',\n 'History': '\\uE81C',\n 'Location': '\\uE81D',\n 'MapLayers': '\\uE81E',\n 'SearchNearby': '\\uE820',\n 'Work': '\\uE821',\n 'Recent': '\\uE823',\n 'Hotel': '\\uE824',\n 'Bank': '\\uE825',\n 'LocationDot': '\\uE827',\n 'Dictionary': '\\uE82D',\n 'ChromeBack': '\\uE830',\n 'FolderOpen': '\\uE838',\n 'PinnedFill': '\\uE842',\n 'RevToggleKey': '\\uE845',\n 'USB': '\\uE88E',\n 'Previous': '\\uE892',\n 'Next': '\\uE893',\n 'Sync': '\\uE895',\n 'Help': '\\uE897',\n 'Emoji': '\\uE899',\n 'MailForward': '\\uE89C',\n 'ClosePane': '\\uE89F',\n 'OpenPane': '\\uE8A0',\n 'PreviewLink': '\\uE8A1',\n 'ZoomIn': '\\uE8A3',\n 'Bookmarks': '\\uE8A4',\n 'Document': '\\uE8A5',\n 'ProtectedDocument': '\\uE8A6',\n 'OpenInNewWindow': '\\uE8A7',\n 'MailFill': '\\uE8A8',\n 'ViewAll': '\\uE8A9',\n 'Switch': '\\uE8AB',\n 'Rename': '\\uE8AC',\n 'Go': '\\uE8AD',\n 'Remote': '\\uE8AF',\n 'SelectAll': '\\uE8B3',\n 'Orientation': '\\uE8B4',\n 'Import': '\\uE8B5'\n }\n };\n\n registerIcons(subset, options);\n}\n"," // Your use of the content in the files referenced here is subject to the terms of the license at https://aka.ms/fluentui-assets-license\n\nimport {\n IIconOptions,\n IIconSubset,\n registerIcons\n} from '@uifabric/styling';\n\nexport function initializeIcons(\n baseUrl: string = '',\n options?: IIconOptions\n): void {\n const subset: IIconSubset = {\n style: {\n MozOsxFontSmoothing: 'grayscale',\n WebkitFontSmoothing: 'antialiased',\n fontStyle: 'normal',\n fontWeight: 'normal',\n speak: 'none'\n },\n fontFace: {\n fontFamily: `\"FabricMDL2Icons-2\"`,\n src: `url('${baseUrl}fabric-icons-2-63c99abf.woff') format('woff')`\n },\n icons: {\n 'Picture': '\\uE8B9',\n 'ChromeClose': '\\uE8BB',\n 'ShowResults': '\\uE8BC',\n 'Message': '\\uE8BD',\n 'CalendarDay': '\\uE8BF',\n 'CalendarWeek': '\\uE8C0',\n 'MailReplyAll': '\\uE8C2',\n 'Read': '\\uE8C3',\n 'Cut': '\\uE8C6',\n 'PaymentCard': '\\uE8C7',\n 'Copy': '\\uE8C8',\n 'Important': '\\uE8C9',\n 'MailReply': '\\uE8CA',\n 'GotoToday': '\\uE8D1',\n 'Font': '\\uE8D2',\n 'FontColor': '\\uE8D3',\n 'FolderFill': '\\uE8D5',\n 'Permissions': '\\uE8D7',\n 'DisableUpdates': '\\uE8D8',\n 'Unfavorite': '\\uE8D9',\n 'Italic': '\\uE8DB',\n 'Underline': '\\uE8DC',\n 'Bold': '\\uE8DD',\n 'MoveToFolder': '\\uE8DE',\n 'Dislike': '\\uE8E0',\n 'Like': '\\uE8E1',\n 'AlignCenter': '\\uE8E3',\n 'OpenFile': '\\uE8E5',\n 'ClearSelection': '\\uE8E6',\n 'FontDecrease': '\\uE8E7',\n 'FontIncrease': '\\uE8E8',\n 'FontSize': '\\uE8E9',\n 'CellPhone': '\\uE8EA',\n 'RepeatOne': '\\uE8ED',\n 'RepeatAll': '\\uE8EE',\n 'Calculator': '\\uE8EF',\n 'Library': '\\uE8F1',\n 'PostUpdate': '\\uE8F3',\n 'NewFolder': '\\uE8F4',\n 'CalendarReply': '\\uE8F5',\n 'UnsyncFolder': '\\uE8F6',\n 'SyncFolder': '\\uE8F7',\n 'BlockContact': '\\uE8F8',\n 'Accept': '\\uE8FB',\n 'BulletedList': '\\uE8FD',\n 'Preview': '\\uE8FF',\n 'News': '\\uE900',\n 'Chat': '\\uE901',\n 'Group': '\\uE902',\n 'World': '\\uE909',\n 'Comment': '\\uE90A',\n 'DockLeft': '\\uE90C',\n 'DockRight': '\\uE90D',\n 'Repair': '\\uE90F',\n 'Accounts': '\\uE910',\n 'Street': '\\uE913',\n 'RadioBullet': '\\uE915',\n 'Stopwatch': '\\uE916',\n 'Clock': '\\uE917',\n 'WorldClock': '\\uE918',\n 'AlarmClock': '\\uE919',\n 'Photo': '\\uE91B',\n 'ActionCenter': '\\uE91C',\n 'Hospital': '\\uE91D',\n 'Timer': '\\uE91E',\n 'FullCircleMask': '\\uE91F',\n 'LocationFill': '\\uE920',\n 'ChromeMinimize': '\\uE921',\n 'ChromeRestore': '\\uE923',\n 'Annotation': '\\uE924',\n 'Fingerprint': '\\uE928',\n 'Handwriting': '\\uE929',\n 'ChromeFullScreen': '\\uE92D',\n 'Completed': '\\uE930',\n 'Label': '\\uE932',\n 'FlickDown': '\\uE935',\n 'FlickUp': '\\uE936',\n 'FlickLeft': '\\uE937',\n 'FlickRight': '\\uE938',\n 'MiniExpand': '\\uE93A',\n 'MiniContract': '\\uE93B',\n 'Streaming': '\\uE93E',\n 'MusicInCollection': '\\uE940',\n 'OneDriveLogo': '\\uE941',\n 'CompassNW': '\\uE942',\n 'Code': '\\uE943',\n 'LightningBolt': '\\uE945',\n 'CalculatorMultiply': '\\uE947',\n 'CalculatorAddition': '\\uE948',\n 'CalculatorSubtract': '\\uE949',\n 'CalculatorPercentage': '\\uE94C',\n 'CalculatorEqualTo': '\\uE94E',\n 'PrintfaxPrinterFile': '\\uE956',\n 'StorageOptical': '\\uE958',\n 'Communications': '\\uE95A',\n 'Headset': '\\uE95B',\n 'Health': '\\uE95E',\n 'Webcam2': '\\uE960',\n 'FrontCamera': '\\uE96B',\n 'ChevronUpSmall': '\\uE96D'\n }\n };\n\n registerIcons(subset, options);\n}\n"," // Your use of the content in the files referenced here is subject to the terms of the license at https://aka.ms/fluentui-assets-license\n\nimport {\n IIconOptions,\n IIconSubset,\n registerIcons\n} from '@uifabric/styling';\n\nexport function initializeIcons(\n baseUrl: string = '',\n options?: IIconOptions\n): void {\n const subset: IIconSubset = {\n style: {\n MozOsxFontSmoothing: 'grayscale',\n WebkitFontSmoothing: 'antialiased',\n fontStyle: 'normal',\n fontWeight: 'normal',\n speak: 'none'\n },\n fontFace: {\n fontFamily: `\"FabricMDL2Icons-3\"`,\n src: `url('${baseUrl}fabric-icons-3-089e217a.woff') format('woff')`\n },\n icons: {\n 'ChevronDownSmall': '\\uE96E',\n 'ChevronLeftSmall': '\\uE96F',\n 'ChevronRightSmall': '\\uE970',\n 'ChevronUpMed': '\\uE971',\n 'ChevronDownMed': '\\uE972',\n 'ChevronLeftMed': '\\uE973',\n 'ChevronRightMed': '\\uE974',\n 'Devices2': '\\uE975',\n 'PC1': '\\uE977',\n 'PresenceChickletVideo': '\\uE979',\n 'Reply': '\\uE97A',\n 'HalfAlpha': '\\uE97E',\n 'ConstructionCone': '\\uE98F',\n 'DoubleChevronLeftMed': '\\uE991',\n 'Volume0': '\\uE992',\n 'Volume1': '\\uE993',\n 'Volume2': '\\uE994',\n 'Volume3': '\\uE995',\n 'Chart': '\\uE999',\n 'Robot': '\\uE99A',\n 'Manufacturing': '\\uE99C',\n 'LockSolid': '\\uE9A2',\n 'FitPage': '\\uE9A6',\n 'FitWidth': '\\uE9A7',\n 'BidiLtr': '\\uE9AA',\n 'BidiRtl': '\\uE9AB',\n 'RightDoubleQuote': '\\uE9B1',\n 'Sunny': '\\uE9BD',\n 'CloudWeather': '\\uE9BE',\n 'Cloudy': '\\uE9BF',\n 'PartlyCloudyDay': '\\uE9C0',\n 'PartlyCloudyNight': '\\uE9C1',\n 'ClearNight': '\\uE9C2',\n 'RainShowersDay': '\\uE9C3',\n 'Rain': '\\uE9C4',\n 'Thunderstorms': '\\uE9C6',\n 'RainSnow': '\\uE9C7',\n 'Snow': '\\uE9C8',\n 'BlowingSnow': '\\uE9C9',\n 'Frigid': '\\uE9CA',\n 'Fog': '\\uE9CB',\n 'Squalls': '\\uE9CC',\n 'Duststorm': '\\uE9CD',\n 'Unknown': '\\uE9CE',\n 'Precipitation': '\\uE9CF',\n 'Ribbon': '\\uE9D1',\n 'AreaChart': '\\uE9D2',\n 'Assign': '\\uE9D3',\n 'FlowChart': '\\uE9D4',\n 'CheckList': '\\uE9D5',\n 'Diagnostic': '\\uE9D9',\n 'Generate': '\\uE9DA',\n 'LineChart': '\\uE9E6',\n 'Equalizer': '\\uE9E9',\n 'BarChartHorizontal': '\\uE9EB',\n 'BarChartVertical': '\\uE9EC',\n 'Freezing': '\\uE9EF',\n 'FunnelChart': '\\uE9F1',\n 'Processing': '\\uE9F5',\n 'Quantity': '\\uE9F8',\n 'ReportDocument': '\\uE9F9',\n 'StackColumnChart': '\\uE9FC',\n 'SnowShowerDay': '\\uE9FD',\n 'HailDay': '\\uEA00',\n 'WorkFlow': '\\uEA01',\n 'HourGlass': '\\uEA03',\n 'StoreLogoMed20': '\\uEA04',\n 'TimeSheet': '\\uEA05',\n 'TriangleSolid': '\\uEA08',\n 'UpgradeAnalysis': '\\uEA0B',\n 'VideoSolid': '\\uEA0C',\n 'RainShowersNight': '\\uEA0F',\n 'SnowShowerNight': '\\uEA11',\n 'Teamwork': '\\uEA12',\n 'HailNight': '\\uEA13',\n 'PeopleAdd': '\\uEA15',\n 'Glasses': '\\uEA16',\n 'DateTime2': '\\uEA17',\n 'Shield': '\\uEA18',\n 'Header1': '\\uEA19',\n 'PageAdd': '\\uEA1A',\n 'NumberedList': '\\uEA1C',\n 'PowerBILogo': '\\uEA1E',\n 'Info2': '\\uEA1F',\n 'MusicInCollectionFill': '\\uEA36',\n 'Asterisk': '\\uEA38',\n 'ErrorBadge': '\\uEA39',\n 'CircleFill': '\\uEA3B',\n 'Record2': '\\uEA3F',\n 'AllAppsMirrored': '\\uEA40',\n 'BookmarksMirrored': '\\uEA41',\n 'BulletedListMirrored': '\\uEA42',\n 'CaretHollowMirrored': '\\uEA45',\n 'CaretSolidMirrored': '\\uEA46',\n 'ChromeBackMirrored': '\\uEA47',\n 'ClearSelectionMirrored': '\\uEA48',\n 'ClosePaneMirrored': '\\uEA49',\n 'DockLeftMirrored': '\\uEA4C',\n 'DoubleChevronLeftMedMirrored': '\\uEA4D',\n 'GoMirrored': '\\uEA4F'\n }\n };\n\n registerIcons(subset, options);\n}\n"," // Your use of the content in the files referenced here is subject to the terms of the license at https://aka.ms/fluentui-assets-license\n\nimport {\n IIconOptions,\n IIconSubset,\n registerIcons\n} from '@uifabric/styling';\n\nexport function initializeIcons(\n baseUrl: string = '',\n options?: IIconOptions\n): void {\n const subset: IIconSubset = {\n style: {\n MozOsxFontSmoothing: 'grayscale',\n WebkitFontSmoothing: 'antialiased',\n fontStyle: 'normal',\n fontWeight: 'normal',\n speak: 'none'\n },\n fontFace: {\n fontFamily: `\"FabricMDL2Icons-4\"`,\n src: `url('${baseUrl}fabric-icons-4-a656cc0a.woff') format('woff')`\n },\n icons: {\n 'HelpMirrored': '\\uEA51',\n 'ImportMirrored': '\\uEA52',\n 'ImportAllMirrored': '\\uEA53',\n 'ListMirrored': '\\uEA55',\n 'MailForwardMirrored': '\\uEA56',\n 'MailReplyMirrored': '\\uEA57',\n 'MailReplyAllMirrored': '\\uEA58',\n 'MiniContractMirrored': '\\uEA59',\n 'MiniExpandMirrored': '\\uEA5A',\n 'OpenPaneMirrored': '\\uEA5B',\n 'ParkingLocationMirrored': '\\uEA5E',\n 'SendMirrored': '\\uEA63',\n 'ShowResultsMirrored': '\\uEA65',\n 'ThumbnailViewMirrored': '\\uEA67',\n 'Media': '\\uEA69',\n 'Devices3': '\\uEA6C',\n 'Focus': '\\uEA6F',\n 'VideoLightOff': '\\uEA74',\n 'Lightbulb': '\\uEA80',\n 'StatusTriangle': '\\uEA82',\n 'VolumeDisabled': '\\uEA85',\n 'Puzzle': '\\uEA86',\n 'EmojiNeutral': '\\uEA87',\n 'EmojiDisappointed': '\\uEA88',\n 'HomeSolid': '\\uEA8A',\n 'Ringer': '\\uEA8F',\n 'PDF': '\\uEA90',\n 'HeartBroken': '\\uEA92',\n 'StoreLogo16': '\\uEA96',\n 'MultiSelectMirrored': '\\uEA98',\n 'Broom': '\\uEA99',\n 'AddToShoppingList': '\\uEA9A',\n 'Cocktails': '\\uEA9D',\n 'Wines': '\\uEABF',\n 'Articles': '\\uEAC1',\n 'Cycling': '\\uEAC7',\n 'DietPlanNotebook': '\\uEAC8',\n 'Pill': '\\uEACB',\n 'ExerciseTracker': '\\uEACC',\n 'HandsFree': '\\uEAD0',\n 'Medical': '\\uEAD4',\n 'Running': '\\uEADA',\n 'Weights': '\\uEADB',\n 'Trackers': '\\uEADF',\n 'AddNotes': '\\uEAE3',\n 'AllCurrency': '\\uEAE4',\n 'BarChart4': '\\uEAE7',\n 'CirclePlus': '\\uEAEE',\n 'Coffee': '\\uEAEF',\n 'Cotton': '\\uEAF3',\n 'Market': '\\uEAFC',\n 'Money': '\\uEAFD',\n 'PieDouble': '\\uEB04',\n 'PieSingle': '\\uEB05',\n 'RemoveFilter': '\\uEB08',\n 'Savings': '\\uEB0B',\n 'Sell': '\\uEB0C',\n 'StockDown': '\\uEB0F',\n 'StockUp': '\\uEB11',\n 'Lamp': '\\uEB19',\n 'Source': '\\uEB1B',\n 'MSNVideos': '\\uEB1C',\n 'Cricket': '\\uEB1E',\n 'Golf': '\\uEB1F',\n 'Baseball': '\\uEB20',\n 'Soccer': '\\uEB21',\n 'MoreSports': '\\uEB22',\n 'AutoRacing': '\\uEB24',\n 'CollegeHoops': '\\uEB25',\n 'CollegeFootball': '\\uEB26',\n 'ProFootball': '\\uEB27',\n 'ProHockey': '\\uEB28',\n 'Rugby': '\\uEB2D',\n 'SubstitutionsIn': '\\uEB31',\n 'Tennis': '\\uEB33',\n 'Arrivals': '\\uEB34',\n 'Design': '\\uEB3C',\n 'Website': '\\uEB41',\n 'Drop': '\\uEB42',\n 'HistoricalWeather': '\\uEB43',\n 'SkiResorts': '\\uEB45',\n 'Snowflake': '\\uEB46',\n 'BusSolid': '\\uEB47',\n 'FerrySolid': '\\uEB48',\n 'AirplaneSolid': '\\uEB4C',\n 'TrainSolid': '\\uEB4D',\n 'Ticket': '\\uEB54',\n 'WifiWarning4': '\\uEB63',\n 'Devices4': '\\uEB66',\n 'AzureLogo': '\\uEB6A',\n 'BingLogo': '\\uEB6B',\n 'MSNLogo': '\\uEB6C',\n 'OutlookLogoInverse': '\\uEB6D',\n 'OfficeLogo': '\\uEB6E',\n 'SkypeLogo': '\\uEB6F',\n 'Door': '\\uEB75',\n 'EditMirrored': '\\uEB7E',\n 'GiftCard': '\\uEB8E',\n 'DoubleBookmark': '\\uEB8F',\n 'StatusErrorFull': '\\uEB90'\n }\n };\n\n registerIcons(subset, options);\n}\n"," // Your use of the content in the files referenced here is subject to the terms of the license at https://aka.ms/fluentui-assets-license\n\nimport {\n IIconOptions,\n IIconSubset,\n registerIcons\n} from '@uifabric/styling';\n\nexport function initializeIcons(\n baseUrl: string = '',\n options?: IIconOptions\n): void {\n const subset: IIconSubset = {\n style: {\n MozOsxFontSmoothing: 'grayscale',\n WebkitFontSmoothing: 'antialiased',\n fontStyle: 'normal',\n fontWeight: 'normal',\n speak: 'none'\n },\n fontFace: {\n fontFamily: `\"FabricMDL2Icons-5\"`,\n src: `url('${baseUrl}fabric-icons-5-f95ba260.woff') format('woff')`\n },\n icons: {\n 'Certificate': '\\uEB95',\n 'FastForward': '\\uEB9D',\n 'Rewind': '\\uEB9E',\n 'Photo2': '\\uEB9F',\n 'OpenSource': '\\uEBC2',\n 'Movers': '\\uEBCD',\n 'CloudDownload': '\\uEBD3',\n 'Family': '\\uEBDA',\n 'WindDirection': '\\uEBE6',\n 'Bug': '\\uEBE8',\n 'SiteScan': '\\uEBEC',\n 'BrowserScreenShot': '\\uEBED',\n 'F12DevTools': '\\uEBEE',\n 'CSS': '\\uEBEF',\n 'JS': '\\uEBF0',\n 'DeliveryTruck': '\\uEBF4',\n 'ReminderPerson': '\\uEBF7',\n 'ReminderGroup': '\\uEBF8',\n 'ReminderTime': '\\uEBF9',\n 'TabletMode': '\\uEBFC',\n 'Umbrella': '\\uEC04',\n 'NetworkTower': '\\uEC05',\n 'CityNext': '\\uEC06',\n 'CityNext2': '\\uEC07',\n 'Section': '\\uEC0C',\n 'OneNoteLogoInverse': '\\uEC0D',\n 'ToggleFilled': '\\uEC11',\n 'ToggleBorder': '\\uEC12',\n 'SliderThumb': '\\uEC13',\n 'ToggleThumb': '\\uEC14',\n 'Documentation': '\\uEC17',\n 'Badge': '\\uEC1B',\n 'Giftbox': '\\uEC1F',\n 'VisualStudioLogo': '\\uEC22',\n 'HomeGroup': '\\uEC26',\n 'ExcelLogoInverse': '\\uEC28',\n 'WordLogoInverse': '\\uEC29',\n 'PowerPointLogoInverse': '\\uEC2A',\n 'Cafe': '\\uEC32',\n 'SpeedHigh': '\\uEC4A',\n 'Commitments': '\\uEC4D',\n 'ThisPC': '\\uEC4E',\n 'MusicNote': '\\uEC4F',\n 'MicOff': '\\uEC54',\n 'PlaybackRate1x': '\\uEC57',\n 'EdgeLogo': '\\uEC60',\n 'CompletedSolid': '\\uEC61',\n 'AlbumRemove': '\\uEC62',\n 'MessageFill': '\\uEC70',\n 'TabletSelected': '\\uEC74',\n 'MobileSelected': '\\uEC75',\n 'LaptopSelected': '\\uEC76',\n 'TVMonitorSelected': '\\uEC77',\n 'DeveloperTools': '\\uEC7A',\n 'Shapes': '\\uEC7C',\n 'InsertTextBox': '\\uEC7D',\n 'LowerBrightness': '\\uEC8A',\n 'WebComponents': '\\uEC8B',\n 'OfflineStorage': '\\uEC8C',\n 'DOM': '\\uEC8D',\n 'CloudUpload': '\\uEC8E',\n 'ScrollUpDown': '\\uEC8F',\n 'DateTime': '\\uEC92',\n 'Event': '\\uECA3',\n 'Cake': '\\uECA4',\n 'Org': '\\uECA6',\n 'PartyLeader': '\\uECA7',\n 'DRM': '\\uECA8',\n 'CloudAdd': '\\uECA9',\n 'AppIconDefault': '\\uECAA',\n 'Photo2Add': '\\uECAB',\n 'Photo2Remove': '\\uECAC',\n 'Calories': '\\uECAD',\n 'POI': '\\uECAF',\n 'AddTo': '\\uECC8',\n 'RadioBtnOff': '\\uECCA',\n 'RadioBtnOn': '\\uECCB',\n 'ExploreContent': '\\uECCD',\n 'Product': '\\uECDC',\n 'ProgressLoopInner': '\\uECDE',\n 'ProgressLoopOuter': '\\uECDF',\n 'Blocked2': '\\uECE4',\n 'FangBody': '\\uECEB',\n 'Toolbox': '\\uECED',\n 'PageHeader': '\\uECEE',\n 'ChatInviteFriend': '\\uECFE',\n 'Brush': '\\uECFF',\n 'Shirt': '\\uED00',\n 'Crown': '\\uED01',\n 'Diamond': '\\uED02',\n 'ScaleUp': '\\uED09',\n 'QRCode': '\\uED14',\n 'Feedback': '\\uED15',\n 'SharepointLogoInverse': '\\uED18',\n 'YammerLogo': '\\uED19',\n 'Hide': '\\uED1A',\n 'Uneditable': '\\uED1D',\n 'ReturnToSession': '\\uED24',\n 'OpenFolderHorizontal': '\\uED25',\n 'CalendarMirrored': '\\uED28'\n }\n };\n\n registerIcons(subset, options);\n}\n"," // Your use of the content in the files referenced here is subject to the terms of the license at https://aka.ms/fluentui-assets-license\n\nimport {\n IIconOptions,\n IIconSubset,\n registerIcons\n} from '@uifabric/styling';\n\nexport function initializeIcons(\n baseUrl: string = '',\n options?: IIconOptions\n): void {\n const subset: IIconSubset = {\n style: {\n MozOsxFontSmoothing: 'grayscale',\n WebkitFontSmoothing: 'antialiased',\n fontStyle: 'normal',\n fontWeight: 'normal',\n speak: 'none'\n },\n fontFace: {\n fontFamily: `\"FabricMDL2Icons-6\"`,\n src: `url('${baseUrl}fabric-icons-6-ef6fd590.woff') format('woff')`\n },\n icons: {\n 'SwayLogoInverse': '\\uED29',\n 'OutOfOffice': '\\uED34',\n 'Trophy': '\\uED3F',\n 'ReopenPages': '\\uED50',\n 'EmojiTabSymbols': '\\uED58',\n 'AADLogo': '\\uED68',\n 'AccessLogo': '\\uED69',\n 'AdminALogoInverse32': '\\uED6A',\n 'AdminCLogoInverse32': '\\uED6B',\n 'AdminDLogoInverse32': '\\uED6C',\n 'AdminELogoInverse32': '\\uED6D',\n 'AdminLLogoInverse32': '\\uED6E',\n 'AdminMLogoInverse32': '\\uED6F',\n 'AdminOLogoInverse32': '\\uED70',\n 'AdminPLogoInverse32': '\\uED71',\n 'AdminSLogoInverse32': '\\uED72',\n 'AdminYLogoInverse32': '\\uED73',\n 'DelveLogoInverse': '\\uED76',\n 'ExchangeLogoInverse': '\\uED78',\n 'LyncLogo': '\\uED79',\n 'OfficeVideoLogoInverse': '\\uED7A',\n 'SocialListeningLogo': '\\uED7C',\n 'VisioLogoInverse': '\\uED7D',\n 'Balloons': '\\uED7E',\n 'Cat': '\\uED7F',\n 'MailAlert': '\\uED80',\n 'MailCheck': '\\uED81',\n 'MailLowImportance': '\\uED82',\n 'MailPause': '\\uED83',\n 'MailRepeat': '\\uED84',\n 'SecurityGroup': '\\uED85',\n 'Table': '\\uED86',\n 'VoicemailForward': '\\uED87',\n 'VoicemailReply': '\\uED88',\n 'Waffle': '\\uED89',\n 'RemoveEvent': '\\uED8A',\n 'EventInfo': '\\uED8B',\n 'ForwardEvent': '\\uED8C',\n 'WipePhone': '\\uED8D',\n 'AddOnlineMeeting': '\\uED8E',\n 'JoinOnlineMeeting': '\\uED8F',\n 'RemoveLink': '\\uED90',\n 'PeopleBlock': '\\uED91',\n 'PeopleRepeat': '\\uED92',\n 'PeopleAlert': '\\uED93',\n 'PeoplePause': '\\uED94',\n 'TransferCall': '\\uED95',\n 'AddPhone': '\\uED96',\n 'UnknownCall': '\\uED97',\n 'NoteReply': '\\uED98',\n 'NoteForward': '\\uED99',\n 'NotePinned': '\\uED9A',\n 'RemoveOccurrence': '\\uED9B',\n 'Timeline': '\\uED9C',\n 'EditNote': '\\uED9D',\n 'CircleHalfFull': '\\uED9E',\n 'Room': '\\uED9F',\n 'Unsubscribe': '\\uEDA0',\n 'Subscribe': '\\uEDA1',\n 'HardDrive': '\\uEDA2',\n 'RecurringTask': '\\uEDB2',\n 'TaskManager': '\\uEDB7',\n 'TaskManagerMirrored': '\\uEDB8',\n 'Combine': '\\uEDBB',\n 'Split': '\\uEDBC',\n 'DoubleChevronUp': '\\uEDBD',\n 'DoubleChevronLeft': '\\uEDBE',\n 'DoubleChevronRight': '\\uEDBF',\n 'TextBox': '\\uEDC2',\n 'TextField': '\\uEDC3',\n 'NumberField': '\\uEDC4',\n 'Dropdown': '\\uEDC5',\n 'PenWorkspace': '\\uEDC6',\n 'BookingsLogo': '\\uEDC7',\n 'ClassNotebookLogoInverse': '\\uEDC8',\n 'DelveAnalyticsLogo': '\\uEDCA',\n 'DocsLogoInverse': '\\uEDCB',\n 'Dynamics365Logo': '\\uEDCC',\n 'DynamicSMBLogo': '\\uEDCD',\n 'OfficeAssistantLogo': '\\uEDCE',\n 'OfficeStoreLogo': '\\uEDCF',\n 'OneNoteEduLogoInverse': '\\uEDD0',\n 'PlannerLogo': '\\uEDD1',\n 'PowerApps': '\\uEDD2',\n 'Suitcase': '\\uEDD3',\n 'ProjectLogoInverse': '\\uEDD4',\n 'CaretLeft8': '\\uEDD5',\n 'CaretRight8': '\\uEDD6',\n 'CaretUp8': '\\uEDD7',\n 'CaretDown8': '\\uEDD8',\n 'CaretLeftSolid8': '\\uEDD9',\n 'CaretRightSolid8': '\\uEDDA',\n 'CaretUpSolid8': '\\uEDDB',\n 'CaretDownSolid8': '\\uEDDC',\n 'ClearFormatting': '\\uEDDD',\n 'Superscript': '\\uEDDE',\n 'Subscript': '\\uEDDF',\n 'Strikethrough': '\\uEDE0',\n 'Export': '\\uEDE1',\n 'ExportMirrored': '\\uEDE2'\n }\n };\n\n registerIcons(subset, options);\n}\n"," // Your use of the content in the files referenced here is subject to the terms of the license at https://aka.ms/fluentui-assets-license\n\nimport {\n IIconOptions,\n IIconSubset,\n registerIcons\n} from '@uifabric/styling';\n\nexport function initializeIcons(\n baseUrl: string = '',\n options?: IIconOptions\n): void {\n const subset: IIconSubset = {\n style: {\n MozOsxFontSmoothing: 'grayscale',\n WebkitFontSmoothing: 'antialiased',\n fontStyle: 'normal',\n fontWeight: 'normal',\n speak: 'none'\n },\n fontFace: {\n fontFamily: `\"FabricMDL2Icons-7\"`,\n src: `url('${baseUrl}fabric-icons-7-2b97bb99.woff') format('woff')`\n },\n icons: {\n 'SingleBookmark': '\\uEDFF',\n 'SingleBookmarkSolid': '\\uEE00',\n 'DoubleChevronDown': '\\uEE04',\n 'FollowUser': '\\uEE05',\n 'ReplyAll': '\\uEE0A',\n 'WorkforceManagement': '\\uEE0F',\n 'RecruitmentManagement': '\\uEE12',\n 'Questionnaire': '\\uEE19',\n 'ManagerSelfService': '\\uEE23',\n 'ProductionFloorManagement': '\\uEE29',\n 'ProductRelease': '\\uEE2E',\n 'ProductVariant': '\\uEE30',\n 'ReplyMirrored': '\\uEE35',\n 'ReplyAllMirrored': '\\uEE36',\n 'Medal': '\\uEE38',\n 'AddGroup': '\\uEE3D',\n 'QuestionnaireMirrored': '\\uEE4B',\n 'CloudImportExport': '\\uEE55',\n 'TemporaryUser': '\\uEE58',\n 'CaretSolid16': '\\uEE62',\n 'GroupedDescending': '\\uEE66',\n 'GroupedAscending': '\\uEE67',\n 'AwayStatus': '\\uEE6A',\n 'MyMoviesTV': '\\uEE6C',\n 'GenericScan': '\\uEE6F',\n 'AustralianRules': '\\uEE70',\n 'WifiEthernet': '\\uEE77',\n 'TrackersMirrored': '\\uEE92',\n 'DateTimeMirrored': '\\uEE93',\n 'StopSolid': '\\uEE95',\n 'DoubleChevronUp12': '\\uEE96',\n 'DoubleChevronDown12': '\\uEE97',\n 'DoubleChevronLeft12': '\\uEE98',\n 'DoubleChevronRight12': '\\uEE99',\n 'CalendarAgenda': '\\uEE9A',\n 'ConnectVirtualMachine': '\\uEE9D',\n 'AddEvent': '\\uEEB5',\n 'AssetLibrary': '\\uEEB6',\n 'DataConnectionLibrary': '\\uEEB7',\n 'DocLibrary': '\\uEEB8',\n 'FormLibrary': '\\uEEB9',\n 'FormLibraryMirrored': '\\uEEBA',\n 'ReportLibrary': '\\uEEBB',\n 'ReportLibraryMirrored': '\\uEEBC',\n 'ContactCard': '\\uEEBD',\n 'CustomList': '\\uEEBE',\n 'CustomListMirrored': '\\uEEBF',\n 'IssueTracking': '\\uEEC0',\n 'IssueTrackingMirrored': '\\uEEC1',\n 'PictureLibrary': '\\uEEC2',\n 'OfficeAddinsLogo': '\\uEEC7',\n 'OfflineOneDriveParachute': '\\uEEC8',\n 'OfflineOneDriveParachuteDisabled': '\\uEEC9',\n 'TriangleSolidUp12': '\\uEECC',\n 'TriangleSolidDown12': '\\uEECD',\n 'TriangleSolidLeft12': '\\uEECE',\n 'TriangleSolidRight12': '\\uEECF',\n 'TriangleUp12': '\\uEED0',\n 'TriangleDown12': '\\uEED1',\n 'TriangleLeft12': '\\uEED2',\n 'TriangleRight12': '\\uEED3',\n 'ArrowUpRight8': '\\uEED4',\n 'ArrowDownRight8': '\\uEED5',\n 'DocumentSet': '\\uEED6',\n 'GoToDashboard': '\\uEEED',\n 'DelveAnalytics': '\\uEEEE',\n 'ArrowUpRightMirrored8': '\\uEEEF',\n 'ArrowDownRightMirrored8': '\\uEEF0',\n 'CompanyDirectory': '\\uEF0D',\n 'OpenEnrollment': '\\uEF1C',\n 'CompanyDirectoryMirrored': '\\uEF2B',\n 'OneDriveAdd': '\\uEF32',\n 'ProfileSearch': '\\uEF35',\n 'Header2': '\\uEF36',\n 'Header3': '\\uEF37',\n 'Header4': '\\uEF38',\n 'RingerSolid': '\\uEF3A',\n 'Eyedropper': '\\uEF3C',\n 'MarketDown': '\\uEF42',\n 'CalendarWorkWeek': '\\uEF51',\n 'SidePanel': '\\uEF52',\n 'GlobeFavorite': '\\uEF53',\n 'CaretTopLeftSolid8': '\\uEF54',\n 'CaretTopRightSolid8': '\\uEF55',\n 'ViewAll2': '\\uEF56',\n 'DocumentReply': '\\uEF57',\n 'PlayerSettings': '\\uEF58',\n 'ReceiptForward': '\\uEF59',\n 'ReceiptReply': '\\uEF5A',\n 'ReceiptCheck': '\\uEF5B',\n 'Fax': '\\uEF5C',\n 'RecurringEvent': '\\uEF5D',\n 'ReplyAlt': '\\uEF5E',\n 'ReplyAllAlt': '\\uEF5F',\n 'EditStyle': '\\uEF60',\n 'EditMail': '\\uEF61',\n 'Lifesaver': '\\uEF62',\n 'LifesaverLock': '\\uEF63',\n 'InboxCheck': '\\uEF64',\n 'FolderSearch': '\\uEF65'\n }\n };\n\n registerIcons(subset, options);\n}\n"," // Your use of the content in the files referenced here is subject to the terms of the license at https://aka.ms/fluentui-assets-license\n\nimport {\n IIconOptions,\n IIconSubset,\n registerIcons\n} from '@uifabric/styling';\n\nexport function initializeIcons(\n baseUrl: string = '',\n options?: IIconOptions\n): void {\n const subset: IIconSubset = {\n style: {\n MozOsxFontSmoothing: 'grayscale',\n WebkitFontSmoothing: 'antialiased',\n fontStyle: 'normal',\n fontWeight: 'normal',\n speak: 'none'\n },\n fontFace: {\n fontFamily: `\"FabricMDL2Icons-8\"`,\n src: `url('${baseUrl}fabric-icons-8-6fdf1528.woff') format('woff')`\n },\n icons: {\n 'CollapseMenu': '\\uEF66',\n 'ExpandMenu': '\\uEF67',\n 'Boards': '\\uEF68',\n 'SunAdd': '\\uEF69',\n 'SunQuestionMark': '\\uEF6A',\n 'LandscapeOrientation': '\\uEF6B',\n 'DocumentSearch': '\\uEF6C',\n 'PublicCalendar': '\\uEF6D',\n 'PublicContactCard': '\\uEF6E',\n 'PublicEmail': '\\uEF6F',\n 'PublicFolder': '\\uEF70',\n 'WordDocument': '\\uEF71',\n 'PowerPointDocument': '\\uEF72',\n 'ExcelDocument': '\\uEF73',\n 'GroupedList': '\\uEF74',\n 'ClassroomLogo': '\\uEF75',\n 'Sections': '\\uEF76',\n 'EditPhoto': '\\uEF77',\n 'Starburst': '\\uEF78',\n 'ShareiOS': '\\uEF79',\n 'AirTickets': '\\uEF7A',\n 'PencilReply': '\\uEF7B',\n 'Tiles2': '\\uEF7C',\n 'SkypeCircleCheck': '\\uEF7D',\n 'SkypeCircleClock': '\\uEF7E',\n 'SkypeCircleMinus': '\\uEF7F',\n 'SkypeMessage': '\\uEF83',\n 'ClosedCaption': '\\uEF84',\n 'ATPLogo': '\\uEF85',\n 'OfficeFormsLogoInverse': '\\uEF86',\n 'RecycleBin': '\\uEF87',\n 'EmptyRecycleBin': '\\uEF88',\n 'Hide2': '\\uEF89',\n 'Breadcrumb': '\\uEF8C',\n 'BirthdayCake': '\\uEF8D',\n 'TimeEntry': '\\uEF95',\n 'CRMProcesses': '\\uEFB1',\n 'PageEdit': '\\uEFB6',\n 'PageArrowRight': '\\uEFB8',\n 'PageRemove': '\\uEFBA',\n 'Database': '\\uEFC7',\n 'DataManagementSettings': '\\uEFC8',\n 'CRMServices': '\\uEFD2',\n 'EditContact': '\\uEFD3',\n 'ConnectContacts': '\\uEFD4',\n 'AppIconDefaultAdd': '\\uEFDA',\n 'AppIconDefaultList': '\\uEFDE',\n 'ActivateOrders': '\\uEFE0',\n 'DeactivateOrders': '\\uEFE1',\n 'ProductCatalog': '\\uEFE8',\n 'ScatterChart': '\\uEFEB',\n 'AccountActivity': '\\uEFF4',\n 'DocumentManagement': '\\uEFFC',\n 'CRMReport': '\\uEFFE',\n 'KnowledgeArticle': '\\uF000',\n 'Relationship': '\\uF003',\n 'HomeVerify': '\\uF00E',\n 'ZipFolder': '\\uF012',\n 'SurveyQuestions': '\\uF01B',\n 'TextDocument': '\\uF029',\n 'TextDocumentShared': '\\uF02B',\n 'PageCheckedOut': '\\uF02C',\n 'PageShared': '\\uF02D',\n 'SaveAndClose': '\\uF038',\n 'Script': '\\uF03A',\n 'Archive': '\\uF03F',\n 'ActivityFeed': '\\uF056',\n 'Compare': '\\uF057',\n 'EventDate': '\\uF059',\n 'ArrowUpRight': '\\uF069',\n 'CaretRight': '\\uF06B',\n 'SetAction': '\\uF071',\n 'ChatBot': '\\uF08B',\n 'CaretSolidLeft': '\\uF08D',\n 'CaretSolidDown': '\\uF08E',\n 'CaretSolidRight': '\\uF08F',\n 'CaretSolidUp': '\\uF090',\n 'PowerAppsLogo': '\\uF091',\n 'PowerApps2Logo': '\\uF092',\n 'SearchIssue': '\\uF09A',\n 'SearchIssueMirrored': '\\uF09B',\n 'FabricAssetLibrary': '\\uF09C',\n 'FabricDataConnectionLibrary': '\\uF09D',\n 'FabricDocLibrary': '\\uF09E',\n 'FabricFormLibrary': '\\uF09F',\n 'FabricFormLibraryMirrored': '\\uF0A0',\n 'FabricReportLibrary': '\\uF0A1',\n 'FabricReportLibraryMirrored': '\\uF0A2',\n 'FabricPublicFolder': '\\uF0A3',\n 'FabricFolderSearch': '\\uF0A4',\n 'FabricMovetoFolder': '\\uF0A5',\n 'FabricUnsyncFolder': '\\uF0A6',\n 'FabricSyncFolder': '\\uF0A7',\n 'FabricOpenFolderHorizontal': '\\uF0A8',\n 'FabricFolder': '\\uF0A9',\n 'FabricFolderFill': '\\uF0AA',\n 'FabricNewFolder': '\\uF0AB',\n 'FabricPictureLibrary': '\\uF0AC',\n 'PhotoVideoMedia': '\\uF0B1',\n 'AddFavorite': '\\uF0C8'\n }\n };\n\n registerIcons(subset, options);\n}\n"," // Your use of the content in the files referenced here is subject to the terms of the license at https://aka.ms/fluentui-assets-license\n\nimport {\n IIconOptions,\n IIconSubset,\n registerIcons\n} from '@uifabric/styling';\n\nexport function initializeIcons(\n baseUrl: string = '',\n options?: IIconOptions\n): void {\n const subset: IIconSubset = {\n style: {\n MozOsxFontSmoothing: 'grayscale',\n WebkitFontSmoothing: 'antialiased',\n fontStyle: 'normal',\n fontWeight: 'normal',\n speak: 'none'\n },\n fontFace: {\n fontFamily: `\"FabricMDL2Icons-9\"`,\n src: `url('${baseUrl}fabric-icons-9-c6162b42.woff') format('woff')`\n },\n icons: {\n 'AddFavoriteFill': '\\uF0C9',\n 'BufferTimeBefore': '\\uF0CF',\n 'BufferTimeAfter': '\\uF0D0',\n 'BufferTimeBoth': '\\uF0D1',\n 'PublishContent': '\\uF0D4',\n 'ClipboardList': '\\uF0E3',\n 'ClipboardListMirrored': '\\uF0E4',\n 'CannedChat': '\\uF0F2',\n 'SkypeForBusinessLogo': '\\uF0FC',\n 'TabCenter': '\\uF100',\n 'PageCheckedin': '\\uF104',\n 'PageList': '\\uF106',\n 'ReadOutLoud': '\\uF112',\n 'CaretBottomLeftSolid8': '\\uF121',\n 'CaretBottomRightSolid8': '\\uF122',\n 'FolderHorizontal': '\\uF12B',\n 'MicrosoftStaffhubLogo': '\\uF130',\n 'GiftboxOpen': '\\uF133',\n 'StatusCircleOuter': '\\uF136',\n 'StatusCircleInner': '\\uF137',\n 'StatusCircleRing': '\\uF138',\n 'StatusTriangleOuter': '\\uF139',\n 'StatusTriangleInner': '\\uF13A',\n 'StatusTriangleExclamation': '\\uF13B',\n 'StatusCircleExclamation': '\\uF13C',\n 'StatusCircleErrorX': '\\uF13D',\n 'StatusCircleInfo': '\\uF13F',\n 'StatusCircleBlock': '\\uF140',\n 'StatusCircleBlock2': '\\uF141',\n 'StatusCircleQuestionMark': '\\uF142',\n 'StatusCircleSync': '\\uF143',\n 'Toll': '\\uF160',\n 'ExploreContentSingle': '\\uF164',\n 'CollapseContent': '\\uF165',\n 'CollapseContentSingle': '\\uF166',\n 'InfoSolid': '\\uF167',\n 'GroupList': '\\uF168',\n 'ProgressRingDots': '\\uF16A',\n 'CaloriesAdd': '\\uF172',\n 'BranchFork': '\\uF173',\n 'MuteChat': '\\uF17A',\n 'AddHome': '\\uF17B',\n 'AddWork': '\\uF17C',\n 'MobileReport': '\\uF18A',\n 'ScaleVolume': '\\uF18C',\n 'HardDriveGroup': '\\uF18F',\n 'FastMode': '\\uF19A',\n 'ToggleLeft': '\\uF19E',\n 'ToggleRight': '\\uF19F',\n 'TriangleShape': '\\uF1A7',\n 'RectangleShape': '\\uF1A9',\n 'CubeShape': '\\uF1AA',\n 'Trophy2': '\\uF1AE',\n 'BucketColor': '\\uF1B6',\n 'BucketColorFill': '\\uF1B7',\n 'Taskboard': '\\uF1C2',\n 'SingleColumn': '\\uF1D3',\n 'DoubleColumn': '\\uF1D4',\n 'TripleColumn': '\\uF1D5',\n 'ColumnLeftTwoThirds': '\\uF1D6',\n 'ColumnRightTwoThirds': '\\uF1D7',\n 'AccessLogoFill': '\\uF1DB',\n 'AnalyticsLogo': '\\uF1DE',\n 'AnalyticsQuery': '\\uF1DF',\n 'NewAnalyticsQuery': '\\uF1E0',\n 'AnalyticsReport': '\\uF1E1',\n 'WordLogo': '\\uF1E3',\n 'WordLogoFill': '\\uF1E4',\n 'ExcelLogo': '\\uF1E5',\n 'ExcelLogoFill': '\\uF1E6',\n 'OneNoteLogo': '\\uF1E7',\n 'OneNoteLogoFill': '\\uF1E8',\n 'OutlookLogo': '\\uF1E9',\n 'OutlookLogoFill': '\\uF1EA',\n 'PowerPointLogo': '\\uF1EB',\n 'PowerPointLogoFill': '\\uF1EC',\n 'PublisherLogo': '\\uF1ED',\n 'PublisherLogoFill': '\\uF1EE',\n 'ScheduleEventAction': '\\uF1EF',\n 'FlameSolid': '\\uF1F3',\n 'ServerProcesses': '\\uF1FE',\n 'Server': '\\uF201',\n 'SaveAll': '\\uF203',\n 'LinkedInLogo': '\\uF20A',\n 'Decimals': '\\uF218',\n 'SidePanelMirrored': '\\uF221',\n 'ProtectRestrict': '\\uF22A',\n 'Blog': '\\uF22B',\n 'UnknownMirrored': '\\uF22E',\n 'PublicContactCardMirrored': '\\uF230',\n 'GridViewSmall': '\\uF232',\n 'GridViewMedium': '\\uF233',\n 'GridViewLarge': '\\uF234',\n 'Step': '\\uF241',\n 'StepInsert': '\\uF242',\n 'StepShared': '\\uF243',\n 'StepSharedAdd': '\\uF244',\n 'StepSharedInsert': '\\uF245',\n 'ViewDashboard': '\\uF246',\n 'ViewList': '\\uF247'\n }\n };\n\n registerIcons(subset, options);\n}\n"," // Your use of the content in the files referenced here is subject to the terms of the license at https://aka.ms/fluentui-assets-license\n\nimport {\n IIconOptions,\n IIconSubset,\n registerIcons\n} from '@uifabric/styling';\n\nexport function initializeIcons(\n baseUrl: string = '',\n options?: IIconOptions\n): void {\n const subset: IIconSubset = {\n style: {\n MozOsxFontSmoothing: 'grayscale',\n WebkitFontSmoothing: 'antialiased',\n fontStyle: 'normal',\n fontWeight: 'normal',\n speak: 'none'\n },\n fontFace: {\n fontFamily: `\"FabricMDL2Icons-10\"`,\n src: `url('${baseUrl}fabric-icons-10-c4ded8e4.woff') format('woff')`\n },\n icons: {\n 'ViewListGroup': '\\uF248',\n 'ViewListTree': '\\uF249',\n 'TriggerAuto': '\\uF24A',\n 'TriggerUser': '\\uF24B',\n 'PivotChart': '\\uF24C',\n 'StackedBarChart': '\\uF24D',\n 'StackedLineChart': '\\uF24E',\n 'BuildQueue': '\\uF24F',\n 'BuildQueueNew': '\\uF250',\n 'UserFollowed': '\\uF25C',\n 'ContactLink': '\\uF25F',\n 'Stack': '\\uF26F',\n 'Bullseye': '\\uF272',\n 'VennDiagram': '\\uF273',\n 'FiveTileGrid': '\\uF274',\n 'FocalPoint': '\\uF277',\n 'Insert': '\\uF278',\n 'RingerRemove': '\\uF279',\n 'TeamsLogoInverse': '\\uF27A',\n 'TeamsLogo': '\\uF27B',\n 'TeamsLogoFill': '\\uF27C',\n 'SkypeForBusinessLogoFill': '\\uF27D',\n 'SharepointLogo': '\\uF27E',\n 'SharepointLogoFill': '\\uF27F',\n 'DelveLogo': '\\uF280',\n 'DelveLogoFill': '\\uF281',\n 'OfficeVideoLogo': '\\uF282',\n 'OfficeVideoLogoFill': '\\uF283',\n 'ExchangeLogo': '\\uF284',\n 'ExchangeLogoFill': '\\uF285',\n 'Signin': '\\uF286',\n 'DocumentApproval': '\\uF28B',\n 'CloneToDesktop': '\\uF28C',\n 'InstallToDrive': '\\uF28D',\n 'Blur': '\\uF28E',\n 'Build': '\\uF28F',\n 'ProcessMetaTask': '\\uF290',\n 'BranchFork2': '\\uF291',\n 'BranchLocked': '\\uF292',\n 'BranchCommit': '\\uF293',\n 'BranchCompare': '\\uF294',\n 'BranchMerge': '\\uF295',\n 'BranchPullRequest': '\\uF296',\n 'BranchSearch': '\\uF297',\n 'BranchShelveset': '\\uF298',\n 'RawSource': '\\uF299',\n 'MergeDuplicate': '\\uF29A',\n 'RowsGroup': '\\uF29B',\n 'RowsChild': '\\uF29C',\n 'Deploy': '\\uF29D',\n 'Redeploy': '\\uF29E',\n 'ServerEnviroment': '\\uF29F',\n 'VisioDiagram': '\\uF2A0',\n 'HighlightMappedShapes': '\\uF2A1',\n 'TextCallout': '\\uF2A2',\n 'IconSetsFlag': '\\uF2A4',\n 'VisioLogo': '\\uF2A7',\n 'VisioLogoFill': '\\uF2A8',\n 'VisioDocument': '\\uF2A9',\n 'TimelineProgress': '\\uF2AA',\n 'TimelineDelivery': '\\uF2AB',\n 'Backlog': '\\uF2AC',\n 'TeamFavorite': '\\uF2AD',\n 'TaskGroup': '\\uF2AE',\n 'TaskGroupMirrored': '\\uF2AF',\n 'ScopeTemplate': '\\uF2B0',\n 'AssessmentGroupTemplate': '\\uF2B1',\n 'NewTeamProject': '\\uF2B2',\n 'CommentAdd': '\\uF2B3',\n 'CommentNext': '\\uF2B4',\n 'CommentPrevious': '\\uF2B5',\n 'ShopServer': '\\uF2B6',\n 'LocaleLanguage': '\\uF2B7',\n 'QueryList': '\\uF2B8',\n 'UserSync': '\\uF2B9',\n 'UserPause': '\\uF2BA',\n 'StreamingOff': '\\uF2BB',\n 'ArrowTallUpLeft': '\\uF2BD',\n 'ArrowTallUpRight': '\\uF2BE',\n 'ArrowTallDownLeft': '\\uF2BF',\n 'ArrowTallDownRight': '\\uF2C0',\n 'FieldEmpty': '\\uF2C1',\n 'FieldFilled': '\\uF2C2',\n 'FieldChanged': '\\uF2C3',\n 'FieldNotChanged': '\\uF2C4',\n 'RingerOff': '\\uF2C5',\n 'PlayResume': '\\uF2C6',\n 'BulletedList2': '\\uF2C7',\n 'BulletedList2Mirrored': '\\uF2C8',\n 'ImageCrosshair': '\\uF2C9',\n 'GitGraph': '\\uF2CA',\n 'Repo': '\\uF2CB',\n 'RepoSolid': '\\uF2CC',\n 'FolderQuery': '\\uF2CD',\n 'FolderList': '\\uF2CE',\n 'FolderListMirrored': '\\uF2CF',\n 'LocationOutline': '\\uF2D0',\n 'POISolid': '\\uF2D1',\n 'CalculatorNotEqualTo': '\\uF2D2',\n 'BoxSubtractSolid': '\\uF2D3'\n }\n };\n\n registerIcons(subset, options);\n}\n"," // Your use of the content in the files referenced here is subject to the terms of the license at https://aka.ms/fluentui-assets-license\n\nimport {\n IIconOptions,\n IIconSubset,\n registerIcons\n} from '@uifabric/styling';\n\nexport function initializeIcons(\n baseUrl: string = '',\n options?: IIconOptions\n): void {\n const subset: IIconSubset = {\n style: {\n MozOsxFontSmoothing: 'grayscale',\n WebkitFontSmoothing: 'antialiased',\n fontStyle: 'normal',\n fontWeight: 'normal',\n speak: 'none'\n },\n fontFace: {\n fontFamily: `\"FabricMDL2Icons-11\"`,\n src: `url('${baseUrl}fabric-icons-11-2a8393d6.woff') format('woff')`\n },\n icons: {\n 'BoxAdditionSolid': '\\uF2D4',\n 'BoxMultiplySolid': '\\uF2D5',\n 'BoxPlaySolid': '\\uF2D6',\n 'BoxCheckmarkSolid': '\\uF2D7',\n 'CirclePauseSolid': '\\uF2D8',\n 'CirclePause': '\\uF2D9',\n 'MSNVideosSolid': '\\uF2DA',\n 'CircleStopSolid': '\\uF2DB',\n 'CircleStop': '\\uF2DC',\n 'NavigateBack': '\\uF2DD',\n 'NavigateBackMirrored': '\\uF2DE',\n 'NavigateForward': '\\uF2DF',\n 'NavigateForwardMirrored': '\\uF2E0',\n 'UnknownSolid': '\\uF2E1',\n 'UnknownMirroredSolid': '\\uF2E2',\n 'CircleAddition': '\\uF2E3',\n 'CircleAdditionSolid': '\\uF2E4',\n 'FilePDB': '\\uF2E5',\n 'FileTemplate': '\\uF2E6',\n 'FileSQL': '\\uF2E7',\n 'FileJAVA': '\\uF2E8',\n 'FileASPX': '\\uF2E9',\n 'FileCSS': '\\uF2EA',\n 'FileSass': '\\uF2EB',\n 'FileLess': '\\uF2EC',\n 'FileHTML': '\\uF2ED',\n 'JavaScriptLanguage': '\\uF2EE',\n 'CSharpLanguage': '\\uF2EF',\n 'CSharp': '\\uF2F0',\n 'VisualBasicLanguage': '\\uF2F1',\n 'VB': '\\uF2F2',\n 'CPlusPlusLanguage': '\\uF2F3',\n 'CPlusPlus': '\\uF2F4',\n 'FSharpLanguage': '\\uF2F5',\n 'FSharp': '\\uF2F6',\n 'TypeScriptLanguage': '\\uF2F7',\n 'PythonLanguage': '\\uF2F8',\n 'PY': '\\uF2F9',\n 'CoffeeScript': '\\uF2FA',\n 'MarkDownLanguage': '\\uF2FB',\n 'FullWidth': '\\uF2FE',\n 'FullWidthEdit': '\\uF2FF',\n 'Plug': '\\uF300',\n 'PlugSolid': '\\uF301',\n 'PlugConnected': '\\uF302',\n 'PlugDisconnected': '\\uF303',\n 'UnlockSolid': '\\uF304',\n 'Variable': '\\uF305',\n 'Parameter': '\\uF306',\n 'CommentUrgent': '\\uF307',\n 'Storyboard': '\\uF308',\n 'DiffInline': '\\uF309',\n 'DiffSideBySide': '\\uF30A',\n 'ImageDiff': '\\uF30B',\n 'ImagePixel': '\\uF30C',\n 'FileBug': '\\uF30D',\n 'FileCode': '\\uF30E',\n 'FileComment': '\\uF30F',\n 'BusinessHoursSign': '\\uF310',\n 'FileImage': '\\uF311',\n 'FileSymlink': '\\uF312',\n 'AutoFillTemplate': '\\uF313',\n 'WorkItem': '\\uF314',\n 'WorkItemBug': '\\uF315',\n 'LogRemove': '\\uF316',\n 'ColumnOptions': '\\uF317',\n 'Packages': '\\uF318',\n 'BuildIssue': '\\uF319',\n 'AssessmentGroup': '\\uF31A',\n 'VariableGroup': '\\uF31B',\n 'FullHistory': '\\uF31C',\n 'Wheelchair': '\\uF31F',\n 'SingleColumnEdit': '\\uF321',\n 'DoubleColumnEdit': '\\uF322',\n 'TripleColumnEdit': '\\uF323',\n 'ColumnLeftTwoThirdsEdit': '\\uF324',\n 'ColumnRightTwoThirdsEdit': '\\uF325',\n 'StreamLogo': '\\uF329',\n 'PassiveAuthentication': '\\uF32A',\n 'AlertSolid': '\\uF331',\n 'MegaphoneSolid': '\\uF332',\n 'TaskSolid': '\\uF333',\n 'ConfigurationSolid': '\\uF334',\n 'BugSolid': '\\uF335',\n 'CrownSolid': '\\uF336',\n 'Trophy2Solid': '\\uF337',\n 'QuickNoteSolid': '\\uF338',\n 'ConstructionConeSolid': '\\uF339',\n 'PageListSolid': '\\uF33A',\n 'PageListMirroredSolid': '\\uF33B',\n 'StarburstSolid': '\\uF33C',\n 'ReadingModeSolid': '\\uF33D',\n 'SadSolid': '\\uF33E',\n 'HealthSolid': '\\uF33F',\n 'ShieldSolid': '\\uF340',\n 'GiftBoxSolid': '\\uF341',\n 'ShoppingCartSolid': '\\uF342',\n 'MailSolid': '\\uF343',\n 'ChatSolid': '\\uF344',\n 'RibbonSolid': '\\uF345'\n }\n };\n\n registerIcons(subset, options);\n}\n"," // Your use of the content in the files referenced here is subject to the terms of the license at https://aka.ms/fluentui-assets-license\n\nimport {\n IIconOptions,\n IIconSubset,\n registerIcons\n} from '@uifabric/styling';\n\nexport function initializeIcons(\n baseUrl: string = '',\n options?: IIconOptions\n): void {\n const subset: IIconSubset = {\n style: {\n MozOsxFontSmoothing: 'grayscale',\n WebkitFontSmoothing: 'antialiased',\n fontStyle: 'normal',\n fontWeight: 'normal',\n speak: 'none'\n },\n fontFace: {\n fontFamily: `\"FabricMDL2Icons-12\"`,\n src: `url('${baseUrl}fabric-icons-12-7e945a1e.woff') format('woff')`\n },\n icons: {\n 'FinancialSolid': '\\uF346',\n 'FinancialMirroredSolid': '\\uF347',\n 'HeadsetSolid': '\\uF348',\n 'PermissionsSolid': '\\uF349',\n 'ParkingSolid': '\\uF34A',\n 'ParkingMirroredSolid': '\\uF34B',\n 'DiamondSolid': '\\uF34C',\n 'AsteriskSolid': '\\uF34D',\n 'OfflineStorageSolid': '\\uF34E',\n 'BankSolid': '\\uF34F',\n 'DecisionSolid': '\\uF350',\n 'Parachute': '\\uF351',\n 'ParachuteSolid': '\\uF352',\n 'FiltersSolid': '\\uF353',\n 'ColorSolid': '\\uF354',\n 'ReviewSolid': '\\uF355',\n 'ReviewRequestSolid': '\\uF356',\n 'ReviewRequestMirroredSolid': '\\uF357',\n 'ReviewResponseSolid': '\\uF358',\n 'FeedbackRequestSolid': '\\uF359',\n 'FeedbackRequestMirroredSolid': '\\uF35A',\n 'FeedbackResponseSolid': '\\uF35B',\n 'WorkItemBar': '\\uF35C',\n 'WorkItemBarSolid': '\\uF35D',\n 'Separator': '\\uF35E',\n 'NavigateExternalInline': '\\uF35F',\n 'PlanView': '\\uF360',\n 'TimelineMatrixView': '\\uF361',\n 'EngineeringGroup': '\\uF362',\n 'ProjectCollection': '\\uF363',\n 'CaretBottomRightCenter8': '\\uF364',\n 'CaretBottomLeftCenter8': '\\uF365',\n 'CaretTopRightCenter8': '\\uF366',\n 'CaretTopLeftCenter8': '\\uF367',\n 'DonutChart': '\\uF368',\n 'ChevronUnfold10': '\\uF369',\n 'ChevronFold10': '\\uF36A',\n 'DoubleChevronDown8': '\\uF36B',\n 'DoubleChevronUp8': '\\uF36C',\n 'DoubleChevronLeft8': '\\uF36D',\n 'DoubleChevronRight8': '\\uF36E',\n 'ChevronDownEnd6': '\\uF36F',\n 'ChevronUpEnd6': '\\uF370',\n 'ChevronLeftEnd6': '\\uF371',\n 'ChevronRightEnd6': '\\uF372',\n 'ContextMenu': '\\uF37C',\n 'AzureAPIManagement': '\\uF37F',\n 'AzureServiceEndpoint': '\\uF380',\n 'VSTSLogo': '\\uF381',\n 'VSTSAltLogo1': '\\uF382',\n 'VSTSAltLogo2': '\\uF383',\n 'FileTypeSolution': '\\uF387',\n 'WordLogoInverse16': '\\uF390',\n 'WordLogo16': '\\uF391',\n 'WordLogoFill16': '\\uF392',\n 'PowerPointLogoInverse16': '\\uF393',\n 'PowerPointLogo16': '\\uF394',\n 'PowerPointLogoFill16': '\\uF395',\n 'ExcelLogoInverse16': '\\uF396',\n 'ExcelLogo16': '\\uF397',\n 'ExcelLogoFill16': '\\uF398',\n 'OneNoteLogoInverse16': '\\uF399',\n 'OneNoteLogo16': '\\uF39A',\n 'OneNoteLogoFill16': '\\uF39B',\n 'OutlookLogoInverse16': '\\uF39C',\n 'OutlookLogo16': '\\uF39D',\n 'OutlookLogoFill16': '\\uF39E',\n 'PublisherLogoInverse16': '\\uF39F',\n 'PublisherLogo16': '\\uF3A0',\n 'PublisherLogoFill16': '\\uF3A1',\n 'VisioLogoInverse16': '\\uF3A2',\n 'VisioLogo16': '\\uF3A3',\n 'VisioLogoFill16': '\\uF3A4',\n 'TestBeaker': '\\uF3A5',\n 'TestBeakerSolid': '\\uF3A6',\n 'TestExploreSolid': '\\uF3A7',\n 'TestAutoSolid': '\\uF3A8',\n 'TestUserSolid': '\\uF3A9',\n 'TestImpactSolid': '\\uF3AA',\n 'TestPlan': '\\uF3AB',\n 'TestStep': '\\uF3AC',\n 'TestParameter': '\\uF3AD',\n 'TestSuite': '\\uF3AE',\n 'TestCase': '\\uF3AF',\n 'Sprint': '\\uF3B0',\n 'SignOut': '\\uF3B1',\n 'TriggerApproval': '\\uF3B2',\n 'Rocket': '\\uF3B3',\n 'AzureKeyVault': '\\uF3B4',\n 'Onboarding': '\\uF3BA',\n 'Transition': '\\uF3BC',\n 'LikeSolid': '\\uF3BF',\n 'DislikeSolid': '\\uF3C0',\n 'CRMCustomerInsightsApp': '\\uF3C8',\n 'EditCreate': '\\uF3C9',\n 'PlayReverseResume': '\\uF3E4',\n 'PlayReverse': '\\uF3E5',\n 'SearchData': '\\uF3F1',\n 'UnSetColor': '\\uF3F9',\n 'DeclineCall': '\\uF405'\n }\n };\n\n registerIcons(subset, options);\n}\n"," // Your use of the content in the files referenced here is subject to the terms of the license at https://aka.ms/fluentui-assets-license\n\nimport {\n IIconOptions,\n IIconSubset,\n registerIcons\n} from '@uifabric/styling';\n\nexport function initializeIcons(\n baseUrl: string = '',\n options?: IIconOptions\n): void {\n const subset: IIconSubset = {\n style: {\n MozOsxFontSmoothing: 'grayscale',\n WebkitFontSmoothing: 'antialiased',\n fontStyle: 'normal',\n fontWeight: 'normal',\n speak: 'none'\n },\n fontFace: {\n fontFamily: `\"FabricMDL2Icons-13\"`,\n src: `url('${baseUrl}fabric-icons-13-c3989a02.woff') format('woff')`\n },\n icons: {\n 'RectangularClipping': '\\uF407',\n 'TeamsLogo16': '\\uF40A',\n 'TeamsLogoFill16': '\\uF40B',\n 'Spacer': '\\uF40D',\n 'SkypeLogo16': '\\uF40E',\n 'SkypeForBusinessLogo16': '\\uF40F',\n 'SkypeForBusinessLogoFill16': '\\uF410',\n 'FilterSolid': '\\uF412',\n 'MailUndelivered': '\\uF415',\n 'MailTentative': '\\uF416',\n 'MailTentativeMirrored': '\\uF417',\n 'MailReminder': '\\uF418',\n 'ReceiptUndelivered': '\\uF419',\n 'ReceiptTentative': '\\uF41A',\n 'ReceiptTentativeMirrored': '\\uF41B',\n 'Inbox': '\\uF41C',\n 'IRMReply': '\\uF41D',\n 'IRMReplyMirrored': '\\uF41E',\n 'IRMForward': '\\uF41F',\n 'IRMForwardMirrored': '\\uF420',\n 'VoicemailIRM': '\\uF421',\n 'EventAccepted': '\\uF422',\n 'EventTentative': '\\uF423',\n 'EventTentativeMirrored': '\\uF424',\n 'EventDeclined': '\\uF425',\n 'IDBadge': '\\uF427',\n 'BackgroundColor': '\\uF42B',\n 'OfficeFormsLogoInverse16': '\\uF433',\n 'OfficeFormsLogo': '\\uF434',\n 'OfficeFormsLogoFill': '\\uF435',\n 'OfficeFormsLogo16': '\\uF436',\n 'OfficeFormsLogoFill16': '\\uF437',\n 'OfficeFormsLogoInverse24': '\\uF43A',\n 'OfficeFormsLogo24': '\\uF43B',\n 'OfficeFormsLogoFill24': '\\uF43C',\n 'PageLock': '\\uF43F',\n 'NotExecuted': '\\uF440',\n 'NotImpactedSolid': '\\uF441',\n 'FieldReadOnly': '\\uF442',\n 'FieldRequired': '\\uF443',\n 'BacklogBoard': '\\uF444',\n 'ExternalBuild': '\\uF445',\n 'ExternalTFVC': '\\uF446',\n 'ExternalXAML': '\\uF447',\n 'IssueSolid': '\\uF448',\n 'DefectSolid': '\\uF449',\n 'LadybugSolid': '\\uF44A',\n 'NugetLogo': '\\uF44C',\n 'TFVCLogo': '\\uF44D',\n 'ProjectLogo32': '\\uF47E',\n 'ProjectLogoFill32': '\\uF47F',\n 'ProjectLogo16': '\\uF480',\n 'ProjectLogoFill16': '\\uF481',\n 'SwayLogo32': '\\uF482',\n 'SwayLogoFill32': '\\uF483',\n 'SwayLogo16': '\\uF484',\n 'SwayLogoFill16': '\\uF485',\n 'ClassNotebookLogo32': '\\uF486',\n 'ClassNotebookLogoFill32': '\\uF487',\n 'ClassNotebookLogo16': '\\uF488',\n 'ClassNotebookLogoFill16': '\\uF489',\n 'ClassNotebookLogoInverse32': '\\uF48A',\n 'ClassNotebookLogoInverse16': '\\uF48B',\n 'StaffNotebookLogo32': '\\uF48C',\n 'StaffNotebookLogoFill32': '\\uF48D',\n 'StaffNotebookLogo16': '\\uF48E',\n 'StaffNotebookLogoFill16': '\\uF48F',\n 'StaffNotebookLogoInverted32': '\\uF490',\n 'StaffNotebookLogoInverted16': '\\uF491',\n 'KaizalaLogo': '\\uF492',\n 'TaskLogo': '\\uF493',\n 'ProtectionCenterLogo32': '\\uF494',\n 'GallatinLogo': '\\uF496',\n 'Globe2': '\\uF49A',\n 'Guitar': '\\uF49B',\n 'Breakfast': '\\uF49C',\n 'Brunch': '\\uF49D',\n 'BeerMug': '\\uF49E',\n 'Vacation': '\\uF49F',\n 'Teeth': '\\uF4A0',\n 'Taxi': '\\uF4A1',\n 'Chopsticks': '\\uF4A2',\n 'SyncOccurence': '\\uF4A3',\n 'UnsyncOccurence': '\\uF4A4',\n 'GIF': '\\uF4A9',\n 'PrimaryCalendar': '\\uF4AE',\n 'SearchCalendar': '\\uF4AF',\n 'VideoOff': '\\uF4B0',\n 'MicrosoftFlowLogo': '\\uF4B1',\n 'BusinessCenterLogo': '\\uF4B2',\n 'ToDoLogoBottom': '\\uF4B3',\n 'ToDoLogoTop': '\\uF4B4',\n 'EditSolid12': '\\uF4B5',\n 'EditSolidMirrored12': '\\uF4B6',\n 'UneditableSolid12': '\\uF4B7',\n 'UneditableSolidMirrored12': '\\uF4B8',\n 'UneditableMirrored': '\\uF4B9',\n 'AdminALogo32': '\\uF4BA',\n 'AdminALogoFill32': '\\uF4BB',\n 'ToDoLogoInverse': '\\uF4BC'\n }\n };\n\n registerIcons(subset, options);\n}\n"," // Your use of the content in the files referenced here is subject to the terms of the license at https://aka.ms/fluentui-assets-license\n\nimport {\n IIconOptions,\n IIconSubset,\n registerIcons\n} from '@uifabric/styling';\n\nexport function initializeIcons(\n baseUrl: string = '',\n options?: IIconOptions\n): void {\n const subset: IIconSubset = {\n style: {\n MozOsxFontSmoothing: 'grayscale',\n WebkitFontSmoothing: 'antialiased',\n fontStyle: 'normal',\n fontWeight: 'normal',\n speak: 'none'\n },\n fontFace: {\n fontFamily: `\"FabricMDL2Icons-14\"`,\n src: `url('${baseUrl}fabric-icons-14-5cf58db8.woff') format('woff')`\n },\n icons: {\n 'Snooze': '\\uF4BD',\n 'WaffleOffice365': '\\uF4E0',\n 'ImageSearch': '\\uF4E8',\n 'NewsSearch': '\\uF4E9',\n 'VideoSearch': '\\uF4EA',\n 'R': '\\uF4EB',\n 'FontColorA': '\\uF4EC',\n 'FontColorSwatch': '\\uF4ED',\n 'LightWeight': '\\uF4EE',\n 'NormalWeight': '\\uF4EF',\n 'SemiboldWeight': '\\uF4F0',\n 'GroupObject': '\\uF4F1',\n 'UngroupObject': '\\uF4F2',\n 'AlignHorizontalLeft': '\\uF4F3',\n 'AlignHorizontalCenter': '\\uF4F4',\n 'AlignHorizontalRight': '\\uF4F5',\n 'AlignVerticalTop': '\\uF4F6',\n 'AlignVerticalCenter': '\\uF4F7',\n 'AlignVerticalBottom': '\\uF4F8',\n 'HorizontalDistributeCenter': '\\uF4F9',\n 'VerticalDistributeCenter': '\\uF4FA',\n 'Ellipse': '\\uF4FB',\n 'Line': '\\uF4FC',\n 'Octagon': '\\uF4FD',\n 'Hexagon': '\\uF4FE',\n 'Pentagon': '\\uF4FF',\n 'RightTriangle': '\\uF500',\n 'HalfCircle': '\\uF501',\n 'QuarterCircle': '\\uF502',\n 'ThreeQuarterCircle': '\\uF503',\n '6PointStar': '\\uF504',\n '12PointStar': '\\uF505',\n 'ArrangeBringToFront': '\\uF506',\n 'ArrangeSendToBack': '\\uF507',\n 'ArrangeSendBackward': '\\uF508',\n 'ArrangeBringForward': '\\uF509',\n 'BorderDash': '\\uF50A',\n 'BorderDot': '\\uF50B',\n 'LineStyle': '\\uF50C',\n 'LineThickness': '\\uF50D',\n 'WindowEdit': '\\uF50E',\n 'HintText': '\\uF50F',\n 'MediaAdd': '\\uF510',\n 'AnchorLock': '\\uF511',\n 'AutoHeight': '\\uF512',\n 'ChartSeries': '\\uF513',\n 'ChartXAngle': '\\uF514',\n 'ChartYAngle': '\\uF515',\n 'Combobox': '\\uF516',\n 'LineSpacing': '\\uF517',\n 'Padding': '\\uF518',\n 'PaddingTop': '\\uF519',\n 'PaddingBottom': '\\uF51A',\n 'PaddingLeft': '\\uF51B',\n 'PaddingRight': '\\uF51C',\n 'NavigationFlipper': '\\uF51D',\n 'AlignJustify': '\\uF51E',\n 'TextOverflow': '\\uF51F',\n 'VisualsFolder': '\\uF520',\n 'VisualsStore': '\\uF521',\n 'PictureCenter': '\\uF522',\n 'PictureFill': '\\uF523',\n 'PicturePosition': '\\uF524',\n 'PictureStretch': '\\uF525',\n 'PictureTile': '\\uF526',\n 'Slider': '\\uF527',\n 'SliderHandleSize': '\\uF528',\n 'DefaultRatio': '\\uF529',\n 'NumberSequence': '\\uF52A',\n 'GUID': '\\uF52B',\n 'ReportAdd': '\\uF52C',\n 'DashboardAdd': '\\uF52D',\n 'MapPinSolid': '\\uF52E',\n 'WebPublish': '\\uF52F',\n 'PieSingleSolid': '\\uF530',\n 'BlockedSolid': '\\uF531',\n 'DrillDown': '\\uF532',\n 'DrillDownSolid': '\\uF533',\n 'DrillExpand': '\\uF534',\n 'DrillShow': '\\uF535',\n 'SpecialEvent': '\\uF536',\n 'OneDriveFolder16': '\\uF53B',\n 'FunctionalManagerDashboard': '\\uF542',\n 'BIDashboard': '\\uF543',\n 'CodeEdit': '\\uF544',\n 'RenewalCurrent': '\\uF545',\n 'RenewalFuture': '\\uF546',\n 'SplitObject': '\\uF547',\n 'BulkUpload': '\\uF548',\n 'DownloadDocument': '\\uF549',\n 'GreetingCard': '\\uF54B',\n 'Flower': '\\uF54E',\n 'WaitlistConfirm': '\\uF550',\n 'WaitlistConfirmMirrored': '\\uF551',\n 'LaptopSecure': '\\uF552',\n 'DragObject': '\\uF553',\n 'EntryView': '\\uF554',\n 'EntryDecline': '\\uF555',\n 'ContactCardSettings': '\\uF556',\n 'ContactCardSettingsMirrored': '\\uF557'\n }\n };\n\n registerIcons(subset, options);\n}\n"," // Your use of the content in the files referenced here is subject to the terms of the license at https://aka.ms/fluentui-assets-license\n\nimport {\n IIconOptions,\n IIconSubset,\n registerIcons\n} from '@uifabric/styling';\n\nexport function initializeIcons(\n baseUrl: string = '',\n options?: IIconOptions\n): void {\n const subset: IIconSubset = {\n style: {\n MozOsxFontSmoothing: 'grayscale',\n WebkitFontSmoothing: 'antialiased',\n fontStyle: 'normal',\n fontWeight: 'normal',\n speak: 'none'\n },\n fontFace: {\n fontFamily: `\"FabricMDL2Icons-15\"`,\n src: `url('${baseUrl}fabric-icons-15-3807251b.woff') format('woff')`\n },\n icons: {\n 'CalendarSettings': '\\uF558',\n 'CalendarSettingsMirrored': '\\uF559',\n 'HardDriveLock': '\\uF55A',\n 'HardDriveUnlock': '\\uF55B',\n 'AccountManagement': '\\uF55C',\n 'ReportWarning': '\\uF569',\n 'TransitionPop': '\\uF5B2',\n 'TransitionPush': '\\uF5B3',\n 'TransitionEffect': '\\uF5B4',\n 'LookupEntities': '\\uF5B5',\n 'ExploreData': '\\uF5B6',\n 'AddBookmark': '\\uF5B7',\n 'SearchBookmark': '\\uF5B8',\n 'DrillThrough': '\\uF5B9',\n 'MasterDatabase': '\\uF5BA',\n 'CertifiedDatabase': '\\uF5BB',\n 'MaximumValue': '\\uF5BC',\n 'MinimumValue': '\\uF5BD',\n 'VisualStudioIDELogo32': '\\uF5D0',\n 'PasteAsText': '\\uF5D5',\n 'PasteAsCode': '\\uF5D6',\n 'BrowserTab': '\\uF5D7',\n 'BrowserTabScreenshot': '\\uF5D8',\n 'DesktopScreenshot': '\\uF5D9',\n 'FileYML': '\\uF5DA',\n 'ClipboardSolid': '\\uF5DC',\n 'FabricUserFolder': '\\uF5E5',\n 'FabricNetworkFolder': '\\uF5E6',\n 'BullseyeTarget': '\\uF5F0',\n 'AnalyticsView': '\\uF5F1',\n 'Video360Generic': '\\uF609',\n 'Untag': '\\uF60B',\n 'Leave': '\\uF627',\n 'Trending12': '\\uF62D',\n 'Blocked12': '\\uF62E',\n 'Warning12': '\\uF62F',\n 'CheckedOutByOther12': '\\uF630',\n 'CheckedOutByYou12': '\\uF631',\n 'CircleShapeSolid': '\\uF63C',\n 'SquareShapeSolid': '\\uF63D',\n 'TriangleShapeSolid': '\\uF63E',\n 'DropShapeSolid': '\\uF63F',\n 'RectangleShapeSolid': '\\uF640',\n 'ZoomToFit': '\\uF649',\n 'InsertColumnsLeft': '\\uF64A',\n 'InsertColumnsRight': '\\uF64B',\n 'InsertRowsAbove': '\\uF64C',\n 'InsertRowsBelow': '\\uF64D',\n 'DeleteColumns': '\\uF64E',\n 'DeleteRows': '\\uF64F',\n 'DeleteRowsMirrored': '\\uF650',\n 'DeleteTable': '\\uF651',\n 'AccountBrowser': '\\uF652',\n 'VersionControlPush': '\\uF664',\n 'StackedColumnChart2': '\\uF666',\n 'TripleColumnWide': '\\uF66E',\n 'QuadColumn': '\\uF66F',\n 'WhiteBoardApp16': '\\uF673',\n 'WhiteBoardApp32': '\\uF674',\n 'PinnedSolid': '\\uF676',\n 'InsertSignatureLine': '\\uF677',\n 'ArrangeByFrom': '\\uF678',\n 'Phishing': '\\uF679',\n 'CreateMailRule': '\\uF67A',\n 'PublishCourse': '\\uF699',\n 'DictionaryRemove': '\\uF69A',\n 'UserRemove': '\\uF69B',\n 'UserEvent': '\\uF69C',\n 'Encryption': '\\uF69D',\n 'PasswordField': '\\uF6AA',\n 'OpenInNewTab': '\\uF6AB',\n 'Hide3': '\\uF6AC',\n 'VerifiedBrandSolid': '\\uF6AD',\n 'MarkAsProtected': '\\uF6AE',\n 'AuthenticatorApp': '\\uF6B1',\n 'WebTemplate': '\\uF6B2',\n 'DefenderTVM': '\\uF6B3',\n 'MedalSolid': '\\uF6B9',\n 'D365TalentLearn': '\\uF6BB',\n 'D365TalentInsight': '\\uF6BC',\n 'D365TalentHRCore': '\\uF6BD',\n 'BacklogList': '\\uF6BF',\n 'ButtonControl': '\\uF6C0',\n 'TableGroup': '\\uF6D9',\n 'MountainClimbing': '\\uF6DB',\n 'TagUnknown': '\\uF6DF',\n 'TagUnknownMirror': '\\uF6E0',\n 'TagUnknown12': '\\uF6E1',\n 'TagUnknown12Mirror': '\\uF6E2',\n 'Link12': '\\uF6E3',\n 'Presentation': '\\uF6E4',\n 'Presentation12': '\\uF6E5',\n 'Lock12': '\\uF6E6',\n 'BuildDefinition': '\\uF6E9',\n 'ReleaseDefinition': '\\uF6EA',\n 'SaveTemplate': '\\uF6EC',\n 'UserGauge': '\\uF6ED',\n 'BlockedSiteSolid12': '\\uF70A',\n 'TagSolid': '\\uF70E',\n 'OfficeChat': '\\uF70F'\n }\n };\n\n registerIcons(subset, options);\n}\n"," // Your use of the content in the files referenced here is subject to the terms of the license at https://aka.ms/fluentui-assets-license\n\nimport {\n IIconOptions,\n IIconSubset,\n registerIcons\n} from '@uifabric/styling';\n\nexport function initializeIcons(\n baseUrl: string = '',\n options?: IIconOptions\n): void {\n const subset: IIconSubset = {\n style: {\n MozOsxFontSmoothing: 'grayscale',\n WebkitFontSmoothing: 'antialiased',\n fontStyle: 'normal',\n fontWeight: 'normal',\n speak: 'none'\n },\n fontFace: {\n fontFamily: `\"FabricMDL2Icons-16\"`,\n src: `url('${baseUrl}fabric-icons-16-9cf93f3b.woff') format('woff')`\n },\n icons: {\n 'OfficeChatSolid': '\\uF710',\n 'MailSchedule': '\\uF72E',\n 'WarningSolid': '\\uF736',\n 'Blocked2Solid': '\\uF737',\n 'SkypeCircleArrow': '\\uF747',\n 'SkypeArrow': '\\uF748',\n 'SyncStatus': '\\uF751',\n 'SyncStatusSolid': '\\uF752',\n 'ProjectDocument': '\\uF759',\n 'ToDoLogoOutline': '\\uF75B',\n 'VisioOnlineLogoFill32': '\\uF75F',\n 'VisioOnlineLogo32': '\\uF760',\n 'VisioOnlineLogoCloud32': '\\uF761',\n 'VisioDiagramSync': '\\uF762',\n 'Event12': '\\uF763',\n 'EventDateMissed12': '\\uF764',\n 'UserOptional': '\\uF767',\n 'ResponsesMenu': '\\uF768',\n 'DoubleDownArrow': '\\uF769',\n 'DistributeDown': '\\uF76A',\n 'BookmarkReport': '\\uF76B',\n 'FilterSettings': '\\uF76C',\n 'GripperDotsVertical': '\\uF772',\n 'MailAttached': '\\uF774',\n 'AddIn': '\\uF775',\n 'LinkedDatabase': '\\uF779',\n 'TableLink': '\\uF77A',\n 'PromotedDatabase': '\\uF77D',\n 'BarChartVerticalFilter': '\\uF77E',\n 'BarChartVerticalFilterSolid': '\\uF77F',\n 'MicOff2': '\\uF781',\n 'MicrosoftTranslatorLogo': '\\uF782',\n 'ShowTimeAs': '\\uF787',\n 'FileRequest': '\\uF789',\n 'WorkItemAlert': '\\uF78F',\n 'PowerBILogo16': '\\uF790',\n 'PowerBILogoBackplate16': '\\uF791',\n 'BulletedListText': '\\uF792',\n 'BulletedListBullet': '\\uF793',\n 'BulletedListTextMirrored': '\\uF794',\n 'BulletedListBulletMirrored': '\\uF795',\n 'NumberedListText': '\\uF796',\n 'NumberedListNumber': '\\uF797',\n 'NumberedListTextMirrored': '\\uF798',\n 'NumberedListNumberMirrored': '\\uF799',\n 'RemoveLinkChain': '\\uF79A',\n 'RemoveLinkX': '\\uF79B',\n 'FabricTextHighlight': '\\uF79C',\n 'ClearFormattingA': '\\uF79D',\n 'ClearFormattingEraser': '\\uF79E',\n 'Photo2Fill': '\\uF79F',\n 'IncreaseIndentText': '\\uF7A0',\n 'IncreaseIndentArrow': '\\uF7A1',\n 'DecreaseIndentText': '\\uF7A2',\n 'DecreaseIndentArrow': '\\uF7A3',\n 'IncreaseIndentTextMirrored': '\\uF7A4',\n 'IncreaseIndentArrowMirrored': '\\uF7A5',\n 'DecreaseIndentTextMirrored': '\\uF7A6',\n 'DecreaseIndentArrowMirrored': '\\uF7A7',\n 'CheckListText': '\\uF7A8',\n 'CheckListCheck': '\\uF7A9',\n 'CheckListTextMirrored': '\\uF7AA',\n 'CheckListCheckMirrored': '\\uF7AB',\n 'NumberSymbol': '\\uF7AC',\n 'Coupon': '\\uF7BC',\n 'VerifiedBrand': '\\uF7BD',\n 'ReleaseGate': '\\uF7BE',\n 'ReleaseGateCheck': '\\uF7BF',\n 'ReleaseGateError': '\\uF7C0',\n 'M365InvoicingLogo': '\\uF7C1',\n 'RemoveFromShoppingList': '\\uF7D5',\n 'ShieldAlert': '\\uF7D7',\n 'FabricTextHighlightComposite': '\\uF7DA',\n 'Dataflows': '\\uF7DD',\n 'GenericScanFilled': '\\uF7DE',\n 'DiagnosticDataBarTooltip': '\\uF7DF',\n 'SaveToMobile': '\\uF7E0',\n 'Orientation2': '\\uF7E1',\n 'ScreenCast': '\\uF7E2',\n 'ShowGrid': '\\uF7E3',\n 'SnapToGrid': '\\uF7E4',\n 'ContactList': '\\uF7E5',\n 'NewMail': '\\uF7EA',\n 'EyeShadow': '\\uF7EB',\n 'FabricFolderConfirm': '\\uF7FF',\n 'InformationBarriers': '\\uF803',\n 'CommentActive': '\\uF804',\n 'ColumnVerticalSectionEdit': '\\uF806',\n 'WavingHand': '\\uF807',\n 'ShakeDevice': '\\uF80A',\n 'SmartGlassRemote': '\\uF80B',\n 'Rotate90Clockwise': '\\uF80D',\n 'Rotate90CounterClockwise': '\\uF80E',\n 'CampaignTemplate': '\\uF811',\n 'ChartTemplate': '\\uF812',\n 'PageListFilter': '\\uF813',\n 'SecondaryNav': '\\uF814',\n 'ColumnVerticalSection': '\\uF81E',\n 'SkypeCircleSlash': '\\uF825',\n 'SkypeSlash': '\\uF826'\n }\n };\n\n registerIcons(subset, options);\n}\n"," // Your use of the content in the files referenced here is subject to the terms of the license at https://aka.ms/fluentui-assets-license\n\nimport {\n IIconOptions,\n IIconSubset,\n registerIcons\n} from '@uifabric/styling';\n\nexport function initializeIcons(\n baseUrl: string = '',\n options?: IIconOptions\n): void {\n const subset: IIconSubset = {\n style: {\n MozOsxFontSmoothing: 'grayscale',\n WebkitFontSmoothing: 'antialiased',\n fontStyle: 'normal',\n fontWeight: 'normal',\n speak: 'none'\n },\n fontFace: {\n fontFamily: `\"FabricMDL2Icons-17\"`,\n src: `url('${baseUrl}fabric-icons-17-0c4ed701.woff') format('woff')`\n },\n icons: {\n 'CustomizeToolbar': '\\uF828',\n 'DuplicateRow': '\\uF82A',\n 'RemoveFromTrash': '\\uF82B',\n 'MailOptions': '\\uF82C',\n 'Childof': '\\uF82D',\n 'Footer': '\\uF82E',\n 'Header': '\\uF82F',\n 'BarChartVerticalFill': '\\uF830',\n 'StackedColumnChart2Fill': '\\uF831',\n 'PlainText': '\\uF834',\n 'AccessibiltyChecker': '\\uF835',\n 'DatabaseSync': '\\uF842',\n 'ReservationOrders': '\\uF845',\n 'TabOneColumn': '\\uF849',\n 'TabTwoColumn': '\\uF84A',\n 'TabThreeColumn': '\\uF84B',\n 'BulletedTreeList': '\\uF84C',\n 'MicrosoftTranslatorLogoGreen': '\\uF852',\n 'MicrosoftTranslatorLogoBlue': '\\uF853',\n 'InternalInvestigation': '\\uF854',\n 'AddReaction': '\\uF85D',\n 'ContactHeart': '\\uF862',\n 'VisuallyImpaired': '\\uF866',\n 'EventToDoLogo': '\\uF869',\n 'Variable2': '\\uF86D',\n 'ModelingView': '\\uF871',\n 'DisconnectVirtualMachine': '\\uF873',\n 'ReportLock': '\\uF875',\n 'Uneditable2': '\\uF876',\n 'Uneditable2Mirrored': '\\uF877',\n 'BarChartVerticalEdit': '\\uF89D',\n 'GlobalNavButtonActive': '\\uF89F',\n 'PollResults': '\\uF8A0',\n 'Rerun': '\\uF8A1',\n 'QandA': '\\uF8A2',\n 'QandAMirror': '\\uF8A3',\n 'BookAnswers': '\\uF8A4',\n 'AlertSettings': '\\uF8B6',\n 'TrimStart': '\\uF8BB',\n 'TrimEnd': '\\uF8BC',\n 'TableComputed': '\\uF8F5',\n 'DecreaseIndentLegacy': '\\uE290',\n 'IncreaseIndentLegacy': '\\uE291',\n 'SizeLegacy': '\\uE2B2'\n }\n };\n\n registerIcons(subset, options);\n}\n","import { registerIconAlias } from '@uifabric/styling';\n\nexport const registerIconAliases = () => {\n registerIconAlias('trash', 'delete');\n registerIconAlias('onedrive', 'onedrivelogo');\n registerIconAlias('alertsolid12', 'eventdatemissed12');\n registerIconAlias('sixpointstar', '6pointstar');\n registerIconAlias('twelvepointstar', '12pointstar');\n registerIconAlias('toggleon', 'toggleleft');\n registerIconAlias('toggleoff', 'toggleright');\n};\n\nexport default registerIconAliases;\n","var rHyphen = /-(.)/g;\nexport default function camelize(string) {\n return string.replace(rHyphen, function (_, chr) {\n return chr.toUpperCase();\n });\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"className\", \"bsPrefix\", \"as\"];\nimport classNames from 'classnames';\nimport camelize from 'dom-helpers/camelize';\nimport React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\n\nvar pascalCase = function pascalCase(str) {\n return str[0].toUpperCase() + camelize(str).slice(1);\n};\n\n// TODO: emstricten & fix the typing here! `createWithBsPrefix<TElementType>...`\nexport default function createWithBsPrefix(prefix, _temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n _ref$displayName = _ref.displayName,\n displayName = _ref$displayName === void 0 ? pascalCase(prefix) : _ref$displayName,\n Component = _ref.Component,\n defaultProps = _ref.defaultProps;\n\n var BsComponent = /*#__PURE__*/React.forwardRef(function (_ref2, ref) {\n var className = _ref2.className,\n bsPrefix = _ref2.bsPrefix,\n _ref2$as = _ref2.as,\n Tag = _ref2$as === void 0 ? Component || 'div' : _ref2$as,\n props = _objectWithoutPropertiesLoose(_ref2, _excluded);\n\n var resolvedPrefix = useBootstrapPrefix(bsPrefix, prefix);\n return /*#__PURE__*/React.createElement(Tag, _extends({\n ref: ref,\n className: classNames(className, resolvedPrefix)\n }, props));\n });\n BsComponent.defaultProps = defaultProps;\n BsComponent.displayName = displayName;\n return BsComponent;\n}","import ownerWindow from './ownerWindow';\n/**\n * Returns one or all computed style properties of an element.\n * \n * @param node the element\n * @param psuedoElement the style property\n */\n\nexport default function getComputedStyle(node, psuedoElement) {\n return ownerWindow(node).getComputedStyle(node, psuedoElement);\n}","import ownerDocument from './ownerDocument';\n/**\n * Returns the owner window of a given element.\n * \n * @param node the element\n */\n\nexport default function ownerWindow(node) {\n var doc = ownerDocument(node);\n return doc && doc.defaultView || window;\n}","var rUpper = /([A-Z])/g;\nexport default function hyphenate(string) {\n return string.replace(rUpper, '-$1').toLowerCase();\n}","/**\n * Copyright 2013-2014, Facebook, Inc.\n * All rights reserved.\n * https://github.com/facebook/react/blob/2aeb8a2a6beb00617a4217f7f8284924fa2ad819/src/vendor/core/hyphenateStyleName.js\n */\nimport hyphenate from './hyphenate';\nvar msPattern = /^ms-/;\nexport default function hyphenateStyleName(string) {\n return hyphenate(string).replace(msPattern, '-ms-');\n}","var supportedTransforms = /^((translate|rotate|scale)(X|Y|Z|3d)?|matrix(3d)?|perspective|skew(X|Y)?)$/i;\nexport default function isTransform(value) {\n return !!(value && supportedTransforms.test(value));\n}","import getComputedStyle from './getComputedStyle';\nimport hyphenate from './hyphenateStyle';\nimport isTransform from './isTransform';\n\nfunction style(node, property) {\n var css = '';\n var transforms = '';\n\n if (typeof property === 'string') {\n return node.style.getPropertyValue(hyphenate(property)) || getComputedStyle(node).getPropertyValue(hyphenate(property));\n }\n\n Object.keys(property).forEach(function (key) {\n var value = property[key];\n\n if (!value && value !== 0) {\n node.style.removeProperty(hyphenate(key));\n } else if (isTransform(key)) {\n transforms += key + \"(\" + value + \") \";\n } else {\n css += hyphenate(key) + \": \" + value + \";\";\n }\n });\n\n if (transforms) {\n css += \"transform: \" + transforms + \";\";\n }\n\n node.style.cssText += \";\" + css;\n}\n\nexport default style;","/* eslint-disable no-return-assign */\nimport canUseDOM from './canUseDOM';\nexport var optionsSupported = false;\nexport var onceSupported = false;\n\ntry {\n var options = {\n get passive() {\n return optionsSupported = true;\n },\n\n get once() {\n // eslint-disable-next-line no-multi-assign\n return onceSupported = optionsSupported = true;\n }\n\n };\n\n if (canUseDOM) {\n window.addEventListener('test', options, options);\n window.removeEventListener('test', options, true);\n }\n} catch (e) {\n /* */\n}\n\n/**\n * An `addEventListener` ponyfill, supports the `once` option\n * \n * @param node the element\n * @param eventName the event name\n * @param handle the handler\n * @param options event options\n */\nfunction addEventListener(node, eventName, handler, options) {\n if (options && typeof options !== 'boolean' && !onceSupported) {\n var once = options.once,\n capture = options.capture;\n var wrappedHandler = handler;\n\n if (!onceSupported && once) {\n wrappedHandler = handler.__once || function onceHandler(event) {\n this.removeEventListener(eventName, onceHandler, capture);\n handler.call(this, event);\n };\n\n handler.__once = wrappedHandler;\n }\n\n node.addEventListener(eventName, wrappedHandler, optionsSupported ? options : capture);\n }\n\n node.addEventListener(eventName, handler, options);\n}\n\nexport default addEventListener;","/**\n * A `removeEventListener` ponyfill\n * \n * @param node the element\n * @param eventName the event name\n * @param handle the handler\n * @param options event options\n */\nfunction removeEventListener(node, eventName, handler, options) {\n var capture = options && typeof options !== 'boolean' ? options.capture : options;\n node.removeEventListener(eventName, handler, capture);\n\n if (handler.__once) {\n node.removeEventListener(eventName, handler.__once, capture);\n }\n}\n\nexport default removeEventListener;","import addEventListener from './addEventListener';\nimport removeEventListener from './removeEventListener';\n\nfunction listen(node, eventName, handler, options) {\n addEventListener(node, eventName, handler, options);\n return function () {\n removeEventListener(node, eventName, handler, options);\n };\n}\n\nexport default listen;","import css from './css';\nimport listen from './listen';\nimport triggerEvent from './triggerEvent';\n\nfunction parseDuration(node) {\n var str = css(node, 'transitionDuration') || '';\n var mult = str.indexOf('ms') === -1 ? 1000 : 1;\n return parseFloat(str) * mult;\n}\n\nfunction emulateTransitionEnd(element, duration, padding) {\n if (padding === void 0) {\n padding = 5;\n }\n\n var called = false;\n var handle = setTimeout(function () {\n if (!called) triggerEvent(element, 'transitionend', true);\n }, duration + padding);\n var remove = listen(element, 'transitionend', function () {\n called = true;\n }, {\n once: true\n });\n return function () {\n clearTimeout(handle);\n remove();\n };\n}\n\nexport default function transitionEnd(element, handler, duration, padding) {\n if (duration == null) duration = parseDuration(element) || 0;\n var removeEmulate = emulateTransitionEnd(element, duration, padding);\n var remove = listen(element, 'transitionend', handler);\n return function () {\n removeEmulate();\n remove();\n };\n}","/**\n * Triggers an event on a given element.\n * \n * @param node the element\n * @param eventName the event name to trigger\n * @param bubbles whether the event should bubble up\n * @param cancelable whether the event should be cancelable\n */\nexport default function triggerEvent(node, eventName, bubbles, cancelable) {\n if (bubbles === void 0) {\n bubbles = false;\n }\n\n if (cancelable === void 0) {\n cancelable = true;\n }\n\n if (node) {\n var event = document.createEvent('HTMLEvents');\n event.initEvent(eventName, bubbles, cancelable);\n node.dispatchEvent(event);\n }\n}","import css from 'dom-helpers/css';\nimport transitionEnd from 'dom-helpers/transitionEnd';\n\nfunction parseDuration(node, property) {\n var str = css(node, property) || '';\n var mult = str.indexOf('ms') === -1 ? 1000 : 1;\n return parseFloat(str) * mult;\n}\n\nexport default function transitionEndListener(element, handler) {\n var duration = parseDuration(element, 'transitionDuration');\n var delay = parseDuration(element, 'transitionDelay');\n var remove = transitionEnd(element, function (e) {\n if (e.target === element) {\n remove();\n handler(e);\n }\n }, duration + delay);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"onEnter\", \"onEntering\", \"onEntered\", \"onExit\", \"onExiting\", \"className\", \"children\", \"dimension\", \"getDimensionValue\"];\n\nvar _collapseStyles;\n\nimport classNames from 'classnames';\nimport css from 'dom-helpers/css';\nimport React, { useMemo } from 'react';\nimport Transition, { ENTERED, ENTERING, EXITED, EXITING } from 'react-transition-group/Transition';\nimport transitionEndListener from './transitionEndListener';\nimport createChainedFunction from './createChainedFunction';\nimport triggerBrowserReflow from './triggerBrowserReflow';\nvar MARGINS = {\n height: ['marginTop', 'marginBottom'],\n width: ['marginLeft', 'marginRight']\n};\n\nfunction getDefaultDimensionValue(dimension, elem) {\n var offset = \"offset\" + dimension[0].toUpperCase() + dimension.slice(1);\n var value = elem[offset];\n var margins = MARGINS[dimension];\n return value + // @ts-ignore\n parseInt(css(elem, margins[0]), 10) + // @ts-ignore\n parseInt(css(elem, margins[1]), 10);\n}\n\nvar collapseStyles = (_collapseStyles = {}, _collapseStyles[EXITED] = 'collapse', _collapseStyles[EXITING] = 'collapsing', _collapseStyles[ENTERING] = 'collapsing', _collapseStyles[ENTERED] = 'collapse show', _collapseStyles);\nvar defaultProps = {\n in: false,\n timeout: 300,\n mountOnEnter: false,\n unmountOnExit: false,\n appear: false,\n getDimensionValue: getDefaultDimensionValue\n};\nvar Collapse = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var onEnter = _ref.onEnter,\n onEntering = _ref.onEntering,\n onEntered = _ref.onEntered,\n onExit = _ref.onExit,\n onExiting = _ref.onExiting,\n className = _ref.className,\n children = _ref.children,\n _ref$dimension = _ref.dimension,\n dimension = _ref$dimension === void 0 ? 'height' : _ref$dimension,\n _ref$getDimensionValu = _ref.getDimensionValue,\n getDimensionValue = _ref$getDimensionValu === void 0 ? getDefaultDimensionValue : _ref$getDimensionValu,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n /* Compute dimension */\n var computedDimension = typeof dimension === 'function' ? dimension() : dimension;\n /* -- Expanding -- */\n\n var handleEnter = useMemo(function () {\n return createChainedFunction(function (elem) {\n elem.style[computedDimension] = '0';\n }, onEnter);\n }, [computedDimension, onEnter]);\n var handleEntering = useMemo(function () {\n return createChainedFunction(function (elem) {\n var scroll = \"scroll\" + computedDimension[0].toUpperCase() + computedDimension.slice(1);\n elem.style[computedDimension] = elem[scroll] + \"px\";\n }, onEntering);\n }, [computedDimension, onEntering]);\n var handleEntered = useMemo(function () {\n return createChainedFunction(function (elem) {\n elem.style[computedDimension] = null;\n }, onEntered);\n }, [computedDimension, onEntered]);\n /* -- Collapsing -- */\n\n var handleExit = useMemo(function () {\n return createChainedFunction(function (elem) {\n elem.style[computedDimension] = getDimensionValue(computedDimension, elem) + \"px\";\n triggerBrowserReflow(elem);\n }, onExit);\n }, [onExit, getDimensionValue, computedDimension]);\n var handleExiting = useMemo(function () {\n return createChainedFunction(function (elem) {\n elem.style[computedDimension] = null;\n }, onExiting);\n }, [computedDimension, onExiting]);\n return /*#__PURE__*/React.createElement(Transition // @ts-ignore\n , _extends({\n ref: ref,\n addEndListener: transitionEndListener\n }, props, {\n \"aria-expanded\": props.role ? props.in : null,\n onEnter: handleEnter,\n onEntering: handleEntering,\n onEntered: handleEntered,\n onExit: handleExit,\n onExiting: handleExiting\n }), function (state, innerProps) {\n return /*#__PURE__*/React.cloneElement(children, _extends({}, innerProps, {\n className: classNames(className, children.props.className, collapseStyles[state], computedDimension === 'width' && 'width')\n }));\n });\n}); // @ts-ignore\n\n// @ts-ignore\nCollapse.defaultProps = defaultProps;\nexport default Collapse;","// reading a dimension prop will cause the browser to recalculate,\n// which will let our animations work\nexport default function triggerBrowserReflow(node) {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n node.offsetHeight;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"children\", \"bsPrefix\"];\nimport React from 'react';\nimport Collapse from './Collapse';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport NavbarContext from './NavbarContext';\nvar NavbarCollapse = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var children = _ref.children,\n bsPrefix = _ref.bsPrefix,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n bsPrefix = useBootstrapPrefix(bsPrefix, 'navbar-collapse');\n return /*#__PURE__*/React.createElement(NavbarContext.Consumer, null, function (context) {\n return /*#__PURE__*/React.createElement(Collapse, _extends({\n in: !!(context && context.expanded)\n }, props), /*#__PURE__*/React.createElement(\"div\", {\n ref: ref,\n className: bsPrefix\n }, children));\n });\n});\nNavbarCollapse.displayName = 'NavbarCollapse';\nexport default NavbarCollapse;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"className\", \"children\", \"label\", \"as\", \"onClick\"];\nimport classNames from 'classnames';\nimport React, { useContext } from 'react';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport NavbarContext from './NavbarContext';\nvar defaultProps = {\n label: 'Toggle navigation'\n};\nvar NavbarToggle = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n className = _ref.className,\n children = _ref.children,\n label = _ref.label,\n _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'button' : _ref$as,\n onClick = _ref.onClick,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n bsPrefix = useBootstrapPrefix(bsPrefix, 'navbar-toggler');\n\n var _ref2 = useContext(NavbarContext) || {},\n onToggle = _ref2.onToggle,\n expanded = _ref2.expanded;\n\n var handleClick = useEventCallback(function (e) {\n if (onClick) onClick(e);\n if (onToggle) onToggle();\n });\n\n if (Component === 'button') {\n props.type = 'button';\n }\n\n return /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n ref: ref,\n onClick: handleClick,\n \"aria-label\": label,\n className: classNames(className, bsPrefix, !expanded && 'collapsed')\n }), children || /*#__PURE__*/React.createElement(\"span\", {\n className: bsPrefix + \"-icon\"\n }));\n});\nNavbarToggle.displayName = 'NavbarToggle';\nNavbarToggle.defaultProps = defaultProps;\nexport default NavbarToggle;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"expand\", \"variant\", \"bg\", \"fixed\", \"sticky\", \"className\", \"children\", \"as\", \"expanded\", \"onToggle\", \"onSelect\", \"collapseOnSelect\"];\nimport classNames from 'classnames';\nimport React, { useCallback, useMemo } from 'react';\nimport { useUncontrolled } from 'uncontrollable';\nimport createWithBsPrefix from './createWithBsPrefix';\nimport NavbarBrand from './NavbarBrand';\nimport NavbarCollapse from './NavbarCollapse';\nimport NavbarToggle from './NavbarToggle';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport NavbarContext from './NavbarContext';\nimport SelectableContext from './SelectableContext';\nvar NavbarText = createWithBsPrefix('navbar-text', {\n Component: 'span'\n});\nvar defaultProps = {\n expand: true,\n variant: 'light',\n collapseOnSelect: false\n};\nvar Navbar = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var _useUncontrolled = useUncontrolled(props, {\n expanded: 'onToggle'\n }),\n initialBsPrefix = _useUncontrolled.bsPrefix,\n expand = _useUncontrolled.expand,\n variant = _useUncontrolled.variant,\n bg = _useUncontrolled.bg,\n fixed = _useUncontrolled.fixed,\n sticky = _useUncontrolled.sticky,\n className = _useUncontrolled.className,\n children = _useUncontrolled.children,\n _useUncontrolled$as = _useUncontrolled.as,\n Component = _useUncontrolled$as === void 0 ? 'nav' : _useUncontrolled$as,\n expanded = _useUncontrolled.expanded,\n _onToggle = _useUncontrolled.onToggle,\n onSelect = _useUncontrolled.onSelect,\n collapseOnSelect = _useUncontrolled.collapseOnSelect,\n controlledProps = _objectWithoutPropertiesLoose(_useUncontrolled, _excluded);\n\n var bsPrefix = useBootstrapPrefix(initialBsPrefix, 'navbar');\n var handleCollapse = useCallback(function () {\n if (onSelect) onSelect.apply(void 0, arguments);\n\n if (collapseOnSelect && expanded) {\n if (_onToggle) {\n _onToggle(false);\n }\n }\n }, [onSelect, collapseOnSelect, expanded, _onToggle]); // will result in some false positives but that seems better\n // than false negatives. strict `undefined` check allows explicit\n // \"nulling\" of the role if the user really doesn't want one\n\n if (controlledProps.role === undefined && Component !== 'nav') {\n controlledProps.role = 'navigation';\n }\n\n var expandClass = bsPrefix + \"-expand\";\n if (typeof expand === 'string') expandClass = expandClass + \"-\" + expand;\n var navbarContext = useMemo(function () {\n return {\n onToggle: function onToggle() {\n return _onToggle && _onToggle(!expanded);\n },\n bsPrefix: bsPrefix,\n expanded: !!expanded\n };\n }, [bsPrefix, expanded, _onToggle]);\n return /*#__PURE__*/React.createElement(NavbarContext.Provider, {\n value: navbarContext\n }, /*#__PURE__*/React.createElement(SelectableContext.Provider, {\n value: handleCollapse\n }, /*#__PURE__*/React.createElement(Component, _extends({\n ref: ref\n }, controlledProps, {\n className: classNames(className, bsPrefix, expand && expandClass, variant && bsPrefix + \"-\" + variant, bg && \"bg-\" + bg, sticky && \"sticky-\" + sticky, fixed && \"fixed-\" + fixed)\n }), children)));\n});\nNavbar.defaultProps = defaultProps;\nNavbar.displayName = 'Navbar';\nNavbar.Brand = NavbarBrand;\nNavbar.Toggle = NavbarToggle;\nNavbar.Collapse = NavbarCollapse;\nNavbar.Text = NavbarText;\nexport default Navbar;","import * as React from 'react';\r\nimport { IRefObject, IRenderFunction, IStyleFunctionOrObject } from '../../Utilities';\r\nimport { CollapseAllVisibility } from '../../GroupedList';\r\nimport { ITheme, IStyle } from '../../Styling';\r\nimport { DetailsHeaderBase } from './DetailsHeader.base';\r\nimport { IColumn, DetailsListLayoutMode, IColumnReorderOptions, ColumnDragEndLocation } from './DetailsList.types';\r\nimport { ICellStyleProps, IDetailsItemProps } from './DetailsRow.types';\r\nimport { ISelection, SelectionMode } from '../../utilities/selection/index';\r\nimport { IDetailsCheckboxProps } from './DetailsRowCheck.types';\r\nimport { IDetailsColumnRenderTooltipProps } from './DetailsColumn.types';\r\n\r\n/**\r\n * {@docCategory DetailsList}\r\n */\r\nexport interface IDetailsHeader {\r\n /** sets focus into the header */\r\n focus: () => boolean;\r\n}\r\n\r\n/**\r\n * {@docCategory DetailsList}\r\n */\r\nexport interface IDetailsHeaderBaseProps extends React.ClassAttributes<DetailsHeaderBase>, IDetailsItemProps {\r\n /** Theme from the Higher Order Component */\r\n theme?: ITheme;\r\n\r\n /** Call to provide customized styling that will layer on top of the variant rules. */\r\n styles?: IStyleFunctionOrObject<IDetailsHeaderStyleProps, IDetailsHeaderStyles>;\r\n\r\n /** Ref to the component itself */\r\n componentRef?: IRefObject<IDetailsHeader>;\r\n\r\n /** Layout mode - fixedColumns or justified */\r\n layoutMode: DetailsListLayoutMode;\r\n\r\n /** Callback for when column sizing has changed */\r\n onColumnIsSizingChanged?: (column: IColumn, isSizing: boolean) => void;\r\n\r\n /** Callback for when column is resized */\r\n onColumnResized?: (column: IColumn, newWidth: number, columnIndex: number) => void;\r\n\r\n /** Callback for when column is automatically resized */\r\n onColumnAutoResized?: (column: IColumn, columnIndex: number) => void;\r\n\r\n /** Callback for when the column is clicked */\r\n onColumnClick?: (ev: React.MouseEvent<HTMLElement>, column: IColumn) => void;\r\n\r\n /** Callback for when the column needs to show a context menu */\r\n onColumnContextMenu?: (column: IColumn, ev: React.MouseEvent<HTMLElement>) => void;\r\n\r\n /** Callback to render a tooltip for the column header */\r\n onRenderColumnHeaderTooltip?: IRenderFunction<IDetailsColumnRenderTooltipProps>;\r\n\r\n /** Whether to collapse for all visibility */\r\n collapseAllVisibility?: CollapseAllVisibility;\r\n\r\n /** Whether or not all is collapsed */\r\n isAllCollapsed?: boolean;\r\n\r\n /** Callback for when collapse all is toggled */\r\n onToggleCollapseAll?: (isAllCollapsed: boolean) => void;\r\n\r\n /** ariaLabel for the entire header */\r\n ariaLabel?: string;\r\n\r\n /** ariaLabel for expand/collapse group button */\r\n ariaLabelForToggleAllGroupsButton?: string;\r\n\r\n /** ariaLabel for the header checkbox that selects or deselects everything */\r\n ariaLabelForSelectAllCheckbox?: string;\r\n\r\n /** ariaLabel for the selection column */\r\n ariaLabelForSelectionColumn?: string;\r\n\r\n /** Select all button visibility */\r\n selectAllVisibility?: SelectAllVisibility;\r\n\r\n /** Column reordering options */\r\n columnReorderOptions?: IColumnReorderOptions;\r\n\r\n /** Column reordering options */\r\n columnReorderProps?: IColumnReorderHeaderProps;\r\n\r\n /** Minimum pixels to be moved before dragging is registered */\r\n minimumPixelsForDrag?: number;\r\n\r\n /** Overriding class name */\r\n className?: string;\r\n\r\n /** If provided, can be used to render a custom checkbox */\r\n onRenderDetailsCheckbox?: IRenderFunction<IDetailsCheckboxProps>;\r\n\r\n /**\r\n * Whether to use fast icon and check components. The icons can't be targeted by customization\r\n * but are still customizable via class names.\r\n * @defaultvalue true\r\n */\r\n useFastIcons?: boolean;\r\n}\r\n\r\n/**\r\n * {@docCategory DetailsList}\r\n */\r\nexport interface IDetailsHeaderProps extends IDetailsHeaderBaseProps {\r\n /**\r\n * Column metadata\r\n */\r\n columns: IColumn[];\r\n\r\n /**\r\n * Selection from utilities\r\n */\r\n selection: ISelection;\r\n\r\n /**\r\n * Selection mode\r\n */\r\n selectionMode: SelectionMode;\r\n}\r\n\r\n/**\r\n * {@docCategory DetailsList}\r\n */\r\nexport enum SelectAllVisibility {\r\n none = 0,\r\n hidden = 1,\r\n visible = 2,\r\n}\r\n\r\n/**\r\n * {@docCategory DetailsList}\r\n */\r\nexport interface IDetailsHeaderState {\r\n columnResizeDetails?: IColumnResizeDetails;\r\n isAllSelected?: boolean;\r\n isSizing?: boolean;\r\n isAllCollapsed?: boolean;\r\n}\r\n\r\n/**\r\n * {@docCategory DetailsList}\r\n */\r\nexport interface IColumnResizeDetails {\r\n columnIndex: number;\r\n originX?: number;\r\n columnMinWidth: number;\r\n}\r\n\r\n/**\r\n * {@docCategory DetailsList}\r\n */\r\nexport interface IColumnReorderHeaderProps extends IColumnReorderOptions {\r\n /** Callback to notify the column dragEnd event to List\r\n * Need this to check whether the dragEnd has happened on\r\n * corresponding list or outside of the list\r\n */\r\n onColumnDragEnd?: (props: { dropLocation?: ColumnDragEndLocation }, event: MouseEvent) => void;\r\n}\r\n\r\n/**\r\n * {@docCategory DetailsList}\r\n */\r\nexport interface IDropHintDetails {\r\n originX: number; // X index of dropHint Element relative to header\r\n startX: number; // start index of the range for the current drophint\r\n endX: number; // end index of the range for the current drophint\r\n dropHintElementRef: HTMLElement; // Reference for drophint to change the style when needed\r\n}\r\n\r\n/**\r\n * {@docCategory DetailsList}\r\n */\r\nexport type IDetailsHeaderStyleProps = Required<Pick<IDetailsHeaderProps, 'theme'>> &\r\n Pick<IDetailsHeaderProps, 'className'> & {\r\n /** Whether to hide select all checkbox */\r\n isSelectAllHidden?: boolean;\r\n\r\n /** Whether the \"select all\" checkbox is checked */\r\n isAllSelected?: boolean;\r\n\r\n /** Is column being resized */\r\n isResizingColumn?: boolean;\r\n\r\n /** Are all columns collapsed */\r\n isAllCollapsed?: boolean;\r\n\r\n /** Whether the header is sizing */\r\n isSizing?: boolean;\r\n\r\n /** Whether checkbox is hidden */\r\n isCheckboxHidden?: boolean;\r\n\r\n cellStyleProps?: ICellStyleProps;\r\n };\r\n\r\n/**\r\n * {@docCategory DetailsList}\r\n */\r\nexport interface IDetailsHeaderStyles {\r\n root: IStyle;\r\n check: IStyle;\r\n\r\n /**\r\n * @deprecated Not used\r\n */\r\n cellWrapperPadded: IStyle;\r\n cellIsCheck: IStyle;\r\n\r\n /**\r\n * @deprecated Not used\r\n */\r\n cellIsActionable: IStyle;\r\n\r\n /**\r\n * @deprecated Not used\r\n */\r\n cellIsEmpty: IStyle;\r\n cellSizer: IStyle;\r\n cellSizerStart: IStyle;\r\n cellSizerEnd: IStyle;\r\n cellIsResizing: IStyle;\r\n cellIsGroupExpander: IStyle;\r\n collapseButton: IStyle;\r\n checkTooltip: IStyle;\r\n sizingOverlay: IStyle;\r\n dropHintCircleStyle: IStyle;\r\n dropHintCaretStyle: IStyle;\r\n dropHintLineStyle: IStyle;\r\n dropHintStyle: IStyle;\r\n accessibleLabel: IStyle;\r\n}\r\n","import { EventGroup, getDocument } from '../../Utilities';\nimport { IDragDropHelper, IDragDropTarget, IDragDropOptions, IDragDropEvent, IDragDropContext } from './interfaces';\nimport { ISelection } from '../../utilities/selection/interfaces';\n\nconst MOUSEDOWN_PRIMARY_BUTTON = 0; // for mouse down event we are using ev.button property, 0 means left button\nconst MOUSEMOVE_PRIMARY_BUTTON = 1; // for mouse move event we are using ev.buttons property, 1 means left button\n\nexport interface IDragDropHelperParams {\n selection: ISelection;\n minimumPixelsForDrag?: number;\n}\n\nexport class DragDropHelper implements IDragDropHelper {\n private _dragEnterCounts: { [key: string]: number };\n private _isDragging: boolean;\n private _dragData: {\n eventTarget: EventTarget | null;\n clientX: number;\n clientY: number;\n dataTransfer?: DataTransfer;\n dropTarget?: IDragDropTarget;\n dragTarget?: IDragDropTarget;\n } | null;\n private _selection: ISelection;\n private _activeTargets: {\n [key: string]: {\n target: IDragDropTarget;\n dispose: () => void;\n };\n };\n private _events: EventGroup;\n private _lastId: number;\n private _initialized: boolean;\n\n constructor(params: IDragDropHelperParams) {\n this._selection = params.selection;\n this._dragEnterCounts = {};\n this._activeTargets = {};\n this._lastId = 0;\n // To make this class cheap to create, which allows simplifying some logic elsewhere,\n // only initialize the event group and global event handlers as needed.\n this._initialized = false;\n }\n\n public dispose(): void {\n if (this._events) {\n this._events.dispose();\n }\n }\n\n public subscribe(\n root: HTMLElement,\n events: EventGroup,\n dragDropOptions: IDragDropOptions,\n ): {\n key: string;\n dispose(): void;\n } {\n if (!this._initialized) {\n this._events = new EventGroup(this);\n\n const doc = getDocument();\n\n // clear drag data when mouse up, use capture event to ensure it will be run\n if (doc) {\n this._events.on(doc.body, 'mouseup', this._onMouseUp.bind(this), true);\n this._events.on(doc, 'mouseup', this._onDocumentMouseUp.bind(this), true);\n }\n\n this._initialized = true;\n }\n\n const { key = `${++this._lastId}` } = dragDropOptions;\n\n const handlers: {\n callback: (context: IDragDropContext, event?: any) => void;\n eventName: string;\n }[] = [];\n\n let onDragStart: (event: DragEvent) => void;\n let onDragLeave: (event: DragEvent) => void;\n let onDragEnter: (event: DragEvent) => void;\n let onDragEnd: (event: DragEvent) => void;\n let onDrop: (event: DragEvent) => void;\n let onDragOver: (event: DragEvent) => void;\n let onMouseDown: (event: MouseEvent) => void;\n\n let isDraggable: boolean;\n let isDroppable: boolean;\n\n let activeTarget: {\n target: IDragDropTarget;\n dispose: () => void;\n };\n\n if (dragDropOptions && root) {\n const { eventMap, context, updateDropState } = dragDropOptions;\n\n const dragDropTarget: IDragDropTarget = {\n root: root,\n options: dragDropOptions,\n key: key,\n };\n\n isDraggable = this._isDraggable(dragDropTarget);\n isDroppable = this._isDroppable(dragDropTarget);\n\n if (isDraggable || isDroppable) {\n if (eventMap) {\n for (const event of eventMap) {\n const handler = {\n callback: event.callback.bind(null, context),\n eventName: event.eventName,\n };\n\n handlers.push(handler);\n\n this._events.on(root, handler.eventName, handler.callback);\n }\n }\n }\n\n if (isDroppable) {\n // If the target is droppable, wire up global event listeners to track drop-related events.\n onDragLeave = (event: DragEvent) => {\n if (!(event as IDragDropEvent).isHandled) {\n (event as IDragDropEvent).isHandled = true;\n this._dragEnterCounts[key]--;\n if (this._dragEnterCounts[key] === 0) {\n updateDropState(false /* isDropping */, event);\n }\n }\n };\n\n onDragEnter = (event: DragEvent) => {\n event.preventDefault(); // needed for IE\n if (!(event as IDragDropEvent).isHandled) {\n (event as IDragDropEvent).isHandled = true;\n this._dragEnterCounts[key]++;\n if (this._dragEnterCounts[key] === 1) {\n updateDropState(true /* isDropping */, event);\n }\n }\n };\n\n onDragEnd = (event: DragEvent) => {\n this._dragEnterCounts[key] = 0;\n updateDropState(false /* isDropping */, event);\n };\n\n onDrop = (event: DragEvent) => {\n this._dragEnterCounts[key] = 0;\n updateDropState(false /* isDropping */, event);\n\n if (dragDropOptions.onDrop) {\n dragDropOptions.onDrop(dragDropOptions.context.data, event);\n }\n };\n\n onDragOver = (event: DragEvent) => {\n event.preventDefault();\n if (dragDropOptions.onDragOver) {\n dragDropOptions.onDragOver(dragDropOptions.context.data, event);\n }\n };\n\n this._dragEnterCounts[key] = 0;\n\n // dragenter and dragleave will be fired when hover to the child element\n // but we only want to change state when enter or leave the current element\n // use the count to ensure it.\n events.on(root, 'dragenter', onDragEnter);\n events.on(root, 'dragleave', onDragLeave);\n events.on(root, 'dragend', onDragEnd);\n events.on(root, 'drop', onDrop);\n events.on(root, 'dragover', onDragOver);\n }\n\n if (isDraggable) {\n // If the target is draggable, wire up local event listeners for mouse events.\n onMouseDown = this._onMouseDown.bind(this, dragDropTarget);\n onDragEnd = this._onDragEnd.bind(this, dragDropTarget);\n\n // We need to add in data so that on Firefox we show the ghost element when dragging\n onDragStart = (event: DragEvent) => {\n const options = dragDropOptions;\n if (options && options.onDragStart) {\n options.onDragStart(options.context.data, options.context.index, this._selection.getSelection(), event);\n }\n this._isDragging = true;\n if (event.dataTransfer) {\n event.dataTransfer.setData('id', root.id);\n }\n };\n\n events.on(root, 'dragstart', onDragStart);\n events.on(root, 'mousedown', onMouseDown);\n events.on(root, 'dragend', onDragEnd);\n }\n\n activeTarget = {\n target: dragDropTarget,\n dispose: () => {\n if (this._activeTargets[key] === activeTarget) {\n delete this._activeTargets[key];\n }\n\n if (root) {\n for (const handler of handlers) {\n this._events.off(root, handler.eventName, handler.callback);\n }\n\n if (isDroppable) {\n events.off(root, 'dragenter', onDragEnter);\n events.off(root, 'dragleave', onDragLeave);\n events.off(root, 'dragend', onDragEnd);\n events.off(root, 'dragover', onDragOver);\n events.off(root, 'drop', onDrop);\n }\n\n if (isDraggable) {\n events.off(root, 'dragstart', onDragStart);\n events.off(root, 'mousedown', onMouseDown);\n events.off(root, 'dragend', onDragEnd);\n }\n }\n },\n };\n\n this._activeTargets[key] = activeTarget;\n }\n\n return {\n key: key,\n dispose: () => {\n if (activeTarget) {\n activeTarget.dispose();\n }\n },\n };\n }\n\n public unsubscribe(root: HTMLElement, key: string): void {\n const activeTarget = this._activeTargets[key];\n\n if (activeTarget) {\n activeTarget.dispose();\n }\n }\n\n private _onDragEnd(target: IDragDropTarget, event: DragEvent): void {\n const { options } = target;\n if (options.onDragEnd) {\n options.onDragEnd(options.context.data, event);\n }\n }\n\n /**\n * clear drag data when mouse up on body\n */\n private _onMouseUp(event: MouseEvent): void {\n this._isDragging = false;\n if (this._dragData) {\n for (const key of Object.keys(this._activeTargets)) {\n const activeTarget = this._activeTargets[key];\n\n if (activeTarget.target.root) {\n this._events.off(activeTarget.target.root, 'mousemove');\n this._events.off(activeTarget.target.root, 'mouseleave');\n }\n }\n\n if (this._dragData.dropTarget) {\n // raise dragleave event to let dropTarget know it need to remove dropping style\n EventGroup.raise(this._dragData.dropTarget.root, 'dragleave');\n EventGroup.raise(this._dragData.dropTarget.root, 'drop');\n }\n }\n this._dragData = null;\n }\n\n /**\n * clear drag data when mouse up outside of the document\n */\n private _onDocumentMouseUp(event: MouseEvent): void {\n const doc = getDocument();\n\n if (doc && event.target === doc.documentElement) {\n this._onMouseUp(event);\n }\n }\n\n /**\n * when mouse move over a new drop target while dragging some items,\n * fire dragleave on the old target and fire dragenter to the new target\n * The target will handle style change on dragenter and dragleave events.\n */\n private _onMouseMove(target: IDragDropTarget, event: MouseEvent): void {\n const {\n // use buttons property here since ev.button in some edge case is not updating well during the move.\n // but firefox doesn't support it, so we set the default value when it is not defined.\n buttons = MOUSEMOVE_PRIMARY_BUTTON,\n } = event;\n\n if (this._dragData && buttons !== MOUSEMOVE_PRIMARY_BUTTON) {\n // cancel mouse down event and return early when the primary button is not pressed\n this._onMouseUp(event);\n return;\n }\n\n const { root, key } = target;\n if (this._isDragging) {\n if (this._isDroppable(target)) {\n // we can have nested drop targets in the DOM, like a folder inside a group. In that case, when we drag into\n // the inner target (folder), we first set dropTarget to the inner element. But the same event is bubbled to the\n // outer target too, and we need to prevent the outer one from taking over.\n // So, check if the last dropTarget is not a child of the current.\n\n if (this._dragData) {\n if (\n this._dragData.dropTarget &&\n this._dragData.dropTarget.key !== key &&\n !this._isChild(root, this._dragData.dropTarget.root)\n ) {\n if (this._dragEnterCounts[this._dragData.dropTarget.key] > 0) {\n EventGroup.raise(this._dragData.dropTarget.root, 'dragleave');\n EventGroup.raise(root, 'dragenter');\n this._dragData.dropTarget = target;\n }\n }\n }\n }\n }\n }\n\n /**\n * when mouse leave a target while dragging some items, fire dragleave to the target\n */\n private _onMouseLeave(target: IDragDropTarget, event: MouseEvent): void {\n if (this._isDragging) {\n if (this._dragData && this._dragData.dropTarget && this._dragData.dropTarget.key === target.key) {\n EventGroup.raise(target.root, 'dragleave');\n this._dragData.dropTarget = undefined;\n }\n }\n }\n\n /**\n * when mouse down on a draggable item, we start to track dragdata.\n */\n private _onMouseDown(target: IDragDropTarget, event: MouseEvent): void {\n if (event.button !== MOUSEDOWN_PRIMARY_BUTTON) {\n // Ignore anything except the primary button.\n return;\n }\n\n if (this._isDraggable(target)) {\n this._dragData = {\n clientX: event.clientX,\n clientY: event.clientY,\n eventTarget: event.target,\n dragTarget: target,\n };\n\n for (const key of Object.keys(this._activeTargets)) {\n const activeTarget = this._activeTargets[key];\n if (activeTarget.target.root) {\n this._events.on(activeTarget.target.root, 'mousemove', this._onMouseMove.bind(this, activeTarget.target));\n this._events.on(activeTarget.target.root, 'mouseleave', this._onMouseLeave.bind(this, activeTarget.target));\n }\n }\n } else {\n this._dragData = null;\n }\n }\n\n /**\n * determine whether the child target is a descendant of the parent\n */\n private _isChild(parentElement: HTMLElement, childElement: HTMLElement): boolean {\n while (childElement && childElement.parentElement) {\n if (childElement.parentElement === parentElement) {\n return true;\n }\n childElement = childElement.parentElement;\n }\n return false;\n }\n\n private _isDraggable(target: IDragDropTarget): boolean {\n const { options } = target;\n return !!(options.canDrag && options.canDrag(options.context.data));\n }\n\n private _isDroppable(target: IDragDropTarget): boolean {\n // TODO: take the drag item into consideration to prevent dragging an item into the same group\n const { options } = target;\n const dragContext =\n this._dragData && this._dragData.dragTarget ? this._dragData.dragTarget.options.context : undefined;\n return !!(options.canDrop && options.canDrop(options.context, dragContext));\n }\n}\n","import * as React from 'react';\nimport { Icon, FontIcon } from '../../Icon';\nimport { IProcessedStyleSet } from '../../Styling';\nimport {\n initializeComponentRef,\n EventGroup,\n Async,\n IDisposable,\n classNamesFunction,\n composeRenderFunction,\n} from '../../Utilities';\nimport { ColumnActionsMode } from './DetailsList.types';\nimport { IDragDropOptions } from './../../utilities/dragdrop/interfaces';\nimport { DEFAULT_CELL_STYLE_PROPS } from './DetailsRow.styles';\nimport {\n IDetailsColumnStyleProps,\n IDetailsColumnProps,\n IDetailsColumnStyles,\n IDetailsColumnRenderTooltipProps,\n IDetailsColumnFilterIconProps,\n} from './DetailsColumn.types';\n\nconst MOUSEDOWN_PRIMARY_BUTTON = 0; // for mouse down event we are using ev.button property, 0 means left button\n\nconst getClassNames = classNamesFunction<IDetailsColumnStyleProps, IDetailsColumnStyles>();\nconst TRANSITION_DURATION_DRAG = 200; // ms\nconst TRANSITION_DURATION_DROP = 1500; // ms\nconst CLASSNAME_ADD_INTERVAL = 20; // ms\n\nconst defaultOnRenderHeader = (classNames: IProcessedStyleSet<IDetailsColumnStyles>) => (\n props?: IDetailsColumnProps,\n): JSX.Element | null => {\n if (!props) {\n return null;\n }\n\n if (props.column.isIconOnly) {\n return <span className={classNames.accessibleLabel}>{props.column.name}</span>;\n }\n\n return <>{props.column.name}</>;\n};\n\n/**\n * Component for rendering columns in a `DetailsList`.\n *\n * {@docCategory DetailsList}\n */\nexport class DetailsColumnBase extends React.Component<IDetailsColumnProps> {\n private _async: Async;\n private _events: EventGroup;\n private _root = React.createRef<HTMLDivElement>();\n private _dragDropSubscription: IDisposable;\n private _classNames: IProcessedStyleSet<IDetailsColumnStyles>;\n\n constructor(props: IDetailsColumnProps) {\n super(props);\n initializeComponentRef(this);\n this._async = new Async(this);\n this._events = new EventGroup(this);\n }\n\n public render(): JSX.Element {\n const {\n column,\n columnIndex,\n parentId,\n isDraggable,\n styles,\n theme,\n cellStyleProps = DEFAULT_CELL_STYLE_PROPS,\n useFastIcons = true,\n } = this.props;\n const { onRenderColumnHeaderTooltip = this._onRenderColumnHeaderTooltip } = this.props;\n\n this._classNames = getClassNames(styles, {\n theme: theme!,\n headerClassName: column.headerClassName,\n iconClassName: column.iconClassName,\n isActionable: column.columnActionsMode !== ColumnActionsMode.disabled,\n isEmpty: !column.name,\n isIconVisible: column.isSorted || column.isGrouped || column.isFiltered,\n isPadded: column.isPadded,\n isIconOnly: column.isIconOnly,\n cellStyleProps,\n transitionDurationDrag: TRANSITION_DURATION_DRAG,\n transitionDurationDrop: TRANSITION_DURATION_DROP,\n });\n\n const classNames = this._classNames;\n const IconComponent = useFastIcons ? FontIcon : Icon;\n\n const onRenderFilterIcon = column.onRenderFilterIcon\n ? composeRenderFunction(column.onRenderFilterIcon, this._onRenderFilterIcon(this._classNames))\n : this._onRenderFilterIcon(this._classNames);\n\n const onRenderHeader = column.onRenderHeader\n ? composeRenderFunction(column.onRenderHeader, defaultOnRenderHeader(this._classNames))\n : defaultOnRenderHeader(this._classNames);\n\n return (\n <>\n <div\n key={column.key}\n ref={this._root}\n role={'columnheader'}\n aria-sort={column.isSorted ? (column.isSortedDescending ? 'descending' : 'ascending') : 'none'}\n aria-colindex={columnIndex}\n className={classNames.root}\n data-is-draggable={isDraggable}\n draggable={isDraggable}\n style={{\n width:\n column.calculatedWidth! +\n cellStyleProps.cellLeftPadding +\n cellStyleProps.cellRightPadding +\n (column.isPadded ? cellStyleProps.cellExtraRightPadding : 0),\n }}\n data-automationid={'ColumnsHeaderColumn'}\n data-item-key={column.key}\n >\n {isDraggable && (\n <IconComponent iconName=\"GripperBarVertical\" className={classNames.gripperBarVerticalStyle} />\n )}\n {onRenderColumnHeaderTooltip(\n {\n hostClassName: classNames.cellTooltip,\n id: `${parentId}-${column.key}-tooltip`,\n setAriaDescribedBy: false,\n column,\n content: column.columnActionsMode !== ColumnActionsMode.disabled ? column.ariaLabel : '',\n children: (\n <span\n id={`${parentId}-${column.key}`}\n aria-label={column.isIconOnly ? column.name : undefined}\n aria-labelledby={column.isIconOnly ? undefined : `${parentId}-${column.key}-name`}\n className={classNames.cellTitle}\n data-is-focusable={column.columnActionsMode !== ColumnActionsMode.disabled}\n role={\n column.columnActionsMode !== ColumnActionsMode.disabled &&\n (column.onColumnClick !== undefined || this.props.onColumnClick !== undefined)\n ? 'button'\n : undefined\n }\n aria-describedby={\n !this.props.onRenderColumnHeaderTooltip && this._hasAccessibleLabel()\n ? `${parentId}-${column.key}-tooltip`\n : undefined\n }\n onContextMenu={this._onColumnContextMenu}\n onClick={this._onColumnClick}\n aria-haspopup={column.columnActionsMode === ColumnActionsMode.hasDropdown}\n aria-expanded={\n column.columnActionsMode === ColumnActionsMode.hasDropdown ? !!column.isMenuOpen : undefined\n }\n >\n <span id={`${parentId}-${column.key}-name`} className={classNames.cellName}>\n {(column.iconName || column.iconClassName) && (\n <IconComponent className={classNames.iconClassName} iconName={column.iconName} />\n )}\n\n {onRenderHeader(this.props)}\n </span>\n\n {column.isFiltered && <IconComponent className={classNames.nearIcon} iconName=\"Filter\" />}\n\n {column.isSorted && (\n <IconComponent\n className={classNames.sortIcon}\n iconName={column.isSortedDescending ? 'SortDown' : 'SortUp'}\n />\n )}\n\n {column.isGrouped && <IconComponent className={classNames.nearIcon} iconName=\"GroupedDescending\" />}\n\n {column.columnActionsMode === ColumnActionsMode.hasDropdown &&\n !column.isIconOnly &&\n onRenderFilterIcon({\n 'aria-hidden': true,\n columnProps: this.props,\n className: classNames.filterChevron,\n iconName: 'ChevronDown',\n })}\n </span>\n ),\n },\n this._onRenderColumnHeaderTooltip,\n )}\n </div>\n {!this.props.onRenderColumnHeaderTooltip ? this._renderAccessibleLabel() : null}\n </>\n );\n }\n\n public componentDidMount(): void {\n if (this.props.dragDropHelper && this.props.isDraggable) {\n this._addDragDropHandling();\n }\n\n const classNames = this._classNames;\n\n if (this.props.isDropped) {\n if (this._root.current) {\n this._root.current.classList.add(classNames.borderAfterDropping);\n\n this._async.setTimeout(() => {\n if (this._root.current) {\n this._root.current.classList.add(classNames.noBorderAfterDropping);\n }\n }, CLASSNAME_ADD_INTERVAL);\n }\n\n this._async.setTimeout(() => {\n if (this._root.current) {\n this._root.current.classList.remove(classNames.borderAfterDropping);\n this._root.current.classList.remove(classNames.noBorderAfterDropping);\n }\n }, TRANSITION_DURATION_DROP + CLASSNAME_ADD_INTERVAL);\n }\n }\n\n public componentWillUnmount(): void {\n if (this._dragDropSubscription) {\n this._dragDropSubscription.dispose();\n delete this._dragDropSubscription;\n }\n this._async.dispose();\n this._events.dispose();\n }\n\n public componentDidUpdate(): void {\n if (!this._dragDropSubscription && this.props.dragDropHelper && this.props.isDraggable) {\n this._addDragDropHandling();\n }\n\n if (this._dragDropSubscription && !this.props.isDraggable) {\n this._dragDropSubscription.dispose();\n this._events.off(this._root.current, 'mousedown');\n delete this._dragDropSubscription;\n }\n }\n\n private _onRenderFilterIcon = (classNames: IProcessedStyleSet<IDetailsColumnStyles>) => (\n props: IDetailsColumnFilterIconProps,\n ): JSX.Element => {\n const { columnProps, ...iconProps } = props;\n const IconComponent = columnProps?.useFastIcons ? FontIcon : Icon;\n\n return <IconComponent {...iconProps} />;\n };\n\n private _onRenderColumnHeaderTooltip = (tooltipHostProps: IDetailsColumnRenderTooltipProps): JSX.Element => {\n return <span className={tooltipHostProps.hostClassName}>{tooltipHostProps.children}</span>;\n };\n\n private _onColumnClick = (ev: React.MouseEvent<HTMLElement>): void => {\n const { onColumnClick, column } = this.props;\n\n if (column.columnActionsMode === ColumnActionsMode.disabled) {\n return;\n }\n\n if (column.onColumnClick) {\n column.onColumnClick(ev, column);\n }\n\n if (onColumnClick) {\n onColumnClick(ev, column);\n }\n };\n\n private _getColumnDragDropOptions(): IDragDropOptions {\n const { columnIndex } = this.props;\n const options = {\n selectionIndex: columnIndex,\n context: { data: columnIndex, index: columnIndex },\n canDrag: () => this.props.isDraggable!,\n canDrop: () => false,\n onDragStart: this._onDragStart,\n updateDropState: () => undefined,\n onDrop: () => undefined,\n onDragEnd: this._onDragEnd,\n };\n return options;\n }\n\n private _hasAccessibleLabel(): boolean {\n const { column } = this.props;\n\n return !!(\n column.ariaLabel ||\n column.filterAriaLabel ||\n column.sortAscendingAriaLabel ||\n column.sortDescendingAriaLabel ||\n column.groupAriaLabel\n );\n }\n\n private _renderAccessibleLabel(): JSX.Element | null {\n const { column, parentId } = this.props;\n const classNames = this._classNames;\n\n return this._hasAccessibleLabel() && !this.props.onRenderColumnHeaderTooltip ? (\n <label\n key={`${column.key}_label`}\n id={`${parentId}-${column.key}-tooltip`}\n className={classNames.accessibleLabel}\n >\n {column.ariaLabel}\n {(column.isFiltered && column.filterAriaLabel) || null}\n {(column.isSorted &&\n (column.isSortedDescending ? column.sortDescendingAriaLabel : column.sortAscendingAriaLabel)) ||\n null}\n {(column.isGrouped && column.groupAriaLabel) || null}\n </label>\n ) : null;\n }\n\n private _onDragStart = (item?: any, itemIndex?: number, selectedItems?: any[], event?: MouseEvent): void => {\n const classNames = this._classNames;\n if (itemIndex) {\n this._updateHeaderDragInfo(itemIndex);\n this._root.current!.classList.add(classNames.borderWhileDragging);\n this._async.setTimeout(() => {\n if (this._root.current) {\n this._root.current.classList.add(classNames.noBorderWhileDragging);\n }\n }, CLASSNAME_ADD_INTERVAL);\n }\n };\n\n private _onDragEnd = (item?: any, event?: MouseEvent): void => {\n const classNames = this._classNames;\n if (event) {\n this._updateHeaderDragInfo(-1, event);\n }\n this._root.current!.classList.remove(classNames.borderWhileDragging);\n this._root.current!.classList.remove(classNames.noBorderWhileDragging);\n };\n\n private _updateHeaderDragInfo = (itemIndex: number, event?: MouseEvent) => {\n /* eslint-disable deprecation/deprecation */\n if (this.props.setDraggedItemIndex) {\n this.props.setDraggedItemIndex(itemIndex);\n }\n /* eslint-enable deprecation/deprecation */\n if (this.props.updateDragInfo) {\n this.props.updateDragInfo({ itemIndex }, event);\n }\n };\n\n private _onColumnContextMenu = (ev: React.MouseEvent<HTMLElement>): void => {\n const { onColumnContextMenu, column } = this.props;\n if (column.onColumnContextMenu) {\n column.onColumnContextMenu(column, ev);\n ev.preventDefault();\n }\n if (onColumnContextMenu) {\n onColumnContextMenu(column, ev);\n ev.preventDefault();\n }\n };\n\n private _onRootMouseDown = (ev: MouseEvent): void => {\n const { isDraggable } = this.props;\n // Ignore anything except the primary button.\n if (isDraggable && ev.button === MOUSEDOWN_PRIMARY_BUTTON) {\n ev.stopPropagation();\n }\n };\n\n private _addDragDropHandling() {\n this._dragDropSubscription = this.props.dragDropHelper!.subscribe(\n this._root.current!,\n this._events,\n this._getColumnDragDropOptions(),\n );\n\n // We need to use native on this to prevent MarqueeSelection from handling the event before us.\n this._events.on(this._root.current, 'mousedown', this._onRootMouseDown);\n }\n}\n","import { IDetailsColumnStyleProps, IDetailsColumnStyles } from './DetailsColumn.types';\nimport { getFocusStyle, getGlobalClassNames, hiddenContentStyle, IStyle, FontWeights } from '../../Styling';\nimport { DEFAULT_CELL_STYLE_PROPS } from './DetailsRow.styles';\nimport { getCellStyles } from './DetailsHeader.styles';\n\nconst GlobalClassNames = {\n isActionable: 'is-actionable',\n cellIsCheck: 'ms-DetailsHeader-cellIsCheck',\n collapseButton: 'ms-DetailsHeader-collapseButton',\n isCollapsed: 'is-collapsed',\n isAllSelected: 'is-allSelected',\n isSelectAllHidden: 'is-selectAllHidden',\n isResizingColumn: 'is-resizingColumn',\n isEmpty: 'is-empty',\n isIconVisible: 'is-icon-visible',\n cellSizer: 'ms-DetailsHeader-cellSizer',\n isResizing: 'is-resizing',\n dropHintCircleStyle: 'ms-DetailsHeader-dropHintCircleStyle',\n dropHintLineStyle: 'ms-DetailsHeader-dropHintLineStyle',\n cellTitle: 'ms-DetailsHeader-cellTitle',\n cellName: 'ms-DetailsHeader-cellName',\n filterChevron: 'ms-DetailsHeader-filterChevron',\n gripperBarVerticalStyle: 'ms-DetailsColumn-gripperBar',\n nearIcon: 'ms-DetailsColumn-nearIcon',\n};\n\nexport const getStyles = (props: IDetailsColumnStyleProps): IDetailsColumnStyles => {\n const {\n theme,\n headerClassName,\n iconClassName,\n isActionable,\n isEmpty,\n isIconVisible,\n isPadded,\n isIconOnly,\n cellStyleProps = DEFAULT_CELL_STYLE_PROPS,\n transitionDurationDrag,\n transitionDurationDrop,\n } = props;\n\n const { semanticColors, palette, fonts } = theme;\n const classNames = getGlobalClassNames(GlobalClassNames, theme);\n\n const colors = {\n iconForegroundColor: semanticColors.bodySubtext,\n headerForegroundColor: semanticColors.bodyText,\n headerBackgroundColor: semanticColors.bodyBackground,\n dropdownChevronForegroundColor: palette.neutralSecondary,\n resizerColor: palette.neutralTertiaryAlt,\n };\n\n const nearIconStyle: IStyle = {\n color: colors.iconForegroundColor,\n opacity: 1,\n paddingLeft: 8,\n };\n\n const borderWhileDragging: IStyle = {\n outline: `1px solid ${palette.themePrimary}`,\n };\n\n const borderAfterDragOrDrop: IStyle = {\n outlineColor: 'transparent',\n };\n\n return {\n root: [\n getCellStyles(props),\n fonts.small,\n isActionable && [\n classNames.isActionable,\n {\n selectors: {\n ':hover': {\n color: semanticColors.bodyText,\n background: semanticColors.listHeaderBackgroundHovered,\n },\n ':active': {\n background: semanticColors.listHeaderBackgroundPressed,\n },\n },\n },\n ],\n isEmpty && [\n classNames.isEmpty,\n {\n textOverflow: 'clip',\n },\n ],\n isIconVisible && classNames.isIconVisible,\n isPadded && {\n paddingRight: cellStyleProps.cellExtraRightPadding + cellStyleProps.cellRightPadding,\n },\n {\n selectors: {\n ':hover i[data-icon-name=\"GripperBarVertical\"]': {\n display: 'block',\n },\n },\n },\n headerClassName,\n ],\n\n gripperBarVerticalStyle: {\n display: 'none',\n position: 'absolute',\n textAlign: 'left',\n color: palette.neutralTertiary,\n left: 1,\n },\n\n nearIcon: [classNames.nearIcon, nearIconStyle],\n\n sortIcon: [\n nearIconStyle,\n {\n paddingLeft: 4,\n position: 'relative',\n top: 1,\n },\n ],\n\n iconClassName: [\n {\n color: colors.iconForegroundColor,\n opacity: 1,\n },\n iconClassName,\n ],\n\n filterChevron: [\n classNames.filterChevron,\n {\n color: colors.dropdownChevronForegroundColor,\n paddingLeft: 6,\n verticalAlign: 'middle',\n fontSize: fonts.small.fontSize,\n },\n ],\n\n cellTitle: [\n classNames.cellTitle,\n getFocusStyle(theme),\n {\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'flex-start',\n alignItems: 'stretch',\n boxSizing: 'border-box',\n overflow: 'hidden',\n padding: `0 ${cellStyleProps.cellRightPadding}px 0 ${cellStyleProps.cellLeftPadding}px`,\n ...(isIconOnly\n ? {\n alignContent: 'flex-end',\n maxHeight: '100%',\n flexWrap: 'wrap-reverse',\n }\n : {}),\n },\n ],\n\n cellName: [\n classNames.cellName,\n {\n flex: '0 1 auto',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n fontWeight: FontWeights.semibold,\n fontSize: fonts.medium.fontSize,\n },\n isIconOnly && {\n selectors: {\n [`.${classNames.nearIcon}`]: {\n paddingLeft: 0,\n },\n },\n },\n ],\n\n cellTooltip: {\n display: 'block',\n position: 'absolute',\n top: 0,\n left: 0,\n bottom: 0,\n right: 0,\n },\n\n accessibleLabel: hiddenContentStyle,\n\n borderWhileDragging: borderWhileDragging,\n\n noBorderWhileDragging: [borderAfterDragOrDrop, { transition: `outline ${transitionDurationDrag}ms ease` }],\n\n borderAfterDropping: borderWhileDragging,\n\n noBorderAfterDropping: [borderAfterDragOrDrop, { transition: `outline ${transitionDurationDrop}ms ease` }],\n };\n};\n","import * as React from 'react';\nimport { styled } from '../../Utilities';\nimport { IDetailsColumnProps, IDetailsColumnStyleProps, IDetailsColumnStyles } from './DetailsColumn.types';\nimport { DetailsColumnBase } from './DetailsColumn.base';\nimport { getStyles } from './DetailsColumn.styles';\n\nexport { IDetailsColumnProps };\n\nexport const DetailsColumn: React.FunctionComponent<IDetailsColumnProps> = styled<\n IDetailsColumnProps,\n IDetailsColumnStyleProps,\n IDetailsColumnStyles\n>(DetailsColumnBase, getStyles, undefined, { scope: 'DetailsColumn' });\n","import * as React from 'react';\r\nimport { IProcessedStyleSet } from '../../Styling';\r\nimport {\r\n initializeComponentRef,\r\n EventGroup,\r\n IDisposable,\r\n css,\r\n getRTL,\r\n getId,\r\n KeyCodes,\r\n classNamesFunction,\r\n} from '../../Utilities';\r\nimport {\r\n IColumn,\r\n IDetailsHeaderBaseProps,\r\n IColumnDragDropDetails,\r\n ColumnDragEndLocation,\r\n CheckboxVisibility,\r\n} from './DetailsList.types';\r\nimport { IFocusZone, FocusZone, FocusZoneDirection } from '../../FocusZone';\r\nimport { Icon, FontIcon } from '../../Icon';\r\nimport { Layer } from '../../Layer';\r\nimport { GroupSpacer } from '../GroupedList/GroupSpacer';\r\nimport { CollapseAllVisibility } from '../../GroupedList';\r\nimport { DetailsRowCheck } from './DetailsRowCheck';\r\nimport { ITooltipHostProps } from '../../Tooltip';\r\nimport { ISelection, SelectionMode, SELECTION_CHANGE } from '../../utilities/selection/interfaces';\r\nimport { IDragDropOptions, DragDropHelper } from '../../utilities/dragdrop/index';\r\nimport { DetailsColumn, IDetailsColumnProps } from '../../components/DetailsList/DetailsColumn';\r\nimport {\r\n SelectAllVisibility,\r\n IDropHintDetails,\r\n IColumnReorderHeaderProps,\r\n IDetailsHeaderState,\r\n} from './DetailsHeader.types';\r\nimport { IDetailsHeaderStyleProps, IDetailsHeaderStyles, IDetailsHeader } from './DetailsHeader.types';\r\n\r\nconst getClassNames = classNamesFunction<IDetailsHeaderStyleProps, IDetailsHeaderStyles>();\r\n\r\nconst MOUSEDOWN_PRIMARY_BUTTON = 0; // for mouse down event we are using ev.button property, 0 means left button\r\nconst MOUSEMOVE_PRIMARY_BUTTON = 1; // for mouse move event we are using ev.buttons property, 1 means left button\r\n\r\nconst NO_COLUMNS: IColumn[] = [];\r\n\r\nexport class DetailsHeaderBase extends React.Component<IDetailsHeaderBaseProps, IDetailsHeaderState>\r\n implements IDetailsHeader {\r\n public static defaultProps = {\r\n selectAllVisibility: SelectAllVisibility.visible,\r\n collapseAllVisibility: CollapseAllVisibility.visible,\r\n useFastIcons: true,\r\n };\r\n\r\n private _classNames: IProcessedStyleSet<IDetailsHeaderStyles>;\r\n private _rootElement = React.createRef<HTMLElement>();\r\n private _events: EventGroup;\r\n private _rootComponent = React.createRef<IFocusZone>();\r\n private _id: string;\r\n private _draggedColumnIndex = -1;\r\n private _dropHintDetails: { [key: number]: IDropHintDetails } = {};\r\n private _dragDropHelper: DragDropHelper;\r\n private _currentDropHintIndex: number;\r\n private _subscriptionObject: IDisposable;\r\n private _onDropIndexInfo: {\r\n sourceIndex: number;\r\n targetIndex: number;\r\n };\r\n\r\n constructor(props: IDetailsHeaderBaseProps) {\r\n super(props);\r\n\r\n initializeComponentRef(this);\r\n this._events = new EventGroup(this);\r\n\r\n this.state = {\r\n columnResizeDetails: undefined,\r\n isAllCollapsed: this.props.isAllCollapsed,\r\n isAllSelected: !!this.props.selection && this.props.selection.isAllSelected(),\r\n };\r\n\r\n this._onDropIndexInfo = {\r\n sourceIndex: -1,\r\n targetIndex: -1,\r\n };\r\n this._id = getId('header');\r\n this._currentDropHintIndex = -1;\r\n\r\n // The drag drop handler won't do any work until subscribe() is called,\r\n // so always set it up for convenience\r\n this._dragDropHelper = new DragDropHelper({\r\n selection: {\r\n getSelection: () => {\r\n return;\r\n },\r\n } as ISelection,\r\n minimumPixelsForDrag: this.props.minimumPixelsForDrag,\r\n });\r\n }\r\n\r\n public componentDidMount(): void {\r\n const { selection } = this.props;\r\n\r\n this._events.on(selection, SELECTION_CHANGE, this._onSelectionChanged);\r\n\r\n // this._rootElement.current will be null in tests using react-test-renderer\r\n if (this._rootElement.current) {\r\n // We need to use native on this to prevent MarqueeSelection from handling the event before us.\r\n this._events.on(this._rootElement.current, 'mousedown', this._onRootMouseDown);\r\n\r\n this._events.on(this._rootElement.current, 'keydown', this._onRootKeyDown);\r\n\r\n if (this._getColumnReorderProps()) {\r\n this._subscriptionObject = this._dragDropHelper.subscribe(\r\n this._rootElement.current,\r\n this._events,\r\n this._getHeaderDragDropOptions(),\r\n );\r\n }\r\n }\r\n }\r\n\r\n public componentDidUpdate(prevProps: IDetailsHeaderBaseProps): void {\r\n if (this._getColumnReorderProps()) {\r\n if (!this._subscriptionObject && this._rootElement.current) {\r\n this._subscriptionObject = this._dragDropHelper.subscribe(\r\n this._rootElement.current,\r\n this._events,\r\n this._getHeaderDragDropOptions(),\r\n );\r\n }\r\n } else if (this._subscriptionObject) {\r\n this._subscriptionObject.dispose();\r\n delete this._subscriptionObject;\r\n }\r\n\r\n if (this.props !== prevProps && this._onDropIndexInfo.sourceIndex >= 0 && this._onDropIndexInfo.targetIndex >= 0) {\r\n const { columns: previousColumns = NO_COLUMNS } = prevProps;\r\n const { columns = NO_COLUMNS } = this.props;\r\n if (previousColumns[this._onDropIndexInfo.sourceIndex].key === columns[this._onDropIndexInfo.targetIndex].key) {\r\n this._onDropIndexInfo = {\r\n sourceIndex: -1,\r\n targetIndex: -1,\r\n };\r\n }\r\n }\r\n\r\n if (this.props.isAllCollapsed !== prevProps.isAllCollapsed) {\r\n this.setState({ isAllCollapsed: this.props.isAllCollapsed });\r\n }\r\n }\r\n\r\n public componentWillUnmount(): void {\r\n if (this._subscriptionObject) {\r\n this._subscriptionObject.dispose();\r\n delete this._subscriptionObject;\r\n }\r\n\r\n this._dragDropHelper.dispose();\r\n\r\n this._events.dispose();\r\n }\r\n\r\n public render(): JSX.Element {\r\n const {\r\n columns = NO_COLUMNS,\r\n ariaLabel,\r\n ariaLabelForToggleAllGroupsButton,\r\n ariaLabelForSelectAllCheckbox,\r\n selectAllVisibility,\r\n ariaLabelForSelectionColumn,\r\n indentWidth,\r\n onColumnClick,\r\n onColumnContextMenu,\r\n onRenderColumnHeaderTooltip = this._onRenderColumnHeaderTooltip,\r\n styles,\r\n selectionMode,\r\n theme,\r\n onRenderDetailsCheckbox,\r\n groupNestingDepth,\r\n useFastIcons,\r\n checkboxVisibility,\r\n className,\r\n } = this.props;\r\n const { isAllSelected, columnResizeDetails, isSizing, isAllCollapsed } = this.state;\r\n const showCheckbox = selectAllVisibility !== SelectAllVisibility.none;\r\n const isCheckboxHidden = selectAllVisibility === SelectAllVisibility.hidden;\r\n const isCheckboxAlwaysVisible = checkboxVisibility === CheckboxVisibility.always;\r\n\r\n const columnReorderProps = this._getColumnReorderProps();\r\n const frozenColumnCountFromStart =\r\n columnReorderProps && columnReorderProps.frozenColumnCountFromStart\r\n ? columnReorderProps.frozenColumnCountFromStart\r\n : 0;\r\n const frozenColumnCountFromEnd =\r\n columnReorderProps && columnReorderProps.frozenColumnCountFromEnd\r\n ? columnReorderProps.frozenColumnCountFromEnd\r\n : 0;\r\n\r\n this._classNames = getClassNames(styles, {\r\n theme: theme!,\r\n isAllSelected,\r\n isSelectAllHidden: selectAllVisibility === SelectAllVisibility.hidden,\r\n isResizingColumn: !!columnResizeDetails && isSizing,\r\n isSizing,\r\n isAllCollapsed,\r\n isCheckboxHidden,\r\n className,\r\n });\r\n\r\n const classNames = this._classNames;\r\n const IconComponent = useFastIcons ? FontIcon : Icon;\r\n\r\n const isRTL = getRTL(theme);\r\n return (\r\n <FocusZone\r\n role=\"row\"\r\n aria-label={ariaLabel}\r\n className={classNames.root}\r\n componentRef={this._rootComponent}\r\n elementRef={this._rootElement}\r\n onMouseMove={this._onRootMouseMove}\r\n data-automationid=\"DetailsHeader\"\r\n direction={FocusZoneDirection.horizontal}\r\n >\r\n {showCheckbox\r\n ? [\r\n <div\r\n key=\"__checkbox\"\r\n className={classNames.cellIsCheck}\r\n aria-labelledby={`${this._id}-check`}\r\n onClick={!isCheckboxHidden ? this._onSelectAllClicked : undefined}\r\n aria-colindex={1}\r\n role={'columnheader'}\r\n >\r\n {onRenderColumnHeaderTooltip(\r\n {\r\n hostClassName: classNames.checkTooltip,\r\n id: `${this._id}-checkTooltip`,\r\n setAriaDescribedBy: false,\r\n content: ariaLabelForSelectAllCheckbox,\r\n children: (\r\n <DetailsRowCheck\r\n id={`${this._id}-check`}\r\n aria-label={\r\n selectionMode === SelectionMode.multiple\r\n ? ariaLabelForSelectAllCheckbox\r\n : ariaLabelForSelectionColumn\r\n }\r\n data-is-focusable={!isCheckboxHidden || undefined}\r\n isHeader={true}\r\n selected={isAllSelected}\r\n anySelected={false}\r\n canSelect={!isCheckboxHidden}\r\n className={classNames.check}\r\n onRenderDetailsCheckbox={onRenderDetailsCheckbox}\r\n useFastIcons={useFastIcons}\r\n isVisible={isCheckboxAlwaysVisible}\r\n />\r\n ),\r\n },\r\n this._onRenderColumnHeaderTooltip,\r\n )}\r\n </div>,\r\n !this.props.onRenderColumnHeaderTooltip ? (\r\n ariaLabelForSelectAllCheckbox && !isCheckboxHidden ? (\r\n <label\r\n key=\"__checkboxLabel\"\r\n id={`${this._id}-checkTooltip`}\r\n className={classNames.accessibleLabel}\r\n aria-hidden={true}\r\n >\r\n {ariaLabelForSelectAllCheckbox}\r\n </label>\r\n ) : ariaLabelForSelectionColumn && isCheckboxHidden ? (\r\n <label\r\n key=\"__checkboxLabel\"\r\n id={`${this._id}-checkTooltip`}\r\n className={classNames.accessibleLabel}\r\n aria-hidden={true}\r\n >\r\n {ariaLabelForSelectionColumn}\r\n </label>\r\n ) : null\r\n ) : null,\r\n ]\r\n : null}\r\n {groupNestingDepth! > 0 && this.props.collapseAllVisibility === CollapseAllVisibility.visible ? (\r\n <div\r\n className={classNames.cellIsGroupExpander}\r\n onClick={this._onToggleCollapseAll}\r\n data-is-focusable={true}\r\n aria-label={ariaLabelForToggleAllGroupsButton}\r\n aria-expanded={!isAllCollapsed}\r\n role=\"columnheader\"\r\n >\r\n <IconComponent\r\n className={classNames.collapseButton}\r\n iconName={isRTL ? 'ChevronLeftMed' : 'ChevronRightMed'}\r\n />\r\n </div>\r\n ) : null}\r\n <GroupSpacer indentWidth={indentWidth} role=\"gridcell\" count={groupNestingDepth! - 1} />\r\n {columns.map((column: IColumn, columnIndex: number) => {\r\n const _isDraggable = columnReorderProps\r\n ? columnIndex >= frozenColumnCountFromStart && columnIndex < columns.length - frozenColumnCountFromEnd\r\n : false;\r\n return [\r\n columnReorderProps &&\r\n (_isDraggable || columnIndex === columns.length - frozenColumnCountFromEnd) &&\r\n this._renderDropHint(columnIndex),\r\n <DetailsColumn\r\n column={column}\r\n styles={column.styles}\r\n key={column.key}\r\n columnIndex={(showCheckbox ? 2 : 1) + columnIndex}\r\n parentId={this._id}\r\n isDraggable={_isDraggable}\r\n updateDragInfo={this._updateDragInfo}\r\n dragDropHelper={this._dragDropHelper}\r\n onColumnClick={onColumnClick}\r\n onColumnContextMenu={onColumnContextMenu}\r\n // Do not render tooltips by default, but allow for override via props.\r\n onRenderColumnHeaderTooltip={this.props.onRenderColumnHeaderTooltip}\r\n isDropped={this._onDropIndexInfo.targetIndex === columnIndex}\r\n cellStyleProps={this.props.cellStyleProps}\r\n useFastIcons={useFastIcons}\r\n />,\r\n this._renderColumnDivider(columnIndex),\r\n ];\r\n })}\r\n {columnReorderProps && frozenColumnCountFromEnd === 0 && this._renderDropHint(columns.length)}\r\n {isSizing && (\r\n <Layer>\r\n <div\r\n className={classNames.sizingOverlay}\r\n onMouseMove={this._onSizerMouseMove}\r\n onMouseUp={this._onSizerMouseUp}\r\n />\r\n </Layer>\r\n )}\r\n </FocusZone>\r\n );\r\n }\r\n\r\n /** Set focus to the active thing in the focus area. */\r\n public focus(): boolean {\r\n return !!this._rootComponent.current?.focus();\r\n }\r\n\r\n /**\r\n * Gets column reorder props from this.props. If the calling code is part of setting up or\r\n * handling drag/drop events, it's safe to assume that this method's return value is defined\r\n * (because drag/drop handling will only be set up if reorder props are given).\r\n */\r\n private _getColumnReorderProps(): IColumnReorderHeaderProps | undefined {\r\n const { columnReorderOptions, columnReorderProps } = this.props;\r\n return columnReorderProps || (columnReorderOptions && { ...columnReorderOptions, onColumnDragEnd: undefined });\r\n }\r\n\r\n private _getHeaderDragDropOptions(): IDragDropOptions {\r\n const options = {\r\n selectionIndex: 1,\r\n context: { data: this, index: 0 },\r\n canDrag: () => false,\r\n canDrop: () => true,\r\n onDragStart: () => undefined,\r\n updateDropState: this._updateDroppingState,\r\n onDrop: this._onDrop,\r\n onDragEnd: () => undefined,\r\n onDragOver: this._onDragOver,\r\n };\r\n return options;\r\n }\r\n\r\n private _updateDroppingState = (newValue: boolean, event: DragEvent): void => {\r\n if (this._draggedColumnIndex >= 0 && event.type !== 'drop' && !newValue) {\r\n this._resetDropHints();\r\n }\r\n };\r\n\r\n private _isValidCurrentDropHintIndex() {\r\n return this._currentDropHintIndex >= 0;\r\n }\r\n\r\n private _onDragOver = (item: any, event: DragEvent): void => {\r\n if (this._draggedColumnIndex >= 0) {\r\n event.stopPropagation();\r\n this._computeDropHintToBeShown(event.clientX);\r\n }\r\n };\r\n\r\n private _onDrop = (item?: any, event?: DragEvent): void => {\r\n // Safe to assume this is defined since we're handling a drop event\r\n const columnReorderProps = this._getColumnReorderProps()!;\r\n\r\n // Target index will not get changed if draggeditem is after target item.\r\n if (this._draggedColumnIndex >= 0 && event) {\r\n const targetIndex =\r\n this._draggedColumnIndex > this._currentDropHintIndex\r\n ? this._currentDropHintIndex\r\n : this._currentDropHintIndex - 1;\r\n const isValidDrop = this._isValidCurrentDropHintIndex();\r\n event.stopPropagation();\r\n if (isValidDrop) {\r\n this._onDropIndexInfo.sourceIndex = this._draggedColumnIndex;\r\n this._onDropIndexInfo.targetIndex = targetIndex;\r\n\r\n if (columnReorderProps.onColumnDrop) {\r\n const dragDropDetails: IColumnDragDropDetails = {\r\n draggedIndex: this._draggedColumnIndex,\r\n targetIndex: targetIndex,\r\n };\r\n columnReorderProps.onColumnDrop(dragDropDetails);\r\n /* eslint-disable deprecation/deprecation */\r\n } else if (columnReorderProps.handleColumnReorder) {\r\n columnReorderProps.handleColumnReorder(this._draggedColumnIndex, targetIndex);\r\n /* eslint-enable deprecation/deprecation */\r\n }\r\n }\r\n }\r\n\r\n this._resetDropHints();\r\n this._dropHintDetails = {};\r\n this._draggedColumnIndex = -1;\r\n };\r\n\r\n /**\r\n * @returns whether or not the \"Select All\" checkbox column is hidden.\r\n */\r\n private _isCheckboxColumnHidden(): boolean {\r\n const { selectionMode, checkboxVisibility } = this.props;\r\n\r\n return selectionMode === SelectionMode.none || checkboxVisibility === CheckboxVisibility.hidden;\r\n }\r\n\r\n private _updateDragInfo = (props: { itemIndex: number }, event?: MouseEvent) => {\r\n // Safe to assume this is defined since we're handling a drag event\r\n const columnReorderProps = this._getColumnReorderProps()!;\r\n const itemIndex = props.itemIndex;\r\n if (itemIndex >= 0) {\r\n // Column index is set based on the checkbox\r\n this._draggedColumnIndex = this._isCheckboxColumnHidden() ? itemIndex - 1 : itemIndex - 2;\r\n this._getDropHintPositions();\r\n if (columnReorderProps.onColumnDragStart) {\r\n columnReorderProps.onColumnDragStart(true);\r\n }\r\n } else if (event && this._draggedColumnIndex >= 0) {\r\n this._resetDropHints();\r\n this._draggedColumnIndex = -1;\r\n this._dropHintDetails = {};\r\n if (columnReorderProps.onColumnDragEnd) {\r\n const columnDragEndLocation = this._isEventOnHeader(event);\r\n columnReorderProps.onColumnDragEnd({ dropLocation: columnDragEndLocation }, event);\r\n }\r\n }\r\n };\r\n\r\n private _resetDropHints(): void {\r\n if (this._currentDropHintIndex >= 0) {\r\n this._updateDropHintElement(this._dropHintDetails[this._currentDropHintIndex].dropHintElementRef, 'none');\r\n this._currentDropHintIndex = -1;\r\n }\r\n }\r\n\r\n private _updateDropHintElement(element: HTMLElement, displayProperty: string) {\r\n (element.childNodes[1] as HTMLElement).style.display = displayProperty;\r\n (element.childNodes[0] as HTMLElement).style.display = displayProperty;\r\n }\r\n\r\n private _getDropHintPositions = (): void => {\r\n const { columns = NO_COLUMNS } = this.props;\r\n // Safe to assume this is defined since we're handling a drag/drop event\r\n const columnReorderProps = this._getColumnReorderProps()!;\r\n let prevX = 0;\r\n let prevMid = 0;\r\n let prevRef: HTMLElement;\r\n const frozenColumnCountFromStart = columnReorderProps.frozenColumnCountFromStart || 0;\r\n const frozenColumnCountFromEnd = columnReorderProps.frozenColumnCountFromEnd || 0;\r\n\r\n for (let i = frozenColumnCountFromStart; i < columns.length - frozenColumnCountFromEnd + 1; i++) {\r\n if (this._rootElement.current) {\r\n const dropHintElement = this._rootElement.current.querySelectorAll('#columnDropHint_' + i)[0] as HTMLElement;\r\n if (dropHintElement) {\r\n if (i === frozenColumnCountFromStart) {\r\n prevX = dropHintElement.offsetLeft;\r\n prevMid = dropHintElement.offsetLeft;\r\n prevRef = dropHintElement;\r\n } else {\r\n const newMid = (dropHintElement.offsetLeft + prevX!) / 2;\r\n this._dropHintDetails[i - 1] = {\r\n originX: prevX,\r\n startX: prevMid!,\r\n endX: newMid,\r\n dropHintElementRef: prevRef!,\r\n };\r\n prevMid = newMid;\r\n prevRef = dropHintElement;\r\n prevX = dropHintElement.offsetLeft;\r\n if (i === columns.length - frozenColumnCountFromEnd) {\r\n this._dropHintDetails[i] = {\r\n originX: prevX,\r\n startX: prevMid!,\r\n endX: dropHintElement.offsetLeft,\r\n dropHintElementRef: prevRef,\r\n };\r\n }\r\n }\r\n }\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * Based on the given cursor position, finds the nearest drop hint and updates the state to make it visible\r\n */\r\n private _computeDropHintToBeShown = (clientX: number): void => {\r\n const isRtl = getRTL(this.props.theme);\r\n if (this._rootElement.current) {\r\n const clientRect = this._rootElement.current.getBoundingClientRect();\r\n const headerOriginX = clientRect.left;\r\n const eventXRelativePosition = clientX - headerOriginX;\r\n const currentDropHintIndex = this._currentDropHintIndex;\r\n if (this._isValidCurrentDropHintIndex()) {\r\n if (\r\n _liesBetween(\r\n isRtl,\r\n eventXRelativePosition,\r\n this._dropHintDetails[currentDropHintIndex!].startX,\r\n this._dropHintDetails[currentDropHintIndex!].endX,\r\n )\r\n ) {\r\n return;\r\n }\r\n }\r\n const { columns = NO_COLUMNS } = this.props;\r\n // Safe to assume this is defined since we're handling a drag/drop event\r\n const columnReorderProps = this._getColumnReorderProps()!;\r\n const frozenColumnCountFromStart = columnReorderProps.frozenColumnCountFromStart || 0;\r\n const frozenColumnCountFromEnd = columnReorderProps.frozenColumnCountFromEnd || 0;\r\n\r\n const currentIndex: number = frozenColumnCountFromStart;\r\n const lastValidColumn = columns.length - frozenColumnCountFromEnd;\r\n let indexToUpdate = -1;\r\n if (_isBefore(isRtl, eventXRelativePosition, this._dropHintDetails[currentIndex].endX)) {\r\n indexToUpdate = currentIndex;\r\n } else if (_isAfter(isRtl, eventXRelativePosition, this._dropHintDetails[lastValidColumn].startX)) {\r\n indexToUpdate = lastValidColumn;\r\n } else if (this._isValidCurrentDropHintIndex()) {\r\n if (\r\n this._dropHintDetails[currentDropHintIndex! + 1] &&\r\n _liesBetween(\r\n isRtl,\r\n eventXRelativePosition,\r\n this._dropHintDetails[currentDropHintIndex! + 1].startX,\r\n this._dropHintDetails[currentDropHintIndex! + 1].endX,\r\n )\r\n ) {\r\n indexToUpdate = currentDropHintIndex! + 1;\r\n } else if (\r\n this._dropHintDetails[currentDropHintIndex! - 1] &&\r\n _liesBetween(\r\n isRtl,\r\n eventXRelativePosition,\r\n this._dropHintDetails[currentDropHintIndex! - 1].startX,\r\n this._dropHintDetails[currentDropHintIndex! - 1].endX,\r\n )\r\n ) {\r\n indexToUpdate = currentDropHintIndex! - 1;\r\n }\r\n }\r\n if (indexToUpdate === -1) {\r\n let startIndex = frozenColumnCountFromStart;\r\n let endIndex = lastValidColumn;\r\n while (startIndex < endIndex) {\r\n const middleIndex = Math.ceil((endIndex + startIndex!) / 2);\r\n if (\r\n _liesBetween(\r\n isRtl,\r\n eventXRelativePosition,\r\n this._dropHintDetails[middleIndex].startX,\r\n this._dropHintDetails[middleIndex].endX,\r\n )\r\n ) {\r\n indexToUpdate = middleIndex;\r\n break;\r\n } else if (_isBefore(isRtl, eventXRelativePosition, this._dropHintDetails[middleIndex].originX)) {\r\n endIndex = middleIndex;\r\n } else if (_isAfter(isRtl, eventXRelativePosition, this._dropHintDetails[middleIndex].originX)) {\r\n startIndex = middleIndex;\r\n }\r\n }\r\n }\r\n\r\n if (indexToUpdate === this._draggedColumnIndex || indexToUpdate === this._draggedColumnIndex + 1) {\r\n if (this._isValidCurrentDropHintIndex()) {\r\n this._resetDropHints();\r\n }\r\n } else if (currentDropHintIndex !== indexToUpdate && indexToUpdate >= 0) {\r\n this._resetDropHints();\r\n this._updateDropHintElement(this._dropHintDetails[indexToUpdate].dropHintElementRef, 'inline-block');\r\n this._currentDropHintIndex = indexToUpdate;\r\n }\r\n }\r\n };\r\n\r\n private _isEventOnHeader(event: MouseEvent): ColumnDragEndLocation | undefined {\r\n if (this._rootElement.current) {\r\n const clientRect = this._rootElement.current.getBoundingClientRect();\r\n if (\r\n event.clientX > clientRect.left &&\r\n event.clientX < clientRect.right &&\r\n event.clientY > clientRect.top &&\r\n event.clientY < clientRect.bottom\r\n ) {\r\n return ColumnDragEndLocation.header;\r\n }\r\n }\r\n }\r\n\r\n private _renderColumnSizer = ({ columnIndex }: IDetailsColumnProps): JSX.Element | null => {\r\n const { columns = NO_COLUMNS } = this.props;\r\n const column = columns[columnIndex];\r\n const { columnResizeDetails } = this.state;\r\n const classNames = this._classNames;\r\n\r\n return column.isResizable ? (\r\n <div\r\n key={`${column.key}_sizer`}\r\n aria-hidden={true}\r\n role=\"button\"\r\n data-is-focusable={false}\r\n onClick={_stopPropagation}\r\n data-sizer-index={columnIndex}\r\n onBlur={this._onSizerBlur}\r\n className={css(\r\n classNames.cellSizer,\r\n columnIndex < columns.length - 1 ? classNames.cellSizerStart : classNames.cellSizerEnd,\r\n {\r\n [classNames.cellIsResizing]: columnResizeDetails && columnResizeDetails.columnIndex === columnIndex,\r\n },\r\n )}\r\n onDoubleClick={this._onSizerDoubleClick.bind(this, columnIndex)}\r\n />\r\n ) : null;\r\n };\r\n\r\n private _renderColumnDivider(columnIndex: number): JSX.Element | null {\r\n const { columns = NO_COLUMNS } = this.props;\r\n const column = columns[columnIndex];\r\n const { onRenderDivider } = column;\r\n return onRenderDivider\r\n ? onRenderDivider({ column, columnIndex }, this._renderColumnSizer)\r\n : this._renderColumnSizer({ column, columnIndex });\r\n }\r\n\r\n private _renderDropHint(dropHintIndex: number): JSX.Element {\r\n const classNames = this._classNames;\r\n const IconComponent = this.props.useFastIcons ? FontIcon : Icon;\r\n return (\r\n <div key={'dropHintKey'} className={classNames.dropHintStyle} id={`columnDropHint_${dropHintIndex}`}>\r\n <div\r\n role=\"presentation\"\r\n key={`dropHintCircleKey`}\r\n className={classNames.dropHintCaretStyle}\r\n data-is-focusable={false}\r\n data-sizer-index={dropHintIndex}\r\n aria-hidden={true}\r\n >\r\n <IconComponent iconName={'CircleShapeSolid'} />\r\n </div>\r\n <div\r\n key={`dropHintLineKey`}\r\n aria-hidden={true}\r\n data-is-focusable={false}\r\n data-sizer-index={dropHintIndex}\r\n className={classNames.dropHintLineStyle}\r\n />\r\n </div>\r\n );\r\n }\r\n\r\n private _onRenderColumnHeaderTooltip = (tooltipHostProps: ITooltipHostProps): JSX.Element => {\r\n return <span className={tooltipHostProps.hostClassName}>{tooltipHostProps.children}</span>;\r\n };\r\n\r\n /**\r\n * double click on the column sizer will auto ajust column width\r\n * to fit the longest content among current rendered rows.\r\n *\r\n * @param columnIndex - index of the column user double clicked\r\n * @param ev - mouse double click event\r\n */\r\n private _onSizerDoubleClick(columnIndex: number, ev: React.MouseEvent<HTMLElement>): void {\r\n const { onColumnAutoResized, columns = NO_COLUMNS } = this.props;\r\n if (onColumnAutoResized) {\r\n onColumnAutoResized(columns[columnIndex], columnIndex);\r\n }\r\n }\r\n\r\n /**\r\n * Called when the select all toggle is clicked.\r\n */\r\n private _onSelectAllClicked = (): void => {\r\n const { selection } = this.props;\r\n\r\n if (selection) {\r\n selection.toggleAllSelected();\r\n }\r\n };\r\n\r\n private _onRootMouseDown = (ev: MouseEvent): void => {\r\n const columnIndexAttr = (ev.target as HTMLElement).getAttribute('data-sizer-index');\r\n const columnIndex = Number(columnIndexAttr);\r\n const { columns = NO_COLUMNS } = this.props;\r\n\r\n if (columnIndexAttr === null || ev.button !== MOUSEDOWN_PRIMARY_BUTTON) {\r\n // Ignore anything except the primary button.\r\n return;\r\n }\r\n\r\n this.setState({\r\n columnResizeDetails: {\r\n columnIndex: columnIndex,\r\n columnMinWidth: columns[columnIndex].calculatedWidth!,\r\n originX: ev.clientX,\r\n },\r\n });\r\n\r\n ev.preventDefault();\r\n ev.stopPropagation();\r\n };\r\n\r\n private _onRootMouseMove = (ev: React.MouseEvent<HTMLElement>): void => {\r\n const { columnResizeDetails, isSizing } = this.state;\r\n\r\n if (columnResizeDetails && !isSizing && ev.clientX !== columnResizeDetails.originX) {\r\n this.setState({ isSizing: true });\r\n }\r\n };\r\n\r\n private _onRootKeyDown = (ev: KeyboardEvent): void => {\r\n const { columnResizeDetails, isSizing } = this.state;\r\n const { columns = NO_COLUMNS, onColumnResized } = this.props;\r\n\r\n const columnIndexAttr = (ev.target as HTMLElement).getAttribute('data-sizer-index');\r\n\r\n if (!columnIndexAttr || isSizing) {\r\n return;\r\n }\r\n\r\n const columnIndex = Number(columnIndexAttr);\r\n\r\n if (!columnResizeDetails) {\r\n // eslint-disable-next-line deprecation/deprecation\r\n if (ev.which === KeyCodes.enter) {\r\n this.setState({\r\n columnResizeDetails: {\r\n columnIndex: columnIndex,\r\n columnMinWidth: columns[columnIndex].calculatedWidth!,\r\n },\r\n });\r\n\r\n ev.preventDefault();\r\n ev.stopPropagation();\r\n }\r\n } else {\r\n let increment: number | undefined;\r\n\r\n // eslint-disable-next-line deprecation/deprecation\r\n if (ev.which === KeyCodes.enter) {\r\n this.setState({\r\n columnResizeDetails: undefined,\r\n });\r\n\r\n ev.preventDefault();\r\n ev.stopPropagation();\r\n // eslint-disable-next-line deprecation/deprecation\r\n } else if (ev.which === KeyCodes.left) {\r\n increment = getRTL(this.props.theme) ? 1 : -1;\r\n // eslint-disable-next-line deprecation/deprecation\r\n } else if (ev.which === KeyCodes.right) {\r\n increment = getRTL(this.props.theme) ? -1 : 1;\r\n }\r\n\r\n if (increment) {\r\n if (!ev.shiftKey) {\r\n increment *= 10;\r\n }\r\n\r\n this.setState({\r\n columnResizeDetails: {\r\n ...columnResizeDetails,\r\n columnMinWidth: columnResizeDetails.columnMinWidth + increment,\r\n },\r\n });\r\n\r\n if (onColumnResized) {\r\n onColumnResized(columns[columnIndex], columnResizeDetails.columnMinWidth + increment, columnIndex);\r\n }\r\n\r\n ev.preventDefault();\r\n ev.stopPropagation();\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * mouse move event handler in the header\r\n * it will set isSizing state to true when user clicked on the sizer and move the mouse.\r\n *\r\n * @param ev - mouse move event\r\n */\r\n private _onSizerMouseMove = (ev: React.MouseEvent<HTMLElement>): void => {\r\n const {\r\n // use buttons property here since ev.button in some edge case is not upding well during the move.\r\n // but firefox doesn't support it, so we set the default value when it is not defined.\r\n buttons,\r\n } = ev;\r\n const { onColumnIsSizingChanged, onColumnResized, columns = NO_COLUMNS } = this.props;\r\n const { columnResizeDetails } = this.state;\r\n\r\n if (buttons !== undefined && buttons !== MOUSEMOVE_PRIMARY_BUTTON) {\r\n // cancel mouse down event and return early when the primary button is not pressed\r\n this._onSizerMouseUp(ev);\r\n return;\r\n }\r\n\r\n if (ev.clientX !== columnResizeDetails!.originX) {\r\n if (onColumnIsSizingChanged) {\r\n onColumnIsSizingChanged(columns[columnResizeDetails!.columnIndex], true);\r\n }\r\n }\r\n\r\n if (onColumnResized) {\r\n let movement = ev.clientX - columnResizeDetails!.originX!;\r\n\r\n if (getRTL(this.props.theme)) {\r\n movement = -movement;\r\n }\r\n\r\n onColumnResized(\r\n columns[columnResizeDetails!.columnIndex],\r\n columnResizeDetails!.columnMinWidth + movement,\r\n columnResizeDetails!.columnIndex,\r\n );\r\n }\r\n };\r\n\r\n private _onSizerBlur = (ev: React.FocusEvent<HTMLElement>): void => {\r\n const { columnResizeDetails } = this.state;\r\n\r\n if (columnResizeDetails) {\r\n this.setState({\r\n columnResizeDetails: undefined,\r\n isSizing: false,\r\n });\r\n }\r\n };\r\n\r\n /**\r\n * mouse up event handler in the header\r\n * clear the resize related state.\r\n * This is to ensure we can catch double click event\r\n *\r\n * @param ev - mouse up event\r\n */\r\n private _onSizerMouseUp = (ev: React.MouseEvent<HTMLElement>): void => {\r\n const { columns = NO_COLUMNS, onColumnIsSizingChanged } = this.props;\r\n const { columnResizeDetails } = this.state;\r\n\r\n this.setState({\r\n columnResizeDetails: undefined,\r\n isSizing: false,\r\n });\r\n\r\n if (onColumnIsSizingChanged) {\r\n onColumnIsSizingChanged(columns[columnResizeDetails!.columnIndex], false);\r\n }\r\n };\r\n\r\n private _onSelectionChanged(): void {\r\n const isAllSelected = !!this.props.selection && this.props.selection.isAllSelected();\r\n\r\n if (this.state.isAllSelected !== isAllSelected) {\r\n this.setState({\r\n isAllSelected: isAllSelected,\r\n });\r\n }\r\n }\r\n\r\n private _onToggleCollapseAll = (): void => {\r\n const { onToggleCollapseAll } = this.props;\r\n const newCollapsed = !this.state.isAllCollapsed;\r\n this.setState({\r\n isAllCollapsed: newCollapsed,\r\n });\r\n if (onToggleCollapseAll) {\r\n onToggleCollapseAll(newCollapsed);\r\n }\r\n };\r\n}\r\n\r\nfunction _liesBetween(rtl: boolean, target: number, left: number, right: number): boolean {\r\n return rtl ? target <= left && target >= right : target >= left && target <= right;\r\n}\r\nfunction _isBefore(rtl: boolean, a: number, b: number): boolean {\r\n return rtl ? a >= b : a <= b;\r\n}\r\nfunction _isAfter(rtl: boolean, a: number, b: number): boolean {\r\n return rtl ? a <= b : a >= b;\r\n}\r\n\r\nfunction _stopPropagation(ev: React.MouseEvent<HTMLElement>): void {\r\n ev.stopPropagation();\r\n}\r\n","import * as React from 'react';\r\nimport { styled } from '../../Utilities';\r\nimport {\r\n IDetailsHeaderProps,\r\n IDetailsHeaderBaseProps,\r\n IDetailsHeaderStyleProps,\r\n IDetailsHeaderStyles,\r\n} from './DetailsHeader.types';\r\nimport { DetailsHeaderBase } from './DetailsHeader.base';\r\nimport { getStyles } from './DetailsHeader.styles';\r\n\r\nexport { IDetailsHeaderProps, IDetailsHeaderBaseProps };\r\n\r\nexport const DetailsHeader: React.FunctionComponent<IDetailsHeaderBaseProps> = styled<\r\n IDetailsHeaderBaseProps,\r\n IDetailsHeaderStyleProps,\r\n IDetailsHeaderStyles\r\n>(DetailsHeaderBase, getStyles, undefined, { scope: 'DetailsHeader' });\r\n","import { IRectangle } from '../IRectangle';\n/**\n * Helper to get bounding client rect. Passing in window will get the window size.\n *\n * @public\n */\nexport function getRect(element: HTMLElement | Window | null): IRectangle | undefined {\n let rect: IRectangle | undefined;\n if (element) {\n if (element === window) {\n rect = {\n left: 0,\n top: 0,\n width: window.innerWidth,\n height: window.innerHeight,\n right: window.innerWidth,\n bottom: window.innerHeight,\n };\n } else if ((element as HTMLElement).getBoundingClientRect) {\n rect = (element as HTMLElement).getBoundingClientRect();\n }\n }\n return rect;\n}\n","import * as React from 'react';\nimport { BaseDecorator } from './BaseDecorator';\nimport { findScrollableParent, getRect, getWindow, Async, EventGroup } from '../../Utilities';\n\n/**\n * Viewport rectangle dimensions.\n *\n * {@docCategory DetailsList}\n */\nexport interface IViewport {\n /**\n * Width in pixels.\n */\n width: number;\n /**\n * Height in pixels.\n */\n height: number;\n}\n\nexport interface IWithViewportState {\n viewport?: IViewport;\n}\n\n/**\n * Props interface for the withViewport component.\n *\n * {@docCategory DetailsList}\n */\nexport interface IWithViewportProps {\n /**\n * Whether or not `withViewport` should disable its viewport measurements, effectively making this decorator\n * pass-through with no impact on the rendered component.\n *\n * Since `withViewport` measures the `viewport` on mount, after each React update, and in response to events,\n * it may cause a component which does not currently need this information due to its configuration to re-render\n * too often. `skipViewportMeasures` may be toggled on and off based on current state, and will suspend and resume\n * measurement as-needed.\n *\n * For example, when this wraps `DetailsList`, set `skipViewportMeasures` to `true` when the `layoutMode` is\n * `fixedColumns`, since the `DetailsList` does not use the viewport size in any calculations.\n *\n * In addition, consider setting `skipViewportMeasures` to `true` when running within a React test renderer, to avoid\n * direct DOM dependencies.\n */\n\n skipViewportMeasures?: boolean;\n /**\n * Whether or not to explicitly disable usage of the `ResizeObserver` in favor of a `'resize'` event on `window`,\n * even if the browser supports `ResizeObserver`. This may be necessary if use of `ResizeObserver` results in too\n * many re-renders of the wrapped component due to the frequency at which events are fired.\n *\n * This has no impact if `skipViewportMeasures` is `true`, as no viewport measurement strategy is used.\n */\n disableResizeObserver?: boolean;\n\n /**\n * Whether or not `withViewport` will delay before first measuring the viewport size.\n * Setting this will delay measurement by the same amount as the debounce for resizing the window.\n * This is useful for giving the child of the viewport time to render before measuring.\n *\n * This is an opt-in setting as existing systems have a dependency on immediate measurement for performance.\n * @default false\n */\n delayFirstMeasure?: boolean;\n}\n\nconst RESIZE_DELAY = 500;\nconst MAX_RESIZE_ATTEMPTS = 3;\n\n/**\n * A decorator to update decorated component on viewport or window resize events.\n *\n * @param ComposedComponent - decorated React component reference.\n */\nexport function withViewport<TProps extends { viewport?: IViewport }, TState>(\n ComposedComponent: new (props: TProps, ...args: any[]) => React.Component<TProps, TState>,\n): any {\n return class WithViewportComponent extends BaseDecorator<TProps, IWithViewportState> {\n private _root = React.createRef<HTMLDivElement>();\n private _resizeAttempts: number;\n private _viewportResizeObserver: any;\n private _async: Async;\n private _events: EventGroup;\n\n constructor(props: TProps) {\n super(props);\n\n this._async = new Async(this);\n this._events = new EventGroup(this);\n this._resizeAttempts = 0;\n\n this.state = {\n viewport: {\n width: 0,\n height: 0,\n },\n };\n }\n\n public componentDidMount(): void {\n const { delayFirstMeasure, disableResizeObserver, skipViewportMeasures } = this.props as IWithViewportProps;\n const win = getWindow(this._root.current);\n\n this._onAsyncResize = this._async.debounce(this._onAsyncResize, RESIZE_DELAY, {\n leading: false,\n });\n\n if (!skipViewportMeasures) {\n if (!disableResizeObserver && this._isResizeObserverAvailable()) {\n this._registerResizeObserver();\n } else {\n this._events.on(win, 'resize', this._onAsyncResize);\n }\n\n if (delayFirstMeasure) {\n this._async.setTimeout(() => {\n this._updateViewport();\n }, RESIZE_DELAY);\n } else {\n this._updateViewport();\n }\n }\n }\n\n public componentDidUpdate(previousProps: TProps) {\n const { skipViewportMeasures: previousSkipViewportMeasures } = previousProps as IWithViewportProps;\n const { disableResizeObserver, skipViewportMeasures } = this.props as IWithViewportProps;\n const win = getWindow(this._root.current);\n\n if (skipViewportMeasures !== previousSkipViewportMeasures) {\n if (!skipViewportMeasures) {\n if (!disableResizeObserver && this._isResizeObserverAvailable()) {\n if (!this._viewportResizeObserver) {\n this._registerResizeObserver();\n }\n } else {\n this._events.on(win, 'resize', this._onAsyncResize);\n }\n\n this._updateViewport();\n } else {\n this._unregisterResizeObserver();\n this._events.off(win, 'resize', this._onAsyncResize);\n }\n }\n }\n\n public componentWillUnmount(): void {\n this._events.dispose();\n this._async.dispose();\n this._unregisterResizeObserver();\n }\n\n public render(): JSX.Element {\n const { viewport } = this.state;\n const newViewport = viewport!.width > 0 && viewport!.height > 0 ? viewport : undefined;\n\n return (\n <div className=\"ms-Viewport\" ref={this._root} style={{ minWidth: 1, minHeight: 1 }}>\n <ComposedComponent ref={this._updateComposedComponentRef} viewport={newViewport} {...(this.props as any)} />\n </div>\n );\n }\n\n public forceUpdate(): void {\n this._updateViewport(true);\n }\n\n private _onAsyncResize(): void {\n this._updateViewport();\n }\n\n private _isResizeObserverAvailable(): boolean {\n const win = getWindow(this._root.current);\n\n return win && (win as any).ResizeObserver;\n }\n\n private _registerResizeObserver = () => {\n const win = getWindow(this._root.current);\n\n this._viewportResizeObserver = new (win as any).ResizeObserver(this._onAsyncResize);\n this._viewportResizeObserver.observe(this._root.current);\n };\n\n private _unregisterResizeObserver = () => {\n if (this._viewportResizeObserver) {\n this._viewportResizeObserver.disconnect();\n delete this._viewportResizeObserver;\n }\n };\n\n /* Note: using lambda here because decorators don't seem to work in decorators. */\n private _updateViewport = (withForceUpdate?: boolean) => {\n const { viewport } = this.state;\n const viewportElement = this._root.current;\n const scrollElement = findScrollableParent(viewportElement) as HTMLElement;\n const scrollRect = getRect(scrollElement);\n const clientRect = getRect(viewportElement);\n const updateComponent = () => {\n if (withForceUpdate && this._composedComponentInstance) {\n this._composedComponentInstance.forceUpdate();\n }\n };\n\n const isSizeChanged =\n (clientRect && clientRect.width) !== viewport!.width || (scrollRect && scrollRect.height) !== viewport!.height;\n\n if (isSizeChanged && this._resizeAttempts < MAX_RESIZE_ATTEMPTS && clientRect && scrollRect) {\n this._resizeAttempts++;\n this.setState(\n {\n viewport: {\n width: clientRect.width,\n height: scrollRect.height,\n },\n },\n () => {\n this._updateViewport(withForceUpdate);\n },\n );\n } else {\n this._resizeAttempts = 0;\n updateComponent();\n }\n };\n };\n}\n","import { IGroup } from '../../components/GroupedList/GroupedList.types';\r\n\r\n/**\r\n * Takes an array of groups and returns a count of the groups and all descendant groups.\r\n * @param groups - The array of groups to count.\r\n */\r\nexport const GetGroupCount = (groups: IGroup[] | undefined): number => {\r\n let total = 0;\r\n\r\n if (groups) {\r\n const remainingGroups = [...groups];\r\n let currentGroup: IGroup;\r\n\r\n while (remainingGroups && remainingGroups.length > 0) {\r\n ++total;\r\n\r\n currentGroup = remainingGroups.pop() as IGroup;\r\n\r\n if (currentGroup && currentGroup.children) {\r\n remainingGroups.push(...currentGroup.children);\r\n }\r\n }\r\n }\r\n\r\n return total;\r\n};\r\n","import * as React from 'react';\n\nimport {\n initializeComponentRef,\n FocusRects,\n Async,\n KeyCodes,\n elementContains,\n getRTLSafeKeyCode,\n IRenderFunction,\n classNamesFunction,\n memoizeFunction,\n getId,\n composeRenderFunction,\n composeComponentAs,\n} from '../../Utilities';\nimport {\n CheckboxVisibility,\n ColumnActionsMode,\n ConstrainMode,\n DetailsListLayoutMode,\n IColumn,\n IDetailsList,\n IDetailsListProps,\n IDetailsListStyles,\n IDetailsListStyleProps,\n ColumnDragEndLocation,\n} from '../DetailsList/DetailsList.types';\nimport { DetailsHeader } from '../DetailsList/DetailsHeader';\nimport {\n IDetailsHeader,\n SelectAllVisibility,\n IDetailsHeaderProps,\n IColumnReorderHeaderProps,\n} from '../DetailsList/DetailsHeader.types';\nimport { IDetailsFooterProps } from '../DetailsList/DetailsFooter.types';\nimport { DetailsRowBase } from '../DetailsList/DetailsRow.base';\nimport { DetailsRow } from '../DetailsList/DetailsRow';\nimport { IDetailsRowProps } from '../DetailsList/DetailsRow.types';\nimport { IFocusZone, FocusZone, FocusZoneDirection, IFocusZoneProps } from '../../FocusZone';\nimport { IObjectWithKey, ISelection, Selection, SelectionMode, SelectionZone } from '../../utilities/selection/index';\n\nimport { DragDropHelper } from '../../utilities/dragdrop/DragDropHelper';\nimport { IGroup, IGroupedList, GroupedList, IGroupDividerProps, IGroupRenderProps } from '../../GroupedList';\nimport { List, IListProps, ScrollToMode } from '../../List';\nimport { withViewport } from '../../utilities/decorators/withViewport';\nimport { GetGroupCount } from '../../utilities/groupedList/GroupedListUtility';\nimport { DEFAULT_CELL_STYLE_PROPS } from './DetailsRow.styles';\nimport { CHECK_CELL_WIDTH as CHECKBOX_WIDTH } from './DetailsRowCheck.styles';\n// For every group level there is a GroupSpacer added. Importing this const to have the source value in one place.\nimport { SPACER_WIDTH as GROUP_EXPAND_WIDTH } from '../GroupedList/GroupSpacer';\nimport { useConst } from '@uifabric/react-hooks';\n\nconst getClassNames = classNamesFunction<IDetailsListStyleProps, IDetailsListStyles>();\n\nexport interface IDetailsListState {\n focusedItemIndex: number;\n lastWidth?: number;\n lastSelectionMode?: SelectionMode;\n adjustedColumns: IColumn[];\n isCollapsed?: boolean;\n isSizing?: boolean;\n isSomeGroupExpanded?: boolean;\n /**\n * A unique object used to force-update the List when it changes.\n */\n version: {};\n getDerivedStateFromProps(nextProps: IDetailsListProps, previousState: IDetailsListState): IDetailsListState;\n}\n\nconst MIN_COLUMN_WIDTH = 100; // this is the global min width\n\nconst DEFAULT_RENDERED_WINDOWS_AHEAD = 2;\nconst DEFAULT_RENDERED_WINDOWS_BEHIND = 2;\n\ntype IDetailsListInnerProps = Omit<IDetailsListProps, 'selection'> &\n IDetailsListState & {\n selection: ISelection;\n dragDropHelper: DragDropHelper | undefined;\n rootRef: React.RefObject<HTMLDivElement>;\n listRef: React.RefObject<List>;\n groupedListRef: React.RefObject<IGroupedList>;\n focusZoneRef: React.RefObject<IFocusZone>;\n headerRef: React.RefObject<IDetailsHeader>;\n selectionZoneRef: React.RefObject<SelectionZone>;\n onGroupExpandStateChanged: (isSomeGroupExpanded: boolean) => void;\n onColumnIsSizingChanged: (column: IColumn, isSizing: boolean) => void;\n onRowDidMount: (row: DetailsRowBase) => void;\n onRowWillUnmount: (row: DetailsRowBase) => void;\n onColumnResized: (resizingColumn: IColumn, newWidth: number, resizingColumnIndex: number) => void;\n onColumnAutoResized: (column: IColumn, columnIndex: number) => void;\n onToggleCollapse: (collapsed: boolean) => void;\n onActiveRowChanged: (el?: HTMLElement, ev?: React.FocusEvent<HTMLElement>) => void;\n onBlur: (event: React.FocusEvent<HTMLElement>) => void;\n onRenderDefaultRow: (detailsRowProps: IDetailsRowProps) => JSX.Element;\n };\n\n/**\n * Hooks-based implementation of DetailsList.\n * Since many existing consumers of DetailsList expect `ref` to return a `DetailsList`,\n * this inner component handles rendering while the outer maintains compatibility.\n */\nconst DetailsListInner: React.ComponentType<IDetailsListInnerProps> = (\n props: IDetailsListInnerProps,\n): JSX.Element | null => {\n const { selection } = props;\n\n const {\n ariaLabelForListHeader,\n ariaLabelForSelectAllCheckbox,\n ariaLabelForSelectionColumn,\n className,\n checkboxVisibility,\n compact,\n constrainMode,\n dragDropEvents,\n groups,\n groupProps,\n indentWidth,\n items,\n isPlaceholderData,\n isHeaderVisible,\n layoutMode,\n onItemInvoked,\n onItemContextMenu,\n onColumnHeaderClick,\n onColumnHeaderContextMenu,\n selectionMode = selection.mode,\n selectionPreservedOnEmptyClick,\n selectionZoneProps,\n ariaLabel,\n ariaLabelForGrid,\n rowElementEventMap,\n shouldApplyApplicationRole = false,\n getKey,\n listProps,\n usePageCache,\n onShouldVirtualize,\n viewport,\n minimumPixelsForDrag,\n getGroupHeight,\n styles,\n theme,\n cellStyleProps = DEFAULT_CELL_STYLE_PROPS,\n onRenderCheckbox,\n useFastIcons,\n dragDropHelper,\n adjustedColumns,\n isCollapsed,\n isSizing,\n isSomeGroupExpanded,\n version,\n rootRef,\n listRef,\n focusZoneRef,\n columnReorderOptions,\n groupedListRef,\n headerRef,\n onGroupExpandStateChanged,\n onColumnIsSizingChanged,\n onRowDidMount,\n onRowWillUnmount,\n disableSelectionZone,\n isSelectedOnFocus = true,\n onColumnResized,\n onColumnAutoResized,\n onToggleCollapse,\n onActiveRowChanged,\n onBlur,\n rowElementEventMap: eventsToRegister,\n onRenderMissingItem,\n onRenderItemColumn,\n getCellValueKey,\n getRowAriaLabel,\n getRowAriaDescribedBy,\n checkButtonAriaLabel,\n checkButtonGroupAriaLabel,\n checkboxCellClassName,\n useReducedRowRenderer,\n enableUpdateAnimations,\n enterModalSelectionOnTouch,\n onRenderDefaultRow,\n selectionZoneRef,\n } = props;\n\n const defaultRole = 'grid';\n const role = props.role ? props.role : defaultRole;\n\n const rowId = getId('row');\n\n const groupNestingDepth = getGroupNestingDepth(groups);\n const groupedDetailsListIndexMap = useGroupedDetailsListIndexMap(groups);\n\n const additionalListProps = React.useMemo((): IListProps => {\n return {\n renderedWindowsAhead: isSizing ? 0 : DEFAULT_RENDERED_WINDOWS_AHEAD,\n renderedWindowsBehind: isSizing ? 0 : DEFAULT_RENDERED_WINDOWS_BEHIND,\n getKey,\n version,\n ...listProps,\n };\n }, [isSizing, getKey, version, listProps]);\n\n let selectAllVisibility = SelectAllVisibility.none; // for SelectionMode.none\n if (selectionMode === SelectionMode.single) {\n selectAllVisibility = SelectAllVisibility.hidden;\n }\n if (selectionMode === SelectionMode.multiple) {\n // if isCollapsedGroupSelectVisible is false, disable select all when the list has all collapsed groups\n let isCollapsedGroupSelectVisible =\n groupProps && groupProps.headerProps && groupProps.headerProps.isCollapsedGroupSelectVisible;\n if (isCollapsedGroupSelectVisible === undefined) {\n isCollapsedGroupSelectVisible = true;\n }\n const isSelectAllVisible = isCollapsedGroupSelectVisible || !groups || isSomeGroupExpanded;\n selectAllVisibility = isSelectAllVisible ? SelectAllVisibility.visible : SelectAllVisibility.hidden;\n }\n\n if (checkboxVisibility === CheckboxVisibility.hidden) {\n selectAllVisibility = SelectAllVisibility.none;\n }\n\n const defaultOnRenderDetailsHeader = React.useCallback(\n (detailsHeaderProps: IDetailsHeaderProps): JSX.Element | null => {\n return <DetailsHeader {...detailsHeaderProps} />;\n },\n [],\n );\n\n const defaultOnRenderDetailsFooter = React.useCallback((): JSX.Element | null => {\n return null;\n }, []);\n\n const propsOnRenderDetailsHeader = props.onRenderDetailsHeader;\n\n const onRenderDetailsHeader = React.useMemo(() => {\n return propsOnRenderDetailsHeader\n ? composeRenderFunction(propsOnRenderDetailsHeader, defaultOnRenderDetailsHeader)\n : defaultOnRenderDetailsHeader;\n }, [propsOnRenderDetailsHeader, defaultOnRenderDetailsHeader]);\n\n const propsOnRenderDetailsFooter = props.onRenderDetailsFooter;\n\n const onRenderDetailsFooter = React.useMemo(() => {\n return propsOnRenderDetailsFooter\n ? composeRenderFunction(propsOnRenderDetailsFooter, defaultOnRenderDetailsFooter)\n : defaultOnRenderDetailsFooter;\n }, [propsOnRenderDetailsFooter, defaultOnRenderDetailsFooter]);\n\n const detailsFooterProps = React.useMemo((): IDetailsFooterProps => {\n return {\n columns: adjustedColumns,\n groupNestingDepth,\n selection,\n selectionMode,\n viewport,\n checkboxVisibility,\n indentWidth,\n cellStyleProps,\n };\n }, [\n adjustedColumns,\n groupNestingDepth,\n selection,\n selectionMode,\n viewport,\n checkboxVisibility,\n indentWidth,\n cellStyleProps,\n ]);\n\n const columnReorderOnDragEnd = columnReorderOptions && columnReorderOptions.onDragEnd;\n\n const onColumnDragEnd = React.useCallback(\n (\n {\n dropLocation,\n }: {\n dropLocation?: ColumnDragEndLocation;\n },\n event: MouseEvent,\n ): void => {\n let finalDropLocation: ColumnDragEndLocation = ColumnDragEndLocation.outside;\n if (columnReorderOnDragEnd) {\n if (dropLocation && dropLocation !== ColumnDragEndLocation.header) {\n finalDropLocation = dropLocation;\n } else if (rootRef.current) {\n const clientRect = rootRef.current.getBoundingClientRect();\n if (\n event.clientX > clientRect.left &&\n event.clientX < clientRect.right &&\n event.clientY > clientRect.top &&\n event.clientY < clientRect.bottom\n ) {\n finalDropLocation = ColumnDragEndLocation.surface;\n }\n }\n columnReorderOnDragEnd(finalDropLocation);\n }\n },\n [columnReorderOnDragEnd, rootRef],\n );\n\n const columnReorderProps = React.useMemo((): IColumnReorderHeaderProps | undefined => {\n if (columnReorderOptions) {\n return {\n ...columnReorderOptions,\n onColumnDragEnd,\n };\n }\n }, [columnReorderOptions, onColumnDragEnd]);\n\n const rowCount = (isHeaderVisible ? 1 : 0) + GetGroupCount(groups) + (items ? items.length : 0);\n const colCount =\n (selectAllVisibility !== SelectAllVisibility.none ? 1 : 0) +\n (adjustedColumns ? adjustedColumns.length : 0) +\n (groups ? 1 : 0);\n\n const classNames = React.useMemo(() => {\n return getClassNames(styles, {\n theme: theme!,\n compact,\n isFixed: layoutMode === DetailsListLayoutMode.fixedColumns,\n isHorizontalConstrained: constrainMode === ConstrainMode.horizontalConstrained,\n className,\n });\n }, [styles, theme, compact, layoutMode, constrainMode, className]);\n\n const onRenderDetailsGroupFooter = groupProps && groupProps.onRenderFooter;\n\n const finalOnRenderDetailsGroupFooter = React.useMemo(() => {\n return onRenderDetailsGroupFooter\n ? (groupFooterProps: IGroupDividerProps, defaultRender?: IRenderFunction<IGroupDividerProps>) => {\n return onRenderDetailsGroupFooter(\n {\n ...groupFooterProps,\n columns: adjustedColumns,\n groupNestingDepth,\n indentWidth,\n selection,\n selectionMode,\n viewport,\n checkboxVisibility,\n cellStyleProps,\n },\n defaultRender,\n );\n }\n : undefined;\n }, [\n onRenderDetailsGroupFooter,\n adjustedColumns,\n groupNestingDepth,\n indentWidth,\n selection,\n selectionMode,\n viewport,\n checkboxVisibility,\n cellStyleProps,\n ]);\n\n const onRenderDetailsGroupHeader = groupProps && groupProps.onRenderHeader;\n\n const finalOnRenderDetailsGroupHeader = React.useMemo(() => {\n return onRenderDetailsGroupHeader\n ? (groupHeaderProps: IGroupDividerProps, defaultRender?: IRenderFunction<IGroupDividerProps>) => {\n const { groupIndex } = groupHeaderProps;\n const groupKey: string | undefined =\n groups && groupIndex !== undefined && groups[groupIndex] !== undefined ? groups[groupIndex].key : undefined;\n const totalRowCount: number =\n groupKey !== undefined && groupedDetailsListIndexMap[groupKey]\n ? groupedDetailsListIndexMap[groupKey].totalRowCount\n : 0;\n\n return onRenderDetailsGroupHeader(\n {\n ...groupHeaderProps,\n columns: adjustedColumns,\n groupNestingDepth,\n indentWidth,\n selection,\n selectionMode: checkboxVisibility !== CheckboxVisibility.hidden ? selectionMode : SelectionMode.none,\n viewport,\n checkboxVisibility,\n cellStyleProps,\n ariaColSpan: adjustedColumns.length,\n ariaPosInSet: undefined,\n ariaSetSize: undefined,\n ariaRowCount: undefined,\n ariaRowIndex: groupIndex !== undefined ? totalRowCount + (isHeaderVisible ? 1 : 0) : undefined,\n },\n defaultRender,\n );\n }\n : (groupHeaderProps: IGroupDividerProps, defaultRender: IRenderFunction<IGroupDividerProps>) => {\n const { groupIndex } = groupHeaderProps;\n const groupKey: string | undefined =\n groups && groupIndex !== undefined && groups[groupIndex] !== undefined ? groups[groupIndex].key : undefined;\n const totalRowCount: number =\n groupKey !== undefined && groupedDetailsListIndexMap[groupKey]\n ? groupedDetailsListIndexMap[groupKey].totalRowCount\n : 0;\n\n return defaultRender({\n ...groupHeaderProps,\n ariaColSpan: adjustedColumns.length,\n ariaPosInSet: undefined,\n ariaSetSize: undefined,\n ariaRowCount: undefined,\n ariaRowIndex: groupIndex !== undefined ? totalRowCount + (isHeaderVisible ? 1 : 0) : undefined,\n });\n };\n }, [\n onRenderDetailsGroupHeader,\n adjustedColumns,\n groups,\n groupNestingDepth,\n indentWidth,\n isHeaderVisible,\n selection,\n selectionMode,\n viewport,\n checkboxVisibility,\n cellStyleProps,\n groupedDetailsListIndexMap,\n ]);\n\n const finalGroupProps = React.useMemo((): IGroupRenderProps | undefined => {\n return {\n ...groupProps,\n role: role === defaultRole ? 'rowgroup' : 'presentation',\n onRenderFooter: finalOnRenderDetailsGroupFooter,\n onRenderHeader: finalOnRenderDetailsGroupHeader,\n // pass through custom group header checkbox label\n headerProps: {\n ...groupProps?.headerProps,\n selectAllButtonProps: {\n 'aria-label': checkButtonGroupAriaLabel,\n ...groupProps?.headerProps?.selectAllButtonProps,\n },\n },\n };\n }, [groupProps, finalOnRenderDetailsGroupFooter, finalOnRenderDetailsGroupHeader, checkButtonGroupAriaLabel, role]);\n\n const sumColumnWidths = useConst(() =>\n memoizeFunction((columns: IColumn[]) => {\n let totalWidth: number = 0;\n\n columns.forEach((column: IColumn) => (totalWidth += column.calculatedWidth || column.minWidth));\n\n return totalWidth;\n }),\n );\n\n const collapseAllVisibility = groupProps && groupProps.collapseAllVisibility;\n\n const rowWidth = React.useMemo(() => {\n return sumColumnWidths(adjustedColumns);\n }, [adjustedColumns, sumColumnWidths]);\n\n const onRenderCell = React.useCallback(\n (nestingDepth: number, item: any, index: number, group?: IGroup): React.ReactNode => {\n const finalOnRenderRow = props.onRenderRow\n ? composeRenderFunction(props.onRenderRow, onRenderDefaultRow)\n : onRenderDefaultRow;\n\n const groupKey: string | undefined = group ? group.key : undefined;\n const numOfGroupHeadersBeforeItem: number =\n groupKey && groupedDetailsListIndexMap[groupKey]\n ? groupedDetailsListIndexMap[groupKey].numOfGroupHeadersBeforeItem\n : 0;\n\n const rowRole = role === defaultRole ? undefined : 'presentation';\n\n const rowProps: IDetailsRowProps = {\n item: item,\n itemIndex: index,\n flatIndexOffset: (isHeaderVisible ? 2 : 1) + numOfGroupHeadersBeforeItem,\n compact,\n columns: adjustedColumns,\n groupNestingDepth: nestingDepth,\n id: `${rowId}-${index}`,\n selectionMode,\n selection,\n onDidMount: onRowDidMount,\n onWillUnmount: onRowWillUnmount,\n onRenderItemColumn,\n getCellValueKey,\n eventsToRegister,\n dragDropEvents,\n dragDropHelper,\n viewport,\n checkboxVisibility,\n collapseAllVisibility,\n getRowAriaLabel,\n getRowAriaDescribedBy,\n checkButtonAriaLabel,\n checkboxCellClassName,\n useReducedRowRenderer,\n indentWidth,\n cellStyleProps,\n onRenderDetailsCheckbox: onRenderCheckbox,\n enableUpdateAnimations,\n rowWidth,\n useFastIcons,\n role: rowRole,\n };\n\n if (!item) {\n if (onRenderMissingItem) {\n return onRenderMissingItem(index, rowProps);\n }\n\n return null;\n }\n\n return finalOnRenderRow(rowProps);\n },\n [\n compact,\n adjustedColumns,\n selectionMode,\n selection,\n rowId,\n onRowDidMount,\n onRowWillUnmount,\n onRenderItemColumn,\n getCellValueKey,\n eventsToRegister,\n dragDropEvents,\n dragDropHelper,\n viewport,\n checkboxVisibility,\n collapseAllVisibility,\n getRowAriaLabel,\n getRowAriaDescribedBy,\n isHeaderVisible,\n checkButtonAriaLabel,\n checkboxCellClassName,\n useReducedRowRenderer,\n indentWidth,\n cellStyleProps,\n onRenderCheckbox,\n enableUpdateAnimations,\n useFastIcons,\n onRenderDefaultRow,\n onRenderMissingItem,\n props.onRenderRow,\n rowWidth,\n role,\n groupedDetailsListIndexMap,\n ],\n );\n\n const onRenderListCell = React.useCallback(\n (nestingDepth: number): ((item: any, itemIndex: number) => React.ReactNode) => {\n return (item: any, itemIndex: number): React.ReactNode => {\n return onRenderCell(nestingDepth, item, itemIndex);\n };\n },\n [onRenderCell],\n );\n\n const isRightArrow = React.useCallback(\n (event: React.KeyboardEvent<HTMLElement>) => {\n return event.which === getRTLSafeKeyCode(KeyCodes.right, theme);\n },\n [theme],\n );\n\n const focusZoneProps: IFocusZoneProps = {\n componentRef: focusZoneRef,\n className: classNames.focusZone,\n direction: FocusZoneDirection.vertical,\n shouldEnterInnerZone: isRightArrow,\n onActiveElementChanged: onActiveRowChanged,\n shouldRaiseClicks: false,\n onBlur: onBlur,\n };\n\n const FinalGroupedList =\n groups && groupProps?.groupedListAs ? composeComponentAs(groupProps.groupedListAs, GroupedList) : GroupedList;\n\n const list = groups ? (\n <FinalGroupedList\n focusZoneProps={focusZoneProps}\n componentRef={groupedListRef}\n groups={groups}\n groupProps={finalGroupProps}\n items={items}\n onRenderCell={onRenderCell}\n role=\"presentation\"\n selection={selection}\n selectionMode={checkboxVisibility !== CheckboxVisibility.hidden ? selectionMode : SelectionMode.none}\n dragDropEvents={dragDropEvents}\n dragDropHelper={dragDropHelper}\n eventsToRegister={rowElementEventMap}\n listProps={additionalListProps}\n onGroupExpandStateChanged={onGroupExpandStateChanged}\n usePageCache={usePageCache}\n onShouldVirtualize={onShouldVirtualize}\n getGroupHeight={getGroupHeight}\n compact={compact}\n />\n ) : (\n <FocusZone {...focusZoneProps}>\n <List\n ref={listRef}\n role=\"presentation\"\n items={items}\n onRenderCell={onRenderListCell(0)}\n usePageCache={usePageCache}\n onShouldVirtualize={onShouldVirtualize}\n {...additionalListProps}\n />\n </FocusZone>\n );\n\n const onHeaderKeyDown = React.useCallback(\n (ev: React.KeyboardEvent<HTMLElement>): void => {\n if (ev.which === KeyCodes.down) {\n if (focusZoneRef.current && focusZoneRef.current.focus()) {\n // select the first item in list after down arrow key event\n // only if nothing was selected; otherwise start with the already-selected item\n if (isSelectedOnFocus && selection.getSelectedIndices().length === 0) {\n selection.setIndexSelected(0, true, false);\n }\n\n ev.preventDefault();\n ev.stopPropagation();\n }\n }\n },\n [selection, focusZoneRef, isSelectedOnFocus],\n );\n\n const onContentKeyDown = React.useCallback(\n (ev: React.KeyboardEvent<HTMLElement>): void => {\n if (ev.which === KeyCodes.up && !ev.altKey) {\n if (headerRef.current && headerRef.current.focus()) {\n ev.preventDefault();\n ev.stopPropagation();\n }\n }\n },\n [headerRef],\n );\n\n return (\n // If shouldApplyApplicationRole is true, role application will be applied to make arrow keys work\n // with JAWS.\n <div\n ref={rootRef}\n className={classNames.root}\n data-automationid=\"DetailsList\"\n data-is-scrollable=\"false\"\n aria-label={ariaLabel}\n {...(shouldApplyApplicationRole ? { role: 'application' } : {})}\n >\n <FocusRects />\n <div\n role={role}\n aria-label={ariaLabelForGrid}\n aria-rowcount={isPlaceholderData ? -1 : rowCount}\n aria-colcount={colCount}\n aria-readonly=\"true\"\n aria-busy={isPlaceholderData}\n >\n <div onKeyDown={onHeaderKeyDown} role=\"presentation\" className={classNames.headerWrapper}>\n {isHeaderVisible &&\n onRenderDetailsHeader(\n {\n componentRef: headerRef,\n selectionMode: selectionMode,\n layoutMode: layoutMode!,\n selection: selection,\n columns: adjustedColumns,\n onColumnClick: onColumnHeaderClick,\n onColumnContextMenu: onColumnHeaderContextMenu,\n onColumnResized: onColumnResized,\n onColumnIsSizingChanged: onColumnIsSizingChanged,\n onColumnAutoResized: onColumnAutoResized,\n groupNestingDepth: groupNestingDepth,\n isAllCollapsed: isCollapsed,\n onToggleCollapseAll: onToggleCollapse,\n ariaLabel: ariaLabelForListHeader,\n ariaLabelForSelectAllCheckbox: ariaLabelForSelectAllCheckbox,\n ariaLabelForSelectionColumn: ariaLabelForSelectionColumn,\n selectAllVisibility: selectAllVisibility,\n collapseAllVisibility: groupProps && groupProps.collapseAllVisibility,\n viewport: viewport,\n columnReorderProps: columnReorderProps,\n minimumPixelsForDrag: minimumPixelsForDrag,\n cellStyleProps: cellStyleProps,\n checkboxVisibility,\n indentWidth,\n onRenderDetailsCheckbox: onRenderCheckbox,\n rowWidth: sumColumnWidths(adjustedColumns),\n useFastIcons,\n },\n onRenderDetailsHeader,\n )}\n </div>\n <div onKeyDown={onContentKeyDown} role=\"presentation\" className={classNames.contentWrapper}>\n {!disableSelectionZone ? (\n <SelectionZone\n ref={selectionZoneRef}\n selection={selection}\n selectionPreservedOnEmptyClick={selectionPreservedOnEmptyClick}\n selectionMode={selectionMode}\n isSelectedOnFocus={isSelectedOnFocus}\n selectionClearedOnEscapePress={isSelectedOnFocus}\n toggleWithoutModifierPressed={!isSelectedOnFocus}\n onItemInvoked={onItemInvoked}\n onItemContextMenu={onItemContextMenu}\n enterModalOnTouch={enterModalSelectionOnTouch}\n {...(selectionZoneProps || {})}\n >\n {list}\n </SelectionZone>\n ) : (\n list\n )}\n </div>\n {onRenderDetailsFooter({\n ...detailsFooterProps,\n })}\n </div>\n </div>\n );\n};\n\n@withViewport\nexport class DetailsListBase extends React.Component<IDetailsListProps, IDetailsListState> implements IDetailsList {\n public static defaultProps = {\n layoutMode: DetailsListLayoutMode.justified,\n selectionMode: SelectionMode.multiple,\n constrainMode: ConstrainMode.horizontalConstrained,\n checkboxVisibility: CheckboxVisibility.onHover,\n isHeaderVisible: true,\n compact: false,\n useFastIcons: true,\n };\n\n // References\n private _async: Async;\n private _root = React.createRef<HTMLDivElement>();\n private _header = React.createRef<IDetailsHeader>();\n private _groupedList = React.createRef<IGroupedList>();\n private _list = React.createRef<List>();\n private _focusZone = React.createRef<IFocusZone>();\n private _selectionZone = React.createRef<SelectionZone>();\n\n private _selection: ISelection;\n private _activeRows: { [key: string]: DetailsRowBase };\n private _dragDropHelper: DragDropHelper | undefined;\n private _initialFocusedIndex: number | undefined;\n\n private _columnOverrides: {\n [key: string]: IColumn;\n };\n\n public static getDerivedStateFromProps(\n nextProps: IDetailsListProps,\n previousState: IDetailsListState,\n ): IDetailsListState {\n return previousState.getDerivedStateFromProps(nextProps, previousState);\n }\n\n constructor(props: IDetailsListProps) {\n super(props);\n\n initializeComponentRef(this);\n this._async = new Async(this);\n\n this._activeRows = {};\n this._columnOverrides = {};\n\n this.state = {\n focusedItemIndex: -1,\n lastWidth: 0,\n adjustedColumns: this._getAdjustedColumns(props, undefined),\n isSizing: false,\n isCollapsed: props.groupProps && props.groupProps.isAllGroupsCollapsed,\n isSomeGroupExpanded: props.groupProps && !props.groupProps.isAllGroupsCollapsed,\n version: {},\n getDerivedStateFromProps: this._getDerivedStateFromProps,\n };\n\n this._selection =\n props.selection ||\n new Selection({\n onSelectionChanged: undefined,\n getKey: props.getKey,\n selectionMode: props.selectionMode,\n });\n\n if (!this.props.disableSelectionZone) {\n this._selection.setItems(props.items as IObjectWithKey[], false);\n }\n\n this._dragDropHelper = props.dragDropEvents\n ? new DragDropHelper({\n selection: this._selection,\n minimumPixelsForDrag: props.minimumPixelsForDrag,\n })\n : undefined;\n this._initialFocusedIndex = props.initialFocusedIndex;\n }\n\n public scrollToIndex(index: number, measureItem?: (itemIndex: number) => number, scrollToMode?: ScrollToMode): void {\n this._list.current && this._list.current.scrollToIndex(index, measureItem, scrollToMode);\n this._groupedList.current && this._groupedList.current.scrollToIndex(index, measureItem, scrollToMode);\n }\n\n public focusIndex(\n index: number,\n forceIntoFirstElement: boolean = false,\n measureItem?: (itemIndex: number) => number,\n scrollToMode?: ScrollToMode,\n ): void {\n const item = this.props.items[index];\n if (item) {\n this.scrollToIndex(index, measureItem, scrollToMode);\n\n const itemKey = this._getItemKey(item, index);\n const row = this._activeRows[itemKey];\n if (row) {\n this._setFocusToRow(row, forceIntoFirstElement);\n }\n }\n }\n\n public getStartItemIndexInView(): number {\n if (this._list && this._list.current) {\n return this._list.current.getStartItemIndexInView();\n } else if (this._groupedList && this._groupedList.current) {\n return this._groupedList.current.getStartItemIndexInView();\n }\n return 0;\n }\n\n public componentWillUnmount(): void {\n if (this._dragDropHelper) {\n // TODO If the DragDropHelper was passed via props, this will dispose it, which is incorrect behavior.\n this._dragDropHelper.dispose();\n }\n this._async.dispose();\n }\n\n public componentDidUpdate(prevProps: IDetailsListProps, prevState: IDetailsListState) {\n this._notifyColumnsResized();\n\n if (this._initialFocusedIndex !== undefined) {\n const item = this.props.items[this._initialFocusedIndex];\n if (item) {\n const itemKey = this._getItemKey(item, this._initialFocusedIndex);\n const row = this._activeRows[itemKey];\n if (row) {\n this._setFocusToRowIfPending(row);\n }\n }\n }\n\n if (\n this.props.items !== prevProps.items &&\n this.props.items.length > 0 &&\n this.state.focusedItemIndex !== -1 &&\n !elementContains(this._root.current, document.activeElement as HTMLElement, false)\n ) {\n // Item set has changed and previously-focused item is gone.\n // Set focus to item at index of previously-focused item if it is in range,\n // else set focus to the last item.\n const index =\n this.state.focusedItemIndex < this.props.items.length\n ? this.state.focusedItemIndex\n : this.props.items.length - 1;\n const item = this.props.items[index];\n const itemKey = this._getItemKey(item, this.state.focusedItemIndex);\n const row = this._activeRows[itemKey];\n if (row) {\n this._setFocusToRow(row);\n } else {\n this._initialFocusedIndex = index;\n }\n }\n if (this.props.onDidUpdate) {\n this.props.onDidUpdate(this);\n }\n }\n\n public render(): JSX.Element {\n return (\n <DetailsListInner\n {...this.props}\n {...this.state}\n selection={this._selection}\n dragDropHelper={this._dragDropHelper}\n rootRef={this._root}\n listRef={this._list}\n groupedListRef={this._groupedList}\n focusZoneRef={this._focusZone}\n headerRef={this._header}\n selectionZoneRef={this._selectionZone}\n onGroupExpandStateChanged={this._onGroupExpandStateChanged}\n onColumnIsSizingChanged={this._onColumnIsSizingChanged}\n onRowDidMount={this._onRowDidMount}\n onRowWillUnmount={this._onRowWillUnmount}\n onColumnResized={this._onColumnResized}\n onColumnAutoResized={this._onColumnAutoResized}\n onToggleCollapse={this._onToggleCollapse}\n onActiveRowChanged={this._onActiveRowChanged}\n onBlur={this._onBlur}\n onRenderDefaultRow={this._onRenderRow}\n />\n );\n }\n\n public forceUpdate(): void {\n super.forceUpdate();\n this._forceListUpdates();\n }\n\n protected _onRenderRow = (\n props: IDetailsRowProps,\n defaultRender?: IRenderFunction<IDetailsRowProps>,\n ): JSX.Element => {\n return <DetailsRow {...props} />;\n };\n\n private _getDerivedStateFromProps = (\n nextProps: IDetailsListProps,\n previousState: IDetailsListState,\n ): IDetailsListState => {\n const {\n checkboxVisibility,\n items,\n setKey,\n selectionMode = this._selection.mode,\n columns,\n viewport,\n compact,\n dragDropEvents,\n } = this.props;\n\n const { isAllGroupsCollapsed = undefined } = this.props.groupProps || {};\n const newViewportWidth = (nextProps.viewport && nextProps.viewport.width) || 0;\n const oldViewportWidth = (viewport && viewport.width) || 0;\n const shouldResetSelection = nextProps.setKey !== setKey || nextProps.setKey === undefined;\n let shouldForceUpdates = false;\n\n if (nextProps.layoutMode !== this.props.layoutMode) {\n shouldForceUpdates = true;\n }\n\n let nextState = previousState;\n\n if (shouldResetSelection) {\n this._initialFocusedIndex = nextProps.initialFocusedIndex;\n // reset focusedItemIndex when setKey changes\n nextState = {\n ...nextState,\n focusedItemIndex: this._initialFocusedIndex !== undefined ? this._initialFocusedIndex : -1,\n };\n }\n\n if (!this.props.disableSelectionZone && nextProps.items !== items) {\n this._selection.setItems(nextProps.items, shouldResetSelection);\n }\n\n if (\n nextProps.checkboxVisibility !== checkboxVisibility ||\n nextProps.columns !== columns ||\n newViewportWidth !== oldViewportWidth ||\n nextProps.compact !== compact\n ) {\n shouldForceUpdates = true;\n }\n\n nextState = {\n ...nextState,\n ...this._adjustColumns(nextProps, nextState, true),\n };\n\n if (nextProps.selectionMode !== selectionMode) {\n shouldForceUpdates = true;\n }\n\n if (\n isAllGroupsCollapsed === undefined &&\n nextProps.groupProps &&\n nextProps.groupProps.isAllGroupsCollapsed !== undefined\n ) {\n nextState = {\n ...nextState,\n isCollapsed: nextProps.groupProps.isAllGroupsCollapsed,\n isSomeGroupExpanded: !nextProps.groupProps.isAllGroupsCollapsed,\n };\n }\n\n if (nextProps.dragDropEvents !== dragDropEvents) {\n this._dragDropHelper && this._dragDropHelper.dispose();\n this._dragDropHelper = nextProps.dragDropEvents\n ? new DragDropHelper({\n selection: this._selection,\n minimumPixelsForDrag: nextProps.minimumPixelsForDrag,\n })\n : undefined;\n shouldForceUpdates = true;\n }\n\n if (shouldForceUpdates) {\n nextState = {\n ...nextState,\n version: {},\n };\n }\n\n return nextState;\n };\n\n private _onGroupExpandStateChanged = (isSomeGroupExpanded: boolean): void => {\n this.setState({ isSomeGroupExpanded: isSomeGroupExpanded });\n };\n\n private _onColumnIsSizingChanged = (column: IColumn, isSizing: boolean): void => {\n this.setState({ isSizing: isSizing });\n };\n\n private _getGroupNestingDepth(): number {\n const { groups } = this.props;\n let level = 0;\n let groupsInLevel = groups;\n\n while (groupsInLevel && groupsInLevel.length > 0) {\n level++;\n groupsInLevel = groupsInLevel[0].children;\n }\n\n return level;\n }\n\n private _onRowDidMount = (row: DetailsRowBase): void => {\n const { item, itemIndex } = row.props;\n const itemKey = this._getItemKey(item, itemIndex);\n this._activeRows[itemKey] = row; // this is used for column auto resize\n\n this._setFocusToRowIfPending(row);\n\n const { onRowDidMount } = this.props;\n if (onRowDidMount) {\n onRowDidMount(item, itemIndex);\n }\n };\n\n private _setFocusToRowIfPending(row: DetailsRowBase): void {\n const { itemIndex } = row.props;\n if (this._initialFocusedIndex !== undefined && itemIndex === this._initialFocusedIndex) {\n this._setFocusToRow(row);\n delete this._initialFocusedIndex;\n }\n }\n\n private _setFocusToRow(row: DetailsRowBase, forceIntoFirstElement: boolean = false): void {\n if (this._selectionZone.current) {\n this._selectionZone.current.ignoreNextFocus();\n }\n this._async.setTimeout((): void => {\n row.focus(forceIntoFirstElement);\n }, 0);\n }\n\n private _onRowWillUnmount = (row: DetailsRowBase): void => {\n const { onRowWillUnmount } = this.props;\n\n const { item, itemIndex } = row.props;\n const itemKey = this._getItemKey(item, itemIndex);\n delete this._activeRows[itemKey];\n\n if (onRowWillUnmount) {\n onRowWillUnmount(item, itemIndex);\n }\n };\n\n private _onToggleCollapse = (collapsed: boolean): void => {\n this.setState({\n isCollapsed: collapsed,\n });\n if (this._groupedList.current) {\n this._groupedList.current.toggleCollapseAll(collapsed);\n }\n };\n\n private _forceListUpdates(): void {\n if (this._groupedList.current) {\n this._groupedList.current.forceUpdate();\n }\n if (this._list.current) {\n this._list.current.forceUpdate();\n }\n }\n\n private _notifyColumnsResized(): void {\n this.state.adjustedColumns.forEach(column => {\n if (column.onColumnResize) {\n column.onColumnResize(column.currentWidth);\n }\n });\n }\n\n private _adjustColumns(\n newProps: IDetailsListProps,\n previousState: IDetailsListState,\n forceUpdate?: boolean,\n resizingColumnIndex?: number,\n ): IDetailsListState {\n const adjustedColumns = this._getAdjustedColumns(newProps, previousState, forceUpdate, resizingColumnIndex);\n const { viewport } = this.props;\n const viewportWidth = viewport && viewport.width ? viewport.width : 0;\n\n return {\n ...previousState,\n adjustedColumns: adjustedColumns,\n lastWidth: viewportWidth,\n };\n }\n\n /** Returns adjusted columns, given the viewport size and layout mode. */\n private _getAdjustedColumns(\n newProps: IDetailsListProps,\n previousState: IDetailsListState | undefined,\n forceUpdate?: boolean,\n resizingColumnIndex?: number,\n ): IColumn[] {\n const { items: newItems, layoutMode, selectionMode, viewport } = newProps;\n const viewportWidth = viewport && viewport.width ? viewport.width : 0;\n let { columns: newColumns } = newProps;\n\n const columns = this.props ? this.props.columns : [];\n const lastWidth = previousState ? previousState.lastWidth : -1;\n const lastSelectionMode = previousState ? previousState.lastSelectionMode : undefined;\n\n if (\n !forceUpdate &&\n lastWidth === viewportWidth &&\n lastSelectionMode === selectionMode &&\n (!columns || newColumns === columns)\n ) {\n return newColumns || [];\n }\n\n newColumns = newColumns || buildColumns(newItems, true);\n\n let adjustedColumns: IColumn[];\n\n if (layoutMode === DetailsListLayoutMode.fixedColumns) {\n adjustedColumns = this._getFixedColumns(newColumns, viewportWidth, newProps);\n\n // Preserve adjusted column calculated widths.\n adjustedColumns.forEach(column => {\n this._rememberCalculatedWidth(column, column.calculatedWidth!);\n });\n } else {\n adjustedColumns = this._getJustifiedColumns(newColumns, viewportWidth, newProps);\n\n adjustedColumns.forEach(column => {\n this._getColumnOverride(column.key).currentWidth = column.calculatedWidth;\n });\n }\n\n return adjustedColumns;\n }\n\n /** Builds a set of columns based on the given columns mixed with the current overrides. */\n private _getFixedColumns(newColumns: IColumn[], viewportWidth: number, props: IDetailsListProps): IColumn[] {\n const { selectionMode = this._selection.mode, checkboxVisibility, flexMargin, skipViewportMeasures } = this.props;\n let remainingWidth = viewportWidth - (flexMargin || 0);\n let sumProportionalWidth = 0;\n\n newColumns.forEach((col: IColumn) => {\n if (skipViewportMeasures || !col.flexGrow) {\n remainingWidth -= col.maxWidth || col.minWidth || MIN_COLUMN_WIDTH;\n } else {\n remainingWidth -= col.minWidth || MIN_COLUMN_WIDTH;\n sumProportionalWidth += col.flexGrow;\n }\n\n remainingWidth -= getPaddedWidth(col, props, true);\n });\n\n const rowCheckWidth =\n selectionMode !== SelectionMode.none && checkboxVisibility !== CheckboxVisibility.hidden ? CHECKBOX_WIDTH : 0;\n const groupExpandWidth = this._getGroupNestingDepth() * GROUP_EXPAND_WIDTH;\n remainingWidth -= rowCheckWidth + groupExpandWidth;\n\n let widthFraction = remainingWidth / sumProportionalWidth;\n\n // Shrinks proportional columns to their max width and adds the remaining width to distribute to other columns.\n if (!skipViewportMeasures) {\n newColumns.forEach((column: IColumn) => {\n const newColumn: IColumn = { ...column, ...this._columnOverrides[column.key] };\n\n if (newColumn.flexGrow && newColumn.maxWidth) {\n const fullWidth = newColumn.flexGrow * widthFraction + newColumn.minWidth;\n const shrinkWidth = fullWidth - newColumn.maxWidth;\n\n if (shrinkWidth > 0) {\n remainingWidth += shrinkWidth;\n sumProportionalWidth -= (shrinkWidth / (fullWidth - newColumn.minWidth)) * newColumn.flexGrow;\n }\n }\n });\n }\n\n widthFraction = remainingWidth > 0 ? remainingWidth / sumProportionalWidth : 0;\n\n return newColumns.map(column => {\n const newColumn: IColumn = { ...column, ...this._columnOverrides[column.key] };\n\n // Delay computation until viewport width is available.\n if (!skipViewportMeasures && newColumn.flexGrow && remainingWidth <= 0) {\n return newColumn;\n }\n\n if (!newColumn.calculatedWidth) {\n if (!skipViewportMeasures && newColumn.flexGrow) {\n // Assigns the proportion of the remaining extra width after all columns have met minimum widths.\n newColumn.calculatedWidth = newColumn.minWidth + newColumn.flexGrow * widthFraction;\n newColumn.calculatedWidth = Math.min(newColumn.calculatedWidth, newColumn.maxWidth || Number.MAX_VALUE);\n } else {\n newColumn.calculatedWidth = newColumn.maxWidth || newColumn.minWidth || MIN_COLUMN_WIDTH;\n }\n }\n\n return newColumn;\n });\n }\n\n /** Builds a set of columns to fix within the viewport width. */\n private _getJustifiedColumns(newColumns: IColumn[], viewportWidth: number, props: IDetailsListProps): IColumn[] {\n const { selectionMode = this._selection.mode, checkboxVisibility } = props;\n const rowCheckWidth =\n selectionMode !== SelectionMode.none && checkboxVisibility !== CheckboxVisibility.hidden ? CHECKBOX_WIDTH : 0;\n const groupExpandWidth = this._getGroupNestingDepth() * GROUP_EXPAND_WIDTH;\n let totalWidth = 0; // offset because we have one less inner padding.\n let minimumWidth = 0;\n const availableWidth = viewportWidth - (rowCheckWidth + groupExpandWidth);\n const adjustedColumns: IColumn[] = newColumns.map((column, i) => {\n const baseColumn = {\n ...column,\n calculatedWidth: column.minWidth || MIN_COLUMN_WIDTH,\n };\n\n const newColumn = {\n ...baseColumn,\n ...this._columnOverrides[column.key],\n };\n\n // eslint-disable-next-line deprecation/deprecation\n if (!(baseColumn.isCollapsible || baseColumn.isCollapsable)) {\n minimumWidth += getPaddedWidth(baseColumn, props);\n }\n\n totalWidth += getPaddedWidth(newColumn, props);\n\n return newColumn;\n });\n\n if (minimumWidth > availableWidth) {\n return adjustedColumns;\n }\n\n let lastIndex = adjustedColumns.length - 1;\n\n // Shrink or remove collapsable columns.\n while (lastIndex >= 0 && totalWidth > availableWidth) {\n const column = adjustedColumns[lastIndex];\n\n const minWidth = column.minWidth || MIN_COLUMN_WIDTH;\n const overflowWidth = totalWidth - availableWidth;\n\n // eslint-disable-next-line deprecation/deprecation\n if (column.calculatedWidth! - minWidth >= overflowWidth || !(column.isCollapsible || column.isCollapsable)) {\n const originalWidth = column.calculatedWidth!;\n column.calculatedWidth = Math.max(column.calculatedWidth! - overflowWidth, minWidth);\n totalWidth -= originalWidth - column.calculatedWidth;\n } else {\n totalWidth -= getPaddedWidth(column, props);\n adjustedColumns.splice(lastIndex, 1);\n }\n lastIndex--;\n }\n\n // Then expand columns starting at the beginning, until we've filled the width.\n for (let i = 0; i < adjustedColumns.length && totalWidth < availableWidth; i++) {\n const column = adjustedColumns[i];\n const isLast = i === adjustedColumns.length - 1;\n const overrides = this._columnOverrides[column.key];\n if (overrides && overrides.calculatedWidth && !isLast) {\n continue;\n }\n\n const spaceLeft = availableWidth - totalWidth;\n let increment: number;\n if (isLast) {\n increment = spaceLeft;\n } else {\n const maxWidth = column.maxWidth;\n const minWidth = column.minWidth || maxWidth || MIN_COLUMN_WIDTH;\n increment = maxWidth ? Math.min(spaceLeft, maxWidth - minWidth) : spaceLeft;\n }\n\n column.calculatedWidth = (column.calculatedWidth as number) + increment;\n totalWidth += increment;\n }\n\n return adjustedColumns;\n }\n\n private _onColumnResized = (resizingColumn: IColumn, newWidth: number, resizingColumnIndex: number): void => {\n const newCalculatedWidth = Math.max(resizingColumn.minWidth || MIN_COLUMN_WIDTH, newWidth);\n if (this.props.onColumnResize) {\n this.props.onColumnResize(resizingColumn, newCalculatedWidth, resizingColumnIndex);\n }\n\n this._rememberCalculatedWidth(resizingColumn, newCalculatedWidth);\n\n this.setState({\n ...this._adjustColumns(this.props, this.state, true, resizingColumnIndex),\n version: {},\n });\n };\n\n private _rememberCalculatedWidth(column: IColumn, newCalculatedWidth: number): void {\n const overrides = this._getColumnOverride(column.key);\n overrides.calculatedWidth = newCalculatedWidth;\n overrides.currentWidth = newCalculatedWidth;\n }\n\n private _getColumnOverride(key: string): IColumn {\n return (this._columnOverrides[key] = this._columnOverrides[key] || {});\n }\n\n /**\n * Callback function when double clicked on the details header column resizer\n * which will measure the column cells of all the active rows and resize the\n * column to the max cell width.\n *\n * @param column - double clicked column definition\n * @param columnIndex - double clicked column index\n * TODO: min width 100 should be changed to const value and should be consistent with the\n * value used on _onSizerMove method in DetailsHeader\n */\n private _onColumnAutoResized = (column: IColumn, columnIndex: number): void => {\n let max = 0;\n let count = 0;\n const totalCount = Object.keys(this._activeRows).length;\n\n for (const key in this._activeRows) {\n if (this._activeRows.hasOwnProperty(key)) {\n const currentRow = this._activeRows[key];\n currentRow.measureCell(columnIndex, (width: number) => {\n max = Math.max(max, width);\n count++;\n if (count === totalCount) {\n this._onColumnResized(column, max, columnIndex);\n }\n });\n }\n }\n };\n\n /**\n * Call back function when an element in FocusZone becomes active. It will translate it into item\n * and call onActiveItemChanged callback if specified.\n *\n * @param row - element that became active in Focus Zone\n * @param focus - event from Focus Zone\n */\n private _onActiveRowChanged = (el?: HTMLElement, ev?: React.FocusEvent<HTMLElement>): void => {\n const { items, onActiveItemChanged } = this.props;\n\n if (!el) {\n return;\n }\n\n // Check and assign index only if the event was raised from any DetailsRow element\n if (el.getAttribute('data-item-index')) {\n const index = Number(el.getAttribute('data-item-index'));\n if (index >= 0) {\n if (onActiveItemChanged) {\n onActiveItemChanged(items[index], index, ev);\n }\n this.setState({\n focusedItemIndex: index,\n });\n }\n }\n };\n\n private _onBlur = (event: React.FocusEvent<HTMLElement>): void => {\n this.setState({\n focusedItemIndex: -1,\n });\n };\n\n private _getItemKey(item: any, itemIndex: number): string | number {\n const { getKey } = this.props;\n\n let itemKey: string | number | undefined = undefined;\n if (item) {\n itemKey = item.key;\n }\n\n if (getKey) {\n itemKey = getKey(item, itemIndex);\n }\n\n if (!itemKey) {\n itemKey = itemIndex;\n }\n\n return itemKey;\n }\n}\n\nexport function buildColumns(\n items: any[],\n canResizeColumns?: boolean,\n onColumnClick?: (ev: React.MouseEvent<HTMLElement>, column: IColumn) => void,\n sortedColumnKey?: string,\n isSortedDescending?: boolean,\n groupedColumnKey?: string,\n isMultiline?: boolean,\n) {\n const columns: IColumn[] = [];\n\n if (items && items.length) {\n const firstItem = items[0];\n\n for (const propName in firstItem) {\n if (firstItem.hasOwnProperty(propName)) {\n columns.push({\n key: propName,\n name: propName,\n fieldName: propName,\n minWidth: MIN_COLUMN_WIDTH,\n maxWidth: 300,\n isCollapsable: !!columns.length,\n isCollapsible: !!columns.length,\n isMultiline: isMultiline === undefined ? false : isMultiline,\n isSorted: sortedColumnKey === propName,\n isSortedDescending: !!isSortedDescending,\n isRowHeader: false,\n columnActionsMode: ColumnActionsMode.clickable,\n isResizable: canResizeColumns,\n onColumnClick: onColumnClick,\n isGrouped: groupedColumnKey === propName,\n });\n }\n }\n }\n\n return columns;\n}\n\nfunction getPaddedWidth(column: IColumn, props: IDetailsListProps, paddingOnly?: true): number {\n const { cellStyleProps = DEFAULT_CELL_STYLE_PROPS } = props;\n\n return (\n (paddingOnly ? 0 : column.calculatedWidth!) +\n cellStyleProps.cellLeftPadding +\n cellStyleProps.cellRightPadding +\n (column.isPadded ? cellStyleProps.cellExtraRightPadding : 0)\n );\n}\n\nfunction getGroupNestingDepth(groups: IDetailsListProps['groups']): number {\n let level = 0;\n let groupsInLevel = groups;\n\n while (groupsInLevel && groupsInLevel.length > 0) {\n level++;\n groupsInLevel = groupsInLevel[0].children;\n }\n\n return level;\n}\n\ninterface IGroupedDetailsListIndexMap {\n [key: string]: { numOfGroupHeadersBeforeItem: number; totalRowCount: number };\n}\n\nfunction useGroupedDetailsListIndexMap(groups: IDetailsListProps['groups']) {\n return React.useMemo((): IGroupedDetailsListIndexMap => {\n const indexMap: IGroupedDetailsListIndexMap = {};\n if (groups) {\n let rowCount = 1;\n let numGroupHeaders = 1;\n for (const group of groups) {\n const { key } = group;\n indexMap[key] = { numOfGroupHeadersBeforeItem: numGroupHeaders, totalRowCount: rowCount };\n numGroupHeaders++;\n rowCount += group.count + 1;\n }\n }\n return indexMap;\n }, [groups]);\n}\n","import { IDetailsListStyleProps, IDetailsListStyles } from './DetailsList.types';\nimport { getGlobalClassNames } from '../../Styling';\n\nconst GlobalClassNames = {\n root: 'ms-DetailsList',\n compact: 'ms-DetailsList--Compact',\n contentWrapper: 'ms-DetailsList-contentWrapper',\n headerWrapper: 'ms-DetailsList-headerWrapper',\n isFixed: 'is-fixed',\n isHorizontalConstrained: 'is-horizontalConstrained',\n listCell: 'ms-List-cell',\n};\n\nexport const getStyles = (props: IDetailsListStyleProps): IDetailsListStyles => {\n const { theme, className, isHorizontalConstrained, compact, isFixed } = props;\n const { semanticColors } = theme;\n const classNames = getGlobalClassNames(GlobalClassNames, theme);\n\n return {\n root: [\n classNames.root,\n theme.fonts.small,\n {\n position: 'relative',\n color: semanticColors.listText,\n selectors: {\n [`& .${classNames.listCell}`]: {\n minHeight: 38,\n wordBreak: 'break-word',\n },\n },\n },\n\n isFixed && classNames.isFixed,\n\n compact && [\n classNames.compact,\n {\n selectors: {\n [`.${classNames.listCell}`]: {\n minHeight: 32,\n },\n },\n },\n ],\n\n isHorizontalConstrained && [\n classNames.isHorizontalConstrained,\n {\n overflowX: 'auto',\n overflowY: 'visible',\n WebkitOverflowScrolling: 'touch',\n },\n ],\n\n className,\n ],\n\n focusZone: [\n {\n display: 'inline-block',\n minWidth: '100%',\n minHeight: 1,\n },\n ],\n headerWrapper: classNames.headerWrapper,\n contentWrapper: classNames.contentWrapper,\n };\n};\n","import * as React from 'react';\nimport { styled } from '../../Utilities';\nimport { IDetailsListProps, IDetailsListStyleProps, IDetailsListStyles } from './DetailsList.types';\nimport { DetailsListBase } from './DetailsList.base';\nimport { getStyles } from './DetailsList.styles';\n\nexport { IDetailsListProps };\n\nexport const DetailsList: React.FunctionComponent<IDetailsListProps> = styled<\n IDetailsListProps,\n IDetailsListStyleProps,\n IDetailsListStyles\n>(DetailsListBase, getStyles, undefined, {\n scope: 'DetailsList',\n});\n","import { IGroupedListStyleProps, IGroupedListStyles } from './GroupedList.types';\nimport { getGlobalClassNames, AnimationVariables } from '../../Styling';\n\nconst GlobalClassNames = {\n root: 'ms-GroupedList',\n compact: 'ms-GroupedList--Compact',\n group: 'ms-GroupedList-group',\n link: 'ms-Link',\n listCell: 'ms-List-cell',\n};\n\nconst beziers = {\n easeInOutSine: 'cubic-bezier(0.445, 0.050, 0.550, 0.950)',\n};\n\nexport const getStyles = (props: IGroupedListStyleProps): IGroupedListStyles => {\n const { theme, className, compact } = props;\n const { palette } = theme;\n const classNames = getGlobalClassNames(GlobalClassNames, theme!);\n\n return {\n root: [\n classNames.root,\n theme.fonts.small,\n {\n position: 'relative',\n selectors: {\n [`.${classNames.listCell}`]: {\n minHeight: 38, // be consistent with DetailsList styles\n },\n },\n },\n compact && [\n classNames.compact,\n {\n selectors: {\n [`.${classNames.listCell}`]: {\n minHeight: 32, // be consistent with DetailsList styles\n },\n },\n },\n ],\n className,\n ],\n group: [\n classNames.group,\n {\n transition: `background-color ${AnimationVariables.durationValue2} ${beziers.easeInOutSine}`,\n },\n ],\n groupIsDropping: {\n backgroundColor: palette.neutralLight,\n },\n };\n};\n","import { IGroupHeaderStyleProps, IGroupHeaderStyles } from './GroupHeader.types';\nimport {\n getGlobalClassNames,\n getFocusStyle,\n IStyle,\n AnimationVariables,\n FontWeights,\n IconFontSizes,\n} from '../../Styling';\nimport { getRTL, IsFocusVisibleClassName } from '../../Utilities';\nimport { DEFAULT_CELL_STYLE_PROPS } from '../DetailsList/DetailsRow.styles';\nimport { CHECK_CELL_WIDTH } from '../DetailsList/DetailsRowCheck.styles';\n// For every group level there is a GroupSpacer added. Importing this const to have the source value in one place.\nimport { SPACER_WIDTH as EXPAND_BUTTON_WIDTH } from './GroupSpacer';\n\nconst GlobalClassNames = {\n root: 'ms-GroupHeader',\n compact: 'ms-GroupHeader--compact',\n check: 'ms-GroupHeader-check',\n dropIcon: 'ms-GroupHeader-dropIcon',\n expand: 'ms-GroupHeader-expand',\n isCollapsed: 'is-collapsed',\n title: 'ms-GroupHeader-title',\n isSelected: 'is-selected',\n iconTag: 'ms-Icon--Tag',\n group: 'ms-GroupedList-group',\n isDropping: 'is-dropping',\n};\n\nconst beziers = {\n easeOutCirc: 'cubic-bezier(0.075, 0.820, 0.165, 1.000)',\n easeOutSine: 'cubic-bezier(0.390, 0.575, 0.565, 1.000)',\n easeInBack: 'cubic-bezier(0.600, -0.280, 0.735, 0.045)',\n};\n\nconst DEFAULT_GROUP_HEADER_HEIGHT = 48;\nconst COMPACT_GROUP_HEADER_HEIGHT = 40;\n\nexport const getStyles = (props: IGroupHeaderStyleProps): IGroupHeaderStyles => {\n const { theme, className, selected, isCollapsed, compact } = props;\n // padding from the source to align GroupHeader title with DetailsRow's first cell.\n const { cellLeftPadding } = DEFAULT_CELL_STYLE_PROPS;\n const finalRowHeight = compact ? COMPACT_GROUP_HEADER_HEIGHT : DEFAULT_GROUP_HEADER_HEIGHT;\n\n const { semanticColors, palette, fonts } = theme;\n\n const classNames = getGlobalClassNames(GlobalClassNames, theme!);\n\n const checkExpandResetStyles: IStyle = [\n getFocusStyle(theme),\n {\n cursor: 'default',\n background: 'none',\n backgroundColor: 'transparent',\n border: 'none',\n padding: 0, // cancel default <button> padding\n },\n ];\n\n return {\n root: [\n classNames.root,\n getFocusStyle(theme),\n theme.fonts.medium,\n {\n // keep the border for height but color it so it's invisible.\n borderBottom: `1px solid ${semanticColors.listBackground}`,\n cursor: 'default',\n userSelect: 'none',\n selectors: {\n ':hover': {\n background: semanticColors.listItemBackgroundHovered,\n color: semanticColors.actionLinkHovered,\n },\n [`&:hover .${classNames.check}`]: {\n opacity: 1,\n },\n [`.${IsFocusVisibleClassName} &:focus .${classNames.check}`]: {\n opacity: 1,\n },\n [`:global(.${classNames.group}.${classNames.isDropping})`]: {\n selectors: {\n [`& > .${classNames.root} .${classNames.dropIcon}`]: {\n transition:\n `transform ${AnimationVariables.durationValue4} ${beziers.easeOutCirc} ` +\n `opacity ${AnimationVariables.durationValue1} ${beziers.easeOutSine}`,\n transitionDelay: AnimationVariables.durationValue3,\n opacity: 1,\n transform: `rotate(0.2deg) scale(1);`, // rotation prevents jittery motion in IE\n },\n\n [`.${classNames.check}`]: {\n opacity: 0,\n },\n },\n },\n },\n },\n selected && [\n classNames.isSelected,\n {\n background: semanticColors.listItemBackgroundChecked,\n selectors: {\n ':hover': {\n background: semanticColors.listItemBackgroundCheckedHovered,\n },\n [`${classNames.check}`]: {\n opacity: 1,\n },\n },\n },\n ],\n compact && [classNames.compact, { border: 'none' }],\n className,\n ],\n groupHeaderContainer: [\n {\n display: 'flex',\n alignItems: 'center',\n height: finalRowHeight,\n },\n ],\n headerCount: [\n {\n padding: '0px 4px',\n },\n ],\n check: [\n classNames.check,\n checkExpandResetStyles,\n {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n // paddingTop and marginTop brought from the DetailsRow.styles.ts with explanation below.\n // Ensure that the check cell covers the top border of the cell.\n // This ensures the click target does not leave a spot which would\n // cause other items to be deselected.\n paddingTop: 1,\n marginTop: -1,\n opacity: 0,\n width: CHECK_CELL_WIDTH,\n height: finalRowHeight,\n selectors: {\n [`.${IsFocusVisibleClassName} &:focus`]: {\n opacity: 1,\n },\n },\n },\n ],\n expand: [\n classNames.expand,\n checkExpandResetStyles,\n {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n fontSize: fonts.small.fontSize,\n width: EXPAND_BUTTON_WIDTH,\n height: finalRowHeight,\n color: selected ? palette.neutralPrimary : palette.neutralSecondary,\n selectors: {\n ':hover': {\n backgroundColor: selected ? palette.neutralQuaternary : palette.neutralLight,\n },\n ':active': {\n backgroundColor: selected ? palette.neutralTertiaryAlt : palette.neutralQuaternaryAlt,\n },\n },\n },\n ],\n expandIsCollapsed: [\n isCollapsed\n ? [\n classNames.isCollapsed,\n {\n transform: 'rotate(0deg)',\n transformOrigin: '50% 50%',\n transition: 'transform .1s linear',\n },\n ]\n : {\n transform: getRTL(theme) ? 'rotate(-90deg)' : 'rotate(90deg)',\n transformOrigin: '50% 50%',\n transition: 'transform .1s linear',\n },\n ],\n title: [\n classNames.title,\n {\n paddingLeft: cellLeftPadding,\n fontSize: compact ? fonts.medium.fontSize : fonts.mediumPlus.fontSize,\n fontWeight: isCollapsed ? FontWeights.regular : FontWeights.semibold,\n cursor: 'pointer',\n outline: 0,\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis',\n },\n ],\n dropIcon: [\n classNames.dropIcon,\n {\n position: 'absolute',\n left: -26,\n fontSize: IconFontSizes.large,\n color: palette.neutralSecondary,\n transition:\n `transform ${AnimationVariables.durationValue2} ${beziers.easeInBack}, ` +\n `opacity ${AnimationVariables.durationValue4} ${beziers.easeOutSine}`,\n opacity: 0,\n transform: 'rotate(0.2deg) scale(0.65)', // rotation prevents jittery motion in IE\n transformOrigin: '10px 10px',\n selectors: {\n [`:global(.${classNames.iconTag})`]: {\n position: 'absolute',\n },\n },\n },\n ],\n };\n};\n","import * as React from 'react';\nimport { IProcessedStyleSet, ITheme } from '../../Styling';\nimport { composeRenderFunction, classNamesFunction, getId, getRTL, getRTLSafeKeyCode, KeyCodes } from '../../Utilities';\nimport { SelectionMode } from '../../Selection';\nimport { Check } from '../../Check';\nimport { Icon } from '../../Icon';\nimport { GroupSpacer } from './GroupSpacer';\nimport { Spinner } from '../../Spinner';\nimport {\n IGroupHeaderStyleProps,\n IGroupHeaderStyles,\n IGroupHeaderProps,\n IGroupHeaderCheckboxProps,\n} from './GroupHeader.types';\n\nconst getClassNames = classNamesFunction<IGroupHeaderStyleProps, IGroupHeaderStyles>();\n\nexport interface IGroupHeaderState {\n isCollapsed: boolean;\n isLoadingVisible: boolean;\n}\n\nexport class GroupHeaderBase extends React.Component<IGroupHeaderProps, IGroupHeaderState> {\n public static defaultProps: IGroupHeaderProps = {\n expandButtonProps: { 'aria-label': 'expand collapse group' },\n };\n\n private _classNames: IProcessedStyleSet<IGroupHeaderStyles>;\n private _id: string;\n\n public static getDerivedStateFromProps(\n nextProps: IGroupHeaderProps,\n previousState: IGroupHeaderState,\n ): IGroupHeaderState {\n if (nextProps.group) {\n const newCollapsed = nextProps.group.isCollapsed;\n const isGroupLoading = nextProps.isGroupLoading;\n const newLoadingVisible = !newCollapsed && isGroupLoading && isGroupLoading(nextProps.group);\n\n return {\n ...previousState,\n isCollapsed: newCollapsed || false,\n isLoadingVisible: newLoadingVisible || false,\n };\n }\n\n return previousState;\n }\n\n constructor(props: IGroupHeaderProps) {\n super(props);\n\n this._id = getId('GroupHeader');\n\n this.state = {\n isCollapsed: (this.props.group && this.props.group.isCollapsed) as boolean,\n isLoadingVisible: false,\n };\n }\n\n public render(): JSX.Element | null {\n const {\n group,\n groupLevel = 0,\n viewport,\n selectionMode,\n loadingText,\n // eslint-disable-next-line deprecation/deprecation\n isSelected = false,\n selected = false,\n indentWidth,\n onRenderGroupHeaderCheckbox,\n isCollapsedGroupSelectVisible = true,\n expandButtonProps,\n expandButtonIcon,\n selectAllButtonProps,\n theme,\n styles,\n className,\n compact,\n ariaPosInSet,\n ariaSetSize,\n ariaRowIndex,\n useFastIcons,\n } = this.props;\n\n const onRenderTitle = this.props.onRenderTitle\n ? composeRenderFunction(this.props.onRenderTitle, this._onRenderTitle)\n : this._onRenderTitle;\n\n const defaultCheckboxRender = useFastIcons ? this._fastDefaultCheckboxRender : this._defaultCheckboxRender;\n\n const onRenderCheckbox = onRenderGroupHeaderCheckbox\n ? composeRenderFunction(onRenderGroupHeaderCheckbox, defaultCheckboxRender)\n : defaultCheckboxRender;\n\n const { isCollapsed, isLoadingVisible } = this.state;\n\n const canSelectGroup = selectionMode === SelectionMode.multiple;\n const isSelectionCheckVisible = canSelectGroup && (isCollapsedGroupSelectVisible || !(group && group.isCollapsed));\n const currentlySelected = selected || isSelected;\n\n const isRTL = getRTL(theme);\n\n this._classNames = getClassNames(styles, {\n theme: theme!,\n className,\n selected: currentlySelected,\n isCollapsed,\n compact,\n });\n\n if (!group) {\n return null;\n }\n\n return (\n <div\n className={this._classNames.root}\n style={viewport ? { minWidth: viewport.width } : {}}\n role=\"row\"\n aria-setsize={ariaSetSize}\n aria-posinset={ariaPosInSet}\n aria-rowindex={ariaRowIndex}\n data-is-focusable={true}\n onKeyUp={this._onKeyUp}\n aria-label={group.ariaLabel}\n aria-labelledby={group.ariaLabel ? undefined : this._id}\n aria-expanded={!this.state.isCollapsed}\n aria-selected={canSelectGroup ? currentlySelected : undefined}\n aria-level={groupLevel + 1}\n data-selection-index={group.startIndex}\n data-selection-span={group.count}\n >\n <div className={this._classNames.groupHeaderContainer} role=\"presentation\">\n {isSelectionCheckVisible ? (\n <div role=\"gridcell\">\n <button\n data-is-focusable={false}\n type=\"button\"\n className={this._classNames.check}\n role=\"checkbox\"\n id={`${this._id}-check`}\n aria-checked={currentlySelected}\n aria-labelledby={`${this._id}-check ${this._id}`}\n data-selection-toggle={true}\n {...selectAllButtonProps}\n >\n {onRenderCheckbox({ checked: currentlySelected, theme }, onRenderCheckbox)}\n </button>\n </div>\n ) : (\n selectionMode !== SelectionMode.none && <GroupSpacer indentWidth={indentWidth} count={1} />\n )}\n\n <GroupSpacer indentWidth={indentWidth} count={groupLevel!} />\n\n <div className={this._classNames.dropIcon} role=\"presentation\">\n <Icon iconName=\"Tag\" />\n </div>\n <div role=\"gridcell\">\n <button\n data-is-focusable={false}\n data-selection-disabled={true}\n type=\"button\"\n className={this._classNames.expand}\n onClick={this._onToggleClick}\n aria-expanded={!this.state.isCollapsed}\n {...expandButtonProps}\n >\n <Icon\n className={this._classNames.expandIsCollapsed}\n iconName={expandButtonIcon || (isRTL ? 'ChevronLeftMed' : 'ChevronRightMed')}\n />\n </button>\n </div>\n\n {onRenderTitle(this.props)}\n {isLoadingVisible && <Spinner label={loadingText} />}\n </div>\n </div>\n );\n }\n\n private _toggleCollapse = () => {\n const { group, onToggleCollapse, isGroupLoading } = this.props;\n const { isCollapsed } = this.state;\n\n const newCollapsed = !isCollapsed;\n const newLoadingVisible = !newCollapsed && isGroupLoading && isGroupLoading(group!);\n\n this.setState({\n isCollapsed: newCollapsed,\n isLoadingVisible: newLoadingVisible as boolean,\n });\n if (onToggleCollapse) {\n onToggleCollapse(group!);\n }\n };\n\n private _onKeyUp = (ev: React.KeyboardEvent<HTMLElement>): void => {\n const { group, onGroupHeaderKeyUp } = this.props;\n\n if (onGroupHeaderKeyUp) {\n onGroupHeaderKeyUp(ev, group!);\n }\n\n if (!ev.defaultPrevented) {\n const shouldOpen = this.state.isCollapsed && ev.which === getRTLSafeKeyCode(KeyCodes.right, this.props.theme);\n const shouldClose = !this.state.isCollapsed && ev.which === getRTLSafeKeyCode(KeyCodes.left, this.props.theme);\n if (shouldClose || shouldOpen) {\n this._toggleCollapse();\n ev.stopPropagation();\n ev.preventDefault();\n }\n }\n };\n\n private _onToggleClick = (ev: React.MouseEvent<HTMLElement>): void => {\n this._toggleCollapse();\n ev.stopPropagation();\n ev.preventDefault();\n };\n\n private _onHeaderClick = (): void => {\n const { group, onGroupHeaderClick } = this.props;\n\n if (onGroupHeaderClick) {\n onGroupHeaderClick(group!);\n }\n };\n\n private _defaultCheckboxRender(checkboxProps: IGroupHeaderCheckboxProps) {\n return <Check checked={checkboxProps.checked} />;\n }\n\n private _fastDefaultCheckboxRender(checkboxProps: IGroupHeaderCheckboxProps) {\n return <FastCheck theme={checkboxProps.theme} checked={checkboxProps.checked} />;\n }\n\n private _onRenderTitle = (props: IGroupHeaderProps): JSX.Element | null => {\n const { group } = props;\n\n if (!group) {\n return null;\n }\n\n const onRenderName = props.onRenderName\n ? composeRenderFunction(props.onRenderName, this._onRenderName)\n : this._onRenderName;\n\n return (\n <div\n className={this._classNames.title}\n id={this._id}\n onClick={this._onHeaderClick}\n role=\"gridcell\"\n aria-colspan={this.props.ariaColSpan}\n data-selection-invoke={true}\n >\n {onRenderName(props)}\n </div>\n );\n };\n\n private _onRenderName = (props: IGroupHeaderProps): JSX.Element | null => {\n const { group } = props;\n\n if (!group) {\n return null;\n }\n\n return (\n <>\n <span>{group.name}</span>\n {\n // hasMoreData flag is set when grouping is throttled by SPO server which in turn resorts to regular\n // sorting to simulate grouping behaviors, in which case group count is the number of items returned\n // so far. That's the reason we need to use \"+\" to show we might have more items than count\n // indicates.\n }\n <span className={this._classNames.headerCount}>\n ({group.count}\n {group.hasMoreData && '+'})\n </span>\n </>\n );\n };\n}\n\nconst FastCheck = React.memo((props: { theme?: ITheme; checked?: boolean; className?: string }) => {\n return <Check theme={props.theme} checked={props.checked} className={props.className} useFastIcons />;\n});\n","import * as React from 'react';\nimport { styled } from '../../Utilities';\nimport { getStyles } from './GroupHeader.styles';\nimport { GroupHeaderBase } from './GroupHeader.base';\nimport { IGroupHeaderProps, IGroupHeaderStyles, IGroupHeaderStyleProps } from './GroupHeader.types';\nexport { IGroupHeaderProps };\n\nexport const GroupHeader: React.FunctionComponent<IGroupHeaderProps> = styled<\n IGroupHeaderProps,\n IGroupHeaderStyleProps,\n IGroupHeaderStyles\n>(GroupHeaderBase, getStyles, undefined, {\n scope: 'GroupHeader',\n});\n","import { IGroupShowAllProps, IGroupShowAllStyleProps, IGroupShowAllStyles } from './GroupShowAll.types';\nimport { getGlobalClassNames } from '../../Styling';\n\nexport { IGroupShowAllProps };\n\nconst GlobalClassNames = {\n root: 'ms-GroupShowAll',\n link: 'ms-Link',\n};\n\nexport const getStyles = (props: IGroupShowAllStyleProps): IGroupShowAllStyles => {\n const { theme } = props;\n const { fonts } = theme;\n\n const classNames = getGlobalClassNames(GlobalClassNames, theme);\n\n return {\n root: [\n classNames.root,\n {\n position: 'relative',\n padding: '10px 84px',\n cursor: 'pointer',\n selectors: {\n [`.${classNames.link}`]: {\n fontSize: fonts.small.fontSize,\n },\n },\n },\n ],\n };\n};\n","import * as React from 'react';\nimport { useCallback } from 'react';\nimport { classNamesFunction } from '../../Utilities';\nimport { Link } from '../../Link';\nimport { IGroupShowAllProps } from './GroupShowAll.types';\nimport { IGroupShowAllStyleProps, IGroupShowAllStyles } from './GroupShowAll.types';\nimport { GroupSpacer } from './GroupSpacer';\n\nconst getClassNames = classNamesFunction<IGroupShowAllStyleProps, IGroupShowAllStyles>();\n\nexport const GroupShowAllBase: React.FunctionComponent<IGroupShowAllProps> = props => {\n const { group, groupLevel, showAllLinkText = 'Show All', styles, theme, onToggleSummarize } = props;\n const classNames = getClassNames(styles, { theme: theme! });\n\n const memoizedOnClick = useCallback(\n (ev: React.MouseEvent<HTMLElement>) => {\n onToggleSummarize!(group!);\n\n ev.stopPropagation();\n ev.preventDefault();\n },\n [onToggleSummarize, group],\n );\n\n if (group) {\n return (\n <div className={classNames.root}>\n <GroupSpacer count={groupLevel!} />\n <Link onClick={memoizedOnClick}>{showAllLinkText}</Link>\n </div>\n );\n }\n\n return null;\n};\n","import * as React from 'react';\nimport { styled } from '../../Utilities';\nimport { getStyles } from './GroupShowAll.styles';\nimport { GroupShowAllBase } from './GroupShowAll.base';\nimport { IGroupShowAllProps, IGroupShowAllStyleProps, IGroupShowAllStyles } from './GroupShowAll.types';\nexport { IGroupShowAllProps };\n\nexport const GroupShowAll: React.FunctionComponent<IGroupShowAllProps> = styled<\n IGroupShowAllProps,\n IGroupShowAllStyleProps,\n IGroupShowAllStyles\n>(GroupShowAllBase, getStyles, undefined, { scope: 'GroupShowAll' });\n","import { IGroupFooterStyleProps, IGroupFooterStyles } from './GroupFooter.types';\nimport { getGlobalClassNames } from '../../Styling';\n\nconst GlobalClassNames = {\n root: 'ms-groupFooter',\n};\n\nexport const getStyles = (props: IGroupFooterStyleProps): IGroupFooterStyles => {\n const { theme, className } = props;\n const classNames = getGlobalClassNames(GlobalClassNames, theme!);\n\n return {\n root: [\n theme.fonts.medium,\n classNames.root,\n {\n position: 'relative',\n padding: '5px 38px',\n },\n className,\n ],\n };\n};\n","import * as React from 'react';\nimport { classNamesFunction } from '../../Utilities';\nimport { GroupSpacer } from './GroupSpacer';\nimport { IGroupFooterStyleProps, IGroupFooterStyles, IGroupFooterProps } from './GroupFooter.types';\nconst getClassNames = classNamesFunction<IGroupFooterStyleProps, IGroupFooterStyles>();\n\nexport const GroupFooterBase: React.FunctionComponent<IGroupFooterProps> = props => {\n const { group, groupLevel, footerText, indentWidth, styles, theme } = props;\n const classNames = getClassNames(styles, { theme: theme! });\n\n if (group && footerText) {\n return (\n <div className={classNames.root}>\n <GroupSpacer indentWidth={indentWidth} count={groupLevel!} />\n {footerText}\n </div>\n );\n }\n\n return null;\n};\n","import * as React from 'react';\nimport { styled } from '../../Utilities';\nimport { getStyles } from './GroupFooter.styles';\nimport { GroupFooterBase } from './GroupFooter.base';\nimport { IGroupFooterProps, IGroupFooterStyles, IGroupFooterStyleProps } from './GroupFooter.types';\nexport { IGroupFooterProps };\n\nexport const GroupFooter: React.FunctionComponent<IGroupFooterProps> = styled<\n IGroupFooterProps,\n IGroupFooterStyleProps,\n IGroupFooterStyles\n>(GroupFooterBase, getStyles, undefined, {\n scope: 'GroupFooter',\n});\n","import * as React from 'react';\nimport { IGroup, IGroupDividerProps, IGroupRenderProps, IGroupedListStyles } from './GroupedList.types';\nimport { IGroupHeaderProps } from './GroupHeader.types';\nimport { IGroupFooterProps } from './GroupFooter.types';\nimport { IGroupShowAllProps } from './GroupShowAll.types';\n\nimport { IDragDropContext, IDragDropEvents, IDragDropHelper } from '../../utilities/dragdrop/index';\n\nimport { IProcessedStyleSet } from '../../Styling';\nimport { initializeComponentRef, IRenderFunction, IDisposable, css, getId, EventGroup } from '../../Utilities';\n\nimport { ISelection, SelectionMode, SELECTION_CHANGE } from '../../utilities/selection/index';\n\nimport { GroupHeader } from './GroupHeader';\nimport { GroupShowAll } from './GroupShowAll';\nimport { GroupFooter } from './GroupFooter';\n\nimport { List } from '../../List';\nimport { IDragDropOptions } from './../../utilities/dragdrop/interfaces';\nimport { IViewport } from '../../utilities/decorators/withViewport';\nimport { IListProps } from '../List/index';\n\nexport interface IGroupedListSectionProps extends React.ClassAttributes<GroupedListSection> {\n /** GroupedList resolved class names */\n groupedListClassNames?: IProcessedStyleSet<IGroupedListStyles>;\n\n /**\n * Gets the component ref.\n */\n componentRef?: () => void;\n\n /** Whether to render in compact mode */\n compact?: boolean;\n\n /** Map of callback functions related to drag and drop functionality. */\n dragDropEvents?: IDragDropEvents;\n\n /** helper to manage drag/drop across item rows and groups */\n dragDropHelper?: IDragDropHelper;\n\n /** Event names and corresponding callbacks that will be registered to the group and the rendered elements */\n eventsToRegister?: { eventName: string; callback: (context: IDragDropContext, event?: any) => void }[];\n\n /** Information to pass in to the group footer. */\n footerProps?: IGroupFooterProps;\n\n /** Grouping item limit. */\n getGroupItemLimit?: (group: IGroup) => number;\n\n /** Optional grouping instructions. */\n groupIndex?: number;\n\n /** Optional group nesting level. */\n groupNestingDepth?: number;\n\n /** Optional grouping instructions. */\n group?: IGroup;\n\n /** Optional override properties to render groups. */\n groupProps?: IGroupRenderProps;\n\n /** Information to pass in to the group header. */\n headerProps?: IGroupHeaderProps;\n\n /** List of items to render. */\n items: any[];\n\n /** Optional list props to pass to list renderer. */\n listProps?: IListProps;\n\n /** Rendering callback to render the group items. */\n onRenderCell: (nestingDepth?: number, item?: any, index?: number) => React.ReactNode;\n\n /** Optional selection model to track selection state. */\n selection?: ISelection;\n\n /** Controls how/if the details list manages selection. */\n selectionMode?: SelectionMode;\n\n /** Information to pass in to the group Show All footer. */\n showAllProps?: IGroupShowAllProps;\n\n /** Optional Viewport, provided by the parent component. */\n viewport?: IViewport;\n\n /** Override for rendering the group header. */\n onRenderGroupHeader?: IRenderFunction<IGroupHeaderProps>;\n\n /** Override for rendering the group Show All link. */\n onRenderGroupShowAll?: IRenderFunction<IGroupShowAllProps>;\n\n /** Override for rendering the group footer. */\n onRenderGroupFooter?: IRenderFunction<IGroupFooterProps>;\n\n /**\n * Optional callback to determine whether the list should be rendered in full, or virtualized.\n * Virtualization will add and remove pages of items as the user scrolls them into the visible range.\n * This benefits larger list scenarios by reducing the DOM on the screen, but can negatively affect performance for\n * smaller lists.\n * The default implementation will virtualize when this callback is not provided.\n */\n onShouldVirtualize?: (props: IListProps) => boolean;\n\n /** Stores parent group's children. */\n groups?: IGroup[];\n}\n\nexport interface IGroupedListSectionState {\n isDropping?: boolean;\n isSelected?: boolean;\n}\n\nconst DEFAULT_DROPPING_CSS_CLASS = 'is-dropping';\n\nexport class GroupedListSection extends React.Component<IGroupedListSectionProps, IGroupedListSectionState> {\n private _root = React.createRef<HTMLDivElement>();\n private _list = React.createRef<List>();\n private _subGroupRefs: Record<string, GroupedListSection | null> = {};\n private _id: string;\n private _events: EventGroup;\n\n private _dragDropSubscription: IDisposable;\n private _droppingClassName: string = '';\n\n constructor(props: IGroupedListSectionProps) {\n super(props);\n\n const { selection, group } = props;\n\n initializeComponentRef(this);\n\n this._id = getId('GroupedListSection');\n\n this.state = {\n isDropping: false,\n isSelected: selection && group ? selection.isRangeSelected(group.startIndex, group.count) : false,\n };\n\n this._events = new EventGroup(this);\n }\n\n public componentDidMount(): void {\n const { dragDropHelper, selection } = this.props;\n\n if (dragDropHelper && this._root.current) {\n this._dragDropSubscription = dragDropHelper.subscribe(\n this._root.current,\n this._events,\n this._getGroupDragDropOptions(),\n );\n }\n\n if (selection) {\n this._events.on(selection, SELECTION_CHANGE, this._onSelectionChange);\n }\n }\n\n public componentWillUnmount() {\n this._events.dispose();\n\n if (this._dragDropSubscription) {\n this._dragDropSubscription.dispose();\n }\n }\n\n public componentDidUpdate(previousProps: IGroupedListSectionProps) {\n if (\n this.props.group !== previousProps.group ||\n this.props.groupIndex !== previousProps.groupIndex ||\n this.props.dragDropHelper !== previousProps.dragDropHelper\n ) {\n if (this._dragDropSubscription) {\n this._dragDropSubscription.dispose();\n delete this._dragDropSubscription;\n }\n\n if (this.props.dragDropHelper && this._root.current) {\n this._dragDropSubscription = this.props.dragDropHelper.subscribe(\n this._root.current,\n this._events,\n this._getGroupDragDropOptions(),\n );\n }\n }\n }\n\n public render(): JSX.Element {\n const {\n getGroupItemLimit,\n group,\n groupIndex,\n headerProps,\n showAllProps,\n footerProps,\n viewport,\n selectionMode,\n onRenderGroupHeader = this._onRenderGroupHeader,\n onRenderGroupShowAll = this._onRenderGroupShowAll,\n onRenderGroupFooter = this._onRenderGroupFooter,\n onShouldVirtualize,\n groupedListClassNames,\n groups,\n compact,\n listProps = {},\n } = this.props;\n const { isSelected } = this.state;\n const renderCount = group && getGroupItemLimit ? getGroupItemLimit(group) : Infinity;\n const isShowAllVisible =\n group &&\n !group.children &&\n !group.isCollapsed &&\n !group.isShowingAll &&\n (group.count > renderCount || group.hasMoreData);\n const hasNestedGroups = group && group.children && group.children.length > 0;\n\n const { version } = listProps;\n\n const dividerProps: IGroupDividerProps = {\n group,\n groupIndex,\n groupLevel: group ? group.level : 0,\n isSelected,\n selected: isSelected,\n viewport,\n selectionMode,\n groups,\n compact,\n };\n\n const ariaControlsProps: IGroupHeaderProps = {\n groupedListId: this._id,\n ariaSetSize: groups ? groups.length : undefined,\n ariaPosInSet: groupIndex !== undefined ? groupIndex + 1 : undefined,\n };\n\n const groupHeaderProps: IGroupHeaderProps = { ...headerProps, ...dividerProps, ...ariaControlsProps };\n const groupShowAllProps: IGroupShowAllProps = { ...showAllProps, ...dividerProps };\n const groupFooterProps: IGroupFooterProps = { ...footerProps, ...dividerProps };\n\n const isDraggable: boolean =\n !!this.props.dragDropHelper &&\n this._getGroupDragDropOptions().canDrag!(group) &&\n !!this.props.dragDropEvents!.canDragGroups;\n\n return (\n <div\n ref={this._root}\n {...(isDraggable && { draggable: true })}\n className={css(groupedListClassNames && groupedListClassNames.group, this._getDroppingClassName())}\n role=\"presentation\"\n >\n {onRenderGroupHeader(groupHeaderProps, this._onRenderGroupHeader)}\n {group && group.isCollapsed ? null : hasNestedGroups ? (\n <List\n role=\"presentation\"\n ref={this._list}\n items={group ? group.children : []}\n onRenderCell={this._renderSubGroup}\n getItemCountForPage={this._returnOne}\n onShouldVirtualize={onShouldVirtualize}\n version={version}\n id={this._id}\n />\n ) : (\n this._onRenderGroup(renderCount)\n )}\n {group && group.isCollapsed\n ? null\n : isShowAllVisible && onRenderGroupShowAll(groupShowAllProps, this._onRenderGroupShowAll)}\n {onRenderGroupFooter(groupFooterProps, this._onRenderGroupFooter)}\n </div>\n );\n }\n\n public forceUpdate() {\n super.forceUpdate();\n this.forceListUpdate();\n }\n\n public forceListUpdate() {\n const { group } = this.props;\n\n if (this._list.current) {\n this._list.current.forceUpdate();\n\n if (group && group.children && group.children.length > 0) {\n const subGroupCount = group.children.length;\n\n for (let i = 0; i < subGroupCount; i++) {\n const subGroup = this._list.current.pageRefs['subGroup_' + String(i)] as GroupedListSection;\n\n if (subGroup) {\n subGroup.forceListUpdate();\n }\n }\n }\n } else {\n const subGroup = this._subGroupRefs['subGroup_' + String(0)];\n\n if (subGroup) {\n subGroup.forceListUpdate();\n }\n }\n }\n\n private _onRenderGroupHeader = (props: IGroupHeaderProps): JSX.Element => {\n return <GroupHeader {...props} />;\n };\n\n private _onRenderGroupShowAll = (props: IGroupShowAllProps): JSX.Element => {\n return <GroupShowAll {...props} />;\n };\n\n private _onRenderGroupFooter = (props: IGroupFooterProps): JSX.Element => {\n return <GroupFooter {...props} />;\n };\n\n private _onSelectionChange(): void {\n const { group, selection } = this.props;\n if (selection && group) {\n const isSelected = selection.isRangeSelected(group.startIndex, group.count);\n\n if (isSelected !== this.state.isSelected) {\n this.setState({ isSelected });\n }\n }\n }\n\n private _onRenderGroupCell(\n onRenderCell: any,\n groupNestingDepth: number | undefined,\n group: IGroup | undefined,\n ): (item: any, itemIndex: number | undefined) => React.ReactNode {\n return (item: any, itemIndex: number | undefined): React.ReactNode => {\n return onRenderCell(groupNestingDepth, item, itemIndex, group);\n };\n }\n\n private _onRenderGroup(renderCount: number): JSX.Element {\n const { group, items, onRenderCell, listProps, groupNestingDepth, onShouldVirtualize, groupProps } = this.props;\n const count = group && !group.isShowingAll ? group.count : items.length;\n const startIndex = group ? group.startIndex : 0;\n\n return (\n <List\n role={groupProps && groupProps.role ? groupProps.role : 'rowgroup'}\n aria-label={group?.name}\n items={items}\n onRenderCell={this._onRenderGroupCell(onRenderCell, groupNestingDepth, group)}\n ref={this._list}\n renderCount={Math.min(count, renderCount)}\n startIndex={startIndex}\n onShouldVirtualize={onShouldVirtualize}\n id={this._id}\n {...listProps}\n />\n );\n }\n\n private _renderSubGroup = (subGroup: IGroup, subGroupIndex: number): JSX.Element | null => {\n const {\n dragDropEvents,\n dragDropHelper,\n eventsToRegister,\n getGroupItemLimit,\n groupNestingDepth,\n groupProps,\n items,\n headerProps,\n showAllProps,\n footerProps,\n listProps,\n onRenderCell,\n selection,\n selectionMode,\n viewport,\n onRenderGroupHeader,\n onRenderGroupShowAll,\n onRenderGroupFooter,\n onShouldVirtualize,\n group,\n compact,\n } = this.props;\n\n const nestingDepth = subGroup.level ? subGroup.level + 1 : groupNestingDepth;\n\n return !subGroup || subGroup.count > 0 || (groupProps && groupProps.showEmptyGroups) ? (\n <GroupedListSection\n ref={ref => (this._subGroupRefs['subGroup_' + subGroupIndex] = ref)}\n key={this._getGroupKey(subGroup, subGroupIndex)}\n dragDropEvents={dragDropEvents}\n dragDropHelper={dragDropHelper}\n eventsToRegister={eventsToRegister}\n footerProps={footerProps}\n getGroupItemLimit={getGroupItemLimit}\n group={subGroup}\n groupIndex={subGroupIndex}\n groupNestingDepth={nestingDepth}\n groupProps={groupProps}\n headerProps={headerProps}\n items={items}\n listProps={listProps}\n onRenderCell={onRenderCell}\n selection={selection}\n selectionMode={selectionMode}\n showAllProps={showAllProps}\n viewport={viewport}\n onRenderGroupHeader={onRenderGroupHeader}\n onRenderGroupShowAll={onRenderGroupShowAll}\n onRenderGroupFooter={onRenderGroupFooter}\n onShouldVirtualize={onShouldVirtualize}\n groups={group ? group.children : []}\n compact={compact}\n />\n ) : null;\n };\n\n private _returnOne(): number {\n return 1;\n }\n\n private _getGroupKey(group: IGroup, index: number): string {\n return 'group-' + (group && group.key ? group.key : String(group.level) + String(index));\n }\n\n /**\n * collect all the data we need to enable drag/drop for a group\n */\n private _getGroupDragDropOptions = (): IDragDropOptions => {\n const { group, groupIndex, dragDropEvents, eventsToRegister } = this.props;\n const options = {\n eventMap: eventsToRegister,\n selectionIndex: -1,\n context: { data: group, index: groupIndex, isGroup: true },\n updateDropState: this._updateDroppingState,\n canDrag: dragDropEvents!.canDrag,\n canDrop: dragDropEvents!.canDrop,\n onDrop: dragDropEvents!.onDrop,\n onDragStart: dragDropEvents!.onDragStart,\n onDragEnter: dragDropEvents!.onDragEnter,\n onDragLeave: dragDropEvents!.onDragLeave,\n onDragEnd: dragDropEvents!.onDragEnd,\n onDragOver: dragDropEvents!.onDragOver,\n };\n return options as IDragDropOptions;\n };\n\n /**\n * update groupIsDropping state based on the input value, which is used to change style during drag and drop\n *\n * @param newValue - new isDropping state value\n * @param event - the event trigger dropping state change which can be dragenter, dragleave etc\n */\n private _updateDroppingState = (newIsDropping: boolean, event: DragEvent): void => {\n const { isDropping } = this.state;\n const { dragDropEvents, group } = this.props;\n\n if (isDropping !== newIsDropping) {\n if (isDropping) {\n if (dragDropEvents && dragDropEvents.onDragLeave) {\n dragDropEvents.onDragLeave(group, event);\n }\n } else {\n if (dragDropEvents && dragDropEvents.onDragEnter) {\n this._droppingClassName = dragDropEvents.onDragEnter(group, event);\n }\n }\n\n this.setState({ isDropping: newIsDropping });\n }\n };\n\n /**\n * get the correct css class to reflect the dropping state for a given group\n *\n * If the group is the current drop target, return the default dropping class name\n * Otherwise, return '';\n *\n */\n private _getDroppingClassName(): string {\n let { isDropping } = this.state;\n const { group, groupedListClassNames } = this.props;\n\n isDropping = !!(group && isDropping);\n\n return css(\n isDropping && this._droppingClassName,\n isDropping && DEFAULT_DROPPING_CSS_CLASS,\n isDropping && groupedListClassNames && groupedListClassNames.groupIsDropping,\n );\n }\n}\n","import * as React from 'react';\nimport { IProcessedStyleSet } from '../../Styling';\nimport {\n IGroupedList,\n IGroupedListProps,\n IGroup,\n IGroupedListStyleProps,\n IGroupedListStyles,\n} from './GroupedList.types';\nimport { initializeComponentRef, classNamesFunction, KeyCodes, getRTLSafeKeyCode, css } from '../../Utilities';\nimport { GroupedListSection } from './GroupedListSection';\nimport { List, ScrollToMode, IListProps } from '../../List';\nimport { SelectionMode } from '../../utilities/selection/index';\nimport { DEFAULT_ROW_HEIGHTS } from '../DetailsList/DetailsRow.styles';\nimport { IGroupHeaderProps } from './GroupHeader';\nimport { IGroupShowAllProps } from './GroupShowAll.styles';\nimport { IGroupFooterProps } from './GroupFooter.types';\nimport { FocusZone, FocusZoneDirection } from '../../FocusZone';\n\nconst getClassNames = classNamesFunction<IGroupedListStyleProps, IGroupedListStyles>();\nconst { rowHeight: ROW_HEIGHT, compactRowHeight: COMPACT_ROW_HEIGHT } = DEFAULT_ROW_HEIGHTS;\n\nexport interface IGroupedListState {\n selectionMode?: IGroupedListProps['selectionMode'];\n compact?: IGroupedListProps['compact'];\n groups?: IGroup[];\n items?: IGroupedListProps['items'];\n listProps?: IGroupedListProps['listProps'];\n version: {};\n}\n\nexport class GroupedListBase extends React.Component<IGroupedListProps, IGroupedListState> implements IGroupedList {\n public static defaultProps = {\n selectionMode: SelectionMode.multiple,\n isHeaderVisible: true,\n groupProps: {},\n compact: false,\n };\n\n private _classNames: IProcessedStyleSet<IGroupedListStyles>;\n\n private _list = React.createRef<List>();\n\n private _isSomeGroupExpanded: boolean;\n\n public static getDerivedStateFromProps(\n nextProps: IGroupedListProps,\n previousState: IGroupedListState,\n ): IGroupedListState {\n const { groups, selectionMode, compact, items, listProps } = nextProps;\n const listVersion = listProps && listProps.version;\n\n let nextState = {\n ...previousState,\n selectionMode,\n compact,\n groups,\n listProps,\n };\n\n let shouldForceUpdates = false;\n\n const previousListVersion = previousState.listProps && previousState.listProps.version;\n\n if (\n listVersion !== previousListVersion ||\n items !== previousState.items ||\n groups !== previousState.groups ||\n selectionMode !== previousState.selectionMode ||\n compact !== previousState.compact\n ) {\n // If there are any props not passed explicitly to `List` which have an impact on the behavior of `onRenderCell`,\n // these need to 'force-update' this component by revving the version. Otherwise, the List might render with stale\n // data.\n shouldForceUpdates = true;\n }\n\n if (shouldForceUpdates) {\n nextState = {\n ...nextState,\n version: {},\n };\n }\n\n return nextState;\n }\n\n constructor(props: IGroupedListProps) {\n super(props);\n\n initializeComponentRef(this);\n\n this._isSomeGroupExpanded = this._computeIsSomeGroupExpanded(props.groups);\n\n const { listProps: { version = {} } = {} } = props;\n\n this.state = {\n groups: props.groups,\n items: props.items,\n listProps: props.listProps,\n version,\n };\n }\n\n public scrollToIndex(index: number, measureItem?: (itemIndex: number) => number, scrollToMode?: ScrollToMode): void {\n if (this._list.current) {\n this._list.current.scrollToIndex(index, measureItem, scrollToMode);\n }\n }\n\n public getStartItemIndexInView(): number {\n return this._list.current!.getStartItemIndexInView() || 0;\n }\n\n public componentDidMount() {\n const { groupProps, groups = [] } = this.props;\n\n if (groupProps && groupProps.isAllGroupsCollapsed) {\n this._setGroupsCollapsedState(groups, groupProps.isAllGroupsCollapsed);\n }\n }\n\n public render(): JSX.Element {\n const {\n className,\n usePageCache,\n onShouldVirtualize,\n theme,\n role = 'treegrid',\n styles,\n compact,\n focusZoneProps = {},\n rootListProps = {},\n } = this.props;\n const { groups, version } = this.state;\n\n this._classNames = getClassNames(styles, {\n theme: theme!,\n className,\n compact: compact,\n });\n\n const { shouldEnterInnerZone = this._isInnerZoneKeystroke } = focusZoneProps;\n\n return (\n <FocusZone\n direction={FocusZoneDirection.vertical}\n data-automationid=\"GroupedList\"\n data-is-scrollable=\"false\"\n role=\"presentation\"\n {...focusZoneProps}\n shouldEnterInnerZone={shouldEnterInnerZone}\n className={css(this._classNames.root, focusZoneProps.className)}\n >\n {!groups ? (\n this._renderGroup(undefined, 0)\n ) : (\n <List\n ref={this._list}\n role={role}\n items={groups}\n onRenderCell={this._renderGroup}\n getItemCountForPage={this._returnOne}\n getPageHeight={this._getPageHeight}\n getPageSpecification={this._getPageSpecification}\n usePageCache={usePageCache}\n onShouldVirtualize={onShouldVirtualize}\n version={version}\n {...rootListProps}\n />\n )}\n </FocusZone>\n );\n }\n\n public forceUpdate() {\n super.forceUpdate();\n this._forceListUpdates();\n }\n\n public toggleCollapseAll(allCollapsed: boolean): void {\n const { groups = [] } = this.state;\n const { groupProps } = this.props;\n const onToggleCollapseAll = groupProps && groupProps.onToggleCollapseAll;\n\n if (groups.length > 0) {\n if (onToggleCollapseAll) {\n onToggleCollapseAll(allCollapsed);\n }\n\n this._setGroupsCollapsedState(groups, allCollapsed);\n\n this._updateIsSomeGroupExpanded();\n\n this.forceUpdate();\n }\n }\n\n private _setGroupsCollapsedState(groups: IGroup[], isCollapsed: boolean): void {\n for (let groupIndex = 0; groupIndex < groups.length; groupIndex++) {\n groups[groupIndex].isCollapsed = isCollapsed;\n }\n }\n\n private _renderGroup = (group: IGroup | undefined, groupIndex: number): React.ReactNode => {\n const {\n dragDropEvents,\n dragDropHelper,\n eventsToRegister,\n groupProps,\n items,\n listProps,\n onRenderCell,\n selectionMode,\n selection,\n viewport,\n onShouldVirtualize,\n groups,\n compact,\n } = this.props;\n\n // override group header/footer props as needed\n const dividerProps = {\n onToggleSelectGroup: this._onToggleSelectGroup,\n onToggleCollapse: this._onToggleCollapse,\n onToggleSummarize: this._onToggleSummarize,\n };\n\n const headerProps: IGroupHeaderProps = { ...groupProps!.headerProps, ...dividerProps };\n const showAllProps: IGroupShowAllProps = { ...groupProps!.showAllProps, ...dividerProps };\n const footerProps: IGroupFooterProps = { ...groupProps!.footerProps, ...dividerProps };\n const groupNestingDepth = this._getGroupNestingDepth();\n\n if (!groupProps!.showEmptyGroups && group && group.count === 0) {\n return null;\n }\n\n const finalListProps: IListProps = {\n ...(listProps || {}),\n version: this.state.version,\n };\n\n return (\n <GroupedListSection\n key={this._getGroupKey(group, groupIndex)}\n dragDropEvents={dragDropEvents}\n dragDropHelper={dragDropHelper}\n eventsToRegister={eventsToRegister}\n footerProps={footerProps}\n getGroupItemLimit={groupProps && groupProps.getGroupItemLimit}\n group={group}\n groupIndex={groupIndex}\n groupNestingDepth={groupNestingDepth}\n groupProps={groupProps}\n headerProps={headerProps}\n listProps={finalListProps}\n items={items}\n onRenderCell={onRenderCell}\n onRenderGroupHeader={groupProps!.onRenderHeader}\n onRenderGroupShowAll={groupProps!.onRenderShowAll}\n onRenderGroupFooter={groupProps!.onRenderFooter}\n selectionMode={selectionMode}\n selection={selection}\n showAllProps={showAllProps}\n viewport={viewport}\n onShouldVirtualize={onShouldVirtualize}\n groupedListClassNames={this._classNames}\n groups={groups}\n compact={compact}\n />\n );\n };\n\n private _returnOne(): number {\n return 1;\n }\n\n private _getDefaultGroupItemLimit = (group: IGroup): number => {\n return group.count;\n };\n\n private _getGroupItemLimit = (group: IGroup): number => {\n const { groupProps } = this.props;\n const getGroupItemLimit =\n groupProps && groupProps.getGroupItemLimit ? groupProps.getGroupItemLimit : this._getDefaultGroupItemLimit;\n\n return getGroupItemLimit(group);\n };\n\n private _getGroupHeight = (group: IGroup): number => {\n const rowHeight = this.props.compact ? COMPACT_ROW_HEIGHT : ROW_HEIGHT;\n\n return rowHeight + (group.isCollapsed ? 0 : rowHeight * this._getGroupItemLimit(group));\n };\n\n private _getPageHeight: IListProps['getPageHeight'] = (itemIndex: number) => {\n const { groups } = this.state;\n const { getGroupHeight = this._getGroupHeight } = this.props;\n const pageGroup = groups && groups[itemIndex];\n\n if (pageGroup) {\n return getGroupHeight(pageGroup, itemIndex);\n } else {\n return 0;\n }\n };\n\n private _getGroupKey(group: IGroup | undefined, index: number): string {\n return 'group-' + (group && group.key ? group.key : String(index));\n }\n\n private _getGroupNestingDepth(): number {\n const { groups } = this.state;\n let level = 0;\n let groupsInLevel = groups;\n\n while (groupsInLevel && groupsInLevel.length > 0) {\n level++;\n groupsInLevel = groupsInLevel[0].children;\n }\n\n return level;\n }\n\n private _onToggleCollapse = (group: IGroup): void => {\n const { groupProps } = this.props;\n const onToggleCollapse = groupProps && groupProps.headerProps && groupProps.headerProps.onToggleCollapse;\n\n if (group) {\n if (onToggleCollapse) {\n onToggleCollapse(group);\n }\n\n group.isCollapsed = !group.isCollapsed;\n this._updateIsSomeGroupExpanded();\n this.forceUpdate();\n }\n };\n\n private _onToggleSelectGroup = (group: IGroup): void => {\n const { selection, selectionMode } = this.props;\n\n if (group && selection && selectionMode === SelectionMode.multiple) {\n selection.toggleRangeSelected(group.startIndex, group.count);\n }\n };\n\n private _isInnerZoneKeystroke = (ev: React.KeyboardEvent<HTMLElement>): boolean => {\n return ev.which === getRTLSafeKeyCode(KeyCodes.right);\n };\n\n private _forceListUpdates(groups?: IGroup[]): void {\n this.setState({\n version: {},\n });\n }\n\n private _onToggleSummarize = (group: IGroup): void => {\n const { groupProps } = this.props;\n const onToggleSummarize = groupProps && groupProps.showAllProps && groupProps.showAllProps.onToggleSummarize;\n\n if (onToggleSummarize) {\n onToggleSummarize(group);\n } else {\n if (group) {\n group.isShowingAll = !group.isShowingAll;\n }\n\n this.forceUpdate();\n }\n };\n\n private _getPageSpecification = (\n itemIndex: number,\n ): {\n key?: string;\n } => {\n const groups = this.state.groups;\n const pageGroup = groups && groups[itemIndex];\n return {\n key: pageGroup && pageGroup.key,\n };\n };\n\n private _computeIsSomeGroupExpanded(groups: IGroup[] | undefined): boolean {\n return !!(\n groups &&\n groups.some(group => (group.children ? this._computeIsSomeGroupExpanded(group.children) : !group.isCollapsed))\n );\n }\n\n private _updateIsSomeGroupExpanded(): void {\n const { groups } = this.state;\n const { onGroupExpandStateChanged } = this.props;\n\n const newIsSomeGroupExpanded = this._computeIsSomeGroupExpanded(groups);\n if (this._isSomeGroupExpanded !== newIsSomeGroupExpanded) {\n if (onGroupExpandStateChanged) {\n onGroupExpandStateChanged(newIsSomeGroupExpanded);\n }\n this._isSomeGroupExpanded = newIsSomeGroupExpanded;\n }\n }\n}\n","import * as React from 'react';\nimport { styled } from '../../Utilities';\nimport { getStyles } from './GroupedList.styles';\nimport { GroupedListBase } from './GroupedList.base';\nimport { IGroupedListProps, IGroupedListStyles, IGroupedListStyleProps } from './GroupedList.types';\nexport { IGroupedListProps };\n\nexport const GroupedList: React.FunctionComponent<IGroupedListProps> = styled<\n IGroupedListProps,\n IGroupedListStyleProps,\n IGroupedListStyles\n>(GroupedListBase, getStyles, undefined, {\n scope: 'GroupedList',\n});\n","import { ISettings, ISettingsFunction } from './Customizations';\n\n/**\n * Merge new and old settings, giving priority to new settings.\n * New settings is optional in which case oldSettings is returned as-is.\n * @param oldSettings - Old settings to fall back to.\n * @param newSettings - New settings that will be merged over oldSettings.\n * @returns Merged settings.\n */\nexport function mergeSettings(oldSettings: ISettings = {}, newSettings?: ISettings | ISettingsFunction): ISettings {\n const mergeSettingsWith = _isSettingsFunction(newSettings) ? newSettings : _settingsMergeWith(newSettings);\n\n return mergeSettingsWith(oldSettings);\n}\n\nexport function mergeScopedSettings(\n oldSettings: ISettings = {},\n newSettings?: ISettings | ISettingsFunction,\n): ISettings {\n const mergeSettingsWith = _isSettingsFunction(newSettings) ? newSettings : _scopedSettingsMergeWith(newSettings);\n\n return mergeSettingsWith(oldSettings);\n}\n\nfunction _isSettingsFunction(settings?: ISettings | ISettingsFunction): settings is ISettingsFunction {\n return typeof settings === 'function';\n}\n\nfunction _settingsMergeWith(newSettings?: object): (settings: ISettings) => ISettings {\n return (settings: ISettings) => (newSettings ? { ...settings, ...newSettings } : settings);\n}\n\nfunction _scopedSettingsMergeWith(scopedSettingsFromProps: ISettings = {}): (scopedSettings: ISettings) => ISettings {\n return (oldScopedSettings: ISettings): ISettings => {\n const newScopedSettings: ISettings = { ...oldScopedSettings };\n\n for (let scopeName in scopedSettingsFromProps) {\n if (scopedSettingsFromProps.hasOwnProperty(scopeName)) {\n newScopedSettings[scopeName] = { ...oldScopedSettings[scopeName], ...scopedSettingsFromProps[scopeName] };\n }\n }\n\n return newScopedSettings;\n };\n}\n","import * as React from 'react';\nimport { Customizations } from './Customizations';\nimport { CustomizerContext, ICustomizerContext } from './CustomizerContext';\nimport { mergeCustomizations } from './mergeCustomizations';\nimport { ICustomizerProps } from './Customizer.types';\n\n/**\n * The Customizer component allows for default props to be mixed into components which\n * are decorated with the customizable() decorator, or use the styled HOC. This enables\n * injection scenarios like:\n *\n * 1. render svg icons instead of the icon font within all buttons\n * 2. inject a custom theme object into a component\n *\n * Props are provided via the settings prop which should be one of the following:\n * - A json map which contains 1 or more name/value pairs representing injectable props.\n * - A function that receives the current settings and returns the new ones that apply to the scope\n *\n * @public\n */\nexport class Customizer extends React.Component<ICustomizerProps> {\n public componentDidMount(): void {\n Customizations.observe(this._onCustomizationChange);\n }\n\n public componentWillUnmount(): void {\n Customizations.unobserve(this._onCustomizationChange);\n }\n\n public render(): React.ReactElement<{}> {\n const { contextTransform } = this.props;\n return (\n <CustomizerContext.Consumer>\n {(parentContext: ICustomizerContext) => {\n let newContext = mergeCustomizations(this.props, parentContext);\n\n if (contextTransform) {\n newContext = contextTransform(newContext);\n }\n\n return <CustomizerContext.Provider value={newContext}>{this.props.children}</CustomizerContext.Provider>;\n }}\n </CustomizerContext.Consumer>\n );\n }\n\n private _onCustomizationChange = () => this.forceUpdate();\n}\n","import { mergeSettings, mergeScopedSettings } from './mergeSettings';\nimport { ICustomizerProps } from './Customizer.types';\nimport { ICustomizerContext } from './CustomizerContext';\n\n/**\n * Merge props and customizations giving priority to props over context.\n * NOTE: This function will always perform multiple merge operations. Use with caution.\n * @param props - New settings to merge in.\n * @param parentContext - Context containing current settings.\n * @returns Merged customizations.\n */\nexport function mergeCustomizations(props: ICustomizerProps, parentContext: ICustomizerContext): ICustomizerContext {\n const { customizations = { settings: {}, scopedSettings: {} } } = parentContext || {};\n\n return {\n customizations: {\n settings: mergeSettings(customizations.settings, props.settings),\n scopedSettings: mergeScopedSettings(customizations.scopedSettings, props.scopedSettings),\n inCustomizerContext: true,\n },\n };\n}\n","import * as React from 'react';\nimport {\n Customizer,\n getNativeProps,\n divProperties,\n classNamesFunction,\n getDocument,\n memoizeFunction,\n getRTL,\n FocusRects,\n} from '../../Utilities';\nimport { IFabricProps, IFabricStyleProps, IFabricStyles } from './Fabric.types';\nimport { IProcessedStyleSet } from '@uifabric/merge-styles';\nimport { ITheme, createTheme } from '../../Styling';\n\nconst getClassNames = classNamesFunction<IFabricStyleProps, IFabricStyles>();\nconst getFabricTheme = memoizeFunction((theme?: ITheme, isRTL?: boolean) => createTheme({ ...theme, rtl: isRTL }));\n\nconst getDir = (theme?: ITheme, dir?: IFabricProps['dir']) => {\n const contextDir = getRTL(theme) ? 'rtl' : 'ltr';\n const pageDir = getRTL() ? 'rtl' : 'ltr';\n const componentDir = dir ? dir : contextDir;\n return {\n // If Fabric dir !== contextDir\n // Or If contextDir !== pageDir\n // Then we need to set dir of the Fabric root\n rootDir: componentDir !== contextDir || componentDir !== pageDir ? componentDir : dir,\n // If dir !== contextDir || pageDir\n // then set contextual theme around content\n needsTheme: componentDir !== contextDir,\n };\n};\n\nexport class FabricBase extends React.Component<IFabricProps> {\n private _rootElement = React.createRef<HTMLDivElement>();\n private _removeClassNameFromBody?: () => void = undefined;\n\n public render() {\n const { as: Root = 'div', theme, dir } = this.props;\n const classNames = this._getClassNames();\n const divProps = getNativeProps<React.HTMLAttributes<HTMLDivElement>>(this.props, divProperties, ['dir']);\n const { rootDir, needsTheme } = getDir(theme, dir);\n\n let renderedContent = <Root dir={rootDir} {...divProps} className={classNames.root} ref={this._rootElement} />;\n\n if (needsTheme) {\n renderedContent = (\n <Customizer settings={{ theme: getFabricTheme(theme, dir === 'rtl') }}>{renderedContent}</Customizer>\n );\n }\n\n return (\n <>\n {renderedContent}\n <FocusRects rootRef={this._rootElement} />\n </>\n );\n }\n\n public componentDidMount(): void {\n this._addClassNameToBody();\n }\n\n public componentWillUnmount(): void {\n if (this._removeClassNameFromBody) {\n this._removeClassNameFromBody();\n }\n }\n\n private _getClassNames(): IProcessedStyleSet<IFabricStyles> {\n const { className, theme, applyTheme, styles } = this.props;\n const classNames = getClassNames(styles, {\n theme: theme!,\n applyTheme: applyTheme,\n className,\n });\n return classNames;\n }\n\n private _addClassNameToBody(): void {\n if (this.props.applyThemeToBody) {\n const classNames = this._getClassNames();\n const currentDoc = getDocument(this._rootElement.current);\n if (currentDoc) {\n currentDoc.body.classList.add(classNames.bodyThemed);\n this._removeClassNameFromBody = () => {\n currentDoc.body.classList.remove(classNames.bodyThemed);\n };\n }\n }\n }\n}\n","import { getGlobalClassNames } from '../../Styling';\nimport { IFabricStyleProps, IFabricStyles } from './Fabric.types';\n\nconst inheritFont = { fontFamily: 'inherit' };\n\nconst GlobalClassNames = {\n root: 'ms-Fabric',\n bodyThemed: 'ms-Fabric-bodyThemed',\n};\n\nexport interface IFabricClassNames {\n root: string;\n bodyThemed: string;\n}\n\nexport const getStyles = (props: IFabricStyleProps): IFabricStyles => {\n const { theme, className, applyTheme } = props;\n const classNames = getGlobalClassNames(GlobalClassNames, theme);\n return {\n root: [\n classNames.root,\n theme.fonts.medium,\n {\n color: theme.palette.neutralPrimary,\n selectors: {\n '& button': inheritFont,\n '& input': inheritFont,\n '& textarea': inheritFont,\n },\n },\n // apply theme to only if applyTheme is true\n applyTheme && {\n color: theme.semanticColors.bodyText,\n backgroundColor: theme.semanticColors.bodyBackground,\n },\n className,\n ],\n bodyThemed: [\n {\n backgroundColor: theme.semanticColors.bodyBackground,\n },\n ],\n };\n};\n","import { styled } from '../../Utilities';\nimport { FabricBase } from './Fabric.base';\nimport { getStyles } from './Fabric.styles';\nimport { IFabricProps, IFabricStyleProps, IFabricStyles } from './Fabric.types';\n\nexport const Fabric = styled<IFabricProps, IFabricStyleProps, IFabricStyles, FabricBase>(\n FabricBase,\n getStyles,\n undefined,\n {\n scope: 'Fabric',\n },\n);\n","import { IVirtualElement } from './IVirtualElement';\n/**\n * Sets the virtual parent of an element.\n * Pass `undefined` as the `parent` to clear the virtual parent.\n *\n * @public\n */\nexport function setVirtualParent(child: HTMLElement, parent: HTMLElement | null): void {\n const virtualChild = <IVirtualElement>child;\n const virtualParent = <IVirtualElement | null>parent;\n\n if (!virtualChild._virtual) {\n virtualChild._virtual = {\n children: [],\n };\n }\n\n const oldParent = virtualChild._virtual.parent;\n\n if (oldParent && oldParent !== parent) {\n // Remove the child from its old parent.\n const index = oldParent._virtual.children.indexOf(virtualChild);\n\n if (index > -1) {\n oldParent._virtual.children.splice(index, 1);\n }\n }\n\n virtualChild._virtual.parent = virtualParent || undefined;\n\n if (virtualParent) {\n if (!virtualParent._virtual) {\n virtualParent._virtual = {\n children: [],\n };\n }\n\n virtualParent._virtual.children.push(virtualChild);\n }\n}\n","import { ILayerHost } from './LayerHost.types';\n\nconst _layersByHostId: { [hostId: string]: (() => void)[] } = {};\nconst _layerHostsById: { [hostId: string]: ILayerHost[] } = {};\n\nlet _defaultHostSelector: string | undefined;\n\n/**\n * Register a layer for a given host id\n * @param hostId - Id of the layer host\n * @param layer - Layer instance\n */\nexport function registerLayer(hostId: string, callback: () => void) {\n if (!_layersByHostId[hostId]) {\n _layersByHostId[hostId] = [];\n }\n\n _layersByHostId[hostId].push(callback);\n\n const layerHosts = _layerHostsById[hostId];\n\n if (layerHosts) {\n for (const layerHost of layerHosts) {\n layerHost.notifyLayersChanged();\n }\n }\n}\n\n/**\n * Unregister a layer for a given host id\n * @param hostId - Id of the layer host\n * @param layer - Layer instance\n */\nexport function unregisterLayer(hostId: string, callback: () => void) {\n const layers = _layersByHostId[hostId];\n\n if (layers) {\n const idx = layers.indexOf(callback);\n if (idx >= 0) {\n layers.splice(idx, 1);\n\n if (layers.length === 0) {\n delete _layersByHostId[hostId];\n }\n }\n }\n\n const layerHosts = _layerHostsById[hostId];\n\n if (layerHosts) {\n for (const layerHost of layerHosts) {\n layerHost.notifyLayersChanged();\n }\n }\n}\n\n/**\n * Gets the number of layers currently registered with a host id.\n * @param hostId - Id of the layer host.\n * @returns The number of layers currently registered with the host.\n */\nexport function getLayerCount(hostId: string): number {\n const layers = _layerHostsById[hostId];\n\n return layers ? layers.length : 0;\n}\n\n/**\n * Gets the Layer Host instance associated with a hostId, if applicable.\n * @param hostId - Id of the layer host.\n * @returns A component ref for the associated layer host.\n */\nexport function getLayerHost(hostId: string): ILayerHost | undefined {\n const layerHosts = _layerHostsById[hostId];\n\n return (layerHosts && layerHosts[0]) || undefined;\n}\n\n/**\n * Registers a Layer Host with an associated hostId.\n * @param hostId - Id of the layer host\n * @param layerHost - layer host instance\n */\nexport function registerLayerHost(hostId: string, layerHost: ILayerHost): void {\n const layerHosts = _layerHostsById[hostId] || (_layerHostsById[hostId] = []);\n\n // Insert this at the start of an array to avoid race conditions between mount and unmount.\n // If a LayerHost is re-mounted, and mount of the new instance may occur before the unmount of the old one.\n // Putting the new instance at the start of this array ensures that calls to `getLayerHost` will immediately\n // get the new one even if the old one is around briefly.\n layerHosts.unshift(layerHost);\n}\n\n/**\n * Unregisters a Layer Host from the associated hostId.\n * @param hostId - Id of the layer host\n * @param layerHost - layer host instance\n */\nexport function unregisterLayerHost(hostId: string, layerHost: ILayerHost): void {\n const layerHosts = _layerHostsById[hostId];\n\n if (layerHosts) {\n const idx = layerHosts.indexOf(layerHost);\n\n if (idx >= 0) {\n layerHosts.splice(idx, 1);\n }\n\n if (layerHosts.length === 0) {\n delete _layerHostsById[hostId];\n }\n }\n}\n\n/**\n * Used for notifying applicable Layers that a host is available/unavailable and to re-evaluate Layers that\n * care about the specific host.\n */\nexport function notifyHostChanged(id: string) {\n if (_layersByHostId[id]) {\n _layersByHostId[id].forEach(callback => callback());\n }\n}\n\n/**\n * Sets the default target selector to use when determining the host in which\n * Layered content will be injected into. If not provided, an element will be\n * created at the end of the document body.\n *\n * Passing in a falsey value will clear the default target and reset back to\n * using a created element at the end of document body.\n */\nexport function setDefaultTarget(selector?: string) {\n _defaultHostSelector = selector;\n}\n\n/**\n * Get the default target selector when determining a host\n */\nexport function getDefaultTarget(): string | undefined {\n return _defaultHostSelector;\n}\n","import * as React from 'react';\nimport * as ReactDOM from 'react-dom';\n\nimport { Fabric } from '../../Fabric';\nimport { ILayerProps, ILayerStyleProps, ILayerStyles } from './Layer.types';\nimport {\n classNamesFunction,\n customizable,\n getDocument,\n setPortalAttribute,\n setVirtualParent,\n warnDeprecations,\n} from '../../Utilities';\nimport { registerLayer, getDefaultTarget, unregisterLayer, getLayerHost } from './Layer.notification';\n\nexport type ILayerBaseState = {\n hostId?: string;\n layerElement?: HTMLElement;\n};\n\nconst getClassNames = classNamesFunction<ILayerStyleProps, ILayerStyles>();\n\n@customizable('Layer', ['theme', 'hostId'])\nexport class LayerBase extends React.Component<ILayerProps, ILayerBaseState> {\n public static defaultProps: ILayerProps = {\n onLayerDidMount: () => undefined,\n onLayerWillUnmount: () => undefined,\n };\n\n private _rootRef = React.createRef<HTMLSpanElement>();\n\n constructor(props: ILayerProps) {\n super(props);\n\n this.state = {};\n\n if (process.env.NODE_ENV !== 'production') {\n warnDeprecations('Layer', props, {\n onLayerMounted: 'onLayerDidMount',\n });\n }\n }\n\n public componentDidMount(): void {\n const { hostId } = this.props;\n\n this._createLayerElement();\n\n if (hostId) {\n registerLayer(hostId, this._createLayerElement);\n }\n }\n\n public render(): React.ReactNode {\n const { layerElement } = this.state;\n const classNames = this._getClassNames();\n const { eventBubblingEnabled } = this.props;\n\n return (\n <span className=\"ms-layer\" ref={this._rootRef}>\n {layerElement &&\n ReactDOM.createPortal(\n <Fabric {...(!eventBubblingEnabled && _getFilteredEvents())} className={classNames.content}>\n {this.props.children}\n </Fabric>,\n layerElement,\n )}\n </span>\n );\n }\n\n public componentDidUpdate(): void {\n if (this.props.hostId !== this.state.hostId) {\n this._createLayerElement();\n }\n }\n\n public componentWillUnmount(): void {\n const { hostId } = this.props;\n\n this._removeLayerElement();\n if (hostId) {\n unregisterLayer(hostId, this._createLayerElement);\n }\n }\n\n private _createLayerElement = () => {\n const { hostId } = this.props;\n\n const doc = getDocument(this._rootRef.current);\n const host = this._getHost();\n\n if (!host) {\n return;\n }\n\n // If one was already existing, remove.\n this._removeLayerElement();\n\n // eslint-disable-next-line deprecation/deprecation\n const layerElement = (host.ownerDocument ?? doc)?.createElement('div');\n\n if (layerElement) {\n const classNames = this._getClassNames();\n\n layerElement.className = classNames.root!;\n setPortalAttribute(layerElement);\n setVirtualParent(layerElement, this._rootRef.current!);\n\n this.props.insertFirst ? host.insertBefore(layerElement, host.firstChild) : host.appendChild(layerElement);\n\n this.setState(\n {\n hostId,\n layerElement,\n },\n () => {\n // eslint-disable-next-line deprecation/deprecation\n const { onLayerDidMount, onLayerMounted } = this.props;\n if (onLayerMounted) {\n onLayerMounted();\n }\n\n if (onLayerDidMount) {\n onLayerDidMount();\n }\n },\n );\n }\n };\n\n private _removeLayerElement(): void {\n const { onLayerWillUnmount } = this.props;\n const { layerElement } = this.state;\n\n if (layerElement) {\n setVirtualParent(layerElement, null);\n }\n\n if (onLayerWillUnmount) {\n onLayerWillUnmount();\n }\n\n if (layerElement && layerElement.parentNode) {\n const parentNode = layerElement.parentNode;\n if (parentNode) {\n parentNode.removeChild(layerElement);\n }\n }\n }\n\n private _getClassNames() {\n const { className, styles, theme } = this.props;\n const classNames = getClassNames(styles!, {\n theme: theme!,\n className,\n isNotHost: !this.props.hostId,\n });\n\n return classNames;\n }\n\n private _getHost(): Node | null {\n const { hostId } = this.props;\n\n const doc = getDocument(this._rootRef.current);\n\n if (hostId) {\n const layerHost = getLayerHost(hostId);\n\n if (layerHost) {\n return layerHost.rootRef.current ?? null;\n }\n\n return doc?.getElementById(hostId) ?? null;\n } else {\n const defaultHostSelector = getDefaultTarget();\n return (defaultHostSelector ? doc?.querySelector(defaultHostSelector) : doc?.body) ?? null;\n }\n }\n}\n\nconst _onFilterEvent = (ev: React.SyntheticEvent<HTMLElement>): void => {\n // We should just be able to check ev.bubble here and only stop events that are bubbling up. However, even though\n // mouseenter and mouseleave do NOT bubble up, they are showing up as bubbling. Therefore we stop events based on\n // event name rather than ev.bubble.\n if (\n ev.eventPhase === Event.BUBBLING_PHASE &&\n ev.type !== 'mouseenter' &&\n ev.type !== 'mouseleave' &&\n ev.type !== 'touchstart' &&\n ev.type !== 'touchend'\n ) {\n ev.stopPropagation();\n }\n};\n\nlet _filteredEventProps: { [key: string]: (ev: React.SyntheticEvent<HTMLElement, Event>) => void };\n\nfunction _getFilteredEvents() {\n if (!_filteredEventProps) {\n _filteredEventProps = {} as any;\n\n [\n 'onClick',\n 'onContextMenu',\n 'onDoubleClick',\n 'onDrag',\n 'onDragEnd',\n 'onDragEnter',\n 'onDragExit',\n 'onDragLeave',\n 'onDragOver',\n 'onDragStart',\n 'onDrop',\n 'onMouseDown',\n 'onMouseEnter',\n 'onMouseLeave',\n 'onMouseMove',\n 'onMouseOver',\n 'onMouseOut',\n 'onMouseUp',\n 'onTouchMove',\n 'onTouchStart',\n 'onTouchCancel',\n 'onTouchEnd',\n 'onKeyDown',\n 'onKeyPress',\n 'onKeyUp',\n 'onFocus',\n 'onBlur',\n 'onChange',\n 'onInput',\n 'onInvalid',\n 'onSubmit',\n ].forEach(name => (_filteredEventProps[name] = _onFilterEvent));\n }\n\n return _filteredEventProps;\n}\n","import { ILayerStyleProps, ILayerStyles } from './Layer.types';\nimport { ZIndexes, getGlobalClassNames } from '../../Styling';\n\nconst GlobalClassNames = {\n root: 'ms-Layer',\n rootNoHost: 'ms-Layer--fixed',\n content: 'ms-Layer-content',\n};\n\nexport const getStyles = (props: ILayerStyleProps): ILayerStyles => {\n const { className, isNotHost, theme } = props;\n\n const classNames = getGlobalClassNames(GlobalClassNames, theme);\n\n return {\n root: [\n classNames.root,\n theme.fonts.medium,\n isNotHost && [\n classNames.rootNoHost,\n {\n position: 'fixed',\n zIndex: ZIndexes.Layer,\n top: 0,\n left: 0,\n bottom: 0,\n right: 0,\n visibility: 'hidden',\n },\n ],\n className,\n ],\n content: [\n classNames.content,\n {\n visibility: 'visible',\n },\n ],\n };\n};\n","import * as React from 'react';\nimport { styled } from '../../Utilities';\nimport { ILayerProps, ILayerStyleProps, ILayerStyles } from './Layer.types';\nimport { LayerBase } from './Layer.base';\nimport { getStyles } from './Layer.styles';\n\nexport const Layer: React.FunctionComponent<ILayerProps> = styled<ILayerProps, ILayerStyleProps, ILayerStyles>(\n LayerBase,\n getStyles,\n undefined,\n {\n scope: 'Layer',\n fields: ['hostId', 'theme', 'styles'],\n },\n);\n","import { PersonaPresence, PersonaSize } from './Persona.types';\n\n// Persona Sizes\nexport namespace personaSize {\n export const size8 = '20px';\n // TODO: remove in a future major release as it's deprecated.\n export const size10 = '20px';\n // TODO: remove in a future major release as it's deprecated.\n export const size16 = '16px';\n export const size24 = '24px';\n // TODO: remove in a future major release as it's deprecated.\n export const size28 = '28px';\n export const size32 = '32px';\n export const size40 = '40px';\n export const size48 = '48px';\n export const size56 = '56px';\n export const size72 = '72px';\n export const size100 = '100px';\n export const size120 = '120px';\n}\n\n// Persona Presence Sizes\nexport namespace personaPresenceSize {\n export const size6 = '6px';\n export const size8 = '8px';\n export const size12 = '12px';\n export const size16 = '16px';\n export const size20 = '20px';\n export const size28 = '28px';\n export const size32 = '32px';\n\n /**\n * @deprecated This is now unused\n */\n export const border = '2px';\n}\n\n// TODO: remove the deprecated parts in a future major release.\nexport const sizeBoolean = (size: PersonaSize) => ({\n isSize8: size === PersonaSize.size8,\n /* eslint-disable deprecation/deprecation */\n isSize10: size === PersonaSize.size10 || size === PersonaSize.tiny,\n isSize16: size === PersonaSize.size16,\n isSize24: size === PersonaSize.size24 || size === PersonaSize.extraExtraSmall,\n isSize28: size === PersonaSize.size28 || size === PersonaSize.extraSmall,\n isSize32: size === PersonaSize.size32,\n isSize40: size === PersonaSize.size40 || size === PersonaSize.small,\n isSize48: size === PersonaSize.size48 || size === PersonaSize.regular,\n isSize56: size === PersonaSize.size56,\n isSize72: size === PersonaSize.size72 || size === PersonaSize.large,\n isSize100: size === PersonaSize.size100 || size === PersonaSize.extraLarge,\n isSize120: size === PersonaSize.size120,\n});\n\nexport const sizeToPixels: { [key: number]: number } = {\n // Old deprecated sizes\n [PersonaSize.tiny]: 10,\n [PersonaSize.extraExtraSmall]: 24,\n [PersonaSize.extraSmall]: 28,\n [PersonaSize.small]: 40,\n [PersonaSize.regular]: 48,\n [PersonaSize.large]: 72,\n [PersonaSize.extraLarge]: 100,\n // New sizes\n [PersonaSize.size8]: 8,\n [PersonaSize.size10]: 10, // TODO: deprecated (not in the design specs)\n [PersonaSize.size16]: 16, // TODO: deprecated (not in the design specs)\n [PersonaSize.size24]: 24,\n [PersonaSize.size28]: 28, // TODO: deprecated (not in the design specs)\n /* eslint-enable deprecation/deprecation */\n [PersonaSize.size32]: 32,\n [PersonaSize.size40]: 40,\n [PersonaSize.size48]: 48,\n [PersonaSize.size56]: 56,\n [PersonaSize.size72]: 72,\n [PersonaSize.size100]: 100,\n [PersonaSize.size120]: 120,\n};\n\nexport const presenceBoolean = (presence: PersonaPresence) => ({\n isAvailable: presence === PersonaPresence.online,\n isAway: presence === PersonaPresence.away,\n isBlocked: presence === PersonaPresence.blocked,\n isBusy: presence === PersonaPresence.busy,\n isDoNotDisturb: presence === PersonaPresence.dnd,\n isOffline: presence === PersonaPresence.offline,\n});\n","import * as React from 'react';\nimport { classNamesFunction } from '../../../Utilities';\nimport { Icon } from '../../../Icon';\nimport {\n IPersonaPresenceProps,\n IPersonaPresenceStyleProps,\n IPersonaPresenceStyles,\n PersonaPresence as PersonaPresenceEnum,\n PersonaSize,\n} from '../Persona.types';\nimport { sizeBoolean } from '../PersonaConsts';\n\nconst coinSizeFontScaleFactor = 6;\nconst coinSizePresenceScaleFactor = 3;\nconst presenceMaxSize = 40;\nconst presenceFontMaxSize = 20;\n\nconst getClassNames = classNamesFunction<IPersonaPresenceStyleProps, IPersonaPresenceStyles>({\n // There can be many PersonaPresence rendered with different sizes.\n // Therefore setting a larger cache size.\n cacheSize: 100,\n});\n\n/**\n * PersonaPresence with no default styles.\n * [Use the `getStyles` API to add your own styles.](https://github.com/microsoft/fluentui/wiki/Styling)\n */\nexport class PersonaPresenceBase extends React.Component<IPersonaPresenceProps, {}> {\n constructor(props: IPersonaPresenceProps) {\n super(props);\n }\n\n public render(): JSX.Element | null {\n const {\n coinSize,\n isOutOfOffice,\n styles, // Use getStyles from props.\n presence,\n theme,\n presenceTitle,\n presenceColors,\n } = this.props;\n const size = sizeBoolean(this.props.size as PersonaSize);\n\n // Render Presence Icon if Persona is above size 32.\n const renderIcon =\n !(size.isSize8 || size.isSize10 || size.isSize16 || size.isSize24 || size.isSize28 || size.isSize32) &&\n (coinSize ? coinSize > 32 : true);\n\n const presenceHeightWidth: string = coinSize\n ? coinSize / coinSizePresenceScaleFactor < presenceMaxSize\n ? coinSize / coinSizePresenceScaleFactor + 'px'\n : presenceMaxSize + 'px'\n : '';\n const presenceFontSize: string = coinSize\n ? coinSize / coinSizeFontScaleFactor < presenceFontMaxSize\n ? coinSize / coinSizeFontScaleFactor + 'px'\n : presenceFontMaxSize + 'px'\n : '';\n const coinSizeWithPresenceIconStyle = coinSize\n ? { fontSize: presenceFontSize, lineHeight: presenceHeightWidth }\n : undefined;\n const coinSizeWithPresenceStyle = coinSize\n ? { width: presenceHeightWidth, height: presenceHeightWidth }\n : undefined;\n\n // Use getStyles from props, or fall back to getStyles from styles file.\n const classNames = getClassNames(styles, {\n theme: theme!,\n presence,\n size: this.props.size,\n isOutOfOffice,\n presenceColors,\n });\n\n if (presence === PersonaPresenceEnum.none) {\n return null;\n }\n\n return (\n <div role=\"presentation\" className={classNames.presence} style={coinSizeWithPresenceStyle} title={presenceTitle}>\n {renderIcon && this._onRenderIcon(classNames.presenceIcon, coinSizeWithPresenceIconStyle)}\n </div>\n );\n }\n\n private _onRenderIcon = (className?: string, style?: React.CSSProperties): JSX.Element => (\n <Icon className={className} iconName={determineIcon(this.props.presence, this.props.isOutOfOffice)} style={style} />\n );\n}\n\nfunction determineIcon(\n presence: PersonaPresenceEnum | undefined,\n isOutOfOffice: boolean | undefined,\n): string | undefined {\n if (!presence) {\n return undefined;\n }\n\n const oofIcon = 'SkypeArrow';\n\n switch (PersonaPresenceEnum[presence]) {\n case 'online':\n return 'SkypeCheck';\n case 'away':\n return isOutOfOffice ? oofIcon : 'SkypeClock';\n case 'dnd':\n return 'SkypeMinus';\n case 'offline':\n return isOutOfOffice ? oofIcon : '';\n }\n\n return '';\n}\n","import { IPersonaPresenceStyleProps, IPersonaPresenceStyles, PersonaPresence, PersonaSize } from '../Persona.types';\nimport { HighContrastSelector, getGlobalClassNames, IRawStyle, getHighContrastNoAdjustStyle } from '../../../Styling';\nimport { personaPresenceSize, presenceBoolean, sizeBoolean } from '../PersonaConsts';\n\nconst GlobalClassNames = {\n presence: 'ms-Persona-presence',\n presenceIcon: 'ms-Persona-presenceIcon',\n};\n\nexport const getStyles = (props: IPersonaPresenceStyleProps): IPersonaPresenceStyles => {\n const { theme, presenceColors } = props;\n const { semanticColors, fonts } = theme;\n\n const classNames = getGlobalClassNames(GlobalClassNames, theme);\n\n const size = sizeBoolean(props.size as PersonaSize);\n const presence = presenceBoolean(props.presence as PersonaPresence);\n\n // Presence colors\n const presenceColorAvailable = (presenceColors && presenceColors.available) || '#6BB700';\n const presenceColorAway = (presenceColors && presenceColors.away) || '#FFAA44';\n const presenceColorBusy = (presenceColors && presenceColors.busy) || '#C43148';\n const presenceColorDnd = (presenceColors && presenceColors.dnd) || '#C50F1F';\n const presenceColorOffline = (presenceColors && presenceColors.offline) || '#8A8886';\n const presenceColorOof = (presenceColors && presenceColors.oof) || '#B4009E';\n const presenceColorBackground = (presenceColors && presenceColors.background) || semanticColors.bodyBackground;\n\n const isOpenCirclePresence =\n presence.isOffline ||\n (props.isOutOfOffice && (presence.isAvailable || presence.isBusy || presence.isAway || presence.isDoNotDisturb));\n\n const borderSizeForSmallPersonas = '1px';\n const borderSizeForLargePersonas = '2px';\n\n const borderSize = size.isSize72 || size.isSize100 ? borderSizeForLargePersonas : borderSizeForSmallPersonas;\n\n return {\n presence: [\n classNames.presence,\n {\n position: 'absolute',\n height: personaPresenceSize.size12,\n width: personaPresenceSize.size12,\n borderRadius: '50%',\n top: 'auto',\n right: '-2px',\n bottom: '-2px',\n border: `2px solid ${presenceColorBackground}`,\n textAlign: 'center',\n boxSizing: 'content-box',\n backgroundClip: 'content-box',\n ...getHighContrastNoAdjustStyle(),\n selectors: {\n [HighContrastSelector]: {\n borderColor: 'Window',\n backgroundColor: 'WindowText',\n },\n },\n },\n\n (size.isSize8 || size.isSize10) && {\n right: 'auto',\n top: '7px',\n left: 0,\n border: 0,\n\n selectors: {\n [HighContrastSelector]: {\n top: '9px',\n border: '1px solid WindowText',\n },\n },\n },\n\n (size.isSize8 || size.isSize10 || size.isSize24 || size.isSize28 || size.isSize32) &&\n makeSizeStyle(personaPresenceSize.size8),\n\n (size.isSize40 || size.isSize48) && makeSizeStyle(personaPresenceSize.size12),\n\n size.isSize16 && {\n height: personaPresenceSize.size6,\n width: personaPresenceSize.size6,\n borderWidth: '1.5px',\n },\n\n size.isSize56 && makeSizeStyle(personaPresenceSize.size16),\n\n size.isSize72 && makeSizeStyle(personaPresenceSize.size20),\n\n size.isSize100 && makeSizeStyle(personaPresenceSize.size28),\n\n size.isSize120 && makeSizeStyle(personaPresenceSize.size32),\n\n presence.isAvailable && {\n backgroundColor: presenceColorAvailable,\n\n selectors: {\n [HighContrastSelector]: backgroundColor('Highlight'),\n },\n },\n\n presence.isAway && backgroundColor(presenceColorAway),\n\n presence.isBlocked && [\n {\n selectors: {\n // Only show :after at larger sizes\n ':after':\n size.isSize40 || size.isSize48 || size.isSize72 || size.isSize100\n ? {\n content: '\"\"',\n width: '100%',\n height: borderSize,\n backgroundColor: presenceColorBusy,\n transform: 'translateY(-50%) rotate(-45deg)',\n position: 'absolute',\n top: '50%',\n left: 0,\n }\n : undefined,\n\n [HighContrastSelector]: {\n selectors: {\n ':after': {\n width: `calc(100% - 4px)`,\n left: '2px',\n backgroundColor: 'Window',\n },\n },\n },\n },\n },\n ],\n\n presence.isBusy && backgroundColor(presenceColorBusy),\n\n presence.isDoNotDisturb && backgroundColor(presenceColorDnd),\n\n presence.isOffline && backgroundColor(presenceColorOffline),\n\n (isOpenCirclePresence || presence.isBlocked) && [\n {\n backgroundColor: presenceColorBackground,\n\n selectors: {\n ':before': {\n content: '\"\"',\n width: '100%',\n height: '100%',\n position: 'absolute',\n top: 0,\n left: 0,\n border: `${borderSize} solid ${presenceColorBusy}`,\n borderRadius: '50%',\n boxSizing: 'border-box',\n },\n [HighContrastSelector]: {\n backgroundColor: 'WindowText',\n\n selectors: {\n ':before': {\n width: `calc(100% - 2px)`,\n height: `calc(100% - 2px)`,\n top: '1px',\n left: '1px',\n borderColor: 'Window',\n },\n },\n },\n },\n },\n ],\n\n isOpenCirclePresence && presence.isAvailable && makeBeforeBorderStyle(borderSize, presenceColorAvailable),\n\n isOpenCirclePresence && presence.isBusy && makeBeforeBorderStyle(borderSize, presenceColorBusy),\n\n isOpenCirclePresence && presence.isAway && makeBeforeBorderStyle(borderSize, presenceColorOof),\n\n isOpenCirclePresence && presence.isDoNotDisturb && makeBeforeBorderStyle(borderSize, presenceColorDnd),\n\n isOpenCirclePresence && presence.isOffline && makeBeforeBorderStyle(borderSize, presenceColorOffline),\n\n isOpenCirclePresence &&\n presence.isOffline &&\n props.isOutOfOffice &&\n makeBeforeBorderStyle(borderSize, presenceColorOof),\n ],\n\n presenceIcon: [\n classNames.presenceIcon,\n {\n color: presenceColorBackground,\n fontSize: '6px', // exception case where we don't have an available theme.fonts variable to match it.\n lineHeight: personaPresenceSize.size12,\n verticalAlign: 'top',\n\n selectors: {\n [HighContrastSelector]: {\n color: 'Window',\n },\n },\n },\n\n size.isSize56 && {\n fontSize: '8px', // exception case where we don't have an available theme.fonts variable to match it.\n lineHeight: personaPresenceSize.size16,\n },\n\n size.isSize72 && {\n fontSize: fonts.small.fontSize,\n lineHeight: personaPresenceSize.size20,\n },\n\n size.isSize100 && {\n fontSize: fonts.medium.fontSize,\n lineHeight: personaPresenceSize.size28,\n },\n\n size.isSize120 && {\n fontSize: fonts.medium.fontSize,\n lineHeight: personaPresenceSize.size32,\n },\n\n presence.isAway && {\n position: 'relative',\n left: isOpenCirclePresence ? undefined : '1px',\n },\n\n isOpenCirclePresence && presence.isAvailable && makeOpenCircleIconStyle(presenceColorAvailable),\n\n isOpenCirclePresence && presence.isBusy && makeOpenCircleIconStyle(presenceColorBusy),\n\n isOpenCirclePresence && presence.isAway && makeOpenCircleIconStyle(presenceColorOof),\n\n isOpenCirclePresence && presence.isDoNotDisturb && makeOpenCircleIconStyle(presenceColorDnd),\n\n isOpenCirclePresence && presence.isOffline && makeOpenCircleIconStyle(presenceColorOffline),\n\n isOpenCirclePresence && presence.isOffline && props.isOutOfOffice && makeOpenCircleIconStyle(presenceColorOof),\n ],\n };\n};\n\nfunction makeOpenCircleIconStyle(color: string): IRawStyle {\n return {\n color,\n borderColor: color,\n };\n}\n\nfunction makeBeforeBorderStyle(borderSize: string, color: string): IRawStyle {\n return {\n selectors: {\n ':before': {\n border: `${borderSize} solid ${color}`,\n },\n },\n };\n}\n\nfunction makeSizeStyle(size: string): IRawStyle {\n return {\n height: size,\n width: size,\n };\n}\n\nfunction backgroundColor(color: string): IRawStyle {\n return { backgroundColor: color };\n}\n","import * as React from 'react';\nimport { styled } from '../../../Utilities';\nimport { IPersonaPresenceProps, IPersonaPresenceStyleProps, IPersonaPresenceStyles } from '../Persona.types';\nimport { PersonaPresenceBase } from './PersonaPresence.base';\nimport { getStyles } from './PersonaPresence.styles';\n\n/**\n * PersonaPresence is used to render an individual's presence.\n */\nexport const PersonaPresence: React.FunctionComponent<IPersonaPresenceProps> = styled<\n IPersonaPresenceProps,\n IPersonaPresenceStyleProps,\n IPersonaPresenceStyles\n>(PersonaPresenceBase, getStyles, undefined, { scope: 'PersonaPresence' });\n","import { PersonaInitialsColor, IPersonaProps } from './Persona.types';\n\n/**\n * Following colors are considered reserved and can only be set with overrides, so they are excluded from this set:\n * - `gray` and `black` can result in offensive persona coins with some initials combinations\n * - `red` often has a special meaning\n * - `transparent` is not intended to be used with typical initials due to accessibility issues;\n * its primary use is for Facepile overflow buttons.\n */\nconst COLOR_SWATCHES_LOOKUP: PersonaInitialsColor[] = [\n PersonaInitialsColor.lightBlue,\n PersonaInitialsColor.blue,\n PersonaInitialsColor.darkBlue,\n PersonaInitialsColor.teal,\n PersonaInitialsColor.green,\n PersonaInitialsColor.darkGreen,\n PersonaInitialsColor.lightPink,\n PersonaInitialsColor.pink,\n PersonaInitialsColor.magenta,\n PersonaInitialsColor.purple,\n PersonaInitialsColor.orange,\n PersonaInitialsColor.lightRed,\n PersonaInitialsColor.darkRed,\n PersonaInitialsColor.violet,\n PersonaInitialsColor.gold,\n PersonaInitialsColor.burgundy,\n PersonaInitialsColor.warmGray,\n PersonaInitialsColor.cyan,\n PersonaInitialsColor.rust,\n PersonaInitialsColor.coolGray,\n];\n\nconst COLOR_SWATCHES_NUM_ENTRIES = COLOR_SWATCHES_LOOKUP.length;\n\nfunction getInitialsColorFromName(displayName: string | undefined): PersonaInitialsColor {\n let color = PersonaInitialsColor.blue;\n if (!displayName) {\n return color;\n }\n\n let hashCode = 0;\n for (let iLen: number = displayName.length - 1; iLen >= 0; iLen--) {\n const ch: number = displayName.charCodeAt(iLen);\n const shift: number = iLen % 8;\n // eslint-disable-next-line no-bitwise\n hashCode ^= (ch << shift) + (ch >> (8 - shift));\n }\n\n color = COLOR_SWATCHES_LOOKUP[hashCode % COLOR_SWATCHES_NUM_ENTRIES];\n\n return color;\n}\n\nfunction personaInitialsColorToHexCode(personaInitialsColor: PersonaInitialsColor): string {\n switch (personaInitialsColor) {\n case PersonaInitialsColor.lightBlue:\n return '#4F6BED';\n case PersonaInitialsColor.blue:\n return '#0078D4';\n case PersonaInitialsColor.darkBlue:\n return '#004E8C';\n case PersonaInitialsColor.teal:\n return '#038387';\n case PersonaInitialsColor.lightGreen:\n case PersonaInitialsColor.green:\n return '#498205';\n case PersonaInitialsColor.darkGreen:\n return '#0B6A0B';\n case PersonaInitialsColor.lightPink:\n return '#C239B3';\n case PersonaInitialsColor.pink:\n return '#E3008C';\n case PersonaInitialsColor.magenta:\n return '#881798';\n case PersonaInitialsColor.purple:\n return '#5C2E91';\n case PersonaInitialsColor.orange:\n return '#CA5010';\n // eslint-disable-next-line deprecation/deprecation\n case PersonaInitialsColor.red:\n return '#EE1111';\n case PersonaInitialsColor.lightRed:\n return '#D13438';\n case PersonaInitialsColor.darkRed:\n return '#A4262C';\n case PersonaInitialsColor.transparent:\n return 'transparent';\n case PersonaInitialsColor.violet:\n return '#8764B8';\n case PersonaInitialsColor.gold:\n return '#986F0B';\n case PersonaInitialsColor.burgundy:\n return '#750B1C';\n case PersonaInitialsColor.warmGray:\n return '#7A7574';\n case PersonaInitialsColor.cyan:\n return '#005B70';\n case PersonaInitialsColor.rust:\n return '#8E562E';\n case PersonaInitialsColor.coolGray:\n return '#69797E';\n // eslint-disable-next-line deprecation/deprecation\n case PersonaInitialsColor.black:\n return '#1D1D1D';\n case PersonaInitialsColor.gray:\n return '#393939';\n }\n}\n\n/** @deprecated Use `getPersonaInitialsColor` */\nexport function initialsColorPropToColorCode(props: IPersonaProps): string {\n return getPersonaInitialsColor(props);\n}\n\n/**\n * Gets the hex color string (prefixed with #) for the given persona props.\n * This is the logic used internally by the Persona control.\n * @param props - Current persona props\n * @returns Hex color string prefixed with #\n */\nexport function getPersonaInitialsColor(props: Pick<IPersonaProps, 'primaryText' | 'text' | 'initialsColor'>): string {\n // eslint-disable-next-line deprecation/deprecation\n const { primaryText, text } = props;\n let { initialsColor } = props;\n let initialsColorCode: string;\n if (typeof initialsColor === 'string') {\n initialsColorCode = initialsColor;\n } else {\n initialsColor = initialsColor !== undefined ? initialsColor : getInitialsColorFromName(text || primaryText);\n initialsColorCode = personaInitialsColorToHexCode(initialsColor);\n }\n\n return initialsColorCode;\n}\n","import * as React from 'react';\nimport {\n warnDeprecations,\n classNamesFunction,\n divProperties,\n memoizeFunction,\n getInitials,\n getNativeProps,\n getRTL,\n} from '../../../Utilities';\nimport { mergeStyles } from '../../../Styling';\nimport { PersonaPresence } from '../PersonaPresence/index';\nimport { Icon } from '../../../Icon';\nimport { Image, ImageFit, ImageLoadState } from '../../../Image';\nimport {\n IPersonaCoinProps,\n IPersonaCoinStyleProps,\n IPersonaCoinStyles,\n IPersonaPresenceProps,\n PersonaInitialsColor,\n PersonaPresence as PersonaPresenceEnum,\n PersonaSize,\n} from '../Persona.types';\nimport { getPersonaInitialsColor } from '../PersonaInitialsColor';\nimport { sizeToPixels } from '../PersonaConsts';\n\nconst getClassNames = classNamesFunction<IPersonaCoinStyleProps, IPersonaCoinStyles>({\n // There can be many PersonaCoin rendered with different sizes.\n // Therefore setting a larger cache size.\n cacheSize: 100,\n});\n\nconst getInitialsStyles = memoizeFunction(\n (\n className: string,\n initialsColor: PersonaInitialsColor | string | undefined,\n initialsTextColor: string | undefined,\n text: string | undefined,\n primaryText: string | undefined,\n showUnknownPersonaCoin: boolean | undefined,\n ) =>\n mergeStyles(\n className,\n !showUnknownPersonaCoin && {\n backgroundColor: getPersonaInitialsColor({ text, initialsColor, primaryText }),\n color: initialsTextColor,\n },\n ),\n);\n\nexport interface IPersonaState {\n isImageLoaded?: boolean;\n isImageError?: boolean;\n}\n\n/**\n * PersonaCoin with no default styles.\n * [Use the `getStyles` API to add your own styles.](https://github.com/microsoft/fluentui/wiki/Styling)\n */\nexport class PersonaCoinBase extends React.Component<IPersonaCoinProps, IPersonaState> {\n public static defaultProps: IPersonaCoinProps = {\n size: PersonaSize.size48,\n presence: PersonaPresenceEnum.none,\n imageAlt: '',\n };\n\n constructor(props: IPersonaCoinProps) {\n super(props);\n\n if (process.env.NODE_ENV !== 'production') {\n warnDeprecations('PersonaCoin', props, { primaryText: 'text' });\n }\n\n this.state = {\n isImageLoaded: false,\n isImageError: false,\n };\n }\n\n public UNSAFE_componentWillReceiveProps(nextProps: IPersonaCoinProps): void {\n if (nextProps.imageUrl !== this.props.imageUrl) {\n this.setState({\n isImageLoaded: false,\n isImageError: false,\n });\n }\n }\n\n public render(): JSX.Element | null {\n const {\n className,\n coinProps,\n showUnknownPersonaCoin,\n coinSize,\n styles,\n imageUrl,\n initialsColor,\n initialsTextColor,\n isOutOfOffice,\n /* eslint-disable deprecation/deprecation */\n onRenderCoin = this._onRenderCoin,\n onRenderPersonaCoin = onRenderCoin,\n /* eslint-enable deprecation/deprecation */\n onRenderInitials = this._onRenderInitials,\n presence,\n presenceTitle,\n presenceColors,\n // eslint-disable-next-line deprecation/deprecation\n primaryText,\n showInitialsUntilImageLoads,\n text,\n theme,\n } = this.props;\n\n const size = this.props.size as PersonaSize;\n const divProps = getNativeProps<React.HTMLAttributes<HTMLDivElement>>(this.props, divProperties);\n const divCoinProps = getNativeProps<React.HTMLAttributes<HTMLDivElement>>(coinProps || {}, divProperties);\n const coinSizeStyle = coinSize ? { width: coinSize, height: coinSize } : undefined;\n const hideImage = showUnknownPersonaCoin;\n\n const personaPresenceProps: IPersonaPresenceProps = {\n coinSize,\n isOutOfOffice,\n presence,\n presenceTitle,\n presenceColors,\n size,\n theme,\n };\n\n // Use getStyles from props, or fall back to getStyles from styles file.\n const classNames = getClassNames(styles, {\n theme: theme!,\n className: coinProps && coinProps.className ? coinProps.className : className,\n size,\n coinSize,\n showUnknownPersonaCoin,\n });\n\n const shouldRenderInitials = Boolean(\n !this.state.isImageLoaded &&\n ((showInitialsUntilImageLoads && imageUrl) || !imageUrl || this.state.isImageError || hideImage),\n );\n\n return (\n <div role=\"presentation\" {...divProps} className={classNames.coin}>\n {// Render PersonaCoin if size is not size8. size10 and tiny need to removed after a deprecation cleanup.\n // eslint-disable-next-line deprecation/deprecation\n size !== PersonaSize.size8 && size !== PersonaSize.size10 && size !== PersonaSize.tiny ? (\n <div role=\"presentation\" {...divCoinProps} className={classNames.imageArea} style={coinSizeStyle}>\n {shouldRenderInitials && (\n <div\n className={getInitialsStyles(\n classNames.initials,\n initialsColor,\n initialsTextColor,\n text,\n primaryText,\n showUnknownPersonaCoin,\n )}\n style={coinSizeStyle}\n aria-hidden=\"true\"\n >\n {onRenderInitials(this.props, this._onRenderInitials)}\n </div>\n )}\n {!hideImage && onRenderPersonaCoin(this.props, this._onRenderCoin)}\n <PersonaPresence {...personaPresenceProps} />\n </div>\n ) : // Otherwise, render just PersonaPresence.\n this.props.presence ? (\n <PersonaPresence {...personaPresenceProps} />\n ) : (\n // Just render Contact Icon if there isn't a Presence prop.\n <Icon iconName=\"Contact\" className={classNames.size10WithoutPresenceIcon} />\n )}\n {this.props.children}\n </div>\n );\n }\n\n private _onRenderCoin = (props: IPersonaCoinProps): JSX.Element | null => {\n const {\n coinSize,\n styles,\n imageUrl,\n imageAlt,\n imageShouldFadeIn,\n imageShouldStartVisible,\n theme,\n showUnknownPersonaCoin,\n } = this.props;\n\n // Render the Image component only if an image URL is provided\n if (!imageUrl) {\n return null;\n }\n\n const size = this.props.size as PersonaSize;\n\n const classNames = getClassNames(styles, {\n theme: theme!,\n size,\n showUnknownPersonaCoin,\n });\n\n const dimension = coinSize || sizeToPixels[size];\n\n return (\n <Image\n className={classNames.image}\n imageFit={ImageFit.cover}\n src={imageUrl}\n width={dimension}\n height={dimension}\n alt={imageAlt}\n shouldFadeIn={imageShouldFadeIn}\n shouldStartVisible={imageShouldStartVisible}\n onLoadingStateChange={this._onPhotoLoadingStateChange}\n />\n );\n };\n\n /**\n * Deprecation helper for getting text.\n */\n private _getText(): string {\n // eslint-disable-next-line deprecation/deprecation\n return this.props.text || this.props.primaryText || '';\n }\n\n private _onRenderInitials = (props: IPersonaCoinProps): JSX.Element => {\n let { imageInitials } = props;\n const { allowPhoneInitials, showUnknownPersonaCoin } = props;\n\n if (showUnknownPersonaCoin) {\n return <Icon iconName=\"Help\" />;\n }\n\n const isRTL = getRTL(this.props.theme);\n\n imageInitials = imageInitials || getInitials(this._getText(), isRTL, allowPhoneInitials);\n\n return imageInitials !== '' ? <span>{imageInitials}</span> : <Icon iconName=\"Contact\" />;\n };\n\n private _onPhotoLoadingStateChange = (loadState: ImageLoadState) => {\n this.setState({\n isImageLoaded: loadState === ImageLoadState.loaded,\n isImageError: loadState === ImageLoadState.error,\n });\n\n this.props.onPhotoLoadingStateChange && this.props.onPhotoLoadingStateChange(loadState);\n };\n}\n","import { IPersonaCoinStyleProps, IPersonaCoinStyles, PersonaSize } from '../Persona.types';\nimport { HighContrastSelector, FontWeights, getGlobalClassNames, getHighContrastNoAdjustStyle } from '../../../Styling';\nimport { sizeBoolean, sizeToPixels } from '../PersonaConsts';\n\nconst GlobalClassNames = {\n coin: 'ms-Persona-coin',\n imageArea: 'ms-Persona-imageArea',\n image: 'ms-Persona-image',\n initials: 'ms-Persona-initials',\n size8: 'ms-Persona--size8',\n size10: 'ms-Persona--size10',\n size16: 'ms-Persona--size16',\n size24: 'ms-Persona--size24',\n size28: 'ms-Persona--size28',\n size32: 'ms-Persona--size32',\n size40: 'ms-Persona--size40',\n size48: 'ms-Persona--size48',\n size56: 'ms-Persona--size56',\n size72: 'ms-Persona--size72',\n size100: 'ms-Persona--size100',\n size120: 'ms-Persona--size120',\n};\n\nexport const getStyles = (props: IPersonaCoinStyleProps): IPersonaCoinStyles => {\n const { className, theme, coinSize } = props;\n\n const { palette, fonts } = theme;\n\n const size = sizeBoolean(props.size as PersonaSize);\n\n const classNames = getGlobalClassNames(GlobalClassNames, theme);\n\n // Static colors used when displaying 'unknown persona' coin\n const unknownPersonaBackgroundColor = 'rgb(234, 234, 234)';\n const unknownPersonaFontColor = 'rgb(168, 0, 0)';\n\n const dimension = coinSize || (props.size && sizeToPixels[props.size]) || 48;\n\n return {\n coin: [\n classNames.coin,\n fonts.medium,\n size.isSize8 && classNames.size8,\n size.isSize10 && classNames.size10,\n size.isSize16 && classNames.size16,\n size.isSize24 && classNames.size24,\n size.isSize28 && classNames.size28,\n size.isSize32 && classNames.size32,\n size.isSize40 && classNames.size40,\n size.isSize48 && classNames.size48,\n size.isSize56 && classNames.size56,\n size.isSize72 && classNames.size72,\n size.isSize100 && classNames.size100,\n size.isSize120 && classNames.size120,\n className,\n ],\n\n size10WithoutPresenceIcon: {\n fontSize: fonts.xSmall.fontSize,\n position: 'absolute',\n top: '5px',\n right: 'auto',\n left: 0,\n },\n\n imageArea: [\n classNames.imageArea,\n {\n position: 'relative',\n textAlign: 'center',\n flex: '0 0 auto',\n height: dimension,\n width: dimension,\n },\n\n dimension <= 10 && {\n overflow: 'visible',\n background: 'transparent',\n height: 0,\n width: 0,\n },\n ],\n\n image: [\n classNames.image,\n {\n marginRight: '10px',\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%',\n height: '100%',\n border: 0,\n borderRadius: '50%',\n perspective: '1px',\n },\n\n dimension <= 10 && {\n overflow: 'visible',\n background: 'transparent',\n height: 0,\n width: 0,\n },\n\n dimension > 10 && {\n height: dimension,\n width: dimension,\n },\n ],\n\n initials: [\n classNames.initials,\n {\n borderRadius: '50%',\n color: props.showUnknownPersonaCoin ? unknownPersonaFontColor : palette.white,\n fontSize: fonts.large.fontSize,\n fontWeight: FontWeights.semibold,\n // copying the logic for the dimensions; defaulted to 46 for size48\n lineHeight: dimension === 48 ? 46 : dimension,\n height: dimension,\n\n selectors: {\n [HighContrastSelector]: {\n border: '1px solid WindowText',\n ...getHighContrastNoAdjustStyle(),\n color: 'WindowText',\n boxSizing: 'border-box',\n backgroundColor: 'Window !important',\n },\n i: {\n fontWeight: FontWeights.semibold,\n },\n },\n },\n\n props.showUnknownPersonaCoin && {\n backgroundColor: unknownPersonaBackgroundColor,\n },\n\n dimension < 32 && {\n fontSize: fonts.xSmall.fontSize,\n },\n\n dimension >= 32 &&\n dimension < 40 && {\n fontSize: fonts.medium.fontSize,\n },\n\n dimension >= 40 &&\n dimension < 56 && {\n fontSize: fonts.mediumPlus.fontSize,\n },\n\n dimension >= 56 &&\n dimension < 72 && {\n fontSize: fonts.xLarge.fontSize,\n },\n\n dimension >= 72 &&\n dimension < 100 && {\n fontSize: fonts.xxLarge.fontSize,\n },\n\n dimension >= 100 && {\n fontSize: fonts.superLarge.fontSize,\n },\n ],\n };\n};\n","import * as React from 'react';\nimport { styled } from '../../../Utilities';\nimport { IPersonaCoinProps, IPersonaCoinStyleProps, IPersonaCoinStyles } from '../Persona.types';\nimport { PersonaCoinBase } from './PersonaCoin.base';\nimport { getStyles } from './PersonaCoin.styles';\n\n/**\n * PersonaCoin is used to render an individual's avatar and presence.\n */\nexport const PersonaCoin: React.FunctionComponent<IPersonaCoinProps> = styled<\n IPersonaCoinProps,\n IPersonaCoinStyleProps,\n IPersonaCoinStyles\n>(PersonaCoinBase, getStyles, undefined, {\n scope: 'PersonaCoin',\n});\n","import * as React from 'react';\nimport { warnDeprecations, classNamesFunction, divProperties, getNativeProps, IRenderFunction } from '../../Utilities';\nimport { TooltipHost, TooltipOverflowMode, DirectionalHint } from '../../Tooltip';\nimport { PersonaCoin } from './PersonaCoin/PersonaCoin';\nimport {\n IPersonaProps,\n IPersonaStyleProps,\n IPersonaStyles,\n PersonaPresence as PersonaPresenceEnum,\n PersonaSize,\n IPersonaCoinProps,\n} from './Persona.types';\n\nconst getClassNames = classNamesFunction<IPersonaStyleProps, IPersonaStyles>();\n\n/**\n * Persona with no default styles.\n * [Use the `styles` API to add your own styles.](https://github.com/microsoft/fluentui/wiki/Styling)\n */\nexport class PersonaBase extends React.Component<IPersonaProps, {}> {\n public static defaultProps: IPersonaProps = {\n size: PersonaSize.size48,\n presence: PersonaPresenceEnum.none,\n imageAlt: '',\n showOverflowTooltip: true,\n };\n\n constructor(props: IPersonaProps) {\n super(props);\n\n if (process.env.NODE_ENV !== 'production') {\n warnDeprecations('Persona', props, { primaryText: 'text' });\n }\n }\n\n public render(): JSX.Element {\n // wrapping default render behavior based on various this.props properties\n const _onRenderPrimaryText = this._onRenderText(this._getText(), this.props.showOverflowTooltip);\n const _onRenderSecondaryText = this._onRenderText(this.props.secondaryText, this.props.showOverflowTooltip);\n const _onRenderTertiaryText = this._onRenderText(this.props.tertiaryText, this.props.showOverflowTooltip);\n const _onRenderOptionalText = this._onRenderText(this.props.optionalText, this.props.showOverflowTooltip);\n\n const {\n hidePersonaDetails,\n onRenderOptionalText = _onRenderOptionalText,\n onRenderPrimaryText = _onRenderPrimaryText,\n onRenderSecondaryText = _onRenderSecondaryText,\n onRenderTertiaryText = _onRenderTertiaryText,\n onRenderPersonaCoin = this._onRenderPersonaCoin,\n } = this.props;\n const size = this.props.size as PersonaSize;\n\n // These properties are to be explicitly passed into PersonaCoin because they are the only props directly used\n const {\n allowPhoneInitials,\n className,\n coinProps,\n showUnknownPersonaCoin,\n coinSize,\n styles,\n imageAlt,\n imageInitials,\n imageShouldFadeIn,\n imageShouldStartVisible,\n imageUrl,\n initialsColor,\n initialsTextColor,\n isOutOfOffice,\n onPhotoLoadingStateChange,\n // eslint-disable-next-line deprecation/deprecation\n onRenderCoin,\n onRenderInitials,\n presence,\n presenceTitle,\n presenceColors,\n showInitialsUntilImageLoads,\n showSecondaryText,\n theme,\n } = this.props;\n\n const personaCoinProps: IPersonaCoinProps = {\n allowPhoneInitials,\n showUnknownPersonaCoin,\n coinSize,\n imageAlt,\n imageInitials,\n imageShouldFadeIn,\n imageShouldStartVisible,\n imageUrl,\n initialsColor,\n initialsTextColor,\n onPhotoLoadingStateChange,\n onRenderCoin,\n onRenderInitials,\n presence,\n presenceTitle,\n showInitialsUntilImageLoads,\n size,\n text: this._getText(),\n isOutOfOffice,\n presenceColors,\n ...coinProps,\n };\n\n const classNames = getClassNames(styles, {\n theme: theme!,\n className,\n showSecondaryText,\n presence,\n size,\n });\n\n const divProps = getNativeProps<React.HTMLAttributes<HTMLDivElement>>(this.props, divProperties);\n const personaDetails = (\n <div className={classNames.details}>\n {this._renderElement(classNames.primaryText, onRenderPrimaryText, _onRenderPrimaryText)}\n {this._renderElement(classNames.secondaryText, onRenderSecondaryText, _onRenderSecondaryText)}\n {this._renderElement(classNames.tertiaryText, onRenderTertiaryText, _onRenderTertiaryText)}\n {this._renderElement(classNames.optionalText, onRenderOptionalText, _onRenderOptionalText)}\n {this.props.children}\n </div>\n );\n\n return (\n <div\n {...divProps}\n className={classNames.root}\n style={coinSize ? { height: coinSize, minWidth: coinSize } : undefined}\n >\n {onRenderPersonaCoin(personaCoinProps, this._onRenderPersonaCoin)}\n {/* eslint-disable deprecation/deprecation */\n (!hidePersonaDetails ||\n size === PersonaSize.size8 ||\n size === PersonaSize.size10 ||\n size === PersonaSize.tiny) &&\n personaDetails\n /* eslint-enable deprecation/deprecation */\n }\n </div>\n );\n }\n\n /**\n * Renders various types of Text (primaryText, secondaryText, etc)\n * based on the classNames passed\n * @param classNames - element className\n * @param renderFunction - render function\n * @param defaultRenderFunction - default render function\n */\n private _renderElement(\n classNames: string,\n renderFunction: IRenderFunction<IPersonaProps> | undefined,\n defaultRenderFunction: IRenderFunction<IPersonaProps> | undefined,\n ): JSX.Element {\n return (\n <div dir=\"auto\" className={classNames}>\n {renderFunction && renderFunction(this.props, defaultRenderFunction)}\n </div>\n );\n }\n\n /**\n * Deprecation helper for getting text.\n */\n private _getText(): string {\n // eslint-disable-next-line deprecation/deprecation\n return this.props.text || this.props.primaryText || '';\n }\n\n /**\n * using closure to wrap the default render behavior\n * to make it independent of the type of text passed\n * @param text - text to render\n */\n private _onRenderText(text: string | undefined, tooltip = true): IRenderFunction<IPersonaProps> | undefined {\n // return default render behavior for valid text or undefined\n return text\n ? tooltip\n ? (): JSX.Element => {\n // default onRender behavior\n return (\n <TooltipHost\n content={text}\n overflowMode={TooltipOverflowMode.Parent}\n directionalHint={DirectionalHint.topLeftEdge}\n >\n {text}\n </TooltipHost>\n );\n }\n : () => <>{text}</>\n : undefined;\n }\n\n private _onRenderPersonaCoin = (props: IPersonaCoinProps): JSX.Element | null => {\n return <PersonaCoin {...props} />;\n };\n}\n","import { IPersonaStyleProps, IPersonaStyles, PersonaPresence, PersonaSize } from './Persona.types';\nimport { FontWeights, IStyle, normalize, noWrap, getGlobalClassNames } from '../../Styling';\nimport { personaSize, presenceBoolean, sizeBoolean } from './PersonaConsts';\n\nconst GlobalClassNames = {\n root: 'ms-Persona',\n size8: 'ms-Persona--size8',\n size10: 'ms-Persona--size10',\n size16: 'ms-Persona--size16',\n size24: 'ms-Persona--size24',\n size28: 'ms-Persona--size28',\n size32: 'ms-Persona--size32',\n size40: 'ms-Persona--size40',\n size48: 'ms-Persona--size48',\n size56: 'ms-Persona--size56',\n size72: 'ms-Persona--size72',\n size100: 'ms-Persona--size100',\n size120: 'ms-Persona--size120',\n available: 'ms-Persona--online',\n away: 'ms-Persona--away',\n blocked: 'ms-Persona--blocked',\n busy: 'ms-Persona--busy',\n doNotDisturb: 'ms-Persona--donotdisturb',\n offline: 'ms-Persona--offline',\n details: 'ms-Persona-details',\n primaryText: 'ms-Persona-primaryText',\n secondaryText: 'ms-Persona-secondaryText',\n tertiaryText: 'ms-Persona-tertiaryText',\n optionalText: 'ms-Persona-optionalText',\n textContent: 'ms-Persona-textContent',\n};\n\nexport const getStyles = (props: IPersonaStyleProps): IPersonaStyles => {\n const { className, showSecondaryText, theme } = props;\n\n const { semanticColors, fonts } = theme;\n\n const classNames = getGlobalClassNames(GlobalClassNames, theme);\n\n const size = sizeBoolean(props.size as PersonaSize);\n const presence = presenceBoolean(props.presence as PersonaPresence);\n\n const showSecondaryTextDefaultHeight = '16px';\n\n const sharedTextStyles: IStyle = {\n color: semanticColors.bodySubtext,\n fontWeight: FontWeights.regular,\n fontSize: fonts.small.fontSize,\n };\n\n return {\n root: [\n classNames.root,\n theme.fonts.medium,\n normalize,\n {\n color: semanticColors.bodyText,\n position: 'relative',\n height: personaSize.size48,\n minWidth: personaSize.size48,\n display: 'flex',\n alignItems: 'center',\n\n selectors: {\n '.contextualHost': {\n display: 'none',\n },\n },\n },\n\n size.isSize8 && [\n classNames.size8,\n {\n height: personaSize.size8,\n minWidth: personaSize.size8,\n },\n ],\n\n // TODO: Deprecated size and needs to be removed in a future major release.\n size.isSize10 && [\n classNames.size10,\n {\n height: personaSize.size10,\n minWidth: personaSize.size10,\n },\n ],\n\n // TODO: Deprecated size and needs to be removed in a future major release.\n size.isSize16 && [\n classNames.size16,\n {\n height: personaSize.size16,\n minWidth: personaSize.size16,\n },\n ],\n\n size.isSize24 && [\n classNames.size24,\n {\n height: personaSize.size24,\n minWidth: personaSize.size24,\n },\n ],\n\n size.isSize24 &&\n showSecondaryText && {\n height: '36px',\n },\n\n // TODO: Deprecated size and needs to be removed in a future major release.\n size.isSize28 && [\n classNames.size28,\n {\n height: personaSize.size28,\n minWidth: personaSize.size28,\n },\n ],\n\n size.isSize28 &&\n showSecondaryText && {\n height: '32px',\n },\n\n size.isSize32 && [\n classNames.size32,\n {\n height: personaSize.size32,\n minWidth: personaSize.size32,\n },\n ],\n\n size.isSize40 && [\n classNames.size40,\n {\n height: personaSize.size40,\n minWidth: personaSize.size40,\n },\n ],\n\n size.isSize48 && classNames.size48,\n\n size.isSize56 && [\n classNames.size56,\n {\n height: personaSize.size56,\n minWidth: personaSize.size56,\n },\n ],\n\n size.isSize72 && [\n classNames.size72,\n {\n height: personaSize.size72,\n minWidth: personaSize.size72,\n },\n ],\n\n size.isSize100 && [\n classNames.size100,\n {\n height: personaSize.size100,\n minWidth: personaSize.size100,\n },\n ],\n\n size.isSize120 && [\n classNames.size120,\n {\n height: personaSize.size120,\n minWidth: personaSize.size120,\n },\n ],\n\n /**\n * Modifiers: presence\n */\n presence.isAvailable && classNames.available,\n presence.isAway && classNames.away,\n presence.isBlocked && classNames.blocked,\n presence.isBusy && classNames.busy,\n presence.isDoNotDisturb && classNames.doNotDisturb,\n presence.isOffline && classNames.offline,\n className,\n ],\n\n details: [\n classNames.details,\n {\n padding: '0 24px 0 16px',\n minWidth: 0,\n width: '100%',\n textAlign: 'left',\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'space-around',\n },\n\n (size.isSize8 || size.isSize10) && {\n paddingLeft: 17, // increased padding because we don't render a coin at this size\n },\n\n (size.isSize24 || size.isSize28 || size.isSize32) && {\n padding: '0 8px',\n },\n\n (size.isSize40 || size.isSize48) && {\n padding: '0 12px',\n },\n ],\n\n primaryText: [\n classNames.primaryText,\n noWrap,\n {\n color: semanticColors.bodyText,\n fontWeight: FontWeights.regular,\n fontSize: fonts.medium.fontSize,\n selectors: {\n ':hover': {\n color: semanticColors.inputTextHovered,\n },\n },\n },\n\n showSecondaryText && {\n height: showSecondaryTextDefaultHeight,\n lineHeight: showSecondaryTextDefaultHeight,\n overflowX: 'hidden',\n },\n\n (size.isSize8 || size.isSize10) && {\n fontSize: fonts.small.fontSize,\n lineHeight: personaSize.size8,\n },\n\n size.isSize16 && {\n lineHeight: personaSize.size28,\n },\n\n (size.isSize24 || size.isSize28 || size.isSize32 || size.isSize40 || size.isSize48) &&\n showSecondaryText && {\n height: 18,\n },\n\n (size.isSize56 || size.isSize72 || size.isSize100 || size.isSize120) && {\n fontSize: fonts.xLarge.fontSize,\n },\n\n (size.isSize56 || size.isSize72 || size.isSize100 || size.isSize120) &&\n showSecondaryText && {\n height: 22,\n },\n ],\n\n secondaryText: [\n classNames.secondaryText,\n noWrap,\n sharedTextStyles,\n\n (size.isSize8 || size.isSize10 || size.isSize16 || size.isSize24 || size.isSize28 || size.isSize32) && {\n display: 'none',\n },\n\n showSecondaryText && {\n display: 'block',\n height: showSecondaryTextDefaultHeight,\n lineHeight: showSecondaryTextDefaultHeight,\n overflowX: 'hidden',\n },\n\n size.isSize24 &&\n showSecondaryText && {\n height: 18,\n },\n\n (size.isSize56 || size.isSize72 || size.isSize100 || size.isSize120) && {\n fontSize: fonts.medium.fontSize,\n },\n\n (size.isSize56 || size.isSize72 || size.isSize100 || size.isSize120) &&\n showSecondaryText && {\n height: 18,\n },\n ],\n\n tertiaryText: [\n classNames.tertiaryText,\n noWrap,\n sharedTextStyles,\n {\n display: 'none',\n fontSize: fonts.medium.fontSize,\n },\n\n (size.isSize72 || size.isSize100 || size.isSize120) && {\n display: 'block',\n },\n ],\n\n optionalText: [\n classNames.optionalText,\n noWrap,\n sharedTextStyles,\n {\n display: 'none',\n fontSize: fonts.medium.fontSize,\n },\n\n (size.isSize100 || size.isSize120) && {\n display: 'block',\n },\n ],\n\n textContent: [classNames.textContent, noWrap],\n };\n};\n","import * as React from 'react';\nimport { styled } from '../../Utilities';\nimport { IPersonaProps, IPersonaStyleProps, IPersonaStyles } from './Persona.types';\nimport { PersonaBase } from './Persona.base';\nimport { getStyles } from './Persona.styles';\n\n/**\n * Personas are used for rendering an individual's avatar, presence and details.\n * They are used within the PeoplePicker components.\n */\nexport const Persona: React.FunctionComponent<IPersonaProps> = styled<\n IPersonaProps,\n IPersonaStyleProps,\n IPersonaStyles\n>(PersonaBase, getStyles, undefined, {\n scope: 'Persona',\n});\n","import * as React from 'react';\nimport { ResizeGroupBase } from './ResizeGroup.base';\nimport { IStyle, ITheme } from '../../Styling';\nimport { IRefObject, IStyleFunctionOrObject } from '../../Utilities';\n\n/**\n * {@docCategory ResizeGroup}\n */\nexport enum ResizeGroupDirection {\n horizontal = 0,\n vertical = 1,\n}\n\n/**\n * {@docCategory ResizeGroup}\n */\nexport interface IResizeGroup {\n /**\n * Remeasures the available space.\n */\n remeasure(): void;\n}\n\n/**\n * {@docCategory ResizeGroup}\n */\nexport interface IResizeGroupProps extends React.HTMLAttributes<ResizeGroupBase | HTMLElement> {\n /**\n * Optional callback to access the IResizeGroup interface. Use this instead of ref for accessing\n * the public methods and properties of the component.\n */\n componentRef?: IRefObject<IResizeGroup>;\n\n /**\n * Call to provide customized styling that will layer on top of the variant rules\n * @deprecated Removed to reduce bundle size. Please use `className` and add css rules to `className` instead.\n */\n styles?: IStyleFunctionOrObject<IResizeGroupStyleProps, IResizeGroupStyles>;\n\n /**\n * Theme provided by HOC.\n */\n theme?: ITheme;\n\n /**\n * Additional css class to apply to the Component\n * @defaultvalue undefined\n */\n className?: string;\n\n /**\n * Direction of this resize group, vertical or horizontal\n * @defaultvalue ResizeGroupDirection.horizontal\n */\n direction?: ResizeGroupDirection;\n\n /**\n * Initial data to be passed to the `onRenderData` function. When there is no `onGrowData` provided, this data should\n * represent what should be passed to the render function when the parent container of the ResizeGroup is at its\n * maximum supported width. A `cacheKey` property may optionally be included as part of the data. Two data objects\n * with the same `cacheKey` will be assumed to take up the same width and will prevent measurements.\n * The type of `cacheKey` is a string.\n */\n data: any;\n\n /**\n * Function to render the data. Called when rendering the contents to the screen and when\n * rendering in a hidden div to measure the size of the contents.\n */\n onRenderData: (data: any) => JSX.Element;\n\n /**\n * Function to be performed on the data in order to reduce its width and make it fit into the given space.\n * If there are no more scaling steps to apply, it should return undefined to prevent\n * an infinite render loop.\n */\n onReduceData: (prevData: any) => any;\n\n /**\n * Function to be performed on the data in order to increase its width. It is called in scenarios where the\n * container has more room than the previous render and we may be able to fit more content. If there are no more\n * scaling operations to perform on teh data, it should return undefined to prevent an infinite render loop.\n */\n onGrowData?: (prevData: any) => any;\n\n /**\n * Function to be called every time data is rendered. It provides the data that was actually rendered.\n * A use case would be adding telemetry when a particular control is shown in an overflow well or\n * dropped as a result of onReduceData or to count the number of renders that an implementation of\n * onReduceData triggers.\n */\n dataDidRender?: (renderedData: any) => void;\n}\n\n/**\n * {@docCategory ResizeGroup}\n */\nexport interface IResizeGroupStyleProps {\n /**\n * Accept theme prop.\n */\n theme: ITheme;\n\n /**\n * Accept custom classNames\n */\n className?: string;\n}\n\n/**\n * {@docCategory ResizeGroup}\n */\nexport interface IResizeGroupStyles {\n /**\n * Style for the root element.\n */\n root: IStyle;\n}\n","import * as React from 'react';\n\nimport { FocusZone, FocusZoneDirection, IFocusZone } from '@fluentui/react-focus';\nimport { IKeytipProps } from '../../Keytip';\nimport {\n initializeComponentRef,\n classNamesFunction,\n divProperties,\n elementContains,\n focusFirstChild,\n getNativeProps,\n warnMutuallyExclusive,\n} from '../../Utilities';\nimport { IProcessedStyleSet } from '../../Styling';\nimport { KeytipManager } from '../../utilities/keytips/KeytipManager';\nimport {\n IOverflowSet,\n IOverflowSetItemProps,\n IOverflowSetProps,\n IOverflowSetStyles,\n IOverflowSetStyleProps,\n} from './OverflowSet.types';\n\nconst getClassNames = classNamesFunction<IOverflowSetStyleProps, IOverflowSetStyles>();\nconst COMPONENT_NAME = 'OverflowSet';\n\nexport class OverflowSetBase extends React.Component<IOverflowSetProps, {}> implements IOverflowSet {\n private _focusZone = React.createRef<IFocusZone>();\n private _persistedKeytips: { [uniqueID: string]: IKeytipProps } = {};\n private _keytipManager: KeytipManager = KeytipManager.getInstance();\n private _divContainer = React.createRef<HTMLDivElement>();\n private _classNames: IProcessedStyleSet<IOverflowSetStyles>;\n\n constructor(props: IOverflowSetProps) {\n super(props);\n\n initializeComponentRef(this);\n warnMutuallyExclusive(COMPONENT_NAME, props, {\n doNotContainWithinFocusZone: 'focusZoneProps',\n });\n }\n\n public render(): JSX.Element {\n const {\n items,\n overflowItems,\n className,\n // eslint-disable-next-line deprecation/deprecation\n focusZoneProps,\n styles,\n vertical,\n // eslint-disable-next-line deprecation/deprecation\n doNotContainWithinFocusZone,\n role,\n overflowSide = 'end',\n } = this.props;\n\n this._classNames = getClassNames(styles, { className, vertical });\n\n let Tag;\n let uniqueComponentProps;\n\n if (doNotContainWithinFocusZone) {\n Tag = 'div';\n uniqueComponentProps = {\n ...getNativeProps<React.HTMLAttributes<HTMLDivElement>>(this.props, divProperties),\n ref: this._divContainer,\n };\n } else {\n Tag = FocusZone;\n uniqueComponentProps = {\n ...getNativeProps<React.HTMLAttributes<HTMLDivElement>>(this.props, divProperties),\n ...focusZoneProps,\n componentRef: this._focusZone,\n direction: vertical ? FocusZoneDirection.vertical : FocusZoneDirection.horizontal,\n };\n }\n\n const showOverflow = overflowItems && overflowItems.length > 0;\n\n return (\n <Tag\n role={role || 'group'}\n aria-orientation={role === 'menubar' ? (vertical === true ? 'vertical' : 'horizontal') : undefined}\n {...uniqueComponentProps}\n className={this._classNames.root}\n >\n {overflowSide === 'start' && showOverflow && this._onRenderOverflowButtonWrapper(overflowItems!)}\n {items && this._onRenderItems(items)}\n {overflowSide === 'end' && showOverflow && this._onRenderOverflowButtonWrapper(overflowItems!)}\n </Tag>\n );\n }\n\n /**\n * Sets focus to the first tabbable item in the OverflowSet.\n * @param forceIntoFirstElement - If true, focus will be forced into the first element,\n * even if focus is already in theOverflowSet\n * @returns True if focus could be set to an active element, false if no operation was taken.\n */\n public focus(forceIntoFirstElement?: boolean): boolean {\n let focusSucceeded = false;\n\n // eslint-disable-next-line deprecation/deprecation\n if (this.props.doNotContainWithinFocusZone) {\n if (this._divContainer.current) {\n focusSucceeded = focusFirstChild(this._divContainer.current);\n }\n } else if (this._focusZone.current) {\n focusSucceeded = this._focusZone.current.focus(forceIntoFirstElement);\n }\n\n return focusSucceeded;\n }\n\n /**\n * Sets focus to a specific child element within the OverflowSet.\n * @param childElement - The child element within the zone to focus.\n * @returns True if focus could be set to an active element, false if no operation was taken.\n */\n public focusElement(childElement?: HTMLElement): boolean {\n let focusSucceeded = false;\n\n if (!childElement) {\n return false;\n }\n\n // eslint-disable-next-line deprecation/deprecation\n if (this.props.doNotContainWithinFocusZone) {\n if (this._divContainer.current && elementContains(this._divContainer.current, childElement)) {\n childElement.focus();\n focusSucceeded = document.activeElement === childElement;\n }\n } else if (this._focusZone.current) {\n focusSucceeded = this._focusZone.current.focusElement(childElement);\n }\n\n return focusSucceeded;\n }\n\n // Add keytip register/unregister handlers to lifecycle functions to correctly manage persisted keytips\n public componentDidMount() {\n this._registerPersistedKeytips();\n }\n\n public componentWillUnmount() {\n this._unregisterPersistedKeytips();\n }\n\n public UNSAFE_componentWillUpdate() {\n this._unregisterPersistedKeytips();\n }\n\n public componentDidUpdate() {\n this._registerPersistedKeytips();\n }\n\n private _registerPersistedKeytips() {\n Object.keys(this._persistedKeytips).forEach((key: string) => {\n const keytip = this._persistedKeytips[key];\n const uniqueID = this._keytipManager.register(keytip, true);\n // Update map\n this._persistedKeytips[uniqueID] = keytip;\n delete this._persistedKeytips[key];\n });\n }\n\n private _unregisterPersistedKeytips() {\n // Delete all persisted keytips saved\n Object.keys(this._persistedKeytips).forEach((uniqueID: string) => {\n this._keytipManager.unregister(this._persistedKeytips[uniqueID], uniqueID, true);\n });\n this._persistedKeytips = {};\n }\n\n private _onRenderItems = (items: IOverflowSetItemProps[]): JSX.Element[] => {\n return items.map((item, i) => {\n return (\n <div key={item.key} className={this._classNames.item}>\n {this.props.onRenderItem(item)}\n </div>\n );\n });\n };\n\n private _onRenderOverflowButtonWrapper = (items: any[]): JSX.Element => {\n const wrapperDivProps: React.HTMLProps<HTMLDivElement> = {\n className: this._classNames.overflowButton,\n };\n\n const overflowKeytipSequences = this.props.keytipSequences;\n let newOverflowItems: any[] = [];\n\n if (overflowKeytipSequences) {\n items.forEach(overflowItem => {\n const keytip = (overflowItem as IOverflowSetItemProps).keytipProps;\n if (keytip) {\n // Create persisted keytip\n const persistedKeytip: IKeytipProps = {\n content: keytip.content,\n keySequences: keytip.keySequences,\n disabled: keytip.disabled || !!(overflowItem.disabled || overflowItem.isDisabled),\n hasDynamicChildren: keytip.hasDynamicChildren,\n hasMenu: keytip.hasMenu,\n };\n\n if (keytip.hasDynamicChildren || this._getSubMenuForItem(overflowItem)) {\n // If the keytip has a submenu or children nodes, change onExecute to persistedKeytipExecute\n persistedKeytip.onExecute = this._keytipManager.menuExecute.bind(\n this._keytipManager,\n overflowKeytipSequences,\n overflowItem.keytipProps.keySequences,\n );\n } else {\n // If the keytip doesn't have a submenu, just execute the original function\n persistedKeytip.onExecute = keytip.onExecute;\n }\n\n // Add this persisted keytip to our internal list, use a temporary uniqueID (its content)\n // uniqueID will get updated on register\n this._persistedKeytips[persistedKeytip.content] = persistedKeytip;\n\n // Add the overflow sequence to this item\n const newOverflowItem = {\n ...overflowItem,\n keytipProps: {\n ...keytip,\n overflowSetSequence: overflowKeytipSequences,\n },\n };\n newOverflowItems.push(newOverflowItem);\n } else {\n // Nothing to change, add overflowItem to list\n newOverflowItems.push(overflowItem);\n }\n });\n } else {\n newOverflowItems = items;\n }\n return <div {...wrapperDivProps}>{this.props.onRenderOverflowButton(newOverflowItems)}</div>;\n };\n\n /**\n * Gets the subMenu for an overflow item\n * Checks if itemSubMenuProvider has been defined, if not defaults to subMenuProps\n */\n private _getSubMenuForItem(item: any): any[] | boolean | undefined {\n if (this.props.itemSubMenuProvider) {\n return this.props.itemSubMenuProvider(item);\n }\n if (item.subMenuProps) {\n return item.subMenuProps.items;\n }\n return undefined;\n }\n}\n","import { IOverflowSetStyles, IOverflowSetStyleProps } from './OverflowSet.types';\nimport { IStyleFunction } from '../../Utilities';\nimport { IStyle } from '../../Styling';\n\nconst overflowItemStyle: IStyle = {\n flexShrink: 0,\n display: 'inherit',\n};\n\nexport const getStyles: IStyleFunction<IOverflowSetStyleProps, IOverflowSetStyles> = props => {\n const { className, vertical } = props;\n return {\n root: [\n 'ms-OverflowSet',\n {\n position: 'relative',\n display: 'flex',\n flexWrap: 'nowrap',\n },\n vertical && { flexDirection: 'column' },\n className,\n ],\n item: ['ms-OverflowSet-item', overflowItemStyle],\n overflowButton: ['ms-OverflowSet-overflowButton', overflowItemStyle],\n };\n};\n","import * as React from 'react';\nimport { styled } from '../../Utilities';\nimport { OverflowSetBase } from './OverflowSet.base';\nimport { getStyles } from './OverflowSet.styles';\nimport { IOverflowSetProps } from './OverflowSet.types';\n\nexport const OverflowSet: React.FunctionComponent<IOverflowSetProps> = styled(OverflowSetBase, getStyles, undefined, {\n scope: 'OverflowSet',\n});\n","import * as React from 'react';\nimport { Async, EventGroup, divProperties, getNativeProps, warnDeprecations } from '../../Utilities';\nimport { IResizeGroupProps, ResizeGroupDirection } from './ResizeGroup.types';\nimport { initializeComponentRef } from '@uifabric/utilities';\n\nconst RESIZE_DELAY = 16;\n\nexport interface IResizeGroupState {\n /**\n * Final data used to render proper sized component\n */\n renderedData?: any;\n\n /**\n * Data to render in a hidden div for measurement\n */\n dataToMeasure?: any;\n\n /**\n * Set to true when the content container might have new dimensions and should\n * be remeasured.\n */\n measureContainer?: boolean;\n\n /**\n * Are we resizing to accommodate having more or less available space?\n * The 'grow' direction is when the container may have more room than the last render,\n * such as when a window resize occurs. This means we will try to fit more content in the window.\n * The 'shrink' direction is when the contents don't fit in the container and we need\n * to find a transformation of the data that makes everything fit.\n */\n resizeDirection?: 'grow' | 'shrink';\n}\n\n/**\n * Returns a simple object is able to store measurements with a given key.\n */\nexport const getMeasurementCache = () => {\n const measurementsCache: { [key: string]: number } = {};\n\n return {\n /**\n * Checks if the provided data has a cacheKey. If it has a cacheKey and there is a\n * corresponding entry in the measurementsCache, then it will return that value.\n * Returns undefined otherwise.\n */\n getCachedMeasurement: (data: any): number | undefined => {\n if (data && data.cacheKey && measurementsCache.hasOwnProperty(data.cacheKey)) {\n return measurementsCache[data.cacheKey];\n }\n\n return undefined;\n },\n /**\n * Should be called whenever there is a new measurement associated with a given data object.\n * If the data has a cacheKey, store that measurement in the measurementsCache.\n */\n addMeasurementToCache: (data: any, measurement: number): void => {\n if (data.cacheKey) {\n measurementsCache[data.cacheKey] = measurement;\n }\n },\n };\n};\n\n/**\n * Returns a function that is able to compute the next state for the ResizeGroup given the current\n * state and any measurement updates.\n */\nexport const getNextResizeGroupStateProvider = (measurementCache = getMeasurementCache()) => {\n const _measurementCache = measurementCache;\n let _containerDimension: number | undefined;\n\n /**\n * Gets the width/height of the data rendered in a hidden div.\n * @param measuredData - The data corresponding to the measurement we wish to take.\n * @param getElementToMeasureDimension - A function that returns the measurement of the rendered data.\n * Only called when the measurement is not in the cache.\n */\n function _getMeasuredDimension(measuredData: any, getElementToMeasureDimension: () => number): number {\n const cachedDimension = _measurementCache.getCachedMeasurement(measuredData);\n if (cachedDimension !== undefined) {\n return cachedDimension;\n }\n\n const measuredDimension = getElementToMeasureDimension();\n _measurementCache.addMeasurementToCache(measuredData, measuredDimension);\n return measuredDimension;\n }\n\n /**\n * Will get the next IResizeGroupState based on the current data while trying to shrink contents\n * to fit in the container.\n * @param data - The initial data point to start measuring.\n * @param onReduceData - Function that transforms the data into something that should render with less width/height.\n * @param getElementToMeasureDimension - A function that returns the measurement of the rendered data.\n * Only called when the measurement is not in the cache.\n */\n function _shrinkContentsUntilTheyFit(\n data: any,\n onReduceData: (prevData: any) => any,\n getElementToMeasureDimension: () => number,\n ): IResizeGroupState {\n let dataToMeasure = data;\n let measuredDimension: number | undefined = _getMeasuredDimension(data, getElementToMeasureDimension);\n\n while (measuredDimension > _containerDimension!) {\n const nextMeasuredData = onReduceData(dataToMeasure);\n\n // We don't want to get stuck in an infinite render loop when there are no more\n // scaling steps, so implementations of onReduceData should return undefined when\n // there are no more scaling states to apply.\n if (nextMeasuredData === undefined) {\n return {\n renderedData: dataToMeasure,\n resizeDirection: undefined,\n dataToMeasure: undefined,\n };\n }\n\n measuredDimension = _measurementCache.getCachedMeasurement(nextMeasuredData);\n\n // If the measurement isn't in the cache, we need to rerender with some data in a hidden div\n if (measuredDimension === undefined) {\n return {\n dataToMeasure: nextMeasuredData,\n resizeDirection: 'shrink',\n };\n }\n\n dataToMeasure = nextMeasuredData;\n }\n\n return {\n renderedData: dataToMeasure,\n resizeDirection: undefined,\n dataToMeasure: undefined,\n };\n }\n\n /**\n * This function should be called when the state changes in a manner that might allow for more content to fit\n * on the screen, such as the window width/height growing.\n * @param data - The initial data point to start measuring.\n * @param onGrowData - Function that transforms the data into something that may take up more space when rendering.\n * @param getElementToMeasureDimension - A function that returns the measurement of the rendered data.\n * Only called when the measurement is not in the cache.\n */\n function _growDataUntilItDoesNotFit(\n data: any,\n onGrowData: (prevData: any) => any,\n getElementToMeasureDimension: () => number,\n onReduceData: (prevData: any) => any,\n ): IResizeGroupState {\n let dataToMeasure = data;\n let measuredDimension: number | undefined = _getMeasuredDimension(data, getElementToMeasureDimension);\n\n while (measuredDimension < _containerDimension!) {\n const nextMeasuredData = onGrowData(dataToMeasure);\n\n // We don't want to get stuck in an infinite render loop when there are no more\n // scaling steps, so implementations of onGrowData should return undefined when\n // there are no more scaling states to apply.\n if (nextMeasuredData === undefined) {\n return {\n renderedData: dataToMeasure,\n resizeDirection: undefined,\n dataToMeasure: undefined,\n };\n }\n\n measuredDimension = _measurementCache.getCachedMeasurement(nextMeasuredData);\n // If the measurement isn't in the cache, we need to rerender with some data in a hidden div\n if (measuredDimension === undefined) {\n return {\n dataToMeasure: nextMeasuredData,\n };\n }\n\n dataToMeasure = nextMeasuredData;\n }\n\n // Once the loop is done, we should now shrink until the contents fit.\n return {\n resizeDirection: 'shrink',\n ..._shrinkContentsUntilTheyFit(dataToMeasure, onReduceData, getElementToMeasureDimension),\n };\n }\n\n /**\n * Handles an update to the container width/height.\n * Should only be called when we knew the previous container width/height.\n * @param newDimension - The new width/height of the container.\n * @param fullDimensionData - The initial data passed in as a prop to resizeGroup.\n * @param renderedData - The data that was rendered prior to the container size changing.\n * @param onGrowData - Set to true if the Resize group has an onGrowData function.\n */\n function _updateContainerDimension(\n newDimension: number,\n fullDimensionData: any,\n renderedData: any,\n onGrowData?: (prevData: any) => any,\n ): IResizeGroupState {\n let nextState: IResizeGroupState;\n if (newDimension > _containerDimension!) {\n if (onGrowData) {\n nextState = {\n resizeDirection: 'grow',\n dataToMeasure: onGrowData(renderedData),\n };\n } else {\n nextState = {\n resizeDirection: 'shrink',\n dataToMeasure: fullDimensionData,\n };\n }\n } else {\n nextState = {\n resizeDirection: 'shrink',\n dataToMeasure: renderedData,\n };\n }\n _containerDimension = newDimension;\n return { ...nextState, measureContainer: false };\n }\n\n function getNextState(\n props: IResizeGroupProps,\n currentState: IResizeGroupState,\n getElementToMeasureDimension: () => number,\n newContainerDimension?: number,\n ): IResizeGroupState | undefined {\n // If there is no new container width/height or data to measure, there is no need for a new state update\n if (newContainerDimension === undefined && currentState.dataToMeasure === undefined) {\n return undefined;\n }\n\n if (newContainerDimension) {\n // If we know the last container size and we rendered data at that width/height, we can do an optimized render\n if (_containerDimension && currentState.renderedData && !currentState.dataToMeasure) {\n return {\n ...currentState,\n ..._updateContainerDimension(newContainerDimension, props.data, currentState.renderedData, props.onGrowData),\n };\n }\n\n // If we are just setting the container width/height for the first time, we can't do any optimizations\n _containerDimension = newContainerDimension;\n }\n\n let nextState: IResizeGroupState = {\n ...currentState,\n measureContainer: false,\n };\n\n if (currentState.dataToMeasure) {\n if (currentState.resizeDirection === 'grow' && props.onGrowData) {\n nextState = {\n ...nextState,\n ..._growDataUntilItDoesNotFit(\n currentState.dataToMeasure,\n props.onGrowData,\n getElementToMeasureDimension,\n props.onReduceData,\n ),\n };\n } else {\n nextState = {\n ...nextState,\n ..._shrinkContentsUntilTheyFit(currentState.dataToMeasure, props.onReduceData, getElementToMeasureDimension),\n };\n }\n }\n\n return nextState;\n }\n\n /** Function that determines if we need to render content for measurement based on the measurement cache contents. */\n function shouldRenderDataForMeasurement(dataToMeasure: any | undefined): boolean {\n if (!dataToMeasure || _measurementCache.getCachedMeasurement(dataToMeasure) !== undefined) {\n return false;\n }\n\n return true;\n }\n\n function getInitialResizeGroupState(data: any): IResizeGroupState {\n return {\n dataToMeasure: { ...data },\n resizeDirection: 'grow',\n measureContainer: true,\n };\n }\n\n return {\n getNextState,\n shouldRenderDataForMeasurement,\n getInitialResizeGroupState,\n };\n};\n\n// Provides a context property that (if true) tells any child components that\n// they are only being used for measurement purposes and will not be visible.\nexport const MeasuredContext = React.createContext({ isMeasured: false });\n\n// Styles for the hidden div used for measurement\nconst hiddenDivStyles: React.CSSProperties = { position: 'fixed', visibility: 'hidden' };\nconst hiddenParentStyles: React.CSSProperties = { position: 'relative' };\nconst COMPONENT_NAME = 'ResizeGroup';\n\nexport class ResizeGroupBase extends React.Component<IResizeGroupProps, IResizeGroupState> {\n private _nextResizeGroupStateProvider = getNextResizeGroupStateProvider();\n // The root div which is the container inside of which we are trying to fit content.\n private _root = React.createRef<HTMLDivElement>();\n // A div that can be used for the initial measurement so that we can avoid mounting a second instance\n // of the component being measured for the initial render.\n private _initialHiddenDiv = React.createRef<HTMLDivElement>();\n // A hidden div that is used for mounting a new instance of the component for measurement in a hidden\n // div without unmounting the currently visible content.\n private _updateHiddenDiv = React.createRef<HTMLDivElement>();\n // Tracks if any content has been rendered to the user. This enables us to do some performance optimizations\n // for the initial render.\n private _hasRenderedContent = false;\n\n private _async: Async;\n private _events: EventGroup;\n\n constructor(props: IResizeGroupProps) {\n super(props);\n this.state = this._nextResizeGroupStateProvider.getInitialResizeGroupState(this.props.data);\n\n initializeComponentRef(this);\n this._async = new Async(this);\n this._events = new EventGroup(this);\n\n warnDeprecations(COMPONENT_NAME, props, {\n styles: 'className',\n });\n }\n\n public render(): JSX.Element {\n const { className, onRenderData } = this.props;\n const { dataToMeasure, renderedData } = this.state;\n const divProps = getNativeProps<React.HTMLAttributes<HTMLDivElement>>(this.props, divProperties, ['data']);\n\n const dataNeedsMeasuring = this._nextResizeGroupStateProvider.shouldRenderDataForMeasurement(dataToMeasure);\n\n const isInitialMeasure = !this._hasRenderedContent && dataNeedsMeasuring;\n\n // We only ever render the final content to the user. All measurements are done in a hidden div.\n // For the initial render, we want this to be as fast as possible, so we need to make sure that we only mount one\n // version of the component for measurement and the final render. For renders that update what is on screen, we\n // want to make sure that there are no jarring effects such as the screen flashing as we apply scaling steps for\n // measurement. In the update case, we mount a second version of the component just for measurement purposes and\n // leave the rendered content untouched until we know the next state to show to the user.\n return (\n <div {...divProps} className={className} ref={this._root}>\n <div style={hiddenParentStyles}>\n {dataNeedsMeasuring && !isInitialMeasure && (\n <div style={hiddenDivStyles} ref={this._updateHiddenDiv}>\n <MeasuredContext.Provider value={{ isMeasured: true }}>\n {onRenderData(dataToMeasure)}\n </MeasuredContext.Provider>\n </div>\n )}\n\n <div\n ref={this._initialHiddenDiv}\n style={isInitialMeasure ? hiddenDivStyles : undefined}\n data-automation-id=\"visibleContent\"\n >\n {isInitialMeasure ? onRenderData(dataToMeasure) : renderedData && onRenderData(renderedData)}\n </div>\n </div>\n </div>\n );\n }\n\n public componentDidMount(): void {\n this._afterComponentRendered(this.props.direction);\n this._events.on(window, 'resize', this._async.debounce(this._onResize, RESIZE_DELAY, { leading: true }));\n }\n\n public UNSAFE_componentWillReceiveProps(nextProps: IResizeGroupProps): void {\n this.setState({\n dataToMeasure: { ...nextProps.data },\n resizeDirection: 'grow',\n // Receiving new props means the parent might rerender and the root width/height might change\n measureContainer: true,\n });\n }\n\n public componentDidUpdate(prevProps: IResizeGroupProps) {\n if (this.state.renderedData) {\n this._hasRenderedContent = true;\n if (this.props.dataDidRender) {\n this.props.dataDidRender(this.state.renderedData);\n }\n }\n this._afterComponentRendered(this.props.direction);\n }\n\n public componentWillUnmount(): void {\n this._async.dispose();\n this._events.dispose();\n }\n\n public remeasure(): void {\n if (this._root.current) {\n this.setState({ measureContainer: true });\n }\n }\n\n private _afterComponentRendered(direction?: ResizeGroupDirection): void {\n this._async.requestAnimationFrame(() => {\n let containerDimension = undefined;\n if (this.state.measureContainer && this._root.current) {\n const boundingRect = this._root.current.getBoundingClientRect();\n containerDimension =\n direction && direction === ResizeGroupDirection.vertical ? boundingRect.height : boundingRect.width;\n }\n const nextState = this._nextResizeGroupStateProvider.getNextState(\n this.props,\n this.state,\n () => {\n const refToMeasure = !this._hasRenderedContent ? this._initialHiddenDiv : this._updateHiddenDiv;\n if (!refToMeasure.current) {\n return 0;\n }\n return direction && direction === ResizeGroupDirection.vertical\n ? refToMeasure.current.scrollHeight\n : refToMeasure.current.scrollWidth;\n },\n containerDimension,\n );\n\n if (nextState) {\n this.setState(nextState);\n }\n }, this._root.current);\n }\n\n private _onResize(): void {\n if (this._root.current) {\n this.setState({ measureContainer: true });\n }\n }\n}\n","import { ResizeGroupBase } from './ResizeGroup.base';\n\nexport const ResizeGroup = ResizeGroupBase;\n","import { ICommandBarStyleProps, ICommandBarStyles } from './CommandBar.types';\nimport { IButtonStyles } from '../Button/Button.types';\nimport { memoizeFunction } from '../../Utilities';\nimport { IStyle } from '../../Styling';\n\nconst COMMAND_BAR_HEIGHT = 44;\n\nexport const getStyles = (props: ICommandBarStyleProps): ICommandBarStyles => {\n const { className, theme } = props;\n const { semanticColors } = theme;\n\n return {\n root: [\n theme.fonts.medium,\n 'ms-CommandBar',\n {\n display: 'flex',\n backgroundColor: semanticColors.bodyBackground,\n padding: '0 14px 0 24px',\n height: COMMAND_BAR_HEIGHT,\n },\n className,\n ],\n primarySet: [\n 'ms-CommandBar-primaryCommand',\n {\n flexGrow: '1',\n display: 'flex',\n alignItems: 'stretch',\n },\n ],\n secondarySet: [\n 'ms-CommandBar-secondaryCommand',\n {\n flexShrink: '0',\n display: 'flex',\n alignItems: 'stretch',\n },\n ],\n };\n};\n\nexport const getCommandButtonStyles = memoizeFunction(\n (customStyles: IButtonStyles | undefined): IButtonStyles => {\n const rootStyles: IStyle = {\n height: '100%',\n };\n const labelStyles: IStyle = {\n whiteSpace: 'nowrap',\n };\n\n const { root, label, ...restCustomStyles } = customStyles || {};\n\n return {\n ...restCustomStyles,\n root: root ? [rootStyles, root] : rootStyles,\n label: label ? [labelStyles, label] : labelStyles,\n };\n },\n);\n","import * as React from 'react';\nimport {\n classNamesFunction,\n css,\n nullRender,\n IComponentAs,\n getNativeProps,\n divProperties,\n composeComponentAs,\n initializeComponentRef,\n} from '../../Utilities';\nimport {\n ICommandBar,\n ICommandBarItemProps,\n ICommandBarProps,\n ICommandBarStyleProps,\n ICommandBarStyles,\n} from './CommandBar.types';\nimport { IOverflowSet, OverflowSet } from '../../OverflowSet';\nimport { IResizeGroup, ResizeGroup } from '../../ResizeGroup';\nimport { FocusZone, FocusZoneDirection } from '../../FocusZone';\nimport { CommandBarButton, IButtonProps } from '../../Button';\nimport { TooltipHost } from '../../Tooltip';\nimport { getCommandButtonStyles } from './CommandBar.styles';\n\nconst getClassNames = classNamesFunction<ICommandBarStyleProps, ICommandBarStyles>();\n\nexport interface ICommandBarData {\n /**\n * Items being rendered in the primary region\n */\n primaryItems: ICommandBarItemProps[];\n /**\n * Items being rendered in the overflow\n */\n overflowItems: ICommandBarItemProps[];\n /**\n * Items being rendered on the far side\n */\n farItems: ICommandBarItemProps[] | undefined;\n /**\n * Length of original overflowItems to ensure that they are not moved into primary region on resize\n */\n minimumOverflowItems: number;\n /**\n * Unique string used to cache the width of the command bar\n */\n cacheKey: string;\n}\n\nexport class CommandBarBase extends React.Component<ICommandBarProps, {}> implements ICommandBar {\n public static defaultProps: ICommandBarProps = {\n items: [],\n overflowItems: [],\n };\n\n private _overflowSet = React.createRef<IOverflowSet>();\n private _resizeGroup = React.createRef<IResizeGroup>();\n private _classNames: { [key in keyof ICommandBarStyles]: string };\n\n constructor(props: ICommandBarProps) {\n super(props);\n\n initializeComponentRef(this);\n }\n\n public render(): JSX.Element {\n const {\n items,\n overflowItems,\n farItems,\n styles,\n theme,\n dataDidRender,\n onReduceData = this._onReduceData,\n onGrowData = this._onGrowData,\n } = this.props;\n\n const commandBarData: ICommandBarData = {\n primaryItems: [...items],\n overflowItems: [...overflowItems!],\n minimumOverflowItems: [...overflowItems!].length, // for tracking\n farItems,\n cacheKey: this._computeCacheKey({\n primaryItems: [...items],\n overflow: overflowItems && overflowItems.length > 0,\n }),\n };\n\n this._classNames = getClassNames(styles!, { theme: theme! });\n\n // ResizeGroup will render these attributes to the root <div>.\n // TODO We may need to elevate classNames from <FocusZone> into <ResizeGroup> ?\n const nativeProps = getNativeProps<React.HTMLAttributes<HTMLDivElement>>(this.props, divProperties);\n\n return (\n <ResizeGroup\n {...nativeProps}\n componentRef={this._resizeGroup}\n data={commandBarData}\n onReduceData={onReduceData}\n onGrowData={onGrowData}\n onRenderData={this._onRenderData}\n dataDidRender={dataDidRender}\n />\n );\n }\n\n public focus(): void {\n const { current: overflowSet } = this._overflowSet;\n\n overflowSet && overflowSet.focus();\n }\n\n public remeasure(): void {\n this._resizeGroup.current && this._resizeGroup.current.remeasure();\n }\n\n private _onRenderData = (data: ICommandBarData): JSX.Element => {\n return (\n <FocusZone\n className={css(this._classNames.root)}\n direction={FocusZoneDirection.horizontal}\n role={'menubar'}\n aria-label={this.props.ariaLabel}\n >\n {/*Primary Items*/}\n <OverflowSet\n role=\"none\"\n componentRef={this._overflowSet}\n className={css(this._classNames.primarySet)}\n doNotContainWithinFocusZone={true}\n items={data.primaryItems}\n overflowItems={data.overflowItems.length ? data.overflowItems : undefined}\n onRenderItem={this._onRenderItem}\n onRenderOverflowButton={this._onRenderOverflowButton}\n />\n\n {/*Secondary Items*/}\n {data.farItems && data.farItems.length > 0 && (\n <OverflowSet\n role=\"none\"\n className={css(this._classNames.secondarySet)}\n doNotContainWithinFocusZone={true}\n items={data.farItems}\n onRenderItem={this._onRenderItem}\n onRenderOverflowButton={nullRender}\n />\n )}\n </FocusZone>\n );\n };\n\n private _onRenderItem = (item: ICommandBarItemProps): JSX.Element | React.ReactNode => {\n if (item.onRender) {\n // These are the top level items, there is no relevant menu dismissing function to\n // provide for the IContextualMenuItem onRender function. Pass in a no op function instead.\n return item.onRender(item, () => undefined);\n }\n\n // eslint-disable-next-line deprecation/deprecation\n const itemText = item.text || item.name;\n const commandButtonProps: ICommandBarItemProps = {\n allowDisabledFocus: true,\n role: 'menuitem',\n ...item,\n styles: getCommandButtonStyles(item.buttonStyles),\n className: css('ms-CommandBarItem-link', item.className),\n text: !item.iconOnly ? itemText : undefined,\n menuProps: item.subMenuProps,\n onClick: this._onButtonClick(item),\n };\n\n if (item.iconOnly && (itemText !== undefined || item.tooltipHostProps)) {\n return (\n <TooltipHost content={itemText} {...item.tooltipHostProps}>\n {this._commandButton(item, commandButtonProps)}\n </TooltipHost>\n );\n }\n\n return this._commandButton(item, commandButtonProps);\n };\n\n private _commandButton = (item: ICommandBarItemProps, props: ICommandBarItemProps): JSX.Element => {\n const ButtonAs = this.props.buttonAs as IComponentAs<ICommandBarItemProps> | undefined;\n const CommandBarButtonAs = item.commandBarButtonAs as IComponentAs<ICommandBarItemProps> | undefined;\n const DefaultButtonAs = (CommandBarButton as {}) as IComponentAs<ICommandBarItemProps>;\n\n // The prop types between these three possible implementations overlap enough that a force-cast is safe.\n let Type = DefaultButtonAs;\n\n if (CommandBarButtonAs) {\n Type = composeComponentAs(CommandBarButtonAs, Type);\n }\n\n if (ButtonAs) {\n Type = composeComponentAs(ButtonAs, Type);\n }\n\n // Always pass the default implementation to the override so it may be composed.\n return <Type {...(props as ICommandBarItemProps)} />;\n };\n\n private _onButtonClick(item: ICommandBarItemProps): (ev: React.MouseEvent<HTMLButtonElement>) => void {\n return ev => {\n // inactive is deprecated. remove check in 7.0\n // eslint-disable-next-line deprecation/deprecation\n if (item.inactive) {\n return;\n }\n if (item.onClick) {\n item.onClick(ev, item);\n }\n };\n }\n\n private _onRenderOverflowButton = (overflowItems: ICommandBarItemProps[]): JSX.Element => {\n const {\n overflowButtonProps = {}, // assure that props is not empty\n } = this.props;\n\n const combinedOverflowItems: ICommandBarItemProps[] = [\n ...(overflowButtonProps.menuProps ? overflowButtonProps.menuProps.items : []),\n ...overflowItems,\n ];\n\n const overflowProps: IButtonProps = {\n role: 'menuitem',\n ...overflowButtonProps,\n styles: { menuIcon: { fontSize: '17px' }, ...overflowButtonProps.styles },\n className: css('ms-CommandBar-overflowButton', overflowButtonProps.className),\n menuProps: { ...overflowButtonProps.menuProps, items: combinedOverflowItems },\n menuIconProps: { iconName: 'More', ...overflowButtonProps.menuIconProps },\n };\n\n const OverflowButtonType = this.props.overflowButtonAs\n ? composeComponentAs(this.props.overflowButtonAs, CommandBarButton)\n : CommandBarButton;\n\n return <OverflowButtonType {...(overflowProps as IButtonProps)} />;\n };\n\n private _computeCacheKey(data: { primaryItems?: ICommandBarItemProps[]; overflow?: boolean }): string {\n const { primaryItems, overflow } = data;\n const returnKey = (acc: string, current: ICommandBarItemProps): string => {\n const { cacheKey = current.key } = current;\n return acc + cacheKey;\n };\n\n const primaryKey = primaryItems && primaryItems.reduce(returnKey, '');\n const overflowKey = overflow ? 'overflow' : '';\n\n return [primaryKey, overflowKey].join('');\n }\n\n private _onReduceData = (data: ICommandBarData): ICommandBarData | undefined => {\n const { shiftOnReduce, onDataReduced } = this.props;\n let { primaryItems, overflowItems, cacheKey } = data;\n\n // Use first item if shiftOnReduce, otherwise use last item\n const movedItem = primaryItems[shiftOnReduce ? 0 : primaryItems.length - 1];\n\n if (movedItem !== undefined) {\n movedItem.renderedInOverflow = true;\n\n overflowItems = [movedItem, ...overflowItems];\n primaryItems = shiftOnReduce ? primaryItems.slice(1) : primaryItems.slice(0, -1);\n\n const newData = { ...data, primaryItems, overflowItems };\n cacheKey = this._computeCacheKey({ primaryItems, overflow: overflowItems.length > 0 });\n\n if (onDataReduced) {\n onDataReduced(movedItem);\n }\n\n newData.cacheKey = cacheKey;\n return newData;\n }\n\n return undefined;\n };\n\n private _onGrowData = (data: ICommandBarData): ICommandBarData | undefined => {\n const { shiftOnReduce, onDataGrown } = this.props;\n const { minimumOverflowItems } = data;\n let { primaryItems, overflowItems, cacheKey } = data;\n const movedItem = overflowItems[0];\n\n // Make sure that moved item exists and is not one of the original overflow items\n if (movedItem !== undefined && overflowItems.length > minimumOverflowItems) {\n movedItem.renderedInOverflow = false;\n\n overflowItems = overflowItems.slice(1);\n // if shiftOnReduce, movedItem goes first, otherwise, last.\n primaryItems = shiftOnReduce ? [movedItem, ...primaryItems] : [...primaryItems, movedItem];\n\n const newData = { ...data, primaryItems, overflowItems };\n cacheKey = this._computeCacheKey({ primaryItems, overflow: overflowItems.length > 0 });\n\n if (onDataGrown) {\n onDataGrown(movedItem);\n }\n\n newData.cacheKey = cacheKey;\n return newData;\n }\n\n return undefined;\n };\n}\n","import * as React from 'react';\nimport { styled } from '../../Utilities';\nimport { ICommandBarProps, ICommandBarStyleProps, ICommandBarStyles } from './CommandBar.types';\nimport { CommandBarBase } from './CommandBar.base';\nimport { getStyles } from './CommandBar.styles';\n\n// Create a CommandBar variant which uses these default styles and this styled subcomponent.\nexport const CommandBar: React.FunctionComponent<ICommandBarProps> = styled<\n ICommandBarProps,\n ICommandBarStyleProps,\n ICommandBarStyles\n>(CommandBarBase, getStyles, undefined, {\n scope: 'CommandBar',\n});\n","// Regex that finds { and } so they can be removed on a lookup for string format\nconst FORMAT_ARGS_REGEX = /[\\{\\}]/g;\n\n// Regex that finds {#} so it can be replaced by the arguments in string format\nconst FORMAT_REGEX = /\\{\\d+\\}/g;\n\n/**\n * String format method, used for scenarios where at runtime you\n * need to evaluate a formatted string given a tokenized string. This\n * usually only is needed in localization scenarios.\n\n * @example\n * ```tsx\n * \"I love {0} every {1}\".format(\"CXP\")\n * ```\n * will result in a Debug Exception.\n *\n * @public\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function format(s: string, ...values: any[]): string {\n let args = values;\n // Callback match function\n function replaceFunc(match: string): string {\n // looks up in the args\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let replacement = args[match.replace(FORMAT_ARGS_REGEX, '') as any];\n\n // catches undefined in nondebug and null in debug and nondebug\n if (replacement === null || replacement === undefined) {\n replacement = '';\n }\n\n return replacement;\n }\n return s.replace(FORMAT_REGEX, replaceFunc);\n}\n","/* eslint-disable */\nimport { loadStyles } from '@microsoft/load-themed-styles';\nloadStyles([{\"rawString\":\".root_daee6904{-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-box-shadow:none;box-shadow:none;margin:0;padding:0}.root_daee6904 *{overflow:visible}.root_daee6904 ::-moz-focus-inner{border:0}.root_daee6904 *{outline:transparent}.root_daee6904 *{position:relative}.ms-Fabric--isFocusVisible .root_daee6904 :focus:after{content:'';position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;border:1px solid \"},{\"theme\":\"neutralSecondary\",\"defaultValue\":\"#605e5c\"},{\"rawString\":\"}.picker_daee6904{color:\"},{\"theme\":\"black\",\"defaultValue\":\"#000000\"},{\"rawString\":\";font-size:14px;position:relative}html[dir=ltr] .picker_daee6904{text-align:left}html[dir=rtl] .picker_daee6904{text-align:right}.holder_daee6904{-webkit-overflow-scrolling:touch;-webkit-box-sizing:border-box;box-sizing:border-box;display:none}.picker_daee6904.pickerIsOpened_daee6904 .holder_daee6904{-webkit-box-sizing:border-box;box-sizing:border-box;display:inline-block}.pickerIsOpened_daee6904{position:relative}.frame_daee6904{position:relative}.wrap_daee6904{min-height:212px;padding:12px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-sizing:content-box;box-sizing:content-box}.wrap_daee6904.goTodaySpacing_daee6904{min-height:228px}.dayPicker_daee6904{display:block}.header_daee6904{position:relative;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;height:28px;line-height:44px;width:100%}.divider_daee6904{top:0;margin-top:-12px;margin-bottom:-12px}html[dir=ltr] .divider_daee6904{border-right:1px solid \"},{\"theme\":\"neutralLight\",\"defaultValue\":\"#edebe9\"},{\"rawString\":\"}html[dir=rtl] .divider_daee6904{border-left:1px solid \"},{\"theme\":\"neutralLight\",\"defaultValue\":\"#edebe9\"},{\"rawString\":\"}.decade_daee6904,.monthAndYear_daee6904,.year_daee6904{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;font-size:14px;font-weight:400;font-weight:600;color:\"},{\"theme\":\"neutralPrimary\",\"defaultValue\":\"#323130\"},{\"rawString\":\";padding:0 5px}.currentDecade_daee6904:hover,.currentYear_daee6904:hover,.monthAndYear_daee6904:hover{cursor:default}.table_daee6904{text-align:center;border-collapse:collapse;border-spacing:0;table-layout:fixed;font-size:inherit;margin-top:4px;width:197px}.table_daee6904 td{margin:0;padding:0}.dayWrapper_daee6904,.weekday_daee6904{width:28px;height:28px;padding:0;line-height:28px;font-size:12px;font-size:15px;font-weight:400;color:\"},{\"theme\":\"neutralPrimary\",\"defaultValue\":\"#323130\"},{\"rawString\":\";-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;cursor:default}.dayWrapper_daee6904 ::-moz-focus-inner,.weekday_daee6904 ::-moz-focus-inner{border:0}.dayWrapper_daee6904 *,.weekday_daee6904 *{outline:transparent}.dayWrapper_daee6904 *,.weekday_daee6904 *{position:relative}.ms-Fabric--isFocusVisible .dayWrapper_daee6904 :focus:after,.ms-Fabric--isFocusVisible .weekday_daee6904 :focus:after{content:'';position:absolute;top:-2px;right:-2px;bottom:-2px;left:-2px;pointer-events:none;border:1px solid \"},{\"theme\":\"neutralSecondary\",\"defaultValue\":\"#605e5c\"},{\"rawString\":\"}.day_daee6904{width:24px;height:24px;border-radius:2px;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border:none;padding:0;background-color:transparent;line-height:100%;color:inherit;font-size:inherit;font-weight:inherit;font-family:inherit}@media screen and (-ms-high-contrast:active),screen and (forced-colors:active){.daySelection_daee6904 .day_daee6904:active,.daySelection_daee6904 .day_daee6904:hover{outline:1px solid Highlight;-ms-high-contrast-adjust:none}}@media screen and (-ms-high-contrast:active),screen and (forced-colors:active){.daySelection_daee6904 .day_daee6904:active{color:Highlight;-ms-high-contrast-adjust:none}}.dayIsToday_daee6904{border-radius:100%}.dayIsToday_daee6904,.dayIsToday_daee6904:hover{position:relative;background-color:\"},{\"theme\":\"neutralLighter\",\"defaultValue\":\"#f3f2f1\"},{\"rawString\":\"}@media screen and (-ms-high-contrast:active),screen and (forced-colors:active){.dayIsToday_daee6904,.dayIsToday_daee6904:hover{background-color:Highlight;-ms-high-contrast-adjust:none}}.dayIsToday_daee6904:hover,.dayIsToday_daee6904:hover:hover{border-radius:100%}.dayIsDisabled_daee6904:before{border-top-color:\"},{\"theme\":\"neutralTertiary\",\"defaultValue\":\"#a19f9d\"},{\"rawString\":\"}.dayIsUnfocused_daee6904{color:\"},{\"theme\":\"neutralSecondary\",\"defaultValue\":\"#605e5c\"},{\"rawString\":\";font-weight:400}.dayIsFocused_daee6904:hover,.dayIsUnfocused_daee6904:hover{cursor:pointer;background:\"},{\"theme\":\"neutralLighter\",\"defaultValue\":\"#f3f2f1\"},{\"rawString\":\";color:\"},{\"theme\":\"neutralDark\",\"defaultValue\":\"#201f1e\"},{\"rawString\":\"}.daySelection_daee6904.dayIsHighlighted_daee6904:hover,.pickerIsFocused_daee6904 .dayIsHighlighted_daee6904.daySelection_daee6904{cursor:pointer;background-color:\"},{\"theme\":\"neutralLight\",\"defaultValue\":\"#edebe9\"},{\"rawString\":\";border-radius:2px}@media screen and (-ms-high-contrast:active),screen and (forced-colors:active){.daySelection_daee6904.dayIsHighlighted_daee6904:hover,.pickerIsFocused_daee6904 .dayIsHighlighted_daee6904.daySelection_daee6904{outline:2px solid Highlight}.daySelection_daee6904.dayIsHighlighted_daee6904:hover :not(.dayIsToday_daee6904) span,.pickerIsFocused_daee6904 .dayIsHighlighted_daee6904.daySelection_daee6904 :not(.dayIsToday_daee6904) span{color:Highlight;-ms-high-contrast-adjust:none}}@media screen and (-ms-high-contrast:active),screen and (forced-colors:active){.dayIsHighlighted_daee6904 button.dayIsToday_daee6904{border-radius:100%}}@media screen and (-ms-high-contrast:active),screen and (forced-colors:active){.dayIsHighlighted_daee6904 button.dayIsToday_daee6904 span{color:Window;-ms-high-contrast-adjust:none}}.dayIsFocused_daee6904:active,.dayIsHighlighted_daee6904{background-color:\"},{\"theme\":\"themeLight\",\"defaultValue\":\"#c7e0f4\"},{\"rawString\":\"}.dayIsFocused_daee6904:active.day_daee6904,.dayIsHighlighted_daee6904.day_daee6904{color:\"},{\"theme\":\"neutralDark\",\"defaultValue\":\"#201f1e\"},{\"rawString\":\";background-color:\"},{\"theme\":\"neutralLight\",\"defaultValue\":\"#edebe9\"},{\"rawString\":\"}.dayIsHighlighted_daee6904.dayDisabled_daee6904,.dayIsHighlighted_daee6904.dayDisabled_daee6904:hover{background:\"},{\"theme\":\"neutralTertiary\",\"defaultValue\":\"#a19f9d\"},{\"rawString\":\"}.dayBackground_daee6904,.dayBackground_daee6904:active,.dayBackground_daee6904:hover{border-radius:2px}.dayHover_daee6904,.dayHover_daee6904:hover{cursor:pointer;background:\"},{\"theme\":\"neutralLighter\",\"defaultValue\":\"#f3f2f1\"},{\"rawString\":\";color:\"},{\"theme\":\"neutralDark\",\"defaultValue\":\"#201f1e\"},{\"rawString\":\"}.dayPress_daee6904,.dayPress_daee6904:hover{cursor:pointer;color:\"},{\"theme\":\"neutralDark\",\"defaultValue\":\"#201f1e\"},{\"rawString\":\";background-color:\"},{\"theme\":\"neutralLight\",\"defaultValue\":\"#edebe9\"},{\"rawString\":\"}.dayPress_daee6904 .dayIsToday_daee6904,.dayPress_daee6904:hover .dayIsToday_daee6904{background:\"},{\"theme\":\"themePrimary\",\"defaultValue\":\"#0078d4\"},{\"rawString\":\";border-radius:100%}.dayIsFocused_daee6904:active,.dayIsHighlighted_daee6904,.dayIsHighlighted_daee6904:active,.dayIsHighlighted_daee6904:hover,.dayIsUnfocused_daee6904:active,.weekBackground_daee6904,.weekBackground_daee6904:active,.weekBackground_daee6904:hover{background-color:\"},{\"theme\":\"neutralLight\",\"defaultValue\":\"#edebe9\"},{\"rawString\":\";color:\"},{\"theme\":\"neutralDark\",\"defaultValue\":\"#201f1e\"},{\"rawString\":\"}.dayIsToday_daee6904,.dayIsToday_daee6904.day_daee6904:active,.pickerIsFocused_daee6904 .dayIsToday_daee6904{position:relative;color:\"},{\"theme\":\"white\",\"defaultValue\":\"#ffffff\"},{\"rawString\":\";font-weight:600;background:\"},{\"theme\":\"themePrimary\",\"defaultValue\":\"#0078d4\"},{\"rawString\":\";border-radius:100%}@media screen and (-ms-high-contrast:active),screen and (forced-colors:active){.dayIsToday_daee6904,.dayIsToday_daee6904.day_daee6904:active,.pickerIsFocused_daee6904 .dayIsToday_daee6904{background-color:Highlight;color:HighlightText;-ms-high-contrast-adjust:none}}.showWeekNumbers_daee6904 .weekNumbers_daee6904{border-right:1px solid \"},{\"theme\":\"neutralLight\",\"defaultValue\":\"#edebe9\"},{\"rawString\":\";-webkit-box-sizing:border-box;box-sizing:border-box;width:28px;padding:0}.showWeekNumbers_daee6904 .weekNumbers_daee6904 .dayWrapper_daee6904{color:\"},{\"theme\":\"neutralSecondary\",\"defaultValue\":\"#605e5c\"},{\"rawString\":\"}.showWeekNumbers_daee6904 .weekNumbers_daee6904 .dayWrapper_daee6904.weekIsHighlighted_daee6904{color:\"},{\"theme\":\"neutralPrimary\",\"defaultValue\":\"#323130\"},{\"rawString\":\"}.showWeekNumbers_daee6904 .table_daee6904{width:225px}.showWeekNumbers_daee6904 .table_daee6904 .dayWrapper_daee6904,.showWeekNumbers_daee6904 .table_daee6904 .weekday_daee6904{width:30px}.showWeekNumbersRTL_daee6904 .weekNumbers_daee6904{border-left:1px solid \"},{\"theme\":\"neutralLight\",\"defaultValue\":\"#edebe9\"},{\"rawString\":\";-webkit-box-sizing:border-box;box-sizing:border-box}.showWeekNumbersRTL_daee6904 .weekNumbers_daee6904 .dayWrapper_daee6904{color:\"},{\"theme\":\"neutralSecondary\",\"defaultValue\":\"#605e5c\"},{\"rawString\":\"}.showWeekNumbersRTL_daee6904 .weekNumbers_daee6904 .dayWrapper_daee6904.weekIsHighlighted_daee6904{color:\"},{\"theme\":\"neutralPrimary\",\"defaultValue\":\"#323130\"},{\"rawString\":\"}.showWeekNumbersRTL_daee6904 .table_daee6904{width:225px}.showWeekNumbersRTL_daee6904 .table_daee6904 .dayWrapper_daee6904,.showWeekNumbersRTL_daee6904 .table_daee6904 .weekday_daee6904{width:30px}.decadeComponents_daee6904,.monthComponents_daee6904,.yearComponents_daee6904{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-item-align:end;align-self:flex-end}.closeButton_daee6904,.nextDecade_daee6904,.nextMonth_daee6904,.nextYear_daee6904,.prevDecade_daee6904,.prevMonth_daee6904,.prevYear_daee6904{font-family:inherit;width:28px;height:28px;display:block;text-align:center;line-height:28px;text-align:center;font-size:12px;color:\"},{\"theme\":\"neutralPrimary\",\"defaultValue\":\"#323130\"},{\"rawString\":\";border-radius:2px;position:relative;background-color:transparent;border:none;padding:0}.closeButton_daee6904:hover,.nextDecade_daee6904:hover,.nextMonth_daee6904:hover,.nextYear_daee6904:hover,.prevDecade_daee6904:hover,.prevMonth_daee6904:hover,.prevYear_daee6904:hover{color:\"},{\"theme\":\"neutralDark\",\"defaultValue\":\"#201f1e\"},{\"rawString\":\";cursor:pointer;outline:1px solid transparent}.nextDecadeIsDisabled_daee6904,.nextMonthIsDisabled_daee6904,.nextYearIsDisabled_daee6904,.prevDecadeIsDisabled_daee6904,.prevMonthIsDisabled_daee6904,.prevYearIsDisabled_daee6904{color:\"},{\"theme\":\"neutralTertiaryAlt\",\"defaultValue\":\"#c8c6c4\"},{\"rawString\":\";pointer-events:none}.headerToggleView_daee6904{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:4px 8px}.headerToggleView_daee6904:hover{color:\"},{\"theme\":\"black\",\"defaultValue\":\"#000000\"},{\"rawString\":\";cursor:pointer}@media screen and (-ms-high-contrast:active),screen and (forced-colors:active){.headerToggleView_daee6904:hover{outline:1px solid highlight}}@media screen and (-ms-high-contrast:active),screen and (forced-colors:active){.headerToggleView_daee6904:hover:active{color:highlight}}.currentDecade_daee6904,.currentYear_daee6904{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;padding:0 5px;font-size:14px;font-weight:400;font-weight:600;color:\"},{\"theme\":\"neutralPrimary\",\"defaultValue\":\"#323130\"},{\"rawString\":\";height:28px;line-height:28px}html[dir=ltr] .currentDecade_daee6904,html[dir=ltr] .currentYear_daee6904{margin-left:5px}html[dir=rtl] .currentDecade_daee6904,html[dir=rtl] .currentYear_daee6904{margin-right:5px}.optionGrid_daee6904{position:relative;height:210px;width:196px;margin:4px 0 0 0}html[dir=rtl] .optionGrid_daee6904{margin:4px 0 0 0}.monthOption_daee6904,.yearOption_daee6904{width:60px;height:60px;line-height:100%;cursor:pointer;margin:0 10px 10px 0;font-size:13px;font-weight:400;font-family:inherit;color:\"},{\"theme\":\"neutralPrimary\",\"defaultValue\":\"#323130\"},{\"rawString\":\";text-align:center;border:none;padding:0;background-color:transparent;border-radius:2px}html[dir=ltr] .monthOption_daee6904,html[dir=ltr] .yearOption_daee6904{float:left}html[dir=rtl] .monthOption_daee6904,html[dir=rtl] .yearOption_daee6904{float:right}html[dir=rtl] .monthOption_daee6904,html[dir=rtl] .yearOption_daee6904{margin:0 0 10px 10px}.monthOption_daee6904:hover,.yearOption_daee6904:hover{color:\"},{\"theme\":\"neutralDark\",\"defaultValue\":\"#201f1e\"},{\"rawString\":\";background-color:\"},{\"theme\":\"neutralLighter\",\"defaultValue\":\"#f3f2f1\"},{\"rawString\":\";outline:1px solid transparent}@media screen and (-ms-high-contrast:active),screen and (forced-colors:active){.monthOption_daee6904:hover,.yearOption_daee6904:hover{outline-color:highlight}}@media screen and (-ms-high-contrast:active),screen and (forced-colors:active){.monthOption_daee6904:active,.yearOption_daee6904:active{color:highlight}}.monthOption_daee6904.isHighlighted_daee6904,.yearOption_daee6904.isHighlighted_daee6904{background-color:\"},{\"theme\":\"neutralLight\",\"defaultValue\":\"#edebe9\"},{\"rawString\":\";color:\"},{\"theme\":\"neutralDark\",\"defaultValue\":\"#201f1e\"},{\"rawString\":\"}.dayIsDisabled_daee6904,.monthOptionIsDisabled_daee6904,.yearOptionIsDisabled_daee6904{color:\"},{\"theme\":\"neutralTertiaryAlt\",\"defaultValue\":\"#c8c6c4\"},{\"rawString\":\";pointer-events:none}.goToday_daee6904{bottom:0;color:\"},{\"theme\":\"themePrimary\",\"defaultValue\":\"#0078d4\"},{\"rawString\":\";cursor:pointer;font-size:12px;font-weight:400;font-family:inherit;color:\"},{\"theme\":\"neutralPrimary\",\"defaultValue\":\"#323130\"},{\"rawString\":\";height:30px;line-height:30px;padding:0 10px;background-color:transparent;border:none;position:absolute!important;-webkit-box-sizing:content-box;box-sizing:content-box}[dir=ltr] .goToday_daee6904{right:13px}[dir=rtl] .goToday_daee6904{left:13px}.goToday_daee6904:hover{color:\"},{\"theme\":\"themePrimary\",\"defaultValue\":\"#0078d4\"},{\"rawString\":\";outline:1px solid transparent}@media screen and (-ms-high-contrast:active),screen and (forced-colors:active){.goToday_daee6904:hover{outline-color:highlight}}.goToday_daee6904:active{color:\"},{\"theme\":\"themeDark\",\"defaultValue\":\"#005a9e\"},{\"rawString\":\"}@media screen and (-ms-high-contrast:active),screen and (forced-colors:active){.goToday_daee6904:active{color:highlight}}.goToTodayIsDisabled_daee6904{color:\"},{\"theme\":\"neutralTertiaryAlt\",\"defaultValue\":\"#c8c6c4\"},{\"rawString\":\";pointer-events:none}.goTodayInlineMonth_daee6904{top:212px}.wrap_daee6904.goTodaySpacing_daee6904{padding-bottom:28px}.root_daee6904.isPickingYears_daee6904 .dayPicker_daee6904,.root_daee6904.isPickingYears_daee6904 .monthComponents_daee6904{display:none}.root_daee6904.isPickingYears_daee6904 .monthPicker_daee6904{display:none}.root_daee6904.isPickingYears_daee6904 .yearPicker_daee6904{display:block}@media (min-device-width:460px){.wrap_daee6904{padding:12px}.dayPicker_daee6904,.monthPicker_daee6904{min-height:200px}.header_daee6904{height:28px;line-height:28px;width:100%}.dayWrapper_daee6904,.weekday_daee6904{width:28px;height:28px;line-height:28px;font-size:12px}.closeButton_daee6904,.nextDecade_daee6904,.nextMonth_daee6904,.nextYear_daee6904,.prevDecade_daee6904,.prevMonth_daee6904,.prevYear_daee6904{font-size:12px;width:28px;height:28px;line-height:28px}.holder_daee6904{display:inline-block;height:auto;overflow:hidden}.decade_daee6904,.monthAndYear_daee6904,.year_daee6904{font-size:14px;color:\"},{\"theme\":\"neutralPrimary\",\"defaultValue\":\"#323130\"},{\"rawString\":\"}.yearComponents_daee6904{margin-left:1px}.goToday_daee6904{padding:0 3px}[dir=ltr] .goToday_daee6904{right:20px}[dir=rtl] .goToday_daee6904{left:20px}.showWeekNumbers_daee6904 .table_daee6904 .dayWrapper_daee6904,.showWeekNumbers_daee6904 .table_daee6904 .weekday_daee6904{width:28px}.showWeekNumbersRTL_daee6904 .table_daee6904 .dayWrapper_daee6904,.showWeekNumbersRTL_daee6904 .table_daee6904 .weekday_daee6904{width:28px}.monthPickerVisible_daee6904 .wrap_daee6904{padding:12px}.monthPickerVisible_daee6904 .dayPicker_daee6904{margin:-10px 0;padding:10px 0}.monthPickerVisible_daee6904 .dayPicker_daee6904{-webkit-box-sizing:border-box;box-sizing:border-box;width:212px;min-height:200px}.monthPickerVisible_daee6904 .monthPicker_daee6904{display:block}.monthPickerVisible_daee6904 .optionGrid_daee6904{height:150px;width:196px}.monthPickerVisible_daee6904 .toggleMonthView_daee6904{display:none}.monthPickerVisible_daee6904 .currentDecade_daee6904,.monthPickerVisible_daee6904 .currentYear_daee6904{font-size:14px;margin:0;height:28px;line-height:28px;display:inline-block}.monthPickerVisible_daee6904 .monthOption_daee6904,.monthPickerVisible_daee6904 .yearOption_daee6904{width:40px;height:40px;line-height:100%;font-size:12px;margin:0 12px 16px 0}html[dir=rtl] .monthPickerVisible_daee6904 .monthOption_daee6904,html[dir=rtl] .monthPickerVisible_daee6904 .yearOption_daee6904{margin:0 0 16px 12px}.monthPickerVisible_daee6904 .monthOption_daee6904:hover,.monthPickerVisible_daee6904 .yearOption_daee6904:hover{outline:1px solid transparent}.monthPickerVisible_daee6904 .monthOption_daee6904:nth-child(4n+4),.monthPickerVisible_daee6904 .yearOption_daee6904:nth-child(4n+4){margin:0 0 16px 0}html[dir=rtl] .monthPickerVisible_daee6904 .monthOption_daee6904:nth-child(4n+4),html[dir=rtl] .monthPickerVisible_daee6904 .yearOption_daee6904:nth-child(4n+4){margin:0 0 16px 0}.monthPickerVisible_daee6904 .goToday_daee6904{font-size:12px;height:28px;line-height:28px;padding:0 10px}[dir=ltr] .monthPickerVisible_daee6904 .goToday_daee6904{right:8px}[dir=rtl] .monthPickerVisible_daee6904 .goToday_daee6904{left:8px}html[dir=ltr] .monthPickerVisible_daee6904 .goToday_daee6904{text-align:right}html[dir=rtl] .monthPickerVisible_daee6904 .goToday_daee6904{text-align:left}.monthPickerVisible_daee6904 .root_daee6904.isPickingYears_daee6904 .dayPicker_daee6904,.monthPickerVisible_daee6904 .root_daee6904.isPickingYears_daee6904 .monthComponents_daee6904{display:block}.monthPickerVisible_daee6904 .root_daee6904.isPickingYears_daee6904 .monthPicker_daee6904{display:none}.monthPickerVisible_daee6904 .root_daee6904.isPickingYears_daee6904 .yearPicker_daee6904{display:block}.calendarsInline_daee6904 .wrap_daee6904{padding:12px}.calendarsInline_daee6904 .holder_daee6904{height:auto}html[dir=ltr] .calendarsInline_daee6904 .table_daee6904{margin-right:12px}html[dir=rtl] .calendarsInline_daee6904 .table_daee6904{margin-left:12px}.calendarsInline_daee6904 .dayPicker_daee6904{width:auto}html[dir=ltr] .calendarsInline_daee6904 .monthPicker_daee6904{margin-left:12px}html[dir=rtl] .calendarsInline_daee6904 .monthPicker_daee6904{margin-right:12px}html[dir=ltr] .calendarsInline_daee6904 .yearPicker_daee6904{margin-left:12px}html[dir=rtl] .calendarsInline_daee6904 .yearPicker_daee6904{margin-right:12px}.calendarsInline_daee6904 .goToday_daee6904{padding:0 10px}[dir=ltr] .calendarsInline_daee6904 .goToday_daee6904{right:14px}[dir=rtl] .calendarsInline_daee6904 .goToday_daee6904{left:14px}html[dir=ltr] .calendarsInline_daee6904 .monthComponents_daee6904{margin-right:12px}html[dir=rtl] .calendarsInline_daee6904 .monthComponents_daee6904{margin-left:12px}.monthPickerOnly_daee6904 .wrap_daee6904{padding:12px}.monthPickerAsOverlay_daee6904 .wrap_daee6904{padding-bottom:28px;margin-bottom:6px}.monthPickerAsOverlay_daee6904 .holder_daee6904{height:240px;min-height:240px}.monthPickerAsOverlay_daee6904 .holderWithButton_daee6904{padding-top:6px;height:auto}}@media (max-device-width:459px){.calendarsInline_daee6904 .monthPicker_daee6904,.calendarsInline_daee6904 .yearPicker_daee6904{display:none}.yearComponents_daee6904{margin-top:2px}}.goToday_daee6904{width:auto}.closeButton_daee6904,.nextDecade_daee6904,.nextMonth_daee6904,.nextYear_daee6904,.prevDecade_daee6904,.prevMonth_daee6904,.prevYear_daee6904{display:inline-block}.closeButton_daee6904:hover,.nextDecade_daee6904:hover,.nextMonth_daee6904:hover,.nextYear_daee6904:hover,.prevDecade_daee6904:hover,.prevMonth_daee6904:hover,.prevYear_daee6904:hover{background-color:\"},{\"theme\":\"neutralLighter\",\"defaultValue\":\"#f3f2f1\"},{\"rawString\":\";color:\"},{\"theme\":\"neutralDark\",\"defaultValue\":\"#201f1e\"},{\"rawString\":\"}@media screen and (-ms-high-contrast:active),screen and (forced-colors:active){.closeButton_daee6904:hover,.nextDecade_daee6904:hover,.nextMonth_daee6904:hover,.nextYear_daee6904:hover,.prevDecade_daee6904:hover,.prevMonth_daee6904:hover,.prevYear_daee6904:hover{outline:1px solid Highlight}}.closeButton_daee6904:active,.nextDecade_daee6904:active,.nextMonth_daee6904:active,.nextYear_daee6904:active,.prevDecade_daee6904:active,.prevMonth_daee6904:active,.prevYear_daee6904:active{background-color:\"},{\"theme\":\"neutralLight\",\"defaultValue\":\"#edebe9\"},{\"rawString\":\"}@media screen and (-ms-high-contrast:active),screen and (forced-colors:active){.closeButton_daee6904:active,.nextDecade_daee6904:active,.nextMonth_daee6904:active,.nextYear_daee6904:active,.prevDecade_daee6904:active,.prevMonth_daee6904:active,.prevYear_daee6904:active{color:highlight}}.monthIsHighlighted_daee6904{background-color:\"},{\"theme\":\"neutralLight\",\"defaultValue\":\"#edebe9\"},{\"rawString\":\";color:\"},{\"theme\":\"neutralDark\",\"defaultValue\":\"#201f1e\"},{\"rawString\":\"}.monthIsHighlighted_daee6904.monthOption_daee6904:hover{background-color:\"},{\"theme\":\"neutralLight\",\"defaultValue\":\"#edebe9\"},{\"rawString\":\"}@media screen and (-ms-high-contrast:active),screen and (forced-colors:active){.monthIsHighlighted_daee6904{color:highlight;border:2px solid highlight;border-radius:2px}.monthIsHighlighted_daee6904:hover{outline:0!important}}.monthIsCurrentMonth_daee6904{color:\"},{\"theme\":\"white\",\"defaultValue\":\"#ffffff\"},{\"rawString\":\";background-color:\"},{\"theme\":\"neutralLight\",\"defaultValue\":\"#edebe9\"},{\"rawString\":\"}.monthIsCurrentMonth_daee6904.monthOption_daee6904:hover{color:\"},{\"theme\":\"white\",\"defaultValue\":\"#ffffff\"},{\"rawString\":\";background-color:\"},{\"theme\":\"neutralLighter\",\"defaultValue\":\"#f3f2f1\"},{\"rawString\":\"}.monthOption_daee6904:active{background-color:\"},{\"theme\":\"neutralLight\",\"defaultValue\":\"#edebe9\"},{\"rawString\":\";color:\"},{\"theme\":\"neutralDark\",\"defaultValue\":\"#201f1e\"},{\"rawString\":\"}.yearIsHighlighted_daee6904{background-color:\"},{\"theme\":\"neutralLight\",\"defaultValue\":\"#edebe9\"},{\"rawString\":\";color:\"},{\"theme\":\"neutralDark\",\"defaultValue\":\"#201f1e\"},{\"rawString\":\"}.yearIsHighlighted_daee6904.yearOption_daee6904:hover{background-color:\"},{\"theme\":\"neutralLighter\",\"defaultValue\":\"#f3f2f1\"},{\"rawString\":\"}.yearIsCurrentYear_daee6904{color:\"},{\"theme\":\"white\",\"defaultValue\":\"#ffffff\"},{\"rawString\":\";background-color:\"},{\"theme\":\"neutralLight\",\"defaultValue\":\"#edebe9\"},{\"rawString\":\"}.yearIsCurrentYear_daee6904.yearOption_daee6904:hover{color:\"},{\"theme\":\"white\",\"defaultValue\":\"#ffffff\"},{\"rawString\":\";background-color:\"},{\"theme\":\"neutralLighter\",\"defaultValue\":\"#f3f2f1\"},{\"rawString\":\"}.yearOption_daee6904:active{background-color:\"},{\"theme\":\"neutralLight\",\"defaultValue\":\"#edebe9\"},{\"rawString\":\";color:\"},{\"theme\":\"neutralDark\",\"defaultValue\":\"#201f1e\"},{\"rawString\":\"}.topLeftCornerDate_daee6904{border-top-left-radius:2px}.topRightCornerDate_daee6904{border-top-right-radius:2px}.bottomLeftCornerDate_daee6904{border-bottom-left-radius:2px}.bottomRightCornerDate_daee6904{border-bottom-right-radius:2px}@media screen and (-ms-high-contrast:active),screen and (forced-colors:active){.weekBackground_daee6904{border-top:1px solid highlight;border-bottom:1px solid highlight}.weekBackground_daee6904.bottomRightCornerDate_daee6904.topRightCornerDate_daee6904{border-right:1px solid highlight;border-left:none;padding-left:1px}.weekBackground_daee6904.bottomLeftCornerDate_daee6904.topLeftCornerDate_daee6904{border-left:1px solid highlight;border-right:none;padding-right:1px}.weekBackground_daee6904 :not(.dayIsToday_daee6904) span{color:highlight}.weekSelection_daee6904.dayHover_daee6904{border-top:1px solid highlight;border-bottom:1px solid highlight}.weekSelection_daee6904.dayHover_daee6904.bottomLeftCornerDate_daee6904.topLeftCornerDate_daee6904{border-left:1px solid highlight;padding-right:1px}.weekSelection_daee6904.dayHover_daee6904.bottomRightCornerDate_daee6904.topRightCornerDate_daee6904{border-right:1px solid highlight;padding-left:1px}.weekSelection_daee6904.dayHover_daee6904.dayPress_daee6904 :not(.dayIsToday_daee6904) span{color:highlight}.monthSelection_daee6904.dayHover_daee6904.bottomLeftCornerDate_daee6904,.monthSelection_daee6904.dayHover_daee6904.topLeftCornerDate_daee6904{border-left:1px solid highlight;padding-right:1px}.monthSelection_daee6904.dayHover_daee6904.bottomRightCornerDate_daee6904,.monthSelection_daee6904.dayHover_daee6904.topRightCornerDate_daee6904{border-right:1px solid highlight;padding-left:1px}.monthSelection_daee6904.dayIsFocused_daee6904.dayHover_daee6904.topDate_daee6904,.monthSelection_daee6904.dayIsUnfocused_daee6904.dayHover_daee6904.topDate_daee6904{border-top:1px solid highlight;padding-bottom:1px}.monthSelection_daee6904.dayIsFocused_daee6904.dayHover_daee6904.rightDate_daee6904,.monthSelection_daee6904.dayIsUnfocused_daee6904.dayHover_daee6904.rightDate_daee6904{border-right:1px solid highlight;padding-left:1px}.monthSelection_daee6904.dayIsFocused_daee6904.dayHover_daee6904.bottomDate_daee6904,.monthSelection_daee6904.dayIsUnfocused_daee6904.dayHover_daee6904.bottomDate_daee6904{border-bottom:1px solid highlight;padding-top:1px}.monthSelection_daee6904.dayIsFocused_daee6904.dayHover_daee6904.leftdate_daee6904,.monthSelection_daee6904.dayIsUnfocused_daee6904.dayHover_daee6904.leftdate_daee6904{border-left:1px solid highlight;padding-right:1px}.monthSelection_daee6904.dayIsFocused_daee6904.dayHover_daee6904.dayPress_daee6904 :not(.dayIsToday_daee6904) span,.monthSelection_daee6904.dayIsUnfocused_daee6904.dayHover_daee6904.dayPress_daee6904 :not(.dayIsToday_daee6904) span{color:highlight}}\"}]);\nexport const root = \"root_daee6904\";\nexport const picker = \"picker_daee6904\";\nexport const holder = \"holder_daee6904\";\nexport const pickerIsOpened = \"pickerIsOpened_daee6904\";\nexport const frame = \"frame_daee6904\";\nexport const wrap = \"wrap_daee6904\";\nexport const goTodaySpacing = \"goTodaySpacing_daee6904\";\nexport const dayPicker = \"dayPicker_daee6904\";\nexport const header = \"header_daee6904\";\nexport const divider = \"divider_daee6904\";\nexport const monthAndYear = \"monthAndYear_daee6904\";\nexport const year = \"year_daee6904\";\nexport const decade = \"decade_daee6904\";\nexport const currentYear = \"currentYear_daee6904\";\nexport const currentDecade = \"currentDecade_daee6904\";\nexport const table = \"table_daee6904\";\nexport const dayWrapper = \"dayWrapper_daee6904\";\nexport const weekday = \"weekday_daee6904\";\nexport const day = \"day_daee6904\";\nexport const daySelection = \"daySelection_daee6904\";\nexport const dayIsToday = \"dayIsToday_daee6904\";\nexport const dayIsDisabled = \"dayIsDisabled_daee6904\";\nexport const dayIsUnfocused = \"dayIsUnfocused_daee6904\";\nexport const dayIsFocused = \"dayIsFocused_daee6904\";\nexport const dayIsHighlighted = \"dayIsHighlighted_daee6904\";\nexport const pickerIsFocused = \"pickerIsFocused_daee6904\";\nexport const dayDisabled = \"dayDisabled_daee6904\";\nexport const dayBackground = \"dayBackground_daee6904\";\nexport const dayHover = \"dayHover_daee6904\";\nexport const dayPress = \"dayPress_daee6904\";\nexport const weekBackground = \"weekBackground_daee6904\";\nexport const showWeekNumbers = \"showWeekNumbers_daee6904\";\nexport const weekNumbers = \"weekNumbers_daee6904\";\nexport const weekIsHighlighted = \"weekIsHighlighted_daee6904\";\nexport const showWeekNumbersRTL = \"showWeekNumbersRTL_daee6904\";\nexport const monthComponents = \"monthComponents_daee6904\";\nexport const yearComponents = \"yearComponents_daee6904\";\nexport const decadeComponents = \"decadeComponents_daee6904\";\nexport const closeButton = \"closeButton_daee6904\";\nexport const prevMonth = \"prevMonth_daee6904\";\nexport const nextMonth = \"nextMonth_daee6904\";\nexport const prevYear = \"prevYear_daee6904\";\nexport const nextYear = \"nextYear_daee6904\";\nexport const prevDecade = \"prevDecade_daee6904\";\nexport const nextDecade = \"nextDecade_daee6904\";\nexport const prevMonthIsDisabled = \"prevMonthIsDisabled_daee6904\";\nexport const nextMonthIsDisabled = \"nextMonthIsDisabled_daee6904\";\nexport const prevYearIsDisabled = \"prevYearIsDisabled_daee6904\";\nexport const nextYearIsDisabled = \"nextYearIsDisabled_daee6904\";\nexport const prevDecadeIsDisabled = \"prevDecadeIsDisabled_daee6904\";\nexport const nextDecadeIsDisabled = \"nextDecadeIsDisabled_daee6904\";\nexport const headerToggleView = \"headerToggleView_daee6904\";\nexport const optionGrid = \"optionGrid_daee6904\";\nexport const monthOption = \"monthOption_daee6904\";\nexport const yearOption = \"yearOption_daee6904\";\nexport const isHighlighted = \"isHighlighted_daee6904\";\nexport const monthOptionIsDisabled = \"monthOptionIsDisabled_daee6904\";\nexport const yearOptionIsDisabled = \"yearOptionIsDisabled_daee6904\";\nexport const goToday = \"goToday_daee6904\";\nexport const goToTodayIsDisabled = \"goToTodayIsDisabled_daee6904\";\nexport const goTodayInlineMonth = \"goTodayInlineMonth_daee6904\";\nexport const isPickingYears = \"isPickingYears_daee6904\";\nexport const monthPicker = \"monthPicker_daee6904\";\nexport const yearPicker = \"yearPicker_daee6904\";\nexport const monthPickerVisible = \"monthPickerVisible_daee6904\";\nexport const toggleMonthView = \"toggleMonthView_daee6904\";\nexport const calendarsInline = \"calendarsInline_daee6904\";\nexport const monthPickerOnly = \"monthPickerOnly_daee6904\";\nexport const monthPickerAsOverlay = \"monthPickerAsOverlay_daee6904\";\nexport const holderWithButton = \"holderWithButton_daee6904\";\nexport const monthIsHighlighted = \"monthIsHighlighted_daee6904\";\nexport const monthIsCurrentMonth = \"monthIsCurrentMonth_daee6904\";\nexport const yearIsHighlighted = \"yearIsHighlighted_daee6904\";\nexport const yearIsCurrentYear = \"yearIsCurrentYear_daee6904\";\nexport const topLeftCornerDate = \"topLeftCornerDate_daee6904\";\nexport const topRightCornerDate = \"topRightCornerDate_daee6904\";\nexport const bottomLeftCornerDate = \"bottomLeftCornerDate_daee6904\";\nexport const bottomRightCornerDate = \"bottomRightCornerDate_daee6904\";\nexport const weekSelection = \"weekSelection_daee6904\";\nexport const monthSelection = \"monthSelection_daee6904\";\nexport const topDate = \"topDate_daee6904\";\nexport const rightDate = \"rightDate_daee6904\";\nexport const bottomDate = \"bottomDate_daee6904\";\nexport const leftdate = \"leftdate_daee6904\";","import * as React from 'react';\nimport {\n KeyCodes,\n css,\n getId,\n getRTL,\n getRTLSafeKeyCode,\n format,\n IRefObject,\n findIndex,\n find,\n initializeComponentRef,\n} from '../../Utilities';\nimport { ICalendarStrings, ICalendarIconStrings, ICalendarFormatDateCallbacks } from './Calendar.types';\nimport { DayOfWeek, FirstWeekOfYear, DateRangeType } from '../../utilities/dateValues/DateValues';\nimport { FocusZone } from '../../FocusZone';\nimport { Icon } from '../../Icon';\nimport {\n addDays,\n addWeeks,\n addMonths,\n compareDates,\n compareDatePart,\n getDateRangeArray,\n isInDateRangeArray,\n getWeekNumber,\n getWeekNumbersInMonth,\n getMonthStart,\n getMonthEnd,\n} from '../../utilities/dateMath/DateMath';\n\nimport * as stylesImport from './Calendar.scss';\n\nconst styles: any = stylesImport;\n\nconst DAYS_IN_WEEK = 7;\n\nexport interface IDayInfo {\n key: string;\n date: string;\n originalDate: Date;\n isInMonth: boolean;\n isToday: boolean;\n isSelected: boolean;\n isInBounds: boolean;\n onSelected: (ev: React.SyntheticEvent<HTMLElement>) => void;\n}\n\nexport interface ICalendarDay {\n focus(): void;\n}\n\nexport interface ICalendarDayProps extends React.ClassAttributes<CalendarDay> {\n componentRef?: IRefObject<ICalendarDay>;\n strings: ICalendarStrings;\n selectedDate: Date;\n navigatedDate: Date;\n onSelectDate: (date: Date, selectedDateRangeArray?: Date[]) => void;\n onNavigateDate: (date: Date, focusOnNavigatedDay: boolean) => void;\n onDismiss?: () => void;\n firstDayOfWeek: DayOfWeek;\n dateRangeType: DateRangeType;\n autoNavigateOnSelection: boolean;\n navigationIcons: ICalendarIconStrings;\n today?: Date;\n onHeaderSelect?: (focus: boolean) => void;\n showWeekNumbers?: boolean;\n firstWeekOfYear: FirstWeekOfYear;\n dateTimeFormatter: ICalendarFormatDateCallbacks;\n showSixWeeksByDefault?: boolean;\n minDate?: Date;\n maxDate?: Date;\n restrictedDates?: Date[];\n workWeekDays?: DayOfWeek[];\n showCloseButton?: boolean;\n allFocusable?: boolean;\n}\n\nexport interface ICalendarDayState {\n activeDescendantId?: string;\n weeks?: IDayInfo[][];\n}\n\ninterface IWeekCorners {\n [key: string]: string;\n}\n\nexport class CalendarDay extends React.Component<ICalendarDayProps, ICalendarDayState> {\n private navigatedDay: HTMLElement | null;\n private days: { [key: string]: HTMLElement | null } = {};\n\n public constructor(props: ICalendarDayProps) {\n super(props);\n\n initializeComponentRef(this);\n\n this.state = {\n activeDescendantId: getId('DatePickerDay-active'),\n weeks: this._getWeeks(props),\n };\n\n this._onSelectNextMonth = this._onSelectNextMonth.bind(this);\n this._onSelectPrevMonth = this._onSelectPrevMonth.bind(this);\n this._onClose = this._onClose.bind(this);\n }\n\n public UNSAFE_componentWillReceiveProps(nextProps: ICalendarDayProps): void {\n this.setState({\n weeks: this._getWeeks(nextProps),\n });\n }\n\n public render(): JSX.Element {\n const { activeDescendantId, weeks } = this.state;\n const {\n firstDayOfWeek,\n strings,\n navigatedDate,\n selectedDate,\n dateRangeType,\n navigationIcons,\n showWeekNumbers,\n firstWeekOfYear,\n dateTimeFormatter,\n minDate,\n maxDate,\n showCloseButton,\n allFocusable,\n } = this.props;\n const dayPickerId = getId('DatePickerDay-dayPicker');\n const monthAndYearId = getId('DatePickerDay-monthAndYear');\n const leftNavigationIcon = navigationIcons.leftNavigation;\n const rightNavigationIcon = navigationIcons.rightNavigation;\n const closeNavigationIcon = navigationIcons.closeIcon;\n const weekNumbers = showWeekNumbers\n ? getWeekNumbersInMonth(weeks!.length, firstDayOfWeek, firstWeekOfYear, navigatedDate)\n : null;\n const selectedDateWeekNumber = showWeekNumbers\n ? getWeekNumber(selectedDate, firstDayOfWeek, firstWeekOfYear)\n : undefined;\n\n // When the month is highlighted get the corner dates so that styles can be added to them\n const weekCorners: IWeekCorners = this._getWeekCornerStyles(weeks!, dateRangeType);\n\n // determine if previous/next months are in bounds\n const prevMonthInBounds = minDate ? compareDatePart(minDate, getMonthStart(navigatedDate)) < 0 : true;\n const nextMonthInBounds = maxDate ? compareDatePart(getMonthEnd(navigatedDate), maxDate) < 0 : true;\n\n return (\n <div\n className={css(\n 'ms-DatePicker-dayPicker',\n styles.dayPicker,\n showWeekNumbers &&\n 'ms-DatePicker-showWeekNumbers' &&\n (getRTL() ? styles.showWeekNumbersRTL : styles.showWeekNumbers),\n )}\n id={dayPickerId}\n >\n <div className={css('ms-DatePicker-header', styles.header)}>\n <div\n aria-live=\"polite\"\n aria-relevant=\"text\"\n aria-atomic=\"true\"\n id={monthAndYearId}\n className={styles.monthAndYear}\n >\n {this.props.onHeaderSelect ? (\n <div\n className={css('ms-DatePicker-monthAndYear js-showMonthPicker', styles.headerToggleView)}\n onClick={this._onHeaderSelect}\n onKeyDown={this._onHeaderKeyDown}\n aria-label={dateTimeFormatter.formatMonthYear(navigatedDate, strings)}\n role=\"button\"\n tabIndex={0}\n >\n {dateTimeFormatter.formatMonthYear(navigatedDate, strings)}\n </div>\n ) : (\n <div className={css('ms-DatePicker-monthAndYear', styles.monthAndYear)}>\n {dateTimeFormatter.formatMonthYear(navigatedDate, strings)}\n </div>\n )}\n </div>\n <div className={css('ms-DatePicker-monthComponents', styles.monthComponents)}>\n <div className={css('ms-DatePicker-navContainer', styles.navContainer)}>\n <button\n className={css('ms-DatePicker-prevMonth js-prevMonth', styles.prevMonth, {\n ['ms-DatePicker-prevMonth--disabled ' + styles.prevMonthIsDisabled]: !prevMonthInBounds,\n })}\n disabled={!allFocusable && !prevMonthInBounds}\n aria-disabled={!prevMonthInBounds}\n onClick={prevMonthInBounds ? this._onSelectPrevMonth : undefined}\n onKeyDown={prevMonthInBounds ? this._onPrevMonthKeyDown : undefined}\n aria-controls={dayPickerId}\n title={\n strings.prevMonthAriaLabel\n ? strings.prevMonthAriaLabel + ' ' + strings.months[addMonths(navigatedDate, -1).getMonth()]\n : undefined\n }\n role=\"button\"\n type=\"button\"\n >\n <Icon iconName={leftNavigationIcon} />\n </button>\n <button\n className={css('ms-DatePicker-nextMonth js-nextMonth', styles.nextMonth, {\n ['ms-DatePicker-nextMonth--disabled ' + styles.nextMonthIsDisabled]: !nextMonthInBounds,\n })}\n disabled={!allFocusable && !nextMonthInBounds}\n aria-disabled={!nextMonthInBounds}\n onClick={nextMonthInBounds ? this._onSelectNextMonth : undefined}\n onKeyDown={nextMonthInBounds ? this._onNextMonthKeyDown : undefined}\n aria-controls={dayPickerId}\n title={\n strings.nextMonthAriaLabel\n ? strings.nextMonthAriaLabel + ' ' + strings.months[addMonths(navigatedDate, 1).getMonth()]\n : undefined\n }\n role=\"button\"\n type=\"button\"\n >\n <Icon iconName={rightNavigationIcon} />\n </button>\n {showCloseButton && (\n <button\n className={css('ms-DatePicker-closeButton js-closeButton', styles.closeButton)}\n onClick={this._onClose}\n onKeyDown={this._onCloseButtonKeyDown}\n title={strings.closeButtonAriaLabel}\n role=\"button\"\n type=\"button\"\n >\n <Icon iconName={closeNavigationIcon} />\n </button>\n )}\n </div>\n </div>\n </div>\n <FocusZone>\n <table\n className={css('ms-DatePicker-table', styles.table)}\n aria-multiselectable=\"false\"\n aria-labelledby={monthAndYearId}\n aria-activedescendant={activeDescendantId}\n role=\"grid\"\n >\n <thead>\n <tr>\n {showWeekNumbers && <th className={css('ms-DatePicker-weekday', styles.weekday)} />}\n {strings.shortDays.map((val, index) => (\n <th\n className={css('ms-DatePicker-weekday', styles.weekday)}\n role=\"columnheader\"\n scope=\"col\"\n key={index}\n title={strings.days[(index + firstDayOfWeek) % DAYS_IN_WEEK]}\n aria-label={strings.days[(index + firstDayOfWeek) % DAYS_IN_WEEK]}\n data-is-focusable={allFocusable ? true : undefined}\n >\n {strings.shortDays[(index + firstDayOfWeek) % DAYS_IN_WEEK]}\n </th>\n ))}\n </tr>\n </thead>\n <tbody\n onMouseLeave={dateRangeType !== DateRangeType.Day ? this._onTableMouseLeave : undefined}\n onMouseUp={dateRangeType !== DateRangeType.Day ? this._onTableMouseUp : undefined}\n >\n {weeks!.map((week, weekIndex) => (\n <tr key={weekNumbers ? weekNumbers[weekIndex] : weekIndex}>\n {showWeekNumbers && weekNumbers && (\n <th\n className={css(\n 'ms-DatePicker-weekNumbers',\n 'ms-DatePicker-weekday',\n styles.weekday,\n styles.weekNumbers,\n )}\n key={weekIndex}\n title={\n weekNumbers &&\n strings.weekNumberFormatString &&\n format(strings.weekNumberFormatString, weekNumbers[weekIndex])\n }\n aria-label={\n weekNumbers &&\n strings.weekNumberFormatString &&\n format(strings.weekNumberFormatString, weekNumbers[weekIndex])\n }\n scope=\"row\"\n >\n <div\n className={css('ms-DatePicker-day', styles.day, {\n ['ms-DatePicker-week--highlighted ' + styles.weekIsHighlighted]:\n selectedDateWeekNumber === weekNumbers[weekIndex],\n })}\n >\n <span>{weekNumbers[weekIndex]}</span>\n </div>\n </th>\n )}\n {week.map((day, dayIndex) => {\n const isNavigatedDate = compareDates(navigatedDate, day.originalDate);\n return (\n <td\n key={day.key}\n onClick={day.isInBounds ? day.onSelected : undefined}\n className={css(\n styles.dayWrapper,\n 'ms-DatePicker-day',\n this._getHighlightedCornerStyle(weekCorners, dayIndex, weekIndex),\n {\n ['ms-DatePicker-weekBackground ' + styles.weekBackground]:\n day.isSelected &&\n (dateRangeType === DateRangeType.Week || dateRangeType === DateRangeType.WorkWeek),\n ['ms-DatePicker-dayBackground ' + styles.dayBackground]:\n dateRangeType === DateRangeType.Day,\n ['ms-DatePicker-day--highlighted ' + styles.dayIsHighlighted]:\n day.isSelected && dateRangeType === DateRangeType.Day,\n ['ms-DatePicker-day--infocus ' + styles.dayIsFocused]: day.isInBounds && day.isInMonth,\n ['ms-DatePicker-day--outfocus ' + styles.dayIsUnfocused]: day.isInBounds && !day.isInMonth,\n [styles.daySelection]: dateRangeType === DateRangeType.Day,\n [styles.weekSelection]:\n dateRangeType === DateRangeType.Week || dateRangeType === DateRangeType.WorkWeek,\n [styles.monthSelection]: dateRangeType === DateRangeType.Month,\n },\n )}\n ref={element => this._setDayCellRef(element, day, isNavigatedDate)}\n onKeyDown={this._onDayKeyDown(day.originalDate, weekIndex, dayIndex)}\n onMouseOver={\n dateRangeType !== DateRangeType.Day && day.isInBounds\n ? this._onDayMouseOver(day.originalDate, weekIndex, dayIndex, dateRangeType)\n : undefined\n }\n onMouseLeave={\n dateRangeType !== DateRangeType.Day && day.isInBounds\n ? this._onDayMouseLeave(day.originalDate, weekIndex, dayIndex, dateRangeType)\n : undefined\n }\n onMouseDown={\n dateRangeType !== DateRangeType.Day && day.isInBounds\n ? this._onDayMouseDown(day.originalDate, weekIndex, dayIndex, dateRangeType)\n : undefined\n }\n onMouseUp={\n dateRangeType !== DateRangeType.Day && day.isInBounds\n ? this._onDayMouseUp(day.originalDate, weekIndex, dayIndex, dateRangeType)\n : undefined\n }\n role={'gridcell'}\n data-is-focusable={allFocusable || (day.isInBounds ? true : undefined)}\n aria-disabled={!day.isInBounds}\n aria-current={day.isToday ? 'date' : undefined}\n aria-selected={day.isInBounds ? day.isSelected : undefined}\n >\n <button\n key={day.key + 'button'}\n onClick={day.isInBounds ? day.onSelected : undefined}\n className={css(styles.day, 'ms-DatePicker-day-button', {\n ['ms-DatePicker-day--disabled ' + styles.dayIsDisabled]: !day.isInBounds,\n ['ms-DatePicker-day--today ' + styles.dayIsToday]: day.isToday,\n })}\n aria-label={dateTimeFormatter.formatMonthDayYear(day.originalDate, strings)}\n id={isNavigatedDate ? activeDescendantId : undefined}\n data-is-focusable={false}\n disabled={!allFocusable && !day.isInBounds}\n aria-disabled={!day.isInBounds}\n tabIndex={-1}\n type=\"button\"\n >\n <span aria-hidden=\"true\">{dateTimeFormatter.formatDay(day.originalDate)}</span>\n </button>\n </td>\n );\n })}\n </tr>\n ))}\n </tbody>\n </table>\n </FocusZone>\n </div>\n );\n }\n\n public focus() {\n if (this.navigatedDay) {\n this.navigatedDay.tabIndex = 0;\n this.navigatedDay.focus();\n }\n }\n\n private _setDayCellRef(element: HTMLElement | null, day: IDayInfo, isNavigatedDate: boolean): void {\n this.days[day.key] = element;\n\n if (isNavigatedDate) {\n this.navigatedDay = element;\n }\n }\n\n private _getWeekCornerStyles(weeks: IDayInfo[][], dateRangeType: DateRangeType): IWeekCorners {\n const weekCornersStyled: any = {};\n\n switch (dateRangeType) {\n case DateRangeType.Month:\n /* need to handle setting all of the corners on arbitrarily shaped blobs\n __\n __|A |\n |B |C |__\n |D |E |F |\n\n in this case, A needs top left rounded, top right rounded\n B needs top left rounded\n C doesn't need any rounding\n D needs bottom left rounded\n E doesn't need any rounding\n F needs top right rounding\n */\n\n // if there's an item above, lose both top corners. Item below, lose both bottom corners, etc.\n weeks.forEach((week: IDayInfo[], weekIndex: number) => {\n week.forEach((day: IDayInfo, dayIndex: number) => {\n const above =\n weeks[weekIndex - 1] &&\n weeks[weekIndex - 1][dayIndex] &&\n weeks[weekIndex - 1][dayIndex].originalDate.getMonth() ===\n weeks[weekIndex][dayIndex].originalDate.getMonth();\n const below =\n weeks[weekIndex + 1] &&\n weeks[weekIndex + 1][dayIndex] &&\n weeks[weekIndex + 1][dayIndex].originalDate.getMonth() ===\n weeks[weekIndex][dayIndex].originalDate.getMonth();\n const left =\n weeks[weekIndex][dayIndex - 1] &&\n weeks[weekIndex][dayIndex - 1].originalDate.getMonth() ===\n weeks[weekIndex][dayIndex].originalDate.getMonth();\n const right =\n weeks[weekIndex][dayIndex + 1] &&\n weeks[weekIndex][dayIndex + 1].originalDate.getMonth() ===\n weeks[weekIndex][dayIndex].originalDate.getMonth();\n\n const roundedTopLeft = !above && !left;\n const roundedTopRight = !above && !right;\n const roundedBottomLeft = !below && !left;\n const roundedBottomRight = !below && !right;\n\n let style = '';\n if (roundedTopLeft) {\n style = getRTL()\n ? style.concat(styles.topRightCornerDate + ' ')\n : style.concat(styles.topLeftCornerDate + ' ');\n }\n if (roundedTopRight) {\n style = getRTL()\n ? style.concat(styles.topLeftCornerDate + ' ')\n : style.concat(styles.topRightCornerDate + ' ');\n }\n if (roundedBottomLeft) {\n style = getRTL()\n ? style.concat(styles.bottomRightCornerDate + ' ')\n : style.concat(styles.bottomLeftCornerDate + ' ');\n }\n if (roundedBottomRight) {\n style = getRTL()\n ? style.concat(styles.bottomLeftCornerDate + ' ')\n : style.concat(styles.bottomRightCornerDate + ' ');\n }\n\n if (!above) {\n style = style.concat(styles.topDate + ' ');\n }\n\n if (!below) {\n style = style.concat(styles.bottomDate + ' ');\n }\n\n if (!right) {\n style = style.concat(styles.rightDate + ' ');\n }\n\n if (!left) {\n style = style.concat(styles.leftdate + ' ');\n }\n\n weekCornersStyled[weekIndex + '_' + dayIndex] = style;\n });\n });\n break;\n case DateRangeType.Week:\n case DateRangeType.WorkWeek:\n weeks.forEach((week: IDayInfo[], weekIndex: number) => {\n const minIndex = findIndex(week, (item: IDayInfo) => {\n return item.isInBounds;\n });\n const maxIndex = this._findLastIndex(week, (item: IDayInfo) => {\n return item.isInBounds;\n });\n\n const leftStyle = styles.topLeftCornerDate + ' ' + styles.bottomLeftCornerDate;\n const rightStyle = styles.topRightCornerDate + ' ' + styles.bottomRightCornerDate;\n weekCornersStyled[weekIndex + '_' + minIndex] = getRTL() ? rightStyle : leftStyle;\n weekCornersStyled[weekIndex + '_' + maxIndex] = getRTL() ? leftStyle : rightStyle;\n });\n break;\n }\n\n return weekCornersStyled;\n }\n\n private _getHighlightedCornerStyle(weekCorners: IWeekCorners, dayIndex: number, weekIndex: number): string {\n const cornerStyle = weekCorners[weekIndex + '_' + dayIndex] ? weekCorners[weekIndex + '_' + dayIndex] : '';\n return cornerStyle;\n }\n\n private _navigateMonthEdge(\n ev: React.KeyboardEvent<HTMLElement>,\n date: Date,\n weekIndex: number,\n dayIndex: number,\n ): void {\n const { minDate, maxDate } = this.props;\n let targetDate: Date | undefined = undefined;\n\n if (weekIndex === 0 && ev.which === KeyCodes.up) {\n targetDate = addWeeks(date, -1);\n } else if (weekIndex === this.state.weeks!.length - 1 && ev.which === KeyCodes.down) {\n targetDate = addWeeks(date, 1);\n } else if (dayIndex === 0 && ev.which === getRTLSafeKeyCode(KeyCodes.left)) {\n targetDate = addDays(date, -1);\n } else if (dayIndex === DAYS_IN_WEEK - 1 && ev.which === getRTLSafeKeyCode(KeyCodes.right)) {\n targetDate = addDays(date, 1);\n }\n\n // Don't navigate to out-of-bounds date\n if (\n targetDate &&\n (minDate ? compareDatePart(minDate, targetDate) < 1 : true) &&\n (maxDate ? compareDatePart(targetDate, maxDate) < 1 : true)\n ) {\n this.props.onNavigateDate(targetDate, true);\n ev.preventDefault();\n }\n }\n\n private _onKeyDown = (callback: () => void, ev: React.KeyboardEvent<HTMLElement>): void => {\n if (ev.which === KeyCodes.enter || ev.which === KeyCodes.space) {\n callback();\n }\n };\n\n private _onDayKeyDown = (\n originalDate: Date,\n weekIndex: number,\n dayIndex: number,\n ): ((ev: React.KeyboardEvent<HTMLElement>) => void) => {\n return (ev: React.KeyboardEvent<HTMLElement>): void => {\n if (ev.which === KeyCodes.enter) {\n this._onSelectDate(originalDate, ev);\n ev.preventDefault();\n } else {\n this._navigateMonthEdge(ev, originalDate, weekIndex, dayIndex);\n }\n };\n };\n\n private _onDayMouseDown = (\n originalDate: Date,\n weekIndex: number,\n dayIndex: number,\n dateRangeType: DateRangeType,\n ): ((ev: React.MouseEvent<HTMLElement>) => void) => {\n return (ev: React.MouseEvent<HTMLElement>): void => {\n // set the press styling\n if (dateRangeType === DateRangeType.Month) {\n this._applyFunctionToDayRefs((ref, day) => {\n if (ref && day.originalDate.getMonth() === originalDate.getMonth() && day.isInBounds) {\n ref.classList.add(styles.dayPress);\n }\n });\n } else {\n // week or work week view\n this._applyFunctionToDayRefs((ref, day, dayWeekIndex) => {\n if (ref && dayWeekIndex === weekIndex && day.isInBounds) {\n ref.classList.add(styles.dayPress);\n ref.classList.add(styles.dayIsHighlighted);\n } else if (ref) {\n ref.classList.remove(styles.dayIsHighlighted);\n }\n });\n }\n };\n };\n\n private _onDayMouseUp = (\n originalDate: Date,\n weekIndex: number,\n dayIndex: number,\n dateRangeType: DateRangeType,\n ): ((ev: React.MouseEvent<HTMLElement>) => void) => {\n return (ev: React.MouseEvent<HTMLElement>): void => {\n // remove press styling\n if (dateRangeType === DateRangeType.Month) {\n this._applyFunctionToDayRefs((ref, day) => {\n if (ref && day.originalDate.getMonth() === originalDate.getMonth() && day.isInBounds) {\n ref.classList.remove(styles.dayPress);\n }\n });\n } else {\n // week or work week view\n this._applyFunctionToDayRefs((ref, day, dayWeekIndex) => {\n if (ref && dayWeekIndex === weekIndex && day.isInBounds) {\n ref.classList.remove(styles.dayPress);\n }\n });\n }\n };\n };\n\n private _onDayMouseOver = (\n originalDate: Date,\n weekIndex: number,\n dayIndex: number,\n dateRangeType: DateRangeType,\n ): ((ev: React.MouseEvent<HTMLElement>) => void) => {\n return (ev: React.MouseEvent<HTMLElement>): void => {\n // set the hover styling on every day in the same month\n if (dateRangeType === DateRangeType.Month) {\n this._applyFunctionToDayRefs((ref, day) => {\n if (ref && day.originalDate.getMonth() === originalDate.getMonth() && day.isInBounds) {\n ref.classList.add(styles.dayHover);\n }\n });\n } else {\n // week or work week view\n this._applyFunctionToDayRefs((ref, day, dayWeekIndex) => {\n if (ref && dayWeekIndex === weekIndex && day.isInBounds) {\n ref.classList.add(styles.dayHover);\n }\n });\n }\n };\n };\n\n private _onDayMouseLeave = (\n originalDate: Date,\n weekIndex: number,\n dayIndex: number,\n dateRangeType: DateRangeType,\n ): ((ev: React.MouseEvent<HTMLElement>) => void) => {\n return (ev: React.MouseEvent<HTMLElement>): void => {\n // remove the hover and pressed styling\n if (dateRangeType === DateRangeType.Month) {\n this._applyFunctionToDayRefs((ref, day) => {\n if (ref && day.originalDate.getMonth() === originalDate.getMonth() && day.isInBounds) {\n ref.classList.remove(styles.dayHover);\n }\n });\n } else {\n // week or work week view\n this._applyFunctionToDayRefs((ref, day, dayWeekIndex) => {\n if (ref && dayWeekIndex === weekIndex && day.isInBounds) {\n ref.classList.remove(styles.dayHover);\n }\n });\n }\n };\n };\n\n private _onTableMouseLeave = (ev: React.MouseEvent<HTMLElement>): void => {\n if (\n (ev.target as HTMLElement).contains &&\n ev.relatedTarget &&\n (ev.relatedTarget as HTMLElement).contains &&\n (ev.target as HTMLElement).contains(ev.relatedTarget as HTMLElement)\n ) {\n return;\n }\n\n this._applyFunctionToDayRefs((ref, day) => {\n if (ref) {\n ref.classList.remove(styles.dayHover);\n ref.classList.remove(styles.dayPress);\n }\n });\n };\n\n private _onTableMouseUp = (ev: React.MouseEvent<HTMLElement>): void => {\n if (\n (ev.target as HTMLElement).contains &&\n ev.relatedTarget &&\n (ev.relatedTarget as HTMLElement).contains &&\n (ev.target as HTMLElement).contains(ev.relatedTarget as HTMLElement)\n ) {\n return;\n }\n\n this._applyFunctionToDayRefs((ref, day) => {\n if (ref) {\n ref.classList.remove(styles.dayPress);\n }\n });\n };\n\n private _applyFunctionToDayRefs(func: (ref: HTMLElement | null, day: IDayInfo, weekIndex?: number) => void) {\n if (this.state.weeks) {\n this.state.weeks.forEach((week: IDayInfo[], weekIndex: number) => {\n week.forEach(day => {\n const ref = this.days[day.key];\n func(ref, day, weekIndex);\n });\n });\n }\n }\n\n private _onSelectDate = (selectedDate: Date, ev: React.SyntheticEvent<HTMLElement>): void => {\n const {\n onSelectDate,\n dateRangeType,\n firstDayOfWeek,\n navigatedDate,\n autoNavigateOnSelection,\n minDate,\n maxDate,\n workWeekDays,\n } = this.props;\n\n if (ev) {\n ev.stopPropagation();\n }\n\n let dateRange = getDateRangeArray(selectedDate, dateRangeType, firstDayOfWeek, workWeekDays);\n if (dateRangeType !== DateRangeType.Day) {\n dateRange = this._getBoundedDateRange(dateRange, minDate, maxDate);\n }\n dateRange = dateRange.filter(d => {\n return !this._getIsRestrictedDate(d);\n });\n\n if (onSelectDate) {\n onSelectDate(selectedDate, dateRange);\n }\n\n // Navigate to next or previous month if needed\n if (autoNavigateOnSelection && selectedDate.getMonth() !== navigatedDate.getMonth()) {\n const compareResult = compareDatePart(selectedDate, navigatedDate);\n if (compareResult < 0) {\n this._onSelectPrevMonth();\n } else if (compareResult > 0) {\n this._onSelectNextMonth();\n }\n }\n };\n\n private _onSelectNextMonth = (): void => {\n this.props.onNavigateDate(addMonths(this.props.navigatedDate, 1), false);\n };\n\n private _onSelectPrevMonth = (): void => {\n this.props.onNavigateDate(addMonths(this.props.navigatedDate, -1), false);\n };\n\n private _onClose = (): void => {\n if (this.props.onDismiss) {\n this.props.onDismiss();\n }\n };\n\n private _onHeaderSelect = (): void => {\n const { onHeaderSelect } = this.props;\n if (onHeaderSelect) {\n onHeaderSelect(true);\n }\n };\n\n private _onHeaderKeyDown = (ev: React.KeyboardEvent<HTMLElement>): void => {\n const { onHeaderSelect } = this.props;\n if (onHeaderSelect && (ev.which === KeyCodes.enter || ev.which === KeyCodes.space)) {\n onHeaderSelect(true);\n }\n };\n\n private _onPrevMonthKeyDown = (ev: React.KeyboardEvent<HTMLElement>): void => {\n if (ev.which === KeyCodes.enter) {\n this._onKeyDown(this._onSelectPrevMonth, ev);\n }\n };\n\n private _onNextMonthKeyDown = (ev: React.KeyboardEvent<HTMLElement>): void => {\n if (ev.which === KeyCodes.enter) {\n this._onKeyDown(this._onSelectNextMonth, ev);\n }\n };\n\n private _onCloseButtonKeyDown = (ev: React.KeyboardEvent<HTMLElement>): void => {\n if (ev.which === KeyCodes.enter) {\n this._onKeyDown(this._onClose, ev);\n }\n };\n\n private _getWeeks(propsToUse: ICalendarDayProps): IDayInfo[][] {\n const {\n navigatedDate,\n selectedDate,\n dateRangeType,\n firstDayOfWeek,\n today,\n minDate,\n maxDate,\n showSixWeeksByDefault,\n workWeekDays,\n } = propsToUse;\n const date = new Date(navigatedDate.getFullYear(), navigatedDate.getMonth(), 1);\n const todaysDate = today || new Date();\n const weeks: IDayInfo[][] = [];\n\n // Cycle the date backwards to get to the first day of the week.\n while (date.getDay() !== firstDayOfWeek) {\n date.setDate(date.getDate() - 1);\n }\n\n // a flag to indicate whether all days of the week are in the month\n let isAllDaysOfWeekOutOfMonth = false;\n\n // in work week view we want to select the whole week\n const selectedDateRangeType = dateRangeType === DateRangeType.WorkWeek ? DateRangeType.Week : dateRangeType;\n let selectedDates = getDateRangeArray(selectedDate, selectedDateRangeType, firstDayOfWeek, workWeekDays);\n if (dateRangeType !== DateRangeType.Day) {\n selectedDates = this._getBoundedDateRange(selectedDates, minDate, maxDate);\n }\n\n let shouldGetWeeks = true;\n\n for (let weekIndex = 0; shouldGetWeeks; weekIndex++) {\n const week: IDayInfo[] = [];\n\n isAllDaysOfWeekOutOfMonth = true;\n\n for (let dayIndex = 0; dayIndex < DAYS_IN_WEEK; dayIndex++) {\n // Casting date parameter as an any to avoid [ object Object ] error.\n const originalDate = new Date(date as any);\n const dayInfo: IDayInfo = {\n key: date.toString(),\n date: date.getDate().toString(),\n originalDate: originalDate,\n isInMonth: date.getMonth() === navigatedDate.getMonth(),\n isToday: compareDates(todaysDate, date),\n isSelected: isInDateRangeArray(date, selectedDates),\n onSelected: this._onSelectDate.bind(this, originalDate),\n isInBounds:\n (minDate ? compareDatePart(minDate, date) < 1 : true) &&\n (maxDate ? compareDatePart(date, maxDate) < 1 : true) &&\n !this._getIsRestrictedDate(date),\n };\n\n week.push(dayInfo);\n\n if (dayInfo.isInMonth) {\n isAllDaysOfWeekOutOfMonth = false;\n }\n\n date.setDate(date.getDate() + 1);\n }\n\n // We append the condition of the loop depending upon the showSixWeeksByDefault prop.\n shouldGetWeeks = showSixWeeksByDefault\n ? !isAllDaysOfWeekOutOfMonth || weekIndex <= 5\n : !isAllDaysOfWeekOutOfMonth;\n if (shouldGetWeeks) {\n weeks.push(week);\n }\n }\n\n return weeks;\n }\n\n private _getIsRestrictedDate(date: Date): boolean {\n const { restrictedDates } = this.props;\n if (!restrictedDates) {\n return false;\n }\n const restrictedDate = find(restrictedDates, rd => {\n return compareDates(rd, date);\n });\n return restrictedDate ? true : false;\n }\n\n private _getBoundedDateRange(dateRange: Date[], minDate?: Date, maxDate?: Date): Date[] {\n let boundedDateRange = [...dateRange];\n if (minDate) {\n boundedDateRange = boundedDateRange.filter(date => compareDatePart(date, minDate as Date) >= 0);\n }\n if (maxDate) {\n boundedDateRange = boundedDateRange.filter(date => compareDatePart(date, maxDate as Date) <= 0);\n }\n return boundedDateRange;\n }\n\n /**\n * Returns the index of the last element in the array where the predicate is true, and -1\n * otherwise\n * @param items Array of items to be iterated over using the predicate\n * @param predicate find calls predicate once for each element of the array, in descending\n * order, until it finds one where predicate returns true if such an element is found.\n */\n private _findLastIndex<T>(items: T[], predicate: (item: T) => boolean): number {\n for (let i = items.length - 1; i >= 0; i--) {\n const item = items[i];\n\n if (predicate(item)) {\n return i;\n }\n }\n\n return -1;\n }\n}\n","import * as React from 'react';\nimport { KeyCodes, css, getRTL, format } from '../../Utilities';\nimport { ICalendarIconStrings } from './Calendar.types';\nimport { FocusZone } from '../../FocusZone';\nimport * as stylesImport from './Calendar.scss';\nimport { Icon } from '../../Icon';\n\nconst styles: any = stylesImport;\n\nconst CELL_COUNT = 12;\n\nexport interface ICalendarYearRange {\n fromYear: number;\n toYear: number;\n}\n\nexport interface ICalendarYearRangeToString {\n (range: ICalendarYearRange): string;\n}\n\nexport interface ICalendarYearStrings {\n rangeAriaLabel?: string | ICalendarYearRangeToString;\n prevRangeAriaLabel?: string | ICalendarYearRangeToString;\n nextRangeAriaLabel?: string | ICalendarYearRangeToString;\n headerAriaLabelFormatString?: string;\n}\n\nexport interface ICalendarYear {\n focus(): void;\n}\n\nexport interface ICalendarYearProps {\n navigationIcons?: ICalendarIconStrings;\n navigatedYear?: number;\n selectedYear?: number;\n minYear?: number;\n maxYear?: number;\n onHeaderSelect?: (focus: boolean) => void;\n onSelectYear?: (year: number) => void;\n onRenderTitle?: (props: ICalendarYearHeaderProps) => React.ReactNode;\n onRenderYear?: (year: number) => React.ReactNode;\n className?: string;\n strings?: ICalendarYearStrings;\n}\n\nconst DefaultCalendarYearStrings: ICalendarYearStrings = {\n prevRangeAriaLabel: undefined,\n nextRangeAriaLabel: undefined,\n};\n\nconst DefaultNavigationIcons: ICalendarIconStrings = {\n leftNavigation: 'Up',\n rightNavigation: 'Down',\n closeIcon: 'CalculatorMultiply',\n};\n\ninterface ICalendarYearGridCell {\n focus(): void;\n}\n\ninterface ICalendarYearGridCellProps {\n year: number;\n current?: boolean;\n selected?: boolean;\n disabled?: boolean;\n onSelectYear?: (year: number) => void;\n onRenderYear?: (year: number) => React.ReactNode;\n}\n\nclass CalendarYearGridCell extends React.Component<ICalendarYearGridCellProps, {}> implements ICalendarYearGridCell {\n private _buttonRef = React.createRef<HTMLButtonElement>();\n\n public focus() {\n if (this._buttonRef.current) {\n this._buttonRef.current.focus();\n }\n }\n\n public render() {\n const { year, selected, disabled, onSelectYear } = this.props;\n return (\n <button\n className={css('ms-DatePicker-yearOption', styles.yearOption, {\n ['ms-DatePicker-day--highlighted ' + styles.yearIsHighlighted]: selected,\n ['ms-DatePicker-yearOption--disabled ' + styles.yearOptionIsDisabled]: disabled,\n })}\n type=\"button\"\n role=\"gridcell\"\n onClick={!disabled && onSelectYear ? this._onClick : undefined}\n onKeyDown={!disabled && onSelectYear ? this._onKeyDown : undefined}\n disabled={disabled}\n aria-label={String(year)}\n aria-selected={selected}\n ref={this._buttonRef}\n >\n {this._onRenderYear()}\n </button>\n );\n }\n\n private _onRenderYear = () => {\n const { year, onRenderYear } = this.props;\n if (onRenderYear) {\n return onRenderYear(year);\n }\n return year;\n };\n\n private _onClick = () => {\n if (this.props.onSelectYear) {\n this.props.onSelectYear(this.props.year);\n }\n };\n\n private _onKeyDown = (ev: React.KeyboardEvent<HTMLElement>) => {\n if (this.props.onSelectYear && ev.which === KeyCodes.enter) {\n this.props.onSelectYear(this.props.year);\n }\n };\n}\n\ninterface ICalendarYearGrid {\n focus(): void;\n}\n\ninterface ICalendarYearGridProps extends ICalendarYearProps, ICalendarYearRange {\n selectedYear?: number;\n}\n\nclass CalendarYearGrid extends React.Component<ICalendarYearGridProps, {}> implements ICalendarYearGrid {\n private _selectedCellRef = React.createRef<CalendarYearGridCell>();\n private _currentCellRef = React.createRef<CalendarYearGridCell>();\n\n public focus() {\n if (this._selectedCellRef.current) {\n this._selectedCellRef.current.focus();\n } else if (this._currentCellRef.current) {\n this._currentCellRef.current.focus();\n }\n }\n\n public render() {\n const { fromYear, toYear } = this.props;\n let year = fromYear;\n const cells = [];\n while (year <= toYear) {\n cells.push(this._renderCell(year));\n year++;\n }\n return (\n <FocusZone>\n <div className={css('ms-DatePicker-optionGrid', styles.optionGrid)} role=\"grid\">\n <div role=\"row\">{cells}</div>\n </div>\n </FocusZone>\n );\n }\n\n private _renderCell = (year: number): React.ReactNode => {\n const selected = year === this.props.selectedYear;\n const { minYear, maxYear, onSelectYear } = this.props;\n const disabled = (minYear !== undefined && year < minYear) || (maxYear !== undefined && year > maxYear);\n const current = year === new Date().getFullYear();\n return (\n <CalendarYearGridCell\n key={year}\n year={year}\n selected={selected}\n current={current}\n disabled={disabled}\n onSelectYear={onSelectYear}\n ref={selected ? this._selectedCellRef : current ? this._currentCellRef : undefined}\n />\n );\n };\n}\n\nexport interface ICalendarYearHeaderProps extends ICalendarYearProps, ICalendarYearRange {\n onSelectPrev?: () => void;\n onSelectNext?: () => void;\n}\n\nclass CalendarYearNavPrev extends React.Component<ICalendarYearHeaderProps, any> {\n public render() {\n const iconStrings = this.props.navigationIcons || DefaultNavigationIcons;\n const strings = this.props.strings || DefaultCalendarYearStrings;\n const prevRangeAriaLabel = strings.prevRangeAriaLabel;\n const prevRange = { fromYear: this.props.fromYear - CELL_COUNT, toYear: this.props.toYear - CELL_COUNT };\n const prevAriaLabel = prevRangeAriaLabel\n ? typeof prevRangeAriaLabel === 'string'\n ? (prevRangeAriaLabel as string)\n : (prevRangeAriaLabel as ICalendarYearRangeToString)(prevRange)\n : undefined;\n const disabled = this.isDisabled;\n const { onSelectPrev } = this.props;\n return (\n <button\n className={css('ms-DatePicker-prevDecade', styles.prevDecade, {\n ['ms-DatePicker-prevDecade--disabled ' + styles.prevDecadeIsDisabled]: disabled,\n })}\n onClick={!disabled && onSelectPrev ? this._onSelectPrev : undefined}\n onKeyDown={!disabled && onSelectPrev ? this._onKeyDown : undefined}\n type=\"button\"\n tabIndex={0}\n title={prevAriaLabel}\n disabled={disabled}\n >\n <Icon iconName={getRTL() ? iconStrings.rightNavigation : iconStrings.leftNavigation} />\n </button>\n );\n }\n\n public get isDisabled() {\n const { minYear } = this.props;\n return minYear !== undefined && this.props.fromYear < minYear;\n }\n\n private _onSelectPrev = () => {\n if (!this.isDisabled && this.props.onSelectPrev) {\n this.props.onSelectPrev();\n }\n };\n\n private _onKeyDown = (ev: React.KeyboardEvent<HTMLElement>) => {\n if (ev.which === KeyCodes.enter) {\n this._onSelectPrev();\n }\n };\n}\n\nclass CalendarYearNavNext extends React.Component<ICalendarYearHeaderProps, any> {\n public render() {\n const iconStrings = this.props.navigationIcons || DefaultNavigationIcons;\n const strings = this.props.strings || DefaultCalendarYearStrings;\n const nextRangeAriaLabel = strings.nextRangeAriaLabel;\n const nextRange = { fromYear: this.props.fromYear + CELL_COUNT, toYear: this.props.toYear + CELL_COUNT };\n const nextAriaLabel = nextRangeAriaLabel\n ? typeof nextRangeAriaLabel === 'string'\n ? (nextRangeAriaLabel as string)\n : (nextRangeAriaLabel as ICalendarYearRangeToString)(nextRange)\n : undefined;\n const { onSelectNext } = this.props;\n const disabled = this.isDisabled;\n return (\n <button\n className={css('ms-DatePicker-nextDecade', styles.nextDecade, {\n ['ms-DatePicker-nextDecade--disabled ' + styles.nextDecadeIsDisabled]: disabled,\n })}\n onClick={!disabled && onSelectNext ? this._onSelectNext : undefined}\n onKeyDown={!disabled && onSelectNext ? this._onKeyDown : undefined}\n type=\"button\"\n tabIndex={0}\n title={nextAriaLabel}\n disabled={this.isDisabled}\n >\n <Icon iconName={getRTL() ? iconStrings.leftNavigation : iconStrings.rightNavigation} />\n </button>\n );\n }\n\n public get isDisabled() {\n const { maxYear } = this.props;\n return maxYear !== undefined && this.props.fromYear + CELL_COUNT > maxYear;\n }\n\n private _onSelectNext = () => {\n if (!this.isDisabled && this.props.onSelectNext) {\n this.props.onSelectNext();\n }\n };\n\n private _onKeyDown = (ev: React.KeyboardEvent<HTMLElement>) => {\n if (ev.which === KeyCodes.enter) {\n this._onSelectNext();\n }\n };\n}\n\nclass CalendarYearNav extends React.Component<ICalendarYearHeaderProps, any> {\n public render() {\n return (\n <div className={css('ms-DatePicker-decadeComponents', styles.decadeComponents)}>\n <div className={css('ms-DatePicker-navContainer', styles.navContainer)}>\n <CalendarYearNavPrev {...this.props} />\n <CalendarYearNavNext {...this.props} />\n </div>\n </div>\n );\n }\n}\n\nclass CalendarYearTitle extends React.Component<ICalendarYearHeaderProps, any> {\n public render() {\n const { fromYear, toYear, onHeaderSelect } = this.props;\n if (onHeaderSelect) {\n const strings = this.props.strings || DefaultCalendarYearStrings;\n const rangeAriaLabel = strings.rangeAriaLabel;\n const currentDateRange = rangeAriaLabel\n ? typeof rangeAriaLabel === 'string'\n ? (rangeAriaLabel as string)\n : (rangeAriaLabel as ICalendarYearRangeToString)(this.props)\n : undefined;\n\n const ariaLabel = strings.headerAriaLabelFormatString\n ? format(strings.headerAriaLabelFormatString, currentDateRange)\n : currentDateRange;\n\n return (\n <div\n className={css(\n 'ms-DatePicker-currentDecade js-showYearPicker',\n styles.currentDecade,\n styles.headerToggleView,\n )}\n onClick={this._onHeaderSelect}\n onKeyDown={this._onHeaderKeyDown}\n aria-label={ariaLabel}\n role=\"button\"\n aria-atomic={true}\n aria-live=\"polite\"\n tabIndex={0}\n >\n {this._onRenderYear(fromYear)} - {this._onRenderYear(toYear)}\n </div>\n );\n }\n return (\n <div className={css('ms-DatePicker-currentDecade js-showYearPicker', styles.currentDecade)}>\n {this._onRenderYear(fromYear)} - {this._onRenderYear(toYear)}\n </div>\n );\n }\n\n private _onHeaderSelect = () => {\n if (this.props.onHeaderSelect) {\n this.props.onHeaderSelect(true);\n }\n };\n\n private _onHeaderKeyDown = (ev: React.KeyboardEvent<HTMLElement>) => {\n if (this.props.onHeaderSelect && (ev.which === KeyCodes.enter || ev.which === KeyCodes.space)) {\n this.props.onHeaderSelect(true);\n }\n };\n\n private _onRenderYear = (year: number) => {\n if (this.props.onRenderYear) {\n return this.props.onRenderYear(year);\n }\n return year;\n };\n}\n\nclass CalendarYearHeader extends React.Component<ICalendarYearHeaderProps, any> {\n public render() {\n return (\n <div className={css('ms-DatePicker-header', styles.header)}>\n {this._onRenderTitle()}\n {this._onRenderNav()}\n </div>\n );\n }\n\n private _onRenderTitle = () => {\n if (this.props.onRenderTitle) {\n return this.props.onRenderTitle(this.props);\n }\n return <CalendarYearTitle {...this.props} />;\n };\n\n private _onRenderNav = () => {\n return <CalendarYearNav {...this.props} />;\n };\n}\n\nexport interface ICalendarYearState {\n fromYear: number;\n navigatedYear?: number;\n selectedYear?: number;\n}\n\nexport class CalendarYear extends React.Component<ICalendarYearProps, ICalendarYearState> implements ICalendarYear {\n private _gridRef = React.createRef<CalendarYearGrid>();\n\n public constructor(props: ICalendarYearProps) {\n super(props);\n this.state = this._calculateInitialStateFromProps(props);\n }\n\n public focus() {\n if (this._gridRef.current) {\n this._gridRef.current.focus();\n }\n }\n\n public render() {\n return (\n <div className={css('ms-DatePicker-yearPicker', styles.yearPicker)}>\n {this._renderHeader()}\n {this._renderGrid()}\n </div>\n );\n }\n\n private _onNavNext = () => {\n this.setState({ fromYear: this.state.fromYear + CELL_COUNT });\n };\n\n private _onNavPrev = () => {\n this.setState({ fromYear: this.state.fromYear - CELL_COUNT });\n };\n\n private _renderHeader = (): React.ReactNode => {\n return (\n <CalendarYearHeader\n {...this.props}\n fromYear={this.state.fromYear}\n toYear={this.state.fromYear + CELL_COUNT - 1}\n onSelectPrev={this._onNavPrev}\n onSelectNext={this._onNavNext}\n />\n );\n };\n\n private _renderGrid = (): React.ReactNode => {\n return (\n <CalendarYearGrid\n {...this.props}\n fromYear={this.state.fromYear}\n toYear={this.state.fromYear + CELL_COUNT - 1}\n ref={this._gridRef}\n />\n );\n };\n\n private _calculateInitialStateFromProps(props: ICalendarYearProps): ICalendarYearState {\n const { selectedYear, navigatedYear } = props;\n const rangeYear = selectedYear || navigatedYear || new Date().getFullYear();\n const fromYear = Math.floor(rangeYear / 10) * 10;\n return {\n fromYear: fromYear,\n navigatedYear: navigatedYear,\n selectedYear: selectedYear,\n };\n }\n}\n","import * as React from 'react';\nimport { KeyCodes, css, getRTL, IRefObject, initializeComponentRef, format } from '../../Utilities';\nimport { ICalendarStrings, ICalendarIconStrings, ICalendarFormatDateCallbacks } from './Calendar.types';\nimport { FocusZone } from '../../FocusZone';\nimport {\n addYears,\n setMonth,\n getYearStart,\n getYearEnd,\n getMonthStart,\n getMonthEnd,\n compareDatePart,\n} from '../../utilities/dateMath/DateMath';\nimport { Icon } from '../../Icon';\nimport * as stylesImport from './Calendar.scss';\nimport { CalendarYear, ICalendarYearRange } from './CalendarYear';\nconst styles: any = stylesImport;\nconst MONTHS_PER_ROW: number = 4;\n\nexport interface ICalendarMonth {\n focus(): void;\n}\n\nexport interface ICalendarMonthProps extends React.ClassAttributes<CalendarMonth> {\n componentRef?: IRefObject<ICalendarMonth>;\n navigatedDate: Date;\n selectedDate: Date;\n strings: ICalendarStrings;\n onNavigateDate: (date: Date, focusOnNavigatedDay: boolean) => void;\n today?: Date;\n highlightCurrentMonth: boolean;\n highlightSelectedMonth: boolean;\n onHeaderSelect?: (focus: boolean) => void;\n navigationIcons: ICalendarIconStrings;\n dateTimeFormatter: ICalendarFormatDateCallbacks;\n minDate?: Date;\n maxDate?: Date;\n yearPickerHidden?: boolean;\n}\n\nexport interface ICalendarMonthState {\n /** State used to show/hide month picker */\n isYearPickerVisible?: boolean;\n}\n\nexport class CalendarMonth extends React.Component<ICalendarMonthProps, ICalendarMonthState> {\n /**\n * @deprecated unused, prefer 'ref' and 'componentRef' of ICalendarMonthProps.\n */\n public refs: {\n [key: string]: React.ReactInstance;\n navigatedMonth: HTMLElement;\n };\n\n private _selectMonthCallbacks: (() => void)[];\n private _calendarYearRef: CalendarYear;\n private _navigatedMonthRef: React.RefObject<HTMLButtonElement> = React.createRef<HTMLButtonElement>();\n private _focusOnUpdate: boolean;\n\n public constructor(props: ICalendarMonthProps) {\n super(props);\n\n initializeComponentRef(this);\n\n this._selectMonthCallbacks = [];\n props.strings.shortMonths.forEach((month, index) => {\n this._selectMonthCallbacks[index] = this._onSelectMonth.bind(this, index);\n });\n\n this._isCurrentMonth = this._isCurrentMonth.bind(this);\n this._onSelectNextYear = this._onSelectNextYear.bind(this);\n this._onSelectPrevYear = this._onSelectPrevYear.bind(this);\n this._onSelectMonth = this._onSelectMonth.bind(this);\n\n this.state = { isYearPickerVisible: false };\n }\n\n public componentDidUpdate(): void {\n if (this._focusOnUpdate) {\n this.focus();\n this._focusOnUpdate = false;\n }\n }\n\n public render(): JSX.Element {\n const {\n navigatedDate,\n selectedDate,\n strings,\n today,\n highlightCurrentMonth,\n highlightSelectedMonth,\n navigationIcons,\n dateTimeFormatter,\n minDate,\n maxDate,\n yearPickerHidden,\n } = this.props;\n\n if (this.state.isYearPickerVisible) {\n // default the year picker to the current navigated date\n const currentSelectedDate = navigatedDate ? navigatedDate.getFullYear() : undefined;\n return (\n <CalendarYear\n key={'calendarYear_' + (currentSelectedDate && currentSelectedDate.toString())}\n minYear={minDate ? minDate.getFullYear() : undefined}\n maxYear={maxDate ? maxDate.getFullYear() : undefined}\n onSelectYear={this._onSelectYear}\n navigationIcons={navigationIcons}\n onHeaderSelect={this._onYearPickerHeaderSelect}\n selectedYear={currentSelectedDate}\n onRenderYear={this._onRenderYear}\n strings={{\n rangeAriaLabel: this._yearRangeToString,\n prevRangeAriaLabel: this._yearRangeToPrevDecadeLabel,\n nextRangeAriaLabel: this._yearRangeToNextDecadeLabel,\n headerAriaLabelFormatString: strings.yearPickerHeaderAriaLabel,\n }}\n ref={this._onCalendarYearRef}\n />\n );\n }\n\n const rowIndexes = [];\n for (let i = 0; i < strings.shortMonths.length / MONTHS_PER_ROW; i++) {\n rowIndexes.push(i);\n }\n\n const leftNavigationIcon = navigationIcons.leftNavigation;\n const rightNavigationIcon = navigationIcons.rightNavigation;\n\n // determine if previous/next years are in bounds\n const isPrevYearInBounds = minDate ? compareDatePart(minDate, getYearStart(navigatedDate)) < 0 : true;\n const isNextYearInBounds = maxDate ? compareDatePart(getYearEnd(navigatedDate), maxDate) < 0 : true;\n\n const yearString = dateTimeFormatter.formatYear(navigatedDate);\n const headerAriaLabel = strings.monthPickerHeaderAriaLabel\n ? format(strings.monthPickerHeaderAriaLabel, yearString)\n : yearString;\n\n return (\n <div className={css('ms-DatePicker-monthPicker', styles.monthPicker)}>\n <div className={css('ms-DatePicker-header', styles.header)}>\n {this.props.onHeaderSelect || !yearPickerHidden ? (\n <div\n className={css(\n 'ms-DatePicker-currentYear js-showYearPicker',\n styles.currentYear,\n styles.headerToggleView,\n )}\n onClick={this._onHeaderSelect}\n onKeyDown={this._onHeaderKeyDown}\n aria-label={headerAriaLabel}\n role=\"button\"\n aria-atomic={true}\n aria-live=\"polite\"\n tabIndex={0}\n >\n {dateTimeFormatter.formatYear(navigatedDate)}\n </div>\n ) : (\n <div className={css('ms-DatePicker-currentYear js-showYearPicker', styles.currentYear)}>\n {dateTimeFormatter.formatYear(navigatedDate)}\n </div>\n )}\n <div className={css('ms-DatePicker-yearComponents', styles.yearComponents)}>\n <div className={css('ms-DatePicker-navContainer', styles.navContainer)}>\n <button\n className={css('ms-DatePicker-prevYear js-prevYear', styles.prevYear, {\n ['ms-DatePicker-prevYear--disabled ' + styles.prevYearIsDisabled]: !isPrevYearInBounds,\n })}\n disabled={!isPrevYearInBounds}\n onClick={isPrevYearInBounds ? this._onSelectPrevYear : undefined}\n onKeyDown={isPrevYearInBounds ? this._onSelectPrevYearKeyDown : undefined}\n title={\n strings.prevYearAriaLabel\n ? strings.prevYearAriaLabel + ' ' + dateTimeFormatter.formatYear(addYears(navigatedDate, -1))\n : undefined\n }\n role=\"button\"\n type=\"button\"\n >\n <Icon iconName={getRTL() ? rightNavigationIcon : leftNavigationIcon} />\n </button>\n <button\n className={css('ms-DatePicker-nextYear js-nextYear', styles.nextYear, {\n ['ms-DatePicker-nextYear--disabled ' + styles.nextYearIsDisabled]: !isNextYearInBounds,\n })}\n disabled={!isNextYearInBounds}\n onClick={isNextYearInBounds ? this._onSelectNextYear : undefined}\n onKeyDown={isNextYearInBounds ? this._onSelectNextYearKeyDown : undefined}\n title={\n strings.nextYearAriaLabel\n ? strings.nextYearAriaLabel + ' ' + dateTimeFormatter.formatYear(addYears(navigatedDate, 1))\n : undefined\n }\n role=\"button\"\n type=\"button\"\n >\n <Icon iconName={getRTL() ? leftNavigationIcon : rightNavigationIcon} />\n </button>\n </div>\n </div>\n </div>\n <FocusZone>\n <div className={css('ms-DatePicker-optionGrid', styles.optionGrid)} role=\"grid\">\n {rowIndexes.map((rowNum: number) => {\n const monthsForRow = strings.shortMonths.slice(rowNum * MONTHS_PER_ROW, (rowNum + 1) * MONTHS_PER_ROW);\n return (\n <div key={'monthRow_' + rowNum} role=\"row\">\n {monthsForRow.map((month: string, index: number) => {\n const monthIndex = rowNum * MONTHS_PER_ROW + index;\n const indexedMonth = setMonth(navigatedDate, monthIndex);\n const isCurrentMonth = this._isCurrentMonth(monthIndex, navigatedDate.getFullYear(), today!);\n const isNavigatedMonth = navigatedDate.getMonth() === monthIndex;\n const isSelectedMonth = selectedDate.getMonth() === monthIndex;\n const isSelectedYear = selectedDate.getFullYear() === navigatedDate.getFullYear();\n const isInBounds =\n (minDate ? compareDatePart(minDate, getMonthEnd(indexedMonth)) < 1 : true) &&\n (maxDate ? compareDatePart(getMonthStart(indexedMonth), maxDate) < 1 : true);\n\n return (\n <button\n role={'gridcell'}\n className={css('ms-DatePicker-monthOption', styles.monthOption, {\n ['ms-DatePicker-day--today ' + styles.monthIsCurrentMonth]:\n highlightCurrentMonth && isCurrentMonth!,\n ['ms-DatePicker-day--highlighted ' + styles.monthIsHighlighted]:\n (highlightCurrentMonth || highlightSelectedMonth) && isSelectedMonth && isSelectedYear,\n ['ms-DatePicker-monthOption--disabled ' + styles.monthOptionIsDisabled]: !isInBounds,\n })}\n disabled={!isInBounds}\n key={monthIndex}\n onClick={isInBounds ? this._selectMonthCallbacks[monthIndex] : undefined}\n onKeyDown={isInBounds ? this._onSelectMonthKeyDown(monthIndex) : undefined}\n aria-label={dateTimeFormatter.formatMonthYear(indexedMonth, strings)}\n aria-selected={isNavigatedMonth}\n data-is-focusable={isInBounds ? true : undefined}\n ref={isNavigatedMonth ? this._navigatedMonthRef : undefined}\n type=\"button\"\n >\n {month}\n </button>\n );\n })}\n </div>\n );\n })}\n </div>\n </FocusZone>\n </div>\n );\n }\n\n public focus() {\n if (this._calendarYearRef) {\n this._calendarYearRef.focus();\n } else if (this._navigatedMonthRef.current) {\n this._navigatedMonthRef.current.tabIndex = 0;\n this._navigatedMonthRef.current.focus();\n }\n }\n\n private _onCalendarYearRef = (ref: CalendarYear) => {\n this._calendarYearRef = ref;\n };\n\n private _isCurrentMonth(month: number, year: number, today: Date): boolean {\n return today.getFullYear() === year && today.getMonth() === month;\n }\n\n private _onKeyDown = (callback: () => void, ev: React.KeyboardEvent<HTMLElement>): void => {\n if (ev.which === KeyCodes.enter) {\n callback();\n }\n };\n\n private _onSelectYear = (selectedYear: number) => {\n this._focusOnUpdate = true;\n const { navigatedDate, onNavigateDate, maxDate, minDate } = this.props;\n const navYear = navigatedDate.getFullYear();\n if (navYear !== selectedYear) {\n let newNavigationDate = new Date(navigatedDate.getTime());\n newNavigationDate.setFullYear(selectedYear);\n // for min and max dates, adjust the new navigation date - perhaps this should be\n // checked on the master navigation date handler (i.e. in Calendar)\n if (maxDate && newNavigationDate > maxDate) {\n newNavigationDate = setMonth(newNavigationDate, maxDate.getMonth());\n } else if (minDate && newNavigationDate < minDate) {\n newNavigationDate = setMonth(newNavigationDate, minDate.getMonth());\n }\n onNavigateDate(newNavigationDate, true);\n }\n this.setState({ isYearPickerVisible: false });\n };\n\n private _yearToString = (year: number) => {\n const { navigatedDate, dateTimeFormatter } = this.props;\n if (dateTimeFormatter) {\n // create a date based on the current nav date\n const yearFormattingDate = new Date(navigatedDate.getTime());\n yearFormattingDate.setFullYear(year);\n return dateTimeFormatter.formatYear(yearFormattingDate);\n }\n return String(year);\n };\n\n private _yearRangeToString = (yearRange: ICalendarYearRange) => {\n return `${this._yearToString(yearRange.fromYear)} - ${this._yearToString(yearRange.toYear)}`;\n };\n\n private _yearRangeToNextDecadeLabel = (yearRange: ICalendarYearRange) => {\n const { strings } = this.props;\n return strings.nextYearRangeAriaLabel\n ? `${strings.nextYearRangeAriaLabel} ${this._yearRangeToString(yearRange)}`\n : '';\n };\n\n private _yearRangeToPrevDecadeLabel = (yearRange: ICalendarYearRange) => {\n const { strings } = this.props;\n return strings.prevYearRangeAriaLabel\n ? `${strings.prevYearRangeAriaLabel} ${this._yearRangeToString(yearRange)}`\n : '';\n };\n\n private _onRenderYear = (year: number) => {\n return this._yearToString(year);\n };\n\n private _onSelectNextYear = (): void => {\n const { navigatedDate, onNavigateDate } = this.props;\n onNavigateDate(addYears(navigatedDate, 1), false);\n };\n\n private _onSelectNextYearKeyDown = (ev: React.KeyboardEvent<HTMLElement>): void => {\n if (ev.which === KeyCodes.enter) {\n this._onKeyDown(this._onSelectNextYear, ev);\n }\n };\n\n private _onSelectPrevYear = (): void => {\n const { navigatedDate, onNavigateDate } = this.props;\n onNavigateDate(addYears(navigatedDate, -1), false);\n };\n\n private _onSelectPrevYearKeyDown = (ev: React.KeyboardEvent<HTMLElement>): void => {\n if (ev.which === KeyCodes.enter) {\n this._onKeyDown(this._onSelectPrevYear, ev);\n }\n };\n\n private _onSelectMonthKeyDown = (index: number): ((ev: React.KeyboardEvent<HTMLElement>) => void) => {\n return (ev: React.KeyboardEvent<HTMLElement>) => this._onKeyDown(() => this._onSelectMonth(index), ev);\n };\n\n private _onSelectMonth = (newMonth: number): void => {\n const { navigatedDate, onNavigateDate, onHeaderSelect } = this.props;\n\n // If header is clickable the calendars are overlayed, switch back to day picker when month is clicked\n if (onHeaderSelect) {\n onHeaderSelect(true);\n }\n onNavigateDate(setMonth(navigatedDate, newMonth), true);\n };\n\n private _onHeaderSelect = (): void => {\n const { onHeaderSelect, yearPickerHidden } = this.props;\n if (!yearPickerHidden) {\n this._focusOnUpdate = true;\n this.setState({ isYearPickerVisible: true });\n } else if (onHeaderSelect) {\n onHeaderSelect(true);\n }\n };\n\n private _onYearPickerHeaderSelect = (focus: boolean): void => {\n this._focusOnUpdate = focus;\n this.setState({ isYearPickerVisible: false });\n };\n\n private _onHeaderKeyDown = (ev: React.KeyboardEvent<HTMLElement>): void => {\n if (this._onHeaderSelect && (ev.which === KeyCodes.enter || ev.which === KeyCodes.space)) {\n this._onHeaderSelect();\n }\n };\n}\n","import * as React from 'react';\nimport {\n ICalendar,\n ICalendarProps,\n ICalendarStrings,\n ICalendarIconStrings,\n ICalendarFormatDateCallbacks,\n} from './Calendar.types';\nimport { DayOfWeek, FirstWeekOfYear, DateRangeType } from '../../utilities/dateValues/DateValues';\nimport { CalendarDay, ICalendarDay } from './CalendarDay';\nimport { CalendarMonth, ICalendarMonth } from './CalendarMonth';\nimport { compareDates, getDateRangeArray } from '../../utilities/dateMath/DateMath';\nimport {\n css,\n elementContains,\n KeyCodes,\n getNativeProps,\n divProperties,\n initializeComponentRef,\n FocusRects,\n} from '../../Utilities';\nimport * as stylesImport from './Calendar.scss';\nconst styles: any = stylesImport;\n\nconst leftArrow = 'Up';\nconst rightArrow = 'Down';\nconst closeIcon = 'CalculatorMultiply';\nconst iconStrings: ICalendarIconStrings = {\n leftNavigation: leftArrow,\n rightNavigation: rightArrow,\n closeIcon: closeIcon,\n};\nconst defaultWorkWeekDays: DayOfWeek[] = [\n DayOfWeek.Monday,\n DayOfWeek.Tuesday,\n DayOfWeek.Wednesday,\n DayOfWeek.Thursday,\n DayOfWeek.Friday,\n];\n\nconst dateTimeFormatterCallbacks: ICalendarFormatDateCallbacks = {\n formatMonthDayYear: (date: Date, strings: ICalendarStrings) =>\n strings.months[date.getMonth()] + ' ' + date.getDate() + ', ' + date.getFullYear(),\n formatMonthYear: (date: Date, strings: ICalendarStrings) =>\n strings.months[date.getMonth()] + ' ' + date.getFullYear(),\n formatDay: (date: Date) => date.getDate().toString(),\n formatYear: (date: Date) => date.getFullYear().toString(),\n};\n\nexport interface ICalendarState {\n /** The currently focused date in the day picker, but not necessarily selected */\n navigatedDayDate?: Date;\n\n /** The currently focused date in the month picker, but not necessarily selected */\n navigatedMonthDate?: Date;\n\n /** The currently selected date in the calendar */\n selectedDate?: Date;\n\n /** State used to show/hide month picker */\n isMonthPickerVisible?: boolean;\n\n /** State used to show/hide day picker */\n isDayPickerVisible?: boolean;\n}\n\nexport class Calendar extends React.Component<ICalendarProps, ICalendarState> implements ICalendar {\n public static defaultProps: ICalendarProps = {\n onSelectDate: undefined,\n onDismiss: undefined,\n isMonthPickerVisible: true,\n isDayPickerVisible: true,\n showMonthPickerAsOverlay: false,\n value: undefined,\n today: new Date(),\n firstDayOfWeek: DayOfWeek.Sunday,\n dateRangeType: DateRangeType.Day,\n autoNavigateOnSelection: false,\n showGoToToday: true,\n strings: null,\n highlightCurrentMonth: false,\n highlightSelectedMonth: false,\n navigationIcons: iconStrings,\n showWeekNumbers: false,\n firstWeekOfYear: FirstWeekOfYear.FirstDay,\n dateTimeFormatter: dateTimeFormatterCallbacks,\n showSixWeeksByDefault: false,\n workWeekDays: defaultWorkWeekDays,\n showCloseButton: false,\n allFocusable: false,\n };\n\n private _dayPicker = React.createRef<ICalendarDay>();\n private _monthPicker = React.createRef<ICalendarMonth>();\n private _hasFocus = false;\n\n private _focusOnUpdate: boolean;\n\n constructor(props: ICalendarProps) {\n super(props);\n\n initializeComponentRef(this);\n\n const currentDate = props.value && !isNaN(props.value.getTime()) ? props.value : props.today || new Date();\n\n this.state = {\n selectedDate: currentDate,\n navigatedDayDate: currentDate,\n navigatedMonthDate: currentDate,\n\n /** When showMonthPickerAsOverlay is active it overrides isMonthPickerVisible/isDayPickerVisible props\n (These props permanently set the visibility of their respective calendars). */\n isMonthPickerVisible: this.props.showMonthPickerAsOverlay ? false : this.props.isMonthPickerVisible,\n isDayPickerVisible: this.props.showMonthPickerAsOverlay ? true : this.props.isDayPickerVisible,\n };\n\n this._focusOnUpdate = false;\n }\n\n public UNSAFE_componentWillReceiveProps(nextProps: ICalendarProps): void {\n const { autoNavigateOnSelection, value, today = new Date() } = nextProps;\n\n // Make sure auto-navigation is supported for programmatic changes to selected date, i.e.,\n // if selected date is updated via props, we may need to modify the navigated date\n const overrideNavigatedDate = autoNavigateOnSelection && !compareDates(value!, this.props.value!);\n if (overrideNavigatedDate) {\n this.setState({\n navigatedMonthDate: value,\n navigatedDayDate: value,\n });\n }\n\n this.setState({\n selectedDate: value || today,\n });\n }\n\n public componentDidUpdate(): void {\n if (this._focusOnUpdate) {\n this.focus();\n this._focusOnUpdate = false;\n }\n }\n\n public render(): JSX.Element {\n const rootClass = 'ms-DatePicker';\n const {\n firstDayOfWeek,\n dateRangeType,\n strings,\n showMonthPickerAsOverlay,\n autoNavigateOnSelection,\n showGoToToday,\n highlightCurrentMonth,\n highlightSelectedMonth,\n navigationIcons,\n minDate,\n maxDate,\n restrictedDates,\n className,\n showCloseButton,\n allFocusable,\n yearPickerHidden,\n today,\n } = this.props;\n const nativeProps = getNativeProps<React.HTMLAttributes<HTMLDivElement>>(this.props, divProperties, ['value']);\n const { selectedDate, navigatedDayDate, navigatedMonthDate, isMonthPickerVisible, isDayPickerVisible } = this.state;\n const onHeaderSelect = showMonthPickerAsOverlay ? this._onHeaderSelect : undefined;\n const monthPickerOnly = !showMonthPickerAsOverlay && !isDayPickerVisible;\n const overlayedWithButton = showMonthPickerAsOverlay && showGoToToday;\n\n let goTodayEnabled = showGoToToday;\n\n if (goTodayEnabled && navigatedDayDate && navigatedMonthDate && today) {\n goTodayEnabled =\n navigatedDayDate.getFullYear() !== today.getFullYear() ||\n navigatedDayDate.getMonth() !== today.getMonth() ||\n navigatedMonthDate.getFullYear() !== today.getFullYear() ||\n navigatedMonthDate.getMonth() !== today.getMonth();\n }\n\n return (\n <div className={css(rootClass, styles.root, className)} role=\"application\">\n <div\n {...nativeProps}\n onBlur={this._onBlur}\n onFocus={this._onFocus}\n className={css(\n 'ms-DatePicker-picker ms-DatePicker-picker--opened ms-DatePicker-picker--focused',\n styles.picker,\n styles.pickerIsOpened,\n styles.pickerIsFocused,\n isMonthPickerVisible && 'ms-DatePicker-monthPickerVisible ' + styles.monthPickerVisible,\n isMonthPickerVisible && isDayPickerVisible && 'ms-DatePicker-calendarsInline ' + styles.calendarsInline,\n monthPickerOnly && 'ms-DatePicker-monthPickerOnly ' + styles.monthPickerOnly,\n showMonthPickerAsOverlay && 'ms-DatePicker-monthPickerAsOverlay ' + styles.monthPickerAsOverlay,\n )}\n >\n <div\n className={css(\n 'ms-DatePicker-holder ms-slideDownIn10',\n styles.holder,\n overlayedWithButton && styles.holderWithButton,\n )}\n onKeyDown={this._onDatePickerPopupKeyDown}\n >\n <div className={css('ms-DatePicker-frame', styles.frame)}>\n <div className={css('ms-DatePicker-wrap', styles.wrap, showGoToToday && styles.goTodaySpacing)}>\n {isDayPickerVisible && (\n <CalendarDay\n selectedDate={selectedDate!}\n navigatedDate={navigatedDayDate!}\n today={this.props.today}\n onSelectDate={this._onSelectDate}\n onNavigateDate={this._onNavigateDayDate}\n onDismiss={this.props.onDismiss}\n firstDayOfWeek={firstDayOfWeek!}\n dateRangeType={dateRangeType!}\n autoNavigateOnSelection={autoNavigateOnSelection!}\n strings={strings!}\n onHeaderSelect={onHeaderSelect}\n navigationIcons={navigationIcons!}\n showWeekNumbers={this.props.showWeekNumbers}\n firstWeekOfYear={this.props.firstWeekOfYear!}\n dateTimeFormatter={this.props.dateTimeFormatter!}\n showSixWeeksByDefault={this.props.showSixWeeksByDefault}\n minDate={minDate}\n maxDate={maxDate}\n restrictedDates={restrictedDates}\n workWeekDays={this.props.workWeekDays}\n componentRef={this._dayPicker}\n showCloseButton={showCloseButton}\n allFocusable={allFocusable}\n />\n )}\n {isDayPickerVisible && isMonthPickerVisible && <div className={styles.divider} />}\n {isMonthPickerVisible && (\n <CalendarMonth\n navigatedDate={navigatedMonthDate!}\n selectedDate={navigatedDayDate!}\n strings={strings!}\n onNavigateDate={this._onNavigateMonthDate}\n today={this.props.today}\n highlightCurrentMonth={highlightCurrentMonth!}\n highlightSelectedMonth={highlightSelectedMonth!}\n onHeaderSelect={onHeaderSelect}\n navigationIcons={navigationIcons!}\n dateTimeFormatter={this.props.dateTimeFormatter!}\n minDate={minDate}\n maxDate={maxDate}\n componentRef={this._monthPicker}\n yearPickerHidden={yearPickerHidden || showMonthPickerAsOverlay}\n />\n )}\n\n {showGoToToday && (\n <button\n role=\"button\"\n className={css('ms-DatePicker-goToday js-goToday', styles.goToday, {\n [styles.goTodayInlineMonth]: isMonthPickerVisible,\n [styles.goToTodayIsDisabled]: !goTodayEnabled,\n })}\n onClick={this._onGotoTodayClick}\n onKeyDown={this._onGotoTodayKeyDown}\n tabIndex={0}\n disabled={!goTodayEnabled}\n type=\"button\"\n >\n {strings!.goToToday}\n </button>\n )}\n </div>\n </div>\n </div>\n </div>\n <FocusRects />\n </div>\n );\n }\n\n public focus() {\n if (this.state.isDayPickerVisible && this._dayPicker.current) {\n this._dayPicker.current.focus();\n } else if (this.state.isMonthPickerVisible && this._monthPicker.current) {\n this._monthPicker.current.focus();\n }\n }\n\n private _onBlur = (event: React.FocusEvent<HTMLElement>) => {\n if (!elementContains(event.currentTarget, event.relatedTarget as HTMLElement)) {\n this._hasFocus = false;\n this.props.onBlur && this.props.onBlur(event);\n }\n };\n\n private _onFocus = (event: React.FocusEvent<HTMLElement>) => {\n if (!this._hasFocus) {\n this._hasFocus = true;\n this.props.onFocus && this.props.onFocus(event);\n }\n };\n\n private _navigateDayPickerDay = (date: Date): void => {\n this.setState({\n navigatedDayDate: date,\n navigatedMonthDate: date,\n });\n };\n\n private _navigateMonthPickerDay = (date: Date): void => {\n this.setState({\n navigatedMonthDate: date,\n });\n };\n\n private _onNavigateDayDate = (date: Date, focusOnNavigatedDay: boolean): void => {\n this._navigateDayPickerDay(date);\n this._focusOnUpdate = focusOnNavigatedDay;\n };\n\n private _onNavigateMonthDate = (date: Date, focusOnNavigatedDay: boolean): void => {\n if (!focusOnNavigatedDay) {\n this._navigateMonthPickerDay(date);\n this._focusOnUpdate = focusOnNavigatedDay;\n return;\n }\n\n const monthPickerOnly = !this.props.showMonthPickerAsOverlay && !this.props.isDayPickerVisible;\n\n if (monthPickerOnly) {\n this._onSelectDate(date);\n }\n\n this._navigateDayPickerDay(date);\n };\n\n private _onSelectDate = (date: Date, selectedDateRangeArray?: Date[]): void => {\n const { onSelectDate } = this.props;\n\n this.setState({\n selectedDate: date,\n });\n\n if (onSelectDate) {\n onSelectDate(date, selectedDateRangeArray);\n }\n };\n\n private _onHeaderSelect = (focus: boolean): void => {\n this.setState({\n isDayPickerVisible: !this.state.isDayPickerVisible,\n isMonthPickerVisible: !this.state.isMonthPickerVisible,\n });\n\n if (focus) {\n this._focusOnUpdate = true;\n }\n };\n\n private _onGotoToday = (): void => {\n const { dateRangeType, firstDayOfWeek, today, workWeekDays, selectDateOnClick } = this.props;\n\n if (selectDateOnClick) {\n // When using Defaultprops, TypeScript doesn't know that React is going to inject defaults\n // so we use exclamation mark as a hint to the type checker (see link below)\n // https://decembersoft.com/posts/error-ts2532-optional-react-component-props-in-typescript/\n const dates = getDateRangeArray(today!, dateRangeType!, firstDayOfWeek!, workWeekDays!);\n this._onSelectDate(today!, dates);\n }\n\n this._navigateDayPickerDay(today!);\n this._focusOnUpdate = true;\n };\n\n private _onGotoTodayClick = (ev: React.MouseEvent<HTMLElement>): void => {\n this._onGotoToday();\n };\n\n private _onGotoTodayKeyDown = (ev: React.KeyboardEvent<HTMLElement>): void => {\n if (ev.which === KeyCodes.enter) {\n ev.preventDefault();\n this._onGotoToday();\n }\n };\n\n private _onDatePickerPopupKeyDown = (ev: React.KeyboardEvent<HTMLElement>): void => {\n switch (ev.which) {\n case KeyCodes.enter:\n ev.preventDefault();\n break;\n\n case KeyCodes.backspace:\n ev.preventDefault();\n break;\n\n case KeyCodes.escape:\n this._handleEscKey(ev);\n break;\n\n default:\n break;\n }\n };\n\n private _handleEscKey = (ev: React.KeyboardEvent<HTMLElement>): void => {\n if (this.props.onDismiss) {\n this.props.onDismiss();\n }\n };\n}\n","import * as React from 'react';\nimport {\n IDatePicker,\n IDatePickerProps,\n IDatePickerStrings,\n IDatePickerStyleProps,\n IDatePickerStyles,\n} from './DatePicker.types';\nimport {\n KeyCodes,\n classNamesFunction,\n getId,\n getNativeProps,\n divProperties,\n css,\n initializeComponentRef,\n} from '../../Utilities';\nimport { Calendar, ICalendar, DayOfWeek } from '../../Calendar';\nimport { FirstWeekOfYear } from '../../utilities/dateValues/DateValues';\nimport { Callout } from '../../Callout';\nimport { DirectionalHint } from '../../common/DirectionalHint';\nimport { TextField, ITextField, ITextFieldProps } from '../../TextField';\nimport { compareDates, compareDatePart } from '../../utilities/dateMath/DateMath';\nimport { FocusTrapZone } from '../../FocusTrapZone';\n\nconst getClassNames = classNamesFunction<IDatePickerStyleProps, IDatePickerStyles>();\n\nexport interface IDatePickerState {\n selectedDate?: Date;\n formattedDate?: string;\n isDatePickerShown?: boolean;\n errorMessage?: string;\n}\n\nconst DEFAULT_STRINGS: IDatePickerStrings = {\n months: [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December',\n ],\n shortMonths: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n days: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n shortDays: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],\n goToToday: 'Go to today',\n prevMonthAriaLabel: 'Go to previous month',\n nextMonthAriaLabel: 'Go to next month',\n prevYearAriaLabel: 'Go to previous year',\n nextYearAriaLabel: 'Go to next year',\n prevYearRangeAriaLabel: 'Previous year range',\n nextYearRangeAriaLabel: 'Next year range',\n closeButtonAriaLabel: 'Close date picker',\n weekNumberFormatString: 'Week number {0}',\n};\n\nexport class DatePickerBase extends React.Component<IDatePickerProps, IDatePickerState> implements IDatePicker {\n public static defaultProps: IDatePickerProps = {\n allowTextInput: false,\n formatDate: (date: Date) => {\n if (date) {\n return date.toDateString();\n }\n\n return '';\n },\n parseDateFromString: (dateStr: string) => {\n const date = Date.parse(dateStr);\n if (date) {\n return new Date(date);\n }\n\n return null;\n },\n firstDayOfWeek: DayOfWeek.Sunday,\n initialPickerDate: new Date(),\n isRequired: false,\n isMonthPickerVisible: true,\n showMonthPickerAsOverlay: false,\n strings: DEFAULT_STRINGS,\n highlightCurrentMonth: false,\n highlightSelectedMonth: false,\n borderless: false,\n pickerAriaLabel: 'Calendar',\n showWeekNumbers: false,\n firstWeekOfYear: FirstWeekOfYear.FirstDay,\n showGoToToday: true,\n dateTimeFormatter: undefined,\n showCloseButton: false,\n underlined: false,\n allFocusable: false,\n };\n\n private _calendar = React.createRef<ICalendar>();\n private _datePickerDiv = React.createRef<HTMLDivElement>();\n private _textField = React.createRef<ITextField>();\n private _preventFocusOpeningPicker: boolean;\n private _id: string;\n\n constructor(props: IDatePickerProps) {\n super(props);\n\n initializeComponentRef(this);\n this.state = this._getDefaultState();\n\n this._id = props.id || getId('DatePicker');\n\n this._preventFocusOpeningPicker = false;\n }\n\n public UNSAFE_componentWillReceiveProps(nextProps: IDatePickerProps): void {\n const { formatDate, value } = nextProps;\n\n if (\n compareDates(this.props.minDate!, nextProps.minDate!) &&\n compareDates(this.props.maxDate!, nextProps.maxDate!) &&\n this.props.isRequired === nextProps.isRequired &&\n compareDates(this.state.selectedDate!, value!) &&\n this.props.formatDate === formatDate\n ) {\n // if the props we care about haven't changed, don't run validation or updates\n return;\n }\n\n this._setErrorMessage(true, nextProps);\n\n this._id = nextProps.id || this._id;\n\n // Issue# 1274: Check if the date value changed from old value, i.e., if indeed a new date is being\n // passed in or if the formatting function was modified. We only update the selected date if either of these\n // had a legit change. Note tha the bug will still repro when only the formatDate was passed in props and this\n // is the result of the onSelectDate callback, but this should be a rare scenario.\n const oldValue = this.state.selectedDate;\n if (!compareDates(oldValue!, value!) || this.props.formatDate !== formatDate) {\n this.setState({\n selectedDate: value || undefined,\n formattedDate: formatDate && value ? formatDate(value) : '',\n });\n }\n }\n\n public componentDidUpdate(prevProps: IDatePickerProps, prevState: IDatePickerState) {\n if (prevState.isDatePickerShown && !this.state.isDatePickerShown) {\n // If DatePicker's menu (Calendar) is closed, run onAfterMenuDismiss\n if (this.props.onAfterMenuDismiss) {\n this.props.onAfterMenuDismiss();\n }\n }\n }\n\n public render(): JSX.Element {\n const {\n firstDayOfWeek,\n strings,\n label,\n theme,\n className,\n styles,\n initialPickerDate,\n isRequired,\n disabled,\n ariaLabel,\n pickerAriaLabel,\n placeholder,\n allowTextInput,\n borderless,\n minDate,\n maxDate,\n showCloseButton,\n calendarProps,\n calloutProps,\n textField: textFieldProps,\n underlined,\n allFocusable,\n calendarAs: CalendarType = Calendar,\n tabIndex,\n } = this.props;\n const { isDatePickerShown, formattedDate, selectedDate } = this.state;\n\n const classNames = getClassNames(styles, {\n theme: theme!,\n className,\n disabled,\n underlined,\n label: !!label,\n isDatePickerShown,\n });\n\n const calloutId = getId('DatePicker-Callout');\n const nativeProps = getNativeProps<React.HTMLAttributes<HTMLDivElement>>(this.props, divProperties, ['value']);\n const iconProps = textFieldProps && textFieldProps.iconProps;\n const textFieldId =\n textFieldProps && textFieldProps.id && textFieldProps.id !== this._id ? textFieldProps.id : this._id + '-label';\n const readOnly = !allowTextInput && !disabled;\n\n return (\n <div {...nativeProps} className={classNames.root}>\n <div\n ref={this._datePickerDiv}\n aria-haspopup=\"true\"\n aria-owns={isDatePickerShown ? calloutId : undefined}\n className={classNames.wrapper}\n >\n <TextField\n role=\"combobox\"\n label={label}\n aria-expanded={isDatePickerShown}\n ariaLabel={ariaLabel}\n aria-controls={isDatePickerShown ? calloutId : undefined}\n required={isRequired}\n disabled={disabled}\n errorMessage={this._getErrorMessage()}\n placeholder={placeholder}\n borderless={borderless}\n value={formattedDate}\n componentRef={this._textField}\n underlined={underlined}\n tabIndex={tabIndex}\n readOnly={!allowTextInput}\n {...textFieldProps}\n id={textFieldId}\n className={css(classNames.textField, textFieldProps && textFieldProps.className)}\n iconProps={{\n iconName: 'Calendar',\n ...iconProps,\n className: css(classNames.icon, iconProps && iconProps.className),\n onClick: this._onIconClick,\n }}\n onKeyDown={this._onTextFieldKeyDown}\n onFocus={this._onTextFieldFocus}\n onBlur={this._onTextFieldBlur}\n onClick={this._onTextFieldClick}\n onChange={this._onTextFieldChanged}\n onRenderInput={readOnly ? this._renderReadOnlyInput : undefined}\n />\n </div>\n {isDatePickerShown && (\n <Callout\n id={calloutId}\n role=\"dialog\"\n ariaLabel={pickerAriaLabel}\n isBeakVisible={false}\n gapSpace={0}\n doNotLayer={false}\n target={this._datePickerDiv.current}\n directionalHint={DirectionalHint.bottomLeftEdge}\n {...calloutProps}\n className={css(classNames.callout, calloutProps && calloutProps.className)}\n onDismiss={this._calendarDismissed}\n onPositioned={this._onCalloutPositioned}\n >\n <FocusTrapZone\n isClickableOutsideFocusTrap={true}\n disableFirstFocus={this.props.disableAutoFocus}\n forceFocusInsideTrap={false}\n >\n <CalendarType\n {...calendarProps}\n onSelectDate={this._onSelectDate}\n onDismiss={this._calendarDismissed}\n isMonthPickerVisible={this.props.isMonthPickerVisible}\n showMonthPickerAsOverlay={this.props.showMonthPickerAsOverlay}\n today={this.props.today}\n value={selectedDate || initialPickerDate}\n firstDayOfWeek={firstDayOfWeek}\n strings={strings!}\n highlightCurrentMonth={this.props.highlightCurrentMonth}\n highlightSelectedMonth={this.props.highlightSelectedMonth}\n showWeekNumbers={this.props.showWeekNumbers}\n firstWeekOfYear={this.props.firstWeekOfYear}\n showGoToToday={this.props.showGoToToday}\n dateTimeFormatter={this.props.dateTimeFormatter}\n minDate={minDate}\n maxDate={maxDate}\n componentRef={this._calendar}\n showCloseButton={showCloseButton}\n allFocusable={allFocusable}\n />\n </FocusTrapZone>\n </Callout>\n )}\n </div>\n );\n }\n\n public focus(): void {\n if (this._textField.current) {\n this._textField.current.focus();\n }\n }\n\n public reset(): void {\n this.setState(this._getDefaultState());\n }\n\n private _setErrorMessage(setState: boolean, nextProps?: IDatePickerProps): string | undefined {\n const { isRequired, strings, value, minDate, maxDate, initialPickerDate } = nextProps || this.props;\n let errorMessage = !initialPickerDate && isRequired && !value ? strings!.isRequiredErrorMessage || ' ' : undefined;\n\n if (!errorMessage && value) {\n errorMessage = this._isDateOutOfBounds(value!, minDate, maxDate)\n ? strings!.isOutOfBoundsErrorMessage || ' '\n : undefined;\n }\n\n if (setState) {\n this.setState({\n errorMessage: errorMessage,\n });\n }\n\n return errorMessage;\n }\n\n private _onSelectDate = (date: Date): void => {\n const { formatDate, onSelectDate } = this.props;\n\n if (this.props.calendarProps && this.props.calendarProps.onSelectDate) {\n this.props.calendarProps.onSelectDate(date);\n }\n\n this.setState({\n selectedDate: date,\n formattedDate: formatDate && date ? formatDate(date) : '',\n });\n\n if (onSelectDate) {\n onSelectDate(date);\n }\n\n this._calendarDismissed();\n };\n\n private _onCalloutPositioned = (): void => {\n let shouldFocus = true;\n // If the user has specified that the callout shouldn't use initial focus, then respect\n // that and don't attempt to set focus. That will default to true within the callout\n // so we need to check if it's undefined here.\n if (this.props.calloutProps && this.props.calloutProps.setInitialFocus !== undefined) {\n shouldFocus = this.props.calloutProps.setInitialFocus;\n }\n if (this._calendar.current && shouldFocus) {\n this._calendar.current.focus();\n }\n };\n\n private _onTextFieldFocus = (ev: React.FocusEvent<HTMLElement>): void => {\n if (this.props.disableAutoFocus) {\n return;\n }\n\n if (!this.props.allowTextInput) {\n if (!this._preventFocusOpeningPicker) {\n this._showDatePickerPopup();\n } else {\n this._preventFocusOpeningPicker = false;\n }\n }\n };\n\n private _onTextFieldBlur = (ev: React.FocusEvent<HTMLElement>): void => {\n this._validateTextInput();\n };\n\n private _onTextFieldChanged = (\n ev: React.FormEvent<HTMLInputElement | HTMLTextAreaElement>,\n newValue: string,\n ): void => {\n const { allowTextInput, textField } = this.props;\n\n if (allowTextInput) {\n if (this.state.isDatePickerShown) {\n this._dismissDatePickerPopup();\n }\n\n const { isRequired, strings } = this.props;\n\n this.setState({\n errorMessage: isRequired && !newValue ? strings!.isRequiredErrorMessage || ' ' : undefined,\n formattedDate: newValue,\n });\n }\n\n if (textField && textField.onChange) {\n textField.onChange(ev, newValue);\n }\n };\n\n private _onTextFieldKeyDown = (ev: React.KeyboardEvent<HTMLElement>): void => {\n switch (ev.which) {\n case KeyCodes.enter:\n ev.preventDefault();\n ev.stopPropagation();\n if (!this.state.isDatePickerShown) {\n this._validateTextInput();\n this._showDatePickerPopup();\n } else {\n // When DatePicker allows input date string directly,\n // it is expected to hit another enter to close the popup\n if (this.props.allowTextInput) {\n this._dismissDatePickerPopup();\n }\n }\n break;\n\n case KeyCodes.escape:\n this._handleEscKey(ev);\n break;\n\n default:\n break;\n }\n };\n\n private _onTextFieldClick = (ev: React.MouseEvent<HTMLElement>): void => {\n if (!this.props.disableAutoFocus && !this.state.isDatePickerShown && !this.props.disabled) {\n this._showDatePickerPopup();\n return;\n }\n if (this.props.allowTextInput) {\n this._dismissDatePickerPopup();\n }\n };\n\n private _onIconClick = (ev: React.MouseEvent<HTMLElement>): void => {\n ev.stopPropagation();\n if (!this.state.isDatePickerShown && !this.props.disabled) {\n this._showDatePickerPopup();\n } else if (this.props.allowTextInput) {\n this._dismissDatePickerPopup();\n }\n };\n\n private _showDatePickerPopup(): void {\n if (!this.state.isDatePickerShown) {\n this._preventFocusOpeningPicker = true;\n this.setState({\n isDatePickerShown: true,\n });\n }\n }\n\n private _dismissDatePickerPopup = (): void => {\n if (this.state.isDatePickerShown) {\n this.setState(\n {\n isDatePickerShown: false,\n },\n () => {\n // setState is async, so we must call validate in a callback\n this._validateTextInput();\n },\n );\n }\n };\n\n /**\n * Callback for closing the calendar callout\n */\n private _calendarDismissed = (): void => {\n this._preventFocusOpeningPicker = true;\n this._dismissDatePickerPopup();\n // don't need to focus the text box, if necessary the focusTrapZone will do it\n };\n\n private _handleEscKey = (ev: React.KeyboardEvent<HTMLElement>): void => {\n if (this.state.isDatePickerShown) {\n ev.stopPropagation();\n }\n this._calendarDismissed();\n };\n\n private _validateTextInput = (): void => {\n const {\n isRequired,\n allowTextInput,\n strings,\n parseDateFromString,\n onSelectDate,\n formatDate,\n minDate,\n maxDate,\n } = this.props;\n const inputValue = this.state.formattedDate;\n\n // Do validation only if DatePicker's popup is dismissed\n if (this.state.isDatePickerShown) {\n return;\n }\n\n if (allowTextInput) {\n let date = null;\n\n if (inputValue) {\n // Don't parse if the selected date has the same formatted string as what we're about to parse.\n // The formatted string might be ambiguous (ex: \"1/2/3\" or \"New Year Eve\") and the parser might\n // not be able to come up with the exact same date.\n if (\n this.state.selectedDate &&\n !this.state.errorMessage &&\n formatDate &&\n formatDate(this.state.selectedDate) === inputValue\n ) {\n return;\n }\n date = parseDateFromString!(inputValue);\n\n // Check if date is null, or date is Invalid Date\n if (!date || isNaN(date.getTime())) {\n // Reset invalid input field, if formatting is available\n if (formatDate) {\n date = this.state.selectedDate;\n this.setState({\n formattedDate: formatDate(date!).toString(),\n });\n }\n\n this.setState({\n errorMessage: strings!.invalidInputErrorMessage || ' ',\n });\n } else {\n // Check against optional date boundaries\n if (this._isDateOutOfBounds(date, minDate, maxDate)) {\n this.setState({\n errorMessage: strings!.isOutOfBoundsErrorMessage || ' ',\n });\n } else {\n this.setState({\n selectedDate: date,\n errorMessage: '',\n });\n\n // When formatting is available:\n // If formatted date is valid, but is different from input, update with formatted date.\n // This occurs when an invalid date is entered twice.\n if (formatDate && formatDate(date) !== inputValue) {\n this.setState({\n formattedDate: formatDate(date).toString(),\n });\n }\n }\n }\n } else {\n // Only show error for empty inputValue if it is a required field\n this.setState({\n errorMessage: isRequired ? strings!.isRequiredErrorMessage || ' ' : '',\n });\n }\n\n // Execute onSelectDate callback\n if (onSelectDate) {\n // If no input date string or input date string is invalid\n // date variable will be null, callback should expect null value for this case\n onSelectDate(date);\n }\n } else if (isRequired && !inputValue) {\n // Check when DatePicker is a required field but has NO input value\n this.setState({\n errorMessage: strings!.isRequiredErrorMessage || ' ',\n });\n } else {\n // Cleanup the error message\n this.setState({\n errorMessage: '',\n });\n }\n };\n\n private _getDefaultState(props: IDatePickerProps = this.props): IDatePickerState {\n return {\n selectedDate: props.value || undefined,\n formattedDate: props.formatDate && props.value ? props.formatDate(props.value) : '',\n isDatePickerShown: false,\n errorMessage: this._setErrorMessage(false),\n };\n }\n\n private _isDateOutOfBounds(date: Date, minDate?: Date, maxDate?: Date): boolean {\n return (!!minDate && compareDatePart(minDate!, date) > 0) || (!!maxDate && compareDatePart(maxDate!, date) < 0);\n }\n\n private _getErrorMessage(): string | undefined {\n if (this.state.isDatePickerShown) {\n return undefined;\n }\n return this.state.errorMessage;\n }\n\n private _renderReadOnlyInput: ITextFieldProps['onRenderInput'] = inputProps => {\n const { formattedDate } = this.state;\n const { styles, theme, placeholder, tabIndex, underlined } = this.props;\n\n const classNames = getClassNames(styles, { theme: theme!, underlined });\n const divProps = getNativeProps(inputProps!, divProperties);\n\n // Talkback on Android treats readonly inputs as disabled, so swipe gestures to open the Calendar\n // don't register. Workaround is rendering a div with role=\"combobox\" (passed in via TextField props).\n return (\n <div {...divProps} className={css(divProps.className, classNames.readOnlyTextField)} tabIndex={tabIndex || 0}>\n {formattedDate || (\n // Putting the placeholder in a separate span fixes specificity issues for the text color\n <span className={classNames.readOnlyPlaceholder}>{placeholder}</span>\n )}\n </div>\n );\n };\n}\n","import { IDatePickerStyleProps, IDatePickerStyles } from './DatePicker.types';\nimport { IStyle, normalize, getGlobalClassNames, HighContrastSelector, getInputFocusStyle } from '../../Styling';\n\nconst GlobalClassNames = {\n root: 'ms-DatePicker',\n callout: 'ms-DatePicker-callout',\n withLabel: 'ms-DatePicker-event--with-label',\n withoutLabel: 'ms-DatePicker-event--without-label',\n disabled: 'msDatePickerDisabled ',\n};\n\nconst TEXTFIELD_HEIGHT = 32;\n\nexport const styles = (props: IDatePickerStyleProps): IDatePickerStyles => {\n const { className, theme, disabled, underlined, label, isDatePickerShown } = props;\n const { palette, semanticColors, effects, fonts } = theme;\n const classNames = getGlobalClassNames(GlobalClassNames, theme);\n\n const DatePickerIcon: IStyle = {\n color: palette.neutralSecondary,\n fontSize: fonts.mediumPlus.fontSize,\n lineHeight: '18px',\n pointerEvents: 'none',\n position: 'absolute',\n right: '4px',\n padding: '5px',\n };\n\n return {\n root: [classNames.root, theme.fonts.medium, isDatePickerShown && 'is-open', normalize, className],\n textField: [\n {\n position: 'relative',\n selectors: {\n '& input[readonly]': {\n cursor: 'pointer',\n },\n input: {\n selectors: {\n '::-ms-clear': {\n display: 'none',\n },\n },\n },\n },\n },\n disabled && {\n selectors: {\n '& input[readonly]': {\n cursor: 'default',\n },\n },\n },\n ],\n callout: [classNames.callout, { boxShadow: effects.elevation8 }],\n icon: [\n DatePickerIcon,\n label ? classNames.withLabel : classNames.withoutLabel,\n { paddingTop: '7px' },\n !disabled && [\n classNames.disabled,\n {\n pointerEvents: 'initial',\n cursor: 'pointer',\n },\n ],\n disabled && {\n color: semanticColors.disabledText,\n cursor: 'default',\n },\n ],\n readOnlyTextField: [\n {\n cursor: 'pointer',\n height: TEXTFIELD_HEIGHT,\n lineHeight: TEXTFIELD_HEIGHT - 2,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n selectors: {\n ['&:focus']: getInputFocusStyle(semanticColors.inputFocusBorderAlt, effects.roundedCorner2),\n },\n },\n underlined && {\n lineHeight: TEXTFIELD_HEIGHT + 2,\n },\n ],\n readOnlyPlaceholder: {\n color: semanticColors.inputPlaceholderText,\n [HighContrastSelector]: {\n color: 'GrayText',\n },\n },\n };\n};\n","import * as React from 'react';\nimport { styled } from '../../Utilities';\nimport { IDatePickerProps, IDatePickerStyleProps, IDatePickerStyles } from './DatePicker.types';\nimport { DatePickerBase } from './DatePicker.base';\nimport { styles } from './DatePicker.styles';\n\n/**\n * DatePicker description\n */\nexport const DatePicker: React.FunctionComponent<IDatePickerProps> = styled<\n IDatePickerProps,\n IDatePickerStyleProps,\n IDatePickerStyles\n>(DatePickerBase, styles, undefined, {\n scope: 'DatePicker',\n});\n","import * as React from 'react';\nimport { TooltipBase } from './Tooltip.base';\nimport { ICalloutProps } from '../../Callout';\nimport { IRenderFunction } from '../../Utilities';\nimport { DirectionalHint } from '../../common/DirectionalHint';\nimport { IStyle, ITheme } from '../../Styling';\nimport { IRefObject, IStyleFunctionOrObject } from '../../Utilities';\n\n/**\n * {@docCategory Tooltip}\n */\nexport interface ITooltip {}\n\n/**\n * {@docCategory Tooltip}\n */\nexport interface ITooltipProps extends React.HTMLAttributes<HTMLDivElement | TooltipBase> {\n /**\n * Optional callback to access the ITooltip interface. Use this instead of ref for accessing\n * the public methods and properties of the component.\n */\n componentRef?: IRefObject<ITooltip>;\n\n /**\n * Properties to pass through for Callout.\n * @defaultvalue `{ isBeakVisible: true, beakWidth: 16, gapSpace: 0, setInitialFocus: true, doNotLayer: false }`\n */\n calloutProps?: ICalloutProps;\n\n /**\n * Content to be passed to the tooltip\n */\n content?: string | JSX.Element | JSX.Element[];\n\n /**\n * Render function to populate tooltip content.\n */\n onRenderContent?: IRenderFunction<ITooltipProps>;\n\n /**\n * Length of delay. Set to `TooltipDelay.zero` if you do not want a delay.\n * @defaultvalue TooltipDelay.medium\n */\n delay?: TooltipDelay;\n\n /**\n * Max width of tooltip\n * @defaultvalue 364px\n */\n maxWidth?: string | null;\n\n /**\n * Element to anchor the Tooltip to.\n */\n targetElement?: HTMLElement;\n\n /**\n * How the tooltip should be anchored to its `targetElement`.\n * @defaultvalue DirectionalHint.topCenter\n */\n directionalHint?: DirectionalHint;\n\n /**\n * How the element should be positioned in RTL layouts.\n * If not specified, a mirror of `directionalHint` will be used instead\n */\n directionalHintForRTL?: DirectionalHint;\n\n /**\n * Theme provided by higher-order component.\n */\n theme?: ITheme;\n\n /**\n * Call to provide customized styling that will layer on top of the variant rules.\n */\n styles?: IStyleFunctionOrObject<ITooltipStyleProps, ITooltipStyles>;\n}\n\n/**\n * {@docCategory Tooltip}\n */\nexport enum TooltipDelay {\n zero = 0,\n /** 300 ms delay before showng the tooltip */\n medium = 1,\n /** 500 ms delay before showing the tooltip */\n long = 2,\n}\n\n/**\n * {@docCategory Tooltip}\n */\nexport interface ITooltipStyleProps {\n theme: ITheme;\n\n className?: string;\n\n /**\n * Delay before tooltip appears.\n * @deprecated Delay logic moved to TooltipHost vs relying on animation delay.\n */\n delay?: TooltipDelay;\n\n /**\n * Maximum width of tooltip.\n */\n maxWidth?: string;\n\n /**\n * The gap between the Callout and the target\n * @defaultvalue 0\n */\n gapSpace?: number;\n\n /**\n * The width of the Callout's beak\n * @defaultvalue 16\n */\n beakWidth?: number;\n}\n\n/**\n * {@docCategory Tooltip}\n */\nexport interface ITooltipStyles {\n /**\n * Style for the root element.\n */\n root: IStyle;\n\n /**\n * Style for the content element.\n */\n content: IStyle;\n\n /**\n * Style for the subtext element.\n */\n subText: IStyle;\n}\n","import * as React from 'react';\nimport { classNamesFunction, divProperties, getNativeProps } from '../../Utilities';\nimport { IProcessedStyleSet } from '../../Styling';\nimport { ITooltipProps, ITooltipStyleProps, ITooltipStyles } from './Tooltip.types';\nimport { Callout } from '../../Callout';\nimport { DirectionalHint } from '../../common/DirectionalHint';\n\nconst getClassNames = classNamesFunction<ITooltipStyleProps, ITooltipStyles>();\n\nexport class TooltipBase extends React.Component<ITooltipProps, any> {\n // Specify default props values\n public static defaultProps: Partial<ITooltipProps> = {\n directionalHint: DirectionalHint.topCenter,\n maxWidth: '364px',\n calloutProps: {\n isBeakVisible: true,\n beakWidth: 16,\n gapSpace: 0,\n setInitialFocus: true,\n doNotLayer: false,\n },\n };\n\n private _classNames: IProcessedStyleSet<ITooltipStyles>;\n\n public render(): JSX.Element {\n const {\n className,\n calloutProps,\n directionalHint,\n directionalHintForRTL,\n styles,\n id,\n maxWidth,\n onRenderContent = this._onRenderContent,\n targetElement,\n theme,\n } = this.props;\n\n this._classNames = getClassNames(styles!, {\n theme: theme!,\n className: className || (calloutProps && calloutProps.className),\n beakWidth: calloutProps && calloutProps.beakWidth,\n gapSpace: calloutProps && calloutProps.gapSpace,\n maxWidth: maxWidth!,\n });\n\n return (\n <Callout\n target={targetElement}\n directionalHint={directionalHint}\n directionalHintForRTL={directionalHintForRTL}\n {...calloutProps}\n {...getNativeProps(this.props, divProperties, ['id'])} // omitting ID due to it being used in the div below\n className={this._classNames.root}\n >\n <div\n className={this._classNames.content}\n id={id}\n role=\"tooltip\"\n onMouseEnter={this.props.onMouseEnter}\n onMouseLeave={this.props.onMouseLeave}\n >\n {onRenderContent(this.props, this._onRenderContent)}\n </div>\n </Callout>\n );\n }\n\n private _onRenderContent = (props: ITooltipProps): JSX.Element => {\n return <p className={this._classNames.subText}>{props.content}</p>;\n };\n}\n","import * as React from 'react';\nimport { styled } from '../../Utilities';\nimport { TooltipBase } from './Tooltip.base';\nimport { ITooltipProps, ITooltipStyleProps, ITooltipStyles } from './Tooltip.types';\nimport { getStyles } from './Tooltip.styles';\n\nexport const Tooltip: React.FunctionComponent<ITooltipProps> = styled<\n ITooltipProps,\n ITooltipStyleProps,\n ITooltipStyles\n>(TooltipBase, getStyles, undefined, {\n scope: 'Tooltip',\n});\n","import { ITooltipStyleProps, ITooltipStyles } from './Tooltip.types';\nimport { AnimationClassNames } from '../../Styling';\n\nexport const getStyles = (props: ITooltipStyleProps): ITooltipStyles => {\n const { className, beakWidth = 16, gapSpace = 0, maxWidth, theme } = props;\n const { semanticColors, fonts, effects } = theme;\n\n // The math here is done to account for the 45 degree rotation of the beak\n // and sub-pixel rounding that differs across browsers, which is more noticeable when\n // the device pixel ratio is larger\n const tooltipGapSpace = -(Math.sqrt((beakWidth * beakWidth) / 2) + gapSpace) + 1 / window.devicePixelRatio;\n\n return {\n root: [\n 'ms-Tooltip',\n theme.fonts.medium,\n AnimationClassNames.fadeIn200,\n {\n background: semanticColors.menuBackground,\n boxShadow: effects.elevation8,\n padding: '8px',\n maxWidth: maxWidth,\n selectors: {\n ':after': {\n content: `''`,\n position: 'absolute',\n bottom: tooltipGapSpace,\n left: tooltipGapSpace,\n right: tooltipGapSpace,\n top: tooltipGapSpace,\n zIndex: 0,\n },\n },\n },\n className,\n ],\n content: [\n 'ms-Tooltip-content',\n fonts.small,\n {\n position: 'relative',\n zIndex: 1,\n color: semanticColors.menuItemText,\n wordWrap: 'break-word',\n overflowWrap: 'break-word',\n overflow: 'hidden',\n },\n ],\n subText: [\n 'ms-Tooltip-subtext',\n {\n // Using inherit here to avoid unintentional global overrides of the <p> tag.\n fontSize: 'inherit',\n fontWeight: 'inherit',\n color: 'inherit',\n margin: 0,\n },\n ],\n };\n};\n","import * as React from 'react';\nimport { hiddenContentStyle } from '../../Styling';\nimport {\n initializeComponentRef,\n Async,\n divProperties,\n getNativeProps,\n getId,\n assign,\n hasOverflow,\n portalContainsElement,\n classNamesFunction,\n KeyCodes,\n} from '../../Utilities';\nimport {\n ITooltipHostProps,\n TooltipOverflowMode,\n ITooltipHostStyles,\n ITooltipHostStyleProps,\n ITooltipHost,\n} from './TooltipHost.types';\nimport { Tooltip } from './Tooltip';\nimport { TooltipDelay } from './Tooltip.types';\n\nexport interface ITooltipHostState {\n /** @deprecated No longer used internally */\n isAriaPlaceholderRendered: boolean;\n isTooltipVisible: boolean;\n}\n\nconst getClassNames = classNamesFunction<ITooltipHostStyleProps, ITooltipHostStyles>();\n\nexport class TooltipHostBase extends React.Component<ITooltipHostProps, ITooltipHostState> implements ITooltipHost {\n public static defaultProps = {\n delay: TooltipDelay.medium,\n };\n\n private static _currentVisibleTooltip: ITooltipHost | undefined;\n\n // The wrapping div that gets the hover events\n private _tooltipHost = React.createRef<HTMLDivElement>();\n\n private _classNames: { [key in keyof ITooltipHostStyles]: string };\n private _async: Async;\n private _dismissTimerId: number;\n private _openTimerId: number;\n private _defaultTooltipId = getId('tooltip');\n\n // Constructor\n constructor(props: ITooltipHostProps) {\n super(props);\n\n initializeComponentRef(this);\n\n this.state = {\n isAriaPlaceholderRendered: false, // eslint-disable-line react/no-unused-state\n isTooltipVisible: false,\n };\n\n this._async = new Async(this);\n }\n\n // Render\n public render(): JSX.Element {\n const {\n calloutProps,\n children,\n content,\n directionalHint,\n directionalHintForRTL,\n hostClassName: className,\n id,\n setAriaDescribedBy = true,\n tooltipProps,\n styles,\n theme,\n } = this.props;\n\n this._classNames = getClassNames(styles!, {\n theme: theme!,\n className,\n });\n\n const { isTooltipVisible } = this.state;\n const tooltipId = id || this._defaultTooltipId;\n const isContentPresent = !!(\n content ||\n (tooltipProps && tooltipProps.onRenderContent && tooltipProps.onRenderContent())\n );\n const showTooltip = isTooltipVisible && isContentPresent;\n const ariaDescribedBy = setAriaDescribedBy && isTooltipVisible && isContentPresent ? tooltipId : undefined;\n\n return (\n <div\n className={this._classNames.root}\n ref={this._tooltipHost}\n {...{ onFocusCapture: this._onTooltipMouseEnter }}\n {...{ onBlurCapture: this._hideTooltip }}\n onMouseEnter={this._onTooltipMouseEnter}\n onMouseLeave={this._onTooltipMouseLeave}\n onKeyDown={this._onTooltipKeyDown}\n aria-describedby={ariaDescribedBy}\n >\n {children}\n {showTooltip && (\n <Tooltip\n id={`${tooltipId}--tooltip`}\n content={content}\n targetElement={this._getTargetElement()}\n directionalHint={directionalHint}\n directionalHintForRTL={directionalHintForRTL}\n calloutProps={assign({}, calloutProps, {\n onDismiss: this._hideTooltip,\n onMouseEnter: this._onTooltipMouseEnter,\n onMouseLeave: this._onTooltipMouseLeave,\n })}\n onMouseEnter={this._onTooltipMouseEnter}\n onMouseLeave={this._onTooltipMouseLeave}\n {...getNativeProps(this.props, divProperties, ['id'])}\n {...tooltipProps}\n />\n )}\n\n <div hidden={true} id={tooltipId} style={hiddenContentStyle as React.CSSProperties}>\n {content}\n </div>\n </div>\n );\n }\n\n public componentWillUnmount(): void {\n if (TooltipHostBase._currentVisibleTooltip && TooltipHostBase._currentVisibleTooltip === this) {\n TooltipHostBase._currentVisibleTooltip = undefined;\n }\n\n this._async.dispose();\n }\n\n public show = (): void => {\n this._toggleTooltip(true);\n };\n\n public dismiss = (): void => {\n this._hideTooltip();\n };\n\n private _getTargetElement = (): HTMLElement | undefined => {\n if (!this._tooltipHost.current) {\n return undefined;\n }\n\n const { overflowMode } = this.props;\n\n // Select target element based on overflow mode. For parent mode, you want to position the tooltip relative\n // to the parent element, otherwise it might look off.\n if (overflowMode !== undefined) {\n switch (overflowMode) {\n case TooltipOverflowMode.Parent:\n return this._tooltipHost.current.parentElement!;\n\n case TooltipOverflowMode.Self:\n return this._tooltipHost.current;\n }\n }\n\n return this._tooltipHost.current;\n };\n\n // Show Tooltip\n private _onTooltipMouseEnter = (ev: any): void => {\n const { overflowMode, delay } = this.props;\n\n if (TooltipHostBase._currentVisibleTooltip && TooltipHostBase._currentVisibleTooltip !== this) {\n TooltipHostBase._currentVisibleTooltip.dismiss();\n }\n TooltipHostBase._currentVisibleTooltip = this;\n\n if (overflowMode !== undefined) {\n const overflowElement = this._getTargetElement();\n if (overflowElement && !hasOverflow(overflowElement)) {\n return;\n }\n }\n\n if (ev.target && portalContainsElement(ev.target as HTMLElement, this._getTargetElement())) {\n // Do not show tooltip when target is inside a portal relative to TooltipHost.\n return;\n }\n\n this._clearDismissTimer();\n this._clearOpenTimer();\n\n if (delay !== TooltipDelay.zero) {\n const delayTime = this._getDelayTime(delay!); // non-null assertion because we set it in `defaultProps`\n\n this._openTimerId = this._async.setTimeout(() => {\n this._toggleTooltip(true);\n }, delayTime);\n } else {\n this._toggleTooltip(true);\n }\n };\n\n // Hide Tooltip\n private _onTooltipMouseLeave = (ev: any): void => {\n const { closeDelay } = this.props;\n\n this._clearDismissTimer();\n this._clearOpenTimer();\n\n if (closeDelay) {\n this._dismissTimerId = this._async.setTimeout(() => {\n this._toggleTooltip(false);\n }, closeDelay);\n } else {\n this._toggleTooltip(false);\n }\n\n if (TooltipHostBase._currentVisibleTooltip === this) {\n TooltipHostBase._currentVisibleTooltip = undefined;\n }\n };\n\n private _onTooltipKeyDown = (ev: React.KeyboardEvent<HTMLElement>): void => {\n if ((ev.which === KeyCodes.escape || ev.ctrlKey) && this.state.isTooltipVisible) {\n this._hideTooltip();\n ev.stopPropagation();\n }\n };\n\n private _clearDismissTimer = (): void => {\n this._async.clearTimeout(this._dismissTimerId);\n };\n\n private _clearOpenTimer = (): void => {\n this._async.clearTimeout(this._openTimerId);\n };\n\n // Hide Tooltip\n private _hideTooltip = (): void => {\n this._clearOpenTimer();\n this._clearDismissTimer();\n this._toggleTooltip(false);\n };\n\n private _toggleTooltip = (isTooltipVisible: boolean): void => {\n if (this.state.isTooltipVisible !== isTooltipVisible) {\n this.setState(\n { isTooltipVisible },\n () => this.props.onTooltipToggle && this.props.onTooltipToggle(isTooltipVisible),\n );\n }\n };\n\n private _getDelayTime = (delay: TooltipDelay): number => {\n switch (delay) {\n case TooltipDelay.medium:\n return 300;\n case TooltipDelay.long:\n return 500;\n default:\n return 0;\n }\n };\n}\n","/**\n * Detects whether an element's content has horizontal overflow\n *\n * @public\n * @param element - Element to check for overflow\n * @returns True if element's content overflows\n */\nexport function hasHorizontalOverflow(element: HTMLElement): boolean {\n return element.clientWidth < element.scrollWidth;\n}\n\n/**\n * Detects whether an element's content has vertical overflow\n *\n * @public\n * @param element - Element to check for overflow\n * @returns True if element's content overflows\n */\nexport function hasVerticalOverflow(element: HTMLElement): boolean {\n return element.clientHeight < element.scrollHeight;\n}\n\n/**\n * Detects whether an element's content has overflow in any direction\n *\n * @public\n * @param element - Element to check for overflow\n * @returns True if element's content overflows\n */\nexport function hasOverflow(element: HTMLElement): boolean {\n return hasHorizontalOverflow(element) || hasVerticalOverflow(element);\n}\n","import { ITooltipHostStyleProps, ITooltipHostStyles } from './TooltipHost.types';\nimport { getGlobalClassNames } from '../../Styling';\n\nconst GlobalClassNames = {\n root: 'ms-TooltipHost',\n ariaPlaceholder: 'ms-TooltipHost-aria-placeholder',\n};\n\nexport const getStyles = (props: ITooltipHostStyleProps): ITooltipHostStyles => {\n const { className, theme } = props;\n const classNames = getGlobalClassNames(GlobalClassNames, theme);\n\n return {\n root: [\n classNames.root,\n {\n display: 'inline',\n },\n className,\n ],\n };\n};\n","import * as React from 'react';\nimport { styled } from '../../Utilities';\nimport { TooltipHostBase } from './TooltipHost.base';\nimport { ITooltipHostProps, ITooltipHostStyleProps, ITooltipHostStyles } from './TooltipHost.types';\nimport { getStyles } from './TooltipHost.styles';\n\nexport const TooltipHost: React.FunctionComponent<ITooltipHostProps> = styled<\n ITooltipHostProps,\n ITooltipHostStyleProps,\n ITooltipHostStyles\n>(TooltipHostBase, getStyles, undefined, {\n scope: 'TooltipHost',\n});\n","import React from 'react';\nvar context = /*#__PURE__*/React.createContext(null);\ncontext.displayName = 'CardContext';\nexport default context;","var toArray = Function.prototype.bind.call(Function.prototype.call, [].slice);\n/**\n * Runs `querySelectorAll` on a given element.\n * \n * @param element the element\n * @param selector the selector\n */\n\nexport default function qsa(element, selector) {\n return toArray(element.querySelectorAll(selector));\n}","import { useMemo } from 'react';\nconst toFnRef = ref => !ref || typeof ref === 'function' ? ref : value => {\n ref.current = value;\n};\nexport function mergeRefs(refA, refB) {\n const a = toFnRef(refA);\n const b = toFnRef(refB);\n return value => {\n if (a) a(value);\n if (b) b(value);\n };\n}\n\n/**\n * Create and returns a single callback ref composed from two other Refs.\n *\n * ```tsx\n * const Button = React.forwardRef((props, ref) => {\n * const [element, attachRef] = useCallbackRef<HTMLButtonElement>();\n * const mergedRef = useMergedRefs(ref, attachRef);\n *\n * return <button ref={mergedRef} {...props}/>\n * })\n * ```\n *\n * @param refA A Callback or mutable Ref\n * @param refB A Callback or mutable Ref\n * @category refs\n */\nfunction useMergedRefs(refA, refB) {\n return useMemo(() => mergeRefs(refA, refB), [refA, refB]);\n}\nexport default useMergedRefs;","import React from 'react';\nvar TabContext = /*#__PURE__*/React.createContext(null);\nexport default TabContext;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"as\", \"onSelect\", \"activeKey\", \"role\", \"onKeyDown\"];\nimport qsa from 'dom-helpers/querySelectorAll';\nimport React, { useContext, useEffect, useRef } from 'react';\nimport useForceUpdate from '@restart/hooks/useForceUpdate';\nimport useMergedRefs from '@restart/hooks/useMergedRefs';\nimport NavContext from './NavContext';\nimport SelectableContext, { makeEventKey } from './SelectableContext';\nimport TabContext from './TabContext';\n\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nvar noop = function noop() {};\n\nvar AbstractNav = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'ul' : _ref$as,\n onSelect = _ref.onSelect,\n activeKey = _ref.activeKey,\n role = _ref.role,\n onKeyDown = _ref.onKeyDown,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n // A ref and forceUpdate for refocus, b/c we only want to trigger when needed\n // and don't want to reset the set in the effect\n var forceUpdate = useForceUpdate();\n var needsRefocusRef = useRef(false);\n var parentOnSelect = useContext(SelectableContext);\n var tabContext = useContext(TabContext);\n var getControlledId, getControllerId;\n\n if (tabContext) {\n role = role || 'tablist';\n activeKey = tabContext.activeKey;\n getControlledId = tabContext.getControlledId;\n getControllerId = tabContext.getControllerId;\n }\n\n var listNode = useRef(null);\n\n var getNextActiveChild = function getNextActiveChild(offset) {\n var currentListNode = listNode.current;\n if (!currentListNode) return null;\n var items = qsa(currentListNode, '[data-rb-event-key]:not(.disabled)');\n var activeChild = currentListNode.querySelector('.active');\n if (!activeChild) return null;\n var index = items.indexOf(activeChild);\n if (index === -1) return null;\n var nextIndex = index + offset;\n if (nextIndex >= items.length) nextIndex = 0;\n if (nextIndex < 0) nextIndex = items.length - 1;\n return items[nextIndex];\n };\n\n var handleSelect = function handleSelect(key, event) {\n if (key == null) return;\n if (onSelect) onSelect(key, event);\n if (parentOnSelect) parentOnSelect(key, event);\n };\n\n var handleKeyDown = function handleKeyDown(event) {\n if (onKeyDown) onKeyDown(event);\n var nextActiveChild;\n\n switch (event.key) {\n case 'ArrowLeft':\n case 'ArrowUp':\n nextActiveChild = getNextActiveChild(-1);\n break;\n\n case 'ArrowRight':\n case 'ArrowDown':\n nextActiveChild = getNextActiveChild(1);\n break;\n\n default:\n return;\n }\n\n if (!nextActiveChild) return;\n event.preventDefault();\n handleSelect(nextActiveChild.dataset.rbEventKey, event);\n needsRefocusRef.current = true;\n forceUpdate();\n };\n\n useEffect(function () {\n if (listNode.current && needsRefocusRef.current) {\n var activeChild = listNode.current.querySelector('[data-rb-event-key].active');\n if (activeChild) activeChild.focus();\n }\n\n needsRefocusRef.current = false;\n });\n var mergedRef = useMergedRefs(ref, listNode);\n return /*#__PURE__*/React.createElement(SelectableContext.Provider, {\n value: handleSelect\n }, /*#__PURE__*/React.createElement(NavContext.Provider, {\n value: {\n role: role,\n // used by NavLink to determine it's role\n activeKey: makeEventKey(activeKey),\n getControlledId: getControlledId || noop,\n getControllerId: getControllerId || noop\n }\n }, /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n onKeyDown: handleKeyDown,\n ref: mergedRef,\n role: role\n }))));\n});\nexport default AbstractNav;","import { useReducer } from 'react';\n\n/**\n * Returns a function that triggers a component update. the hook equivalent to\n * `this.forceUpdate()` in a class component. In most cases using a state value directly\n * is preferable but may be required in some advanced usages of refs for interop or\n * when direct DOM manipulation is required.\n *\n * ```ts\n * const forceUpdate = useForceUpdate();\n *\n * const updateOnClick = useCallback(() => {\n * forceUpdate()\n * }, [forceUpdate])\n *\n * return <button type=\"button\" onClick={updateOnClick}>Hi there</button>\n * ```\n */\nexport default function useForceUpdate() {\n // The toggling state value is designed to defeat React optimizations for skipping\n // updates when they are strictly equal to the last state value\n const [, dispatch] = useReducer(state => !state, false);\n return dispatch;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"className\", \"children\", \"as\"];\nimport classNames from 'classnames';\nimport React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar NavItem = /*#__PURE__*/React.forwardRef( // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\nfunction (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n className = _ref.className,\n children = _ref.children,\n _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'div' : _ref$as,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n bsPrefix = useBootstrapPrefix(bsPrefix, 'nav-item');\n return /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n ref: ref,\n className: classNames(className, bsPrefix)\n }), children);\n});\nNavItem.displayName = 'NavItem';\nexport default NavItem;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"as\", \"bsPrefix\", \"variant\", \"fill\", \"justify\", \"navbar\", \"navbarScroll\", \"className\", \"children\", \"activeKey\"];\nimport classNames from 'classnames';\nimport all from 'prop-types-extra/lib/all';\nimport React, { useContext } from 'react';\nimport { useUncontrolled } from 'uncontrollable';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport NavbarContext from './NavbarContext';\nimport CardContext from './CardContext';\nimport AbstractNav from './AbstractNav';\nimport NavItem from './NavItem';\nimport NavLink from './NavLink';\nvar defaultProps = {\n justify: false,\n fill: false\n};\nvar Nav = /*#__PURE__*/React.forwardRef(function (uncontrolledProps, ref) {\n var _classNames;\n\n var _useUncontrolled = useUncontrolled(uncontrolledProps, {\n activeKey: 'onSelect'\n }),\n _useUncontrolled$as = _useUncontrolled.as,\n as = _useUncontrolled$as === void 0 ? 'div' : _useUncontrolled$as,\n initialBsPrefix = _useUncontrolled.bsPrefix,\n variant = _useUncontrolled.variant,\n fill = _useUncontrolled.fill,\n justify = _useUncontrolled.justify,\n navbar = _useUncontrolled.navbar,\n navbarScroll = _useUncontrolled.navbarScroll,\n className = _useUncontrolled.className,\n children = _useUncontrolled.children,\n activeKey = _useUncontrolled.activeKey,\n props = _objectWithoutPropertiesLoose(_useUncontrolled, _excluded);\n\n var bsPrefix = useBootstrapPrefix(initialBsPrefix, 'nav');\n var navbarBsPrefix;\n var cardHeaderBsPrefix;\n var isNavbar = false;\n var navbarContext = useContext(NavbarContext);\n var cardContext = useContext(CardContext);\n\n if (navbarContext) {\n navbarBsPrefix = navbarContext.bsPrefix;\n isNavbar = navbar == null ? true : navbar;\n } else if (cardContext) {\n cardHeaderBsPrefix = cardContext.cardHeaderBsPrefix;\n }\n\n return /*#__PURE__*/React.createElement(AbstractNav, _extends({\n as: as,\n ref: ref,\n activeKey: activeKey,\n className: classNames(className, (_classNames = {}, _classNames[bsPrefix] = !isNavbar, _classNames[navbarBsPrefix + \"-nav\"] = isNavbar, _classNames[navbarBsPrefix + \"-nav-scroll\"] = isNavbar && navbarScroll, _classNames[cardHeaderBsPrefix + \"-\" + variant] = !!cardHeaderBsPrefix, _classNames[bsPrefix + \"-\" + variant] = !!variant, _classNames[bsPrefix + \"-fill\"] = fill, _classNames[bsPrefix + \"-justified\"] = justify, _classNames))\n }, props), children);\n});\nNav.displayName = 'Nav';\nNav.defaultProps = defaultProps;\nNav.Item = NavItem;\nNav.Link = NavLink;\nexport default Nav;","/**\n * Rectangle helper class.\n *\n * @public\n * {@docCategory Rectangle}\n */\nexport class Rectangle {\n public top: number;\n public bottom: number;\n public left: number;\n public right: number;\n\n constructor(left: number = 0, right: number = 0, top: number = 0, bottom: number = 0) {\n this.top = top;\n this.bottom = bottom;\n this.left = left;\n this.right = right;\n }\n\n /**\n * Calculated automatically by subtracting the right from left\n */\n public get width(): number {\n return this.right - this.left;\n }\n\n /**\n * Calculated automatically by subtracting the bottom from top.\n */\n public get height(): number {\n return this.bottom - this.top;\n }\n\n /**\n * Tests if another rect is approximately equal to this rect (within 4 decimal places.)\n */\n public equals(rect: Rectangle): boolean {\n // Fixing to 4 decimal places because it allows enough precision and will handle cases when something\n // should be rounded, like .999999 should round to 1.\n return (\n parseFloat(this.top.toFixed(4)) === parseFloat(rect.top.toFixed(4)) &&\n parseFloat(this.bottom.toFixed(4)) === parseFloat(rect.bottom.toFixed(4)) &&\n parseFloat(this.left.toFixed(4)) === parseFloat(rect.left.toFixed(4)) &&\n parseFloat(this.right.toFixed(4)) === parseFloat(rect.right.toFixed(4))\n );\n }\n}\n","import { DirectionalHint } from '../../common/DirectionalHint';\nimport { getScrollbarWidth, getRTL, IRectangle } from '../../Utilities';\nimport {\n IPositionDirectionalHintData,\n IPositionedData,\n ICalloutPositionedInfo,\n ICalloutBeakPositionedInfo,\n IPositionProps,\n ICalloutPositionProps,\n RectangleEdge,\n IWindowWithSegments,\n} from './positioning.types';\nimport { Point, Rectangle } from '../../Utilities';\n\nfunction _createPositionData(\n targetEdge: RectangleEdge,\n alignmentEdge?: RectangleEdge,\n isAuto?: boolean,\n): IPositionDirectionalHintData {\n return {\n targetEdge: targetEdge,\n alignmentEdge: alignmentEdge,\n isAuto: isAuto,\n };\n}\n\n// Currently the beakPercent is set to 50 for all positions meaning that it should tend to the center of the target\nconst DirectionalDictionary: { [key: number]: IPositionDirectionalHintData } = {\n [DirectionalHint.topLeftEdge]: _createPositionData(RectangleEdge.top, RectangleEdge.left),\n [DirectionalHint.topCenter]: _createPositionData(RectangleEdge.top),\n [DirectionalHint.topRightEdge]: _createPositionData(RectangleEdge.top, RectangleEdge.right),\n [DirectionalHint.topAutoEdge]: _createPositionData(RectangleEdge.top, undefined, true),\n [DirectionalHint.bottomLeftEdge]: _createPositionData(RectangleEdge.bottom, RectangleEdge.left),\n [DirectionalHint.bottomCenter]: _createPositionData(RectangleEdge.bottom),\n [DirectionalHint.bottomRightEdge]: _createPositionData(RectangleEdge.bottom, RectangleEdge.right),\n [DirectionalHint.bottomAutoEdge]: _createPositionData(RectangleEdge.bottom, undefined, true),\n [DirectionalHint.leftTopEdge]: _createPositionData(RectangleEdge.left, RectangleEdge.top),\n [DirectionalHint.leftCenter]: _createPositionData(RectangleEdge.left),\n [DirectionalHint.leftBottomEdge]: _createPositionData(RectangleEdge.left, RectangleEdge.bottom),\n [DirectionalHint.rightTopEdge]: _createPositionData(RectangleEdge.right, RectangleEdge.top),\n [DirectionalHint.rightCenter]: _createPositionData(RectangleEdge.right),\n [DirectionalHint.rightBottomEdge]: _createPositionData(RectangleEdge.right, RectangleEdge.bottom),\n};\n\n/**\n * Do not call methods from this directly, use either positionCallout or positionElement or make another function that\n * utilizes them.\n * START Private functions and interfaces\n */\n\nexport interface IElementPosition {\n elementRectangle: Rectangle;\n targetEdge: RectangleEdge;\n alignmentEdge: RectangleEdge | undefined;\n}\n\nexport interface IElementPositionInfo extends IElementPosition {\n targetRectangle: Rectangle;\n}\n\ntype PartialIRectangle = Partial<IRectangle>;\n\ninterface IPartialIRectangle extends PartialIRectangle {\n [key: string]: number | undefined;\n}\n\nfunction _isRectangleWithinBounds(rect: Rectangle, boundingRect: Rectangle): boolean {\n if (rect.top < boundingRect.top) {\n return false;\n }\n if (rect.bottom > boundingRect.bottom) {\n return false;\n }\n if (rect.left < boundingRect.left) {\n return false;\n }\n if (rect.right > boundingRect.right) {\n return false;\n }\n\n return true;\n}\n\n/**\n * Gets all of the edges of a rectangle that are outside of the given bounds.\n * If there are no out of bounds edges it returns an empty array.\n */\nfunction _getOutOfBoundsEdges(rect: Rectangle, boundingRect: Rectangle): RectangleEdge[] {\n const outOfBounds: RectangleEdge[] = [];\n\n if (rect.top < boundingRect.top) {\n outOfBounds.push(RectangleEdge.top);\n }\n if (rect.bottom > boundingRect.bottom) {\n outOfBounds.push(RectangleEdge.bottom);\n }\n if (rect.left < boundingRect.left) {\n outOfBounds.push(RectangleEdge.left);\n }\n if (rect.right > boundingRect.right) {\n outOfBounds.push(RectangleEdge.right);\n }\n\n return outOfBounds;\n}\n\nfunction _getEdgeValue(rect: Rectangle, edge: RectangleEdge): number {\n return (rect as any)[RectangleEdge[edge]] as number;\n}\n\nfunction _setEdgeValue(rect: Rectangle, edge: RectangleEdge, value: number) {\n (rect as any)[RectangleEdge[edge]] = value;\n return rect;\n}\n\n/**\n * Returns the middle value of an edge. Only returns 1 value rather than xy coordinates as\n * the itself already contains the other coordinate.\n * For instance, a bottom edge's current value is it's y coordinate, so the number returned is the x.\n */\nfunction _getCenterValue(rect: Rectangle, edge: RectangleEdge): number {\n const edges = _getFlankingEdges(edge);\n return (_getEdgeValue(rect, edges.positiveEdge) + _getEdgeValue(rect, edges.negativeEdge)) / 2;\n}\n\n/**\n * Flips the value depending on the edge.\n * If the edge is a \"positive\" edge, Top or Left, then the value should stay as it is.\n * If the edge is a \"negative\" edge, Bottom or Right, then the value should be flipped.\n * This is to account for the fact that the coordinates are effectively reveserved in certain cases for the\n * \"negative\" edges.\n *\n * For example, when testing to see if a bottom edge 1 is within the bounds of another bottom edge 2:\n * If edge 1 is greater than edge 2 then it is out of bounds. This is reversed for top edge 1 and top edge 2.\n * If top edge 1 is less than edge 2 then it is out of bounds.\n */\nfunction _getRelativeEdgeValue(edge: RectangleEdge, value: number): number {\n if (edge > 0) {\n return value;\n } else {\n return value * -1;\n }\n}\n\nfunction _getRelativeRectEdgeValue(edge: RectangleEdge, rect: Rectangle): number {\n return _getRelativeEdgeValue(edge, _getEdgeValue(rect, edge));\n}\n\nfunction _getRelativeEdgeDifference(rect: Rectangle, hostRect: Rectangle, edge: RectangleEdge): number {\n const edgeDifference = _getEdgeValue(rect, edge) - _getEdgeValue(hostRect, edge);\n return _getRelativeEdgeValue(edge, edgeDifference);\n}\n\n/**\n * Moves the edge of a rectangle to the value given. It only moves the edge in a linear direction based on that edge.\n * For example, if it's a bottom edge it will only change y coordinates.\n */\nfunction _moveEdge(rect: Rectangle, edge: RectangleEdge, newValue: number): Rectangle {\n const difference = _getEdgeValue(rect, edge) - newValue;\n rect = _setEdgeValue(rect, edge, newValue);\n rect = _setEdgeValue(rect, edge * -1, _getEdgeValue(rect, edge * -1) - difference);\n return rect;\n}\n\n/**\n * Aligns the edge on the passed in rect to the target. If there is a gap then it will have that space between the two.\n */\nfunction _alignEdges(rect: Rectangle, target: Rectangle, edge: RectangleEdge, gap: number = 0): Rectangle {\n return _moveEdge(rect, edge, _getEdgeValue(target, edge) + _getRelativeEdgeValue(edge, gap));\n}\n\n/**\n * Aligns the targetEdge on the passed in target to the rects corresponding opposite edge.\n * For instance if targetEdge is bottom, then the rects top will be moved to match it.\n */\nfunction _alignOppositeEdges(\n rect: Rectangle,\n target: Rectangle,\n targetEdge: RectangleEdge,\n gap: number = 0,\n): Rectangle {\n const oppositeEdge = targetEdge * -1;\n const adjustedGap = _getRelativeEdgeValue(oppositeEdge, gap);\n return _moveEdge(rect, targetEdge * -1, _getEdgeValue(target, targetEdge) + adjustedGap);\n}\n\n/**\n * Tests to see if the given edge is within the bounds of the given rectangle.\n */\nfunction _isEdgeInBounds(rect: Rectangle, bounds: Rectangle, edge: RectangleEdge): boolean {\n const adjustedRectValue = _getRelativeRectEdgeValue(edge, rect);\n return adjustedRectValue > _getRelativeRectEdgeValue(edge, bounds);\n}\n\n/**\n * Attempts to move the rectangle through various sides of the target to find a place to fit.\n * If no fit is found, the original position should be returned.\n */\nfunction _flipToFit(\n rect: Rectangle,\n target: Rectangle,\n bounding: Rectangle,\n positionData: IPositionDirectionalHintData,\n gap: number = 0,\n): IElementPosition {\n const directions: RectangleEdge[] = [\n RectangleEdge.left,\n RectangleEdge.right,\n RectangleEdge.bottom,\n RectangleEdge.top,\n ];\n // In RTL page, RectangleEdge.right has a higher priority than RectangleEdge.left, so the order should be updated.\n if (getRTL()) {\n directions[0] *= -1;\n directions[1] *= -1;\n }\n let currentEstimate = rect;\n let currentEdge = positionData.targetEdge;\n let currentAlignment = positionData.alignmentEdge;\n // Keep switching sides until one is found with enough space.\n // If all sides don't fit then return the unmodified element.\n for (let i = 0; i < 4; i++) {\n if (!_isEdgeInBounds(currentEstimate, bounding, currentEdge)) {\n directions.splice(directions.indexOf(currentEdge), 1);\n if (directions.length > 0) {\n if (directions.indexOf(currentEdge * -1) > -1) {\n currentEdge = currentEdge * -1;\n } else {\n currentAlignment = currentEdge;\n currentEdge = directions.slice(-1)[0];\n }\n currentEstimate = _estimatePosition(\n rect,\n target,\n { targetEdge: currentEdge, alignmentEdge: currentAlignment },\n gap,\n );\n }\n } else {\n return {\n elementRectangle: currentEstimate,\n targetEdge: currentEdge,\n alignmentEdge: currentAlignment,\n };\n }\n }\n return {\n elementRectangle: rect,\n targetEdge: positionData.targetEdge,\n alignmentEdge: positionData.alignmentEdge,\n };\n}\n\n/**\n * Flips only the alignment edge of an element rectangle. This is used instead of nudging the alignment edges\n * into position, when alignTargetEdge is specified.\n */\nfunction _flipAlignmentEdge(\n elementEstimate: IElementPosition,\n target: Rectangle,\n gap: number,\n coverTarget?: boolean,\n): IElementPosition {\n const { alignmentEdge, targetEdge, elementRectangle } = elementEstimate;\n const oppositeEdge = alignmentEdge! * -1;\n const newEstimate = _estimatePosition(\n elementRectangle,\n target,\n { targetEdge: targetEdge, alignmentEdge: oppositeEdge },\n gap,\n coverTarget,\n );\n\n return {\n elementRectangle: newEstimate,\n targetEdge: targetEdge,\n alignmentEdge: oppositeEdge,\n };\n}\n\n/**\n * Adjusts a element rectangle to fit within the bounds given. If directionalHintFixed or covertarget is passed in\n * then the element will not flip sides on the target. They will, however, be nudged to fit within the bounds given.\n */\nfunction _adjustFitWithinBounds(\n element: Rectangle,\n target: Rectangle,\n bounding: Rectangle,\n positionData: IPositionDirectionalHintData,\n gap: number = 0,\n directionalHintFixed?: boolean,\n coverTarget?: boolean,\n): IElementPosition {\n const { alignmentEdge, alignTargetEdge } = positionData;\n let elementEstimate: IElementPosition = {\n elementRectangle: element,\n targetEdge: positionData.targetEdge,\n alignmentEdge: alignmentEdge,\n };\n\n if (!directionalHintFixed && !coverTarget) {\n elementEstimate = _flipToFit(element, target, bounding, positionData, gap);\n }\n const outOfBounds = _getOutOfBoundsEdges(element, bounding);\n\n if (alignTargetEdge) {\n // The edge opposite to the alignment edge might be out of bounds.\n // Flip alignment to see if we can get it within bounds.\n if (elementEstimate.alignmentEdge && outOfBounds.indexOf(elementEstimate.alignmentEdge * -1) > -1) {\n const flippedElementEstimate = _flipAlignmentEdge(elementEstimate, target, gap, coverTarget);\n if (_isRectangleWithinBounds(flippedElementEstimate.elementRectangle, bounding)) {\n return flippedElementEstimate;\n } else {\n // If the flipped elements edges are still out of bounds, try nudging it.\n elementEstimate = _alignOutOfBoundsEdges(\n _getOutOfBoundsEdges(flippedElementEstimate.elementRectangle, bounding),\n elementEstimate,\n bounding,\n );\n }\n }\n } else {\n elementEstimate = _alignOutOfBoundsEdges(outOfBounds, elementEstimate, bounding);\n }\n\n return elementEstimate;\n}\n\n/**\n * Iterates through a list of out of bounds edges and tries to nudge and align them.\n * @param outOfBoundsEdges - Array of edges that are out of bounds\n * @param elementEstimate - The current element positioning estimate\n * @param bounding - The current bounds\n */\nfunction _alignOutOfBoundsEdges(\n outOfBoundsEdges: RectangleEdge[],\n elementEstimate: IElementPosition,\n bounding: Rectangle,\n) {\n for (const direction of outOfBoundsEdges) {\n elementEstimate.elementRectangle = _alignEdges(elementEstimate.elementRectangle, bounding, direction);\n }\n\n return elementEstimate;\n}\n\n/**\n * Moves the middle point on an edge to the point given.\n * Only moves in one direction. For instance if a bottom edge is passed in, then\n * the bottom edge will be moved in the x axis to match the point.\n */\nfunction _centerEdgeToPoint(rect: Rectangle, edge: RectangleEdge, point: number): Rectangle {\n const { positiveEdge } = _getFlankingEdges(edge);\n const elementMiddle = _getCenterValue(rect, edge);\n const distanceToMiddle = elementMiddle - _getEdgeValue(rect, positiveEdge);\n return _moveEdge(rect, positiveEdge, point - distanceToMiddle);\n}\n\n/**\n * Moves the element rectangle to be appropriately positioned relative to a given target.\n * Does not flip or adjust the element.\n */\nfunction _estimatePosition(\n elementToPosition: Rectangle,\n target: Rectangle,\n positionData: IPositionDirectionalHintData,\n gap: number = 0,\n coverTarget?: boolean,\n): Rectangle {\n let estimatedElementPosition: Rectangle;\n const { alignmentEdge, targetEdge } = positionData;\n const elementEdge = coverTarget ? targetEdge : targetEdge * -1;\n estimatedElementPosition = coverTarget\n ? _alignEdges(elementToPosition, target, targetEdge, gap)\n : _alignOppositeEdges(elementToPosition, target, targetEdge, gap);\n // if no alignment edge is provided it's supposed to be centered.\n if (!alignmentEdge) {\n const targetMiddlePoint = _getCenterValue(target, targetEdge);\n estimatedElementPosition = _centerEdgeToPoint(estimatedElementPosition, elementEdge, targetMiddlePoint);\n } else {\n estimatedElementPosition = _alignEdges(estimatedElementPosition, target, alignmentEdge);\n }\n\n return estimatedElementPosition;\n}\n\n/**\n * Returns the non-opposite edges of the target edge.\n * For instance if bottom is passed in then left and right will be returned.\n */\nfunction _getFlankingEdges(edge: RectangleEdge): { positiveEdge: RectangleEdge; negativeEdge: RectangleEdge } {\n if (edge === RectangleEdge.top || edge === RectangleEdge.bottom) {\n return {\n positiveEdge: RectangleEdge.left,\n negativeEdge: RectangleEdge.right,\n };\n } else {\n return {\n positiveEdge: RectangleEdge.top,\n negativeEdge: RectangleEdge.bottom,\n };\n }\n}\n\n/**\n * Retrieve the final value for the return edge of elementRectangle. If the elementRectangle is closer to one side\n * of the bounds versus the other, the return edge is flipped to grow inward.\n */\nfunction _finalizeReturnEdge(\n elementRectangle: Rectangle,\n returnEdge: RectangleEdge,\n bounds?: Rectangle,\n): RectangleEdge {\n if (\n bounds &&\n Math.abs(_getRelativeEdgeDifference(elementRectangle, bounds, returnEdge)) >\n Math.abs(_getRelativeEdgeDifference(elementRectangle, bounds, returnEdge * -1))\n ) {\n return returnEdge * -1;\n }\n\n return returnEdge;\n}\n\n/**\n * Finalizes the element positon based on the hostElement. Only returns the\n * rectangle values to position such that they are anchored to the target.\n * This helps prevent resizing from looking very strange.\n * For instance, if the target edge is top and aligned with the left side then\n * the bottom and left values are returned so as the callou shrinks it shrinks towards that corner.\n */\nfunction _finalizeElementPosition(\n elementRectangle: Rectangle,\n hostElement: HTMLElement,\n targetEdge: RectangleEdge,\n bounds?: Rectangle,\n alignmentEdge?: RectangleEdge,\n coverTarget?: boolean,\n doNotFinalizeReturnEdge?: boolean,\n): IPartialIRectangle {\n const returnValue: IPartialIRectangle = {};\n\n const hostRect: Rectangle = _getRectangleFromElement(hostElement);\n const elementEdge = coverTarget ? targetEdge : targetEdge * -1;\n const elementEdgeString = RectangleEdge[elementEdge];\n let returnEdge = alignmentEdge ? alignmentEdge : _getFlankingEdges(targetEdge).positiveEdge;\n if (!doNotFinalizeReturnEdge) {\n returnEdge = _finalizeReturnEdge(elementRectangle, returnEdge, bounds);\n }\n\n returnValue[elementEdgeString] = _getRelativeEdgeDifference(elementRectangle, hostRect, elementEdge);\n returnValue[RectangleEdge[returnEdge]] = _getRelativeEdgeDifference(elementRectangle, hostRect, returnEdge);\n\n return returnValue;\n}\n\n// Since the beak is rotated 45 degrees the actual height/width is the length of the diagonal.\n// We still want to position the beak based on it's midpoint which does not change. It will\n// be at (beakwidth / 2, beakwidth / 2)\nfunction _calculateActualBeakWidthInPixels(beakWidth: number): number {\n return Math.sqrt(beakWidth * beakWidth * 2);\n}\n\n/**\n * Returns the appropriate IPositionData based on the props altered for RTL.\n * If directionalHintForRTL is passed in that is used if the page is RTL.\n * If directionalHint is specified, no directionalHintForRTL is available, and the page is RTL, the hint will be\n * flipped (e.g. bottomLeftEdge would become bottomRightEdge).\n *\n * If there is no directionalHint passed in, bottomAutoEdge is chosen automatically.\n */\nfunction _getPositionData(\n directionalHint: DirectionalHint = DirectionalHint.bottomAutoEdge,\n directionalHintForRTL?: DirectionalHint,\n previousPositions?: IPositionDirectionalHintData,\n): IPositionDirectionalHintData {\n if (previousPositions) {\n return {\n alignmentEdge: previousPositions.alignmentEdge,\n isAuto: previousPositions.isAuto,\n targetEdge: previousPositions.targetEdge,\n };\n }\n const positionInformation: IPositionDirectionalHintData = { ...DirectionalDictionary[directionalHint] };\n if (getRTL()) {\n // If alignment edge exists and that alignment edge is -2 or 2, right or left, then flip it.\n if (positionInformation.alignmentEdge && positionInformation.alignmentEdge % 2 === 0) {\n positionInformation.alignmentEdge = positionInformation.alignmentEdge * -1;\n }\n\n return directionalHintForRTL !== undefined ? DirectionalDictionary[directionalHintForRTL] : positionInformation;\n }\n return positionInformation;\n}\n\n/**\n * Get's the alignment data for the given information. This only really matters if the positioning is Auto.\n * If it is auto then the alignmentEdge should be chosen based on the target edge's position relative to\n * the center of the page.\n */\nfunction _getAlignmentData(\n positionData: IPositionDirectionalHintData,\n target: Rectangle,\n boundingRect: Rectangle,\n coverTarget?: boolean,\n alignTargetEdge?: boolean,\n): IPositionDirectionalHintData {\n if (positionData.isAuto) {\n positionData.alignmentEdge = getClosestEdge(positionData.targetEdge, target, boundingRect);\n }\n\n positionData.alignTargetEdge = alignTargetEdge;\n return positionData;\n}\n\nfunction getClosestEdge(targetEdge: RectangleEdge, target: Rectangle, boundingRect: Rectangle): RectangleEdge {\n const targetCenter: number = _getCenterValue(target, targetEdge);\n const boundingCenter: number = _getCenterValue(boundingRect, targetEdge);\n const { positiveEdge, negativeEdge } = _getFlankingEdges(targetEdge);\n if (targetCenter <= boundingCenter) {\n return positiveEdge;\n } else {\n return negativeEdge;\n }\n}\n\nfunction _positionElementWithinBounds(\n elementToPosition: Rectangle,\n target: Rectangle,\n bounding: Rectangle,\n positionData: IPositionDirectionalHintData,\n gap: number,\n directionalHintFixed?: boolean,\n coverTarget?: boolean,\n): IElementPosition {\n const estimatedElementPosition: Rectangle = _estimatePosition(\n elementToPosition,\n target,\n positionData,\n gap,\n coverTarget,\n );\n if (_isRectangleWithinBounds(estimatedElementPosition, bounding)) {\n return {\n elementRectangle: estimatedElementPosition,\n targetEdge: positionData.targetEdge,\n alignmentEdge: positionData.alignmentEdge,\n };\n } else {\n return _adjustFitWithinBounds(\n elementToPosition,\n target,\n bounding,\n positionData,\n gap,\n directionalHintFixed,\n coverTarget,\n );\n }\n}\n\nfunction _finalizeBeakPosition(\n elementPosition: IElementPosition,\n positionedBeak: Rectangle,\n bounds?: Rectangle,\n): ICalloutBeakPositionedInfo {\n const targetEdge = elementPosition.targetEdge * -1;\n // The \"host\" element that we will use to help position the beak.\n const actualElement = new Rectangle(\n 0,\n elementPosition.elementRectangle.width,\n 0,\n elementPosition.elementRectangle.height,\n );\n const returnValue: IPartialIRectangle = {};\n const returnEdge = _finalizeReturnEdge(\n elementPosition.elementRectangle,\n elementPosition.alignmentEdge ? elementPosition.alignmentEdge : _getFlankingEdges(targetEdge).positiveEdge,\n bounds,\n );\n\n returnValue[RectangleEdge[targetEdge]] = _getEdgeValue(positionedBeak, targetEdge);\n returnValue[RectangleEdge[returnEdge]] = _getRelativeEdgeDifference(positionedBeak, actualElement, returnEdge);\n\n return {\n elementPosition: { ...returnValue },\n closestEdge: getClosestEdge(elementPosition.targetEdge, positionedBeak, actualElement),\n targetEdge: targetEdge,\n };\n}\n\nfunction _positionBeak(beakWidth: number, elementPosition: IElementPositionInfo): Rectangle {\n const target = elementPosition.targetRectangle;\n /**\n * Note about beak positioning: The actual beak width only matters for getting the gap between the callout and\n * target, it does not impact the beak placement within the callout. For example example, if the beakWidth is 8,\n * then the actual beakWidth is sqrroot(8^2 + 8^2) = 11.31x11.31. So the callout will need to be an extra 3 pixels\n * away from its target. While the beak is being positioned in the callout it still acts as though it were 8x8.\n */\n const { positiveEdge, negativeEdge } = _getFlankingEdges(elementPosition.targetEdge);\n const beakTargetPoint = _getCenterValue(target, elementPosition.targetEdge);\n const elementBounds = new Rectangle(\n beakWidth / 2,\n elementPosition.elementRectangle.width - beakWidth / 2,\n beakWidth / 2,\n elementPosition.elementRectangle.height - beakWidth / 2,\n );\n\n let beakPosition: Rectangle = new Rectangle(0, beakWidth, 0, beakWidth);\n\n beakPosition = _moveEdge(beakPosition, elementPosition.targetEdge * -1, -beakWidth / 2);\n\n beakPosition = _centerEdgeToPoint(\n beakPosition,\n elementPosition.targetEdge * -1,\n beakTargetPoint - _getRelativeRectEdgeValue(positiveEdge, elementPosition.elementRectangle),\n );\n\n if (!_isEdgeInBounds(beakPosition, elementBounds, positiveEdge)) {\n beakPosition = _alignEdges(beakPosition, elementBounds, positiveEdge);\n } else if (!_isEdgeInBounds(beakPosition, elementBounds, negativeEdge)) {\n beakPosition = _alignEdges(beakPosition, elementBounds, negativeEdge);\n }\n\n return beakPosition;\n}\n\nfunction _getRectangleFromElement(element: Element): Rectangle {\n const clientRect: ClientRect = element.getBoundingClientRect();\n\n return new Rectangle(clientRect.left, clientRect.right, clientRect.top, clientRect.bottom);\n}\n\nfunction _getRectangleFromIRect(rect: IRectangle): Rectangle {\n return new Rectangle(rect.left, rect.right, rect.top, rect.bottom);\n}\n\nfunction _getTargetRect(bounds: Rectangle, target: Element | MouseEvent | Point | Rectangle | undefined): Rectangle {\n let targetRectangle: Rectangle;\n if (target) {\n // eslint-disable-next-line no-extra-boolean-cast\n if (!!(target as MouseEvent).preventDefault) {\n const ev = target as MouseEvent;\n targetRectangle = new Rectangle(ev.clientX, ev.clientX, ev.clientY, ev.clientY);\n // eslint-disable-next-line no-extra-boolean-cast\n } else if (!!(target as Element).getBoundingClientRect) {\n targetRectangle = _getRectangleFromElement(target as Element);\n // HTMLImgElements can have x and y values. The check for it being a point must go last.\n } else {\n const rectOrPoint: Point & Rectangle = target as Point & Rectangle;\n // eslint-disable-next-line deprecation/deprecation\n const left = rectOrPoint.left || rectOrPoint.x;\n // eslint-disable-next-line deprecation/deprecation\n const top = rectOrPoint.top || rectOrPoint.y;\n const right = rectOrPoint.right || left;\n const bottom = rectOrPoint.bottom || top;\n targetRectangle = new Rectangle(left, right, top, bottom);\n }\n\n if (!_isRectangleWithinBounds(targetRectangle, bounds)) {\n const outOfBounds: RectangleEdge[] = _getOutOfBoundsEdges(targetRectangle, bounds);\n\n for (const direction of outOfBounds) {\n (targetRectangle as any)[RectangleEdge[direction]] = (bounds as any)[RectangleEdge[direction]];\n }\n }\n } else {\n targetRectangle = new Rectangle(0, 0, 0, 0);\n }\n\n return targetRectangle;\n}\n\n/**\n * If max height is less than zero it returns the bounds height instead.\n */\nfunction _getMaxHeightFromTargetRectangle(\n targetRectangle: Rectangle,\n targetEdge: DirectionalHint,\n gapSpace: number,\n bounds: Rectangle,\n coverTarget?: boolean,\n) {\n let maxHeight = 0;\n const directionalHint = DirectionalDictionary[targetEdge];\n\n // If cover target is set, then the max height should be calculated using the opposite of the target edge since\n // that's the direction that the callout will expand in.\n // For instance, if the directionalhint is bottomLeftEdge then the callout will position so it's bottom edge\n // is aligned with the bottom of the target and expand up towards the top of the screen and the calculated max height\n // is (bottom of target) - (top of screen) - gapSpace.\n const target = coverTarget ? directionalHint.targetEdge * -1 : directionalHint.targetEdge;\n\n if (target === RectangleEdge.top) {\n maxHeight = _getEdgeValue(targetRectangle, directionalHint.targetEdge) - bounds.top - gapSpace;\n } else if (target === RectangleEdge.bottom) {\n maxHeight = bounds.bottom - _getEdgeValue(targetRectangle, directionalHint.targetEdge) - gapSpace;\n } else {\n maxHeight = bounds.bottom - targetRectangle.top - gapSpace;\n }\n\n return maxHeight > 0 ? maxHeight : bounds.height;\n}\n\nfunction _positionElementRelative(\n props: IPositionProps,\n elementToPosition: HTMLElement,\n boundingRect: Rectangle,\n previousPositions?: IPositionedData,\n): IElementPositionInfo {\n const gap: number = props.gapSpace ? props.gapSpace : 0;\n const targetRect: Rectangle = _getTargetRect(boundingRect, props.target);\n const positionData: IPositionDirectionalHintData = _getAlignmentData(\n _getPositionData(props.directionalHint, props.directionalHintForRTL, previousPositions)!,\n targetRect,\n boundingRect,\n props.coverTarget,\n props.alignTargetEdge,\n );\n const positionedElement: IElementPosition = _positionElementWithinBounds(\n _getRectangleFromElement(elementToPosition),\n targetRect,\n boundingRect,\n positionData,\n gap,\n props.directionalHintFixed,\n props.coverTarget,\n );\n return { ...positionedElement, targetRectangle: targetRect };\n}\n\nfunction _finalizePositionData(\n positionedElement: IElementPosition,\n hostElement: HTMLElement,\n bounds?: Rectangle,\n coverTarget?: boolean,\n doNotFinalizeReturnEdge?: boolean,\n): IPositionedData {\n const finalizedElement: IPartialIRectangle = _finalizeElementPosition(\n positionedElement.elementRectangle,\n hostElement,\n positionedElement.targetEdge,\n bounds,\n positionedElement.alignmentEdge,\n coverTarget,\n doNotFinalizeReturnEdge,\n );\n return {\n elementPosition: finalizedElement,\n targetEdge: positionedElement.targetEdge,\n alignmentEdge: positionedElement.alignmentEdge,\n };\n}\n\nfunction _positionElement(\n props: IPositionProps,\n hostElement: HTMLElement,\n elementToPosition: HTMLElement,\n previousPositions?: IPositionedData,\n): IPositionedData {\n const boundingRect: Rectangle = props.bounds\n ? _getRectangleFromIRect(props.bounds)\n : new Rectangle(0, window.innerWidth - getScrollbarWidth(), 0, window.innerHeight);\n const positionedElement: IElementPosition = _positionElementRelative(\n props,\n elementToPosition,\n boundingRect,\n previousPositions,\n );\n return _finalizePositionData(positionedElement, hostElement, boundingRect, props.coverTarget);\n}\n\nfunction _positionCallout(\n props: ICalloutPositionProps,\n hostElement: HTMLElement,\n callout: HTMLElement,\n previousPositions?: ICalloutPositionedInfo,\n doNotFinalizeReturnEdge?: boolean,\n): ICalloutPositionedInfo {\n const beakWidth: number = props.isBeakVisible ? props.beakWidth || 0 : 0;\n const gap: number = _calculateActualBeakWidthInPixels(beakWidth) / 2 + (props.gapSpace ? props.gapSpace : 0);\n const positionProps: IPositionProps = props;\n positionProps.gapSpace = gap;\n const boundingRect: Rectangle = props.bounds\n ? _getRectangleFromIRect(props.bounds)\n : new Rectangle(0, window.innerWidth - getScrollbarWidth(), 0, window.innerHeight);\n const positionedElement: IElementPositionInfo = _positionElementRelative(\n positionProps,\n callout,\n boundingRect,\n previousPositions,\n );\n const beakPositioned: Rectangle = _positionBeak(beakWidth, positionedElement);\n const finalizedBeakPosition: ICalloutBeakPositionedInfo = _finalizeBeakPosition(\n positionedElement,\n beakPositioned,\n boundingRect,\n );\n return {\n ..._finalizePositionData(positionedElement, hostElement, boundingRect, props.coverTarget, doNotFinalizeReturnEdge),\n beakPosition: finalizedBeakPosition,\n };\n}\n\nfunction _positionCard(\n props: ICalloutPositionProps,\n hostElement: HTMLElement,\n callout: HTMLElement,\n previousPositions?: ICalloutPositionedInfo,\n): ICalloutPositionedInfo {\n return _positionCallout(props, hostElement, callout, previousPositions, true);\n}\n// END PRIVATE FUNCTIONS\n\nexport const __positioningTestPackage = {\n _finalizePositionData,\n _finalizeBeakPosition,\n _calculateActualBeakWidthInPixels,\n _positionElementWithinBounds,\n _positionBeak,\n _getPositionData,\n _getMaxHeightFromTargetRectangle,\n};\n\n/**\n * Used to position an element relative to the given positioning props.\n * If positioning has been completed before, previousPositions can be passed to ensure that the positioning element\n * repositions based on its previous targets rather than starting with directionalhint.\n */\nexport function positionElement(\n props: IPositionProps,\n hostElement: HTMLElement,\n elementToPosition: HTMLElement,\n previousPositions?: IPositionedData,\n): IPositionedData {\n return _positionElement(props, hostElement, elementToPosition, previousPositions);\n}\n\nexport function positionCallout(\n props: IPositionProps,\n hostElement: HTMLElement,\n elementToPosition: HTMLElement,\n previousPositions?: ICalloutPositionedInfo,\n): ICalloutPositionedInfo {\n return _positionCallout(props, hostElement, elementToPosition, previousPositions);\n}\n\nexport function positionCard(\n props: IPositionProps,\n hostElement: HTMLElement,\n elementToPosition: HTMLElement,\n previousPositions?: ICalloutPositionedInfo,\n): ICalloutPositionedInfo {\n return _positionCard(props, hostElement, elementToPosition, previousPositions);\n}\n\n/**\n * Gets the maximum height that a rectangle can have in order to fit below or above a target.\n * If the directional hint specifies a left or right edge (i.e. leftCenter) it will limit the height to the topBorder\n * of the target given.\n * If no bounds are provided then the window is treated as the bounds.\n */\nexport function getMaxHeight(\n target: Element | MouseEvent | Point | Rectangle,\n targetEdge: DirectionalHint,\n gapSpace: number = 0,\n bounds?: IRectangle,\n coverTarget?: boolean,\n): number {\n const mouseTarget: MouseEvent = target as MouseEvent;\n const elementTarget: Element = target as Element;\n const rectOrPointTarget: Point & Rectangle = target as Point & Rectangle;\n let targetRect: Rectangle;\n const boundingRectangle = bounds\n ? _getRectangleFromIRect(bounds)\n : new Rectangle(0, window.innerWidth - getScrollbarWidth(), 0, window.innerHeight);\n\n // eslint-disable-next-line deprecation/deprecation\n const left = rectOrPointTarget.left || rectOrPointTarget.x;\n // eslint-disable-next-line deprecation/deprecation\n const top = rectOrPointTarget.top || rectOrPointTarget.y;\n const right = rectOrPointTarget.right || left;\n const bottom = rectOrPointTarget.bottom || top;\n\n // eslint-disable-next-line no-extra-boolean-cast -- may not actually be a MouseEvent\n if (!!mouseTarget.stopPropagation) {\n targetRect = new Rectangle(mouseTarget.clientX, mouseTarget.clientX, mouseTarget.clientY, mouseTarget.clientY);\n } else if (left !== undefined && top !== undefined) {\n targetRect = new Rectangle(left, right, top, bottom);\n } else {\n targetRect = _getRectangleFromElement(elementTarget);\n }\n\n return _getMaxHeightFromTargetRectangle(targetRect, targetEdge, gapSpace, boundingRectangle, coverTarget);\n}\n\n/**\n * Returns the opposite edge of the given RectangleEdge.\n */\nexport function getOppositeEdge(edge: RectangleEdge): RectangleEdge {\n return edge * -1;\n}\n\nfunction _getBoundsFromTargetWindow(\n target: Element | MouseEvent | Point | Rectangle | null,\n targetWindow: IWindowWithSegments,\n): IRectangle {\n let segments = undefined;\n if (targetWindow.getWindowSegments) {\n segments = targetWindow.getWindowSegments();\n }\n\n // Identify if we're dealing with single screen scenarios.\n if (segments === undefined || segments.length <= 1) {\n return {\n top: 0,\n left: 0,\n right: targetWindow.innerWidth,\n bottom: targetWindow.innerHeight,\n width: targetWindow.innerWidth,\n height: targetWindow.innerHeight,\n };\n }\n\n // Logic for determining dual screen scenarios.\n let x: number | undefined = 0;\n let y: number | undefined = 0;\n\n // If the target is an Element get coordinates for its center.\n if (target !== null && !!(target as Element).getBoundingClientRect) {\n const clientRect = (target as Element).getBoundingClientRect();\n x = (clientRect.left + clientRect.right) / 2;\n y = (clientRect.top + clientRect.bottom) / 2;\n }\n // If the target is not null get x-axis and y-axis coordinates directly.\n else if (target !== null) {\n // eslint-disable-next-line deprecation/deprecation\n x = (target as Point).left || (target as MouseEvent | Point).x;\n // eslint-disable-next-line deprecation/deprecation\n y = (target as Point).top || (target as MouseEvent | Point).y;\n }\n\n let bounds = { top: 0, left: 0, right: 0, bottom: 0, width: 0, height: 0 };\n\n // Define which window segment are the coordinates in and calculate bounds based on that.\n for (const segment of segments) {\n if (x && segment.left <= x && segment.right >= x && y && segment.top <= y && segment.bottom >= y) {\n bounds = {\n top: segment.top,\n left: segment.left,\n right: segment.right,\n bottom: segment.bottom,\n width: segment.width,\n height: segment.height,\n };\n }\n }\n\n return bounds;\n}\n\nexport function getBoundsFromTargetWindow(\n target: Element | MouseEvent | Point | Rectangle | null,\n targetWindow: IWindowWithSegments,\n): IRectangle {\n return _getBoundsFromTargetWindow(target, targetWindow);\n}\n","import * as React from 'react';\nimport { ICalloutProps, ICalloutContentStyleProps, ICalloutContentStyles } from './Callout.types';\nimport { DirectionalHint } from '../../common/DirectionalHint';\nimport {\n Async,\n Point,\n IRectangle,\n css,\n divProperties,\n elementContains,\n focusFirstChild,\n getDocument,\n getNativeProps,\n getWindow,\n on,\n shallowCompare,\n} from '../../Utilities';\nimport {\n positionCallout,\n ICalloutPositionedInfo,\n IPositionProps,\n getMaxHeight,\n IPosition,\n RectangleEdge,\n positionCard,\n getBoundsFromTargetWindow,\n} from '../../utilities/positioning';\nimport { Popup } from '../../Popup';\nimport { classNamesFunction } from '../../Utilities';\nimport { AnimationClassNames } from '../../Styling';\nimport { Target } from '@uifabric/react-hooks';\n\nconst ANIMATIONS: { [key: number]: string | undefined } = {\n [RectangleEdge.top]: AnimationClassNames.slideUpIn10,\n [RectangleEdge.bottom]: AnimationClassNames.slideDownIn10,\n [RectangleEdge.left]: AnimationClassNames.slideLeftIn10,\n [RectangleEdge.right]: AnimationClassNames.slideRightIn10,\n};\n\nconst getClassNames = classNamesFunction<ICalloutContentStyleProps, ICalloutContentStyles>({\n disableCaching: true, // disabling caching because stylesProp.position mutates often\n});\n\nconst BEAK_ORIGIN_POSITION = { top: 0, left: 0 };\n// Microsoft Edge will overwrite inline styles if there is an animation pertaining to that style.\n// To help ensure that edge will respect the offscreen style opacity\n// filter needs to be added as an additional way to set opacity.\n// Also set pointer-events: none so that the callout will not occlude the element it is\n// going to be positioned against\nconst OFF_SCREEN_STYLE: React.CSSProperties = { opacity: 0, filter: 'opacity(0)', pointerEvents: 'none' };\n// role and role description go hand-in-hand. Both would be included by spreading getNativeProps for a basic element\n// This constant array can be used to filter these out of native props spread on callout root and apply them together on\n// calloutMain (the Popup component within the callout)\nconst ARIA_ROLE_ATTRIBUTES = ['role', 'aria-roledescription'];\n\nexport interface ICalloutState {\n positions?: ICalloutPositionedInfo;\n slideDirectionalClassName?: string;\n calloutElementRect?: ClientRect;\n heightOffset?: number;\n}\n\nexport class CalloutContentBase extends React.Component<ICalloutProps, ICalloutState> {\n public static defaultProps = {\n preventDismissOnLostFocus: false,\n preventDismissOnScroll: false,\n preventDismissOnResize: false,\n isBeakVisible: true,\n beakWidth: 16,\n gapSpace: 0,\n minPagePadding: 8,\n directionalHint: DirectionalHint.bottomAutoEdge,\n };\n\n private _classNames: { [key in keyof ICalloutContentStyles]: string };\n private _didSetInitialFocus: boolean;\n private _hostElement = React.createRef<HTMLDivElement>();\n private _calloutElement = React.createRef<HTMLDivElement>();\n private _targetWindow: Window;\n private _bounds: IRectangle | undefined;\n private _positionAttempts: number;\n private _target: Element | MouseEvent | Point | null;\n private _setHeightOffsetTimer: number;\n private _hasListeners = false;\n private _maxHeight: number | undefined;\n private _blockResetHeight: boolean;\n private _isMouseDownOnPopup: boolean;\n\n private _async: Async;\n private _disposables: (() => void)[] = [];\n\n constructor(props: ICalloutProps) {\n super(props);\n\n this._async = new Async(this);\n this._didSetInitialFocus = false;\n this.state = {\n positions: undefined,\n slideDirectionalClassName: undefined,\n // @TODO it looks like this is not even being used anymore.\n calloutElementRect: undefined,\n heightOffset: 0,\n };\n this._positionAttempts = 0;\n }\n\n public componentDidUpdate() {\n if (!this.props.hidden) {\n this._setInitialFocus();\n if (!this._hasListeners) {\n this._addListeners();\n }\n this._updateAsyncPosition();\n } else {\n if (this._hasListeners) {\n this._removeListeners();\n }\n }\n }\n\n public shouldComponentUpdate(newProps: ICalloutProps, newState: ICalloutState): boolean {\n if (!newProps.shouldUpdateWhenHidden && this.props.hidden && newProps.hidden) {\n // Do not update when hidden.\n return false;\n }\n\n return !shallowCompare(this.props, newProps) || !shallowCompare(this.state, newState);\n }\n\n public UNSAFE_componentWillMount() {\n this._setTargetWindowAndElement(this._getTarget());\n }\n\n public componentWillUnmount() {\n this._async.dispose();\n this._disposables.forEach((dispose: () => void) => dispose());\n }\n\n public UNSAFE_componentWillUpdate(newProps: ICalloutProps): void {\n // If the target element changed, find the new one. If we are tracking target with class name, always find element\n // because we do not know if fabric has rendered a new element and disposed the old element.\n const newTarget = this._getTarget(newProps);\n const oldTarget = this._getTarget();\n if (\n (newTarget !== oldTarget || typeof newTarget === 'string' || newTarget instanceof String) &&\n !this._blockResetHeight\n ) {\n this._maxHeight = undefined;\n this._setTargetWindowAndElement(newTarget!);\n }\n if (newProps.gapSpace !== this.props.gapSpace || this.props.beakWidth !== newProps.beakWidth) {\n this._maxHeight = undefined;\n }\n\n if (newProps.finalHeight !== this.props.finalHeight) {\n this._setHeightOffsetEveryFrame();\n }\n\n // Ensure positioning is recalculated when we are about to show a persisted menu.\n if (this._didPositionPropsChange(newProps, this.props)) {\n this._maxHeight = undefined;\n // Target might have been updated while hidden.\n this._setTargetWindowAndElement(newTarget);\n this.setState({\n positions: undefined,\n });\n this._didSetInitialFocus = false;\n this._bounds = undefined;\n }\n\n this._blockResetHeight = false;\n }\n\n public componentDidMount(): void {\n if (!this.props.hidden) {\n this._onComponentDidMount();\n }\n }\n\n public render(): JSX.Element | null {\n // If there is no target window then we are likely in server side rendering and we should not render anything.\n if (!this._targetWindow) {\n return null;\n }\n let { target } = this.props;\n const {\n styles,\n style,\n ariaLabel,\n ariaDescribedBy,\n ariaLabelledBy,\n className,\n isBeakVisible,\n children,\n beakWidth,\n calloutWidth,\n calloutMaxWidth,\n calloutMinWidth,\n finalHeight,\n hideOverflow = !!finalHeight,\n backgroundColor,\n calloutMaxHeight,\n onScroll,\n // eslint-disable-next-line deprecation/deprecation\n shouldRestoreFocus = true,\n popupProps,\n } = this.props;\n target = this._getTarget();\n const { positions } = this.state;\n\n const getContentMaxHeight: number | undefined = this._getMaxHeight()\n ? this._getMaxHeight()! + this.state.heightOffset!\n : undefined;\n const contentMaxHeight: number | undefined =\n calloutMaxHeight! && getContentMaxHeight && calloutMaxHeight! < getContentMaxHeight\n ? calloutMaxHeight!\n : getContentMaxHeight!;\n const overflowYHidden = hideOverflow;\n\n const beakVisible = isBeakVisible && !!target;\n this._classNames = getClassNames(styles!, {\n theme: this.props.theme!,\n className,\n overflowYHidden: overflowYHidden,\n calloutWidth,\n positions,\n beakWidth,\n backgroundColor,\n calloutMinWidth,\n calloutMaxWidth,\n });\n\n const overflowStyle: React.CSSProperties = {\n ...style,\n maxHeight: contentMaxHeight,\n ...(overflowYHidden && { overflowY: 'hidden' }),\n };\n\n const visibilityStyle: React.CSSProperties | undefined = this.props.hidden ? { visibility: 'hidden' } : undefined;\n // React.CSSProperties does not understand IRawStyle, so the inline animations will need to be cast as any for now.\n const content = (\n <div ref={this._hostElement} className={this._classNames.container} style={visibilityStyle}>\n <div\n {...getNativeProps(this.props, divProperties, ARIA_ROLE_ATTRIBUTES)}\n className={css(this._classNames.root, positions && positions.targetEdge && ANIMATIONS[positions.targetEdge!])}\n style={positions ? positions.elementPosition : OFF_SCREEN_STYLE}\n // Safari and Firefox on Mac OS requires this to back-stop click events so focus remains in the Callout.\n // See https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button#Clicking_and_focus\n tabIndex={-1}\n ref={this._calloutElement}\n >\n {beakVisible && <div className={this._classNames.beak} style={this._getBeakPosition()} />}\n {beakVisible && <div className={this._classNames.beakCurtain} />}\n <Popup\n {...getNativeProps(this.props, ARIA_ROLE_ATTRIBUTES)}\n ariaLabel={ariaLabel}\n onRestoreFocus={this.props.onRestoreFocus}\n ariaDescribedBy={ariaDescribedBy}\n ariaLabelledBy={ariaLabelledBy}\n className={this._classNames.calloutMain}\n onDismiss={this.dismiss}\n onScroll={onScroll}\n shouldRestoreFocus={shouldRestoreFocus}\n style={overflowStyle}\n onMouseDown={this._mouseDownOnPopup}\n onMouseUp={this._mouseUpOnPopup}\n {...popupProps}\n >\n {children}\n </Popup>\n </div>\n </div>\n );\n\n return content;\n }\n\n public dismiss = (ev?: Event | React.MouseEvent<HTMLElement> | React.KeyboardEvent<HTMLElement>): void => {\n const { onDismiss } = this.props;\n\n if (onDismiss) {\n onDismiss(ev);\n }\n };\n\n protected _dismissOnScroll = (ev: Event) => {\n // eslint-disable-next-line deprecation/deprecation\n const { preventDismissOnEvent, preventDismissOnScroll } = this.props;\n if (\n this.state.positions &&\n ((preventDismissOnEvent && !preventDismissOnEvent(ev)) || (!preventDismissOnEvent && !preventDismissOnScroll))\n ) {\n this._dismissOnClickOrScroll(ev);\n }\n };\n\n protected _dismissOnResize = (ev: Event) => {\n // eslint-disable-next-line deprecation/deprecation\n const { preventDismissOnEvent, preventDismissOnResize } = this.props;\n if ((preventDismissOnEvent && !preventDismissOnEvent(ev)) || (!preventDismissOnEvent && !preventDismissOnResize)) {\n this.dismiss(ev);\n }\n };\n\n protected _dismissOnLostFocus = (ev: Event) => {\n // eslint-disable-next-line deprecation/deprecation\n const { preventDismissOnEvent, preventDismissOnLostFocus } = this.props;\n if (\n (preventDismissOnEvent && !preventDismissOnEvent(ev)) ||\n (!preventDismissOnEvent && !preventDismissOnLostFocus)\n ) {\n this._dismissOnClickOrScroll(ev);\n }\n };\n\n protected _setInitialFocus = (): void => {\n if (\n this.props.setInitialFocus &&\n !this._didSetInitialFocus &&\n this.state.positions &&\n this._calloutElement.current\n ) {\n this._didSetInitialFocus = true;\n this._async.requestAnimationFrame(\n () => focusFirstChild(this._calloutElement.current!),\n this._calloutElement.current,\n );\n }\n };\n\n protected _onComponentDidMount = (): void => {\n this._addListeners();\n\n if (this.props.onLayerMounted) {\n this.props.onLayerMounted();\n }\n\n this._updateAsyncPosition();\n this._setHeightOffsetEveryFrame();\n };\n\n private _dismissOnClickOrScroll(ev: Event) {\n const target = ev.target as HTMLElement;\n const isEventTargetOutsideCallout =\n this._hostElement.current && !elementContains(this._hostElement.current, target);\n\n // If mouse is pressed down on callout but moved outside then released, don't dismiss the callout.\n if (isEventTargetOutsideCallout && this._isMouseDownOnPopup) {\n this._isMouseDownOnPopup = false;\n return;\n }\n\n if (\n (!this._target && isEventTargetOutsideCallout) ||\n (ev.target !== this._targetWindow &&\n isEventTargetOutsideCallout &&\n ((this._target as MouseEvent).stopPropagation ||\n !this._target ||\n this.props.dismissOnTargetClick ||\n (target !== this._target && !elementContains(this._target as HTMLElement, target))))\n ) {\n this.dismiss(ev);\n }\n }\n\n private _dismissOnTargetWindowBlur = (ev: FocusEvent) => {\n // eslint-disable-next-line deprecation/deprecation\n const { preventDismissOnEvent, preventDismissOnLostFocus, shouldDismissOnWindowFocus } = this.props;\n\n // Do nothing\n if (!shouldDismissOnWindowFocus) {\n return;\n }\n\n if (\n ((preventDismissOnEvent && !preventDismissOnEvent(ev)) ||\n (!preventDismissOnEvent && !preventDismissOnLostFocus)) &&\n !this._targetWindow.document.hasFocus() &&\n ev.relatedTarget === null\n ) {\n this.dismiss(ev);\n }\n };\n\n private _addListeners() {\n // This is added so the callout will dismiss when the window is scrolled\n // but not when something inside the callout is scrolled. The delay seems\n // to be required to avoid React firing an async focus event in IE from\n // the target changing focus quickly prior to rendering the callout.\n this._async.setTimeout(() => {\n this._disposables.push(\n on(this._targetWindow, 'scroll', this._dismissOnScroll, true),\n on(this._targetWindow, 'resize', this._dismissOnResize, true),\n on(this._targetWindow.document.documentElement, 'focus', this._dismissOnLostFocus, true),\n on(this._targetWindow.document.documentElement, 'click', this._dismissOnLostFocus, true),\n on(this._targetWindow, 'blur', this._dismissOnTargetWindowBlur, true),\n );\n this._hasListeners = true;\n }, 0);\n }\n\n private _removeListeners() {\n this._disposables.forEach((dispose: () => void) => dispose());\n this._disposables = [];\n this._hasListeners = false;\n }\n\n private _updateAsyncPosition(): void {\n this._async.requestAnimationFrame(() => this._updatePosition(), this._calloutElement.current);\n }\n\n private _getBeakPosition(): React.CSSProperties {\n const { positions } = this.state;\n const beakPostionStyle: React.CSSProperties = {\n ...(positions && positions.beakPosition ? positions.beakPosition.elementPosition : null),\n };\n\n if (!beakPostionStyle.top && !beakPostionStyle.bottom && !beakPostionStyle.left && !beakPostionStyle.right) {\n beakPostionStyle.left = BEAK_ORIGIN_POSITION.left;\n beakPostionStyle.top = BEAK_ORIGIN_POSITION.top;\n }\n\n return beakPostionStyle;\n }\n\n private _updatePosition(): void {\n // Try to update the target, page might have changed\n this._setTargetWindowAndElement(this._getTarget());\n\n const { positions } = this.state;\n const hostElement: HTMLElement | null = this._hostElement.current;\n const calloutElement: HTMLElement | null = this._calloutElement.current;\n\n // If we expect a target element to position against, we need to wait until `this._target` is resolved. Otherwise\n // we can try to position.\n const expectsTarget = !!this.props.target;\n\n if (hostElement && calloutElement && (!expectsTarget || this._target)) {\n const currentProps: IPositionProps = { ...(this.props as any) };\n currentProps.bounds = this._getBounds();\n currentProps.target = this._target!;\n // If there is a finalHeight given then we assume that the user knows and will handle\n // additional positioning adjustments so we should call positionCard\n const newPositions: ICalloutPositionedInfo = this.props.finalHeight\n ? positionCard(currentProps, hostElement, calloutElement, positions)\n : positionCallout(currentProps, hostElement, calloutElement, positions);\n\n // Set the new position only when the positions are not exists or one of the new callout positions are different.\n // The position should not change if the position is within 2 decimal places.\n if (\n (!positions && newPositions) ||\n (positions && newPositions && !this._arePositionsEqual(positions, newPositions) && this._positionAttempts < 5)\n ) {\n // We should not reposition the callout more than a few times, if it is then the content is likely resizing\n // and we should stop trying to reposition to prevent a stack overflow.\n this._positionAttempts++;\n this.setState({\n positions: newPositions,\n });\n } else if (this._positionAttempts > 0) {\n // Only call the onPositioned callback if the callout has been re-positioned at least once.\n this._positionAttempts = 0;\n if (this.props.onPositioned) {\n this.props.onPositioned(this.state.positions);\n }\n }\n }\n }\n\n private _getBounds(): IRectangle {\n if (!this._bounds) {\n const bounds = this.props.bounds;\n let currentBounds = typeof bounds === 'function' ? bounds(this.props.target, this._targetWindow) : bounds;\n\n if (!currentBounds) {\n currentBounds = getBoundsFromTargetWindow(this._target, this._targetWindow);\n currentBounds = {\n top: currentBounds.top + this.props.minPagePadding!,\n left: currentBounds.left + this.props.minPagePadding!,\n right: currentBounds.right! - this.props.minPagePadding!,\n bottom: currentBounds.bottom! - this.props.minPagePadding!,\n width: currentBounds.width - this.props.minPagePadding! * 2,\n height: currentBounds.height - this.props.minPagePadding! * 2,\n };\n }\n this._bounds = currentBounds;\n }\n return this._bounds;\n }\n\n // Max height should remain as synchronous as possible, which is why it is not done using set state.\n // It needs to be synchronous since it will impact the ultimate position of the callout.\n private _getMaxHeight(): number | undefined {\n if (!this._maxHeight) {\n if (this.props.directionalHintFixed && this._target) {\n const beakWidth = this.props.isBeakVisible ? this.props.beakWidth : 0;\n const gapSpace = this.props.gapSpace ? this.props.gapSpace : 0;\n // Since the callout cannot measure it's border size it must be taken into account here. Otherwise it will\n // overlap with the target.\n const totalGap = gapSpace + beakWidth!;\n this._async.requestAnimationFrame(() => {\n if (this._target) {\n this._maxHeight = getMaxHeight(\n this._target,\n this.props.directionalHint!,\n totalGap,\n this._getBounds(),\n this.props.coverTarget,\n );\n this._blockResetHeight = true;\n this.forceUpdate();\n }\n }, this._target as Element);\n } else {\n this._maxHeight = this._getBounds().height!;\n }\n }\n return this._maxHeight!;\n }\n\n private _arePositionsEqual(positions: ICalloutPositionedInfo, newPosition: ICalloutPositionedInfo): boolean {\n return (\n this._comparePositions(positions.elementPosition, newPosition.elementPosition) &&\n this._comparePositions(positions.beakPosition.elementPosition, newPosition.beakPosition.elementPosition)\n );\n }\n\n private _comparePositions(oldPositions: IPosition, newPositions: IPosition): boolean {\n for (const key in newPositions) {\n if (newPositions.hasOwnProperty(key)) {\n const oldPositionEdge = oldPositions[key];\n const newPositionEdge = newPositions[key];\n\n if (oldPositionEdge !== undefined && newPositionEdge !== undefined) {\n if (oldPositionEdge.toFixed(2) !== newPositionEdge.toFixed(2)) {\n return false;\n }\n } else {\n return false;\n }\n }\n }\n return true;\n }\n\n private _setTargetWindowAndElement(target: Target): void {\n const currentElement = this._calloutElement.current;\n\n if (target) {\n if (typeof target === 'string') {\n const currentDoc: Document = getDocument(currentElement)!;\n this._target = currentDoc ? (currentDoc.querySelector(target) as Element) : null;\n this._targetWindow = getWindow(currentElement)!;\n // Cast to any prevents error about stopPropagation always existing\n } else if ((target as any).stopPropagation) {\n this._targetWindow = getWindow((target as MouseEvent).target as HTMLElement)!;\n this._target = target as MouseEvent;\n // Same reason here\n } else if ((target as any).getBoundingClientRect) {\n const targetElement: Element = target as Element;\n this._targetWindow = getWindow(targetElement)!;\n this._target = targetElement;\n } else if ((target as React.RefObject<Element>).current !== undefined) {\n this._target = (target as React.RefObject<Element>).current;\n this._targetWindow = getWindow(this._target)!;\n // HTMLImgElements can have x and y values. The check for it being a point must go last.\n } else {\n this._targetWindow = getWindow(currentElement)!;\n this._target = target as Point;\n }\n } else {\n this._targetWindow = getWindow(currentElement)!;\n }\n }\n\n private _setHeightOffsetEveryFrame(): void {\n if (this._calloutElement.current && this.props.finalHeight) {\n this._setHeightOffsetTimer = this._async.requestAnimationFrame(() => {\n const calloutMainElem = this._calloutElement.current && (this._calloutElement.current.lastChild as HTMLElement);\n\n if (!calloutMainElem) {\n return;\n }\n\n const cardScrollHeight: number = calloutMainElem.scrollHeight;\n const cardCurrHeight: number = calloutMainElem.offsetHeight;\n const scrollDiff: number = cardScrollHeight - cardCurrHeight;\n\n this.setState({\n heightOffset: this.state.heightOffset! + scrollDiff,\n });\n\n if (calloutMainElem.offsetHeight < this.props.finalHeight!) {\n this._setHeightOffsetEveryFrame();\n } else {\n this._async.cancelAnimationFrame(this._setHeightOffsetTimer, this._calloutElement.current);\n }\n }, this._calloutElement.current);\n }\n }\n\n // Whether or not the current positions should be reset\n private _didPositionPropsChange(newProps: ICalloutProps, oldProps: ICalloutProps): boolean {\n return (\n (!newProps.hidden && newProps.hidden !== oldProps.hidden) ||\n newProps.directionalHint !== oldProps.directionalHint ||\n newProps.target !== oldProps.target\n );\n }\n\n private _getTarget(props: ICalloutProps = this.props): Target {\n const { target } = props;\n return target!;\n }\n\n private _mouseDownOnPopup = () => {\n this._isMouseDownOnPopup = true;\n };\n\n private _mouseUpOnPopup = () => {\n this._isMouseDownOnPopup = false;\n };\n}\n","import { HighContrastSelector, IRawStyle, focusClear, getGlobalClassNames } from '../../Styling';\nimport { ICalloutContentStyleProps, ICalloutContentStyles } from './Callout.types';\n\nfunction getBeakStyle(beakWidth?: number): IRawStyle {\n return {\n height: beakWidth,\n width: beakWidth,\n };\n}\n\nconst GlobalClassNames = {\n container: 'ms-Callout-container',\n root: 'ms-Callout',\n beak: 'ms-Callout-beak',\n beakCurtain: 'ms-Callout-beakCurtain',\n calloutMain: 'ms-Callout-main',\n};\n\nexport const getStyles = (props: ICalloutContentStyleProps): ICalloutContentStyles => {\n const {\n theme,\n className,\n overflowYHidden,\n calloutWidth,\n beakWidth,\n backgroundColor,\n calloutMaxWidth,\n calloutMinWidth,\n } = props;\n\n const classNames = getGlobalClassNames(GlobalClassNames, theme);\n\n const { semanticColors, effects } = theme;\n\n return {\n container: [\n classNames.container,\n {\n position: 'relative',\n },\n ],\n root: [\n classNames.root,\n theme.fonts.medium,\n {\n position: 'absolute',\n boxSizing: 'border-box',\n borderRadius: effects.roundedCorner2,\n boxShadow: effects.elevation16,\n selectors: {\n [HighContrastSelector]: {\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: 'WindowText',\n },\n },\n },\n focusClear(),\n className,\n !!calloutWidth && { width: calloutWidth },\n !!calloutMaxWidth && { maxWidth: calloutMaxWidth },\n !!calloutMinWidth && { minWidth: calloutMinWidth },\n ],\n beak: [\n classNames.beak,\n {\n position: 'absolute',\n backgroundColor: semanticColors.menuBackground,\n boxShadow: 'inherit',\n border: 'inherit',\n boxSizing: 'border-box',\n transform: 'rotate(45deg)',\n },\n getBeakStyle(beakWidth),\n backgroundColor && {\n backgroundColor: backgroundColor,\n },\n ],\n beakCurtain: [\n classNames.beakCurtain,\n {\n position: 'absolute',\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n backgroundColor: semanticColors.menuBackground,\n borderRadius: effects.roundedCorner2,\n },\n ],\n calloutMain: [\n classNames.calloutMain,\n {\n backgroundColor: semanticColors.menuBackground,\n overflowX: 'hidden',\n overflowY: 'auto',\n position: 'relative',\n borderRadius: effects.roundedCorner2,\n },\n overflowYHidden && {\n overflowY: 'hidden',\n },\n backgroundColor && {\n backgroundColor: backgroundColor,\n },\n ],\n };\n};\n","import * as React from 'react';\nimport { styled } from '../../Utilities';\nimport { ICalloutProps, ICalloutContentStyles, ICalloutContentStyleProps } from './Callout.types';\nimport { CalloutContentBase } from './CalloutContent.base';\nimport { getStyles } from './CalloutContent.styles';\n\nexport const CalloutContent: React.FunctionComponent<ICalloutProps> = styled<\n ICalloutProps,\n ICalloutContentStyleProps,\n ICalloutContentStyles\n>(CalloutContentBase, getStyles, undefined, { scope: 'CalloutContent' });\n","import * as React from 'react';\nimport { ICalloutProps } from './Callout.types';\nimport { ICalloutState } from './CalloutContent.base';\nimport { CalloutContent } from './CalloutContent';\nimport { Layer } from '../../Layer';\n\nexport class Callout extends React.Component<ICalloutProps, ICalloutState> {\n public render(): JSX.Element {\n const { layerProps, ...rest } = this.props;\n const content = <CalloutContent {...rest} />;\n return this.props.doNotLayer ? content : <Layer {...layerProps}>{content}</Layer>;\n }\n}\n","import * as React from 'react';\nimport { Image } from '../../../Image';\nimport { Icon } from '../../../Icon';\nimport {\n IChoiceGroupOptionProps,\n IChoiceGroupOptionStyleProps,\n IChoiceGroupOptionStyles,\n} from './ChoiceGroupOption.types';\nimport { classNamesFunction, getNativeProps, inputProperties, css, initializeComponentRef } from '../../../Utilities';\nimport { IProcessedStyleSet } from '../../../Styling';\nimport { composeRenderFunction } from '@uifabric/utilities';\n\nconst getClassNames = classNamesFunction<IChoiceGroupOptionStyleProps, IChoiceGroupOptionStyles>();\n\nconst LARGE_IMAGE_SIZE = 71;\n\n/**\n * {@docCategory ChoiceGroup}\n */\nexport class ChoiceGroupOptionBase extends React.Component<IChoiceGroupOptionProps, {}> {\n public static defaultProps: Partial<IChoiceGroupOptionProps> = {\n // This ensures default imageSize value doesn't mutate. Mutation can cause style re-calcuation.\n imageSize: { width: 32, height: 32 },\n };\n\n private _classNames: IProcessedStyleSet<IChoiceGroupOptionStyles>;\n\n constructor(props: IChoiceGroupOptionProps) {\n super(props);\n initializeComponentRef(this);\n }\n\n public render(): JSX.Element {\n const {\n ariaLabel,\n focused,\n required,\n theme,\n iconProps,\n imageSrc,\n imageSize,\n disabled,\n // eslint-disable-next-line deprecation/deprecation\n checked,\n id,\n styles,\n name,\n onRenderField = this._onRenderField,\n ...rest\n } = this.props;\n\n this._classNames = getClassNames(styles!, {\n theme: theme!,\n hasIcon: !!iconProps,\n hasImage: !!imageSrc,\n checked,\n disabled,\n imageIsLarge: !!imageSrc && (imageSize!.width > LARGE_IMAGE_SIZE || imageSize!.height > LARGE_IMAGE_SIZE),\n imageSize,\n focused,\n });\n\n const { className, ...nativeProps } = getNativeProps<{ className: string }>(rest, inputProperties);\n\n return (\n <div className={this._classNames.root}>\n <div className={this._classNames.choiceFieldWrapper}>\n <input\n aria-label={ariaLabel}\n id={id}\n className={css(this._classNames.input, className)}\n type=\"radio\"\n name={name}\n disabled={disabled}\n checked={checked}\n required={required}\n {...nativeProps}\n onChange={this._onChange}\n onFocus={this._onFocus}\n onBlur={this._onBlur}\n />\n {onRenderField(this.props, this._onRenderField)}\n </div>\n </div>\n );\n }\n\n private _onChange = (evt: React.FormEvent<HTMLInputElement>): void => {\n const { onChange } = this.props;\n if (onChange) {\n onChange(evt, this.props);\n }\n };\n\n private _onBlur = (evt: React.FocusEvent<HTMLElement>) => {\n const { onBlur } = this.props;\n if (onBlur) {\n onBlur(evt, this.props);\n }\n };\n\n private _onFocus = (evt: React.FocusEvent<HTMLElement>) => {\n const { onFocus } = this.props;\n if (onFocus) {\n onFocus(evt, this.props);\n }\n };\n\n private _onRenderField = (props: IChoiceGroupOptionProps): JSX.Element => {\n const { id, imageSrc, imageAlt = '', selectedImageSrc, iconProps } = props;\n\n const imageSize = props.imageSize ? props.imageSize : { width: 32, height: 32 };\n\n const onRenderLabel = props.onRenderLabel\n ? composeRenderFunction(props.onRenderLabel, this._onRenderLabel)\n : this._onRenderLabel;\n\n const label = onRenderLabel(props);\n\n return (\n <label htmlFor={id} className={this._classNames.field}>\n {imageSrc && (\n <div className={this._classNames.innerField}>\n <div className={this._classNames.imageWrapper}>\n <Image src={imageSrc} alt={imageAlt} width={imageSize.width} height={imageSize.height} />\n </div>\n <div className={this._classNames.selectedImageWrapper}>\n <Image src={selectedImageSrc} alt={imageAlt} width={imageSize.width} height={imageSize.height} />\n </div>\n </div>\n )}\n {iconProps && (\n <div className={this._classNames.innerField}>\n <div className={this._classNames.iconWrapper}>\n <Icon {...iconProps} />\n </div>\n </div>\n )}\n {imageSrc || iconProps ? <div className={this._classNames.labelWrapper}>{label}</div> : label}\n </label>\n );\n };\n\n private _onRenderLabel = (props: IChoiceGroupOptionProps): JSX.Element => {\n return (\n <span id={props.labelId} className=\"ms-ChoiceFieldLabel\">\n {props.text}\n </span>\n );\n };\n}\n","import { HighContrastSelector, IStyle, getGlobalClassNames, getHighContrastNoAdjustStyle } from '../../../Styling';\nimport { IsFocusVisibleClassName } from '../../../Utilities';\nimport { IChoiceGroupOptionStyleProps, IChoiceGroupOptionStyles } from './ChoiceGroupOption.types';\n\nconst GlobalClassNames = {\n root: 'ms-ChoiceField',\n choiceFieldWrapper: 'ms-ChoiceField-wrapper',\n input: 'ms-ChoiceField-input',\n field: 'ms-ChoiceField-field',\n innerField: 'ms-ChoiceField-innerField',\n imageWrapper: 'ms-ChoiceField-imageWrapper',\n iconWrapper: 'ms-ChoiceField-iconWrapper',\n labelWrapper: 'ms-ChoiceField-labelWrapper',\n checked: 'is-checked',\n};\n\nconst labelWrapperLineHeight = 15;\nconst labelWrapperHeight = labelWrapperLineHeight * 2 + 2; // adding 2px height to ensure text doesn't get cutoff\nconst iconSize = 32;\nconst choiceFieldSize = 20;\nconst choiceFieldTransitionDuration = '200ms';\nconst choiceFieldTransitionTiming = 'cubic-bezier(.4, 0, .23, 1)';\nconst radioButtonSpacing = 3;\nconst radioButtonInnerSize = 5;\n\nfunction getChoiceGroupFocusStyle(focusBorderColor: string, hasIconOrImage?: boolean): IStyle {\n return [\n 'is-inFocus',\n {\n selectors: {\n [`.${IsFocusVisibleClassName} &`]: {\n position: 'relative',\n outline: 'transparent',\n selectors: {\n '::-moz-focus-inner': {\n border: 0,\n },\n ':after': {\n content: '\"\"',\n top: -2,\n right: -2,\n bottom: -2,\n left: -2,\n pointerEvents: 'none',\n border: `1px solid ${focusBorderColor}`,\n position: 'absolute',\n selectors: {\n [HighContrastSelector]: {\n borderColor: 'WindowText',\n borderWidth: hasIconOrImage ? 1 : 2,\n },\n },\n },\n },\n },\n },\n },\n ];\n}\n\nfunction getImageWrapperStyle(isSelectedImageWrapper: boolean, className?: string, checked?: boolean): IStyle {\n return [\n className,\n {\n paddingBottom: 2,\n transitionProperty: 'opacity',\n transitionDuration: choiceFieldTransitionDuration,\n transitionTimingFunction: 'ease',\n selectors: {\n '.ms-Image': {\n display: 'inline-block',\n borderStyle: 'none',\n },\n },\n },\n (checked ? !isSelectedImageWrapper : isSelectedImageWrapper) && [\n 'is-hidden',\n {\n position: 'absolute',\n left: 0,\n top: 0,\n width: '100%',\n height: '100%',\n overflow: 'hidden',\n opacity: 0,\n },\n ],\n ];\n}\n\nexport const getStyles = (props: IChoiceGroupOptionStyleProps): IChoiceGroupOptionStyles => {\n const { theme, hasIcon, hasImage, checked, disabled, imageIsLarge, focused, imageSize } = props;\n const { palette, semanticColors, fonts } = theme;\n\n const classNames = getGlobalClassNames(GlobalClassNames, theme);\n\n // Tokens\n // TODO: after updating the semanticColors slots mapping this needs to be semanticColors.smallInputBorder\n const circleBorderColor = palette.neutralPrimary;\n const circleHoveredBorderColor = semanticColors.inputBorderHovered;\n const circleCheckedBorderColor = semanticColors.inputBackgroundChecked;\n // TODO: after updating the semanticColors slots mapping this needs to be semanticColors.inputBackgroundCheckedHovered\n const circleCheckedHoveredBorderColor = palette.themeDark;\n const circleDisabledBorderColor = semanticColors.disabledBodySubtext;\n const circleBackgroundColor = semanticColors.bodyBackground;\n const dotUncheckedHoveredColor = palette.neutralSecondary;\n const dotCheckedColor = semanticColors.inputBackgroundChecked;\n // TODO: after updating the semanticColors slots mapping this needs to be semanticColors.inputBackgroundCheckedHovered\n const dotCheckedHoveredColor = palette.themeDark;\n const dotDisabledColor = semanticColors.disabledBodySubtext;\n // TODO: after updating the semanticColors slots mapping this needs to be semanticColors.bodyTextChecked\n const labelHoverFocusColor = palette.neutralDark;\n const focusBorderColor = semanticColors.focusBorder;\n const iconOrImageChoiceBorderUncheckedHoveredColor = semanticColors.inputBorderHovered;\n // TODO: after updating the semanticColors slots mapping this needs to be semanticColors.inputBackgroundCheckedHovered\n const iconOrImageChoiceBorderCheckedColor = semanticColors.inputBackgroundChecked;\n const iconOrImageChoiceBorderCheckedHoveredColor = palette.themeDark;\n const iconOrImageChoiceBackgroundColor = palette.neutralLighter;\n\n const fieldHoverOrFocusProperties = {\n selectors: {\n '.ms-ChoiceFieldLabel': {\n color: labelHoverFocusColor,\n },\n ':before': {\n borderColor: checked ? circleCheckedHoveredBorderColor : circleHoveredBorderColor,\n },\n ':after': [\n !hasIcon &&\n !hasImage &&\n !checked && {\n content: '\"\"',\n transitionProperty: 'background-color',\n left: 5,\n top: 5,\n width: 10,\n height: 10,\n backgroundColor: dotUncheckedHoveredColor,\n },\n checked && {\n borderColor: dotCheckedHoveredColor,\n },\n ],\n },\n };\n\n const enabledFieldWithImageHoverOrFocusProperties = {\n borderColor: checked ? iconOrImageChoiceBorderCheckedHoveredColor : iconOrImageChoiceBorderUncheckedHoveredColor,\n selectors: {\n ':before': {\n opacity: 1,\n borderColor: checked ? circleCheckedHoveredBorderColor : circleHoveredBorderColor,\n },\n },\n };\n\n const circleAreaProperties: IStyle = [\n {\n content: '\"\"',\n display: 'inline-block',\n backgroundColor: circleBackgroundColor,\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: circleBorderColor,\n width: choiceFieldSize,\n height: choiceFieldSize,\n fontWeight: 'normal',\n position: 'absolute',\n top: 0,\n left: 0,\n boxSizing: 'border-box',\n transitionProperty: 'border-color',\n transitionDuration: choiceFieldTransitionDuration,\n transitionTimingFunction: choiceFieldTransitionTiming,\n borderRadius: '50%',\n },\n disabled && {\n borderColor: circleDisabledBorderColor,\n selectors: {\n [HighContrastSelector]: {\n borderColor: 'GrayText',\n background: 'Window',\n ...getHighContrastNoAdjustStyle(),\n },\n },\n },\n checked && {\n borderColor: disabled ? circleDisabledBorderColor : circleCheckedBorderColor,\n selectors: {\n [HighContrastSelector]: {\n borderColor: 'Highlight',\n background: 'Window',\n forcedColorAdjust: 'none',\n },\n },\n },\n (hasIcon || hasImage) && {\n top: radioButtonSpacing,\n right: radioButtonSpacing,\n left: 'auto', // To reset the value of 'left' to its default value, so that 'right' works\n opacity: checked ? 1 : 0,\n },\n ];\n\n const dotAreaProperties: IStyle = [\n {\n content: '\"\"',\n width: 0,\n height: 0,\n borderRadius: '50%',\n position: 'absolute',\n left: choiceFieldSize / 2,\n right: 0,\n transitionProperty: 'border-width',\n transitionDuration: choiceFieldTransitionDuration,\n transitionTimingFunction: choiceFieldTransitionTiming,\n boxSizing: 'border-box',\n },\n checked && {\n borderWidth: 5,\n borderStyle: 'solid',\n borderColor: disabled ? dotDisabledColor : dotCheckedColor,\n left: 5,\n top: 5,\n width: 10,\n height: 10,\n selectors: {\n [HighContrastSelector]: {\n borderColor: 'Highlight',\n forcedColorAdjust: 'none',\n },\n },\n },\n checked &&\n (hasIcon || hasImage) && {\n top: radioButtonSpacing + radioButtonInnerSize,\n right: radioButtonSpacing + radioButtonInnerSize,\n left: 'auto', // To reset the value of 'left' to its default value, so that 'right' works\n },\n ];\n\n return {\n root: [\n classNames.root,\n theme.fonts.medium,\n {\n display: 'flex',\n alignItems: 'center',\n boxSizing: 'border-box',\n color: semanticColors.bodyText,\n minHeight: 26,\n border: 'none',\n position: 'relative',\n marginTop: 8,\n selectors: {\n '.ms-ChoiceFieldLabel': {\n display: 'inline-block',\n },\n },\n },\n !hasIcon &&\n !hasImage && {\n selectors: {\n '.ms-ChoiceFieldLabel': {\n paddingLeft: '26px',\n },\n },\n },\n hasImage && 'ms-ChoiceField--image',\n hasIcon && 'ms-ChoiceField--icon',\n (hasIcon || hasImage) && {\n display: 'inline-flex',\n fontSize: 0,\n margin: '0 4px 4px 0',\n paddingLeft: 0,\n backgroundColor: iconOrImageChoiceBackgroundColor,\n height: '100%',\n },\n ],\n choiceFieldWrapper: [\n classNames.choiceFieldWrapper,\n focused && getChoiceGroupFocusStyle(focusBorderColor, hasIcon || hasImage),\n ],\n // The hidden input\n input: [\n classNames.input,\n {\n position: 'absolute',\n opacity: 0,\n top: 0,\n right: 0,\n width: '100%',\n height: '100%',\n margin: 0,\n },\n disabled && 'is-disabled',\n ],\n field: [\n classNames.field,\n checked && classNames.checked,\n {\n display: 'inline-block',\n cursor: 'pointer',\n marginTop: 0,\n position: 'relative',\n verticalAlign: 'top',\n userSelect: 'none',\n minHeight: 20,\n selectors: {\n ':hover': !disabled && fieldHoverOrFocusProperties,\n ':focus': !disabled && fieldHoverOrFocusProperties,\n\n // The circle\n ':before': circleAreaProperties,\n\n // The dot\n ':after': dotAreaProperties,\n },\n },\n hasIcon && 'ms-ChoiceField--icon',\n hasImage && 'ms-ChoiceField-field--image',\n (hasIcon || hasImage) && {\n boxSizing: 'content-box',\n cursor: 'pointer',\n paddingTop: 22,\n margin: 0,\n textAlign: 'center',\n transitionProperty: 'all',\n transitionDuration: choiceFieldTransitionDuration,\n transitionTimingFunction: 'ease',\n border: '1px solid transparent',\n justifyContent: 'center',\n alignItems: 'center',\n display: 'flex',\n flexDirection: 'column',\n },\n checked && {\n borderColor: iconOrImageChoiceBorderCheckedColor,\n },\n (hasIcon || hasImage) &&\n !disabled && {\n selectors: {\n ':hover': enabledFieldWithImageHoverOrFocusProperties,\n ':focus': enabledFieldWithImageHoverOrFocusProperties,\n },\n },\n disabled && {\n cursor: 'default',\n selectors: {\n '.ms-ChoiceFieldLabel': {\n color: semanticColors.disabledBodyText,\n selectors: {\n [HighContrastSelector]: {\n color: 'GrayText',\n ...getHighContrastNoAdjustStyle(),\n },\n },\n },\n },\n },\n checked &&\n disabled && {\n borderColor: iconOrImageChoiceBackgroundColor,\n },\n ],\n innerField: [\n classNames.innerField,\n hasImage && {\n // using non-null assertion because we have a default in `ChoiceGroupOptionBase` class.\n height: imageSize!.height,\n width: imageSize!.width,\n },\n (hasIcon || hasImage) && {\n position: 'relative',\n display: 'inline-block',\n paddingLeft: 30,\n paddingRight: 30,\n },\n (hasIcon || hasImage) &&\n imageIsLarge && {\n paddingLeft: 24,\n paddingRight: 24,\n },\n (hasIcon || hasImage) &&\n disabled && {\n opacity: 0.25,\n selectors: {\n [HighContrastSelector]: {\n color: 'GrayText',\n opacity: 1,\n },\n },\n },\n ],\n imageWrapper: getImageWrapperStyle(false, classNames.imageWrapper, checked),\n selectedImageWrapper: getImageWrapperStyle(true, classNames.imageWrapper, checked),\n iconWrapper: [\n classNames.iconWrapper,\n {\n fontSize: iconSize,\n lineHeight: iconSize,\n height: iconSize,\n },\n ],\n labelWrapper: [\n classNames.labelWrapper,\n fonts.medium,\n (hasIcon || hasImage) && {\n display: 'block',\n position: 'relative',\n margin: '4px 8px 2px 8px',\n height: labelWrapperHeight,\n lineHeight: labelWrapperLineHeight,\n // using non-null assertion because we have a default in `ChoiceGroupOptionBase` class.\n maxWidth: imageSize!.width * 2,\n overflow: 'hidden',\n whiteSpace: 'pre-wrap',\n },\n ],\n };\n};\n","import * as React from 'react';\nimport { styled } from '../../../Utilities';\nimport { ChoiceGroupOptionBase } from './ChoiceGroupOption.base';\nimport {\n IChoiceGroupOptionProps,\n IChoiceGroupOptionStyleProps,\n IChoiceGroupOptionStyles,\n} from './ChoiceGroupOption.types';\nimport { getStyles } from './ChoiceGroupOption.styles';\n\nexport const ChoiceGroupOption: React.FunctionComponent<IChoiceGroupOptionProps> = styled<\n IChoiceGroupOptionProps,\n IChoiceGroupOptionStyleProps,\n IChoiceGroupOptionStyles\n>(ChoiceGroupOptionBase, getStyles, undefined, { scope: 'ChoiceGroupOption' });\n","import * as React from 'react';\n\nimport { Label } from '../../Label';\nimport {\n initializeComponentRef,\n warnDeprecations,\n warnMutuallyExclusive,\n classNamesFunction,\n find,\n getId,\n isControlled,\n getNativeProps,\n divProperties,\n setFocusVisibility,\n} from '../../Utilities';\nimport {\n IChoiceGroup,\n IChoiceGroupOption,\n IChoiceGroupProps,\n IChoiceGroupStyleProps,\n IChoiceGroupStyles,\n} from './ChoiceGroup.types';\nimport { ChoiceGroupOption, IChoiceGroupOptionProps } from './ChoiceGroupOption/index';\n\nconst getClassNames = classNamesFunction<IChoiceGroupStyleProps, IChoiceGroupStyles>();\n\nexport interface IChoiceGroupState {\n /**\n * Current selected option, for **internal use only**.\n * External users should access `IChoiceGroup.checkedOption` instead.\n */\n // TODO (Fabric 8?) - once we removed the checked property from individual options,\n // we can probably store only the uncontrolled value in the state (right now it tracks\n // the value regardless of controlled/uncontrolled--though if controlled, it only updates\n // the value in state when the selectedKey prop updates)\n keyChecked?: string | number;\n\n /** Is set when the control has focus. */\n keyFocused?: string | number;\n}\n\n/**\n * {@docCategory ChoiceGroup}\n */\nexport class ChoiceGroupBase extends React.Component<IChoiceGroupProps, IChoiceGroupState> implements IChoiceGroup {\n private _id: string;\n private _labelId: string;\n private _focusCallbacks: { [key: string]: IChoiceGroupOptionProps['onFocus'] } = {};\n private _changeCallbacks: { [key: string]: IChoiceGroupOptionProps['onBlur'] } = {};\n\n constructor(props: IChoiceGroupProps) {\n super(props);\n\n initializeComponentRef(this);\n\n if (process.env.NODE_ENV !== 'production') {\n warnDeprecations('ChoiceGroup', props, { onChanged: 'onChange' });\n warnMutuallyExclusive('ChoiceGroup', props, {\n selectedKey: 'defaultSelectedKey',\n });\n }\n\n const { defaultSelectedKey, options = [] } = props;\n const validDefaultSelectedKey =\n !_isControlled(props) &&\n defaultSelectedKey !== undefined &&\n options.some(option => option.key === defaultSelectedKey);\n\n this.state = {\n keyChecked: validDefaultSelectedKey ? defaultSelectedKey : this._getKeyChecked(props),\n };\n\n this._id = getId('ChoiceGroup');\n this._labelId = getId('ChoiceGroupLabel');\n }\n\n /**\n * Gets the current checked option.\n */\n public get checkedOption(): IChoiceGroupOption | undefined {\n const { options = [] } = this.props;\n return find(options, (value: IChoiceGroupOption) => value.key === this.state.keyChecked);\n }\n\n public componentDidUpdate(prevProps: IChoiceGroupProps, prevState: IChoiceGroupState): void {\n // Only update if a new props object has been passed in (don't care about state updates)\n if (prevProps !== this.props) {\n const newKeyChecked = this._getKeyChecked(this.props);\n const oldKeyChecked = this._getKeyChecked(prevProps);\n\n if (newKeyChecked !== oldKeyChecked) {\n this.setState({\n keyChecked: newKeyChecked,\n });\n }\n }\n }\n\n public render(): JSX.Element {\n const { className, theme, styles, options = [], label, required, disabled, name } = this.props;\n const { keyChecked, keyFocused } = this.state;\n\n const divProps = getNativeProps<React.HTMLAttributes<HTMLDivElement>>(this.props, divProperties, [\n 'onChange',\n 'className',\n 'required',\n ]);\n\n const classNames = getClassNames(styles!, {\n theme: theme!,\n className,\n optionsContainIconOrImage: options.some(option => !!(option.iconProps || option.imageSrc)),\n });\n\n const labelId = this._id + '-label';\n const ariaLabelledBy = this.props.ariaLabelledBy || (label ? labelId : this.props['aria-labelledby']);\n\n // TODO (Fabric 8?) - if possible, move `root` class to the actual root and eliminate\n // `applicationRole` class (but the div structure will stay the same by necessity)\n return (\n // eslint-disable-next-line deprecation/deprecation\n <div className={classNames.applicationRole} {...divProps}>\n <div\n className={classNames.root}\n role=\"radiogroup\"\n {...(ariaLabelledBy && { 'aria-labelledby': ariaLabelledBy })}\n >\n {label && (\n <Label className={classNames.label} required={required} id={labelId} disabled={disabled}>\n {label}\n </Label>\n )}\n <div className={classNames.flexContainer}>\n {options.map((option: IChoiceGroupOption) => {\n const innerOptionProps = {\n ...option,\n focused: option.key === keyFocused,\n checked: option.key === keyChecked,\n disabled: option.disabled || disabled,\n id: this._getOptionId(option),\n labelId: this._getOptionLabelId(option),\n name: name || this._id,\n required,\n };\n\n return (\n <ChoiceGroupOption\n key={option.key}\n onBlur={this._onBlur}\n onFocus={this._onFocus(option.key)}\n onChange={this._onChange(option.key)}\n {...innerOptionProps}\n />\n );\n })}\n </div>\n </div>\n </div>\n );\n }\n\n public focus() {\n const { options = [] } = this.props;\n const optionToFocus = this.checkedOption || options.filter(option => !option.disabled)[0];\n const elementToFocus = optionToFocus && document.getElementById(this._getOptionId(optionToFocus));\n if (elementToFocus) {\n elementToFocus.focus();\n setFocusVisibility(true, elementToFocus as Element);\n }\n }\n\n private _onFocus(key: string) {\n // This extra mess is necessary because React won't pass the `key` prop through to ChoiceGroupOption\n if (!this._focusCallbacks[key]) {\n this._focusCallbacks[key] = (\n ev: React.FocusEvent<HTMLElement | HTMLInputElement>,\n option: IChoiceGroupOption,\n ) => {\n this.setState({\n keyFocused: key,\n });\n };\n }\n return this._focusCallbacks[key];\n }\n\n private _onBlur = (ev: React.FocusEvent<HTMLElement>, option: IChoiceGroupOption) => {\n this.setState({\n keyFocused: undefined,\n });\n };\n\n private _onChange(key: string) {\n // This extra mess is necessary because React won't pass the `key` prop through to ChoiceGroupOption\n if (!this._changeCallbacks[key]) {\n this._changeCallbacks[key] = (\n evt: React.FormEvent<HTMLElement | HTMLInputElement>,\n option: IChoiceGroupOption,\n ) => {\n // eslint-disable-next-line deprecation/deprecation\n const { onChanged, onChange } = this.props;\n\n // Only manage state in uncontrolled scenarios.\n if (!_isControlled(this.props)) {\n this.setState({\n keyChecked: key,\n });\n }\n\n // Get the original option without the `key` prop removed\n const originalOption = find(this.props.options || [], (value: IChoiceGroupOption) => value.key === key);\n\n // TODO: onChanged deprecated, remove else if after 07/17/2017 when onChanged has been removed.\n if (onChange) {\n onChange(evt, originalOption);\n } else if (onChanged) {\n onChanged(originalOption!, evt);\n }\n };\n }\n return this._changeCallbacks[key];\n }\n\n /**\n * Returns `selectedKey` if provided, or the key of the first option with the `checked` prop set.\n */\n private _getKeyChecked(props: IChoiceGroupProps): string | number | undefined {\n if (props.selectedKey !== undefined) {\n return props.selectedKey;\n }\n\n const { options = [] } = props;\n // eslint-disable-next-line deprecation/deprecation\n const optionsChecked = options.filter((option: IChoiceGroupOption) => option.checked);\n return optionsChecked[0] && optionsChecked[0].key;\n }\n\n private _getOptionId(option: IChoiceGroupOption): string {\n return option.id || `${this._id}-${option.key}`;\n }\n\n private _getOptionLabelId(option: IChoiceGroupOption): string {\n return option.labelId || `${this._labelId}-${option.key}`;\n }\n}\n\nfunction _isControlled(props: IChoiceGroupProps): boolean {\n return isControlled(props, 'selectedKey');\n}\n","import { IChoiceGroupStyleProps, IChoiceGroupStyles } from './ChoiceGroup.types';\nimport { getGlobalClassNames } from '../../Styling';\n\nconst GlobalClassNames = {\n root: 'ms-ChoiceFieldGroup',\n flexContainer: 'ms-ChoiceFieldGroup-flexContainer',\n};\n\nexport const getStyles = (props: IChoiceGroupStyleProps): IChoiceGroupStyles => {\n const { className, optionsContainIconOrImage, theme } = props;\n\n const classNames = getGlobalClassNames(GlobalClassNames, theme);\n\n return {\n // TODO (Fabric 8?) - merge className back into `root` and apply root style to\n // the actual root role=application element\n applicationRole: className,\n root: [\n classNames.root,\n theme.fonts.medium,\n {\n display: 'block',\n },\n ],\n flexContainer: [\n classNames.flexContainer,\n optionsContainIconOrImage && {\n display: 'flex',\n flexDirection: 'row',\n flexWrap: 'wrap',\n },\n ],\n };\n};\n","import * as React from 'react';\nimport { styled } from '../../Utilities';\nimport { ChoiceGroupBase } from './ChoiceGroup.base';\nimport { IChoiceGroupProps, IChoiceGroupStyles, IChoiceGroupStyleProps } from './ChoiceGroup.types';\nimport { getStyles } from './ChoiceGroup.styles';\n\nexport const ChoiceGroup: React.FunctionComponent<IChoiceGroupProps> = styled<\n IChoiceGroupProps,\n IChoiceGroupStyleProps,\n IChoiceGroupStyles\n>(ChoiceGroupBase, getStyles, undefined, { scope: 'ChoiceGroup' });\n","import { IDropdownOption, DropdownMenuItemType } from '../Dropdown.types';\n\n/**\n * A utility class to cache size and position in cache.\n *\n * Dropdown options has non-selectable display types. It is therefore not cheap to determine\n * the total number of actual selectable options as well as the position an option is in the\n * list of options - O(n) cost for each lookup.\n *\n * Given that we potentially have to make this determination on every single render pass, this\n * cache should provide a little bit of relief.\n */\nexport class DropdownSizePosCache {\n private _cachedOptions: IDropdownOption[];\n private _displayOnlyOptionsCache: number[];\n private _size = 0;\n\n /**\n * Invalidates the cache and recalculate the size of selectable options.\n */\n public updateOptions(options: IDropdownOption[]) {\n const displayOnlyOptionsCache = [];\n let size = 0;\n for (let i = 0; i < options.length; i++) {\n if (options[i].itemType === DropdownMenuItemType.Divider || options[i].itemType === DropdownMenuItemType.Header) {\n displayOnlyOptionsCache.push(i);\n } else if (!options[i].hidden) {\n size++;\n }\n }\n\n this._size = size;\n this._displayOnlyOptionsCache = displayOnlyOptionsCache;\n this._cachedOptions = [...options];\n }\n\n /**\n * The size of all the selectable options.\n */\n public get optionSetSize(): number {\n return this._size;\n }\n\n /**\n * The chached options array.\n */\n public get cachedOptions(): IDropdownOption[] {\n return this._cachedOptions;\n }\n\n /**\n * Returns the position of this option element relative to the full set of selectable option elements.\n * Note: the first selectable element is position 1 in the set.\n * @param index The raw index of the option element.\n */\n public positionInSet(index: number | undefined): number | undefined {\n if (index === undefined) {\n return undefined;\n }\n\n // we could possibly memoize this too but this should be good enough, most of the time (the expectation is that\n // when you have a lot of options, the selectable options will heavily dominate over the non-selectable options.\n let offset = 0;\n while (index > this._displayOnlyOptionsCache[offset]) {\n offset++;\n }\n\n if (this._displayOnlyOptionsCache[offset] === index) {\n throw new Error(`Unexpected: Option at index ${index} is not a selectable element.`);\n }\n\n return index - offset + 1;\n }\n}\n","declare function setTimeout(callback: (...args: any[]) => void, ms: number, ...args: any[]): number;\n\nimport * as React from 'react';\nimport {\n IStyleFunctionOrObject,\n KeyCodes,\n classNamesFunction,\n divProperties,\n findIndex,\n getDocument,\n getFirstFocusable,\n getId,\n getLastFocusable,\n getNativeProps,\n initializeComponentRef,\n isIOS,\n isMac,\n mergeAriaAttributeValues,\n safeRequestAnimationFrame,\n warn,\n warnDeprecations,\n warnMutuallyExclusive,\n} from '../../Utilities';\nimport { Callout } from '../../Callout';\nimport { Checkbox, ICheckboxStyleProps, ICheckboxStyles } from '../../Checkbox';\nimport { CommandButton } from '../../Button';\nimport { DirectionalHint } from '../../common/DirectionalHint';\nimport {\n DropdownMenuItemType,\n IDropdownOption,\n IDropdownProps,\n IDropdownStyleProps,\n IDropdownStyles,\n IDropdown,\n} from './Dropdown.types';\nimport { DropdownSizePosCache } from './utilities/DropdownSizePosCache';\nimport { FocusZone, FocusZoneDirection } from '../../FocusZone';\nimport { ICalloutPositionedInfo, RectangleEdge } from '../../utilities/positioning';\nimport { Icon } from '../../Icon';\nimport { ILabelStyleProps, ILabelStyles, Label } from '../../Label';\nimport { IProcessedStyleSet } from '../../Styling';\nimport { IWithResponsiveModeState } from '../../utilities/decorators/withResponsiveMode';\nimport { KeytipData } from '../../KeytipData';\nimport { Panel, IPanelStyleProps, IPanelStyles } from '../../Panel';\nimport { ResponsiveMode, withResponsiveMode } from '../../utilities/decorators/withResponsiveMode';\nimport {\n SelectableOptionMenuItemType,\n getAllSelectedOptions,\n ISelectableDroppableTextProps,\n} from '../../utilities/selectableOption/index';\n\nconst COMPONENT_NAME = 'Dropdown';\nconst getClassNames = classNamesFunction<IDropdownStyleProps, IDropdownStyles>();\n\n/** Internal only props interface to support mixing in responsive mode */\nexport interface IDropdownInternalProps extends IDropdownProps, IWithResponsiveModeState {}\n\nexport interface IDropdownState {\n isOpen: boolean;\n selectedIndices: number[];\n /** Whether the root dropdown element has focus. */\n hasFocus: boolean;\n calloutRenderEdge?: RectangleEdge;\n}\n\n@withResponsiveMode\nexport class DropdownBase extends React.Component<IDropdownInternalProps, IDropdownState> implements IDropdown {\n public static defaultProps = {\n options: [] as any[],\n };\n\n private _host = React.createRef<HTMLDivElement>();\n private _focusZone = React.createRef<FocusZone>();\n private _dropDown = React.createRef<HTMLDivElement>();\n private _id: string;\n private _labelId: string;\n private _listId: string;\n private _optionId: string;\n private _isScrollIdle: boolean;\n private readonly _scrollIdleDelay: number = 250 /* ms */;\n private _scrollIdleTimeoutId: number | undefined;\n /** True if the most recent keydown event was for alt (option) or meta (command). */\n private _lastKeyDownWasAltOrMeta: boolean | undefined;\n private _sizePosCache: DropdownSizePosCache = new DropdownSizePosCache();\n private _classNames: IProcessedStyleSet<IDropdownStyles>;\n private _requestAnimationFrame = safeRequestAnimationFrame(this);\n /** Flag for when we get the first mouseMove */\n private _gotMouseMove: boolean;\n /** Flag for tracking whether focus is triggered by click (alternatively triggered by keyboard nav) */\n private _isFocusedByClick: boolean;\n\n constructor(props: IDropdownProps) {\n super(props);\n\n initializeComponentRef(this);\n\n const { multiSelect, selectedKey, selectedKeys, defaultSelectedKey, defaultSelectedKeys, options } = props;\n\n if (process.env.NODE_ENV !== 'production') {\n warnDeprecations(COMPONENT_NAME, props, {\n isDisabled: 'disabled',\n onChanged: 'onChange',\n placeHolder: 'placeholder',\n onRenderPlaceHolder: 'onRenderPlaceholder',\n });\n\n warnMutuallyExclusive(COMPONENT_NAME, props, {\n defaultSelectedKey: 'selectedKey',\n defaultSelectedKeys: 'selectedKeys',\n selectedKeys: 'selectedKey',\n });\n\n if (multiSelect) {\n const warnMultiSelect = (prop: keyof IDropdownProps) =>\n warn(`Dropdown property '${prop}' cannot be used when 'multiSelect' is true. Use '${prop}s' instead.`);\n if (selectedKey !== undefined) {\n warnMultiSelect('selectedKey');\n }\n if (defaultSelectedKey !== undefined) {\n warnMultiSelect('defaultSelectedKey');\n }\n } else {\n const warnNotMultiSelect = (prop: keyof IDropdownProps) =>\n warn(`Dropdown property '${prop}s' cannot be used when 'multiSelect' is false/unset. Use '${prop}' instead.`);\n if (selectedKeys !== undefined) {\n warnNotMultiSelect('selectedKey');\n }\n if (defaultSelectedKeys !== undefined) {\n warnNotMultiSelect('defaultSelectedKey');\n }\n }\n }\n\n this._id = props.id || getId('Dropdown');\n this._labelId = this._id + '-label';\n this._listId = this._id + '-list';\n this._optionId = this._id + '-option';\n this._isScrollIdle = true;\n\n let selectedIndices: number[];\n\n if (multiSelect) {\n selectedIndices = this._getSelectedIndexes(\n options,\n defaultSelectedKeys !== undefined ? defaultSelectedKeys : selectedKeys,\n );\n } else {\n selectedIndices = this._getSelectedIndexes(\n options,\n (defaultSelectedKey !== undefined ? defaultSelectedKey : selectedKey)!,\n );\n }\n\n this._sizePosCache.updateOptions(options);\n\n this.state = {\n isOpen: false,\n selectedIndices,\n hasFocus: false,\n calloutRenderEdge: undefined,\n };\n }\n\n /**\n * All selected options\n */\n public get selectedOptions(): IDropdownOption[] {\n const { options } = this.props;\n const { selectedIndices } = this.state;\n\n return getAllSelectedOptions(options, selectedIndices);\n }\n\n public componentWillUnmount() {\n clearTimeout(this._scrollIdleTimeoutId);\n }\n\n public UNSAFE_componentWillReceiveProps(newProps: IDropdownProps): void {\n // In controlled component usage where selectedKey is provided, update the selectedIndex\n // state if the key or options change.\n let selectedKeyProp: 'defaultSelectedKeys' | 'selectedKeys' | 'defaultSelectedKey' | 'selectedKey';\n\n // this does a shallow compare (assumes options are pure), for the purposes of determining whether\n // defaultSelectedKey/defaultSelectedKeys are respected.\n const didOptionsChange = newProps.options !== this.props.options;\n\n if (newProps.multiSelect) {\n if (didOptionsChange && newProps.defaultSelectedKeys !== undefined) {\n selectedKeyProp = 'defaultSelectedKeys';\n } else {\n selectedKeyProp = 'selectedKeys';\n }\n } else {\n if (didOptionsChange && newProps.defaultSelectedKey !== undefined) {\n selectedKeyProp = 'defaultSelectedKey';\n } else {\n selectedKeyProp = 'selectedKey';\n }\n }\n\n if (\n newProps[selectedKeyProp] !== undefined &&\n (newProps[selectedKeyProp] !== this.props[selectedKeyProp] || didOptionsChange)\n ) {\n this.setState({\n selectedIndices: this._getSelectedIndexes(newProps.options, newProps[selectedKeyProp]),\n });\n }\n }\n\n public componentDidUpdate(prevProps: IDropdownProps, prevState: IDropdownState) {\n if (prevState.isOpen === true && this.state.isOpen === false) {\n this._gotMouseMove = false;\n\n if (this.props.onDismiss) {\n this.props.onDismiss();\n }\n }\n }\n\n public render(): JSX.Element {\n const id = this._id;\n\n const props = this.props;\n const {\n className,\n label,\n options,\n ariaLabel,\n required,\n errorMessage,\n keytipProps,\n styles: propStyles,\n theme,\n panelProps,\n calloutProps,\n onRenderTitle = this._getTitle,\n onRenderContainer = this._onRenderContainer,\n onRenderCaretDown = this._onRenderCaretDown,\n onRenderLabel = this._onRenderLabel,\n } = props;\n const { isOpen, selectedIndices, calloutRenderEdge, hasFocus } = this.state;\n // eslint-disable-next-line deprecation/deprecation\n const onRenderPlaceholder = props.onRenderPlaceholder || props.onRenderPlaceHolder || this._getPlaceholder;\n\n // If our cached options are out of date update our cache\n if (options !== this._sizePosCache.cachedOptions) {\n this._sizePosCache.updateOptions(options);\n }\n\n const selectedOptions = getAllSelectedOptions(options, selectedIndices);\n const divProps = getNativeProps(props, divProperties);\n\n const disabled = this._isDisabled();\n\n const errorMessageId = id + '-errorMessage';\n const ariaActiveDescendant = disabled\n ? undefined\n : isOpen && selectedIndices.length === 1 && selectedIndices[0] >= 0\n ? this._listId + selectedIndices[0]\n : undefined;\n\n this._classNames = getClassNames(propStyles, {\n theme,\n className,\n hasError: !!(errorMessage && errorMessage.length > 0),\n hasLabel: !!label,\n isOpen,\n required,\n disabled,\n isRenderingPlaceholder: !selectedOptions.length,\n panelClassName: panelProps?.className,\n calloutClassName: calloutProps?.className,\n calloutRenderEdge: calloutRenderEdge,\n });\n\n const hasErrorMessage: boolean = !!errorMessage && errorMessage.length > 0;\n\n return (\n <div className={this._classNames.root}>\n {onRenderLabel(this.props, this._onRenderLabel)}\n <KeytipData keytipProps={keytipProps} disabled={disabled}>\n {(keytipAttributes: any): JSX.Element => (\n <div\n {...keytipAttributes}\n data-is-focusable={!disabled}\n ref={this._dropDown}\n id={id}\n tabIndex={disabled ? -1 : 0}\n role=\"combobox\"\n aria-haspopup=\"listbox\"\n aria-expanded={isOpen ? 'true' : 'false'}\n aria-label={ariaLabel}\n aria-labelledby={\n label && !ariaLabel ? mergeAriaAttributeValues(this._labelId, this._optionId) : undefined\n }\n aria-describedby={mergeAriaAttributeValues(\n keytipAttributes['aria-describedby'],\n hasErrorMessage ? this._id + '-errorMessage' : undefined,\n )}\n aria-activedescendant={ariaActiveDescendant}\n aria-required={required}\n aria-disabled={disabled}\n aria-controls={isOpen ? this._listId : undefined}\n {...divProps}\n className={this._classNames.dropdown}\n onBlur={this._onDropdownBlur}\n onKeyDown={this._onDropdownKeyDown}\n onKeyUp={this._onDropdownKeyUp}\n onClick={this._onDropdownClick}\n onMouseDown={this._onDropdownMouseDown}\n onFocus={this._onFocus}\n >\n <span\n id={this._optionId}\n className={this._classNames.title}\n aria-live={hasFocus ? 'polite' : undefined}\n aria-atomic={hasFocus ? true : undefined}\n >\n {// If option is selected render title, otherwise render the placeholder text\n selectedOptions.length\n ? onRenderTitle(selectedOptions, this._onRenderTitle)\n : onRenderPlaceholder(props, this._onRenderPlaceholder)}\n </span>\n <span className={this._classNames.caretDownWrapper}>\n {onRenderCaretDown(props, this._onRenderCaretDown)}\n </span>\n </div>\n )}\n </KeytipData>\n {isOpen && onRenderContainer({ ...props, onDismiss: this._onDismiss }, this._onRenderContainer)}\n {hasErrorMessage && (\n <div role=\"alert\" id={errorMessageId} className={this._classNames.errorMessage}>\n {errorMessage}\n </div>\n )}\n </div>\n );\n }\n\n public focus(shouldOpenOnFocus?: boolean): void {\n if (this._dropDown.current) {\n this._dropDown.current.focus();\n\n if (shouldOpenOnFocus) {\n this.setState({\n isOpen: true,\n });\n }\n }\n }\n\n public setSelectedIndex(event: React.FormEvent<HTMLDivElement>, index: number): void {\n const { options, selectedKey, selectedKeys, multiSelect, notifyOnReselect } = this.props;\n const { selectedIndices = [] } = this.state;\n const checked: boolean = selectedIndices ? selectedIndices.indexOf(index) > -1 : false;\n let newIndexes: number[] = [];\n\n index = Math.max(0, Math.min(options.length - 1, index));\n\n // If this is a controlled component then no state change should take place.\n if (selectedKey !== undefined || selectedKeys !== undefined) {\n this._onChange(event, options, index, checked, multiSelect);\n return;\n }\n\n if (!multiSelect && !notifyOnReselect && index === selectedIndices[0]) {\n return;\n } else if (multiSelect) {\n newIndexes = selectedIndices ? this._copyArray(selectedIndices) : [];\n if (checked) {\n const position = newIndexes.indexOf(index);\n if (position > -1) {\n // unchecked the current one\n newIndexes.splice(position, 1);\n }\n } else {\n // add the new selected index into the existing one\n newIndexes.push(index);\n }\n } else {\n // Set the selected option if this is an uncontrolled component\n newIndexes = [index];\n }\n\n event.persist();\n // Call onChange after state is updated\n this.setState(\n {\n selectedIndices: newIndexes,\n },\n () => {\n this._onChange(event, options, index, checked, multiSelect);\n },\n );\n }\n\n private _onChange = (\n event: React.FormEvent<HTMLDivElement>,\n options: IDropdownOption[],\n index: number,\n checked?: boolean,\n multiSelect?: boolean,\n ) => {\n // eslint-disable-next-line deprecation/deprecation\n const { onChange, onChanged } = this.props;\n if (onChange || onChanged) {\n // for single-select, option passed in will always be selected.\n // for multi-select, flip the checked value\n const changedOpt = multiSelect ? { ...options[index], selected: !checked } : options[index];\n\n onChange && onChange({ ...event, target: this._dropDown.current as EventTarget }, changedOpt, index);\n onChanged && onChanged(changedOpt, index);\n }\n };\n\n /** Get either props.placeholder (new name) or props.placeHolder (old name) */\n private _getPlaceholder = (): string | undefined => {\n // eslint-disable-next-line deprecation/deprecation\n return this.props.placeholder || this.props.placeHolder;\n };\n\n private _copyArray(array: any[]): any[] {\n const newArray = [];\n for (const element of array) {\n newArray.push(element);\n }\n return newArray;\n }\n\n /**\n * Finds the next valid Dropdown option and sets the selected index to it.\n * @param stepValue - Value of how many items the function should traverse. Should be -1 or 1.\n * @param index - Index of where the search should start\n * @param selectedIndex - The selectedIndex Dropdown's state\n * @returns The next valid dropdown option's index\n */\n private _moveIndex(\n event: React.FormEvent<HTMLDivElement>,\n stepValue: number,\n index: number,\n selectedIndex: number,\n ): number {\n const { options } = this.props;\n // Return selectedIndex if nothing has changed or options is empty\n if (selectedIndex === index || options.length === 0) {\n return selectedIndex;\n }\n\n // If the user is pressing the up or down key we want to make\n // sure that the dropdown cycles through the options without\n // causing the screen to scroll. In _onDropdownKeyDown\n // at the very end is a check to see if newIndex !== selectedIndex.\n // If the index is less than 0 and we set it back to 0, then\n // newIndex will equal selectedIndex and not stop the action\n // of the key press happening and vice versa for indexes greater\n // than or equal to the options length.\n if (index >= options.length) {\n index = 0;\n } else if (index < 0) {\n index = options.length - 1;\n }\n\n let stepCounter = 0;\n // If current index is a header or divider, or disabled, increment by step\n while (\n options[index].itemType === DropdownMenuItemType.Header ||\n options[index].itemType === DropdownMenuItemType.Divider ||\n options[index].disabled\n ) {\n // If stepCounter exceeds length of options, then return selectedIndex (-1)\n if (stepCounter >= options.length) {\n return selectedIndex;\n }\n // If index + stepValue is out of bounds, wrap around\n if (index + stepValue < 0) {\n index = options.length;\n } else if (index + stepValue >= options.length) {\n index = -1;\n }\n\n index = index + stepValue;\n stepCounter++;\n }\n\n this.setSelectedIndex(event, index);\n return index;\n }\n\n /** Get text in dropdown input as a string */\n private _getTitle = (items: IDropdownOption[], _unused?: unknown): string => {\n const { multiSelectDelimiter = ', ' } = this.props;\n return items.map(i => i.text).join(multiSelectDelimiter);\n };\n\n /** Render text in dropdown input */\n private _onRenderTitle = (items: IDropdownOption[]): JSX.Element => {\n return <>{this._getTitle(items)}</>;\n };\n\n /** Render placeholder text in dropdown input */\n private _onRenderPlaceholder = (props: IDropdownProps): JSX.Element | null => {\n if (!this._getPlaceholder()) {\n return null;\n }\n return <>{this._getPlaceholder()}</>;\n };\n\n /** Render Callout or Panel container and pass in list */\n private _onRenderContainer = (props: ISelectableDroppableTextProps<IDropdown, HTMLDivElement>): JSX.Element => {\n const { calloutProps, panelProps } = props;\n const { responsiveMode, dropdownWidth } = this.props;\n\n const isSmall = responsiveMode! <= ResponsiveMode.medium;\n\n const panelStyles = this._classNames.subComponentStyles\n ? (this._classNames.subComponentStyles.panel as IStyleFunctionOrObject<IPanelStyleProps, IPanelStyles>)\n : undefined;\n\n let calloutWidth = undefined;\n let calloutMinWidth = undefined;\n if (dropdownWidth === 'auto') {\n calloutMinWidth = this._dropDown.current ? this._dropDown.current.clientWidth : 0;\n } else {\n calloutWidth = dropdownWidth || (this._dropDown.current ? this._dropDown.current.clientWidth : 0);\n }\n\n return isSmall ? (\n <Panel\n isOpen={true}\n isLightDismiss={true}\n onDismiss={this._onDismiss}\n hasCloseButton={false}\n styles={panelStyles}\n {...panelProps}\n >\n {this._renderFocusableList(props)}\n </Panel>\n ) : (\n <Callout\n isBeakVisible={false}\n gapSpace={0}\n doNotLayer={false}\n directionalHintFixed={false}\n directionalHint={DirectionalHint.bottomLeftEdge}\n calloutWidth={calloutWidth}\n calloutMinWidth={calloutMinWidth}\n {...calloutProps}\n className={this._classNames.callout}\n target={this._dropDown.current}\n onDismiss={this._onDismiss}\n onScroll={this._onScroll}\n onPositioned={this._onPositioned}\n >\n {this._renderFocusableList(props)}\n </Callout>\n );\n };\n\n /** Render Caret Down Icon */\n private _onRenderCaretDown = (props: IDropdownProps): JSX.Element => {\n return <Icon className={this._classNames.caretDown} iconName=\"ChevronDown\" aria-hidden={true} />;\n };\n\n /** Wrap item list in a FocusZone */\n private _renderFocusableList(props: ISelectableDroppableTextProps<IDropdown, HTMLDivElement>): JSX.Element {\n const { onRenderList = this._onRenderList, label, ariaLabel, multiSelect } = props;\n\n return (\n <div\n className={this._classNames.dropdownItemsWrapper}\n onKeyDown={this._onZoneKeyDown}\n onKeyUp={this._onZoneKeyUp}\n ref={this._host}\n tabIndex={0}\n >\n <FocusZone\n ref={this._focusZone}\n direction={FocusZoneDirection.vertical}\n id={this._listId}\n className={this._classNames.dropdownItems}\n role=\"listbox\"\n aria-label={ariaLabel}\n aria-labelledby={label && !ariaLabel ? this._labelId : undefined}\n aria-multiselectable={multiSelect}\n >\n {onRenderList(props, this._onRenderList)}\n </FocusZone>\n </div>\n );\n }\n\n /** Render List of items */\n private _onRenderList = (props: ISelectableDroppableTextProps<IDropdown, HTMLDivElement>): JSX.Element => {\n const { onRenderItem = this._onRenderItem } = props;\n\n let queue: { id?: string; items: JSX.Element[] } = { items: [] };\n let renderedList: JSX.Element[] = [];\n\n const emptyQueue = (): void => {\n const newGroup = queue.id\n ? [\n <div role=\"group\" key={queue.id} aria-labelledby={queue.id}>\n {queue.items}\n </div>,\n ]\n : queue.items;\n\n renderedList = [...renderedList, ...newGroup];\n // Flush items and id\n queue = { items: [] };\n };\n\n const placeRenderedOptionIntoQueue = (item: IDropdownOption, index: number) => {\n /*\n Case Header\n empty queue if it's not already empty\n ensure unique ID for header and set queue ID\n push header into queue\n Case Divider\n push divider into queue if not first item\n empty queue if not already empty\n Default\n push item into queue\n */\n switch (item.itemType) {\n case SelectableOptionMenuItemType.Header:\n queue.items.length > 0 && emptyQueue();\n\n const id = this._id + item.key;\n queue.items.push(onRenderItem({ id, ...item, index }, this._onRenderItem)!);\n queue.id = id;\n break;\n case SelectableOptionMenuItemType.Divider:\n index > 0 && queue.items.push(onRenderItem({ ...item, index }, this._onRenderItem)!);\n\n queue.items.length > 0 && emptyQueue();\n break;\n default:\n queue.items.push(onRenderItem({ ...item, index }, this._onRenderItem)!);\n }\n };\n\n // Place options into the queue. Queue will be emptied anytime a Header or Divider is encountered\n props.options.forEach((item: IDropdownOption, index: number) => {\n placeRenderedOptionIntoQueue(item, index);\n });\n\n // Push remaining items into all renderedList\n queue.items.length > 0 && emptyQueue();\n\n return <>{renderedList}</>;\n };\n\n private _onRenderItem = (item: IDropdownOption): JSX.Element | null => {\n switch (item.itemType) {\n case SelectableOptionMenuItemType.Divider:\n return this._renderSeparator(item);\n case SelectableOptionMenuItemType.Header:\n return this._renderHeader(item);\n default:\n return this._renderOption(item);\n }\n };\n\n private _renderSeparator(item: IDropdownOption): JSX.Element | null {\n const { index, key } = item;\n if (index! > 0) {\n return <div role=\"separator\" key={key} className={this._classNames.dropdownDivider} />;\n }\n return null;\n }\n\n private _renderHeader(item: IDropdownOption): JSX.Element {\n const { onRenderOption = this._onRenderOption } = this.props;\n const { key, id } = item;\n return (\n <div id={id} key={key} className={this._classNames.dropdownItemHeader}>\n {onRenderOption(item, this._onRenderOption)}\n </div>\n );\n }\n\n private _renderOption = (item: IDropdownOption): JSX.Element => {\n const { onRenderOption = this._onRenderOption } = this.props;\n const { selectedIndices = [] } = this.state;\n const isItemSelected =\n item.index !== undefined && selectedIndices ? selectedIndices.indexOf(item.index) > -1 : false;\n\n // select the right className based on the combination of selected/disabled\n const itemClassName = item.hidden // predicate: item hidden\n ? this._classNames.dropdownItemHidden\n : isItemSelected && item.disabled === true // predicate: both selected and disabled\n ? this._classNames.dropdownItemSelectedAndDisabled\n : isItemSelected // predicate: selected only\n ? this._classNames.dropdownItemSelected\n : item.disabled === true // predicate: disabled only\n ? this._classNames.dropdownItemDisabled\n : this._classNames.dropdownItem;\n\n const { title = item.text } = item;\n\n const multiSelectItemStyles = this._classNames.subComponentStyles\n ? (this._classNames.subComponentStyles.multiSelectItem as IStyleFunctionOrObject<\n ICheckboxStyleProps,\n ICheckboxStyles\n >)\n : undefined;\n\n return !this.props.multiSelect ? (\n <CommandButton\n id={this._listId + item.index}\n key={item.key}\n data-index={item.index}\n data-is-focusable={!item.disabled}\n disabled={item.disabled}\n className={itemClassName}\n onClick={this._onItemClick(item)}\n // eslint-disable-next-line react/jsx-no-bind\n onMouseEnter={this._onItemMouseEnter.bind(this, item)}\n // eslint-disable-next-line react/jsx-no-bind\n onMouseLeave={this._onMouseItemLeave.bind(this, item)}\n // eslint-disable-next-line react/jsx-no-bind\n onMouseMove={this._onItemMouseMove.bind(this, item)}\n role=\"option\"\n aria-selected={isItemSelected ? 'true' : 'false'}\n ariaLabel={item.ariaLabel}\n title={title}\n aria-posinset={this._sizePosCache.positionInSet(item.index)}\n aria-setsize={this._sizePosCache.optionSetSize}\n >\n {onRenderOption(item, this._onRenderOption)}\n </CommandButton>\n ) : (\n <Checkbox\n id={this._listId + item.index}\n key={item.key}\n disabled={item.disabled}\n onChange={this._onItemClick(item)}\n inputProps={{\n 'aria-selected': isItemSelected,\n onMouseEnter: this._onItemMouseEnter.bind(this, item),\n onMouseLeave: this._onMouseItemLeave.bind(this, item),\n onMouseMove: this._onItemMouseMove.bind(this, item),\n role: 'option',\n ...({\n 'data-index': item.index,\n 'data-is-focusable': !item.disabled,\n } as any),\n }}\n label={item.text}\n title={title}\n // eslint-disable-next-line react/jsx-no-bind\n onRenderLabel={this._onRenderItemLabel.bind(this, item)}\n className={itemClassName}\n checked={isItemSelected}\n styles={multiSelectItemStyles}\n ariaPositionInSet={this._sizePosCache.positionInSet(item.index)}\n ariaSetSize={this._sizePosCache.optionSetSize}\n />\n );\n };\n\n /** Render content of item (i.e. text/icon inside of button) */\n private _onRenderOption = (item: IDropdownOption): JSX.Element => {\n return <span className={this._classNames.dropdownOptionText}>{item.text}</span>;\n };\n\n /** Render custom label for drop down item */\n private _onRenderItemLabel = (item: IDropdownOption): JSX.Element | null => {\n const { onRenderOption = this._onRenderOption } = this.props;\n return onRenderOption(item, this._onRenderOption);\n };\n\n private _onPositioned = (positions?: ICalloutPositionedInfo): void => {\n if (this._focusZone.current) {\n // Focusing an element can trigger a reflow. Making this wait until there is an animation\n // frame can improve perf significantly.\n this._requestAnimationFrame(() => {\n const selectedIndices = this.state.selectedIndices;\n if (this._focusZone.current) {\n if (selectedIndices && selectedIndices[0] && !this.props.options[selectedIndices[0]].disabled) {\n const element: HTMLElement | null = getDocument()!.getElementById(`${this._id}-list${selectedIndices[0]}`);\n if (element) {\n this._focusZone.current.focusElement(element);\n }\n } else {\n this._focusZone.current.focus();\n }\n }\n });\n }\n\n if (!this.state.calloutRenderEdge || this.state.calloutRenderEdge !== positions!.targetEdge) {\n this.setState({\n calloutRenderEdge: positions!.targetEdge,\n });\n }\n };\n\n private _onItemClick = (item: IDropdownOption): ((event: React.MouseEvent<HTMLDivElement>) => void) => {\n return (event: React.MouseEvent<HTMLDivElement>): void => {\n if (!item.disabled) {\n this.setSelectedIndex(event, item.index!);\n if (!this.props.multiSelect) {\n // only close the callout when it's in single-select mode\n this.setState({\n isOpen: false,\n });\n }\n }\n };\n };\n\n /**\n * Scroll handler for the callout to make sure the mouse events\n * for updating focus are not interacting during scroll\n */\n private _onScroll = (): void => {\n if (!this._isScrollIdle && this._scrollIdleTimeoutId !== undefined) {\n clearTimeout(this._scrollIdleTimeoutId);\n this._scrollIdleTimeoutId = undefined;\n } else {\n this._isScrollIdle = false;\n }\n\n this._scrollIdleTimeoutId = setTimeout(() => {\n this._isScrollIdle = true;\n }, this._scrollIdleDelay);\n };\n\n private _onItemMouseEnter(item: any, ev: React.MouseEvent<HTMLElement>): void {\n if (this._shouldIgnoreMouseEvent()) {\n return;\n }\n\n const targetElement = ev.currentTarget as HTMLElement;\n targetElement.focus();\n }\n\n private _onItemMouseMove(item: any, ev: React.MouseEvent<HTMLElement>): void {\n const targetElement = ev.currentTarget as HTMLElement;\n this._gotMouseMove = true;\n\n if (!this._isScrollIdle || document.activeElement === targetElement) {\n return;\n }\n\n targetElement.focus();\n }\n\n private _onMouseItemLeave = (item: any, ev: React.MouseEvent<HTMLElement>): void => {\n if (this._shouldIgnoreMouseEvent()) {\n return;\n }\n\n /**\n * IE11 focus() method forces parents to scroll to top of element.\n * Edge and IE expose a setActive() function for focusable divs that\n * sets the page focus but does not scroll the parent element.\n */\n if (this._host.current) {\n if ((this._host.current as any).setActive) {\n try {\n (this._host.current as any).setActive();\n } catch (e) {\n /* no-op */\n }\n } else {\n this._host.current.focus();\n }\n }\n };\n\n private _shouldIgnoreMouseEvent(): boolean {\n return !this._isScrollIdle || !this._gotMouseMove;\n }\n\n private _onDismiss = (): void => {\n this.setState({ isOpen: false });\n };\n\n /** Get all selected indexes for multi-select mode */\n private _getSelectedIndexes(\n options: IDropdownOption[],\n selectedKey: string | number | string[] | number[] | null | undefined,\n ): number[] {\n if (selectedKey === undefined) {\n if (this.props.multiSelect) {\n return this._getAllSelectedIndices(options);\n }\n const selectedIndex = this._getSelectedIndex(options, null);\n return selectedIndex !== -1 ? [selectedIndex] : [];\n } else if (!Array.isArray(selectedKey)) {\n const selectedIndex = this._getSelectedIndex(options, selectedKey);\n return selectedIndex !== -1 ? [selectedIndex] : [];\n }\n\n const selectedIndices: number[] = [];\n for (const key of selectedKey) {\n const selectedIndex = this._getSelectedIndex(options, key);\n selectedIndex !== -1 && selectedIndices.push(selectedIndex);\n }\n return selectedIndices;\n }\n\n private _getAllSelectedIndices(options: IDropdownOption[]): number[] {\n return options\n .map((option: IDropdownOption, index: number) => (option.selected ? index : -1))\n .filter(index => index !== -1);\n }\n\n private _getSelectedIndex(options: IDropdownOption[], selectedKey: string | number | null): number {\n return findIndex(options, option => {\n // eslint-disable-next-line eqeqeq\n if (selectedKey != null) {\n return option.key === selectedKey;\n } else {\n // eslint-disable-next-line deprecation/deprecation\n return !!option.selected || !!option.isSelected;\n }\n });\n }\n\n private _onDropdownBlur = (ev: React.FocusEvent<HTMLDivElement>): void => {\n // If Dropdown disabled do not proceed with this logic.\n const disabled = this._isDisabled();\n if (disabled) {\n return;\n }\n\n // hasFocus tracks whether the root element has focus so always update the state.\n this.setState({ hasFocus: false });\n\n if (this.state.isOpen) {\n // Do not onBlur when the callout is opened\n return;\n }\n if (this.props.onBlur) {\n this.props.onBlur(ev);\n }\n };\n\n private _onDropdownKeyDown = (ev: React.KeyboardEvent<HTMLDivElement>): void => {\n // If Dropdown disabled do not process any keyboard events.\n const disabled = this._isDisabled();\n if (disabled) {\n return;\n }\n\n // Take note if we are processing an alt (option) or meta (command) keydown.\n // See comment in _shouldHandleKeyUp for reasoning.\n this._lastKeyDownWasAltOrMeta = this._isAltOrMeta(ev);\n\n if (this.props.onKeyDown) {\n this.props.onKeyDown(ev);\n if (ev.defaultPrevented) {\n return;\n }\n }\n\n let newIndex: number | undefined;\n const selectedIndex = this.state.selectedIndices.length ? this.state.selectedIndices[0] : -1;\n const containsExpandCollapseModifier = ev.altKey || ev.metaKey;\n const isOpen = this.state.isOpen;\n\n switch (ev.which) {\n case KeyCodes.enter:\n this.setState({\n isOpen: !isOpen,\n });\n break;\n\n case KeyCodes.escape:\n if (!isOpen) {\n return;\n }\n\n this.setState({\n isOpen: false,\n });\n break;\n\n case KeyCodes.up:\n if (containsExpandCollapseModifier) {\n if (isOpen) {\n this.setState({ isOpen: false });\n break;\n }\n\n return;\n }\n if (this.props.multiSelect) {\n this.setState({ isOpen: true });\n } else if (!this._isDisabled()) {\n newIndex = this._moveIndex(ev, -1, selectedIndex - 1, selectedIndex);\n }\n break;\n\n case KeyCodes.down:\n if (containsExpandCollapseModifier) {\n ev.stopPropagation();\n ev.preventDefault();\n }\n if ((containsExpandCollapseModifier && !isOpen) || this.props.multiSelect) {\n this.setState({ isOpen: true });\n } else if (!this._isDisabled()) {\n newIndex = this._moveIndex(ev, 1, selectedIndex + 1, selectedIndex);\n }\n break;\n\n case KeyCodes.home:\n if (!this.props.multiSelect) {\n newIndex = this._moveIndex(ev, 1, 0, selectedIndex);\n }\n break;\n\n case KeyCodes.end:\n if (!this.props.multiSelect) {\n newIndex = this._moveIndex(ev, -1, this.props.options.length - 1, selectedIndex);\n }\n break;\n\n case KeyCodes.space:\n // event handled in _onDropdownKeyUp\n break;\n\n default:\n return;\n }\n\n if (newIndex !== selectedIndex) {\n ev.stopPropagation();\n ev.preventDefault();\n }\n };\n\n private _onDropdownKeyUp = (ev: React.KeyboardEvent<HTMLDivElement>): void => {\n // If Dropdown disabled do not process any keyboard events.\n const disabled = this._isDisabled();\n if (disabled) {\n return;\n }\n\n const shouldHandleKey = this._shouldHandleKeyUp(ev);\n const isOpen = this.state.isOpen;\n\n if (this.props.onKeyUp) {\n this.props.onKeyUp(ev);\n if (ev.defaultPrevented) {\n return;\n }\n }\n switch (ev.which) {\n case KeyCodes.space:\n this.setState({\n isOpen: !isOpen,\n });\n break;\n\n default:\n if (shouldHandleKey && isOpen) {\n this.setState({ isOpen: false });\n }\n return;\n }\n\n ev.stopPropagation();\n ev.preventDefault();\n };\n\n /**\n * Returns true if the key for the event is alt (Mac option) or meta (Mac command).\n */\n private _isAltOrMeta(ev: React.KeyboardEvent<HTMLElement>): boolean {\n return ev.which === KeyCodes.alt || ev.key === 'Meta';\n }\n\n /**\n * We close the menu on key up only if ALL of the following are true:\n * - Most recent key down was alt or meta (command)\n * - The alt/meta key down was NOT followed by some other key (such as down/up arrow to\n * expand/collapse the menu)\n * - We're not on a Mac (or iOS)\n *\n * This is because on Windows, pressing alt moves focus to the application menu bar or similar,\n * closing any open context menus. There is not a similar behavior on Macs.\n */\n private _shouldHandleKeyUp(ev: React.KeyboardEvent<HTMLElement>): boolean {\n const keyPressIsAltOrMetaAlone = this._lastKeyDownWasAltOrMeta && this._isAltOrMeta(ev);\n this._lastKeyDownWasAltOrMeta = false;\n return !!keyPressIsAltOrMetaAlone && !(isMac() || isIOS());\n }\n\n private _onZoneKeyDown = (ev: React.KeyboardEvent<HTMLElement>): void => {\n let elementToFocus;\n\n // Take note if we are processing an alt (option) or meta (command) keydown.\n // See comment in _shouldHandleKeyUp for reasoning.\n this._lastKeyDownWasAltOrMeta = this._isAltOrMeta(ev);\n const containsExpandCollapseModifier = ev.altKey || ev.metaKey;\n\n switch (ev.which) {\n case KeyCodes.up:\n if (containsExpandCollapseModifier) {\n this.setState({ isOpen: false });\n } else {\n if (this._host.current) {\n elementToFocus = getLastFocusable(this._host.current, this._host.current.lastChild as HTMLElement, true);\n }\n }\n break;\n\n // All directional keystrokes should be canceled when the zone is rendered.\n // This avoids the body scroll from reacting and thus dismissing the dropdown.\n case KeyCodes.home:\n case KeyCodes.end:\n case KeyCodes.pageUp:\n case KeyCodes.pageDown:\n break;\n\n case KeyCodes.down:\n if (!containsExpandCollapseModifier && this._host.current) {\n elementToFocus = getFirstFocusable(this._host.current, this._host.current.firstChild as HTMLElement, true);\n }\n break;\n\n case KeyCodes.escape:\n this.setState({ isOpen: false });\n break;\n\n case KeyCodes.tab:\n this.setState({ isOpen: false });\n return;\n\n default:\n return;\n }\n\n if (elementToFocus) {\n elementToFocus.focus();\n }\n\n ev.stopPropagation();\n ev.preventDefault();\n };\n\n private _onZoneKeyUp = (ev: React.KeyboardEvent<HTMLElement>): void => {\n const shouldHandleKey = this._shouldHandleKeyUp(ev);\n\n if (shouldHandleKey && this.state.isOpen) {\n this.setState({ isOpen: false });\n ev.preventDefault();\n }\n };\n\n private _onDropdownClick = (ev: React.MouseEvent<HTMLDivElement>): void => {\n if (this.props.onClick) {\n this.props.onClick(ev);\n if (ev.defaultPrevented) {\n return;\n }\n }\n\n const { isOpen } = this.state;\n const disabled = this._isDisabled();\n\n if (!disabled && !this._shouldOpenOnFocus()) {\n this.setState({\n isOpen: !isOpen,\n });\n }\n\n this._isFocusedByClick = false; // reset\n };\n\n private _onDropdownMouseDown = (): void => {\n this._isFocusedByClick = true;\n };\n\n private _onFocus = (ev: React.FocusEvent<HTMLDivElement>): void => {\n const disabled = this._isDisabled();\n\n if (!disabled) {\n if (this.props.onFocus) {\n this.props.onFocus(ev);\n }\n const state: Pick<IDropdownState, 'hasFocus'> | Pick<IDropdownState, 'hasFocus' | 'isOpen'> = { hasFocus: true };\n if (this._shouldOpenOnFocus()) {\n (state as Pick<IDropdownState, 'hasFocus' | 'isOpen'>).isOpen = true;\n }\n\n this.setState(state);\n }\n };\n\n /**\n * Because the isDisabled prop is deprecated, we have had to repeat this logic all over the place.\n * This helper method avoids all the repetition.\n */\n private _isDisabled: () => boolean | undefined = () => {\n let { disabled } = this.props;\n // eslint-disable-next-line deprecation/deprecation\n const { isDisabled } = this.props;\n\n // Remove this deprecation workaround at 1.0.0\n if (disabled === undefined) {\n disabled = isDisabled;\n }\n\n return disabled;\n };\n\n private _onRenderLabel = (props: IDropdownProps): JSX.Element | null => {\n const { label, required, disabled } = props;\n\n const labelStyles = this._classNames.subComponentStyles\n ? (this._classNames.subComponentStyles.label as IStyleFunctionOrObject<ILabelStyleProps, ILabelStyles>)\n : undefined;\n\n return label ? (\n <Label\n className={this._classNames.label}\n id={this._labelId}\n required={required}\n styles={labelStyles}\n disabled={disabled}\n >\n {label}\n </Label>\n ) : null;\n };\n\n /**\n * Returns true if dropdown should set to open on focus.\n * Otherwise, isOpen state should be toggled on click\n */\n private _shouldOpenOnFocus(): boolean {\n const { hasFocus } = this.state;\n const { openOnKeyboardFocus } = this.props;\n return !this._isFocusedByClick && openOnKeyboardFocus === true && !hasFocus;\n }\n}\n","import * as React from 'react';\r\nimport { extendComponent } from './extendComponent';\r\n\r\n/**\r\n * Generates a function to be attached to a React component, which can be called\r\n * as a replacement to RAF. In-flight async calls will be auto canceled if the component\r\n * is unmounting before the async code is executed, preventing bugs where code\r\n * accesses things within the component after being unmounted.\r\n */\r\nexport const safeRequestAnimationFrame = (component: React.Component): ((cb: Function) => void) => {\r\n let activeTimeouts: Set<number>;\r\n\r\n return (cb: Function) => {\r\n if (!activeTimeouts) {\r\n activeTimeouts = new Set<number>();\r\n\r\n extendComponent(component, {\r\n componentWillUnmount: () => {\r\n activeTimeouts.forEach((id: number) => cancelAnimationFrame(id));\r\n },\r\n });\r\n }\r\n\r\n const timeoutId = requestAnimationFrame(() => {\r\n activeTimeouts.delete(timeoutId);\r\n cb();\r\n });\r\n\r\n activeTimeouts.add(timeoutId);\r\n };\r\n};\r\n","import { IDropdownStyles, IDropdownStyleProps } from './Dropdown.types';\nimport { IStyleFunction, IsFocusVisibleClassName } from '../../Utilities';\nimport { RectangleEdge } from '../../utilities/positioning';\nimport {\n FontWeights,\n HighContrastSelector,\n IRawStyle,\n IStyle,\n getGlobalClassNames,\n normalize,\n HighContrastSelectorWhite,\n getScreenSelector,\n ScreenWidthMinMedium,\n getHighContrastNoAdjustStyle,\n} from '../../Styling';\n\nconst GlobalClassNames = {\n root: 'ms-Dropdown-container',\n label: 'ms-Dropdown-label',\n dropdown: 'ms-Dropdown',\n title: 'ms-Dropdown-title',\n caretDownWrapper: 'ms-Dropdown-caretDownWrapper',\n caretDown: 'ms-Dropdown-caretDown',\n callout: 'ms-Dropdown-callout',\n panel: 'ms-Dropdown-panel',\n dropdownItems: 'ms-Dropdown-items',\n dropdownItem: 'ms-Dropdown-item',\n dropdownDivider: 'ms-Dropdown-divider',\n dropdownOptionText: 'ms-Dropdown-optionText',\n dropdownItemHeader: 'ms-Dropdown-header',\n titleIsPlaceHolder: 'ms-Dropdown-titleIsPlaceHolder',\n titleHasError: 'ms-Dropdown-title--hasError',\n};\n\nconst DROPDOWN_HEIGHT = 32;\nconst DROPDOWN_ITEM_HEIGHT = 36;\n\nconst highContrastAdjustMixin = {\n [`${HighContrastSelector}, ${HighContrastSelectorWhite.replace('@media ', '')}`]: {\n ...getHighContrastNoAdjustStyle(),\n },\n};\n\nconst highContrastItemAndTitleStateMixin: IRawStyle = {\n selectors: {\n [HighContrastSelector]: {\n backgroundColor: 'Highlight',\n borderColor: 'Highlight',\n color: 'HighlightText',\n },\n ...highContrastAdjustMixin,\n },\n};\n\nconst highContrastBorderState: IRawStyle = {\n selectors: {\n [HighContrastSelector]: {\n borderColor: 'Highlight',\n },\n },\n};\n\nconst MinimumScreenSelector = getScreenSelector(0, ScreenWidthMinMedium);\n\nexport const getStyles: IStyleFunction<IDropdownStyleProps, IDropdownStyles> = props => {\n const {\n theme,\n hasError,\n hasLabel,\n className,\n isOpen,\n disabled,\n required,\n isRenderingPlaceholder,\n panelClassName,\n calloutClassName,\n calloutRenderEdge,\n } = props;\n\n if (!theme) {\n throw new Error('theme is undefined or null in base Dropdown getStyles function.');\n }\n\n const globalClassnames = getGlobalClassNames(GlobalClassNames, theme);\n const { palette, semanticColors, effects, fonts } = theme;\n\n const rootHoverFocusActiveSelectorNeutralDarkMixin: IStyle = {\n color: semanticColors.menuItemTextHovered,\n };\n\n const rootHoverFocusActiveSelectorNeutralPrimaryMixin: IStyle = {\n color: semanticColors.menuItemText,\n };\n\n const borderColorError: IStyle = {\n borderColor: semanticColors.errorText,\n };\n\n const dropdownItemStyle: IStyle = [\n globalClassnames.dropdownItem,\n {\n backgroundColor: 'transparent',\n boxSizing: 'border-box',\n cursor: 'pointer',\n display: 'flex',\n alignItems: 'center',\n padding: '0 8px',\n width: '100%',\n minHeight: DROPDOWN_ITEM_HEIGHT,\n lineHeight: 20,\n height: 0,\n position: 'relative',\n border: '1px solid transparent',\n borderRadius: 0,\n wordWrap: 'break-word',\n overflowWrap: 'break-word',\n textAlign: 'left',\n\n '.ms-Button-flexContainer': {\n width: '100%',\n },\n },\n ];\n\n const selectedItemBackgroundColor = semanticColors.menuItemBackgroundPressed;\n\n const itemSelectors = (isSelected: boolean = false) => {\n return {\n selectors: {\n '&:hover:focus': [\n {\n color: semanticColors.menuItemTextHovered,\n backgroundColor: !isSelected ? semanticColors.menuItemBackgroundHovered : selectedItemBackgroundColor,\n },\n highContrastItemAndTitleStateMixin,\n ],\n '&:focus': [\n {\n backgroundColor: !isSelected ? 'transparent' : selectedItemBackgroundColor,\n },\n highContrastItemAndTitleStateMixin,\n ],\n '&:active': [\n {\n color: semanticColors.menuItemTextHovered,\n backgroundColor: !isSelected ? semanticColors.menuBackground : semanticColors.menuItemBackgroundHovered,\n },\n highContrastItemAndTitleStateMixin,\n ],\n [`.${IsFocusVisibleClassName} &:focus:after`]: {\n left: 0,\n top: 0,\n bottom: 0,\n right: 0,\n },\n [HighContrastSelector]: {\n border: 'none',\n },\n },\n };\n };\n\n const dropdownItemSelected: IStyle = [\n ...dropdownItemStyle,\n {\n backgroundColor: selectedItemBackgroundColor,\n color: semanticColors.menuItemTextHovered,\n },\n itemSelectors(true),\n highContrastItemAndTitleStateMixin,\n ];\n\n const dropdownItemDisabled: IStyle = [\n ...dropdownItemStyle,\n {\n color: semanticColors.disabledText,\n cursor: 'default',\n selectors: {\n [HighContrastSelector]: {\n color: 'GrayText',\n border: 'none',\n },\n },\n },\n ];\n\n const titleOpenBorderRadius =\n calloutRenderEdge === RectangleEdge.bottom\n ? `${effects.roundedCorner2} ${effects.roundedCorner2} 0 0`\n : `0 0 ${effects.roundedCorner2} ${effects.roundedCorner2}`;\n\n const calloutOpenBorderRadius =\n calloutRenderEdge === RectangleEdge.bottom\n ? `0 0 ${effects.roundedCorner2} ${effects.roundedCorner2}`\n : `${effects.roundedCorner2} ${effects.roundedCorner2} 0 0`;\n\n return {\n root: [globalClassnames.root, className],\n label: globalClassnames.label,\n dropdown: [\n globalClassnames.dropdown,\n normalize,\n fonts.medium,\n {\n color: semanticColors.menuItemText,\n borderColor: semanticColors.focusBorder,\n position: 'relative',\n outline: 0,\n userSelect: 'none',\n selectors: {\n ['&:hover .' + globalClassnames.title]: [\n !disabled && rootHoverFocusActiveSelectorNeutralDarkMixin,\n { borderColor: isOpen ? palette.neutralSecondary : palette.neutralPrimary },\n highContrastBorderState,\n ],\n ['&:focus .' + globalClassnames.title]: [\n !disabled && rootHoverFocusActiveSelectorNeutralDarkMixin,\n { selectors: { [HighContrastSelector]: { color: 'Highlight' } } },\n ],\n\n ['&:focus:after']: [\n {\n pointerEvents: 'none',\n content: \"''\",\n position: 'absolute',\n boxSizing: 'border-box',\n top: '0px',\n left: '0px',\n width: '100%',\n height: '100%',\n // see https://github.com/microsoft/fluentui/pull/9182 for semantic color disc\n border: !disabled ? `2px solid ${palette.themePrimary}` : 'none',\n borderRadius: '2px',\n\n selectors: {\n [HighContrastSelector]: {\n color: 'Highlight',\n },\n },\n },\n ],\n ['&:active .' + globalClassnames.title]: [\n !disabled && rootHoverFocusActiveSelectorNeutralDarkMixin,\n { borderColor: palette.themePrimary },\n highContrastBorderState,\n ],\n\n ['&:hover .' + globalClassnames.caretDown]: !disabled && rootHoverFocusActiveSelectorNeutralPrimaryMixin,\n ['&:focus .' + globalClassnames.caretDown]: [\n !disabled && rootHoverFocusActiveSelectorNeutralPrimaryMixin,\n { selectors: { [HighContrastSelector]: { color: 'Highlight' } } },\n ],\n ['&:active .' + globalClassnames.caretDown]: !disabled && rootHoverFocusActiveSelectorNeutralPrimaryMixin,\n\n ['&:hover .' + globalClassnames.titleIsPlaceHolder]:\n !disabled && rootHoverFocusActiveSelectorNeutralPrimaryMixin,\n ['&:focus .' + globalClassnames.titleIsPlaceHolder]:\n !disabled && rootHoverFocusActiveSelectorNeutralPrimaryMixin,\n ['&:active .' + globalClassnames.titleIsPlaceHolder]:\n !disabled && rootHoverFocusActiveSelectorNeutralPrimaryMixin,\n\n ['&:hover .' + globalClassnames.titleHasError]: borderColorError,\n ['&:active .' + globalClassnames.titleHasError]: borderColorError,\n },\n },\n isOpen && 'is-open',\n disabled && 'is-disabled',\n required && 'is-required',\n required &&\n !hasLabel && {\n selectors: {\n ':before': {\n content: `'*'`,\n color: semanticColors.errorText,\n position: 'absolute',\n top: -5,\n right: -10,\n },\n [HighContrastSelector]: {\n selectors: {\n ':after': {\n right: -14, // moving the * 4 pixel to right to alleviate border clipping in HC mode.\n },\n },\n },\n },\n },\n ],\n title: [\n globalClassnames.title,\n normalize,\n {\n backgroundColor: semanticColors.inputBackground,\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: semanticColors.inputBorder,\n borderRadius: isOpen ? titleOpenBorderRadius : effects.roundedCorner2,\n cursor: 'pointer',\n display: 'block',\n height: DROPDOWN_HEIGHT,\n lineHeight: DROPDOWN_HEIGHT - 2,\n padding: `0 28px 0 8px`,\n position: 'relative',\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis',\n },\n isRenderingPlaceholder && [globalClassnames.titleIsPlaceHolder, { color: semanticColors.inputPlaceholderText }],\n hasError && [globalClassnames.titleHasError, borderColorError],\n disabled && {\n backgroundColor: semanticColors.disabledBackground,\n border: 'none',\n color: semanticColors.disabledText,\n cursor: 'default',\n selectors: {\n [HighContrastSelector]: {\n border: '1px solid GrayText',\n color: 'GrayText',\n backgroundColor: 'Window',\n ...getHighContrastNoAdjustStyle(),\n },\n },\n },\n ],\n caretDownWrapper: [\n globalClassnames.caretDownWrapper,\n {\n position: 'absolute',\n top: 1,\n right: 8,\n height: DROPDOWN_HEIGHT,\n lineHeight: DROPDOWN_HEIGHT - 2, // height minus the border\n },\n !disabled && {\n cursor: 'pointer',\n },\n ],\n caretDown: [\n globalClassnames.caretDown,\n { color: palette.neutralSecondary, fontSize: fonts.small.fontSize, pointerEvents: 'none' },\n disabled && {\n color: semanticColors.disabledText,\n selectors: {\n [HighContrastSelector]: { color: 'GrayText', ...getHighContrastNoAdjustStyle() },\n },\n },\n ],\n errorMessage: { color: semanticColors.errorText, ...theme.fonts.small, paddingTop: 5 },\n callout: [\n globalClassnames.callout,\n {\n boxShadow: effects.elevation8,\n borderRadius: calloutOpenBorderRadius,\n selectors: {\n ['.ms-Callout-main']: { borderRadius: calloutOpenBorderRadius },\n },\n },\n calloutClassName,\n ],\n dropdownItemsWrapper: { selectors: { '&:focus': { outline: 0 } } },\n dropdownItems: [globalClassnames.dropdownItems, { display: 'block' }],\n dropdownItem: [...dropdownItemStyle, itemSelectors()],\n dropdownItemSelected: dropdownItemSelected,\n dropdownItemDisabled: dropdownItemDisabled,\n dropdownItemSelectedAndDisabled: [dropdownItemSelected, dropdownItemDisabled, { backgroundColor: 'transparent' }],\n dropdownItemHidden: [...dropdownItemStyle, { display: 'none' }],\n dropdownDivider: [globalClassnames.dropdownDivider, { height: 1, backgroundColor: semanticColors.bodyDivider }],\n dropdownOptionText: [\n globalClassnames.dropdownOptionText,\n {\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis',\n minWidth: 0,\n maxWidth: '100%',\n wordWrap: 'break-word',\n overflowWrap: 'break-word',\n margin: '1px',\n },\n ],\n dropdownItemHeader: [\n globalClassnames.dropdownItemHeader,\n {\n ...fonts.medium,\n fontWeight: FontWeights.semibold,\n color: semanticColors.menuHeader,\n background: 'none',\n backgroundColor: 'transparent',\n border: 'none',\n height: DROPDOWN_ITEM_HEIGHT,\n lineHeight: DROPDOWN_ITEM_HEIGHT,\n cursor: 'default',\n padding: '0 8px',\n userSelect: 'none',\n textAlign: 'left',\n selectors: {\n [HighContrastSelector]: {\n color: 'GrayText',\n ...getHighContrastNoAdjustStyle(),\n },\n },\n },\n ],\n subComponentStyles: {\n label: { root: { display: 'inline-block' } },\n multiSelectItem: {\n root: {\n padding: 0,\n },\n label: {\n alignSelf: 'stretch',\n padding: '0 8px',\n width: '100%',\n },\n },\n panel: {\n root: [panelClassName],\n main: {\n selectors: {\n // In case of extra small screen sizes\n [MinimumScreenSelector]: {\n // panelWidth xs\n width: 272,\n },\n },\n },\n contentInner: { padding: '0 0 20px' },\n },\n },\n };\n};\n","import * as React from 'react';\nimport { styled } from '../../Utilities';\nimport { DropdownBase } from './Dropdown.base';\nimport { getStyles } from './Dropdown.styles';\nimport { IDropdownProps, IDropdownStyleProps, IDropdownStyles } from './Dropdown.types';\n\nexport const Dropdown: React.FunctionComponent<IDropdownProps> = styled<\n IDropdownProps,\n IDropdownStyleProps,\n IDropdownStyles\n>(DropdownBase, getStyles, undefined, {\n scope: 'Dropdown',\n});\n","import { getGlobalClassNames, getFocusStyle, HighContrastSelector } from '../../../Styling';\nimport { ButtonGlobalClassNames } from '../../Button/BaseButton.classNames';\nimport { ITagItemStyleProps, ITagItemStyles } from './TagPicker.types';\nimport { getRTL } from '../../../Utilities';\n\nconst GlobalClassNames = {\n root: 'ms-TagItem',\n text: 'ms-TagItem-text',\n close: 'ms-TagItem-close',\n isSelected: 'is-selected',\n};\n\nconst TAG_HEIGHT = 26;\n\nexport function getStyles(props: ITagItemStyleProps): ITagItemStyles {\n const { className, theme, selected, disabled } = props;\n\n const { palette, effects, fonts, semanticColors } = theme;\n\n const classNames = getGlobalClassNames(GlobalClassNames, theme);\n\n return {\n root: [\n classNames.root,\n fonts.medium,\n getFocusStyle(theme),\n {\n boxSizing: 'content-box',\n flexShrink: '1',\n margin: 2,\n height: TAG_HEIGHT,\n lineHeight: TAG_HEIGHT,\n cursor: 'default',\n userSelect: 'none',\n display: 'flex',\n flexWrap: 'nowrap',\n maxWidth: 300,\n minWidth: 0, // needed to prevent long tags from overflowing container\n borderRadius: effects.roundedCorner2,\n color: semanticColors.inputText,\n background: !selected || disabled ? palette.neutralLighter : palette.themePrimary,\n selectors: {\n ':hover': [\n !disabled &&\n !selected && {\n color: palette.neutralDark,\n background: palette.neutralLight,\n selectors: {\n '.ms-TagItem-close': {\n color: palette.neutralPrimary,\n },\n },\n },\n disabled && { background: palette.neutralLighter },\n selected && !disabled && { background: palette.themePrimary },\n ],\n [HighContrastSelector]: {\n border: `1px solid ${!selected ? 'WindowText' : 'WindowFrame'}`,\n },\n },\n },\n disabled && {\n selectors: {\n [HighContrastSelector]: {\n borderColor: 'GrayText',\n },\n },\n },\n selected &&\n !disabled && [\n classNames.isSelected,\n {\n color: palette.white,\n },\n ],\n className,\n ],\n text: [\n classNames.text,\n {\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n minWidth: 30,\n margin: '0 8px',\n },\n disabled && {\n selectors: {\n [HighContrastSelector]: {\n color: 'GrayText',\n },\n },\n },\n ],\n close: [\n classNames.close,\n {\n color: palette.neutralSecondary,\n width: 30,\n height: '100%',\n flex: '0 0 auto',\n borderRadius: getRTL(theme)\n ? `${effects.roundedCorner2} 0 0 ${effects.roundedCorner2}`\n : `0 ${effects.roundedCorner2} ${effects.roundedCorner2} 0`,\n selectors: {\n ':hover': {\n background: palette.neutralQuaternaryAlt,\n color: palette.neutralPrimary,\n },\n ':active': {\n color: palette.white,\n backgroundColor: palette.themeDark,\n },\n },\n },\n selected && {\n color: palette.white,\n selectors: {\n ':hover': {\n color: palette.white,\n background: palette.themeDark,\n },\n },\n },\n disabled && {\n selectors: {\n [`.${ButtonGlobalClassNames.msButtonIcon}`]: {\n color: palette.neutralSecondary,\n },\n },\n },\n ],\n };\n}\n","import * as React from 'react';\n\nimport { styled, classNamesFunction } from '../../../Utilities';\nimport { IconButton } from '../../../Button';\n\nimport { ITagItemProps, ITagItemStyleProps, ITagItemStyles } from './TagPicker.types';\nimport { getStyles } from './TagItem.styles';\n\nconst getClassNames = classNamesFunction<ITagItemStyleProps, ITagItemStyles>();\n\n/**\n * {@docCategory TagPicker}\n */\nexport const TagItemBase = (props: ITagItemProps) => {\n const {\n theme,\n styles,\n selected,\n disabled,\n enableTagFocusInDisabledPicker,\n children,\n className,\n index,\n onRemoveItem,\n removeButtonAriaLabel,\n title = typeof props.children === 'string' ? props.children : props.item.name,\n } = props;\n\n const classNames = getClassNames(styles, {\n theme: theme!,\n className,\n selected,\n disabled,\n });\n\n return (\n <div\n className={classNames.root}\n role={'listitem'}\n key={index}\n data-selection-index={index}\n data-is-focusable={(enableTagFocusInDisabledPicker || !disabled) && true}\n >\n <span className={classNames.text} aria-label={title} title={title}>\n {children}\n </span>\n <IconButton\n onClick={onRemoveItem}\n disabled={disabled}\n iconProps={{ iconName: 'Cancel', styles: { root: { fontSize: '12px' } } }}\n className={classNames.close}\n ariaLabel={removeButtonAriaLabel}\n />\n </div>\n );\n};\n\nexport const TagItem = styled<ITagItemProps, ITagItemStyleProps, ITagItemStyles>(TagItemBase, getStyles, undefined, {\n scope: 'TagItem',\n});\n","import { getGlobalClassNames } from '../../../Styling';\nimport { ITagItemSuggestionStyleProps, ITagItemSuggestionStyles } from './TagPicker.types';\n\nconst GlobalClassNames = {\n suggestionTextOverflow: 'ms-TagItem-TextOverflow',\n};\n\nexport function getStyles(props: ITagItemSuggestionStyleProps): ITagItemSuggestionStyles {\n const { className, theme } = props;\n\n const classNames = getGlobalClassNames(GlobalClassNames, theme);\n\n return {\n suggestionTextOverflow: [\n classNames.suggestionTextOverflow,\n {\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n maxWidth: '60vw',\n padding: '6px 12px 7px',\n whiteSpace: 'nowrap',\n },\n className,\n ],\n };\n}\n","import * as React from 'react';\n\nimport { classNamesFunction, styled } from '../../../Utilities';\nimport { ITagItemSuggestionProps, ITagItemSuggestionStyleProps, ITagItemSuggestionStyles } from './TagPicker.types';\nimport { getStyles } from './TagItemSuggestion.styles';\n\nconst getClassNames = classNamesFunction<ITagItemSuggestionStyleProps, ITagItemSuggestionStyles>();\n\n/**\n * {@docCategory TagPicker}\n */\nexport const TagItemSuggestionBase = (props: ITagItemSuggestionProps) => {\n const { styles, theme, children } = props;\n\n const classNames = getClassNames(styles, {\n theme: theme!,\n });\n\n return <div className={classNames.suggestionTextOverflow}> {children} </div>;\n};\n\nexport const TagItemSuggestion = styled<\n ITagItemSuggestionProps,\n ITagItemSuggestionStyleProps,\n ITagItemSuggestionStyles\n>(TagItemSuggestionBase, getStyles, undefined, { scope: 'TagItemSuggestion' });\n","import * as React from 'react';\nimport { styled, initializeComponentRef } from '../../../Utilities';\nimport { BasePicker } from '../BasePicker';\nimport { IBasePickerStyleProps, IBasePickerStyles } from '../BasePicker.types';\nimport { getStyles } from '../BasePicker.styles';\nimport { TagItem } from './TagItem';\nimport { TagItemSuggestion } from './TagItemSuggestion';\nimport { ITagPickerProps, ITag, ITagItemProps } from './TagPicker.types';\n\n/**\n * {@docCategory TagPicker}\n */\nexport class TagPickerBase extends BasePicker<ITag, ITagPickerProps> {\n public static defaultProps = {\n onRenderItem: (props: ITagItemProps) => <TagItem {...props}>{props.item.name}</TagItem>,\n onRenderSuggestionsItem: (props: ITag) => <TagItemSuggestion>{props.name}</TagItemSuggestion>,\n };\n\n constructor(props: ITagPickerProps) {\n super(props);\n initializeComponentRef(this);\n }\n}\n\nexport const TagPicker = styled<ITagPickerProps, IBasePickerStyleProps, IBasePickerStyles>(\n TagPickerBase,\n getStyles,\n undefined,\n {\n scope: 'TagPicker',\n },\n);\n","import { IModalStyleProps, IModalStyles } from './Modal.types';\nimport { AnimationVariables, getGlobalClassNames, ZIndexes } from '../../Styling';\n\nexport const animationDuration = AnimationVariables.durationValue2;\n\nconst globalClassNames = {\n root: 'ms-Modal',\n main: 'ms-Dialog-main',\n scrollableContent: 'ms-Modal-scrollableContent',\n isOpen: 'is-open',\n layer: 'ms-Modal-Layer',\n};\n\nexport const getStyles = (props: IModalStyleProps): IModalStyles => {\n const {\n className,\n containerClassName,\n scrollableContentClassName,\n isOpen,\n isVisible,\n hasBeenOpened,\n modalRectangleTop,\n theme,\n topOffsetFixed,\n isModeless,\n layerClassName,\n isDefaultDragHandle,\n } = props;\n const { palette, effects, fonts } = theme;\n\n const classNames = getGlobalClassNames(globalClassNames, theme);\n\n return {\n root: [\n classNames.root,\n fonts.medium,\n {\n backgroundColor: 'transparent',\n position: isModeless ? 'absolute' : 'fixed',\n height: '100%',\n width: '100%',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n opacity: 0,\n pointerEvents: 'none',\n transition: `opacity ${animationDuration}`,\n },\n topOffsetFixed &&\n typeof modalRectangleTop === 'number' &&\n hasBeenOpened && {\n alignItems: 'flex-start',\n },\n isOpen && classNames.isOpen,\n isVisible && {\n opacity: 1,\n pointerEvents: 'auto',\n },\n className,\n ],\n main: [\n classNames.main,\n {\n boxShadow: effects.elevation64,\n borderRadius: effects.roundedCorner2,\n backgroundColor: palette.white,\n boxSizing: 'border-box',\n position: 'relative',\n textAlign: 'left',\n outline: '3px solid transparent',\n maxHeight: 'calc(100% - 32px)',\n maxWidth: 'calc(100% - 32px)',\n minHeight: '176px',\n minWidth: '288px',\n overflowY: 'auto',\n zIndex: isModeless ? ZIndexes.Layer : undefined,\n },\n topOffsetFixed &&\n typeof modalRectangleTop === 'number' &&\n hasBeenOpened && {\n top: modalRectangleTop,\n },\n isDefaultDragHandle && {\n cursor: 'move',\n },\n containerClassName,\n ],\n scrollableContent: [\n classNames.scrollableContent,\n {\n overflowY: 'auto',\n flexGrow: 1,\n maxHeight: '100vh',\n selectors: {\n ['@supports (-webkit-overflow-scrolling: touch)']: {\n maxHeight: window.innerHeight,\n },\n },\n },\n scrollableContentClassName,\n ],\n layer: isModeless && [\n layerClassName,\n classNames.layer,\n {\n position: 'static',\n width: 'unset',\n height: 'unset',\n },\n ],\n keyboardMoveIconContainer: {\n position: 'absolute',\n display: 'flex',\n justifyContent: 'center',\n width: '100%',\n padding: '3px 0px',\n },\n keyboardMoveIcon: {\n // eslint-disable-next-line deprecation/deprecation\n fontSize: fonts.xLargePlus.fontSize,\n width: '24px',\n },\n };\n};\n","import { memoizeFunction } from '../../Utilities';\nimport { mergeStyles } from '../../Styling';\n\nexport interface IDraggableZoneStyles {\n root: string;\n}\n\nexport const getClassNames = memoizeFunction(\n (className: string, isDragging: boolean): IDraggableZoneStyles => {\n return {\n root: mergeStyles(\n className,\n isDragging && {\n touchAction: 'none',\n selectors: {\n '& *': {\n userSelect: 'none',\n },\n },\n },\n ),\n };\n },\n);\n","import * as React from 'react';\nimport { IDraggableZoneProps, ICoordinates, IDragData } from './DraggableZone.types';\nimport { getClassNames } from './DraggableZone.styles';\nimport { on } from '../../Utilities';\n\nexport interface IDraggableZoneState {\n isDragging: boolean;\n position: ICoordinates;\n lastPosition?: ICoordinates;\n}\n\nconst eventMapping = {\n touch: {\n start: 'touchstart',\n move: 'touchmove',\n stop: 'touchend',\n },\n mouse: {\n start: 'mousedown',\n move: 'mousemove',\n stop: 'mouseup',\n },\n};\n\n// These are needed so that we can generalize the events\n// and so we have access to clientX and clientY in the touch events\ntype MouseTouchEvent<T> = React.MouseEvent<T> & React.TouchEvent<T> & Event;\n\nexport class DraggableZone extends React.Component<IDraggableZoneProps, IDraggableZoneState> {\n private _touchId?: number;\n private _currentEventType = eventMapping.mouse;\n private _events: (() => void)[] = [];\n\n constructor(props: IDraggableZoneProps) {\n super(props);\n\n this.state = {\n isDragging: false,\n position: this.props.position || { x: 0, y: 0 },\n lastPosition: undefined,\n };\n }\n\n public componentDidUpdate(prevProps: IDraggableZoneProps) {\n if (this.props.position && (!prevProps.position || this.props.position !== prevProps.position)) {\n this.setState({ position: this.props.position });\n }\n }\n\n public componentWillUnmount() {\n this._events.forEach(dispose => dispose());\n }\n\n public render() {\n const child: any = React.Children.only(this.props.children);\n const { props } = child;\n const { position } = this.props;\n const { position: statePosition, isDragging } = this.state;\n let x = statePosition.x;\n let y = statePosition.y;\n\n if (position && !isDragging) {\n x = position.x;\n y = position.y;\n }\n\n return React.cloneElement(child, {\n style: {\n ...props.style,\n transform: `translate(${x}px, ${y}px)`,\n },\n className: getClassNames(props.className, this.state.isDragging).root,\n onMouseDown: this._onMouseDown,\n onMouseUp: this._onMouseUp,\n onTouchStart: this._onTouchStart,\n onTouchEnd: this._onTouchEnd,\n });\n }\n\n private _onMouseDown = (event: MouseTouchEvent<HTMLElement>) => {\n const onMouseDown = (React.Children.only(this.props.children) as any).props.onMouseDown;\n if (onMouseDown) {\n onMouseDown(event);\n }\n\n this._currentEventType = eventMapping.mouse;\n return this._onDragStart(event);\n };\n\n private _onMouseUp = (event: MouseTouchEvent<HTMLElement>) => {\n const onMouseUp = (React.Children.only(this.props.children) as any).props.onMouseUp;\n if (onMouseUp) {\n onMouseUp(event);\n }\n\n this._currentEventType = eventMapping.mouse;\n return this._onDragStop(event);\n };\n\n private _onTouchStart = (event: MouseTouchEvent<HTMLElement>) => {\n const onTouchStart = (React.Children.only(this.props.children) as any).props.onTouchStart;\n if (onTouchStart) {\n onTouchStart(event);\n }\n\n this._currentEventType = eventMapping.touch;\n return this._onDragStart(event);\n };\n\n private _onTouchEnd = (event: MouseTouchEvent<HTMLElement>) => {\n const onTouchEnd = (React.Children.only(this.props.children) as any).props.onTouchEnd;\n if (onTouchEnd) {\n onTouchEnd(event);\n }\n\n this._currentEventType = eventMapping.touch;\n this._onDragStop(event);\n };\n\n private _onDragStart = (event: MouseTouchEvent<HTMLElement>) => {\n // Only handle left click for dragging\n if (typeof event.button === 'number' && event.button !== 0) {\n return false;\n }\n\n // If the target doesn't match the handleSelector OR\n // if the target does match the preventDragSelector, bail out\n if (\n (this.props.handleSelector && !this._matchesSelector(event.target as HTMLElement, this.props.handleSelector)) ||\n (this.props.preventDragSelector &&\n this._matchesSelector(event.target as HTMLElement, this.props.preventDragSelector))\n ) {\n return;\n }\n\n // Remember the touch identifier if this is a touch event so we can\n // distinguish between individual touches in multitouch scenarios\n // by remembering which touch point we were given\n this._touchId = this._getTouchId(event);\n\n const position = this._getControlPosition(event);\n if (position === undefined) {\n return;\n }\n\n const dragData = this._createDragDataFromPosition(position);\n this.props.onStart && this.props.onStart(event, dragData);\n\n this.setState({\n isDragging: true,\n lastPosition: position,\n });\n\n // hook up the appropriate mouse/touch events to the body to ensure\n // smooth dragging\n this._events = [\n on(document.body, this._currentEventType.move, this._onDrag, true /* use capture phase */),\n on(document.body, this._currentEventType.stop, this._onDragStop, true /* use capture phase */),\n ];\n };\n\n private _onDrag = (event: MouseTouchEvent<HTMLElement>) => {\n // Prevent scrolling on mobile devices\n if (event.type === 'touchmove') {\n event.preventDefault();\n }\n\n const position = this._getControlPosition(event);\n if (!position) {\n return;\n }\n\n // create the updated drag data from the position data\n const updatedData = this._createUpdatedDragData(this._createDragDataFromPosition(position));\n const updatedPosition = updatedData.position;\n\n this.props.onDragChange && this.props.onDragChange(event, updatedData);\n\n this.setState({\n position: updatedPosition,\n lastPosition: position,\n });\n };\n\n private _onDragStop = (event: MouseTouchEvent<HTMLElement>) => {\n if (!this.state.isDragging) {\n return;\n }\n\n const position = this._getControlPosition(event);\n if (!position) {\n return;\n }\n\n const baseDragData = this._createDragDataFromPosition(position);\n\n // Set dragging to false and reset the lastPosition\n this.setState({\n isDragging: false,\n lastPosition: undefined,\n });\n\n this.props.onStop && this.props.onStop(event, baseDragData);\n\n if (this.props.position) {\n this.setState({\n position: this.props.position,\n });\n }\n\n // Remove event handlers\n this._events.forEach(dispose => dispose());\n };\n\n /**\n * Get the control position based off the event that fired\n * @param event - The event to get offsets from\n */\n private _getControlPosition(event: MouseTouchEvent<HTMLElement>): ICoordinates | undefined {\n const touchObj = this._getActiveTouch(event);\n\n // did we get the right touch?\n if (this._touchId !== undefined && !touchObj) {\n return undefined;\n }\n\n const eventToGetOffset = touchObj || event;\n return {\n x: eventToGetOffset.clientX,\n y: eventToGetOffset.clientY,\n };\n }\n\n /**\n * Get the active touch point that we have saved from the event's TouchList\n * @param event - The event used to get the TouchList for the active touch point\n */\n private _getActiveTouch(event: MouseTouchEvent<HTMLElement>): React.Touch | undefined {\n return (\n (event.targetTouches && this._findTouchInTouchList(event.targetTouches)) ||\n (event.changedTouches && this._findTouchInTouchList(event.changedTouches))\n );\n }\n\n /**\n * Get the initial touch identifier associated with the given event\n * @param event - The event that contains the TouchList\n */\n private _getTouchId(event: MouseTouchEvent<HTMLElement>): number | undefined {\n const touch: React.Touch | undefined =\n (event.targetTouches && event.targetTouches[0]) || (event.changedTouches && event.changedTouches[0]);\n\n if (touch) {\n return touch.identifier;\n }\n }\n\n /**\n * Returns if an element (or any of the element's parents) match the given selector\n */\n private _matchesSelector(element: HTMLElement | null, selector: string): boolean {\n if (!element || element === document.body) {\n return false;\n }\n\n const matchesSelectorFn: Function =\n element.matches || element.webkitMatchesSelector || (element as any).msMatchesSelector /* for IE */;\n\n if (!matchesSelectorFn) {\n return false;\n }\n\n return matchesSelectorFn.call(element, selector) || this._matchesSelector(element.parentElement, selector);\n }\n\n /**\n * Attempts to find the Touch that matches the identifier we stored in dragStart\n * @param touchList The TouchList to look for the stored identifier from dragStart\n */\n private _findTouchInTouchList(touchList: React.TouchList): React.Touch | undefined {\n if (this._touchId === undefined) {\n return;\n }\n\n for (let i = 0; i < touchList.length; i++) {\n if (touchList[i].identifier === this._touchId) {\n return touchList[i];\n }\n }\n\n return undefined;\n }\n\n /**\n * Create DragData based off of the last known position and the new position passed in\n * @param position The new position as part of the drag\n */\n private _createDragDataFromPosition(position: ICoordinates): IDragData {\n const { lastPosition } = this.state;\n\n // If we have no lastPosition, use the given position\n // for last position\n if (lastPosition === undefined) {\n return {\n delta: { x: 0, y: 0 },\n lastPosition: position,\n position,\n };\n }\n\n return {\n delta: {\n x: position.x - lastPosition.x,\n y: position.y - lastPosition.y,\n },\n lastPosition,\n position,\n };\n }\n\n /**\n * Creates an updated DragData based off the current position and given baseDragData\n * @param baseDragData The base DragData (from _createDragDataFromPosition) used to calculate the updated positions\n */\n private _createUpdatedDragData(baseDragData: IDragData): IDragData {\n const { position } = this.state;\n return {\n position: {\n x: position.x + baseDragData.delta.x,\n y: position.y + baseDragData.delta.y,\n },\n delta: baseDragData.delta,\n lastPosition: position,\n };\n }\n}\n","import * as React from 'react';\nimport {\n allowScrollOnElement,\n allowOverscrollOnElement,\n classNamesFunction,\n createMergedRef,\n css,\n elementContains,\n getId,\n warnDeprecations,\n Async,\n EventGroup,\n KeyCodes,\n} from '../../Utilities';\nimport { FocusTrapZone, IFocusTrapZone } from '../FocusTrapZone/index';\nimport { animationDuration } from './Modal.styles';\nimport { IModalProps, IModalStyleProps, IModalStyles, IModal } from './Modal.types';\nimport { Overlay } from '../../Overlay';\nimport { ILayerProps, Layer } from '../../Layer';\nimport { Popup } from '../Popup/index';\nimport { withResponsiveMode, ResponsiveMode } from '../../utilities/decorators/withResponsiveMode';\nimport { DirectionalHint } from '../Callout/index';\nimport { Icon } from '../Icon/index';\nimport { DraggableZone, ICoordinates, IDragData } from '../../utilities/DraggableZone/index';\nimport { initializeComponentRef } from '@uifabric/utilities';\n\n// @TODO - need to change this to a panel whenever the breakpoint is under medium (verify the spec)\n\nconst DefaultLayerProps: ILayerProps = {\n eventBubblingEnabled: false,\n};\n\nexport interface IDialogState {\n isOpen?: boolean;\n isVisible?: boolean;\n isVisibleClose?: boolean;\n id?: string;\n hasBeenOpened?: boolean;\n modalRectangleTop?: number;\n isModalMenuOpen?: boolean;\n isInKeyboardMoveMode?: boolean;\n x: number;\n y: number;\n}\n\nconst getClassNames = classNamesFunction<IModalStyleProps, IModalStyles>();\nconst COMPONENT_NAME = 'Modal';\n\n@withResponsiveMode\nexport class ModalBase extends React.Component<IModalProps, IDialogState> implements IModal {\n public static defaultProps: IModalProps = {\n isOpen: false,\n isDarkOverlay: true,\n isBlocking: false,\n className: '',\n containerClassName: '',\n };\n\n private _onModalCloseTimer: number;\n private _focusTrapZone = React.createRef<IFocusTrapZone>();\n private _focusTrapZoneMergedRef = createMergedRef();\n private _scrollableContent: HTMLDivElement | null;\n private _lastSetX: number;\n private _lastSetY: number;\n private _allowTouchBodyScroll: boolean;\n private _hasRegisteredKeyUp: boolean;\n private _async: Async;\n private _events: EventGroup;\n private _minClampedPosition: ICoordinates;\n private _maxClampedPosition: ICoordinates;\n\n constructor(props: IModalProps) {\n super(props);\n\n this._async = new Async(this);\n this._events = new EventGroup(this);\n initializeComponentRef(this);\n\n warnDeprecations(COMPONENT_NAME, props, {\n onLayerDidMount: 'layerProps.onLayerDidMount',\n });\n\n this.state = {\n id: getId('Modal'),\n isOpen: props.isOpen,\n isVisible: props.isOpen,\n hasBeenOpened: props.isOpen,\n x: 0,\n y: 0,\n };\n\n this._lastSetX = 0;\n this._lastSetY = 0;\n\n const { allowTouchBodyScroll = false } = this.props;\n this._allowTouchBodyScroll = allowTouchBodyScroll;\n }\n\n public UNSAFE_componentWillReceiveProps(newProps: IModalProps): void {\n clearTimeout(this._onModalCloseTimer);\n\n // Opening the dialog\n if (newProps.isOpen) {\n if (!this.state.isOpen) {\n // First Open\n this.setState({\n isOpen: true,\n });\n // Add a keyUp handler for all key up events when the dialog is open\n if (newProps.dragOptions) {\n this._registerForKeyUp();\n }\n } else {\n // Modal has been opened\n // Reopen during closing\n this.setState({\n hasBeenOpened: true,\n isVisible: true,\n });\n }\n }\n\n // Closing the dialog\n if (!newProps.isOpen && this.state.isOpen) {\n this._onModalCloseTimer = this._async.setTimeout(this._onModalClose, parseFloat(animationDuration) * 1000);\n this.setState({\n isVisible: false,\n });\n }\n }\n\n public componentDidMount() {\n // Not all modals show just by updating their props. Some only render when they are mounted and pass in\n // isOpen as true. We need to add the keyUp handler in componentDidMount if we are in that case.\n if (this.state.isOpen && this.state.isVisible) {\n this._registerForKeyUp();\n requestAnimationFrame(() => setTimeout(this._registerInitialModalPosition, 0));\n }\n }\n\n public componentDidUpdate(prevProps: IModalProps, prevState: IDialogState) {\n if (!prevProps.isOpen && !prevState.isVisible) {\n this.setState({\n isVisible: true,\n });\n }\n if (!prevProps.isOpen && this.props.isOpen) {\n requestAnimationFrame(() => setTimeout(this._registerInitialModalPosition, 0));\n }\n }\n\n public componentWillUnmount(): void {\n this._async.dispose();\n this._events.dispose();\n }\n\n public render(): JSX.Element | null {\n const {\n className,\n containerClassName,\n scrollableContentClassName,\n elementToFocusOnDismiss,\n firstFocusableSelector,\n focusTrapZoneProps,\n forceFocusInsideTrap,\n ignoreExternalFocusing,\n isBlocking,\n isClickableOutsideFocusTrap,\n isDarkOverlay,\n onDismiss,\n layerProps,\n overlay,\n responsiveMode,\n titleAriaId,\n styles,\n subtitleAriaId,\n theme,\n topOffsetFixed,\n // eslint-disable-next-line deprecation/deprecation\n onLayerDidMount,\n isModeless,\n isAlert,\n dragOptions,\n enableAriaHiddenSiblings,\n } = this.props;\n const { isOpen, isVisible, hasBeenOpened, modalRectangleTop, x, y, isInKeyboardMoveMode } = this.state;\n\n if (!isOpen) {\n return null;\n }\n\n const layerClassName = layerProps === undefined ? '' : layerProps.className;\n const isAlertRole = isAlert ?? (isBlocking && !isModeless);\n\n const classNames = getClassNames(styles, {\n theme: theme!,\n className,\n containerClassName,\n scrollableContentClassName,\n isOpen,\n isVisible,\n hasBeenOpened,\n modalRectangleTop,\n topOffsetFixed,\n isModeless,\n layerClassName,\n isDefaultDragHandle: dragOptions && !dragOptions.dragHandleSelector,\n });\n\n const mergedLayerProps = {\n ...DefaultLayerProps,\n ...this.props.layerProps,\n onLayerDidMount: layerProps && layerProps.onLayerDidMount ? layerProps.onLayerDidMount : onLayerDidMount,\n insertFirst: isModeless,\n className: classNames.layer,\n };\n\n const modalContent = (\n <FocusTrapZone\n {...focusTrapZoneProps}\n data-id={this.state.id}\n componentRef={this._focusTrapZoneMergedRef(this._focusTrapZone, focusTrapZoneProps?.componentRef)}\n className={css(classNames.main, focusTrapZoneProps?.className)}\n elementToFocusOnDismiss={focusTrapZoneProps?.elementToFocusOnDismiss ?? elementToFocusOnDismiss}\n isClickableOutsideFocusTrap={\n focusTrapZoneProps?.isClickableOutsideFocusTrap ?? (isModeless || isClickableOutsideFocusTrap || !isBlocking)\n }\n ignoreExternalFocusing={focusTrapZoneProps?.ignoreExternalFocusing ?? ignoreExternalFocusing}\n forceFocusInsideTrap={(focusTrapZoneProps?.forceFocusInsideTrap ?? forceFocusInsideTrap) && !isModeless}\n // eslint-disable-next-line deprecation/deprecation\n firstFocusableSelector={focusTrapZoneProps?.firstFocusableSelector || firstFocusableSelector}\n focusPreviouslyFocusedInnerElement={focusTrapZoneProps?.focusPreviouslyFocusedInnerElement ?? true}\n onBlur={isInKeyboardMoveMode ? this._onExitKeyboardMoveMode : undefined}\n enableAriaHiddenSiblings={focusTrapZoneProps?.enableAriaHiddenSiblings ?? enableAriaHiddenSiblings}\n >\n {dragOptions && isInKeyboardMoveMode && (\n <div className={classNames.keyboardMoveIconContainer}>\n {dragOptions.keyboardMoveIconProps ? (\n <Icon {...dragOptions.keyboardMoveIconProps} />\n ) : (\n <Icon iconName=\"move\" className={classNames.keyboardMoveIcon} />\n )}\n </div>\n )}\n <div ref={this._allowScrollOnModal} className={classNames.scrollableContent} data-is-scrollable={true}>\n {dragOptions && this.state.isModalMenuOpen && (\n <dragOptions.menu\n items={[\n { key: 'move', text: dragOptions.moveMenuItemText, onClick: this._onEnterKeyboardMoveMode },\n { key: 'close', text: dragOptions.closeMenuItemText, onClick: this._onModalClose },\n ]}\n onDismiss={this._onModalContextMenuClose}\n alignTargetEdge={true}\n coverTarget={true}\n directionalHint={DirectionalHint.topLeftEdge}\n directionalHintFixed={true}\n shouldFocusOnMount={true}\n target={this._scrollableContent}\n />\n )}\n {this.props.children}\n </div>\n </FocusTrapZone>\n );\n\n // @temp tuatology - Will adjust this to be a panel at certain breakpoints\n if (responsiveMode! >= ResponsiveMode.small) {\n return (\n <Layer {...mergedLayerProps}>\n <Popup\n role={isAlertRole ? 'alertdialog' : 'dialog'}\n aria-modal={!isModeless}\n ariaLabelledBy={titleAriaId}\n ariaDescribedBy={subtitleAriaId}\n onDismiss={onDismiss}\n shouldRestoreFocus={!ignoreExternalFocusing}\n >\n <div className={classNames.root} role={!isModeless ? 'document' : undefined}>\n {!isModeless && (\n <Overlay\n isDarkThemed={isDarkOverlay}\n onClick={isBlocking ? undefined : (onDismiss as any)}\n allowTouchBodyScroll={this._allowTouchBodyScroll}\n {...overlay}\n />\n )}\n {dragOptions ? (\n <DraggableZone\n handleSelector={dragOptions.dragHandleSelector || `.${classNames.main.split(' ')[0]}`}\n preventDragSelector=\"button\"\n onStart={this._onDragStart}\n onDragChange={this._onDrag}\n onStop={this._onDragStop}\n position={{ x: x, y: y }}\n >\n {modalContent}\n </DraggableZone>\n ) : (\n modalContent\n )}\n </div>\n </Popup>\n </Layer>\n );\n }\n return null;\n }\n\n public focus() {\n if (this._focusTrapZone.current) {\n this._focusTrapZone.current.focus();\n }\n }\n\n private _registerInitialModalPosition = (): void => {\n const dialogMain = document.querySelector(`[data-id=${this.state.id}]`);\n\n if (dialogMain) {\n const modalRectangle = dialogMain.getBoundingClientRect();\n if (this.props.dragOptions?.keepInBounds && !this._minClampedPosition && !this._maxClampedPosition) {\n this._minClampedPosition = { x: -modalRectangle.x, y: -modalRectangle.y };\n this._maxClampedPosition = { x: modalRectangle.x, y: modalRectangle.y };\n }\n\n this.setState({\n modalRectangleTop: modalRectangle.top,\n });\n }\n };\n\n /**\n * Clamps the position coordinates to the maximum/minimum value specified in props\n */\n private _getClampedPosition(position: ICoordinates) {\n if (!this.props.dragOptions || !this.props.dragOptions.keepInBounds) {\n return position;\n }\n return { x: this._getClampedPositionX(position.x), y: this._getClampedPositionY(position.y) };\n }\n\n private _getClampedPositionY(y: number) {\n const minPosition = this._minClampedPosition;\n const maxPosition = this._maxClampedPosition;\n if (minPosition) {\n y = Math.max(minPosition.y, y);\n }\n if (maxPosition) {\n y = Math.min(maxPosition.y, y);\n }\n return y;\n }\n\n private _getClampedPositionX(x: number) {\n const minPosition = this._minClampedPosition;\n const maxPosition = this._maxClampedPosition;\n if (minPosition) {\n x = Math.max(minPosition.x, x);\n }\n if (maxPosition) {\n x = Math.min(maxPosition.x, x);\n }\n return x;\n }\n\n // Allow the user to scroll within the modal but not on the body\n private _allowScrollOnModal = (elt: HTMLDivElement | null): void => {\n if (elt) {\n if (this._allowTouchBodyScroll) {\n allowOverscrollOnElement(elt, this._events);\n } else {\n allowScrollOnElement(elt, this._events);\n }\n } else {\n this._events.off(this._scrollableContent);\n }\n this._scrollableContent = elt;\n };\n\n private _onModalContextMenuClose = (): void => {\n this.setState({ isModalMenuOpen: false });\n };\n\n private _onModalClose = (): void => {\n this._lastSetX = 0;\n this._lastSetY = 0;\n\n this.setState({\n isModalMenuOpen: false,\n isInKeyboardMoveMode: false,\n isOpen: false,\n x: 0,\n y: 0,\n });\n\n if (this.props.dragOptions && this._hasRegisteredKeyUp) {\n this._events.off(window, 'keyup', this._onKeyUp, true /* useCapture */);\n }\n\n // Call the onDismiss callback\n if (this.props.onDismissed) {\n this.props.onDismissed();\n }\n };\n\n private _onDragStart = (): void => {\n this.setState({ isModalMenuOpen: false, isInKeyboardMoveMode: false });\n };\n\n private _onDrag = (_: React.MouseEvent<HTMLElement> & React.TouchEvent<HTMLElement>, ui: IDragData): void => {\n const { x, y } = this.state;\n this.setState(this._getClampedPosition({ x: x + ui.delta.x, y: y + ui.delta.y }));\n };\n\n private _onDragStop = (): void => {\n this.focus();\n };\n\n private _onKeyUp = (event: React.KeyboardEvent<HTMLElement>): void => {\n // Need to handle the CTRL + ALT + SPACE key during keyup due to FireFox bug:\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1220143\n // Otherwise it would continue to fire a click even if the event was cancelled\n // during mouseDown.\n if (event.altKey && event.ctrlKey && event.keyCode === KeyCodes.space) {\n // Since this is a global handler, we should make sure the target is within the dialog\n // before opening the dropdown\n if (elementContains(this._scrollableContent, event.target as HTMLElement)) {\n this.setState({ isModalMenuOpen: !this.state.isModalMenuOpen });\n event.preventDefault();\n event.stopPropagation();\n }\n }\n };\n\n // We need a global onKeyDown event when we are in the move mode so that we can\n // handle the key presses and the components inside the modal do not get the events\n private _onKeyDown = (event: React.KeyboardEvent<HTMLElement>): void => {\n if (event.altKey && event.ctrlKey && event.keyCode === KeyCodes.space) {\n // CTRL + ALT + SPACE is handled during keyUp\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n\n if (this.state.isModalMenuOpen && (event.altKey || event.keyCode === KeyCodes.escape)) {\n this.setState({ isModalMenuOpen: false });\n }\n\n if (this.state.isInKeyboardMoveMode && (event.keyCode === KeyCodes.escape || event.keyCode === KeyCodes.enter)) {\n this.setState({ isInKeyboardMoveMode: false });\n event.preventDefault();\n event.stopPropagation();\n }\n\n if (this.state.isInKeyboardMoveMode) {\n let handledEvent = true;\n const delta = this._getMoveDelta(event);\n\n switch (event.keyCode) {\n /* eslint-disable no-fallthrough */\n case KeyCodes.escape:\n this.setState({ x: this._lastSetX, y: this._lastSetY });\n case KeyCodes.enter: {\n // TODO: determine if fallthrough was intentional\n /* eslint-enable no-fallthrough */\n this._lastSetX = 0;\n this._lastSetY = 0;\n this.setState({ isInKeyboardMoveMode: false });\n break;\n }\n case KeyCodes.up: {\n this.setState({\n y: this._getClampedPositionY(this.state.y - delta),\n });\n break;\n }\n case KeyCodes.down: {\n this.setState({\n y: this._getClampedPositionY(this.state.y + delta),\n });\n break;\n }\n case KeyCodes.left: {\n this.setState({\n x: this._getClampedPositionX(this.state.x - delta),\n });\n break;\n }\n case KeyCodes.right: {\n this.setState({\n x: this._getClampedPositionX(this.state.x + delta),\n });\n break;\n }\n default: {\n handledEvent = false;\n }\n }\n\n if (handledEvent) {\n event.preventDefault();\n event.stopPropagation();\n }\n }\n };\n\n private _getMoveDelta(event: React.KeyboardEvent<HTMLElement>): number {\n let delta = 10;\n if (event.shiftKey) {\n if (!event.ctrlKey) {\n delta = 50;\n }\n } else if (event.ctrlKey) {\n delta = 1;\n }\n\n return delta;\n }\n\n private _onEnterKeyboardMoveMode = () => {\n this._lastSetX = this.state.x;\n this._lastSetY = this.state.y;\n this.setState({ isInKeyboardMoveMode: true, isModalMenuOpen: false });\n this._events.on(window, 'keydown', this._onKeyDown, true /* useCapture */);\n };\n\n private _onExitKeyboardMoveMode = (ev: React.FocusEvent<HTMLDivElement>) => {\n this.props.focusTrapZoneProps?.onBlur?.(ev);\n this._lastSetX = 0;\n this._lastSetY = 0;\n this.setState({ isInKeyboardMoveMode: false });\n this._events.off(window, 'keydown', this._onKeyDown, true /* useCapture */);\n };\n\n private _registerForKeyUp = (): void => {\n if (!this._hasRegisteredKeyUp) {\n this._events.on(window, 'keyup', this._onKeyUp, true /* useCapture */);\n this._hasRegisteredKeyUp = true;\n }\n };\n}\n","import * as React from 'react';\nimport { styled } from '../../Utilities';\nimport { IModalProps, IModalStyleProps, IModalStyles } from './Modal.types';\nimport { ModalBase } from './Modal.base';\nimport { getStyles } from './Modal.styles';\n\nexport const Modal: React.FunctionComponent<IModalProps> = styled<IModalProps, IModalStyleProps, IModalStyles>(\n ModalBase,\n getStyles,\n undefined,\n {\n scope: 'Modal',\n fields: ['theme', 'styles', 'enableAriaHiddenSiblings'],\n },\n);\n","import * as React from 'react';\nimport { IProcessedStyleSet } from '../../Styling';\nimport { Label, ILabelStyleProps, ILabelStyles } from '../../Label';\nimport { Icon } from '../../Icon';\nimport {\n Async,\n DelayedRender,\n IStyleFunctionOrObject,\n classNamesFunction,\n getId,\n getNativeProps,\n getWindow,\n initializeComponentRef,\n inputProperties,\n isControlled,\n isIE11,\n textAreaProperties,\n warn,\n warnControlledUsage,\n warnMutuallyExclusive,\n} from '../../Utilities';\nimport { ITextField, ITextFieldProps, ITextFieldStyleProps, ITextFieldStyles } from './TextField.types';\n\nconst getClassNames = classNamesFunction<ITextFieldStyleProps, ITextFieldStyles>();\n/** @internal */\nexport interface ITextFieldState {\n /** The currently displayed value if uncontrolled. */\n uncontrolledValue: string | undefined;\n\n /** Is true when the control has focus. */\n isFocused?: boolean;\n\n /**\n * Dynamic error message returned by `onGetErrorMessage`.\n * Use `this._errorMessage` to get the actual current error message.\n */\n errorMessage: string | JSX.Element;\n\n /**\n * Whether this field has `type='password'` and `canRevealPassword=true`, and the password is\n * currently being revealed.\n */\n isRevealingPassword?: boolean;\n}\n\n/** @internal */\nexport interface ITextFieldSnapshot {\n /**\n * If set, the text field is changing between single- and multi-line, so we'll need to reset\n * selection/cursor after the change completes.\n */\n selection?: [number | null, number | null];\n}\n\nconst DEFAULT_STATE_VALUE = '';\nconst COMPONENT_NAME = 'TextField';\n\nconst REVEAL_ICON_NAME = 'RedEye';\nconst HIDE_ICON_NAME = 'Hide';\n\nexport class TextFieldBase extends React.Component<ITextFieldProps, ITextFieldState, ITextFieldSnapshot>\n implements ITextField {\n public static defaultProps: ITextFieldProps = {\n resizable: true,\n deferredValidationTime: 200,\n validateOnLoad: true,\n canRevealPassword: false,\n };\n\n /** Fallback ID if none is provided in props. Access proper value via `this._id`. */\n private _fallbackId: string;\n private _descriptionId: string;\n private _labelId: string;\n private _delayedValidate: (value: string | undefined) => void;\n private _lastValidation: number;\n private _latestValidateValue: string | undefined;\n private _hasWarnedNullValue: boolean | undefined;\n private _textElement = React.createRef<HTMLTextAreaElement | HTMLInputElement>();\n private _classNames: IProcessedStyleSet<ITextFieldStyles>;\n private _async: Async;\n /** Most recent value from a change or input event, to help avoid processing events twice */\n private _lastChangeValue: string | undefined;\n\n public constructor(props: ITextFieldProps) {\n super(props);\n\n initializeComponentRef(this);\n this._async = new Async(this);\n if (process.env.NODE_ENV !== 'production') {\n warnMutuallyExclusive(COMPONENT_NAME, props, {\n errorMessage: 'onGetErrorMessage',\n });\n }\n\n this._fallbackId = getId(COMPONENT_NAME);\n this._descriptionId = getId(COMPONENT_NAME + 'Description');\n this._labelId = getId(COMPONENT_NAME + 'Label');\n\n this._warnControlledUsage();\n\n let { defaultValue = DEFAULT_STATE_VALUE } = props;\n if (typeof defaultValue === 'number') {\n // This isn't allowed per the props, but happens anyway.\n defaultValue = String(defaultValue);\n }\n this.state = {\n uncontrolledValue: this._isControlled ? undefined : defaultValue,\n isFocused: false,\n errorMessage: '',\n };\n\n this._delayedValidate = this._async.debounce(this._validate, this.props.deferredValidationTime);\n this._lastValidation = 0;\n }\n\n /**\n * Gets the current value of the text field.\n */\n public get value(): string | undefined {\n return _getValue(this.props, this.state);\n }\n\n public componentDidMount(): void {\n this._adjustInputHeight();\n\n if (this.props.validateOnLoad) {\n this._validate(this.value);\n }\n }\n\n public componentWillUnmount() {\n this._async.dispose();\n }\n\n public getSnapshotBeforeUpdate(prevProps: ITextFieldProps, prevState: ITextFieldState): ITextFieldSnapshot | null {\n return {\n selection: [this.selectionStart, this.selectionEnd],\n };\n }\n\n public componentDidUpdate(\n prevProps: ITextFieldProps,\n prevState: ITextFieldState,\n snapshot: ITextFieldSnapshot,\n ): void {\n const props = this.props;\n const { selection = [null, null] } = snapshot || {};\n const [start, end] = selection;\n\n if (!!prevProps.multiline !== !!props.multiline && prevState.isFocused) {\n // The text field has just changed between single- and multi-line, so we need to reset focus\n // and selection/cursor.\n this.focus();\n if (start !== null && end !== null && start >= 0 && end >= 0) {\n this.setSelectionRange(start, end);\n }\n }\n\n const prevValue = _getValue(prevProps, prevState);\n const value = this.value;\n if (prevValue !== value) {\n // Handle controlled/uncontrolled warnings and status\n this._warnControlledUsage(prevProps);\n\n // Clear error message if needed\n // TODO: is there any way to do this without an extra render?\n if (this.state.errorMessage && !props.errorMessage) {\n this.setState({ errorMessage: '' });\n }\n\n // Adjust height if needed based on new value\n this._adjustInputHeight();\n\n // Reset the record of the last value seen by a change/input event\n this._lastChangeValue = undefined;\n\n // TODO: #5875 added logic to trigger validation in componentWillReceiveProps and other places.\n // This seems a bit odd and hard to integrate with the new approach.\n // (Starting to think we should just put the validation logic in a separate wrapper component...?)\n if (_shouldValidateAllChanges(props)) {\n this._delayedValidate(value);\n }\n }\n }\n\n public render(): JSX.Element {\n const {\n borderless,\n className,\n disabled,\n iconProps,\n inputClassName,\n label,\n multiline,\n required,\n underlined,\n prefix,\n resizable,\n suffix,\n theme,\n styles,\n autoAdjustHeight,\n canRevealPassword,\n type,\n onRenderPrefix = this._onRenderPrefix,\n onRenderSuffix = this._onRenderSuffix,\n onRenderLabel = this._onRenderLabel,\n onRenderDescription = this._onRenderDescription,\n } = this.props;\n const { isFocused, isRevealingPassword } = this.state;\n const errorMessage = this._errorMessage;\n\n const hasRevealButton = !!canRevealPassword && type === 'password' && _browserNeedsRevealButton();\n\n const classNames = (this._classNames = getClassNames(styles!, {\n theme: theme!,\n className,\n disabled,\n focused: isFocused,\n required,\n multiline,\n hasLabel: !!label,\n hasErrorMessage: !!errorMessage,\n borderless,\n resizable,\n hasIcon: !!iconProps,\n underlined,\n inputClassName,\n autoAdjustHeight,\n hasRevealButton,\n }));\n\n return (\n <div className={classNames.root}>\n <div className={classNames.wrapper}>\n {onRenderLabel(this.props, this._onRenderLabel)}\n <div className={classNames.fieldGroup}>\n {(prefix !== undefined || this.props.onRenderPrefix) && (\n <div className={classNames.prefix}>{onRenderPrefix(this.props, this._onRenderPrefix)}</div>\n )}\n {multiline ? this._renderTextArea() : this._renderInput()}\n {iconProps && <Icon className={classNames.icon} {...iconProps} />}\n {hasRevealButton && (\n // Explicitly set type=\"button\" since the default button type within a form is \"submit\"\n <button className={classNames.revealButton} onClick={this._onRevealButtonClick} type=\"button\">\n <span className={classNames.revealSpan}>\n <Icon\n className={classNames.revealIcon}\n iconName={isRevealingPassword ? HIDE_ICON_NAME : REVEAL_ICON_NAME}\n />\n </span>\n </button>\n )}\n {(suffix !== undefined || this.props.onRenderSuffix) && (\n <div className={classNames.suffix}>{onRenderSuffix(this.props, this._onRenderSuffix)}</div>\n )}\n </div>\n </div>\n {this._isDescriptionAvailable && (\n <span id={this._descriptionId}>\n {onRenderDescription(this.props, this._onRenderDescription)}\n {errorMessage && (\n <div role=\"alert\">\n <DelayedRender>\n <p className={classNames.errorMessage}>\n <span data-automation-id=\"error-message\">{errorMessage}</span>\n </p>\n </DelayedRender>\n </div>\n )}\n </span>\n )}\n </div>\n );\n }\n\n /**\n * Sets focus on the text field\n */\n public focus() {\n if (this._textElement.current) {\n this._textElement.current.focus();\n }\n }\n\n /**\n * Blurs the text field.\n */\n public blur() {\n if (this._textElement.current) {\n this._textElement.current.blur();\n }\n }\n\n /**\n * Selects the text field\n */\n public select() {\n if (this._textElement.current) {\n this._textElement.current.select();\n }\n }\n\n /**\n * Sets the selection start of the text field to a specified value\n */\n public setSelectionStart(value: number): void {\n if (this._textElement.current) {\n this._textElement.current.selectionStart = value;\n }\n }\n\n /**\n * Sets the selection end of the text field to a specified value\n */\n public setSelectionEnd(value: number): void {\n if (this._textElement.current) {\n this._textElement.current.selectionEnd = value;\n }\n }\n\n /**\n * Gets the selection start of the text field\n */\n public get selectionStart(): number | null {\n return this._textElement.current ? this._textElement.current.selectionStart : -1;\n }\n\n /**\n * Gets the selection end of the text field\n */\n public get selectionEnd(): number | null {\n return this._textElement.current ? this._textElement.current.selectionEnd : -1;\n }\n\n /**\n * Sets the start and end positions of a selection in a text field.\n * @param start - Index of the start of the selection.\n * @param end - Index of the end of the selection.\n */\n public setSelectionRange(start: number, end: number): void {\n if (this._textElement.current) {\n (this._textElement.current as HTMLInputElement).setSelectionRange(start, end);\n }\n }\n\n private _warnControlledUsage(prevProps?: ITextFieldProps): void {\n // Show warnings if props are being used in an invalid way\n warnControlledUsage({\n componentId: this._id,\n componentName: COMPONENT_NAME,\n props: this.props,\n oldProps: prevProps,\n valueProp: 'value',\n defaultValueProp: 'defaultValue',\n onChangeProp: 'onChange',\n readOnlyProp: 'readOnly',\n });\n\n if (this.props.value === null && !this._hasWarnedNullValue) {\n this._hasWarnedNullValue = true;\n warn(\n `Warning: 'value' prop on '${COMPONENT_NAME}' should not be null. Consider using an ` +\n 'empty string to clear the component or undefined to indicate an uncontrolled component.',\n );\n }\n }\n\n /** Returns `props.id` if available, or a fallback if not. */\n private get _id(): string {\n return this.props.id || this._fallbackId;\n }\n\n private get _isControlled(): boolean {\n return isControlled(this.props, 'value');\n }\n\n private _onFocus = (ev: React.FocusEvent<HTMLInputElement | HTMLTextAreaElement>): void => {\n if (this.props.onFocus) {\n this.props.onFocus(ev);\n }\n\n this.setState({ isFocused: true }, () => {\n if (this.props.validateOnFocusIn) {\n this._validate(this.value);\n }\n });\n };\n\n private _onBlur = (ev: React.FocusEvent<HTMLInputElement | HTMLTextAreaElement>): void => {\n if (this.props.onBlur) {\n this.props.onBlur(ev);\n }\n\n this.setState({ isFocused: false }, () => {\n if (this.props.validateOnFocusOut) {\n this._validate(this.value);\n }\n });\n };\n\n private _onRenderLabel = (props: ITextFieldProps): JSX.Element | null => {\n const { label, required } = props;\n // IProcessedStyleSet definition requires casting for what Label expects as its styles prop\n const labelStyles = this._classNames.subComponentStyles\n ? (this._classNames.subComponentStyles.label as IStyleFunctionOrObject<ILabelStyleProps, ILabelStyles>)\n : undefined;\n\n if (label) {\n return (\n <Label required={required} htmlFor={this._id} styles={labelStyles} disabled={props.disabled} id={this._labelId}>\n {props.label}\n </Label>\n );\n }\n return null;\n };\n\n private _onRenderDescription = (props: ITextFieldProps): JSX.Element | null => {\n if (props.description) {\n return <span className={this._classNames.description}>{props.description}</span>;\n }\n return null;\n };\n\n private _onRenderPrefix(props: ITextFieldProps): JSX.Element {\n const { prefix } = props;\n return <span style={{ paddingBottom: '1px' }}>{prefix}</span>;\n }\n\n private _onRenderSuffix(props: ITextFieldProps): JSX.Element {\n const { suffix } = props;\n return <span style={{ paddingBottom: '1px' }}>{suffix}</span>;\n }\n\n /**\n * Current error message from either `props.errorMessage` or the result of `props.onGetErrorMessage`.\n *\n * - If there is no validation error or we have not validated the input value, errorMessage is an empty string.\n * - If we have done the validation and there is validation error, errorMessage is the validation error message.\n */\n private get _errorMessage(): string | JSX.Element {\n const { errorMessage = this.state.errorMessage } = this.props;\n return errorMessage || '';\n }\n\n /**\n * If a custom description render function is supplied then treat description as always available.\n * Otherwise defer to the presence of description or error message text.\n */\n private get _isDescriptionAvailable(): boolean {\n const props = this.props;\n return !!(props.onRenderDescription || props.description || this._errorMessage);\n }\n\n private _renderTextArea(): React.ReactElement<React.HTMLAttributes<HTMLAreaElement>> {\n const textAreaProps = getNativeProps<React.TextareaHTMLAttributes<HTMLTextAreaElement>>(\n this.props,\n textAreaProperties,\n ['defaultValue'],\n );\n const ariaLabelledBy = this.props['aria-labelledby'] || (this.props.label ? this._labelId : undefined);\n return (\n <textarea\n id={this._id}\n {...textAreaProps}\n ref={this._textElement as React.RefObject<HTMLTextAreaElement>}\n value={this.value || ''}\n onInput={this._onInputChange}\n onChange={this._onInputChange}\n className={this._classNames.field}\n aria-labelledby={ariaLabelledBy}\n aria-describedby={this._isDescriptionAvailable ? this._descriptionId : this.props['aria-describedby']}\n aria-invalid={!!this._errorMessage}\n aria-label={this.props.ariaLabel}\n readOnly={this.props.readOnly}\n onFocus={this._onFocus}\n onBlur={this._onBlur}\n />\n );\n }\n\n private _renderInput(): JSX.Element | null {\n const inputProps: React.InputHTMLAttributes<HTMLInputElement> & React.RefAttributes<HTMLInputElement> = {\n type: this.state.isRevealingPassword ? 'text' : this.props.type || 'text',\n id: this._id,\n ...getNativeProps(this.props, inputProperties, ['defaultValue', 'type']),\n 'aria-labelledby': this.props['aria-labelledby'] || (this.props.label ? this._labelId : undefined),\n ref: this._textElement as React.RefObject<HTMLInputElement>,\n value: this.value || '',\n onInput: this._onInputChange,\n onChange: this._onInputChange,\n className: this._classNames.field,\n 'aria-label': this.props.ariaLabel,\n 'aria-describedby': this._isDescriptionAvailable ? this._descriptionId : this.props['aria-describedby'],\n 'aria-invalid': !!this._errorMessage,\n onFocus: this._onFocus,\n onBlur: this._onBlur,\n };\n\n const defaultRender = (updatedInputProps: React.InputHTMLAttributes<HTMLInputElement>) => {\n return <input {...updatedInputProps} />;\n };\n const onRenderInput = this.props.onRenderInput || defaultRender;\n return onRenderInput(inputProps, defaultRender);\n }\n\n private _onRevealButtonClick = (event: React.MouseEvent<HTMLButtonElement>): void => {\n this.setState(prevState => ({ isRevealingPassword: !prevState.isRevealingPassword }));\n };\n\n private _onInputChange = (event: React.FormEvent<HTMLInputElement | HTMLTextAreaElement>): void => {\n // Previously, we needed to call both onInput and onChange due to some weird IE/React issues,\n // which have *probably* been fixed now:\n // - https://github.com/microsoft/fluentui/issues/744 (likely fixed)\n // - https://github.com/microsoft/fluentui/issues/824 (confirmed fixed)\n\n // TODO (Fabric 8?) - Switch to calling only onChange. This switch is pretty disruptive for\n // tests (ours and maybe consumers' too), so it seemed best to do the switch in a major bump.\n\n const element = event.target as HTMLInputElement;\n const value = element.value;\n // Ignore this event if the value is undefined (in case one of the IE bugs comes back)\n if (value === undefined || value === this._lastChangeValue) {\n return;\n }\n this._lastChangeValue = value;\n\n // This is so developers can access the event properties in asynchronous callbacks\n // https://reactjs.org/docs/events.html#event-pooling\n event.persist();\n\n let isSameValue: boolean;\n this.setState(\n (prevState: ITextFieldState, props: ITextFieldProps) => {\n const prevValue = _getValue(props, prevState) || '';\n isSameValue = value === prevValue;\n // Avoid doing unnecessary work when the value has not changed.\n if (isSameValue) {\n return null;\n }\n\n // ONLY if this is an uncontrolled component, update the displayed value.\n // (Controlled components must update the `value` prop from `onChange`.)\n return this._isControlled ? null : { uncontrolledValue: value };\n },\n () => {\n // If the value actually changed, call onChange (for either controlled or uncontrolled)\n const { onChange } = this.props;\n if (!isSameValue && onChange) {\n onChange(event, value);\n }\n },\n );\n };\n\n private _validate(value: string | undefined): void {\n // In case _validate is called again while validation promise is executing\n if (this._latestValidateValue === value && _shouldValidateAllChanges(this.props)) {\n return;\n }\n\n this._latestValidateValue = value;\n const onGetErrorMessage = this.props.onGetErrorMessage;\n const result = onGetErrorMessage && onGetErrorMessage(value || '');\n\n if (result !== undefined) {\n if (typeof result === 'string' || !('then' in result)) {\n this.setState({ errorMessage: result });\n this._notifyAfterValidate(value, result);\n } else {\n const currentValidation: number = ++this._lastValidation;\n\n result.then((errorMessage: string | JSX.Element) => {\n if (currentValidation === this._lastValidation) {\n this.setState({ errorMessage });\n }\n this._notifyAfterValidate(value, errorMessage);\n });\n }\n } else {\n this._notifyAfterValidate(value, '');\n }\n }\n\n private _notifyAfterValidate(value: string | undefined, errorMessage: string | JSX.Element): void {\n if (value === this.value && this.props.onNotifyValidationResult) {\n this.props.onNotifyValidationResult(errorMessage, value);\n }\n }\n\n private _adjustInputHeight(): void {\n if (this._textElement.current && this.props.autoAdjustHeight && this.props.multiline) {\n const textField = this._textElement.current;\n textField.style.height = '';\n textField.style.height = textField.scrollHeight + 'px';\n }\n }\n}\n\n/** Get the value from the given state and props (converting from number to string if needed) */\nfunction _getValue(props: ITextFieldProps, state: ITextFieldState): string | undefined {\n const { value = state.uncontrolledValue } = props;\n if (typeof value === 'number') {\n // not allowed per typings, but happens anyway\n return String(value);\n }\n return value;\n}\n\n/**\n * If `validateOnFocusIn` or `validateOnFocusOut` is true, validation should run **only** on that event.\n * Otherwise, validation should run on every change.\n */\nfunction _shouldValidateAllChanges(props: ITextFieldProps): boolean {\n return !(props.validateOnFocusIn || props.validateOnFocusOut);\n}\n\n// Only calculate this once across all TextFields, since will stay the same\nlet __browserNeedsRevealButton: boolean | undefined;\n\nfunction _browserNeedsRevealButton() {\n if (typeof __browserNeedsRevealButton !== 'boolean') {\n const win = getWindow();\n\n if (win?.navigator) {\n // Edge, Chromium Edge\n const isEdge = /Edg/.test(win.navigator.userAgent || '');\n\n __browserNeedsRevealButton = !(isIE11() || isEdge);\n } else {\n __browserNeedsRevealButton = true;\n }\n }\n return __browserNeedsRevealButton;\n}\n","import {\n AnimationClassNames,\n getGlobalClassNames,\n getInputFocusStyle,\n HighContrastSelector,\n IStyle,\n normalize,\n getPlaceholderStyles,\n IconFontSizes,\n getHighContrastNoAdjustStyle,\n} from '../../Styling';\nimport { ILabelStyles, ILabelStyleProps } from '../../Label';\nimport { ITextFieldStyleProps, ITextFieldStyles } from './TextField.types';\nimport { IStyleFunctionOrObject } from '@uifabric/utilities';\n\nconst globalClassNames = {\n root: 'ms-TextField',\n description: 'ms-TextField-description',\n errorMessage: 'ms-TextField-errorMessage',\n field: 'ms-TextField-field',\n fieldGroup: 'ms-TextField-fieldGroup',\n prefix: 'ms-TextField-prefix',\n suffix: 'ms-TextField-suffix',\n wrapper: 'ms-TextField-wrapper',\n revealButton: 'ms-TextField-reveal',\n\n multiline: 'ms-TextField--multiline',\n borderless: 'ms-TextField--borderless',\n underlined: 'ms-TextField--underlined',\n unresizable: 'ms-TextField--unresizable',\n\n required: 'is-required',\n disabled: 'is-disabled',\n active: 'is-active',\n};\n\nfunction getLabelStyles(props: ITextFieldStyleProps): IStyleFunctionOrObject<ILabelStyleProps, ILabelStyles> {\n const { underlined, disabled, focused, theme } = props;\n const { palette, fonts } = theme;\n\n return () => ({\n root: [\n underlined &&\n disabled && {\n color: palette.neutralTertiary,\n },\n underlined && {\n fontSize: fonts.medium.fontSize,\n marginRight: 8,\n paddingLeft: 12,\n paddingRight: 0,\n lineHeight: '22px',\n height: 32,\n },\n underlined &&\n focused && {\n selectors: {\n [HighContrastSelector]: {\n height: 31, // -1px to prevent jumpiness in HC with the increased border-width to 2px\n },\n },\n },\n ],\n });\n}\n\nexport function getStyles(props: ITextFieldStyleProps): ITextFieldStyles {\n const {\n theme,\n className,\n disabled,\n focused,\n required,\n multiline,\n hasLabel,\n borderless,\n underlined,\n hasIcon,\n resizable,\n hasErrorMessage,\n inputClassName,\n autoAdjustHeight,\n hasRevealButton,\n } = props;\n\n const { semanticColors, effects, fonts } = theme;\n\n const classNames = getGlobalClassNames(globalClassNames, theme);\n\n const fieldPrefixSuffix: IStyle = {\n // Suffix/Prefix are not editable so the disabled slot perfectly fits.\n background: semanticColors.disabledBackground,\n color: !disabled ? semanticColors.inputPlaceholderText : semanticColors.disabledText,\n display: 'flex',\n alignItems: 'center',\n padding: '0 10px',\n lineHeight: 1,\n whiteSpace: 'nowrap',\n flexShrink: 0,\n selectors: {\n [HighContrastSelector]: {\n background: 'Window',\n color: disabled ? 'GrayText' : 'WindowText',\n },\n },\n };\n\n // placeholder style constants\n const placeholderStyles: IStyle = [\n fonts.medium,\n {\n color: semanticColors.inputPlaceholderText,\n opacity: 1,\n selectors: {\n [HighContrastSelector]: {\n color: 'GrayText',\n },\n },\n },\n ];\n\n const disabledPlaceholderStyles: IStyle = {\n color: semanticColors.disabledText,\n selectors: {\n [HighContrastSelector]: {\n color: 'GrayText',\n },\n },\n };\n\n return {\n root: [\n classNames.root,\n fonts.medium,\n required && classNames.required,\n disabled && classNames.disabled,\n focused && classNames.active,\n multiline && classNames.multiline,\n borderless && classNames.borderless,\n underlined && classNames.underlined,\n normalize,\n {\n position: 'relative',\n },\n className,\n ],\n wrapper: [\n classNames.wrapper,\n\n underlined && [\n {\n display: 'flex',\n borderBottom: `1px solid ${!hasErrorMessage ? semanticColors.inputBorder : semanticColors.errorText}`,\n width: '100%',\n },\n disabled && {\n borderBottomColor: semanticColors.disabledBackground,\n selectors: {\n [HighContrastSelector]: {\n borderColor: 'GrayText',\n ...getHighContrastNoAdjustStyle(),\n },\n },\n },\n !disabled && {\n selectors: {\n ':hover': {\n borderBottomColor: !hasErrorMessage ? semanticColors.inputBorderHovered : semanticColors.errorText,\n selectors: {\n [HighContrastSelector]: {\n borderBottomColor: 'Highlight',\n ...getHighContrastNoAdjustStyle(),\n },\n },\n },\n },\n },\n focused && [\n {\n position: 'relative',\n },\n getInputFocusStyle(\n !hasErrorMessage ? semanticColors.inputFocusBorderAlt : semanticColors.errorText,\n 0,\n 'borderBottom',\n ),\n ],\n ],\n ],\n fieldGroup: [\n classNames.fieldGroup,\n normalize,\n {\n border: `1px solid ${semanticColors.inputBorder}`,\n borderRadius: effects.roundedCorner2,\n background: semanticColors.inputBackground,\n cursor: 'text',\n height: 32,\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'stretch',\n position: 'relative',\n },\n multiline && {\n minHeight: '60px',\n height: 'auto',\n display: 'flex',\n },\n\n !focused &&\n !disabled && {\n selectors: {\n ':hover': {\n borderColor: semanticColors.inputBorderHovered,\n selectors: {\n [HighContrastSelector]: {\n borderColor: 'Highlight',\n ...getHighContrastNoAdjustStyle(),\n },\n },\n },\n },\n },\n\n focused &&\n !underlined &&\n getInputFocusStyle(\n !hasErrorMessage ? semanticColors.inputFocusBorderAlt : semanticColors.errorText,\n effects.roundedCorner2,\n ),\n disabled && {\n borderColor: semanticColors.disabledBackground,\n selectors: {\n [HighContrastSelector]: {\n borderColor: 'GrayText',\n ...getHighContrastNoAdjustStyle(),\n },\n },\n\n cursor: 'default',\n },\n borderless && {\n border: 'none',\n },\n borderless &&\n focused && {\n border: 'none',\n selectors: {\n ':after': {\n border: 'none',\n },\n },\n },\n underlined && {\n flex: '1 1 0px',\n border: 'none',\n textAlign: 'left',\n },\n underlined &&\n disabled && {\n backgroundColor: 'transparent',\n },\n\n hasErrorMessage &&\n !underlined && {\n borderColor: semanticColors.errorText,\n selectors: {\n '&:hover': {\n borderColor: semanticColors.errorText,\n },\n },\n },\n !hasLabel &&\n required && {\n selectors: {\n ':before': {\n content: `'*'`,\n color: semanticColors.errorText,\n position: 'absolute',\n top: -5,\n right: -10,\n },\n [HighContrastSelector]: {\n selectors: {\n ':before': {\n color: 'WindowText',\n right: -14, // moving the * 4 pixel to right to alleviate border clipping in HC mode.\n },\n },\n },\n },\n },\n ],\n field: [\n fonts.medium,\n classNames.field,\n normalize,\n {\n borderRadius: 0,\n border: 'none',\n background: 'none',\n backgroundColor: 'transparent',\n color: semanticColors.inputText,\n padding: '0 8px',\n width: '100%',\n minWidth: 0,\n textOverflow: 'ellipsis',\n outline: 0,\n selectors: {\n '&:active, &:focus, &:hover': { outline: 0 },\n '::-ms-clear': {\n display: 'none',\n },\n [HighContrastSelector]: {\n background: 'Window',\n color: disabled ? 'GrayText' : 'WindowText',\n },\n },\n },\n getPlaceholderStyles(placeholderStyles),\n multiline &&\n !resizable && [\n classNames.unresizable,\n {\n resize: 'none',\n },\n ],\n multiline && {\n minHeight: 'inherit',\n lineHeight: 17,\n flexGrow: 1,\n paddingTop: 6,\n paddingBottom: 6,\n overflow: 'auto',\n width: '100%',\n },\n multiline &&\n autoAdjustHeight && {\n overflow: 'hidden',\n },\n hasIcon &&\n !hasRevealButton && {\n paddingRight: 24,\n },\n multiline &&\n hasIcon && {\n paddingRight: 40,\n },\n disabled && [\n {\n backgroundColor: semanticColors.disabledBackground,\n color: semanticColors.disabledText,\n borderColor: semanticColors.disabledBackground,\n },\n getPlaceholderStyles(disabledPlaceholderStyles),\n ],\n underlined && {\n textAlign: 'left',\n },\n focused &&\n !borderless && {\n selectors: {\n [HighContrastSelector]: {\n paddingLeft: 11,\n paddingRight: 11,\n },\n },\n },\n focused &&\n multiline &&\n !borderless && {\n selectors: {\n [HighContrastSelector]: {\n paddingTop: 4, // take into consideration the 2px increased border-width (not when borderless).\n },\n },\n },\n inputClassName,\n ],\n icon: [\n multiline && {\n paddingRight: 24,\n alignItems: 'flex-end',\n },\n {\n pointerEvents: 'none',\n position: 'absolute',\n bottom: 6,\n right: 8,\n top: 'auto',\n fontSize: IconFontSizes.medium,\n lineHeight: 18,\n },\n disabled && {\n color: semanticColors.disabledText,\n },\n ],\n description: [\n classNames.description,\n {\n color: semanticColors.bodySubtext,\n fontSize: fonts.xSmall.fontSize,\n },\n ],\n errorMessage: [\n classNames.errorMessage,\n AnimationClassNames.slideDownIn20,\n fonts.small,\n {\n color: semanticColors.errorText,\n margin: 0,\n paddingTop: 5,\n display: 'flex',\n alignItems: 'center',\n },\n ],\n prefix: [classNames.prefix, fieldPrefixSuffix],\n suffix: [classNames.suffix, fieldPrefixSuffix],\n revealButton: [\n classNames.revealButton,\n 'ms-Button',\n 'ms-Button--icon',\n {\n height: 30,\n width: 32,\n border: 'none',\n padding: '0px 4px',\n backgroundColor: 'transparent',\n color: semanticColors.link,\n selectors: {\n ':hover': {\n outline: 0,\n color: semanticColors.primaryButtonBackgroundHovered,\n backgroundColor: semanticColors.buttonBackgroundHovered,\n selectors: {\n [HighContrastSelector]: {\n borderColor: 'Highlight',\n color: 'Highlight',\n },\n },\n },\n ':focus': { outline: 0 },\n },\n },\n hasIcon && {\n marginRight: 28,\n },\n ],\n revealSpan: {\n display: 'flex',\n height: '100%',\n alignItems: 'center',\n },\n revealIcon: {\n margin: '0px 4px',\n pointerEvents: 'none',\n bottom: 6,\n right: 8,\n top: 'auto',\n fontSize: IconFontSizes.medium,\n lineHeight: 18,\n },\n subComponentStyles: {\n label: getLabelStyles(props),\n },\n };\n}\n","import * as React from 'react';\nimport { styled } from '../../Utilities';\nimport { TextFieldBase } from './TextField.base';\nimport { ITextFieldProps, ITextFieldStyles, ITextFieldStyleProps } from './TextField.types';\nimport { getStyles } from './TextField.styles';\nexport { ITextField } from './TextField.types';\n\nexport const TextField: React.FunctionComponent<ITextFieldProps> = styled<\n ITextFieldProps,\n ITextFieldStyleProps,\n ITextFieldStyles\n>(TextFieldBase, getStyles, undefined, {\n scope: 'TextField',\n});\n","import { KTP_SEPARATOR, KTP_PREFIX, DATAKTP_TARGET, DATAKTP_EXECUTE_TARGET, KTP_LAYER_ID } from './KeytipConstants';\nimport { addElementAtIndex } from '../../Utilities';\n\n/**\n * Converts a whole set of KeySequences into one keytip ID, which will be the ID for the last keytip sequence specified\n * keySequences should not include the initial keytip 'start' sequence.\n *\n * @param keySequences - Full path of IKeySequences for one keytip.\n * @returns String to use for the keytip ID.\n */\nexport function sequencesToID(keySequences: string[]): string {\n return keySequences.reduce((prevValue: string, keySequence: string): string => {\n return prevValue + KTP_SEPARATOR + keySequence.split('').join(KTP_SEPARATOR);\n }, KTP_PREFIX);\n}\n\n/**\n * Merges an overflow sequence with a key sequence.\n *\n * @param keySequences - Full sequence for one keytip.\n * @param overflowKeySequences - Full overflow keytip sequence.\n * @returns Sequence that will be used by the keytip when in the overflow.\n */\nexport function mergeOverflows(keySequences: string[], overflowKeySequences: string[]): string[] {\n const overflowSequenceLen = overflowKeySequences.length;\n const overflowSequence = [...overflowKeySequences].pop();\n const newKeySequences = [...keySequences];\n return addElementAtIndex(newKeySequences, overflowSequenceLen - 1, overflowSequence!);\n}\n\n/**\n * Constructs the data-ktp-target attribute selector from a full key sequence.\n *\n * @param keySequences - Full string[] for a Keytip.\n * @returns String selector to use to query for the keytip target.\n */\nexport function ktpTargetFromSequences(keySequences: string[]): string {\n return '[' + DATAKTP_TARGET + '=\"' + sequencesToID(keySequences) + '\"]';\n}\n\n/**\n * Constructs the data-ktp-execute-target attribute selector from a keytip ID.\n *\n * @param keytipId - ID of the Keytip.\n * @returns String selector to use to query for the keytip execute target.\n */\nexport function ktpTargetFromId(keytipId: string): string {\n return '[' + DATAKTP_EXECUTE_TARGET + '=\"' + keytipId + '\"]';\n}\n\n/**\n * Gets the aria-describedby value to put on the component with this keytip.\n *\n * @param keySequences - KeySequences of the keytip.\n * @returns The aria-describedby value to set on the component with this keytip.\n */\nexport function getAriaDescribedBy(keySequences: string[]): string {\n const describedby = ' ' + KTP_LAYER_ID;\n if (!keySequences.length) {\n // Return just the layer ID\n return describedby;\n }\n\n return describedby + ' ' + sequencesToID(keySequences);\n}\n","import * as React from 'react';\nimport { useConst, usePrevious } from '@uifabric/react-hooks';\nimport { mergeAriaAttributeValues } from '../../Utilities';\nimport { KeytipDataOptions } from './KeytipData.types';\nimport { IKeytipProps } from '../../Keytip';\nimport { KeytipManager, mergeOverflows, sequencesToID, getAriaDescribedBy } from '../../utilities/keytips/index';\n\nexport interface IKeytipData {\n ariaDescribedBy: string | undefined;\n keytipId: string | undefined;\n}\n\n/**\n * Hook that creates attributes for components which are enabled with Keytip.\n */\nexport function useKeytipData(options: KeytipDataOptions): IKeytipData {\n const uniqueId = React.useRef<string>();\n const keytipProps: IKeytipProps | undefined = options.keytipProps\n ? {\n disabled: options.disabled,\n ...options.keytipProps,\n }\n : undefined;\n\n const keytipManager = useConst<KeytipManager>(KeytipManager.getInstance());\n const prevOptions = usePrevious(options);\n\n // useLayoutEffect used to strictly emulate didUpdate/didMount behavior\n React.useLayoutEffect(() => {\n if (\n uniqueId.current &&\n keytipProps &&\n (prevOptions?.keytipProps !== options.keytipProps || prevOptions?.disabled !== options.disabled)\n ) {\n keytipManager.update(keytipProps, uniqueId.current);\n }\n });\n\n React.useLayoutEffect(() => {\n // Register Keytip in KeytipManager\n if (keytipProps) {\n uniqueId.current = keytipManager.register(keytipProps);\n }\n\n return () => {\n // Unregister Keytip in KeytipManager\n keytipProps && keytipManager.unregister(keytipProps, uniqueId.current!);\n };\n // this is meant to run only at mount, and updates are handled separately\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n let nativeKeytipProps: IKeytipData = {\n ariaDescribedBy: undefined,\n keytipId: undefined,\n };\n\n if (keytipProps) {\n nativeKeytipProps = getKeytipData(keytipManager, keytipProps, options.ariaDescribedBy);\n }\n\n return nativeKeytipProps;\n}\n\n/**\n * Gets the aria- and data- attributes to attach to the component\n * @param keytipProps - options for Keytip\n * @param describedByPrepend - ariaDescribedBy value to prepend\n */\nfunction getKeytipData(\n keytipManager: KeytipManager,\n keytipProps: IKeytipProps,\n describedByPrepend?: string,\n): IKeytipData {\n // Add the parent overflow sequence if necessary\n const newKeytipProps = keytipManager.addParentOverflow(keytipProps);\n\n // Construct aria-describedby and data-ktp-id attributes\n const ariaDescribedBy = mergeAriaAttributeValues(\n describedByPrepend,\n getAriaDescribedBy(newKeytipProps.keySequences),\n )!;\n\n let keySequences = [...newKeytipProps.keySequences];\n if (newKeytipProps.overflowSetSequence) {\n keySequences = mergeOverflows(keySequences, newKeytipProps.overflowSetSequence);\n }\n const keytipId = sequencesToID(keySequences);\n\n return {\n ariaDescribedBy,\n keytipId,\n };\n}\n","import { useRef, useEffect } from 'react';\n\n/**\n * Hook keeping track of a given value from a previous execution of the component the Hook is used in.\n *\n * See [React Hooks FAQ](https://reactjs.org/docs/hooks-faq.html#how-to-get-the-previous-props-or-state)\n */\nexport function usePrevious<T>(value: T): T | undefined {\n const ref = useRef<T | undefined>();\n useEffect(() => {\n ref.current = value;\n });\n return ref.current;\n}\n","import * as React from 'react';\nimport { IRenderComponent } from '../../Utilities';\nimport { DATAKTP_TARGET, DATAKTP_EXECUTE_TARGET } from '../../utilities/keytips/index';\nimport { IKeytipDataProps } from './KeytipData.types';\nimport { useKeytipData } from './useKeytipData';\n\n/**\n * A small element to help the target component correctly read out its aria-describedby for its Keytip\n * {@docCategory Keytips}\n */\nexport const KeytipData: React.FunctionComponent<IKeytipDataProps & IRenderComponent<{}>> = props => {\n const { children, ...keytipDataProps } = props;\n const { keytipId, ariaDescribedBy } = useKeytipData(keytipDataProps);\n\n return children({\n [DATAKTP_TARGET]: keytipId,\n [DATAKTP_EXECUTE_TARGET]: keytipId,\n 'aria-describedby': ariaDescribedBy,\n });\n};\n","export const getScrollHeight = (el?: HTMLElement | Window): number => {\n if (el === undefined) {\n return 0;\n }\n\n let scrollHeight = 0;\n if ('scrollHeight' in el) {\n scrollHeight = el.scrollHeight;\n } else if ('document' in el) {\n scrollHeight = el.document.documentElement.scrollHeight;\n }\n\n // No need to round as scrollHeight is already rounded for us.\n // See: https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollHeight\n return scrollHeight;\n};\n\nexport const getScrollYPosition = (el?: HTMLElement | Window): number => {\n if (el === undefined) {\n return 0;\n }\n\n let scrollPos = 0;\n if ('scrollTop' in el) {\n scrollPos = el.scrollTop;\n } else if ('scrollY' in el) {\n scrollPos = el.scrollY;\n }\n\n // Round this value to an integer as it may be fractional.\n // See: https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollTop\n // See: https://developer.mozilla.org/en-US/docs/Web/API/Window/scrollY\n return Math.ceil(scrollPos);\n};\n\nexport const setScrollYPosition = (el: HTMLElement | Window, pos: number): void => {\n if ('scrollTop' in el) {\n el.scrollTop = pos;\n } else if ('scrollY' in el) {\n el.scrollTo(el.scrollX, pos);\n }\n};\n","import * as React from 'react';\nimport { IRefObject, IRectangle, IRenderFunction } from '../../Utilities';\nimport { List } from './List';\n\n/**\n * {@docCategory List}\n */\nexport const ScrollToMode = {\n /**\n * Does not make any consideration to where in the viewport the item should align to.\n */\n auto: 0 as 0,\n /**\n * Attempts to scroll the list so the top of the desired item is aligned with the top of the viewport.\n */\n top: 1 as 1,\n /**\n * Attempts to scroll the list so the bottom of the desired item is aligned with the bottom of the viewport.\n */\n bottom: 2 as 2,\n /**\n * Attempts to scroll the list so the desired item is in the exact center of the viewport.\n */\n center: 3 as 3,\n};\n\n/**\n * {@docCategory List}\n */\nexport type ScrollToMode = typeof ScrollToMode[keyof typeof ScrollToMode];\n\n/**\n * Props passed to the render override for the list root.\n * {@docCategory List}\n */\nexport interface IListOnRenderRootProps<T> {\n /**\n * The ref to be applied to the list root.\n * The `List` uses this element to track scroll position and sizing.\n */\n rootRef: React.Ref<HTMLDivElement>;\n /**\n * Props to apply to the list root element.\n */\n divProps: React.HTMLAttributes<HTMLDivElement>;\n /**\n * The active pages to be rendered into the list.\n * These will have been rendered using `onRenderPage`.\n */\n pages: IPage<T>[];\n /**\n * The content to be rendered as the list surface element.\n * This will have been rendered using `onRenderSurface`.\n */\n surfaceElement: JSX.Element | null;\n}\n\n/**\n * Props passed to the render override for the list surface.\n * {@docCategory List}\n */\nexport interface IListOnRenderSurfaceProps<T> {\n /**\n * A ref to be applied to the surface element.\n * The `List` uses this element to track content size and focus.\n */\n surfaceRef: React.Ref<HTMLDivElement>;\n /**\n * Props to apply to the list surface element.\n */\n divProps: React.HTMLAttributes<HTMLDivElement>;\n /**\n * The active pages to be rendered into the list.\n * These will have been rendered using `onRenderPage`.\n */\n pages: IPage<T>[];\n /**\n * The content to be rendered representing all active pages.\n */\n pageElements: JSX.Element[];\n}\n\n/**\n * {@docCategory List}\n */\nexport interface IList {\n /**\n * Force the component to update.\n */\n forceUpdate: () => void;\n\n /**\n * Get the current height the list and it's pages.\n */\n getTotalListHeight?: () => number;\n\n /**\n * Scroll to the given index. By default will bring the page the specified item is on into the view. If a callback\n * to measure the height of an individual item is specified, will only scroll to bring the specific item into view.\n *\n * Note: with items of variable height and no passed in `getPageHeight` method, the list might jump after scrolling\n * when windows before/ahead are being rendered, and the estimated height is replaced using actual elements.\n *\n * @param index - Index of item to scroll to\n * @param measureItem - Optional callback to measure the height of an individual item\n * @param scrollToMode - Optional defines the behavior of the scrolling alignment. Defaults to auto.\n * Note: The scrollToMode requires the measureItem callback is provided to function.\n */\n scrollToIndex: (index: number, measureItem?: (itemIndex: number) => number, scrollToMode?: ScrollToMode) => void;\n\n /**\n * Get the start index of the page that is currently in view\n */\n getStartItemIndexInView: () => number;\n}\n\n/**\n * {@docCategory List}\n */\nexport interface IListProps<T = any> extends React.HTMLAttributes<List<T> | HTMLDivElement> {\n /**\n * Optional callback to access the IList interface. Use this instead of ref for accessing\n * the public methods and properties of the component.\n */\n componentRef?: IRefObject<IList>;\n\n /** Optional classname to append to root list. */\n className?: string;\n\n /** Items to render. */\n items?: T[];\n\n /**\n * Method to call when trying to render an item.\n * @param item - The data associated with the cell that is being rendered.\n * @param index - The index of the cell being rendered.\n * @param isScrolling - True if the list is being scrolled. May be useful for rendering a placeholder if your cells\n * are complex.\n */\n onRenderCell?: (item?: T, index?: number, isScrolling?: boolean) => React.ReactNode;\n\n /**\n * Method to call when trying to render an item conditionally.\n *\n * When this method returns `null` the cell will be skipped in the render.\n *\n * This prop is mutually exclusive with `onRenderCell` and when `onRenderCellConditional` is set,\n * `onRenderCell` will not be called.\n *\n * @param item - The data associated with the cell that is being rendered.\n * @param index - The index of the cell being rendered.\n * @param isScrolling - True if the list is being scrolled. May be useful for rendering a placeholder if your cells\n * are complex.\n */\n onRenderCellConditional?: (item?: T, index?: number, isScrolling?: boolean) => React.ReactNode | null;\n\n /**\n * Optional callback invoked when List rendering completed.\n * This can be on initial mount or on re-render due to scrolling.\n * This method will be called as a result of changes in List pages (added or removed),\n * and after ALL the changes complete.\n * To track individual page Add / Remove use onPageAdded / onPageRemoved instead.\n * @param pages - The current array of pages in the List.\n */\n onPagesUpdated?: (pages: IPage<T>[]) => void;\n\n /** Optional callback for monitoring when a page is added. */\n onPageAdded?: (page: IPage<T>) => void;\n\n /** Optional callback for monitoring when a page is removed. */\n onPageRemoved?: (page: IPage<T>) => void;\n\n /** Optional callback to get the item key, to be used on render. */\n getKey?: (item: T, index?: number) => string;\n\n /**\n * Called by the list to get the specification for a page.\n * Use this method to provide an allocation of items per page,\n * as well as an estimated rendered height for the page.\n * The list will use this to optimize virtualization.\n */\n getPageSpecification?: (itemIndex?: number, visibleRect?: IRectangle) => IPageSpecification;\n\n /**\n * Method called by the list to get how many items to render per page from specified index.\n * In general, use `getPageSpecification` instead.\n */\n getItemCountForPage?: (itemIndex?: number, visibleRect?: IRectangle) => number;\n\n /**\n * Method called by the list to get the pixel height for a given page. By default, we measure the first\n * page's height and default all other pages to that height when calculating the surface space. It is\n * ideal to be able to adequately predict page heights in order to keep the surface space from jumping\n * in pixels, which has been seen to cause browser performance issues.\n * In general, use `getPageSpecification` instead.\n */\n getPageHeight?: (itemIndex?: number, visibleRect?: IRectangle, itemCount?: number) => number;\n\n /**\n * Method called by the list to derive the page style object. For spacer pages, the list will derive\n * the height and passed in heights will be ignored.\n */\n getPageStyle?: (page: IPage<T>) => any;\n\n /**\n * In addition to the visible window, how many windowHeights should we render ahead.\n * @defaultvalue 2\n */\n renderedWindowsAhead?: number;\n\n /**\n * In addition to the visible window, how many windowHeights should we render behind.\n * @defaultvalue 2\n */\n renderedWindowsBehind?: number;\n\n /** Index in items array to start rendering from. Defaults to 0. */\n startIndex?: number;\n\n /** Number of items to render. Defaults to items.length. */\n renderCount?: number;\n\n /**\n * Boolean value to enable render page caching. This is an experimental performance optimization\n * that is off by default.\n * @defaultvalue false\n */\n usePageCache?: boolean;\n\n /**\n * Optional callback to determine whether the list should be rendered in full, or virtualized.\n * Virtualization will add and remove pages of items as the user scrolls them into the visible range.\n * This benefits larger list scenarios by reducing the DOM on the screen, but can negatively affect performance for\n * smaller lists.\n * The default implementation will virtualize when this callback is not provided.\n */\n onShouldVirtualize?: (props: IListProps<T>) => boolean;\n\n /**\n * The role to assign to the list root element.\n * Use this to override the default assignment of 'list' to the root and 'listitem' to the cells.\n */\n role?: string;\n\n /**\n * Called when the List will render a page.\n * Override this to control how cells are rendered within a page.\n */\n onRenderPage?: IRenderFunction<IPageProps<T>>;\n\n /**\n * Render override for the element at the root of the `List`.\n * Use this to apply some final attributes or structure to the content\n * each time the list is updated with new active pages or items.\n */\n onRenderRoot?: IRenderFunction<IListOnRenderRootProps<T>>;\n\n /**\n * Render override for the element representing the surface of the `List`.\n * Use this to alter the structure of the rendered content if necessary on each update.\n */\n onRenderSurface?: IRenderFunction<IListOnRenderSurfaceProps<T>>;\n\n /**\n * An object which can be passed in as a fresh instance to 'force update' the list.\n */\n version?: {};\n\n /**\n * Whether to disable scroll state updates. This causes the isScrolling arg in onRenderCell to always be undefined.\n * This is a performance optimization to let List skip a render cycle by not updating its scrolling state.\n */\n ignoreScrollingState?: boolean;\n}\n\n/**\n * {@docCategory List}\n */\nexport interface IPage<T = any> {\n key: string;\n items: T[] | undefined;\n startIndex: number;\n itemCount: number;\n style: React.CSSProperties;\n top: number;\n height: number;\n data?: any;\n isSpacer?: boolean;\n isVisible?: boolean;\n}\n\n/**\n * {@docCategory List}\n */\nexport interface IPageProps<T = any>\n extends React.HTMLAttributes<HTMLDivElement>,\n React.ClassAttributes<HTMLDivElement> {\n /**\n * The role being assigned to the rendered page element by the list.\n */\n role?: string;\n /**\n * The allocation data for the page.\n */\n page: IPage<T>;\n}\n\n/**\n * {@docCategory List}\n */\nexport interface IPageSpecification {\n /**\n * The number of items to allocate to the page.\n */\n itemCount?: number;\n /**\n * The estimated pixel height of the page.\n */\n height?: number;\n /**\n * Data to pass through to the page when rendering.\n */\n data?: any;\n /**\n * The key to use when creating the page.\n */\n key?: string;\n}\n","import * as React from 'react';\nimport {\n Async,\n EventGroup,\n composeRenderFunction,\n css,\n divProperties,\n findIndex,\n findScrollableParent,\n getNativeProps,\n getParent,\n getWindow,\n initializeComponentRef,\n} from '../../Utilities';\nimport { canUseDOM } from './utils/canUseDom';\nimport { getScrollHeight, getScrollYPosition, setScrollYPosition } from './utils/scroll';\nimport { IRectangle, IRenderFunction } from '../../Utilities';\nimport {\n IList,\n IListProps,\n IPage,\n IPageProps,\n ScrollToMode,\n IListOnRenderSurfaceProps,\n IListOnRenderRootProps,\n} from './List.types';\n\nconst RESIZE_DELAY = 16;\nconst MIN_SCROLL_UPDATE_DELAY = 100;\nconst MAX_SCROLL_UPDATE_DELAY = 500;\nconst IDLE_DEBOUNCE_DELAY = 200;\n// The amount of time to wait before declaring that the list isn't scrolling\nconst DONE_SCROLLING_WAIT = 500;\nconst DEFAULT_ITEMS_PER_PAGE = 10;\nconst DEFAULT_PAGE_HEIGHT = 30;\nconst DEFAULT_RENDERED_WINDOWS_BEHIND = 2;\nconst DEFAULT_RENDERED_WINDOWS_AHEAD = 2;\nconst PAGE_KEY_PREFIX = 'page-';\nconst SPACER_KEY_PREFIX = 'spacer-';\n\nexport interface IListState<T = any> {\n pages?: IPage<T>[];\n\n /** The last versionstamp for */\n measureVersion?: number;\n isScrolling?: boolean;\n getDerivedStateFromProps(nextProps: IListProps<T>, previousState: IListState<T>): IListState<T>;\n\n pagesVersion?: {};\n hasMounted: boolean;\n}\n\ninterface IPageCacheItem<T> {\n page: IPage<T>;\n pageElement?: JSX.Element;\n}\n\ninterface IPageCache<T> {\n [key: string]: IPageCacheItem<T>;\n}\n\nconst EMPTY_RECT = {\n top: -1,\n bottom: -1,\n left: -1,\n right: -1,\n width: 0,\n height: 0,\n};\n\n// Naming expensive measures so that they're named in profiles.\nconst _measurePageRect = (element: HTMLElement) => element.getBoundingClientRect();\nconst _measureSurfaceRect = _measurePageRect;\nconst _measureScrollRect = _measurePageRect;\n\n/**\n * The List renders virtualized pages of items. Each page's item count is determined by the getItemCountForPage callback\n * if provided by the caller, or 10 as default. Each page's height is determined by the getPageHeight callback if\n * provided by the caller, or by cached measurements if available, or by a running average, or a default fallback.\n *\n * The algorithm for rendering pages works like this:\n *\n * 1. Predict visible pages based on \"current measure data\" (page heights, surface position, visible window)\n * 2. If changes are necessary, apply changes (add/remove pages)\n * 3. For pages that are added, measure the page heights if we need to using getBoundingClientRect\n * 4. If measurements don't match predictions, update measure data and goto step 1 asynchronously\n *\n * Measuring too frequently can pull performance down significantly. To compensate, we cache measured values so that\n * we can avoid re-measuring during operations that should not alter heights, like scrolling.\n *\n * To optimize glass rendering performance, onShouldVirtualize can be set. When onShouldVirtualize return false,\n * List will run in fast mode (not virtualized) to render all items without any measurements to improve page load time.\n * And we start doing measurements and rendering in virtualized mode when items grows larger than this threshold.\n *\n * However, certain operations can make measure data stale. For example, resizing the list, or passing in new props,\n * or forcing an update change cause pages to shrink/grow. When these operations occur, we increment a measureVersion\n * number, which we associate with cached measurements and use to determine if a remeasure should occur.\n */\nexport class List<T = any> extends React.Component<IListProps<T>, IListState<T>> implements IList {\n public static defaultProps = {\n startIndex: 0,\n onRenderCell: (item: any, index: number, containsFocus: boolean) => <>{(item && item.name) || ''}</>,\n onRenderCellConditional: undefined,\n renderedWindowsAhead: DEFAULT_RENDERED_WINDOWS_AHEAD,\n renderedWindowsBehind: DEFAULT_RENDERED_WINDOWS_BEHIND,\n };\n\n private _root = React.createRef<HTMLDivElement>();\n private _surface = React.createRef<HTMLDivElement>();\n private _pageRefs: Record<string, unknown> = {};\n private _async: Async;\n private _events: EventGroup;\n private _estimatedPageHeight: number;\n private _totalEstimates: number;\n private _cachedPageHeights: {\n [key: string]: {\n height: number;\n measureVersion: number;\n };\n };\n private _focusedIndex: number;\n private _scrollElement?: HTMLElement;\n\n // surface rect relative to window\n private _surfaceRect: IRectangle | undefined;\n\n // The visible rect that we're required to render given the current list state.\n private _requiredRect: IRectangle | null;\n\n // The visible rect that we're allowed to keep rendered. Pages outside of this rect will be removed.\n private _allowedRect: IRectangle;\n\n // The rect that is visible to the user\n private _visibleRect: IRectangle | undefined;\n\n // materialized rect around visible items, relative to surface\n private _materializedRect: IRectangle | null;\n\n private _requiredWindowsAhead: number;\n private _requiredWindowsBehind: number;\n\n private _measureVersion: number;\n private _scrollHeight?: number;\n private _scrollTop: number;\n private _pageCache: IPageCache<T>;\n\n public static getDerivedStateFromProps<U = any>(\n nextProps: IListProps<U>,\n previousState: IListState<U>,\n ): IListState<U> {\n return previousState.getDerivedStateFromProps(nextProps, previousState);\n }\n\n constructor(props: IListProps<T>) {\n super(props);\n\n initializeComponentRef(this);\n\n this.state = {\n pages: [],\n isScrolling: false,\n getDerivedStateFromProps: this._getDerivedStateFromProps,\n hasMounted: false,\n };\n\n this._async = new Async(this);\n this._events = new EventGroup(this);\n this._estimatedPageHeight = 0;\n this._totalEstimates = 0;\n this._requiredWindowsAhead = 0;\n this._requiredWindowsBehind = 0;\n\n // Track the measure version for everything.\n this._measureVersion = 0;\n\n // Ensure that scrolls are lazy updated.\n this._onAsyncScroll = this._async.debounce(this._onAsyncScroll, MIN_SCROLL_UPDATE_DELAY, {\n leading: false,\n maxWait: MAX_SCROLL_UPDATE_DELAY,\n });\n\n this._onAsyncIdle = this._async.debounce(this._onAsyncIdle, IDLE_DEBOUNCE_DELAY, {\n leading: false,\n });\n\n this._onAsyncResize = this._async.debounce(this._onAsyncResize, RESIZE_DELAY, {\n leading: false,\n });\n\n this._onScrollingDone = this._async.debounce(this._onScrollingDone, DONE_SCROLLING_WAIT, {\n leading: false,\n });\n\n this._cachedPageHeights = {};\n this._estimatedPageHeight = 0;\n this._focusedIndex = -1;\n this._pageCache = {};\n }\n\n public get pageRefs(): Readonly<Record<string, unknown>> {\n return this._pageRefs;\n }\n\n /**\n * Scroll to the given index. By default will bring the page the specified item is on into the view. If a callback\n * to measure the height of an individual item is specified, will only scroll to bring the specific item into view.\n *\n * Note: with items of variable height and no passed in `getPageHeight` method, the list might jump after scrolling\n * when windows before/ahead are being rendered, and the estimated height is replaced using actual elements.\n *\n * @param index - Index of item to scroll to\n * @param measureItem - Optional callback to measure the height of an individual item\n * @param scrollToMode - Optional defines where in the window the item should be positioned to when scrolling\n */\n public scrollToIndex(\n index: number,\n measureItem?: (itemIndex: number) => number,\n scrollToMode: ScrollToMode = ScrollToMode.auto,\n ): void {\n const startIndex = this.props.startIndex as number;\n const renderCount = this._getRenderCount();\n const endIndex = startIndex + renderCount;\n\n const allowedRect = this._allowedRect;\n\n let scrollTop = 0;\n\n let itemsPerPage = 1;\n for (let itemIndex = startIndex; itemIndex < endIndex; itemIndex += itemsPerPage) {\n const pageSpecification = this._getPageSpecification(this.props, itemIndex, allowedRect);\n\n const pageHeight = pageSpecification.height;\n itemsPerPage = pageSpecification.itemCount;\n\n const requestedIndexIsInPage = itemIndex <= index && itemIndex + itemsPerPage > index;\n if (requestedIndexIsInPage) {\n // We have found the page. If the user provided a way to measure an individual item, we will try to scroll in\n // just the given item, otherwise we'll only bring the page into view\n if (measureItem && this._scrollElement) {\n const scrollRect = _measureScrollRect(this._scrollElement);\n const scrollPosition = getScrollYPosition(this._scrollElement);\n const scrollWindow = {\n top: scrollPosition,\n bottom: scrollPosition + scrollRect.height,\n };\n\n // Adjust for actual item position within page\n const itemPositionWithinPage = index - itemIndex;\n for (let itemIndexInPage = 0; itemIndexInPage < itemPositionWithinPage; ++itemIndexInPage) {\n scrollTop += measureItem(itemIndex + itemIndexInPage);\n }\n const scrollBottom = scrollTop + measureItem(index);\n\n // If scrollToMode is set to something other than auto, we always want to\n // scroll the item into a specific position on the page.\n switch (scrollToMode) {\n case ScrollToMode.top:\n setScrollYPosition(this._scrollElement, scrollTop);\n return;\n case ScrollToMode.bottom:\n setScrollYPosition(this._scrollElement, scrollBottom - scrollRect.height);\n return;\n case ScrollToMode.center:\n setScrollYPosition(this._scrollElement, (scrollTop + scrollBottom - scrollRect.height) / 2);\n return;\n case ScrollToMode.auto:\n default:\n break;\n }\n\n const itemIsFullyVisible = scrollTop >= scrollWindow.top && scrollBottom <= scrollWindow.bottom;\n if (itemIsFullyVisible) {\n // Item is already visible, do nothing.\n return;\n }\n\n const itemIsPartiallyAbove = scrollTop < scrollWindow.top;\n const itemIsPartiallyBelow = scrollBottom > scrollWindow.bottom;\n\n if (itemIsPartiallyAbove) {\n // We will just scroll to 'scrollTop'\n // .------. - scrollTop\n // |Item |\n // | .----|-. - scrollWindow.top\n // '------' |\n // | |\n // '------'\n } else if (itemIsPartiallyBelow) {\n // Adjust scrollTop position to just bring in the element\n // .------. - scrollTop\n // | |\n // | .------.\n // '-|----' | - scrollWindow.bottom\n // | Item |\n // '------' - scrollBottom\n scrollTop = scrollBottom - scrollRect.height;\n }\n }\n\n if (this._scrollElement) {\n setScrollYPosition(this._scrollElement, scrollTop);\n }\n return;\n }\n\n scrollTop += pageHeight;\n }\n }\n\n public getStartItemIndexInView(measureItem?: (itemIndex: number) => number): number {\n const pages = this.state.pages || [];\n for (const page of pages) {\n const isPageVisible =\n !page.isSpacer && (this._scrollTop || 0) >= page.top && (this._scrollTop || 0) <= page.top + page.height;\n if (isPageVisible) {\n if (!measureItem) {\n const rowHeight = Math.floor(page.height / page.itemCount);\n return page.startIndex + Math.floor((this._scrollTop - page.top) / rowHeight);\n } else {\n let totalRowHeight = 0;\n for (let itemIndex = page.startIndex; itemIndex < page.startIndex + page.itemCount; itemIndex++) {\n const rowHeight = measureItem(itemIndex);\n if (\n page.top + totalRowHeight <= this._scrollTop &&\n this._scrollTop < page.top + totalRowHeight + rowHeight\n ) {\n return itemIndex;\n } else {\n totalRowHeight += rowHeight;\n }\n }\n }\n }\n }\n return 0;\n }\n\n public componentDidMount(): void {\n this.setState({ hasMounted: true });\n this._scrollElement = findScrollableParent(this._root.current) as HTMLElement;\n this._scrollTop = 0;\n\n if (!this.props.getPageHeight) {\n const heightsChanged = this._updatePageMeasurements(this.state.pages!);\n if (heightsChanged) {\n this._materializedRect = null;\n this.setState(this._updatePages(this.props, this.state));\n }\n }\n\n this._measureVersion++;\n\n this._events.on(window, 'resize', this._onAsyncResize);\n if (this._root.current) {\n this._events.on(this._root.current, 'focus', this._onFocus, true);\n }\n if (this._scrollElement) {\n this._events.on(this._scrollElement, 'scroll', this._onScroll);\n this._events.on(this._scrollElement, 'scroll', this._onAsyncScroll);\n }\n }\n\n public componentDidUpdate(previousProps: IListProps, previousState: IListState<T>): void {\n // Multiple updates may have been queued, so the callback will reflect all of them.\n // Re-fetch the current props and states to avoid using a stale props or state captured in the closure.\n const finalProps = this.props;\n const finalState = this.state;\n\n if (this.state.pagesVersion !== previousState.pagesVersion) {\n // If we weren't provided with the page height, measure the pages\n if (!finalProps.getPageHeight) {\n // If measured version is invalid since we've updated the DOM\n const heightsChanged = this._updatePageMeasurements(finalState.pages!);\n\n // On first render, we should re-measure so that we don't get a visual glitch.\n if (heightsChanged) {\n this._materializedRect = null;\n this._onAsyncScroll();\n } else {\n // Enqueue an idle bump.\n this._onAsyncIdle();\n }\n } else {\n // Enqueue an idle bump\n this._onAsyncIdle();\n }\n\n // Notify the caller that rendering the new pages has completed\n if (finalProps.onPagesUpdated) {\n finalProps.onPagesUpdated(finalState.pages as IPage<T>[]);\n }\n }\n }\n\n public componentWillUnmount(): void {\n this._async.dispose();\n this._events.dispose();\n\n delete this._scrollElement;\n }\n\n public shouldComponentUpdate(newProps: IListProps<T>, newState: IListState<T>): boolean {\n const { pages: oldPages } = this.state;\n const { pages: newPages } = newState;\n let shouldComponentUpdate = false;\n\n // Update if the page stops scrolling\n if (!newState.isScrolling && this.state.isScrolling) {\n return true;\n }\n\n if (newProps.version !== this.props.version) {\n return true;\n }\n\n if (newProps.className !== this.props.className) {\n return true;\n }\n\n if (newProps.items === this.props.items && oldPages!.length === newPages!.length) {\n for (let i = 0; i < oldPages!.length; i++) {\n const oldPage = oldPages![i];\n const newPage = newPages![i];\n\n if (oldPage.key !== newPage.key || oldPage.itemCount !== newPage.itemCount) {\n shouldComponentUpdate = true;\n break;\n }\n }\n } else {\n shouldComponentUpdate = true;\n }\n\n return shouldComponentUpdate;\n }\n\n public forceUpdate(): void {\n this._invalidatePageCache();\n // Ensure that when the list is force updated we update the pages first before render.\n this._updateRenderRects(this.props, this.state, true);\n this.setState(this._updatePages(this.props, this.state));\n this._measureVersion++;\n\n super.forceUpdate();\n }\n\n /**\n * Get the current height the list and it's pages.\n */\n public getTotalListHeight(): number {\n return this._surfaceRect!.height;\n }\n\n public render(): JSX.Element | null {\n const { className, role = 'list', onRenderSurface, onRenderRoot } = this.props;\n const { pages = [] } = this.state;\n const pageElements: JSX.Element[] = [];\n const divProps = getNativeProps<React.HTMLAttributes<HTMLDivElement>>(this.props, divProperties);\n\n for (const page of pages) {\n pageElements.push(this._renderPage(page));\n }\n\n const finalOnRenderSurface = onRenderSurface\n ? composeRenderFunction(onRenderSurface, this._onRenderSurface)\n : this._onRenderSurface;\n\n const finalOnRenderRoot = onRenderRoot\n ? composeRenderFunction(onRenderRoot, this._onRenderRoot)\n : this._onRenderRoot;\n\n return finalOnRenderRoot({\n rootRef: this._root,\n pages,\n surfaceElement: finalOnRenderSurface({\n surfaceRef: this._surface,\n pages,\n pageElements,\n divProps: {\n role: 'presentation',\n className: 'ms-List-surface',\n },\n }),\n divProps: {\n ...divProps,\n className: css('ms-List', className),\n role: pageElements.length > 0 ? role : undefined,\n 'aria-label': pageElements.length > 0 ? divProps['aria-label'] : undefined,\n },\n });\n }\n\n private _getDerivedStateFromProps = (nextProps: IListProps<T>, previousState: IListState<T>): IListState<T> => {\n if (\n nextProps.items !== this.props.items ||\n nextProps.renderCount !== this.props.renderCount ||\n nextProps.startIndex !== this.props.startIndex ||\n nextProps.version !== this.props.version ||\n !previousState.hasMounted\n ) {\n if (!canUseDOM()) {\n return previousState;\n }\n // We have received new items so we want to make sure that initially we only render a single window to\n // fill the currently visible rect, and then later render additional windows.\n this._resetRequiredWindows();\n this._requiredRect = null;\n\n this._measureVersion++;\n this._invalidatePageCache();\n\n return this._updatePages(nextProps, previousState);\n }\n\n return previousState;\n };\n\n private _shouldVirtualize(props: IListProps<T> = this.props): boolean {\n const { onShouldVirtualize } = props;\n return !onShouldVirtualize || onShouldVirtualize(props);\n }\n\n /**\n * when props.items change or forceUpdate called, throw away cached pages\n */\n private _invalidatePageCache(): void {\n this._pageCache = {};\n }\n\n private _renderPage(page: IPage<T>): JSX.Element {\n const { usePageCache } = this.props;\n let cachedPage;\n // if usePageCache is set and cached page element can be found, just return cached page\n if (usePageCache) {\n cachedPage = this._pageCache[page.key];\n if (cachedPage && cachedPage.pageElement) {\n return cachedPage.pageElement;\n }\n }\n\n const pageStyle = this._getPageStyle(page);\n\n const { onRenderPage = this._onRenderPage } = this.props;\n\n const pageElement = onRenderPage(\n {\n page: page,\n className: 'ms-List-page',\n key: page.key,\n ref: (newRef: unknown) => {\n this._pageRefs[page.key] = newRef;\n },\n style: pageStyle,\n role: 'presentation',\n },\n this._onRenderPage,\n );\n\n // cache the first page for now since it is re-rendered a lot times unnecessarily.\n // todo: a more aggresive caching mechanism is to cache pages constaining the items not changed.\n // now we re-render pages too frequently, for example, props.items increased from 30 to 60, although the\n // first 30 items did not change, we still re-rendered all of them in this props.items change.\n if (usePageCache && page.startIndex === 0) {\n this._pageCache[page.key] = {\n page: page,\n pageElement: pageElement,\n };\n }\n return pageElement;\n }\n\n private _onRenderRoot = (props: IListOnRenderRootProps<T>): JSX.Element => {\n const { rootRef, surfaceElement, divProps } = props;\n\n return (\n <div ref={rootRef} {...divProps}>\n {surfaceElement}\n </div>\n );\n };\n\n private _onRenderSurface = (props: IListOnRenderSurfaceProps<T>): JSX.Element => {\n const { surfaceRef, pageElements, divProps } = props;\n\n return (\n <div ref={surfaceRef} {...divProps}>\n {pageElements}\n </div>\n );\n };\n\n /** Generate the style object for the page. */\n private _getPageStyle(page: IPage<T>): React.StyleHTMLAttributes<HTMLDivElement> {\n const { getPageStyle } = this.props;\n\n return {\n ...(getPageStyle ? getPageStyle(page) : {}),\n ...(!page.items\n ? {\n height: page.height,\n }\n : {}),\n };\n }\n\n private _onRenderPage = (pageProps: IPageProps<T>, defaultRender?: IRenderFunction<IPageProps<T>>): any => {\n const { onRenderCell, onRenderCellConditional, role } = this.props;\n\n const {\n page: { items = [], startIndex },\n ...divProps\n } = pageProps;\n\n // only assign list item role if no role is assigned\n const cellRole = role === undefined ? 'listitem' : 'presentation';\n const cells: React.ReactNode[] = [];\n\n for (let i = 0; i < items.length; i++) {\n const index = startIndex + i;\n const item = items[i];\n\n let itemKey = this.props.getKey ? this.props.getKey(item, index) : item && (item as any).key;\n\n if (itemKey === null || itemKey === undefined) {\n itemKey = index;\n }\n\n const renderCell = onRenderCellConditional ?? onRenderCell;\n\n const cell =\n renderCell?.(item, index, !this.props.ignoreScrollingState ? this.state.isScrolling : undefined) ?? null;\n\n if (!onRenderCellConditional || cell) {\n cells.push(\n <div\n role={cellRole}\n className={'ms-List-cell'}\n key={itemKey}\n data-list-index={index}\n data-automationid=\"ListCell\"\n >\n {cell}\n </div>,\n );\n }\n }\n\n return <div {...divProps}>{cells}</div>;\n };\n\n /** Track the last item index focused so that we ensure we keep it rendered. */\n private _onFocus(ev: any): void {\n let target = ev.target as HTMLElement;\n\n while (target !== this._surface.current) {\n const indexString = target.getAttribute('data-list-index');\n\n if (indexString) {\n this._focusedIndex = Number(indexString);\n break;\n }\n\n target = getParent(target) as HTMLElement;\n }\n }\n\n /**\n * Called synchronously to reset the required render range to 0 on scrolling. After async scroll has executed,\n * we will call onAsyncIdle which will reset it back to it's correct value.\n */\n private _onScroll(): void {\n if (!this.state.isScrolling && !this.props.ignoreScrollingState) {\n this.setState({ isScrolling: true });\n }\n this._resetRequiredWindows();\n this._onScrollingDone();\n }\n\n private _resetRequiredWindows(): void {\n this._requiredWindowsAhead = 0;\n this._requiredWindowsBehind = 0;\n }\n\n /**\n * Debounced method to asynchronously update the visible region on a scroll event.\n */\n private _onAsyncScroll(): void {\n this._updateRenderRects(this.props, this.state);\n\n // Only update pages when the visible rect falls outside of the materialized rect.\n if (!this._materializedRect || !_isContainedWithin(this._requiredRect as IRectangle, this._materializedRect)) {\n this.setState(this._updatePages(this.props, this.state));\n } else {\n // console.log('requiredRect contained in materialized', this._requiredRect, this._materializedRect);\n }\n }\n\n /**\n * This is an async debounced method that will try and increment the windows we render. If we can increment\n * either, we increase the amount we render and re-evaluate.\n */\n private _onAsyncIdle(): void {\n const { renderedWindowsAhead, renderedWindowsBehind } = this.props;\n const { _requiredWindowsAhead: requiredWindowsAhead, _requiredWindowsBehind: requiredWindowsBehind } = this;\n const windowsAhead = Math.min(renderedWindowsAhead as number, requiredWindowsAhead + 1);\n const windowsBehind = Math.min(renderedWindowsBehind as number, requiredWindowsBehind + 1);\n\n if (windowsAhead !== requiredWindowsAhead || windowsBehind !== requiredWindowsBehind) {\n // console.log('idling', windowsBehind, windowsAhead);\n\n this._requiredWindowsAhead = windowsAhead;\n this._requiredWindowsBehind = windowsBehind;\n this._updateRenderRects(this.props, this.state);\n this.setState(this._updatePages(this.props, this.state));\n }\n\n if (renderedWindowsAhead! > windowsAhead || renderedWindowsBehind! > windowsBehind) {\n // Async increment on next tick.\n this._onAsyncIdle();\n }\n }\n\n /**\n * Function to call when the list is done scrolling.\n * This function is debounced.\n */\n private _onScrollingDone(): void {\n if (!this.props.ignoreScrollingState) {\n this.setState({ isScrolling: false });\n }\n }\n\n private _onAsyncResize(): void {\n this.forceUpdate();\n }\n\n private _updatePages(nextProps: IListProps<T>, previousState: IListState<T>): IListState<T> {\n // console.log('updating pages');\n\n if (!this._requiredRect) {\n this._updateRenderRects(nextProps, previousState);\n }\n\n const newListState = this._buildPages(nextProps, previousState);\n const oldListPages = previousState.pages!;\n\n this._notifyPageChanges(oldListPages, newListState.pages!, this.props);\n\n return {\n ...previousState,\n ...newListState,\n pagesVersion: {},\n };\n }\n\n /**\n * Notify consumers that the rendered pages have changed\n * @param oldPages - The old pages\n * @param newPages - The new pages\n * @param props - The props to use\n */\n private _notifyPageChanges(oldPages: IPage<T>[], newPages: IPage<T>[], props: IListProps<T>): void {\n const { onPageAdded, onPageRemoved } = props;\n\n if (onPageAdded || onPageRemoved) {\n const renderedIndexes: {\n [index: number]: IPage<T>;\n } = {};\n\n for (const page of oldPages) {\n if (page.items) {\n renderedIndexes[page.startIndex] = page;\n }\n }\n\n for (const page of newPages) {\n if (page.items) {\n if (!renderedIndexes[page.startIndex]) {\n this._onPageAdded(page);\n } else {\n delete renderedIndexes[page.startIndex];\n }\n }\n }\n\n for (const index in renderedIndexes) {\n if (renderedIndexes.hasOwnProperty(index)) {\n this._onPageRemoved(renderedIndexes[index]);\n }\n }\n }\n }\n\n private _updatePageMeasurements(pages: IPage<T>[]): boolean {\n let heightChanged = false;\n\n // when not in virtualize mode, we render all the items without page measurement\n if (!this._shouldVirtualize()) {\n return heightChanged;\n }\n\n for (let i = 0; i < pages.length; i++) {\n const page = pages[i];\n\n if (page.items) {\n heightChanged = this._measurePage(page) || heightChanged;\n }\n }\n\n return heightChanged;\n }\n\n /**\n * Given a page, measure its dimensions, update cache.\n * @returns True if the height has changed.\n */\n private _measurePage(page: IPage<T>): boolean {\n let hasChangedHeight = false;\n const pageElement = this._pageRefs[page.key] as HTMLElement;\n const cachedHeight = this._cachedPageHeights[page.startIndex];\n\n // console.log(' * measure attempt', page.startIndex, cachedHeight);\n\n if (\n pageElement &&\n this._shouldVirtualize() &&\n (!cachedHeight || cachedHeight.measureVersion !== this._measureVersion)\n ) {\n const newClientRect = {\n width: pageElement.clientWidth,\n height: pageElement.clientHeight,\n };\n\n if (newClientRect.height || newClientRect.width) {\n hasChangedHeight = page.height !== newClientRect.height;\n\n // console.warn(' *** expensive page measure', page.startIndex, page.height, newClientRect.height);\n\n page.height = newClientRect.height;\n\n this._cachedPageHeights[page.startIndex] = {\n height: newClientRect.height,\n measureVersion: this._measureVersion,\n };\n\n this._estimatedPageHeight = Math.round(\n (this._estimatedPageHeight * this._totalEstimates + newClientRect.height) / (this._totalEstimates + 1),\n );\n\n this._totalEstimates++;\n }\n }\n\n return hasChangedHeight;\n }\n\n /** Called when a page has been added to the DOM. */\n private _onPageAdded(page: IPage<T>): void {\n const { onPageAdded } = this.props;\n\n // console.log('page added', page.startIndex, this.state.pages.map(page => page.key).join(', '));\n\n if (onPageAdded) {\n onPageAdded(page);\n }\n }\n\n /** Called when a page has been removed from the DOM. */\n private _onPageRemoved(page: IPage<T>): void {\n const { onPageRemoved } = this.props;\n\n // console.log(' --- page removed', page.startIndex, this.state.pages.map(page => page.key).join(', '));\n\n if (onPageRemoved) {\n onPageRemoved(page);\n }\n }\n\n /** Build up the pages that should be rendered. */\n private _buildPages(props: IListProps<T>, state: IListState<T>): IListState<T> {\n let { renderCount } = props;\n const { items, startIndex, getPageHeight } = props;\n\n renderCount = this._getRenderCount(props);\n\n const materializedRect = { ...EMPTY_RECT };\n const pages: IPage<T>[] = [];\n\n let itemsPerPage = 1;\n let pageTop = 0;\n let currentSpacer = null;\n const focusedIndex = this._focusedIndex;\n const endIndex = startIndex! + renderCount;\n const shouldVirtualize = this._shouldVirtualize(props);\n\n // First render is very important to track; when we render cells, we have no idea of estimated page height.\n // So we should default to rendering only the first page so that we can get information.\n // However if the user provides a measure function, let's just assume they know the right heights.\n const isFirstRender = this._estimatedPageHeight === 0 && !getPageHeight;\n\n const allowedRect = this._allowedRect;\n\n for (let itemIndex = startIndex!; itemIndex < endIndex; itemIndex += itemsPerPage) {\n const pageSpecification = this._getPageSpecification(props, itemIndex, allowedRect);\n const pageHeight = pageSpecification.height;\n const pageData = pageSpecification.data;\n const key = pageSpecification.key;\n\n itemsPerPage = pageSpecification.itemCount;\n\n const pageBottom = pageTop + pageHeight - 1;\n\n const isPageRendered =\n findIndex(state.pages as IPage<T>[], (page: IPage<T>) => !!page.items && page.startIndex === itemIndex) > -1;\n const isPageInAllowedRange = !allowedRect || (pageBottom >= allowedRect.top && pageTop <= allowedRect.bottom!);\n const isPageInRequiredRange =\n !this._requiredRect || (pageBottom >= this._requiredRect.top && pageTop <= this._requiredRect.bottom!);\n const isPageVisible =\n (!isFirstRender && (isPageInRequiredRange || (isPageInAllowedRange && isPageRendered))) || !shouldVirtualize;\n const isPageFocused = focusedIndex >= itemIndex && focusedIndex < itemIndex + itemsPerPage;\n const isFirstPage = itemIndex === startIndex;\n\n // console.log('building page', itemIndex, 'pageTop: ' + pageTop, 'inAllowed: ' +\n // isPageInAllowedRange, 'inRequired: ' + isPageInRequiredRange);\n\n // Only render whats visible, focused, or first page,\n // or when running in fast rendering mode (not in virtualized mode), we render all current items in pages\n if (isPageVisible || isPageFocused || isFirstPage) {\n if (currentSpacer) {\n pages.push(currentSpacer);\n currentSpacer = null;\n }\n\n const itemsInPage = Math.min(itemsPerPage, endIndex - itemIndex);\n const newPage = this._createPage(\n key,\n items!.slice(itemIndex, itemIndex + itemsInPage),\n itemIndex,\n undefined,\n undefined,\n pageData,\n );\n\n newPage.top = pageTop;\n newPage.height = pageHeight;\n if (this._visibleRect && this._visibleRect.bottom) {\n newPage.isVisible = pageBottom >= this._visibleRect.top && pageTop <= this._visibleRect.bottom;\n }\n\n pages.push(newPage);\n\n if (isPageInRequiredRange && this._allowedRect) {\n _mergeRect(materializedRect, {\n top: pageTop,\n bottom: pageBottom,\n height: pageHeight,\n left: allowedRect.left,\n right: allowedRect.right,\n width: allowedRect.width,\n });\n }\n } else {\n if (!currentSpacer) {\n currentSpacer = this._createPage(\n SPACER_KEY_PREFIX + itemIndex,\n undefined,\n itemIndex,\n 0,\n undefined,\n pageData,\n true /*isSpacer*/,\n );\n }\n currentSpacer.height = (currentSpacer.height || 0) + (pageBottom - pageTop) + 1;\n currentSpacer.itemCount += itemsPerPage;\n }\n pageTop += pageBottom - pageTop + 1;\n\n // in virtualized mode, we render need to render first page then break and measure,\n // otherwise, we render all items without measurement to make rendering fast\n if (isFirstRender && shouldVirtualize) {\n break;\n }\n }\n\n if (currentSpacer) {\n currentSpacer.key = SPACER_KEY_PREFIX + 'end';\n pages.push(currentSpacer);\n }\n\n this._materializedRect = materializedRect;\n\n // console.log('materialized: ', materializedRect);\n return {\n ...state,\n pages: pages,\n measureVersion: this._measureVersion,\n };\n }\n\n private _getPageSpecification(\n props: IListProps,\n itemIndex: number,\n visibleRect: IRectangle,\n ): {\n // These return values are now no longer optional.\n itemCount: number;\n height: number;\n data?: any;\n key?: string;\n } {\n const { getPageSpecification } = props;\n\n if (getPageSpecification) {\n const pageData = getPageSpecification(itemIndex, visibleRect);\n\n const { itemCount = this._getItemCountForPage(itemIndex, visibleRect) } = pageData;\n\n const { height = this._getPageHeight(itemIndex, visibleRect, itemCount) } = pageData;\n\n return {\n itemCount: itemCount,\n height: height,\n data: pageData.data,\n key: pageData.key,\n };\n } else {\n const itemCount = this._getItemCountForPage(itemIndex, visibleRect);\n\n return {\n itemCount: itemCount,\n height: this._getPageHeight(itemIndex, visibleRect, itemCount),\n };\n }\n }\n\n /**\n * Get the pixel height of a give page. Will use the props getPageHeight first, and if not provided, fallback to\n * cached height, or estimated page height, or default page height.\n */\n private _getPageHeight(itemIndex: number, visibleRect: IRectangle, itemsPerPage: number): number {\n if (this.props.getPageHeight) {\n return this.props.getPageHeight(itemIndex, visibleRect, itemsPerPage);\n } else {\n const cachedHeight = this._cachedPageHeights[itemIndex];\n\n return cachedHeight ? cachedHeight.height : this._estimatedPageHeight || DEFAULT_PAGE_HEIGHT;\n }\n }\n\n private _getItemCountForPage(itemIndex: number, visibileRect: IRectangle): number {\n const itemsPerPage = this.props.getItemCountForPage\n ? this.props.getItemCountForPage(itemIndex, visibileRect)\n : DEFAULT_ITEMS_PER_PAGE;\n\n return itemsPerPage ? itemsPerPage : DEFAULT_ITEMS_PER_PAGE;\n }\n\n private _createPage(\n pageKey: string | undefined,\n items: any[] | undefined,\n startIndex: number = -1,\n count: number = items ? items.length : 0,\n style: React.CSSProperties = {},\n data?: any,\n isSpacer?: boolean,\n ): IPage<T> {\n pageKey = pageKey || PAGE_KEY_PREFIX + startIndex;\n const cachedPage = this._pageCache[pageKey];\n if (cachedPage && cachedPage.page) {\n return cachedPage.page;\n }\n\n return {\n key: pageKey,\n startIndex: startIndex,\n itemCount: count,\n items: items,\n style: style,\n top: 0,\n height: 0,\n data: data,\n isSpacer: isSpacer || false,\n };\n }\n\n private _getRenderCount(props?: IListProps<T>): number {\n const { items, startIndex, renderCount } = props || this.props;\n\n return renderCount === undefined ? (items ? items.length - startIndex! : 0) : renderCount;\n }\n\n /** Calculate the visible rect within the list where top: 0 and left: 0 is the top/left of the list. */\n private _updateRenderRects(props: IListProps<T>, state: IListState<T>, forceUpdate?: boolean): void {\n const { renderedWindowsAhead, renderedWindowsBehind } = props;\n const { pages } = state;\n // when not in virtualize mode, we render all items without measurement to optimize page rendering perf\n if (!this._shouldVirtualize(props)) {\n return;\n }\n\n let surfaceRect = this._surfaceRect || { ...EMPTY_RECT };\n const scrollHeight = getScrollHeight(this._scrollElement);\n const scrollTop = getScrollYPosition(this._scrollElement);\n\n // WARNING: EXPENSIVE CALL! We need to know the surface top relative to the window.\n // This needs to be called to recalculate when new pages should be loaded.\n // We check to see how far we've scrolled and if it's further than a third of a page we run it again.\n if (\n this._surface.current &&\n (forceUpdate ||\n !pages ||\n !this._surfaceRect ||\n !scrollHeight ||\n scrollHeight !== this._scrollHeight ||\n Math.abs(this._scrollTop - scrollTop) > this._estimatedPageHeight / 3)\n ) {\n surfaceRect = this._surfaceRect = _measureSurfaceRect(this._surface.current);\n this._scrollTop = scrollTop;\n }\n\n // If the scroll height has changed, something in the container likely resized and\n // we should redo the page heights incase their content resized.\n if (forceUpdate || !scrollHeight || scrollHeight !== this._scrollHeight) {\n this._measureVersion++;\n }\n\n this._scrollHeight = scrollHeight || 0;\n\n // If the surface is above the container top or below the container bottom, or if this is not the first\n // render return empty rect.\n // The first time the list gets rendered we need to calculate the rectangle. The width of the list is\n // used to calculate the width of the list items.\n const visibleTop = Math.max(0, -surfaceRect.top);\n const win = getWindow(this._root.current);\n const visibleRect = {\n top: visibleTop,\n left: surfaceRect.left,\n bottom: visibleTop + win!.innerHeight,\n right: surfaceRect.right,\n width: surfaceRect.width,\n height: win!.innerHeight,\n };\n\n // The required/allowed rects are adjusted versions of the visible rect.\n this._requiredRect = _expandRect(visibleRect, this._requiredWindowsBehind, this._requiredWindowsAhead);\n this._allowedRect = _expandRect(visibleRect, renderedWindowsBehind!, renderedWindowsAhead!);\n\n // store the visible rect for later use.\n this._visibleRect = visibleRect;\n }\n}\n\nfunction _expandRect(rect: IRectangle, pagesBefore: number, pagesAfter: number): IRectangle {\n const top = rect.top - pagesBefore * rect.height;\n const height = rect.height + (pagesBefore + pagesAfter) * rect.height;\n\n return {\n top: top,\n bottom: top + height,\n height: height,\n left: rect.left,\n right: rect.right,\n width: rect.width,\n };\n}\n\nfunction _isContainedWithin(innerRect: IRectangle, outerRect: IRectangle): boolean {\n return (\n innerRect.top >= outerRect.top &&\n innerRect.left >= outerRect.left &&\n innerRect.bottom! <= outerRect.bottom! &&\n innerRect.right! <= outerRect.right!\n );\n}\n\nfunction _mergeRect(targetRect: IRectangle, newRect: IRectangle): IRectangle {\n targetRect.top = newRect.top < targetRect.top || targetRect.top === -1 ? newRect.top : targetRect.top;\n targetRect.left = newRect.left < targetRect.left || targetRect.left === -1 ? newRect.left : targetRect.left;\n targetRect.bottom =\n newRect.bottom! > targetRect.bottom! || targetRect.bottom === -1 ? newRect.bottom : targetRect.bottom;\n targetRect.right = newRect.right! > targetRect.right! || targetRect.right === -1 ? newRect.right : targetRect.right;\n targetRect.width = targetRect.right! - targetRect.left + 1;\n targetRect.height = targetRect.bottom! - targetRect.top + 1;\n\n return targetRect;\n}\n","/**\n * Verifies if an application can use DOM.\n */\nexport function canUseDOM(): boolean {\n return (\n typeof window !== 'undefined' &&\n !!(\n window.document &&\n // eslint-disable-next-line deprecation/deprecation\n window.document.createElement\n )\n );\n}\n","import * as React from 'react';\nimport { PivotBase } from './Pivot.base';\nimport { IStyle, ITheme } from '../../Styling';\nimport { IRefObject, IStyleFunctionOrObject } from '../../Utilities';\nimport { PivotItem } from './PivotItem';\nimport { IFocusZoneProps } from '../../FocusZone';\n\n/**\n * {@docCategory Pivot}\n */\nexport interface IPivot {\n /**\n * Sets focus to the first pivot tab.\n */\n focus(): void;\n}\n\n/**\n * {@docCategory Pivot}\n */\nexport interface IPivotProps extends React.ClassAttributes<PivotBase>, React.HTMLAttributes<HTMLDivElement> {\n /**\n * Optional callback to access the IPivot interface. Use this instead of ref for accessing\n * the public methods and properties of the component.\n */\n componentRef?: IRefObject<IPivot>;\n\n /**\n * Call to provide customized styling that will layer on top of the variant rules.\n */\n styles?: IStyleFunctionOrObject<IPivotStyleProps, IPivotStyles>;\n\n /**\n * Theme provided by High-Order Component.\n */\n theme?: ITheme;\n\n /**\n * Additional css class to apply to the Pivot\n * @defaultvalue undefined\n */\n className?: string;\n\n /**\n * Default selected key for the pivot. Only provide this if the pivot is an uncontrolled component;\n * otherwise, use the `selectedKey` property.\n *\n * This property is also mutually exclusive with `defaultSelectedIndex`.\n */\n defaultSelectedKey?: string;\n\n /**\n * Default selected index for the pivot. Only provide this if the pivot is an uncontrolled component;\n * otherwise, use the `selectedKey` property.\n *\n * This property is also mutually exclusive with `defaultSelectedKey`.\n *\n * @deprecated Use `defaultSelectedKey`\n */\n defaultSelectedIndex?: number;\n\n /**\n * Index of the pivot item initially selected. Mutually exclusive with `initialSelectedKey`.\n * Only provide this if the pivot is an uncontrolled component; otherwise, use `selectedKey`.\n *\n * @deprecated Use `defaultSelectedKey`\n */\n initialSelectedIndex?: number;\n\n /**\n * Key of the pivot item initially selected. Mutually exclusive with `initialSelectedIndex`.\n * Only provide this if the pivot is an uncontrolled component; otherwise, use `selectedKey`.\n *\n * @deprecated Use `defaultSelectedKey`\n */\n initialSelectedKey?: string;\n\n /**\n * Key of the selected pivot item. Updating this will override the Pivot's selected item state.\n * Only provide this if the pivot is a controlled component where you are maintaining the\n * current state; otherwise, use `defaultSelectedKey`.\n */\n selectedKey?: string | null;\n\n /**\n * Callback for when the selected pivot item is changed.\n */\n onLinkClick?: (item?: PivotItem, ev?: React.MouseEvent<HTMLElement>) => void;\n\n /**\n * PivotLinkSize to use (normal, large)\n */\n linkSize?: PivotLinkSize;\n\n /**\n * PivotLinkFormat to use (links, tabs)\n */\n linkFormat?: PivotLinkFormat;\n\n /**\n * Whether to skip rendering the tabpanel with the content of the selected tab.\n * Use this prop if you plan to separately render the tab content\n * and don't want to leave an empty tabpanel in the page that may confuse Screen Readers.\n */\n headersOnly?: boolean;\n\n /**\n * Callback to customize how IDs are generated for each tab header.\n * Useful if you're rendering content outside and need to connect aria-labelledby.\n */\n getTabId?: (itemKey: string, index: number) => string;\n\n /**\n * Props passed to the `FocusZone` component used as the root of `Pivot`.\n */\n focusZoneProps?: IFocusZoneProps;\n}\n\n/**\n * {@docCategory Pivot}\n */\nexport type IPivotStyleProps = Required<Pick<IPivotProps, 'theme'>> &\n Pick<IPivotProps, 'className'> & {\n /** Indicates whether Pivot has large format. */\n rootIsLarge?: boolean;\n /** Indicates whether Pivot has tabbed format. */\n rootIsTabs?: boolean;\n /**\n * Indicates whether Pivot link is selected.\n * @deprecated Is not populated with valid value. Specify `linkIsSelected` styling instead.\n */\n linkIsSelected?: boolean;\n };\n\n/**\n * {@docCategory Pivot}\n */\nexport interface IPivotStyles {\n /**\n * Style for the root element.\n */\n root: IStyle;\n link: IStyle;\n linkContent: IStyle;\n linkIsSelected: IStyle;\n text: IStyle;\n count: IStyle;\n icon: IStyle;\n itemContainer?: IStyle;\n}\n\n/**\n * {@docCategory Pivot}\n * Display mode for the pivot links/tabs\n */\nexport type PivotLinkFormatType = 'links' | 'tabs';\n\n/**\n * {@docCategory Pivot}\n * Size of the pivot links/tabs\n */\nexport type PivotLinkSizeType = 'normal' | 'large';\n\n/**\n * {@docCategory Pivot}\n */\nexport enum PivotLinkFormat {\n /**\n * Display Pivot Links as links\n */\n links = 0,\n\n /**\n * Display Pivot Links as Tabs\n */\n tabs = 1,\n}\n\n/**\n * {@docCategory Pivot}\n */\nexport enum PivotLinkSize {\n /**\n * Display Link using normal font size\n */\n normal = 0,\n\n /**\n * Display links using large font size\n */\n large = 1,\n}\n","import * as React from 'react';\nimport {\n warnDeprecations,\n KeyCodes,\n getId,\n getNativeProps,\n divProperties,\n classNamesFunction,\n warn,\n initializeComponentRef,\n css,\n} from '../../Utilities';\nimport { CommandButton } from '../../Button';\nimport { IPivotProps, IPivotStyleProps, IPivotStyles } from './Pivot.types';\nimport { IPivotItemProps } from './PivotItem.types';\nimport { FocusZone, FocusZoneDirection, IFocusZoneProps } from '../../FocusZone';\nimport { PivotItem } from './PivotItem';\nimport { PivotLinkFormat } from './Pivot.types';\nimport { PivotLinkSize } from './Pivot.types';\nimport { Icon } from '../../Icon';\n\nconst getClassNames = classNamesFunction<IPivotStyleProps, IPivotStyles>();\nconst PivotName = 'Pivot';\n\nexport interface IPivotState {\n selectedKey: string | undefined;\n}\n\ntype PivotLinkCollection = {\n links: IPivotItemProps[];\n keyToIndexMapping: { [key: string]: number };\n keyToTabIdMapping: { [key: string]: string };\n};\n\n/**\n * Usage:\n *\n * <Pivot>\n * <PivotItem headerText=\"Foo\">\n * <Label>Pivot #1</Label>\n * </PivotItem>\n * <PivotItem headerText=\"Bar\">\n * <Label>Pivot #2</Label>\n * </PivotItem>\n * <PivotItem headerText=\"Bas\">\n * <Label>Pivot #3</Label>\n * </PivotItem>\n * </Pivot>\n */\nexport class PivotBase extends React.Component<IPivotProps, IPivotState> {\n private _pivotId: string;\n private _focusZone = React.createRef<FocusZone>();\n private _classNames: { [key in keyof IPivotStyles]: string };\n\n constructor(props: IPivotProps) {\n super(props);\n\n initializeComponentRef(this);\n\n if (process.env.NODE_ENV !== 'production') {\n warnDeprecations(PivotName, props, {\n initialSelectedKey: 'defaultSelectedKey',\n initialSelectedIndex: 'defaultSelectedIndex',\n });\n }\n\n this._pivotId = getId(PivotName);\n const links: IPivotItemProps[] = this._getPivotLinks(props).links;\n\n // eslint-disable-next-line deprecation/deprecation\n const { defaultSelectedKey = props.initialSelectedKey, defaultSelectedIndex = props.initialSelectedIndex } = props;\n\n let selectedKey: string | undefined;\n\n if (defaultSelectedKey) {\n selectedKey = defaultSelectedKey;\n } else if (typeof defaultSelectedIndex === 'number') {\n selectedKey = links[defaultSelectedIndex].itemKey!;\n } else if (links.length) {\n selectedKey = links[0].itemKey!;\n }\n\n this.state = {\n selectedKey,\n };\n }\n\n /**\n * Sets focus to the first pivot tab.\n */\n public focus(): void {\n if (this._focusZone.current) {\n this._focusZone.current.focus();\n }\n }\n\n public render(): JSX.Element {\n const { focusZoneProps } = this.props;\n const linkCollection = this._getPivotLinks(this.props);\n const selectedKey = this._getSelectedKey(linkCollection);\n\n const divProps = getNativeProps<React.HTMLAttributes<HTMLDivElement>>(this.props, divProperties);\n\n this._classNames = this._getClassNames(this.props);\n\n return (\n <div role=\"toolbar\" {...divProps}>\n {this._renderPivotLinks(linkCollection, selectedKey, focusZoneProps)}\n {selectedKey &&\n linkCollection.links.map(\n (link) =>\n (link.alwaysRender === true || selectedKey === link.itemKey) &&\n this._renderPivotItem(linkCollection, link.itemKey, selectedKey === link.itemKey),\n )}\n </div>\n );\n }\n\n private _getSelectedKey(linkCollection: PivotLinkCollection) {\n const { selectedKey: propsSelectedKey } = this.props;\n\n if (this._isKeyValid(linkCollection, propsSelectedKey) || propsSelectedKey === null) {\n return propsSelectedKey;\n }\n\n const { selectedKey: stateSelectedKey } = this.state;\n if (this._isKeyValid(linkCollection, stateSelectedKey)) {\n return stateSelectedKey;\n }\n\n if (linkCollection.links.length) {\n return linkCollection.links[0].itemKey;\n }\n\n return undefined;\n }\n\n /**\n * Renders the set of links to route between pivots\n */\n private _renderPivotLinks(\n linkCollection: PivotLinkCollection,\n selectedKey: string | null | undefined,\n focusZoneProps: IFocusZoneProps | undefined,\n ): JSX.Element {\n const items = linkCollection.links.map((l) => this._renderPivotLink(linkCollection, l, selectedKey));\n\n return (\n <FocusZone\n role=\"tablist\"\n componentRef={this._focusZone}\n direction={FocusZoneDirection.horizontal}\n {...focusZoneProps}\n className={css(this._classNames.root, focusZoneProps?.className)}\n >\n {items}\n </FocusZone>\n );\n }\n\n private _renderPivotLink = (\n linkCollection: PivotLinkCollection,\n link: IPivotItemProps,\n selectedKey: string | null | undefined,\n ): JSX.Element => {\n const { itemKey, headerButtonProps } = link;\n const tabId = linkCollection.keyToTabIdMapping[itemKey!];\n const { onRenderItemLink } = link;\n let linkContent: JSX.Element | null;\n const isSelected: boolean = selectedKey === itemKey;\n\n if (onRenderItemLink) {\n linkContent = onRenderItemLink(link, this._renderLinkContent);\n } else {\n linkContent = this._renderLinkContent(link);\n }\n\n let contentString = link.headerText || '';\n contentString += link.itemCount ? ' (' + link.itemCount + ')' : '';\n // Adding space supplementary for icon\n contentString += link.itemIcon ? ' xx' : '';\n\n return (\n <CommandButton\n {...headerButtonProps}\n id={tabId}\n key={itemKey}\n className={isSelected ? this._classNames.linkIsSelected : this._classNames.link}\n // eslint-disable-next-line react/jsx-no-bind\n onClick={this._onLinkClick.bind(this, itemKey)}\n // eslint-disable-next-line react/jsx-no-bind\n onKeyDown={this._onKeyDown.bind(this, itemKey)}\n aria-label={link.ariaLabel}\n role=\"tab\"\n aria-selected={isSelected}\n name={link.headerText}\n keytipProps={link.keytipProps}\n data-content={contentString}\n >\n {linkContent}\n </CommandButton>\n );\n };\n\n private _renderLinkContent = (link: IPivotItemProps): JSX.Element => {\n const { itemCount, itemIcon, headerText } = link;\n const classNames = this._classNames;\n\n return (\n <span className={classNames.linkContent}>\n {itemIcon !== undefined && (\n <span className={classNames.icon}>\n <Icon iconName={itemIcon} />\n </span>\n )}\n {headerText !== undefined && <span className={classNames.text}> {link.headerText}</span>}\n {itemCount !== undefined && <span className={classNames.count}> ({itemCount})</span>}\n </span>\n );\n };\n\n /**\n * Renders a Pivot Item\n */\n private _renderPivotItem(\n linkCollection: PivotLinkCollection,\n itemKey: string | undefined,\n isActive: boolean,\n ): JSX.Element | null {\n if (this.props.headersOnly || !itemKey) {\n return null;\n }\n\n const index = linkCollection.keyToIndexMapping[itemKey];\n const selectedTabId = linkCollection.keyToTabIdMapping[itemKey];\n\n return (\n <div\n role=\"tabpanel\"\n hidden={!isActive}\n key={itemKey}\n aria-hidden={!isActive}\n aria-labelledby={selectedTabId}\n className={this._classNames.itemContainer}\n >\n {React.Children.toArray(this.props.children)[index]}\n </div>\n );\n }\n\n /**\n * Gets the set of PivotLinks as array of IPivotItemProps\n * The set of Links is determined by child components of type PivotItem\n */\n private _getPivotLinks(props: IPivotProps): PivotLinkCollection {\n const result: PivotLinkCollection = {\n links: [],\n keyToIndexMapping: {},\n keyToTabIdMapping: {},\n };\n\n React.Children.map(React.Children.toArray(props.children), (child: React.ReactChild, index: number) => {\n if (_isPivotItem(child)) {\n const pivotItem = child;\n const { linkText, ...pivotItemProps } = pivotItem.props;\n const itemKey = pivotItem.props.itemKey || index.toString();\n\n result.links.push({\n // Use linkText (deprecated) if headerText is not provided\n headerText: linkText,\n ...pivotItemProps,\n itemKey: itemKey,\n });\n result.keyToIndexMapping[itemKey] = index;\n result.keyToTabIdMapping[itemKey] = this._getTabId(itemKey, index);\n } else {\n warn('The children of a Pivot component must be of type PivotItem to be rendered.');\n }\n });\n\n return result;\n }\n\n /**\n * Generates the Id for the tab button.\n */\n private _getTabId(itemKey: string, index: number): string {\n if (this.props.getTabId) {\n return this.props.getTabId(itemKey, index);\n }\n\n return this._pivotId + `-Tab${index}`;\n }\n\n /**\n * whether the key exists in the pivot items.\n */\n private _isKeyValid(linkCollection: PivotLinkCollection, itemKey: string | null | undefined): boolean {\n return itemKey !== undefined && itemKey !== null && linkCollection.keyToIndexMapping[itemKey] !== undefined;\n }\n\n /**\n * Handles the onClick event on PivotLinks\n */\n private _onLinkClick(itemKey: string, ev: React.MouseEvent<HTMLElement>): void {\n ev.preventDefault();\n this._updateSelectedItem(itemKey, ev);\n }\n\n /**\n * Handle the onKeyDown event on the PivotLinks\n */\n private _onKeyDown(itemKey: string, ev: React.KeyboardEvent<HTMLElement>): void {\n if (ev.which === KeyCodes.enter) {\n ev.preventDefault();\n this._updateSelectedItem(itemKey);\n }\n }\n\n /**\n * Updates the state with the new selected index\n */\n private _updateSelectedItem(itemKey: string, ev?: React.MouseEvent<HTMLElement>): void {\n this.setState({\n selectedKey: itemKey,\n });\n\n const linkCollection = this._getPivotLinks(this.props);\n\n if (this.props.onLinkClick && linkCollection.keyToIndexMapping[itemKey] >= 0) {\n const index = linkCollection.keyToIndexMapping[itemKey];\n\n // React.Element<any> cannot directly convert to PivotItem.\n const item = React.Children.toArray(this.props.children)[index];\n\n if (_isPivotItem(item)) {\n this.props.onLinkClick(item, ev);\n }\n }\n }\n\n private _getClassNames(props: IPivotProps): { [key in keyof IPivotStyles]: string } {\n const { theme } = props;\n const rootIsLarge: boolean = props.linkSize === PivotLinkSize.large;\n const rootIsTabs: boolean = props.linkFormat === PivotLinkFormat.tabs;\n\n return getClassNames(props.styles!, {\n theme: theme!,\n rootIsLarge,\n rootIsTabs,\n });\n }\n}\n\nfunction _isPivotItem(item: React.ReactNode): item is PivotItem {\n // In theory, we should be able to just check item.type === PivotItem.\n // However, under certain unclear circumstances (see https://github.com/microsoft/fluentui/issues/10785),\n // the object identity is different despite the function implementation being the same.\n return (\n !!item &&\n typeof item === 'object' &&\n !!(item as React.ReactElement).type &&\n // Casting as an any to avoid [ object Object ] errors.\n ((item as React.ReactElement).type as any).name === (PivotItem as any).name\n );\n}\n","import { IPivotStyleProps, IPivotStyles } from './Pivot.types';\nimport {\n AnimationVariables,\n getGlobalClassNames,\n HighContrastSelector,\n IStyle,\n normalize,\n FontWeights,\n getHighContrastNoAdjustStyle,\n} from '../../Styling';\nimport { IsFocusVisibleClassName } from '../../Utilities';\n\nconst globalClassNames = {\n count: 'ms-Pivot-count',\n icon: 'ms-Pivot-icon',\n linkIsSelected: 'is-selected',\n link: 'ms-Pivot-link',\n linkContent: 'ms-Pivot-linkContent',\n root: 'ms-Pivot',\n rootIsLarge: 'ms-Pivot--large',\n rootIsTabs: 'ms-Pivot--tabs',\n text: 'ms-Pivot-text',\n};\n\nconst linkStyles = (props: IPivotStyleProps): IStyle[] => {\n const { rootIsLarge, rootIsTabs } = props;\n const { semanticColors, fonts } = props.theme;\n return [\n fonts.medium,\n {\n color: semanticColors.actionLink,\n display: 'inline-block',\n lineHeight: 44,\n height: 44,\n marginRight: 8,\n padding: '0 8px',\n textAlign: 'center',\n position: 'relative',\n backgroundColor: 'transparent',\n border: 0,\n borderRadius: 0,\n selectors: {\n ':before': {\n backgroundColor: 'transparent',\n bottom: 0,\n content: '\"\"',\n height: 2,\n left: 8,\n position: 'absolute',\n right: 8,\n transition: `left ${AnimationVariables.durationValue2} ${AnimationVariables.easeFunction2},\n right ${AnimationVariables.durationValue2} ${AnimationVariables.easeFunction2}`,\n },\n ':after': {\n color: 'transparent',\n content: 'attr(data-content)',\n display: 'block',\n fontWeight: FontWeights.bold,\n height: 1,\n overflow: 'hidden',\n visibility: 'hidden',\n },\n ':hover': {\n backgroundColor: semanticColors.buttonBackgroundHovered,\n color: semanticColors.buttonTextHovered,\n cursor: 'pointer',\n },\n ':active': {\n backgroundColor: semanticColors.buttonBackgroundPressed,\n color: semanticColors.buttonTextHovered,\n },\n ':focus': {\n outline: 'none',\n },\n [`.${IsFocusVisibleClassName} &:focus`]: {\n outline: `1px solid ${semanticColors.focusBorder}`,\n },\n [`.${IsFocusVisibleClassName} &:focus:after`]: {\n content: 'attr(data-content)',\n position: 'relative',\n border: 0,\n },\n },\n },\n rootIsLarge && {\n fontSize: fonts.large.fontSize,\n },\n rootIsTabs && [\n {\n marginRight: 0,\n height: 44,\n lineHeight: 44,\n backgroundColor: semanticColors.buttonBackground,\n padding: '0 10px',\n verticalAlign: 'top',\n selectors: {\n ':focus': {\n outlineOffset: '-1px',\n },\n [`.${IsFocusVisibleClassName} &:focus::before`]: {\n height: 'auto',\n background: 'transparent',\n transition: 'none',\n },\n },\n },\n ],\n ];\n};\n\nexport const getStyles = (props: IPivotStyleProps): IPivotStyles => {\n const { className, rootIsLarge, rootIsTabs, theme } = props;\n const { semanticColors, fonts } = theme;\n\n const classNames = getGlobalClassNames(globalClassNames, theme);\n\n return {\n root: [\n classNames.root,\n fonts.medium,\n normalize,\n {\n position: 'relative',\n color: semanticColors.link,\n whiteSpace: 'nowrap',\n },\n rootIsLarge && classNames.rootIsLarge,\n rootIsTabs && classNames.rootIsTabs,\n className,\n ],\n itemContainer: {\n selectors: {\n '&[hidden]': {\n display: 'none',\n },\n },\n },\n link: [\n classNames.link,\n ...linkStyles(props),\n rootIsTabs && {\n selectors: {\n '&:hover, &:focus': {\n color: semanticColors.buttonTextCheckedHovered,\n },\n '&:active, &:hover': {\n color: semanticColors.primaryButtonText,\n backgroundColor: semanticColors.primaryButtonBackground,\n },\n },\n },\n ],\n linkIsSelected: [\n classNames.link,\n classNames.linkIsSelected,\n ...linkStyles(props),\n {\n fontWeight: FontWeights.semibold,\n selectors: {\n ':before': {\n backgroundColor: semanticColors.inputBackgroundChecked,\n selectors: {\n [HighContrastSelector]: {\n backgroundColor: 'Highlight',\n },\n },\n },\n ':hover::before': {\n left: 0,\n right: 0,\n },\n [HighContrastSelector]: {\n color: 'Highlight',\n },\n },\n },\n rootIsTabs && {\n backgroundColor: semanticColors.primaryButtonBackground,\n color: semanticColors.primaryButtonText,\n fontWeight: FontWeights.regular,\n selectors: {\n ':before': {\n backgroundColor: 'transparent',\n transition: 'none',\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n content: '\"\"',\n height: 0,\n },\n ':hover': {\n backgroundColor: semanticColors.primaryButtonBackgroundHovered,\n color: semanticColors.primaryButtonText,\n },\n '&:active': {\n backgroundColor: semanticColors.primaryButtonBackgroundPressed,\n color: semanticColors.primaryButtonText,\n },\n [HighContrastSelector]: {\n fontWeight: FontWeights.semibold,\n color: 'HighlightText',\n background: 'Highlight',\n ...getHighContrastNoAdjustStyle(),\n },\n },\n },\n ],\n linkContent: [\n classNames.linkContent,\n {\n flex: '0 1 100%',\n selectors: {\n '& > * ': {\n marginLeft: 4,\n },\n '& > *:first-child': {\n marginLeft: 0,\n },\n },\n },\n ],\n text: [\n classNames.text,\n {\n display: 'inline-block',\n verticalAlign: 'top',\n },\n ],\n count: [\n classNames.count,\n {\n display: 'inline-block',\n verticalAlign: 'top',\n },\n ],\n icon: classNames.icon,\n };\n};\n","import * as React from 'react';\nimport { styled } from '../../Utilities';\nimport { IPivotProps, IPivotStyleProps, IPivotStyles } from './Pivot.types';\nimport { PivotBase } from './Pivot.base';\nimport { getStyles } from './Pivot.styles';\n\n/**\n * The Pivot control and related tabs pattern are used for navigating frequently accessed,\n * distinct content categories. Pivots allow for navigation between two or more content\n * views and relies on text headers to articulate the different sections of content.\n */\nexport const Pivot: React.FunctionComponent<IPivotProps> = styled<IPivotProps, IPivotStyleProps, IPivotStyles>(\n PivotBase,\n getStyles,\n undefined,\n {\n scope: 'Pivot',\n },\n);\n","var _excluded = [\"points\", \"className\", \"baseLinePoints\", \"connectNulls\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\n/**\n * @fileOverview Polygon\n */\nimport React from 'react';\nimport clsx from 'clsx';\nimport { filterProps } from '../util/ReactUtils';\nvar isValidatePoint = function isValidatePoint(point) {\n return point && point.x === +point.x && point.y === +point.y;\n};\nvar getParsedPoints = function getParsedPoints() {\n var points = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var segmentPoints = [[]];\n points.forEach(function (entry) {\n if (isValidatePoint(entry)) {\n segmentPoints[segmentPoints.length - 1].push(entry);\n } else if (segmentPoints[segmentPoints.length - 1].length > 0) {\n // add another path\n segmentPoints.push([]);\n }\n });\n if (isValidatePoint(points[0])) {\n segmentPoints[segmentPoints.length - 1].push(points[0]);\n }\n if (segmentPoints[segmentPoints.length - 1].length <= 0) {\n segmentPoints = segmentPoints.slice(0, -1);\n }\n return segmentPoints;\n};\nvar getSinglePolygonPath = function getSinglePolygonPath(points, connectNulls) {\n var segmentPoints = getParsedPoints(points);\n if (connectNulls) {\n segmentPoints = [segmentPoints.reduce(function (res, segPoints) {\n return [].concat(_toConsumableArray(res), _toConsumableArray(segPoints));\n }, [])];\n }\n var polygonPath = segmentPoints.map(function (segPoints) {\n return segPoints.reduce(function (path, point, index) {\n return \"\".concat(path).concat(index === 0 ? 'M' : 'L').concat(point.x, \",\").concat(point.y);\n }, '');\n }).join('');\n return segmentPoints.length === 1 ? \"\".concat(polygonPath, \"Z\") : polygonPath;\n};\nvar getRanglePath = function getRanglePath(points, baseLinePoints, connectNulls) {\n var outerPath = getSinglePolygonPath(points, connectNulls);\n return \"\".concat(outerPath.slice(-1) === 'Z' ? outerPath.slice(0, -1) : outerPath, \"L\").concat(getSinglePolygonPath(baseLinePoints.reverse(), connectNulls).slice(1));\n};\nexport var Polygon = function Polygon(props) {\n var points = props.points,\n className = props.className,\n baseLinePoints = props.baseLinePoints,\n connectNulls = props.connectNulls,\n others = _objectWithoutProperties(props, _excluded);\n if (!points || !points.length) {\n return null;\n }\n var layerClass = clsx('recharts-polygon', className);\n if (baseLinePoints && baseLinePoints.length) {\n var hasStroke = others.stroke && others.stroke !== 'none';\n var rangePath = getRanglePath(points, baseLinePoints, connectNulls);\n return /*#__PURE__*/React.createElement(\"g\", {\n className: layerClass\n }, /*#__PURE__*/React.createElement(\"path\", _extends({}, filterProps(others, true), {\n fill: rangePath.slice(-1) === 'Z' ? others.fill : 'none',\n stroke: \"none\",\n d: rangePath\n })), hasStroke ? /*#__PURE__*/React.createElement(\"path\", _extends({}, filterProps(others, true), {\n fill: \"none\",\n d: getSinglePolygonPath(points, connectNulls)\n })) : null, hasStroke ? /*#__PURE__*/React.createElement(\"path\", _extends({}, filterProps(others, true), {\n fill: \"none\",\n d: getSinglePolygonPath(baseLinePoints, connectNulls)\n })) : null);\n }\n var singlePath = getSinglePolygonPath(points, connectNulls);\n return /*#__PURE__*/React.createElement(\"path\", _extends({}, filterProps(others, true), {\n fill: singlePath.slice(-1) === 'Z' ? others.fill : 'none',\n className: layerClass,\n d: singlePath\n }));\n};","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : String(i); }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/**\n * @fileOverview Axis of radial direction\n */\nimport React, { PureComponent } from 'react';\nimport isFunction from 'lodash/isFunction';\nimport clsx from 'clsx';\nimport { Layer } from '../container/Layer';\nimport { Dot } from '../shape/Dot';\nimport { Polygon } from '../shape/Polygon';\nimport { Text } from '../component/Text';\nimport { adaptEventsOfChild } from '../util/types';\nimport { filterProps } from '../util/ReactUtils';\nimport { getTickClassName, polarToCartesian } from '../util/PolarUtils';\nvar RADIAN = Math.PI / 180;\nvar eps = 1e-5;\nexport var PolarAngleAxis = /*#__PURE__*/function (_PureComponent) {\n _inherits(PolarAngleAxis, _PureComponent);\n function PolarAngleAxis() {\n _classCallCheck(this, PolarAngleAxis);\n return _callSuper(this, PolarAngleAxis, arguments);\n }\n _createClass(PolarAngleAxis, [{\n key: \"getTickLineCoord\",\n value:\n /**\n * Calculate the coordinate of line endpoint\n * @param {Object} data The Data if ticks\n * @return {Object} (x0, y0): The start point of text,\n * (x1, y1): The end point close to text,\n * (x2, y2): The end point close to axis\n */\n function getTickLineCoord(data) {\n var _this$props = this.props,\n cx = _this$props.cx,\n cy = _this$props.cy,\n radius = _this$props.radius,\n orientation = _this$props.orientation,\n tickSize = _this$props.tickSize;\n var tickLineSize = tickSize || 8;\n var p1 = polarToCartesian(cx, cy, radius, data.coordinate);\n var p2 = polarToCartesian(cx, cy, radius + (orientation === 'inner' ? -1 : 1) * tickLineSize, data.coordinate);\n return {\n x1: p1.x,\n y1: p1.y,\n x2: p2.x,\n y2: p2.y\n };\n }\n\n /**\n * Get the text-anchor of each tick\n * @param {Object} data Data of ticks\n * @return {String} text-anchor\n */\n }, {\n key: \"getTickTextAnchor\",\n value: function getTickTextAnchor(data) {\n var orientation = this.props.orientation;\n var cos = Math.cos(-data.coordinate * RADIAN);\n var textAnchor;\n if (cos > eps) {\n textAnchor = orientation === 'outer' ? 'start' : 'end';\n } else if (cos < -eps) {\n textAnchor = orientation === 'outer' ? 'end' : 'start';\n } else {\n textAnchor = 'middle';\n }\n return textAnchor;\n }\n }, {\n key: \"renderAxisLine\",\n value: function renderAxisLine() {\n var _this$props2 = this.props,\n cx = _this$props2.cx,\n cy = _this$props2.cy,\n radius = _this$props2.radius,\n axisLine = _this$props2.axisLine,\n axisLineType = _this$props2.axisLineType;\n var props = _objectSpread(_objectSpread({}, filterProps(this.props, false)), {}, {\n fill: 'none'\n }, filterProps(axisLine, false));\n if (axisLineType === 'circle') {\n return /*#__PURE__*/React.createElement(Dot, _extends({\n className: \"recharts-polar-angle-axis-line\"\n }, props, {\n cx: cx,\n cy: cy,\n r: radius\n }));\n }\n var ticks = this.props.ticks;\n var points = ticks.map(function (entry) {\n return polarToCartesian(cx, cy, radius, entry.coordinate);\n });\n return /*#__PURE__*/React.createElement(Polygon, _extends({\n className: \"recharts-polar-angle-axis-line\"\n }, props, {\n points: points\n }));\n }\n }, {\n key: \"renderTicks\",\n value: function renderTicks() {\n var _this = this;\n var _this$props3 = this.props,\n ticks = _this$props3.ticks,\n tick = _this$props3.tick,\n tickLine = _this$props3.tickLine,\n tickFormatter = _this$props3.tickFormatter,\n stroke = _this$props3.stroke;\n var axisProps = filterProps(this.props, false);\n var customTickProps = filterProps(tick, false);\n var tickLineProps = _objectSpread(_objectSpread({}, axisProps), {}, {\n fill: 'none'\n }, filterProps(tickLine, false));\n var items = ticks.map(function (entry, i) {\n var lineCoord = _this.getTickLineCoord(entry);\n var textAnchor = _this.getTickTextAnchor(entry);\n var tickProps = _objectSpread(_objectSpread(_objectSpread({\n textAnchor: textAnchor\n }, axisProps), {}, {\n stroke: 'none',\n fill: stroke\n }, customTickProps), {}, {\n index: i,\n payload: entry,\n x: lineCoord.x2,\n y: lineCoord.y2\n });\n return /*#__PURE__*/React.createElement(Layer, _extends({\n className: clsx('recharts-polar-angle-axis-tick', getTickClassName(tick)),\n key: \"tick-\".concat(entry.coordinate)\n }, adaptEventsOfChild(_this.props, entry, i)), tickLine && /*#__PURE__*/React.createElement(\"line\", _extends({\n className: \"recharts-polar-angle-axis-tick-line\"\n }, tickLineProps, lineCoord)), tick && PolarAngleAxis.renderTickItem(tick, tickProps, tickFormatter ? tickFormatter(entry.value, i) : entry.value));\n });\n return /*#__PURE__*/React.createElement(Layer, {\n className: \"recharts-polar-angle-axis-ticks\"\n }, items);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props4 = this.props,\n ticks = _this$props4.ticks,\n radius = _this$props4.radius,\n axisLine = _this$props4.axisLine;\n if (radius <= 0 || !ticks || !ticks.length) {\n return null;\n }\n return /*#__PURE__*/React.createElement(Layer, {\n className: clsx('recharts-polar-angle-axis', this.props.className)\n }, axisLine && this.renderAxisLine(), this.renderTicks());\n }\n }], [{\n key: \"renderTickItem\",\n value: function renderTickItem(option, props, value) {\n var tickItem;\n if ( /*#__PURE__*/React.isValidElement(option)) {\n tickItem = /*#__PURE__*/React.cloneElement(option, props);\n } else if (isFunction(option)) {\n tickItem = option(props);\n } else {\n tickItem = /*#__PURE__*/React.createElement(Text, _extends({}, props, {\n className: \"recharts-polar-angle-axis-tick-value\"\n }), value);\n }\n return tickItem;\n }\n }]);\n return PolarAngleAxis;\n}(PureComponent);\n_defineProperty(PolarAngleAxis, \"displayName\", 'PolarAngleAxis');\n_defineProperty(PolarAngleAxis, \"axisType\", 'angleAxis');\n_defineProperty(PolarAngleAxis, \"defaultProps\", {\n type: 'category',\n angleAxisId: 0,\n scale: 'auto',\n cx: 0,\n cy: 0,\n orientation: 'outer',\n axisLine: true,\n tickLine: true,\n tickSize: 8,\n tick: true,\n hide: false,\n allowDuplicatedCategory: true\n});","var _excluded = [\"cx\", \"cy\", \"angle\", \"ticks\", \"axisLine\"],\n _excluded2 = [\"ticks\", \"tick\", \"angle\", \"tickFormatter\", \"stroke\"];\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : String(i); }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/**\n * @fileOverview The axis of polar coordinate system\n */\nimport React, { PureComponent } from 'react';\nimport maxBy from 'lodash/maxBy';\nimport minBy from 'lodash/minBy';\nimport isFunction from 'lodash/isFunction';\nimport clsx from 'clsx';\nimport { Text } from '../component/Text';\nimport { Label } from '../component/Label';\nimport { Layer } from '../container/Layer';\nimport { getTickClassName, polarToCartesian } from '../util/PolarUtils';\nimport { adaptEventsOfChild } from '../util/types';\nimport { filterProps } from '../util/ReactUtils';\nexport var PolarRadiusAxis = /*#__PURE__*/function (_PureComponent) {\n _inherits(PolarRadiusAxis, _PureComponent);\n function PolarRadiusAxis() {\n _classCallCheck(this, PolarRadiusAxis);\n return _callSuper(this, PolarRadiusAxis, arguments);\n }\n _createClass(PolarRadiusAxis, [{\n key: \"getTickValueCoord\",\n value:\n /**\n * Calculate the coordinate of tick\n * @param {Number} coordinate The radius of tick\n * @return {Object} (x, y)\n */\n function getTickValueCoord(_ref) {\n var coordinate = _ref.coordinate;\n var _this$props = this.props,\n angle = _this$props.angle,\n cx = _this$props.cx,\n cy = _this$props.cy;\n return polarToCartesian(cx, cy, coordinate, angle);\n }\n }, {\n key: \"getTickTextAnchor\",\n value: function getTickTextAnchor() {\n var orientation = this.props.orientation;\n var textAnchor;\n switch (orientation) {\n case 'left':\n textAnchor = 'end';\n break;\n case 'right':\n textAnchor = 'start';\n break;\n default:\n textAnchor = 'middle';\n break;\n }\n return textAnchor;\n }\n }, {\n key: \"getViewBox\",\n value: function getViewBox() {\n var _this$props2 = this.props,\n cx = _this$props2.cx,\n cy = _this$props2.cy,\n angle = _this$props2.angle,\n ticks = _this$props2.ticks;\n var maxRadiusTick = maxBy(ticks, function (entry) {\n return entry.coordinate || 0;\n });\n var minRadiusTick = minBy(ticks, function (entry) {\n return entry.coordinate || 0;\n });\n return {\n cx: cx,\n cy: cy,\n startAngle: angle,\n endAngle: angle,\n innerRadius: minRadiusTick.coordinate || 0,\n outerRadius: maxRadiusTick.coordinate || 0\n };\n }\n }, {\n key: \"renderAxisLine\",\n value: function renderAxisLine() {\n var _this$props3 = this.props,\n cx = _this$props3.cx,\n cy = _this$props3.cy,\n angle = _this$props3.angle,\n ticks = _this$props3.ticks,\n axisLine = _this$props3.axisLine,\n others = _objectWithoutProperties(_this$props3, _excluded);\n var extent = ticks.reduce(function (result, entry) {\n return [Math.min(result[0], entry.coordinate), Math.max(result[1], entry.coordinate)];\n }, [Infinity, -Infinity]);\n var point0 = polarToCartesian(cx, cy, extent[0], angle);\n var point1 = polarToCartesian(cx, cy, extent[1], angle);\n var props = _objectSpread(_objectSpread(_objectSpread({}, filterProps(others, false)), {}, {\n fill: 'none'\n }, filterProps(axisLine, false)), {}, {\n x1: point0.x,\n y1: point0.y,\n x2: point1.x,\n y2: point1.y\n });\n return /*#__PURE__*/React.createElement(\"line\", _extends({\n className: \"recharts-polar-radius-axis-line\"\n }, props));\n }\n }, {\n key: \"renderTicks\",\n value: function renderTicks() {\n var _this = this;\n var _this$props4 = this.props,\n ticks = _this$props4.ticks,\n tick = _this$props4.tick,\n angle = _this$props4.angle,\n tickFormatter = _this$props4.tickFormatter,\n stroke = _this$props4.stroke,\n others = _objectWithoutProperties(_this$props4, _excluded2);\n var textAnchor = this.getTickTextAnchor();\n var axisProps = filterProps(others, false);\n var customTickProps = filterProps(tick, false);\n var items = ticks.map(function (entry, i) {\n var coord = _this.getTickValueCoord(entry);\n var tickProps = _objectSpread(_objectSpread(_objectSpread(_objectSpread({\n textAnchor: textAnchor,\n transform: \"rotate(\".concat(90 - angle, \", \").concat(coord.x, \", \").concat(coord.y, \")\")\n }, axisProps), {}, {\n stroke: 'none',\n fill: stroke\n }, customTickProps), {}, {\n index: i\n }, coord), {}, {\n payload: entry\n });\n return /*#__PURE__*/React.createElement(Layer, _extends({\n className: clsx('recharts-polar-radius-axis-tick', getTickClassName(tick)),\n key: \"tick-\".concat(entry.coordinate)\n }, adaptEventsOfChild(_this.props, entry, i)), PolarRadiusAxis.renderTickItem(tick, tickProps, tickFormatter ? tickFormatter(entry.value, i) : entry.value));\n });\n return /*#__PURE__*/React.createElement(Layer, {\n className: \"recharts-polar-radius-axis-ticks\"\n }, items);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props5 = this.props,\n ticks = _this$props5.ticks,\n axisLine = _this$props5.axisLine,\n tick = _this$props5.tick;\n if (!ticks || !ticks.length) {\n return null;\n }\n return /*#__PURE__*/React.createElement(Layer, {\n className: clsx('recharts-polar-radius-axis', this.props.className)\n }, axisLine && this.renderAxisLine(), tick && this.renderTicks(), Label.renderCallByParent(this.props, this.getViewBox()));\n }\n }], [{\n key: \"renderTickItem\",\n value: function renderTickItem(option, props, value) {\n var tickItem;\n if ( /*#__PURE__*/React.isValidElement(option)) {\n tickItem = /*#__PURE__*/React.cloneElement(option, props);\n } else if (isFunction(option)) {\n tickItem = option(props);\n } else {\n tickItem = /*#__PURE__*/React.createElement(Text, _extends({}, props, {\n className: \"recharts-polar-radius-axis-tick-value\"\n }), value);\n }\n return tickItem;\n }\n }]);\n return PolarRadiusAxis;\n}(PureComponent);\n_defineProperty(PolarRadiusAxis, \"displayName\", 'PolarRadiusAxis');\n_defineProperty(PolarRadiusAxis, \"axisType\", 'radiusAxis');\n_defineProperty(PolarRadiusAxis, \"defaultProps\", {\n type: 'number',\n radiusAxisId: 0,\n cx: 0,\n cy: 0,\n angle: 0,\n orientation: 'right',\n stroke: '#ccc',\n axisLine: true,\n tick: true,\n tickCount: 5,\n allowDataOverflow: false,\n scale: 'auto',\n allowDuplicatedCategory: true\n});","/**\n * @fileOverview Pie Chart\n */\nimport { generateCategoricalChart } from './generateCategoricalChart';\nimport { PolarAngleAxis } from '../polar/PolarAngleAxis';\nimport { PolarRadiusAxis } from '../polar/PolarRadiusAxis';\nimport { formatAxisMap } from '../util/PolarUtils';\nimport { Pie } from '../polar/Pie';\nexport var PieChart = generateCategoricalChart({\n chartName: 'PieChart',\n GraphicalChild: Pie,\n validateTooltipEventTypes: ['item'],\n defaultTooltipEventType: 'item',\n legendContent: 'children',\n axisComponents: [{\n axisType: 'angleAxis',\n AxisComp: PolarAngleAxis\n }, {\n axisType: 'radiusAxis',\n AxisComp: PolarRadiusAxis\n }],\n formatAxisMap: formatAxisMap,\n defaultProps: {\n layout: 'centric',\n startAngle: 0,\n endAngle: 360,\n cx: '50%',\n cy: '50%',\n innerRadius: 0,\n outerRadius: '80%'\n }\n});","import * as React from 'react';\nimport { ISpinnerProps, ISpinnerStyleProps, ISpinnerStyles, SpinnerType, SpinnerSize } from './Spinner.types';\nimport { classNamesFunction, DelayedRender, getNativeProps, divProperties } from '../../Utilities';\n\nconst getClassNames = classNamesFunction<ISpinnerStyleProps, ISpinnerStyles>();\n\nexport class SpinnerBase extends React.Component<ISpinnerProps, any> {\n public static defaultProps: ISpinnerProps = {\n size: SpinnerSize.medium,\n ariaLive: 'polite',\n labelPosition: 'bottom',\n };\n\n public render() {\n // eslint-disable-next-line deprecation/deprecation\n const { type, size, ariaLabel, ariaLive, styles, label, theme, className, labelPosition } = this.props;\n const statusMessage = ariaLabel;\n const nativeProps = getNativeProps<React.HTMLAttributes<HTMLDivElement>>(this.props, divProperties, ['size']);\n\n // SpinnerType is deprecated. If someone is still using this property, rather than putting the SpinnerType into the\n // ISpinnerStyleProps, we'll map SpinnerType to its equivalent SpinnerSize and pass that in. Once SpinnerType\n // finally goes away we should delete this.\n let styleSize = size;\n if (styleSize === undefined && type !== undefined) {\n // eslint-disable-next-line deprecation/deprecation\n styleSize = type === SpinnerType.large ? SpinnerSize.large : SpinnerSize.medium;\n }\n\n const classNames = getClassNames(styles!, {\n theme: theme!,\n size: styleSize,\n className,\n labelPosition,\n });\n\n return (\n <div {...nativeProps} className={classNames.root}>\n <div className={classNames.circle} />\n {label && <div className={classNames.label}>{label}</div>}\n {statusMessage && (\n <div role=\"status\" aria-live={ariaLive}>\n <DelayedRender>\n <div className={classNames.screenReaderText}>{statusMessage}</div>\n </DelayedRender>\n </div>\n )}\n </div>\n );\n }\n}\n","import { ISpinnerStyleProps, ISpinnerStyles, SpinnerSize } from './Spinner.types';\nimport {\n hiddenContentStyle,\n keyframes,\n HighContrastSelector,\n getGlobalClassNames,\n getHighContrastNoAdjustStyle,\n} from '../../Styling';\nimport { memoizeFunction } from '../../Utilities';\n\nconst GlobalClassNames = {\n root: 'ms-Spinner',\n circle: 'ms-Spinner-circle',\n label: 'ms-Spinner-label',\n};\n\nconst spinAnimation = memoizeFunction(() =>\n keyframes({\n '0%': {\n transform: 'rotate(0deg)',\n },\n '100%': {\n transform: 'rotate(360deg)',\n },\n }),\n);\n\nexport const getStyles = (props: ISpinnerStyleProps): ISpinnerStyles => {\n const { theme, size, className, labelPosition } = props;\n\n const { palette } = theme;\n\n const classNames = getGlobalClassNames(GlobalClassNames, theme);\n\n return {\n root: [\n classNames.root,\n {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n },\n labelPosition === 'top' && {\n flexDirection: 'column-reverse',\n },\n labelPosition === 'right' && {\n flexDirection: 'row',\n },\n labelPosition === 'left' && {\n flexDirection: 'row-reverse',\n },\n className,\n ],\n circle: [\n classNames.circle,\n {\n boxSizing: 'border-box',\n borderRadius: '50%',\n border: '1.5px solid ' + palette.themeLight,\n borderTopColor: palette.themePrimary,\n animationName: spinAnimation(),\n animationDuration: '1.3s',\n animationIterationCount: 'infinite',\n animationTimingFunction: 'cubic-bezier(.53,.21,.29,.67)',\n selectors: {\n [HighContrastSelector]: {\n borderTopColor: 'Highlight',\n ...getHighContrastNoAdjustStyle(),\n },\n },\n },\n size === SpinnerSize.xSmall && [\n 'ms-Spinner--xSmall',\n {\n width: 12,\n height: 12,\n },\n ],\n size === SpinnerSize.small && [\n 'ms-Spinner--small',\n {\n width: 16,\n height: 16,\n },\n ],\n size === SpinnerSize.medium && [\n 'ms-Spinner--medium',\n {\n width: 20,\n height: 20,\n },\n ],\n size === SpinnerSize.large && [\n 'ms-Spinner--large',\n {\n width: 28,\n height: 28,\n },\n ],\n ],\n label: [\n classNames.label,\n theme.fonts.small,\n {\n color: palette.themePrimary,\n margin: '8px 0 0',\n textAlign: 'center',\n },\n labelPosition === 'top' && {\n margin: '0 0 8px',\n },\n labelPosition === 'right' && {\n margin: '0 0 0 8px',\n },\n labelPosition === 'left' && {\n margin: '0 8px 0 0',\n },\n ],\n screenReaderText: hiddenContentStyle,\n };\n};\n","import * as React from 'react';\nimport { styled } from '../../Utilities';\nimport { SpinnerBase } from './Spinner.base';\nimport { getStyles } from './Spinner.styles';\nimport { ISpinnerProps, ISpinnerStyles, ISpinnerStyleProps } from './Spinner.types';\n\nexport const Spinner: React.FunctionComponent<ISpinnerProps> = styled<\n ISpinnerProps,\n ISpinnerStyleProps,\n ISpinnerStyles\n>(SpinnerBase, getStyles, undefined, { scope: 'Spinner' });\n","/**\n * Functions used by Stack components to simplify style-related computations\n */\n\nimport { ITheme } from '../../Styling';\nimport { IStackProps } from './Stack.types';\n\n// Helper function that converts a themed spacing key (if given) to the corresponding themed spacing value.\nconst _getThemedSpacing = (space: string, theme: ITheme): string => {\n if (theme.spacing.hasOwnProperty(space)) {\n return theme.spacing[space as keyof typeof theme.spacing];\n }\n return space;\n};\n\n// Helper function that takes a gap as a string and converts it into a { value, unit } representation.\nconst _getValueUnitGap = (gap: string): { value: number; unit: string } => {\n const numericalPart = parseFloat(gap);\n const numericalValue = isNaN(numericalPart) ? 0 : numericalPart;\n const numericalString = isNaN(numericalPart) ? '' : numericalPart.toString();\n\n const unitPart = gap.substring(numericalString.toString().length);\n\n return {\n value: numericalValue,\n unit: unitPart || 'px',\n };\n};\n\n/**\n * Takes in a gap size in either a CSS-style format (e.g. 10 or \"10px\")\n * or a key of a themed spacing value (e.g. \"s1\").\n * Returns the separate numerical value of the padding (e.g. 10)\n * and the CSS unit (e.g. \"px\").\n */\nexport const parseGap = (\n gap: IStackProps['gap'],\n theme: ITheme,\n): { rowGap: { value: number; unit: string }; columnGap: { value: number; unit: string } } => {\n if (gap === undefined || gap === '') {\n return {\n rowGap: {\n value: 0,\n unit: 'px',\n },\n columnGap: {\n value: 0,\n unit: 'px',\n },\n };\n }\n\n if (typeof gap === 'number') {\n return {\n rowGap: {\n value: gap,\n unit: 'px',\n },\n columnGap: {\n value: gap,\n unit: 'px',\n },\n };\n }\n\n const splitGap = gap.split(' ');\n\n // If the array has more than two values, then return 0px.\n if (splitGap.length > 2) {\n return {\n rowGap: {\n value: 0,\n unit: 'px',\n },\n columnGap: {\n value: 0,\n unit: 'px',\n },\n };\n }\n\n // If the array has two values, then parse each one.\n if (splitGap.length === 2) {\n return {\n rowGap: _getValueUnitGap(_getThemedSpacing(splitGap[0], theme)),\n columnGap: _getValueUnitGap(_getThemedSpacing(splitGap[1], theme)),\n };\n }\n\n // Else, parse the numerical value and pass it as both the vertical and horizontal gap.\n const calculatedGap = _getValueUnitGap(_getThemedSpacing(gap, theme));\n\n return {\n rowGap: calculatedGap,\n columnGap: calculatedGap,\n };\n};\n\n/**\n * Takes in a padding in a CSS-style format (e.g. 10, \"10px\", \"10px 10px\", etc.)\n * where the separate padding values can also be the key of a themed spacing value\n * (e.g. \"s1 m\", \"10px l1 20px l2\", etc.).\n * Returns a CSS-style padding.\n */\nexport const parsePadding = (padding: number | string | undefined, theme: ITheme): number | string | undefined => {\n if (padding === undefined || typeof padding === 'number' || padding === '') {\n return padding;\n }\n\n const paddingValues = padding.split(' ');\n if (paddingValues.length < 2) {\n return _getThemedSpacing(padding, theme);\n }\n\n return paddingValues.reduce((padding1: string, padding2: string) => {\n return _getThemedSpacing(padding1, theme) + ' ' + _getThemedSpacing(padding2, theme);\n });\n};\n","import { IStackComponent, IStackStyles, IStackStylesReturnType } from './Stack.types';\nimport { parseGap, parsePadding } from './StackUtils';\nimport { getGlobalClassNames } from '../../Styling';\n\nconst nameMap: { [key: string]: string } = {\n start: 'flex-start',\n end: 'flex-end',\n};\n\nconst GlobalClassNames = {\n root: 'ms-Stack',\n inner: 'ms-Stack-inner',\n};\n\nexport const styles: IStackComponent['styles'] = (props, theme, tokens): IStackStylesReturnType => {\n const {\n verticalFill,\n horizontal,\n reversed,\n grow,\n wrap,\n horizontalAlign,\n verticalAlign,\n disableShrink,\n className,\n } = props;\n\n const classNames = getGlobalClassNames(GlobalClassNames, theme);\n\n /* eslint-disable deprecation/deprecation */\n const childrenGap = tokens && tokens.childrenGap ? tokens.childrenGap : props.gap;\n const maxHeight = tokens && tokens.maxHeight ? tokens.maxHeight : props.maxHeight;\n const maxWidth = tokens && tokens.maxWidth ? tokens.maxWidth : props.maxWidth;\n const padding = tokens && tokens.padding ? tokens.padding : props.padding;\n /* eslint-enable deprecation/deprecation */\n\n const { rowGap, columnGap } = parseGap(childrenGap, theme);\n\n const horizontalMargin = `${-0.5 * columnGap.value}${columnGap.unit}`;\n const verticalMargin = `${-0.5 * rowGap.value}${rowGap.unit}`;\n\n // styles to be applied to all direct children regardless of wrap or direction\n const childStyles = {\n textOverflow: 'ellipsis',\n };\n\n // selectors to be applied regardless of wrap or direction\n const commonSelectors = {\n // flexShrink styles are applied by the StackItem\n '> *:not(.ms-StackItem)': {\n flexShrink: disableShrink ? 0 : 1,\n },\n };\n\n if (wrap) {\n return {\n root: [\n classNames.root,\n {\n flexWrap: 'wrap',\n maxWidth,\n maxHeight,\n width: 'auto',\n overflow: 'visible',\n height: '100%',\n },\n horizontalAlign && {\n [horizontal ? 'justifyContent' : 'alignItems']: nameMap[horizontalAlign] || horizontalAlign,\n },\n verticalAlign && {\n [horizontal ? 'alignItems' : 'justifyContent']: nameMap[verticalAlign] || verticalAlign,\n },\n className,\n {\n // not allowed to be overridden by className\n // since this is necessary in order to prevent collapsing margins\n display: 'flex',\n },\n horizontal && {\n height: verticalFill ? '100%' : 'auto',\n },\n ],\n\n inner: [\n classNames.inner,\n {\n display: 'flex',\n flexWrap: 'wrap',\n marginLeft: horizontalMargin,\n marginRight: horizontalMargin,\n marginTop: verticalMargin,\n marginBottom: verticalMargin,\n overflow: 'visible',\n boxSizing: 'border-box',\n padding: parsePadding(padding, theme),\n // avoid unnecessary calc() calls if horizontal gap is 0\n width: columnGap.value === 0 ? '100%' : `calc(100% + ${columnGap.value}${columnGap.unit})`,\n maxWidth: '100vw',\n\n selectors: {\n '> *': {\n margin: `${0.5 * rowGap.value}${rowGap.unit} ${0.5 * columnGap.value}${columnGap.unit}`,\n\n ...childStyles,\n },\n ...commonSelectors,\n },\n },\n horizontalAlign && {\n [horizontal ? 'justifyContent' : 'alignItems']: nameMap[horizontalAlign] || horizontalAlign,\n },\n verticalAlign && {\n [horizontal ? 'alignItems' : 'justifyContent']: nameMap[verticalAlign] || verticalAlign,\n },\n horizontal && {\n flexDirection: reversed ? 'row-reverse' : 'row',\n\n // avoid unnecessary calc() calls if vertical gap is 0\n height: rowGap.value === 0 ? '100%' : `calc(100% + ${rowGap.value}${rowGap.unit})`,\n\n selectors: {\n '> *': {\n maxWidth: columnGap.value === 0 ? '100%' : `calc(100% - ${columnGap.value}${columnGap.unit})`,\n },\n },\n },\n !horizontal && {\n flexDirection: reversed ? 'column-reverse' : 'column',\n height: `calc(100% + ${rowGap.value}${rowGap.unit})`,\n\n selectors: {\n '> *': {\n maxHeight: rowGap.value === 0 ? '100%' : `calc(100% - ${rowGap.value}${rowGap.unit})`,\n },\n },\n },\n ],\n } as IStackStyles;\n }\n\n return {\n root: [\n classNames.root,\n {\n display: 'flex',\n flexDirection: horizontal ? (reversed ? 'row-reverse' : 'row') : reversed ? 'column-reverse' : 'column',\n flexWrap: 'nowrap',\n width: 'auto',\n height: verticalFill ? '100%' : 'auto',\n maxWidth,\n maxHeight,\n padding: parsePadding(padding, theme),\n boxSizing: 'border-box',\n\n selectors: {\n '> *': childStyles,\n\n // apply gap margin to every direct child except the first direct child if the direction is not reversed,\n // and the last direct one if it is\n [reversed ? '> *:not(:last-child)' : '> *:not(:first-child)']: [\n horizontal && {\n marginLeft: `${columnGap.value}${columnGap.unit}`,\n },\n !horizontal && {\n marginTop: `${rowGap.value}${rowGap.unit}`,\n },\n ],\n\n ...commonSelectors,\n },\n },\n grow && {\n flexGrow: grow === true ? 1 : grow,\n },\n horizontalAlign && {\n [horizontal ? 'justifyContent' : 'alignItems']: nameMap[horizontalAlign] || horizontalAlign,\n },\n verticalAlign && {\n [horizontal ? 'alignItems' : 'justifyContent']: nameMap[verticalAlign] || verticalAlign,\n },\n className,\n ],\n // TODO: this cast may be hiding some potential issues with styling and name\n // lookups and should be removed\n } as IStackStyles;\n};\n","/** @jsxRuntime classic */\n/** @jsx withSlots */\nimport * as React from 'react';\nimport { withSlots, createComponent, getSlots } from '../../Foundation';\nimport { getNativeProps, htmlElementProperties, warnDeprecations } from '../../Utilities';\nimport { styles } from './Stack.styles';\nimport { IStackComponent, IStackProps, IStackSlots } from './Stack.types';\nimport { StackItem } from './StackItem/StackItem';\nimport { IStackItemProps } from './StackItem/StackItem.types';\n\nconst StackView: IStackComponent['view'] = props => {\n const { as: RootType = 'div', disableShrink, wrap, ...rest } = props;\n\n warnDeprecations('Stack', props, {\n gap: 'tokens.childrenGap',\n maxHeight: 'tokens.maxHeight',\n maxWidth: 'tokens.maxWidth',\n padding: 'tokens.padding',\n });\n\n const stackChildren: (React.ReactChild | null)[] | null | undefined = React.Children.map(\n props.children,\n (child: React.ReactElement<IStackItemProps>, index: number) => {\n if (!child) {\n return null;\n }\n\n if (_isStackItem(child)) {\n const defaultItemProps: IStackItemProps = {\n shrink: !disableShrink,\n };\n\n return React.cloneElement(child, {\n ...defaultItemProps,\n ...child.props,\n });\n }\n\n return child;\n },\n );\n\n const nativeProps = getNativeProps<React.HTMLAttributes<HTMLDivElement>>(rest, htmlElementProperties);\n\n const Slots = getSlots<IStackProps, IStackSlots>(props, {\n root: RootType,\n inner: 'div',\n });\n\n if (wrap) {\n return (\n <Slots.root {...nativeProps}>\n <Slots.inner>{stackChildren}</Slots.inner>\n </Slots.root>\n );\n }\n\n return <Slots.root {...nativeProps}>{stackChildren}</Slots.root>;\n};\n\nfunction _isStackItem(item: React.ReactNode): item is typeof StackItem {\n // In theory, we should be able to just check item.type === StackItem.\n // However, under certain unclear circumstances (see https://github.com/microsoft/fluentui/issues/10785),\n // the object identity is different despite the function implementation being the same.\n return (\n !!item &&\n typeof item === 'object' &&\n !!(item as React.ReactElement).type &&\n // StackItem is generated by createComponent, so we need to check its displayName instead of name\n ((item as React.ReactElement).type as React.ComponentType).displayName === StackItem.displayName\n );\n}\n\nconst StackStatics = {\n Item: StackItem,\n};\n\nexport const Stack: React.FunctionComponent<IStackProps> & {\n Item: React.FunctionComponent<IStackItemProps>;\n} = createComponent(StackView, {\n displayName: 'Stack',\n styles,\n statics: StackStatics,\n});\n\nexport default Stack;\n","import * as React from 'react';\nimport { createComponent } from '../../Foundation';\nimport { ITextProps } from './Text.types';\nimport { TextView } from './Text.view';\nimport { TextStyles as styles } from './Text.styles';\n\nexport const Text: React.FunctionComponent<ITextProps> = createComponent(TextView, {\n displayName: 'Text',\n styles,\n});\n\nexport default Text;\n","/** @jsxRuntime classic */\n/** @jsx withSlots */\nimport * as React from 'react';\nimport { withSlots, getSlots } from '../../Foundation';\nimport { getNativeProps, htmlElementProperties } from '../../Utilities';\nimport { ITextComponent, ITextProps, ITextSlots } from './Text.types';\n\nexport const TextView: ITextComponent['view'] = props => {\n if (React.Children.count(props.children) === 0) {\n return null;\n }\n\n const { block, className, as: RootType = 'span', variant, nowrap, ...rest } = props;\n\n const Slots = getSlots<ITextProps, ITextSlots>(props, {\n root: RootType,\n });\n\n return <Slots.root {...getNativeProps(rest, htmlElementProperties)} />;\n};\n","import { ITextComponent, ITextStyles, ITextStylesReturnType, ITextProps } from './Text.types';\n\nimport { ITheme } from '../../Styling';\n\nexport const TextStyles: ITextComponent['styles'] = (props: ITextProps, theme: ITheme): ITextStylesReturnType => {\n const { as, className, block, nowrap, variant } = props;\n const { fonts } = theme;\n const variantObject = fonts[variant || 'medium'];\n\n return {\n root: [\n theme.fonts.medium,\n {\n display: block ? (as === 'td' ? 'table-cell' : 'block') : 'inline',\n fontFamily: variantObject.fontFamily,\n fontSize: variantObject.fontSize,\n fontWeight: variantObject.fontWeight,\n color: variantObject.color,\n mozOsxFontSmoothing: variantObject.MozOsxFontSmoothing,\n webkitFontSmoothing: variantObject.WebkitFontSmoothing,\n },\n nowrap && {\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n },\n className,\n ],\n } as ITextStyles;\n};\n","import * as React from 'react';\nimport { divProperties, getNativeProps } from '../../Utilities';\nimport { classNamesFunction } from '../../Utilities';\nimport { ILabelProps, ILabelStyleProps, ILabelStyles } from './Label.types';\n\nconst getClassNames = classNamesFunction<ILabelStyleProps, ILabelStyles>({\n // Label is used a lot by other components.\n // It's likely to see expected cases which pass different className to the Label.\n // Therefore setting a larger cache size.\n cacheSize: 100,\n});\n\nexport class LabelBase extends React.Component<ILabelProps, {}> {\n public render(): JSX.Element {\n const { as: RootType = 'label', children, className, disabled, styles, required, theme } = this.props;\n const classNames = getClassNames(styles, {\n className,\n disabled,\n required,\n theme: theme!,\n });\n return (\n <RootType {...getNativeProps(this.props, divProperties)} className={classNames.root}>\n {children}\n </RootType>\n );\n }\n}\n","import * as React from 'react';\nimport { styled } from '../../Utilities';\nimport { LabelBase } from './Label.base';\nimport { getStyles } from './Label.styles';\nimport { ILabelProps, ILabelStyleProps, ILabelStyles } from './Label.types';\n\nexport const Label: React.FunctionComponent<ILabelProps> = styled<ILabelProps, ILabelStyleProps, ILabelStyles>(\n LabelBase,\n getStyles,\n undefined,\n {\n scope: 'Label',\n },\n);\n","import { HighContrastSelector, FontWeights, getHighContrastNoAdjustStyle } from '../../Styling';\nimport { ILabelStyleProps, ILabelStyles } from './Label.types';\n\nexport const getStyles = (props: ILabelStyleProps): ILabelStyles => {\n const { theme, className, disabled, required } = props;\n const { semanticColors } = theme;\n\n // Tokens\n const labelFontWeight = FontWeights.semibold;\n const labelColor = semanticColors.bodyText;\n const labelDisabledColor = semanticColors.disabledBodyText;\n const labelRequiredStarColor = semanticColors.errorText;\n\n return {\n root: [\n 'ms-Label',\n theme.fonts.medium,\n {\n fontWeight: labelFontWeight,\n color: labelColor,\n boxSizing: 'border-box',\n boxShadow: 'none',\n margin: 0,\n display: 'block',\n padding: '5px 0',\n wordWrap: 'break-word',\n overflowWrap: 'break-word',\n },\n disabled && {\n color: labelDisabledColor,\n selectors: {\n [HighContrastSelector]: {\n color: 'GrayText',\n ...getHighContrastNoAdjustStyle(),\n },\n },\n },\n required && {\n selectors: {\n '::after': {\n content: `' *'`,\n color: labelRequiredStarColor,\n paddingRight: 12,\n },\n },\n },\n className,\n ],\n };\n};\n","import * as React from 'react';\nimport { IImageProps } from '../Image/Image.types';\nimport { IStyle, ITheme } from '../../Styling';\nimport { IBaseProps, IStyleFunctionOrObject } from '../../Utilities';\n\n/**\n * @deprecated Icon type is inferred based on presence of `IIconProps.imageProps`\n * {@docCategory Icon}\n */\nexport enum IconType {\n /**\n * Render using the fabric icon font.\n * @deprecated Icon type is inferred based on presence of `IIconProps.imageProps`\n */\n default = 0,\n\n /**\n * Render using an image, where imageProps would be used.\n * @deprecated Icon type is inferred based on presence of `IIconProps.imageProps`\n */\n image = 1,\n\n /**\n * Deprecated, use `default`.\n * @deprecated Use `default`.\n */\n Default = 100000,\n\n /**\n * Deprecated, use `image`.\n * @deprecated Use `image`.\n */\n Image = 100001,\n}\n\n/**\n * {@docCategory Icon}\n */\nexport interface IIconProps extends IBaseProps, React.HTMLAttributes<HTMLElement> {\n /**\n * The name of the icon to use from the icon font.\n * If string is empty, a placeholder icon will be rendered the same width as an icon.\n */\n iconName?: string;\n\n /**\n * The aria label of the icon for the benefit of screen readers.\n * @deprecated Use the native prop `aria-label`\n */\n ariaLabel?: string;\n\n /**\n * The type of icon to render (image or icon font).\n * @deprecated Inferred based on the presence of `imageProps`\n */\n // eslint-disable-next-line deprecation/deprecation\n iconType?: IconType;\n\n /**\n * If rendering an image icon, these props will be passed to the Image component.\n */\n imageProps?: IImageProps;\n\n /**\n * If rendering an image icon, this component will be rendered in the event that loading the image fails.\n */\n imageErrorAs?: React.ComponentType<IImageProps>;\n\n /**\n * Gets the styles for an Icon.\n */\n styles?: IStyleFunctionOrObject<IIconStyleProps, IIconStyles>;\n theme?: ITheme;\n}\n\n/**\n * {@docCategory Icon}\n */\nexport interface IIconStyleProps {\n className?: string;\n iconClassName?: string;\n isPlaceholder: boolean;\n isImage: boolean;\n styles?: Partial<IIconStyles>;\n theme?: ITheme;\n}\n\n/**\n * {@docCategory Icon}\n */\nexport interface IIconStyles {\n root?: IStyle;\n\n /**\n * Deprecated. Use `root`.\n * @deprecated Use `root`.\n */\n imageContainer?: IStyle;\n}\n\n/**\n * Props for a basic icon component which only supports font glyphs and can't be targeted by customizations.\n * {@docCategory Icon}\n */\nexport interface IFontIconProps extends React.HTMLAttributes<HTMLElement> {\n /**\n * The name of the icon to use from the icon font.\n * If string is empty, a placeholder icon will be rendered the same width as an icon.\n */\n iconName?: string;\n\n /**\n * Custom class to style the icon.\n */\n className?: string;\n}\n\n/**\n * Props for a basic image icon component which doesn't directly provide image load error handling\n * and can't be targeted by customizations.\n * {@docCategory Icon}\n */\nexport interface IImageIconProps extends React.HTMLAttributes<HTMLElement> {\n /**\n * Props passed to the Image component.\n */\n imageProps: IImageProps;\n\n /**\n * Custom class to style the icon.\n */\n className?: string;\n}\n","import * as React from 'react';\n\nimport { IIconProps, IconType, IIconStyleProps, IIconStyles } from './Icon.types';\nimport { Image } from '../Image/Image';\nimport { ImageLoadState, IImageProps } from '../Image/Image.types';\nimport { getNativeProps, htmlElementProperties, classNamesFunction } from '../../Utilities';\nimport { getIconContent } from './FontIcon';\n\nexport interface IIconState {\n imageLoadError: boolean;\n}\n\nconst getClassNames = classNamesFunction<IIconStyleProps, IIconStyles>({\n // Icon is used a lot by other components.\n // It's likely to see expected cases which pass different className to the Icon.\n // Therefore setting a larger cache size.\n cacheSize: 100,\n});\n\nexport class IconBase extends React.Component<IIconProps, IIconState> {\n constructor(props: IIconProps) {\n super(props);\n this.state = {\n imageLoadError: false,\n };\n }\n\n public render() {\n const { children, className, styles, iconName, imageErrorAs, theme } = this.props;\n const isPlaceholder = typeof iconName === 'string' && iconName.length === 0;\n const isImage =\n // eslint-disable-next-line deprecation/deprecation\n !!this.props.imageProps || this.props.iconType === IconType.image || this.props.iconType === IconType.Image;\n const iconContent = getIconContent(iconName) || {};\n const { iconClassName, children: iconContentChildren, mergeImageProps } = iconContent;\n\n const classNames = getClassNames(styles, {\n theme: theme!,\n className,\n iconClassName,\n isImage,\n isPlaceholder,\n });\n\n const RootType = isImage ? 'span' : 'i';\n const nativeProps = getNativeProps<React.HTMLAttributes<HTMLDivElement>>(this.props, htmlElementProperties, [\n 'aria-label',\n ]);\n const { imageLoadError } = this.state;\n const imageProps: IImageProps = {\n ...this.props.imageProps,\n onLoadingStateChange: this._onImageLoadingStateChange,\n };\n const ImageType = (imageLoadError && imageErrorAs) || Image;\n\n // eslint-disable-next-line deprecation/deprecation\n const ariaLabel = this.props['aria-label'] || this.props.ariaLabel;\n const accessibleName = imageProps.alt || ariaLabel || this.props.title;\n const hasName = !!(\n accessibleName ||\n this.props['aria-labelledby'] ||\n imageProps['aria-label'] ||\n imageProps['aria-labelledby']\n );\n const containerProps = hasName\n ? {\n role: isImage || mergeImageProps ? undefined : 'img',\n 'aria-label': isImage || mergeImageProps ? undefined : accessibleName,\n }\n : {\n 'aria-hidden': this.props['aria-labelledby'] || imageProps['aria-labelledby'] ? false : true,\n };\n\n let finalIconContentChildren = iconContentChildren;\n\n if (mergeImageProps && iconContentChildren && typeof iconContentChildren === 'object' && accessibleName) {\n finalIconContentChildren = React.cloneElement(iconContentChildren, {\n alt: accessibleName,\n });\n }\n\n return (\n <RootType\n data-icon-name={iconName}\n {...containerProps}\n {...nativeProps}\n {...(mergeImageProps\n ? {\n title: undefined,\n 'aria-label': undefined,\n }\n : {})}\n className={classNames.root}\n >\n {isImage ? <ImageType {...imageProps} /> : children || finalIconContentChildren}\n </RootType>\n );\n }\n\n private _onImageLoadingStateChange = (state: ImageLoadState): void => {\n if (this.props.imageProps && this.props.imageProps.onLoadingStateChange) {\n this.props.imageProps.onLoadingStateChange(state);\n }\n if (state === ImageLoadState.error) {\n this.setState({ imageLoadError: true });\n }\n };\n}\n","import * as React from 'react';\nimport { styled } from '../../Utilities';\nimport { IIconProps, IIconStyleProps, IIconStyles } from './Icon.types';\nimport { IconBase } from './Icon.base';\nimport { getStyles } from './Icon.styles';\n\n/**\n * Legacy Icon component which can be targeted by customization. It's recommended to use `FontIcon`\n * or `ImageIcon` instead, especially in scenarios where rendering performance is important.\n * {@docCategory Icon}\n */\nexport const Icon: React.FunctionComponent<IIconProps> = styled<IIconProps, IIconStyleProps, IIconStyles>(\n IconBase,\n getStyles,\n undefined,\n {\n scope: 'Icon',\n },\n true,\n);\nIcon.displayName = 'Icon';\n","import * as React from 'react';\nimport { classNamesFunction, initializeComponentRef } from '../../Utilities';\nimport { ILink, ILinkProps, ILinkStyleProps, ILinkStyles } from './Link.types';\nimport { KeytipData } from '../../KeytipData';\n\nconst getClassNames = classNamesFunction<ILinkStyleProps, ILinkStyles>();\n\nexport class LinkBase extends React.Component<ILinkProps, {}> implements ILink {\n private _link = React.createRef<HTMLAnchorElement | HTMLButtonElement | null>();\n\n constructor(props: ILinkProps) {\n super(props);\n\n initializeComponentRef(this);\n }\n\n public render(): JSX.Element {\n const { disabled, keytipProps } = this.props;\n\n if (keytipProps) {\n return (\n <KeytipData\n keytipProps={keytipProps}\n ariaDescribedBy={(this.props as { 'aria-describedby': string })['aria-describedby']}\n disabled={disabled}\n >\n {(keytipAttributes: any): JSX.Element => this._renderContent(keytipAttributes)}\n </KeytipData>\n );\n }\n\n return this._renderContent();\n }\n\n public focus() {\n const { current } = this._link;\n\n if (current && current.focus) {\n current.focus();\n }\n }\n\n private _renderContent = (keytipAttributes: any = {}): JSX.Element => {\n const { disabled, children, className, href, underline, theme, styles } = this.props;\n\n const classNames = getClassNames(styles!, {\n className,\n isButton: !href,\n isDisabled: disabled,\n isUnderlined: underline,\n theme: theme!,\n });\n\n const RootType = this._getRootType(this.props);\n\n return (\n <RootType\n {...keytipAttributes}\n {...this._adjustPropsForRootType(RootType, this.props)}\n className={classNames.root}\n onClick={this._onClick}\n ref={this._link}\n aria-disabled={disabled}\n >\n {children}\n </RootType>\n );\n };\n\n private _onClick = (ev: React.MouseEvent<HTMLAnchorElement | HTMLButtonElement>) => {\n const { onClick, disabled } = this.props;\n\n if (disabled) {\n ev.preventDefault();\n } else if (onClick) {\n onClick(ev);\n }\n };\n\n private _adjustPropsForRootType(\n RootType: string | React.ComponentClass | React.FunctionComponent,\n props: ILinkProps & { getStyles?: any },\n ): Partial<ILinkProps> {\n // Deconstruct the props so we remove props like `as`, `theme` and `styles`\n // as those will always be removed. We also take some props that are optional\n // based on the RootType.\n const {\n children,\n as,\n disabled,\n target,\n href,\n theme,\n getStyles,\n styles,\n componentRef,\n keytipProps,\n underline,\n ...restProps\n } = props;\n\n // RootType will be a string if we're dealing with an html component\n if (typeof RootType === 'string') {\n // Remove the disabled prop for anchor elements\n if (RootType === 'a') {\n return {\n target,\n href: disabled ? undefined : href,\n ...restProps,\n };\n }\n\n // Add the type='button' prop for button elements\n if (RootType === 'button') {\n return {\n type: 'button',\n disabled,\n ...restProps,\n };\n }\n\n // Remove the target and href props for all other non anchor elements\n return { ...restProps, disabled };\n }\n\n // Retain all props except 'as' for ReactComponents\n return { target, href, disabled, ...restProps };\n }\n\n private _getRootType(props: ILinkProps): string | React.ComponentClass | React.FunctionComponent {\n if (props.as) {\n return props.as;\n }\n\n if (props.href) {\n return 'a';\n }\n\n return 'button';\n }\n}\n","import { getGlobalClassNames, HighContrastSelector } from '../../Styling';\nimport { ILinkStyleProps, ILinkStyles } from './Link.types';\n\nconst GlobalClassNames = {\n root: 'ms-Link',\n};\n\nexport const getStyles = (props: ILinkStyleProps): ILinkStyles => {\n const { className, isButton, isDisabled, isUnderlined, theme } = props;\n const { semanticColors } = theme;\n\n // Tokens\n const linkColor = semanticColors.link;\n const linkInteractedColor = semanticColors.linkHovered;\n const linkDisabledColor = semanticColors.disabledText;\n const focusBorderColor = semanticColors.focusBorder;\n\n const classNames = getGlobalClassNames(GlobalClassNames, theme);\n\n return {\n root: [\n classNames.root,\n theme.fonts.medium,\n {\n color: linkColor,\n outline: 'none',\n fontSize: 'inherit',\n fontWeight: 'inherit',\n textDecoration: isUnderlined ? 'underline' : 'none',\n\n selectors: {\n '.ms-Fabric--isFocusVisible &:focus': {\n // Can't use getFocusStyle because it doesn't support wrapping links\n // https://github.com/microsoft/fluentui/issues/4883#issuecomment-406743543\n // Using box-shadow and outline allows the focus rect to wrap links that span multiple lines\n // and helps the focus rect avoid getting clipped.\n boxShadow: `0 0 0 1px ${focusBorderColor} inset`,\n outline: `1px auto ${focusBorderColor}`,\n selectors: {\n [HighContrastSelector]: {\n outline: '1px solid WindowText',\n },\n },\n },\n [HighContrastSelector]: {\n // For IE high contrast mode\n borderBottom: 'none',\n },\n },\n },\n isButton && {\n background: 'none',\n backgroundColor: 'transparent',\n border: 'none',\n cursor: 'pointer',\n display: 'inline',\n margin: 0,\n overflow: 'inherit',\n padding: 0,\n textAlign: 'left',\n textOverflow: 'inherit',\n userSelect: 'text',\n borderBottom: '1px solid transparent', // For Firefox high contrast mode\n selectors: {\n [HighContrastSelector]: {\n color: 'LinkText',\n forcedColorAdjust: 'none',\n },\n },\n },\n !isButton && {\n selectors: {\n [HighContrastSelector]: {\n // This is mainly for MessageBar, which sets MsHighContrastAdjust: none by default\n MsHighContrastAdjust: 'auto',\n forcedColorAdjust: 'auto',\n },\n },\n },\n\n isDisabled && [\n 'is-disabled',\n {\n color: linkDisabledColor,\n cursor: 'default',\n },\n {\n selectors: {\n '&:link, &:visited': {\n pointerEvents: 'none',\n },\n },\n },\n ],\n !isDisabled && {\n selectors: {\n '&:active, &:hover, &:active:hover': {\n color: linkInteractedColor,\n textDecoration: 'underline',\n\n selectors: {\n [HighContrastSelector]: {\n color: 'LinkText',\n },\n },\n },\n '&:focus': {\n color: linkColor,\n\n selectors: {\n [HighContrastSelector]: {\n color: 'LinkText',\n },\n },\n },\n },\n },\n classNames.root,\n className,\n ],\n };\n};\n","import * as React from 'react';\nimport { styled } from '../../Utilities';\nimport { LinkBase } from './Link.base';\nimport { ILinkProps, ILinkStyleProps, ILinkStyles } from './Link.types';\nimport { getStyles } from './Link.styles';\n\nexport const Link: React.FunctionComponent<ILinkProps> = styled<ILinkProps, ILinkStyleProps, ILinkStyles>(\n LinkBase,\n getStyles,\n undefined,\n {\n scope: 'Link',\n },\n);\n","import * as React from 'react';\nimport { IconButton } from '../../Button';\nimport { Layer } from '../../Layer';\nimport { Overlay } from '../../Overlay';\nimport { Popup } from '../../Popup';\nimport { IProcessedStyleSet } from '../../Styling';\nimport {\n allowScrollOnElement,\n allowOverscrollOnElement,\n classNamesFunction,\n divProperties,\n elementContains,\n getId,\n getNativeProps,\n getRTL,\n css,\n warnDeprecations,\n Async,\n EventGroup,\n initializeComponentRef,\n} from '../../Utilities';\nimport { FocusTrapZone } from '../FocusTrapZone/index';\nimport { IPanel, IPanelProps, IPanelStyleProps, IPanelStyles, PanelType } from './Panel.types';\n\nconst getClassNames = classNamesFunction<IPanelStyleProps, IPanelStyles>();\nconst COMPONENT_NAME = 'Panel';\n\nenum PanelVisibilityState {\n closed,\n animatingOpen,\n open,\n animatingClosed,\n}\n\ninterface IPanelState {\n isFooterSticky?: boolean;\n id?: string;\n visibility: PanelVisibilityState;\n}\n\nexport class PanelBase extends React.Component<IPanelProps, IPanelState> implements IPanel {\n public static defaultProps: IPanelProps = {\n isHiddenOnDismiss: false,\n isOpen: undefined,\n isBlocking: true,\n hasCloseButton: true,\n type: PanelType.smallFixedFar,\n };\n\n private _async: Async;\n private _events: EventGroup;\n private _panel = React.createRef<HTMLDivElement>();\n private _classNames: IProcessedStyleSet<IPanelStyles>;\n private _scrollableContent: HTMLDivElement | null;\n private _animationCallback: number | null = null;\n private _hasCustomNavigation: boolean = !!(this.props.onRenderNavigation || this.props.onRenderNavigationContent);\n private _headerTextId: string | undefined;\n private _allowTouchBodyScroll: boolean;\n\n public static getDerivedStateFromProps(\n nextProps: Readonly<IPanelProps>,\n prevState: Readonly<IPanelState>,\n ): Partial<IPanelState> | null {\n if (nextProps.isOpen === undefined) {\n return null; // no state update\n }\n if (\n nextProps.isOpen &&\n (prevState.visibility === PanelVisibilityState.closed ||\n prevState.visibility === PanelVisibilityState.animatingClosed)\n ) {\n return { visibility: PanelVisibilityState.animatingOpen };\n }\n if (\n !nextProps.isOpen &&\n (prevState.visibility === PanelVisibilityState.open ||\n prevState.visibility === PanelVisibilityState.animatingOpen)\n ) {\n return { visibility: PanelVisibilityState.animatingClosed };\n }\n return null;\n }\n\n constructor(props: IPanelProps) {\n super(props);\n\n const { allowTouchBodyScroll = false } = this.props;\n this._allowTouchBodyScroll = allowTouchBodyScroll;\n\n this._async = new Async(this);\n this._events = new EventGroup(this);\n initializeComponentRef(this);\n\n warnDeprecations(COMPONENT_NAME, props, {\n ignoreExternalFocusing: 'focusTrapZoneProps',\n forceFocusInsideTrap: 'focusTrapZoneProps',\n firstFocusableSelector: 'focusTrapZoneProps',\n });\n\n this.state = {\n isFooterSticky: false,\n // intentionally ignore props so animation takes place during componentDidMount\n visibility: PanelVisibilityState.closed,\n id: getId('Panel'),\n };\n }\n\n public componentDidMount(): void {\n this._events.on(window, 'resize', this._updateFooterPosition);\n\n if (this._shouldListenForOuterClick(this.props)) {\n this._events.on(document.body, 'mousedown', this._dismissOnOuterClick, true);\n }\n\n if (this.props.isOpen) {\n this.setState({ visibility: PanelVisibilityState.animatingOpen });\n }\n }\n\n public componentDidUpdate(previousProps: IPanelProps, previousState: IPanelState): void {\n const shouldListenOnOuterClick = this._shouldListenForOuterClick(this.props);\n const previousShouldListenOnOuterClick = this._shouldListenForOuterClick(previousProps);\n\n if (this.state.visibility !== previousState.visibility) {\n this._clearExistingAnimationTimer();\n if (this.state.visibility === PanelVisibilityState.animatingOpen) {\n this._animateTo(PanelVisibilityState.open);\n } else if (this.state.visibility === PanelVisibilityState.animatingClosed) {\n this._animateTo(PanelVisibilityState.closed);\n }\n }\n\n if (shouldListenOnOuterClick && !previousShouldListenOnOuterClick) {\n this._events.on(document.body, 'mousedown', this._dismissOnOuterClick, true);\n } else if (!shouldListenOnOuterClick && previousShouldListenOnOuterClick) {\n this._events.off(document.body, 'mousedown', this._dismissOnOuterClick, true);\n }\n }\n\n public componentWillUnmount(): void {\n this._async.dispose();\n this._events.dispose();\n }\n\n public render(): JSX.Element | null {\n const {\n className = '',\n elementToFocusOnDismiss,\n /* eslint-disable deprecation/deprecation */\n firstFocusableSelector,\n focusTrapZoneProps,\n forceFocusInsideTrap,\n hasCloseButton,\n headerText,\n headerClassName = '',\n ignoreExternalFocusing,\n /* eslint-enable deprecation/deprecation */\n isBlocking,\n isFooterAtBottom,\n isLightDismiss,\n isHiddenOnDismiss,\n layerProps,\n overlayProps,\n popupProps,\n type,\n styles,\n theme,\n customWidth,\n onLightDismissClick = this._onPanelClick,\n onRenderNavigation = this._onRenderNavigation,\n onRenderHeader = this._onRenderHeader,\n onRenderBody = this._onRenderBody,\n onRenderFooter = this._onRenderFooter,\n } = this.props;\n const { isFooterSticky, visibility, id } = this.state;\n const isLeft = type === PanelType.smallFixedNear || type === PanelType.customNear ? true : false;\n const isRTL = getRTL(theme);\n const isOnRightSide = isRTL ? isLeft : !isLeft;\n const customWidthStyles = type === PanelType.custom || type === PanelType.customNear ? { width: customWidth } : {};\n const nativeProps = getNativeProps<React.HTMLAttributes<HTMLDivElement>>(this.props, divProperties);\n const isOpen = this.isActive;\n const isAnimating =\n visibility === PanelVisibilityState.animatingClosed || visibility === PanelVisibilityState.animatingOpen;\n\n this._headerTextId = headerText && id + '-headerText';\n\n if (!isOpen && !isAnimating && !isHiddenOnDismiss) {\n return null;\n }\n\n this._classNames = getClassNames(styles!, {\n theme: theme!,\n className,\n focusTrapZoneClassName: focusTrapZoneProps ? focusTrapZoneProps.className : undefined,\n hasCloseButton,\n headerClassName,\n isAnimating,\n isFooterSticky,\n isFooterAtBottom,\n isOnRightSide,\n isOpen,\n isHiddenOnDismiss,\n type,\n hasCustomNavigation: this._hasCustomNavigation,\n });\n\n const { _classNames, _allowTouchBodyScroll } = this;\n\n let overlay;\n if (isBlocking && isOpen) {\n overlay = (\n <Overlay\n className={_classNames.overlay}\n isDarkThemed={false}\n onClick={isLightDismiss ? onLightDismissClick : undefined}\n allowTouchBodyScroll={_allowTouchBodyScroll}\n {...overlayProps}\n />\n );\n }\n\n return (\n <Layer {...layerProps}>\n <Popup\n role=\"dialog\"\n aria-modal=\"true\"\n ariaLabelledBy={this._headerTextId ? this._headerTextId : undefined}\n onDismiss={this.dismiss}\n className={_classNames.hiddenPanel}\n {...popupProps}\n >\n <div aria-hidden={!isOpen && isAnimating} {...nativeProps} ref={this._panel} className={_classNames.root}>\n {overlay}\n <FocusTrapZone\n ignoreExternalFocusing={ignoreExternalFocusing}\n forceFocusInsideTrap={!isBlocking || (isHiddenOnDismiss && !isOpen) ? false : forceFocusInsideTrap}\n firstFocusableSelector={firstFocusableSelector}\n isClickableOutsideFocusTrap={true}\n {...focusTrapZoneProps}\n className={_classNames.main}\n style={customWidthStyles}\n elementToFocusOnDismiss={elementToFocusOnDismiss}\n >\n <div className={_classNames.commands} data-is-visible={true}>\n {onRenderNavigation(this.props, this._onRenderNavigation)}\n </div>\n <div className={_classNames.contentInner}>\n {(this._hasCustomNavigation || !hasCloseButton) &&\n onRenderHeader(this.props, this._onRenderHeader, this._headerTextId)}\n <div ref={this._allowScrollOnPanel} className={_classNames.scrollableContent} data-is-scrollable={true}>\n {onRenderBody(this.props, this._onRenderBody)}\n </div>\n {onRenderFooter(this.props, this._onRenderFooter)}\n </div>\n </FocusTrapZone>\n </div>\n </Popup>\n </Layer>\n );\n }\n\n public open() {\n if (this.props.isOpen !== undefined) {\n return;\n }\n\n if (this.isActive) {\n return;\n }\n\n this.setState({ visibility: PanelVisibilityState.animatingOpen });\n }\n\n public close() {\n if (this.props.isOpen !== undefined) {\n return;\n }\n\n if (!this.isActive) {\n return;\n }\n\n this.setState({ visibility: PanelVisibilityState.animatingClosed });\n }\n\n public dismiss = (ev?: React.SyntheticEvent<HTMLElement>): void => {\n if (this.props.onDismiss && this.isActive) {\n this.props.onDismiss(ev);\n }\n\n if (!ev || (ev && !ev.defaultPrevented)) {\n this.close();\n }\n };\n\n /** isActive is true when panel is open or opening. */\n public get isActive(): boolean {\n return (\n this.state.visibility === PanelVisibilityState.open ||\n this.state.visibility === PanelVisibilityState.animatingOpen\n );\n }\n\n // Allow the user to scroll within the panel but not on the body\n private _allowScrollOnPanel = (elt: HTMLDivElement | null): void => {\n if (elt) {\n if (this._allowTouchBodyScroll) {\n allowOverscrollOnElement(elt, this._events);\n } else {\n allowScrollOnElement(elt, this._events);\n }\n } else {\n this._events.off(this._scrollableContent);\n }\n this._scrollableContent = elt;\n };\n\n private _shouldListenForOuterClick(props: IPanelProps): boolean {\n return !!props.isBlocking && !!props.isOpen;\n }\n\n private _onRenderNavigation = (props: IPanelProps): JSX.Element | null => {\n if (!this.props.onRenderNavigationContent && !this.props.onRenderNavigation && !this.props.hasCloseButton) {\n return null;\n }\n const { onRenderNavigationContent = this._onRenderNavigationContent } = this.props;\n return (\n <div className={this._classNames.navigation}>\n {onRenderNavigationContent(props, this._onRenderNavigationContent)}\n </div>\n );\n };\n\n private _onRenderNavigationContent = (props: IPanelProps): JSX.Element | null => {\n const { closeButtonAriaLabel, hasCloseButton, onRenderHeader = this._onRenderHeader } = props;\n if (hasCloseButton) {\n const iconButtonStyles = this._classNames.subComponentStyles?.closeButton();\n\n return (\n <>\n {!this._hasCustomNavigation && onRenderHeader(this.props, this._onRenderHeader, this._headerTextId)}\n <IconButton\n styles={iconButtonStyles}\n // eslint-disable-next-line deprecation/deprecation\n className={this._classNames.closeButton}\n onClick={this._onPanelClick}\n ariaLabel={closeButtonAriaLabel}\n title={closeButtonAriaLabel}\n data-is-visible={true}\n iconProps={{ iconName: 'Cancel' }}\n />\n </>\n );\n }\n return null;\n };\n\n private _onRenderHeader = (\n props: IPanelProps,\n defaultRender?: (props?: IPanelProps) => JSX.Element | null,\n headerTextId?: string | undefined,\n ): JSX.Element | null => {\n const { headerText, headerTextProps = {} } = props;\n\n if (headerText) {\n return (\n <div className={this._classNames.header}>\n <div\n id={headerTextId}\n role=\"heading\"\n aria-level={1}\n {...headerTextProps}\n className={css(this._classNames.headerText, headerTextProps.className)}\n >\n {headerText}\n </div>\n </div>\n );\n }\n return null;\n };\n\n private _onRenderBody = (props: IPanelProps): JSX.Element => {\n return <div className={this._classNames.content}>{props.children}</div>;\n };\n\n private _onRenderFooter = (props: IPanelProps): JSX.Element | null => {\n const { onRenderFooterContent = null } = this.props;\n if (onRenderFooterContent) {\n return (\n <div className={this._classNames.footer}>\n <div className={this._classNames.footerInner}>{onRenderFooterContent()}</div>\n </div>\n );\n }\n return null;\n };\n\n private _updateFooterPosition(): void {\n const scrollableContent = this._scrollableContent;\n if (scrollableContent) {\n const height = scrollableContent.clientHeight;\n const innerHeight = scrollableContent.scrollHeight;\n\n this.setState({\n isFooterSticky: height < innerHeight ? true : false,\n });\n }\n }\n\n private _dismissOnOuterClick(ev: React.MouseEvent<HTMLDivElement>): void {\n const panel = this._panel.current;\n if (this.isActive && panel && !ev.defaultPrevented) {\n if (!elementContains(panel, ev.target as HTMLElement)) {\n if (this.props.onOuterClick) {\n this.props.onOuterClick(ev);\n } else {\n this.dismiss(ev);\n }\n }\n }\n }\n\n private _animateTo = (newVisibilityState: PanelVisibilityState): void => {\n if (newVisibilityState === PanelVisibilityState.open && this.props.onOpen) {\n this.props.onOpen();\n }\n\n this._animationCallback = this._async.setTimeout(() => {\n this.setState({ visibility: newVisibilityState });\n this._onTransitionComplete();\n }, 200);\n };\n\n private _clearExistingAnimationTimer = (): void => {\n if (this._animationCallback !== null) {\n this._async.clearTimeout(this._animationCallback);\n }\n };\n\n private _onPanelClick = (ev?: any): void => {\n this.dismiss(ev);\n };\n\n private _onTransitionComplete = (): void => {\n this._updateFooterPosition();\n\n if (this.state.visibility === PanelVisibilityState.open && this.props.onOpened) {\n this.props.onOpened();\n }\n\n if (this.state.visibility === PanelVisibilityState.closed && this.props.onDismissed) {\n this.props.onDismissed();\n }\n };\n}\n","import { IPanelStyleProps, IPanelStyles, PanelType } from './Panel.types';\nimport {\n AnimationClassNames,\n AnimationVariables,\n getGlobalClassNames,\n HighContrastSelector,\n ScreenWidthMinMedium,\n ScreenWidthMinLarge,\n ScreenWidthMinXLarge,\n ScreenWidthMinXXLarge,\n ScreenWidthMinUhfMobile,\n IStyle,\n IconFontSizes,\n} from '../../Styling';\n\nconst GlobalClassNames = {\n root: 'ms-Panel',\n main: 'ms-Panel-main',\n commands: 'ms-Panel-commands',\n contentInner: 'ms-Panel-contentInner',\n scrollableContent: 'ms-Panel-scrollableContent',\n navigation: 'ms-Panel-navigation',\n closeButton: 'ms-Panel-closeButton ms-PanelAction-close',\n header: 'ms-Panel-header',\n headerText: 'ms-Panel-headerText',\n content: 'ms-Panel-content',\n footer: 'ms-Panel-footer',\n footerInner: 'ms-Panel-footerInner',\n isOpen: 'is-open',\n hasCloseButton: 'ms-Panel--hasCloseButton',\n smallFluid: 'ms-Panel--smFluid',\n smallFixedNear: 'ms-Panel--smLeft',\n smallFixedFar: 'ms-Panel--sm',\n medium: 'ms-Panel--md',\n large: 'ms-Panel--lg',\n largeFixed: 'ms-Panel--fixed',\n extraLarge: 'ms-Panel--xl',\n custom: 'ms-Panel--custom',\n customNear: 'ms-Panel--customLeft',\n};\n\nconst panelWidth = {\n full: '100%',\n auto: 'auto',\n xs: 272,\n sm: 340,\n md1: 592,\n md2: 644,\n lg: 940,\n};\n\nconst panelMargin = {\n auto: 'auto',\n none: 0,\n md: 48,\n lg: 428,\n xl: 176,\n};\n\n// Following consts are used below in `getPanelBreakpoints()` function to provide\n// necessary fallbacks for different types of Panel in different breakpoints.\nconst smallPanelSelectors = {\n [`@media (min-width: ${ScreenWidthMinMedium}px)`]: {\n width: panelWidth.sm,\n },\n};\n\nconst mediumPanelSelectors = {\n [`@media (min-width: ${ScreenWidthMinLarge}px)`]: {\n width: panelWidth.md1,\n },\n [`@media (min-width: ${ScreenWidthMinXLarge}px)`]: {\n width: panelWidth.md2,\n },\n};\n\nconst largePanelSelectors = {\n [`@media (min-width: ${ScreenWidthMinUhfMobile}px)`]: {\n left: panelMargin.md,\n width: panelWidth.auto,\n },\n [`@media (min-width: ${ScreenWidthMinXXLarge}px)`]: {\n left: panelMargin.lg,\n },\n};\n\nconst largeFixedPanelSelectors = {\n [`@media (min-width: ${ScreenWidthMinXXLarge}px)`]: {\n left: panelMargin.auto,\n width: panelWidth.lg,\n },\n};\n\nconst extraLargePanelSelectors = {\n [`@media (min-width: ${ScreenWidthMinXXLarge}px)`]: {\n left: panelMargin.xl,\n },\n};\n\n// Make sure Panels have fallbacks to different breakpoints by reusing same selectors.\n// This is done in the effort to follow design redlines.\nconst getPanelBreakpoints = (type: PanelType): { [x: string]: IStyle } | undefined => {\n let selectors;\n\n // Panel types `smallFluid`, `smallFixedNear`, `custom` and `customNear`\n // are not checked in here because they render the same in all the breakpoints\n // and have the checks done separately in the `getStyles` function below.\n switch (type) {\n case PanelType.smallFixedFar:\n selectors = {\n ...smallPanelSelectors,\n };\n break;\n case PanelType.medium:\n selectors = {\n ...smallPanelSelectors,\n ...mediumPanelSelectors,\n };\n break;\n case PanelType.large:\n selectors = {\n ...smallPanelSelectors,\n ...mediumPanelSelectors,\n ...largePanelSelectors,\n };\n break;\n case PanelType.largeFixed:\n selectors = {\n ...smallPanelSelectors,\n ...mediumPanelSelectors,\n ...largePanelSelectors,\n ...largeFixedPanelSelectors,\n };\n break;\n case PanelType.extraLarge:\n selectors = {\n ...smallPanelSelectors,\n ...mediumPanelSelectors,\n ...largePanelSelectors,\n ...extraLargePanelSelectors,\n };\n break;\n default:\n break;\n }\n\n return selectors;\n};\n\nconst commandBarHeight = '44px';\n\nconst sharedPaddingStyles = {\n paddingLeft: '24px',\n paddingRight: '24px',\n};\n\nexport const getStyles = (props: IPanelStyleProps): IPanelStyles => {\n const {\n className,\n focusTrapZoneClassName,\n hasCloseButton,\n headerClassName,\n isAnimating,\n isFooterSticky,\n isFooterAtBottom,\n isOnRightSide,\n isOpen,\n isHiddenOnDismiss,\n hasCustomNavigation,\n theme,\n type = PanelType.smallFixedFar,\n } = props;\n const { effects, fonts, semanticColors } = theme;\n const classNames = getGlobalClassNames(GlobalClassNames, theme);\n const isCustomPanel = type === PanelType.custom || type === PanelType.customNear;\n\n return {\n root: [\n classNames.root,\n theme.fonts.medium,\n isOpen && classNames.isOpen,\n hasCloseButton && classNames.hasCloseButton,\n {\n pointerEvents: 'none',\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n },\n isCustomPanel && isOnRightSide && classNames.custom,\n isCustomPanel && !isOnRightSide && classNames.customNear,\n className,\n ],\n overlay: [\n {\n pointerEvents: 'auto',\n cursor: 'pointer',\n },\n isOpen && isAnimating && AnimationClassNames.fadeIn100,\n !isOpen && isAnimating && AnimationClassNames.fadeOut100,\n ],\n hiddenPanel: [\n !isOpen &&\n !isAnimating &&\n isHiddenOnDismiss && {\n visibility: 'hidden',\n },\n ],\n main: [\n classNames.main,\n {\n backgroundColor: semanticColors.bodyBackground,\n boxShadow: effects.elevation64,\n pointerEvents: 'auto',\n position: 'absolute',\n display: 'flex',\n flexDirection: 'column',\n overflowX: 'hidden',\n overflowY: 'auto',\n WebkitOverflowScrolling: 'touch',\n bottom: 0,\n top: 0,\n // left, right, width are overridden depending on the type of the Panel and the screen breakpoint.\n left: panelMargin.auto,\n right: panelMargin.none,\n width: panelWidth.full,\n selectors: {\n [HighContrastSelector]: {\n borderLeft: `3px solid ${semanticColors.variantBorder}`,\n borderRight: `3px solid ${semanticColors.variantBorder}`,\n },\n ...getPanelBreakpoints(type),\n },\n },\n type === PanelType.smallFluid && {\n left: panelMargin.none,\n },\n type === PanelType.smallFixedNear && {\n left: panelMargin.none,\n right: panelMargin.auto,\n width: panelWidth.xs,\n },\n type === PanelType.customNear && {\n right: 'auto',\n left: 0,\n },\n isCustomPanel && {\n maxWidth: '100vw',\n },\n isOpen && isAnimating && !isOnRightSide && AnimationClassNames.slideRightIn40,\n isOpen && isAnimating && isOnRightSide && AnimationClassNames.slideLeftIn40,\n !isOpen && isAnimating && !isOnRightSide && AnimationClassNames.slideLeftOut40,\n !isOpen && isAnimating && isOnRightSide && AnimationClassNames.slideRightOut40,\n focusTrapZoneClassName,\n ],\n commands: [\n classNames.commands,\n {\n marginTop: 18,\n },\n hasCustomNavigation && {\n marginTop: 'inherit',\n },\n ],\n navigation: [\n classNames.navigation,\n {\n display: 'flex',\n justifyContent: 'flex-end',\n },\n hasCustomNavigation && {\n height: commandBarHeight,\n },\n ],\n contentInner: [\n classNames.contentInner,\n {\n display: 'flex',\n flexDirection: 'column',\n flexGrow: 1,\n overflowY: 'hidden',\n },\n ],\n header: [\n classNames.header,\n sharedPaddingStyles,\n {\n alignSelf: 'flex-start',\n },\n hasCloseButton &&\n !hasCustomNavigation && {\n flexGrow: 1,\n },\n hasCustomNavigation && {\n // Ensure that title doesn't shrink if screen is too small\n flexShrink: 0,\n },\n ],\n headerText: [\n classNames.headerText,\n fonts.xLarge,\n {\n color: semanticColors.bodyText,\n lineHeight: '27px',\n overflowWrap: 'break-word',\n wordWrap: 'break-word',\n wordBreak: 'break-word',\n hyphens: 'auto',\n },\n headerClassName,\n ],\n scrollableContent: [\n classNames.scrollableContent,\n {\n overflowY: 'auto',\n },\n isFooterAtBottom && {\n flexGrow: 1,\n },\n ],\n content: [\n classNames.content,\n sharedPaddingStyles,\n {\n paddingBottom: 20,\n },\n ],\n footer: [\n classNames.footer,\n {\n // Ensure that footer doesn't shrink if screen is too small\n flexShrink: 0,\n borderTop: '1px solid transparent',\n transition: `opacity ${AnimationVariables.durationValue3} ${AnimationVariables.easeFunction2}`,\n },\n isFooterSticky && {\n background: semanticColors.bodyBackground,\n borderTopColor: semanticColors.variantBorder,\n },\n ],\n footerInner: [\n classNames.footerInner,\n sharedPaddingStyles,\n {\n paddingBottom: 16,\n paddingTop: 16,\n },\n ],\n subComponentStyles: {\n closeButton: {\n root: [\n classNames.closeButton,\n {\n marginRight: 14,\n color: theme.palette.neutralSecondary,\n fontSize: IconFontSizes.large,\n },\n hasCustomNavigation && {\n marginRight: 0,\n height: 'auto',\n width: '44px',\n },\n ],\n rootHovered: {\n color: theme.palette.neutralPrimary,\n },\n },\n },\n };\n};\n","import * as React from 'react';\nimport { styled } from '../../Utilities';\nimport { IPanelProps, IPanelStyleProps, IPanelStyles } from './Panel.types';\nimport { PanelBase } from './Panel.base';\nimport { getStyles } from './Panel.styles';\n\n/**\n * Panel description\n */\nexport const Panel: React.FunctionComponent<IPanelProps> = styled<IPanelProps, IPanelStyleProps, IPanelStyles>(\n PanelBase,\n getStyles,\n undefined,\n {\n scope: 'Panel',\n },\n);\n","import * as React from 'react';\nimport {\n classNamesFunction,\n getNativeProps,\n divProperties,\n enableBodyScroll,\n disableBodyScroll,\n initializeComponentRef,\n} from '../../Utilities';\nimport { IOverlayProps, IOverlayStyleProps, IOverlayStyles } from './Overlay.types';\n\nconst getClassNames = classNamesFunction<IOverlayStyleProps, IOverlayStyles>();\n\nexport class OverlayBase extends React.Component<IOverlayProps, {}> {\n private _allowTouchBodyScroll: boolean;\n\n constructor(props: IOverlayProps) {\n super(props);\n\n initializeComponentRef(this);\n const { allowTouchBodyScroll = false } = this.props;\n this._allowTouchBodyScroll = allowTouchBodyScroll;\n }\n\n public componentDidMount(): void {\n !this._allowTouchBodyScroll && disableBodyScroll();\n }\n\n public componentWillUnmount(): void {\n !this._allowTouchBodyScroll && enableBodyScroll();\n }\n\n public render(): JSX.Element {\n const { isDarkThemed: isDark, className, theme, styles } = this.props;\n\n const divProps = getNativeProps<React.HTMLAttributes<HTMLDivElement>>(this.props, divProperties);\n\n const classNames = getClassNames(styles!, {\n theme: theme!,\n className,\n isDark,\n });\n\n return <div {...divProps} className={classNames.root} />;\n }\n}\n","import { IOverlayStyleProps, IOverlayStyles } from './Overlay.types';\nimport { HighContrastSelector, getGlobalClassNames } from '../../Styling';\n\nconst GlobalClassNames = {\n root: 'ms-Overlay',\n rootDark: 'ms-Overlay--dark',\n};\n\nexport const getStyles = (props: IOverlayStyleProps): IOverlayStyles => {\n const { className, theme, isNone, isDark } = props;\n\n const { palette } = theme;\n\n const classNames = getGlobalClassNames(GlobalClassNames, theme);\n\n return {\n root: [\n classNames.root,\n theme.fonts.medium,\n {\n backgroundColor: palette.whiteTranslucent40,\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n position: 'absolute',\n\n selectors: {\n [HighContrastSelector]: {\n border: '1px solid WindowText',\n opacity: 0,\n },\n },\n },\n\n isNone && {\n visibility: 'hidden',\n },\n\n isDark && [\n classNames.rootDark,\n {\n backgroundColor: palette.blackTranslucent40,\n },\n ],\n\n className,\n ],\n };\n};\n","import * as React from 'react';\nimport { styled } from '../../Utilities';\nimport { IOverlayProps, IOverlayStyleProps, IOverlayStyles } from './Overlay.types';\nimport { OverlayBase } from './Overlay.base';\nimport { getStyles } from './Overlay.styles';\n\nexport const Overlay: React.FunctionComponent<IOverlayProps> = styled<\n IOverlayProps,\n IOverlayStyleProps,\n IOverlayStyles\n>(OverlayBase, getStyles, undefined, {\n scope: 'Overlay',\n});\n","import * as React from 'react';\nimport {\n getId,\n classNamesFunction,\n mergeAriaAttributeValues,\n initializeComponentRef,\n warnMutuallyExclusive,\n FocusRects,\n} from '../../Utilities';\nimport { Icon } from '../../Icon';\nimport { ICheckbox, ICheckboxProps, ICheckboxStyleProps, ICheckboxStyles } from './Checkbox.types';\nimport { KeytipData } from '../../KeytipData';\n\nexport interface ICheckboxState {\n /** Is true when Uncontrolled control is checked. */\n isChecked?: boolean;\n isIndeterminate?: boolean;\n}\n\nconst getClassNames = classNamesFunction<ICheckboxStyleProps, ICheckboxStyles>();\n\nexport class CheckboxBase extends React.Component<ICheckboxProps, ICheckboxState> implements ICheckbox {\n public static defaultProps: ICheckboxProps = {\n boxSide: 'start',\n };\n\n private _checkBox = React.createRef<HTMLInputElement>();\n private _id: string;\n private _classNames: { [key in keyof ICheckboxStyles]: string };\n\n public static getDerivedStateFromProps(\n nextProps: Readonly<ICheckboxProps>,\n prevState: Readonly<ICheckboxState>,\n ): ICheckboxState | null {\n const stateUpdate: Partial<ICheckboxState> = {};\n if (nextProps.indeterminate !== undefined) {\n stateUpdate.isIndeterminate = !!nextProps.indeterminate;\n }\n if (nextProps.checked !== undefined) {\n stateUpdate.isChecked = !!nextProps.checked;\n }\n return Object.keys(stateUpdate).length ? stateUpdate : null;\n }\n\n /**\n * Initialize a new instance of the Checkbox\n * @param props - Props for the component\n * @param context - Context or initial state for the base component.\n */\n constructor(props: ICheckboxProps, context?: any) {\n super(props, context);\n\n initializeComponentRef(this);\n\n if (process.env.NODE_ENV !== 'production') {\n warnMutuallyExclusive('Checkbox', props, {\n checked: 'defaultChecked',\n indeterminate: 'defaultIndeterminate',\n });\n }\n\n this._id = this.props.id || getId('checkbox-');\n this.state = {\n isChecked: !!(props.checked !== undefined ? props.checked : props.defaultChecked),\n isIndeterminate: !!(props.indeterminate !== undefined ? props.indeterminate : props.defaultIndeterminate),\n };\n }\n\n /**\n * Render the Checkbox based on passed props\n */\n public render(): JSX.Element {\n const {\n className,\n disabled,\n boxSide,\n theme,\n styles,\n onRenderLabel = this._onRenderLabel,\n keytipProps,\n } = this.props;\n\n const { isChecked, isIndeterminate } = this.state;\n\n this._classNames = getClassNames(styles!, {\n theme: theme!,\n className,\n disabled,\n indeterminate: isIndeterminate,\n checked: isChecked,\n reversed: boxSide !== 'start',\n isUsingCustomLabelRender: onRenderLabel !== this._onRenderLabel,\n });\n\n if (keytipProps) {\n return (\n <KeytipData keytipProps={keytipProps} disabled={disabled}>\n {(keytipAttributes: any): JSX.Element => this._renderContent(isChecked, isIndeterminate, keytipAttributes)}\n </KeytipData>\n );\n }\n\n return this._renderContent(isChecked, isIndeterminate);\n }\n\n public get indeterminate(): boolean {\n return !!this.state.isIndeterminate;\n }\n\n public get checked(): boolean {\n return !!this.state.isChecked;\n }\n\n public focus(): void {\n if (this._checkBox.current) {\n this._checkBox.current.focus();\n }\n }\n\n private _renderContent = (\n checked: boolean | undefined,\n indeterminate: boolean | undefined,\n keytipAttributes: any = {},\n ): JSX.Element => {\n const {\n disabled,\n inputProps,\n name,\n ariaLabel,\n ariaLabelledBy,\n ariaDescribedBy,\n onRenderLabel = this._onRenderLabel,\n checkmarkIconProps,\n ariaPositionInSet,\n ariaSetSize,\n title,\n label,\n } = this.props;\n\n return (\n <div className={this._classNames.root} title={title}>\n <FocusRects />\n <input\n type=\"checkbox\"\n {...inputProps}\n data-ktp-execute-target={keytipAttributes['data-ktp-execute-target']}\n checked={checked}\n disabled={disabled}\n className={this._classNames.input}\n ref={this._checkBox}\n name={name}\n id={this._id}\n title={title}\n onChange={this._onChange}\n onFocus={this._onFocus}\n onBlur={this._onBlur}\n aria-disabled={disabled}\n aria-label={ariaLabel || label}\n aria-labelledby={ariaLabelledBy}\n aria-describedby={mergeAriaAttributeValues(ariaDescribedBy, keytipAttributes['aria-describedby'])}\n aria-posinset={ariaPositionInSet}\n aria-setsize={ariaSetSize}\n aria-checked={indeterminate ? 'mixed' : checked ? 'true' : 'false'}\n />\n <label className={this._classNames.label} htmlFor={this._id}>\n <div className={this._classNames.checkbox} data-ktp-target={keytipAttributes['data-ktp-target']}>\n <Icon iconName=\"CheckMark\" {...checkmarkIconProps} className={this._classNames.checkmark} />\n </div>\n {onRenderLabel(this.props, this._onRenderLabel)}\n </label>\n </div>\n );\n };\n\n private _onFocus = (ev: React.FocusEvent<HTMLElement>): void => {\n const { inputProps } = this.props;\n\n if (inputProps && inputProps.onFocus) {\n inputProps.onFocus(ev);\n }\n };\n\n private _onBlur = (ev: React.FocusEvent<HTMLElement>): void => {\n const { inputProps } = this.props;\n\n if (inputProps && inputProps.onBlur) {\n inputProps.onBlur(ev);\n }\n };\n\n private _onChange = (ev: React.FormEvent<HTMLElement>): void => {\n const { onChange } = this.props;\n const { isChecked, isIndeterminate } = this.state;\n\n if (!isIndeterminate) {\n if (onChange) {\n onChange(ev, !isChecked);\n }\n if (this.props.checked === undefined) {\n this.setState({ isChecked: !isChecked });\n }\n } else {\n // If indeterminate, clicking the checkbox *only* removes the indeterminate state (or if\n // controlled, lets the consumer know to change it by calling onChange). It doesn't\n // change the checked state.\n if (onChange) {\n onChange(ev, isChecked);\n }\n if (this.props.indeterminate === undefined) {\n this.setState({ isIndeterminate: false });\n }\n }\n };\n\n private _onRenderLabel = (props: ICheckboxProps): JSX.Element | null => {\n const { label, title } = props;\n\n return label ? (\n <span aria-hidden=\"true\" className={this._classNames.text} title={title}>\n {label}\n </span>\n ) : null;\n };\n}\n","import { ICheckboxStyleProps, ICheckboxStyles } from './Checkbox.types';\r\nimport { HighContrastSelector, getGlobalClassNames, IStyle, getHighContrastNoAdjustStyle } from '../../Styling';\r\nimport { IsFocusVisibleClassName } from '../../Utilities';\r\n\r\nconst GlobalClassNames = {\r\n root: 'ms-Checkbox',\r\n label: 'ms-Checkbox-label',\r\n checkbox: 'ms-Checkbox-checkbox',\r\n checkmark: 'ms-Checkbox-checkmark',\r\n text: 'ms-Checkbox-text',\r\n};\r\n\r\nconst MS_CHECKBOX_LABEL_SIZE = '20px';\r\nconst MS_CHECKBOX_TRANSITION_DURATION = '200ms';\r\nconst MS_CHECKBOX_TRANSITION_TIMING = 'cubic-bezier(.4, 0, .23, 1)';\r\n\r\nexport const getStyles = (props: ICheckboxStyleProps): ICheckboxStyles => {\r\n const { className, theme, reversed, checked, disabled, isUsingCustomLabelRender, indeterminate } = props;\r\n const { semanticColors, effects, palette, fonts } = theme;\r\n\r\n const classNames = getGlobalClassNames(GlobalClassNames, theme);\r\n\r\n const checkmarkFontColor = semanticColors.inputForegroundChecked;\r\n // TODO: after updating the semanticColors slots mapping this needs to be semanticColors.inputBorder\r\n const checkmarkFontColorHovered = palette.neutralSecondary;\r\n // TODO: after updating the semanticColors slots mapping this needs to be semanticColors.smallInputBorder\r\n const checkboxBorderColor = palette.neutralPrimary;\r\n const checkboxBorderIndeterminateColor = semanticColors.inputBackgroundChecked;\r\n const checkboxBorderColorChecked = semanticColors.inputBackgroundChecked;\r\n const checkboxBorderColorDisabled = semanticColors.disabledBodySubtext;\r\n const checkboxBorderHoveredColor = semanticColors.inputBorderHovered;\r\n const checkboxBorderIndeterminateHoveredColor = semanticColors.inputBackgroundCheckedHovered;\r\n const checkboxBackgroundChecked = semanticColors.inputBackgroundChecked;\r\n // TODO: after updating the semanticColors slots mapping the following 2 tokens need to be\r\n // semanticColors.inputBackgroundCheckedHovered\r\n const checkboxBackgroundCheckedHovered = semanticColors.inputBackgroundCheckedHovered;\r\n const checkboxBorderColorCheckedHovered = semanticColors.inputBackgroundCheckedHovered;\r\n const checkboxHoveredTextColor = semanticColors.inputTextHovered;\r\n const checkboxBackgroundDisabledChecked = semanticColors.disabledBodySubtext;\r\n const checkboxTextColor = semanticColors.bodyText;\r\n const checkboxTextColorDisabled = semanticColors.disabledText;\r\n\r\n const indeterminateDotStyles: IStyle = [\r\n {\r\n content: '\"\"',\r\n borderRadius: effects.roundedCorner2,\r\n position: 'absolute',\r\n width: 10,\r\n height: 10,\r\n top: 4,\r\n left: 4,\r\n boxSizing: 'border-box',\r\n borderWidth: 5,\r\n borderStyle: 'solid',\r\n borderColor: disabled ? checkboxBorderColorDisabled : checkboxBorderIndeterminateColor,\r\n transitionProperty: 'border-width, border, border-color',\r\n transitionDuration: MS_CHECKBOX_TRANSITION_DURATION,\r\n transitionTimingFunction: MS_CHECKBOX_TRANSITION_TIMING,\r\n [HighContrastSelector]: {\r\n borderColor: 'WindowText',\r\n },\r\n },\r\n ];\r\n\r\n return {\r\n root: [\r\n classNames.root,\r\n {\r\n position: 'relative',\r\n display: 'flex',\r\n },\r\n reversed && 'reversed',\r\n checked && 'is-checked',\r\n !disabled && 'is-enabled',\r\n disabled && 'is-disabled',\r\n !disabled && [\r\n !checked && {\r\n [`:hover .${classNames.checkbox}`]: {\r\n borderColor: checkboxBorderHoveredColor,\r\n [HighContrastSelector]: {\r\n borderColor: 'Highlight',\r\n },\r\n },\r\n [`:focus .${classNames.checkbox}`]: { borderColor: checkboxBorderHoveredColor },\r\n [`:hover .${classNames.checkmark}`]: {\r\n color: checkmarkFontColorHovered,\r\n opacity: '1',\r\n [HighContrastSelector]: {\r\n color: 'Highlight',\r\n },\r\n },\r\n },\r\n checked &&\r\n !indeterminate && {\r\n [`:hover .${classNames.checkbox}`]: {\r\n background: checkboxBackgroundCheckedHovered,\r\n borderColor: checkboxBorderColorCheckedHovered,\r\n },\r\n [`:focus .${classNames.checkbox}`]: {\r\n background: checkboxBackgroundCheckedHovered,\r\n borderColor: checkboxBorderColorCheckedHovered,\r\n },\r\n [HighContrastSelector]: {\r\n [`:hover .${classNames.checkbox}`]: {\r\n background: 'Highlight',\r\n borderColor: 'Highlight',\r\n },\r\n [`:focus .${classNames.checkbox}`]: {\r\n background: 'Highlight',\r\n },\r\n [`:focus:hover .${classNames.checkbox}`]: {\r\n background: 'Highlight',\r\n },\r\n [`:focus:hover .${classNames.checkmark}`]: {\r\n color: 'Window',\r\n },\r\n [`:hover .${classNames.checkmark}`]: {\r\n color: 'Window',\r\n },\r\n },\r\n },\r\n indeterminate && {\r\n [`:hover .${classNames.checkbox}, :hover .${classNames.checkbox}:after`]: {\r\n borderColor: checkboxBorderIndeterminateHoveredColor,\r\n [HighContrastSelector]: {\r\n borderColor: 'WindowText',\r\n },\r\n },\r\n [`:focus .${classNames.checkbox}`]: {\r\n borderColor: checkboxBorderIndeterminateHoveredColor,\r\n },\r\n [`:hover .${classNames.checkmark}`]: {\r\n opacity: '0',\r\n },\r\n },\r\n {\r\n [`:hover .${classNames.text}, :focus .${classNames.text}`]: {\r\n color: checkboxHoveredTextColor,\r\n [HighContrastSelector]: {\r\n color: disabled ? 'GrayText' : 'WindowText',\r\n },\r\n },\r\n },\r\n ],\r\n className,\r\n ],\r\n input: {\r\n position: 'absolute',\r\n background: 'none',\r\n\r\n opacity: 0,\r\n [`.${IsFocusVisibleClassName} &:focus + label::before`]: {\r\n outline: '1px solid ' + theme.palette.neutralSecondary,\r\n outlineOffset: '2px',\r\n [HighContrastSelector]: {\r\n outline: '1px solid WindowText',\r\n },\r\n },\r\n },\r\n label: [\r\n classNames.label,\r\n theme.fonts.medium,\r\n {\r\n display: 'flex',\r\n alignItems: isUsingCustomLabelRender ? 'center' : 'flex-start',\r\n cursor: disabled ? 'default' : 'pointer',\r\n position: 'relative',\r\n userSelect: 'none',\r\n },\r\n reversed && {\r\n flexDirection: 'row-reverse',\r\n justifyContent: 'flex-end',\r\n },\r\n {\r\n '&::before': {\r\n position: 'absolute',\r\n left: 0,\r\n right: 0,\r\n top: 0,\r\n bottom: 0,\r\n content: '\"\"',\r\n pointerEvents: 'none',\r\n },\r\n },\r\n ],\r\n checkbox: [\r\n classNames.checkbox,\r\n {\r\n position: 'relative',\r\n display: 'flex',\r\n flexShrink: 0,\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n height: MS_CHECKBOX_LABEL_SIZE,\r\n width: MS_CHECKBOX_LABEL_SIZE,\r\n border: `1px solid ${checkboxBorderColor}`,\r\n borderRadius: effects.roundedCorner2,\r\n boxSizing: 'border-box',\r\n transitionProperty: 'background, border, border-color',\r\n transitionDuration: MS_CHECKBOX_TRANSITION_DURATION,\r\n transitionTimingFunction: MS_CHECKBOX_TRANSITION_TIMING,\r\n\r\n /* in case the icon is bigger than the box */\r\n overflow: 'hidden',\r\n ':after': indeterminate ? indeterminateDotStyles : null,\r\n [HighContrastSelector]: {\r\n borderColor: 'WindowText',\r\n ...getHighContrastNoAdjustStyle(),\r\n },\r\n },\r\n indeterminate && {\r\n borderColor: checkboxBorderIndeterminateColor,\r\n },\r\n !reversed\r\n ? // This margin on the checkbox is for backwards compat. Notably it has the effect where a customRender\r\n // is used, there will be only a 4px margin from checkbox to label. The label by default would have\r\n // another 4px margin for a total of 8px margin between checkbox and label. We don't combine the two\r\n // (and move it into the text) to not incur a breaking change for everyone using custom render atm.\r\n {\r\n marginRight: 4,\r\n }\r\n : {\r\n marginLeft: 4,\r\n },\r\n !disabled &&\r\n !indeterminate &&\r\n checked && {\r\n background: checkboxBackgroundChecked,\r\n borderColor: checkboxBorderColorChecked,\r\n [HighContrastSelector]: {\r\n background: 'Highlight',\r\n borderColor: 'Highlight',\r\n },\r\n },\r\n disabled && {\r\n borderColor: checkboxBorderColorDisabled,\r\n [HighContrastSelector]: {\r\n borderColor: 'GrayText',\r\n },\r\n },\r\n checked &&\r\n disabled && {\r\n background: checkboxBackgroundDisabledChecked,\r\n borderColor: checkboxBorderColorDisabled,\r\n [HighContrastSelector]: {\r\n background: 'Window',\r\n },\r\n },\r\n ],\r\n checkmark: [\r\n classNames.checkmark,\r\n {\r\n opacity: checked ? '1' : '0',\r\n color: checkmarkFontColor,\r\n [HighContrastSelector]: {\r\n color: disabled ? 'GrayText' : 'Window',\r\n ...getHighContrastNoAdjustStyle(),\r\n },\r\n },\r\n ],\r\n text: [\r\n classNames.text,\r\n {\r\n color: disabled ? checkboxTextColorDisabled : checkboxTextColor,\r\n fontSize: fonts.medium.fontSize,\r\n lineHeight: '20px',\r\n [HighContrastSelector]: {\r\n color: disabled ? 'GrayText' : 'WindowText',\r\n ...getHighContrastNoAdjustStyle(),\r\n },\r\n },\r\n !reversed\r\n ? {\r\n marginLeft: 4,\r\n }\r\n : {\r\n marginRight: 4,\r\n },\r\n ],\r\n };\r\n};\r\n","import * as React from 'react';\nimport { styled } from '../../Utilities';\nimport { CheckboxBase } from './Checkbox.base';\nimport { getStyles } from './Checkbox.styles';\nimport { ICheckboxProps, ICheckboxStyleProps, ICheckboxStyles } from './Checkbox.types';\n\nexport const Checkbox: React.FunctionComponent<ICheckboxProps> = styled<\n ICheckboxProps,\n ICheckboxStyleProps,\n ICheckboxStyles\n>(CheckboxBase, getStyles, undefined, { scope: 'Checkbox' });\n","import * as React from 'react';\nimport {\n DelayedRender,\n getId,\n classNamesFunction,\n getNativeProps,\n htmlElementProperties,\n css,\n initializeComponentRef,\n} from '../../Utilities';\nimport { IconButton } from '../../Button';\nimport { Icon } from '../../Icon';\nimport { IMessageBarProps, IMessageBarStyleProps, IMessageBarStyles, MessageBarType } from './MessageBar.types';\n\nconst getClassNames = classNamesFunction<IMessageBarStyleProps, IMessageBarStyles>();\n\nexport interface IMessageBarState {\n labelId?: string;\n showContent?: boolean;\n expandSingleLine?: boolean;\n}\n\nexport class MessageBarBase extends React.Component<IMessageBarProps, IMessageBarState> {\n public static defaultProps: IMessageBarProps = {\n messageBarType: MessageBarType.info,\n onDismiss: undefined,\n isMultiline: true,\n };\n\n private ICON_MAP = {\n [MessageBarType.info]: 'Info',\n [MessageBarType.warning]: 'Info',\n [MessageBarType.error]: 'ErrorBadge',\n [MessageBarType.blocked]: 'Blocked2',\n [MessageBarType.severeWarning]: 'Warning',\n [MessageBarType.success]: 'Completed',\n };\n\n private _classNames: { [key in keyof IMessageBarStyles]: string };\n\n constructor(props: IMessageBarProps) {\n super(props);\n\n initializeComponentRef(this);\n this.state = {\n labelId: getId('MessageBar'),\n // eslint-disable-next-line react/no-unused-state\n showContent: false,\n expandSingleLine: false,\n };\n }\n\n public render(): JSX.Element {\n const { isMultiline } = this.props;\n\n this._classNames = this._getClassNames();\n\n return isMultiline ? this._renderMultiLine() : this._renderSingleLine();\n }\n\n private _getActionsDiv(): JSX.Element | null {\n if (this.props.actions) {\n return <div className={this._classNames.actions}>{this.props.actions}</div>;\n }\n return null;\n }\n\n private _getDismissDiv(): JSX.Element | null {\n const { onDismiss, dismissIconProps } = this.props;\n if (onDismiss) {\n return (\n <IconButton\n disabled={false}\n className={this._classNames.dismissal}\n onClick={onDismiss}\n iconProps={dismissIconProps ? dismissIconProps : { iconName: 'Clear' }}\n title={this.props.dismissButtonAriaLabel}\n ariaLabel={this.props.dismissButtonAriaLabel}\n />\n );\n }\n return null;\n }\n\n private _getDismissSingleLine(): JSX.Element | null {\n if (this.props.onDismiss) {\n return <div className={this._classNames.dismissSingleLine}>{this._getDismissDiv()}</div>;\n }\n return null;\n }\n\n private _getExpandSingleLine(): JSX.Element | null {\n if (!this.props.actions && this.props.truncated) {\n return (\n <div className={this._classNames.expandSingleLine}>\n <IconButton\n disabled={false}\n className={this._classNames.expand}\n onClick={this._onClick}\n iconProps={{ iconName: this.state.expandSingleLine ? 'DoubleChevronUp' : 'DoubleChevronDown' }}\n ariaLabel={this.props.overflowButtonAriaLabel}\n aria-expanded={this.state.expandSingleLine}\n />\n </div>\n );\n }\n return null;\n }\n\n private _getIconSpan(): JSX.Element {\n const { messageBarIconProps } = this.props;\n return (\n <div className={this._classNames.iconContainer} aria-hidden>\n {messageBarIconProps ? (\n <Icon {...messageBarIconProps} className={css(this._classNames.icon, messageBarIconProps.className)} />\n ) : (\n <Icon iconName={this.ICON_MAP[this.props.messageBarType!]} className={this._classNames.icon} />\n )}\n </div>\n );\n }\n\n private _renderMultiLine(): React.ReactElement<React.HTMLAttributes<HTMLAreaElement>> {\n return (\n <div className={this._classNames.root} {...this._getRegionProps()}>\n <div className={this._classNames.content}>\n {this._getIconSpan()}\n {this._renderInnerText()}\n {this._getDismissDiv()}\n </div>\n {this._getActionsDiv()}\n </div>\n );\n }\n\n private _renderSingleLine(): React.ReactElement<React.HTMLAttributes<HTMLAreaElement>> {\n return (\n <div className={this._classNames.root} {...this._getRegionProps()}>\n <div className={this._classNames.content}>\n {this._getIconSpan()}\n {this._renderInnerText()}\n {this._getExpandSingleLine()}\n {this._getActionsDiv()}\n {this._getDismissSingleLine()}\n </div>\n </div>\n );\n }\n\n private _renderInnerText(): JSX.Element {\n const nativeProps = getNativeProps<React.HTMLAttributes<HTMLSpanElement>>(this.props, htmlElementProperties, [\n 'className',\n ]);\n\n return (\n <div\n className={this._classNames.text}\n id={this.state.labelId}\n role=\"status\"\n aria-live={this._getAnnouncementPriority()}\n >\n <span className={this._classNames.innerText} {...nativeProps}>\n <DelayedRender>\n <span>{this.props.children}</span>\n </DelayedRender>\n </span>\n </div>\n );\n }\n\n private _getRegionProps = () => {\n const hasActions = !!this._getActionsDiv() || !!this._getDismissDiv();\n const regionProps = {\n 'aria-describedby': this.state.labelId,\n role: 'region',\n };\n\n return hasActions ? regionProps : {};\n };\n\n private _getClassNames(): { [key in keyof IMessageBarStyles]: string } {\n const { theme, className, messageBarType, onDismiss, actions, truncated, isMultiline } = this.props;\n const { expandSingleLine } = this.state;\n\n return getClassNames(this.props.styles!, {\n theme: theme!,\n messageBarType: messageBarType || MessageBarType.info,\n onDismiss: onDismiss !== undefined,\n actions: actions !== undefined,\n truncated: truncated,\n isMultiline: isMultiline,\n expandSingleLine: expandSingleLine,\n className,\n });\n }\n\n private _getAnnouncementPriority(): 'assertive' | 'polite' {\n switch (this.props.messageBarType) {\n case MessageBarType.blocked:\n case MessageBarType.error:\n case MessageBarType.severeWarning:\n return 'assertive';\n }\n return 'polite';\n }\n\n private _onClick = (ev: React.MouseEvent<HTMLAnchorElement | HTMLButtonElement>) => {\n this.setState({ expandSingleLine: !this.state.expandSingleLine });\n };\n}\n","import {\n IStyle,\n ISemanticColors,\n HighContrastSelector,\n ScreenWidthMaxSmall,\n getScreenSelector,\n getGlobalClassNames,\n getFocusStyle,\n IconFontSizes,\n getHighContrastNoAdjustStyle,\n} from '../../Styling';\nimport { IMessageBarStyleProps, IMessageBarStyles, MessageBarType } from './MessageBar.types';\n\nconst GlobalClassNames = {\n root: 'ms-MessageBar',\n error: 'ms-MessageBar--error',\n blocked: 'ms-MessageBar--blocked',\n severeWarning: 'ms-MessageBar--severeWarning',\n success: 'ms-MessageBar--success',\n warning: 'ms-MessageBar--warning',\n multiline: 'ms-MessageBar-multiline',\n singleline: 'ms-MessageBar-singleline',\n dismissalSingleLine: 'ms-MessageBar-dismissalSingleLine',\n expandingSingleLine: 'ms-MessageBar-expandingSingleLine',\n content: 'ms-MessageBar-content',\n iconContainer: 'ms-MessageBar-icon',\n text: 'ms-MessageBar-text',\n innerText: 'ms-MessageBar-innerText',\n dismissSingleLine: 'ms-MessageBar-dismissSingleLine',\n expandSingleLine: 'ms-MessageBar-expandSingleLine',\n dismissal: 'ms-MessageBar-dismissal',\n expand: 'ms-MessageBar-expand',\n actions: 'ms-MessageBar-actions',\n actionsSingleline: 'ms-MessageBar-actionsSingleLine',\n};\n\nconst backgroundColor: { [key: string]: keyof ISemanticColors } = {\n [MessageBarType.error]: 'errorBackground',\n [MessageBarType.blocked]: 'errorBackground',\n [MessageBarType.success]: 'successBackground',\n [MessageBarType.warning]: 'warningBackground',\n [MessageBarType.severeWarning]: 'severeWarningBackground',\n [MessageBarType.info]: 'infoBackground',\n};\n\nconst highContrastBackgroundColor: { [key: string]: string } = {\n [MessageBarType.error]: 'rgba(255, 0, 0, 0.3)',\n [MessageBarType.blocked]: 'rgba(255, 0, 0, 0.3)',\n [MessageBarType.success]: 'rgba(48, 241, 73, 0.3)',\n [MessageBarType.warning]: 'rgba(255, 254, 57, 0.3)',\n [MessageBarType.severeWarning]: 'rgba(255, 0, 0, 0.3)',\n [MessageBarType.info]: 'Window',\n};\n\nconst iconColor: { [key: string]: keyof ISemanticColors } = {\n [MessageBarType.error]: 'errorIcon',\n [MessageBarType.blocked]: 'errorIcon',\n [MessageBarType.success]: 'successIcon',\n [MessageBarType.warning]: 'warningIcon',\n [MessageBarType.severeWarning]: 'severeWarningIcon',\n [MessageBarType.info]: 'infoIcon',\n};\n\nexport const getStyles = (props: IMessageBarStyleProps): IMessageBarStyles => {\n const {\n theme,\n className,\n onDismiss,\n truncated,\n isMultiline,\n expandSingleLine,\n messageBarType = MessageBarType.info,\n } = props;\n const { semanticColors, fonts } = theme;\n\n const SmallScreenSelector = getScreenSelector(0, ScreenWidthMaxSmall);\n\n const classNames = getGlobalClassNames(GlobalClassNames, theme);\n\n const dismissalAndExpandIconStyle: IStyle = {\n fontSize: IconFontSizes.xSmall,\n height: 10,\n lineHeight: '10px',\n color: semanticColors.messageText,\n selectors: {\n [HighContrastSelector]: {\n ...getHighContrastNoAdjustStyle(),\n color: 'WindowText',\n },\n },\n };\n\n const dismissalAndExpandStyle: IStyle = [\n getFocusStyle(theme, {\n inset: 1,\n highContrastStyle: {\n outlineOffset: '-6px',\n outline: '1px solid Highlight',\n },\n borderColor: 'transparent',\n }),\n {\n flexShrink: 0,\n width: 32,\n height: 32,\n padding: '8px 12px',\n selectors: {\n '& .ms-Button-icon': dismissalAndExpandIconStyle,\n ':hover': {\n backgroundColor: 'transparent',\n },\n ':active': {\n backgroundColor: 'transparent',\n },\n },\n },\n ];\n\n return {\n root: [\n classNames.root,\n fonts.medium,\n messageBarType === MessageBarType.error && classNames.error,\n messageBarType === MessageBarType.blocked && classNames.blocked,\n messageBarType === MessageBarType.severeWarning && classNames.severeWarning,\n messageBarType === MessageBarType.success && classNames.success,\n messageBarType === MessageBarType.warning && classNames.warning,\n isMultiline ? classNames.multiline : classNames.singleline,\n !isMultiline && onDismiss && classNames.dismissalSingleLine,\n !isMultiline && truncated && classNames.expandingSingleLine,\n {\n background: semanticColors[backgroundColor[messageBarType]],\n color: semanticColors.messageText,\n minHeight: 32,\n width: '100%',\n display: 'flex',\n wordBreak: 'break-word',\n selectors: {\n '.ms-Link': {\n color: semanticColors.messageLink,\n selectors: {\n ':hover': {\n color: semanticColors.messageLinkHovered,\n },\n },\n },\n [HighContrastSelector]: {\n ...getHighContrastNoAdjustStyle(),\n background: highContrastBackgroundColor[messageBarType],\n border: '1px solid WindowText',\n color: 'WindowText',\n },\n },\n },\n isMultiline && {\n flexDirection: 'column',\n },\n className,\n ],\n content: [\n classNames.content,\n {\n display: 'flex',\n width: '100%',\n lineHeight: 'normal',\n },\n ],\n iconContainer: [\n classNames.iconContainer,\n {\n fontSize: IconFontSizes.medium,\n minWidth: 16,\n minHeight: 16,\n display: 'flex',\n flexShrink: 0,\n margin: '8px 0 8px 12px',\n },\n ],\n icon: {\n color: semanticColors[iconColor[messageBarType]],\n selectors: {\n [HighContrastSelector]: {\n ...getHighContrastNoAdjustStyle(),\n color: 'WindowText',\n },\n },\n },\n text: [\n classNames.text,\n {\n minWidth: 0,\n display: 'flex',\n flexGrow: 1,\n margin: 8,\n ...fonts.small,\n selectors: {\n [HighContrastSelector]: {\n ...getHighContrastNoAdjustStyle(),\n },\n },\n },\n !onDismiss && {\n marginRight: 12,\n },\n ],\n innerText: [\n classNames.innerText,\n {\n lineHeight: 16,\n selectors: {\n '& span a': {\n paddingLeft: 4,\n },\n },\n },\n truncated && {\n overflow: 'visible',\n whiteSpace: 'pre-wrap',\n },\n !isMultiline && {\n // In high contrast this causes the top and bottom of links' focus outline to be clipped\n // (not sure of a good way around that while still maintaining text clipping)\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n },\n !isMultiline &&\n !truncated && {\n selectors: {\n [SmallScreenSelector]: {\n overflow: 'visible',\n whiteSpace: 'pre-wrap',\n },\n },\n },\n expandSingleLine && {\n overflow: 'visible',\n whiteSpace: 'pre-wrap',\n },\n ],\n dismissSingleLine: classNames.dismissSingleLine,\n expandSingleLine: classNames.expandSingleLine,\n dismissal: [classNames.dismissal, dismissalAndExpandStyle],\n expand: [classNames.expand, dismissalAndExpandStyle],\n actions: [\n isMultiline ? classNames.actions : classNames.actionsSingleline,\n {\n display: 'flex',\n flexGrow: 0,\n flexShrink: 0,\n flexBasis: 'auto',\n flexDirection: 'row-reverse',\n alignItems: 'center',\n margin: '0 12px 0 8px',\n selectors: {\n '& button:nth-child(n+2)': {\n marginLeft: 8,\n },\n },\n },\n isMultiline && {\n marginBottom: 8,\n },\n onDismiss &&\n !isMultiline && {\n marginRight: 0,\n },\n ],\n };\n};\n","import * as React from 'react';\nimport { styled } from '../../Utilities';\nimport { MessageBarBase } from './MessageBar.base';\nimport { getStyles } from './MessageBar.styles';\nimport { IMessageBarProps, IMessageBarStyleProps, IMessageBarStyles } from './MessageBar.types';\n\nexport const MessageBar: React.FunctionComponent<IMessageBarProps> = styled<\n IMessageBarProps,\n IMessageBarStyleProps,\n IMessageBarStyles\n>(MessageBarBase, getStyles, undefined, {\n scope: 'MessageBar',\n});\n","import * as React from 'react';\nimport { classNamesFunction } from '../../Utilities';\nimport { ISeparatorProps, ISeparatorStyles, ISeparatorStyleProps } from './Separator.types';\n\nconst getClassNames = classNamesFunction<ISeparatorStyleProps, ISeparatorStyles>();\n\nexport const SeparatorBase: React.FunctionComponent<ISeparatorProps> = (props: ISeparatorProps): JSX.Element => {\n const { styles, theme, className, vertical, alignContent } = props;\n\n const _classNames = getClassNames(styles!, {\n theme: theme!,\n className,\n alignContent: alignContent,\n vertical: vertical,\n });\n\n return (\n <div className={_classNames.root}>\n <div className={_classNames.content} role=\"separator\" aria-orientation={vertical ? 'vertical' : 'horizontal'}>\n {props.children}\n </div>\n </div>\n );\n};\n","import * as React from 'react';\nimport { styled } from '../../Utilities';\nimport { ISeparatorProps, ISeparatorStyleProps, ISeparatorStyles } from './Separator.types';\nimport { getStyles } from './Separator.styles';\nimport { SeparatorBase } from './Separator.base';\n\nexport const Separator: React.FunctionComponent<ISeparatorProps> = styled<\n ISeparatorProps,\n ISeparatorStyleProps,\n ISeparatorStyles\n>(SeparatorBase, getStyles, undefined, {\n scope: 'Separator',\n});\nSeparator.displayName = 'Separator';\n","import { ISeparatorStyleProps, ISeparatorStyles } from './Separator.types';\nimport { HighContrastSelector } from '@uifabric/styling';\n\nexport const getStyles = (props: ISeparatorStyleProps): ISeparatorStyles => {\n const { theme, alignContent, vertical, className } = props;\n\n const alignStart = alignContent === 'start';\n const alignCenter = alignContent === 'center';\n const alignEnd = alignContent === 'end';\n\n return {\n root: [\n theme.fonts.medium,\n {\n position: 'relative',\n },\n alignContent && {\n textAlign: alignContent,\n },\n !alignContent && {\n textAlign: 'center',\n },\n vertical &&\n (alignCenter || !alignContent) && {\n verticalAlign: 'middle',\n },\n vertical &&\n alignStart && {\n verticalAlign: 'top',\n },\n vertical &&\n alignEnd && {\n verticalAlign: 'bottom',\n },\n vertical && {\n padding: '0 4px',\n height: 'inherit',\n display: 'table-cell',\n zIndex: 1,\n selectors: {\n ':after': {\n backgroundColor: theme.palette.neutralLighter,\n width: '1px',\n content: '\"\"',\n position: 'absolute',\n top: '0',\n bottom: '0',\n left: '50%',\n right: '0',\n zIndex: -1,\n\n [HighContrastSelector]: {\n backgroundColor: 'WindowText',\n },\n },\n },\n },\n !vertical && {\n padding: '4px 0',\n selectors: {\n ':before': {\n backgroundColor: theme.palette.neutralLighter,\n height: '1px',\n content: '\"\"',\n display: 'block',\n position: 'absolute',\n top: '50%',\n bottom: '0',\n left: '0',\n right: '0',\n\n [HighContrastSelector]: {\n backgroundColor: 'WindowText',\n },\n },\n },\n },\n className,\n ],\n content: [\n {\n position: 'relative',\n display: 'inline-block',\n padding: '0 12px',\n color: theme.semanticColors.bodyText,\n background: theme.semanticColors.bodyBackground,\n },\n vertical && {\n padding: '12px 0',\n },\n ],\n };\n};\n","import { getGlobalClassNames, HighContrastSelector, IStyle } from '../../../../Styling';\nimport { IPeoplePickerItemSuggestionStyles, IPeoplePickerItemSuggestionStyleProps } from './PeoplePickerItem.types';\nimport { SuggestionsItemGlobalClassNames as suggested } from '../../Suggestions/SuggestionsItem.styles';\nconst GlobalClassNames = {\n root: 'ms-PeoplePicker-personaContent',\n personaWrapper: 'ms-PeoplePicker-Persona',\n};\n\nexport function getStyles(props: IPeoplePickerItemSuggestionStyleProps): IPeoplePickerItemSuggestionStyles {\n const { className, theme } = props;\n const classNames = getGlobalClassNames(GlobalClassNames, theme);\n\n const textSelectorsStyles: IStyle = {\n selectors: {\n [`.${suggested.isSuggested} &`]: {\n selectors: {\n [HighContrastSelector]: {\n color: 'HighlightText',\n },\n },\n },\n [`.${classNames.root}:hover &`]: {\n selectors: {\n [HighContrastSelector]: {\n color: 'HighlightText',\n },\n },\n },\n },\n };\n\n return {\n root: [\n classNames.root,\n {\n width: '100%',\n padding: '4px 12px',\n },\n className,\n ],\n personaWrapper: [\n classNames.personaWrapper,\n {\n width: 180,\n },\n ],\n subComponentStyles: {\n persona: {\n primaryText: textSelectorsStyles,\n secondaryText: textSelectorsStyles,\n },\n },\n };\n}\n","import * as React from 'react';\n\nimport { classNamesFunction, styled, IStyleFunctionOrObject } from '../../../../Utilities';\nimport { Persona, PersonaSize, IPersonaStyleProps, IPersonaStyles } from '../../../../Persona';\nimport {\n IPeoplePickerItemSuggestionProps,\n IPeoplePickerItemSuggestionStyleProps,\n IPeoplePickerItemSuggestionStyles,\n} from './PeoplePickerItem.types';\nimport { getStyles } from './PeoplePickerItemSuggestion.styles';\n\nconst getClassNames = classNamesFunction<IPeoplePickerItemSuggestionStyleProps, IPeoplePickerItemSuggestionStyles>();\n\nexport const PeoplePickerItemSuggestionBase = (props: IPeoplePickerItemSuggestionProps) => {\n const { personaProps, suggestionsProps, compact, styles, theme, className } = props;\n\n const classNames = getClassNames(styles, {\n theme: theme!,\n className: (suggestionsProps && suggestionsProps.suggestionsItemClassName) || className,\n });\n\n const personaStyles =\n classNames.subComponentStyles && classNames.subComponentStyles.persona\n ? (classNames.subComponentStyles.persona as IStyleFunctionOrObject<IPersonaStyleProps, IPersonaStyles>)\n : undefined;\n\n return (\n <div className={classNames.root}>\n <Persona\n size={PersonaSize.size24}\n styles={personaStyles}\n className={classNames.personaWrapper}\n showSecondaryText={!compact}\n showOverflowTooltip={false}\n {...personaProps}\n />\n </div>\n );\n};\n\nexport const PeoplePickerItemSuggestion = styled<\n IPeoplePickerItemSuggestionProps,\n IPeoplePickerItemSuggestionStyleProps,\n IPeoplePickerItemSuggestionStyles\n>(PeoplePickerItemSuggestionBase, getStyles, undefined, { scope: 'PeoplePickerItemSuggestion' });\n","import * as React from 'react';\n\nimport { getRTL, getInitials, styled } from '../../../Utilities';\nimport { BasePicker, BasePickerListBelow } from '../BasePicker';\nimport {\n IBasePickerProps,\n IBasePickerSuggestionsProps,\n ValidationState,\n IBasePickerStyleProps,\n IBasePickerStyles,\n} from '../BasePicker.types';\nimport { PeoplePickerItem } from './PeoplePickerItems/PeoplePickerItem';\nimport { IPersonaProps } from '../../../Persona';\nimport { PeoplePickerItemSuggestion } from './PeoplePickerItems/PeoplePickerItemSuggestion';\nimport { IPeoplePickerItemSelectedProps } from './PeoplePickerItems/PeoplePickerItem.types';\nimport { getStyles } from '../BasePicker.styles';\n\n/**\n * PeoplePicker props interface which renders Personas as items.\n * {@docCategory PeoplePicker}\n * */\nexport interface IPeoplePickerProps extends IBasePickerProps<IPersonaProps> {}\n\n/**\n * {@docCategory PeoplePicker}\n */\nexport class BasePeoplePicker extends BasePicker<IPersonaProps, IPeoplePickerProps> {}\n\n/**\n * {@docCategory PeoplePicker}\n */\nexport class MemberListPeoplePicker extends BasePickerListBelow<IPersonaProps, IPeoplePickerProps> {}\n\n/**\n * Standard People Picker.\n * {@docCategory PeoplePicker}\n */\nexport class NormalPeoplePickerBase extends BasePeoplePicker {\n /** Default props for NormalPeoplePicker. */\n public static defaultProps = {\n onRenderItem: (props: IPeoplePickerItemSelectedProps) => <PeoplePickerItem {...props} />,\n onRenderSuggestionsItem: (personaProps: IPersonaProps, suggestionsProps?: IBasePickerSuggestionsProps) => (\n <PeoplePickerItemSuggestion personaProps={personaProps} suggestionsProps={suggestionsProps} />\n ),\n createGenericItem: createGenericItem,\n };\n}\n\n/**\n * Compact layout. It uses personas without secondary text when displaying search results.\n * {@docCategory PeoplePicker}\n */\nexport class CompactPeoplePickerBase extends BasePeoplePicker {\n /** Default props for CompactPeoplePicker. */\n public static defaultProps = {\n onRenderItem: (props: IPeoplePickerItemSelectedProps) => <PeoplePickerItem {...props} />,\n onRenderSuggestionsItem: (personaProps: IPersonaProps, suggestionsProps?: IBasePickerSuggestionsProps) => (\n <PeoplePickerItemSuggestion personaProps={personaProps} suggestionsProps={suggestionsProps} compact={true} />\n ),\n createGenericItem: createGenericItem,\n };\n}\n\n/**\n * MemberList layout. The selected people show up below the search box.\n * {@docCategory PeoplePicker}\n */\nexport class ListPeoplePickerBase extends MemberListPeoplePicker {\n /** Default props for ListPeoplePicker. */\n public static defaultProps = {\n onRenderItem: (props: IPeoplePickerItemSelectedProps) => <PeoplePickerItem {...props} />,\n onRenderSuggestionsItem: (personaProps: IPersonaProps, suggestionsProps?: IBasePickerSuggestionsProps) => (\n <PeoplePickerItemSuggestion personaProps={personaProps} suggestionsProps={suggestionsProps} />\n ),\n createGenericItem: createGenericItem,\n };\n}\n\n/**\n * {@docCategory PeoplePicker}\n */\nexport interface IGenericItem {\n primaryText: string;\n imageInitials: string;\n ValidationState: ValidationState;\n}\n\n/**\n * {@docCategory PeoplePicker}\n */\nexport function createGenericItem(\n name: string,\n currentValidationState: ValidationState,\n): IGenericItem & { key: React.Key } {\n const personaToConvert = {\n key: name,\n primaryText: name,\n imageInitials: '!',\n ValidationState: currentValidationState,\n };\n\n if (currentValidationState !== ValidationState.warning) {\n personaToConvert.imageInitials = getInitials(name, getRTL());\n }\n\n return personaToConvert;\n}\n\nexport const NormalPeoplePicker = styled<IPeoplePickerProps, IBasePickerStyleProps, IBasePickerStyles>(\n NormalPeoplePickerBase,\n getStyles,\n undefined,\n {\n scope: 'NormalPeoplePicker',\n },\n);\n\nexport const CompactPeoplePicker = styled<IPeoplePickerProps, IBasePickerStyleProps, IBasePickerStyles>(\n CompactPeoplePickerBase,\n getStyles,\n undefined,\n {\n scope: 'CompactPeoplePicker',\n },\n);\n\nexport const ListPeoplePicker = styled<IPeoplePickerProps, IBasePickerStyleProps, IBasePickerStyles>(\n ListPeoplePickerBase,\n getStyles,\n undefined,\n {\n scope: 'ListPeoplePickerBase',\n },\n);\n","import * as React from 'react';\nimport { classNamesFunction, getId } from '../../Utilities';\nimport {\n IProgressIndicatorProps,\n IProgressIndicatorStyleProps,\n IProgressIndicatorStyles,\n} from './ProgressIndicator.types';\n\nconst getClassNames = classNamesFunction<IProgressIndicatorStyleProps, IProgressIndicatorStyles>();\n\n// if the percentComplete is near 0, don't animate it.\n// This prevents animations on reset to 0 scenarios\nconst ZERO_THRESHOLD = 0.01;\n\n/**\n * ProgressIndicator with no default styles.\n * [Use the `styles` API to add your own styles.](https://github.com/microsoft/fluentui/wiki/Styling)\n */\nexport class ProgressIndicatorBase extends React.Component<IProgressIndicatorProps, {}> {\n public static defaultProps = {\n label: '',\n description: '',\n width: 180,\n };\n\n private _labelId: string;\n private _descriptionId: string;\n\n constructor(props: IProgressIndicatorProps) {\n super(props);\n\n const id = getId('progress-indicator');\n this._labelId = id + '-label';\n this._descriptionId = id + '-description';\n }\n\n public render() {\n const {\n barHeight,\n className,\n // eslint-disable-next-line deprecation/deprecation\n label = this.props.title, // Fall back to deprecated value.\n description,\n styles,\n theme,\n progressHidden,\n onRenderProgress = this._onRenderProgress,\n } = this.props;\n\n const percentComplete =\n typeof this.props.percentComplete === 'number'\n ? Math.min(100, Math.max(0, this.props.percentComplete * 100))\n : undefined;\n\n const classNames = getClassNames(styles, {\n theme: theme!,\n className,\n barHeight,\n indeterminate: percentComplete === undefined ? true : false,\n });\n\n return (\n <div className={classNames.root}>\n {label ? (\n <div id={this._labelId} className={classNames.itemName}>\n {label}\n </div>\n ) : null}\n {!progressHidden\n ? onRenderProgress(\n {\n ...(this.props as IProgressIndicatorProps),\n percentComplete: percentComplete,\n },\n this._onRenderProgress,\n )\n : null}\n {description ? (\n <div id={this._descriptionId} className={classNames.itemDescription}>\n {description}\n </div>\n ) : null}\n </div>\n );\n }\n\n private _onRenderProgress = (props: IProgressIndicatorProps): JSX.Element => {\n // eslint-disable-next-line deprecation/deprecation\n const { ariaValueText, barHeight, className, description, label = this.props.title, styles, theme } = this.props;\n\n const percentComplete =\n typeof this.props.percentComplete === 'number'\n ? Math.min(100, Math.max(0, this.props.percentComplete * 100))\n : undefined;\n\n const classNames = getClassNames(styles, {\n theme: theme!,\n className,\n barHeight,\n indeterminate: percentComplete === undefined ? true : false,\n });\n\n const progressBarStyles = {\n width: percentComplete !== undefined ? percentComplete + '%' : undefined,\n transition: percentComplete !== undefined && percentComplete < ZERO_THRESHOLD ? 'none' : undefined,\n };\n\n const ariaValueMin = percentComplete !== undefined ? 0 : undefined;\n const ariaValueMax = percentComplete !== undefined ? 100 : undefined;\n const ariaValueNow = percentComplete !== undefined ? Math.floor(percentComplete!) : undefined;\n\n return (\n <div className={classNames.itemProgress}>\n <div className={classNames.progressTrack} />\n <div\n className={classNames.progressBar}\n style={progressBarStyles}\n role=\"progressbar\"\n aria-describedby={description ? this._descriptionId : undefined}\n aria-labelledby={label ? this._labelId : undefined}\n aria-valuemin={ariaValueMin}\n aria-valuemax={ariaValueMax}\n aria-valuenow={ariaValueNow}\n aria-valuetext={ariaValueText}\n />\n </div>\n );\n };\n}\n","import {\n HighContrastSelector,\n keyframes,\n noWrap,\n getGlobalClassNames,\n IRawStyle,\n getHighContrastNoAdjustStyle,\n} from '../../Styling';\nimport { getRTL, memoizeFunction } from '../../Utilities';\nimport { IProgressIndicatorStyleProps, IProgressIndicatorStyles } from './ProgressIndicator.types';\n\nconst GlobalClassNames = {\n root: 'ms-ProgressIndicator',\n itemName: 'ms-ProgressIndicator-itemName',\n itemDescription: 'ms-ProgressIndicator-itemDescription',\n itemProgress: 'ms-ProgressIndicator-itemProgress',\n progressTrack: 'ms-ProgressIndicator-progressTrack',\n progressBar: 'ms-ProgressIndicator-progressBar',\n};\n\nconst IndeterminateProgress = memoizeFunction(() =>\n keyframes({\n '0%': {\n left: '-30%',\n },\n '100%': {\n left: '100%',\n },\n }),\n);\n\nconst IndeterminateProgressRTL = memoizeFunction(() =>\n keyframes({\n '100%': {\n right: '-30%',\n },\n '0%': {\n right: '100%',\n },\n }),\n);\n\nexport const getStyles = (props: IProgressIndicatorStyleProps): IProgressIndicatorStyles => {\n const isRTL = getRTL(props.theme);\n const { className, indeterminate, theme, barHeight = 2 } = props;\n\n const { palette, semanticColors, fonts } = theme;\n const classNames = getGlobalClassNames(GlobalClassNames, theme);\n\n const marginBetweenText = 8;\n const textHeight = 18;\n const progressTrackColor = palette.neutralLight;\n\n return {\n root: [classNames.root, fonts.medium, className],\n\n itemName: [\n classNames.itemName,\n noWrap,\n {\n color: semanticColors.bodyText,\n paddingTop: marginBetweenText / 2,\n lineHeight: textHeight + 2,\n },\n ],\n\n itemDescription: [\n classNames.itemDescription,\n {\n color: semanticColors.bodySubtext,\n fontSize: fonts.small.fontSize,\n lineHeight: textHeight,\n },\n ],\n\n itemProgress: [\n classNames.itemProgress,\n {\n position: 'relative',\n overflow: 'hidden',\n height: barHeight,\n padding: `${marginBetweenText}px 0`,\n },\n ],\n\n progressTrack: [\n classNames.progressTrack,\n {\n position: 'absolute',\n width: '100%',\n height: barHeight,\n backgroundColor: progressTrackColor,\n\n selectors: {\n [HighContrastSelector]: {\n borderBottom: '1px solid WindowText',\n },\n },\n },\n ],\n\n progressBar: [\n {\n backgroundColor: palette.themePrimary,\n height: barHeight,\n position: 'absolute',\n transition: 'width .3s ease',\n width: 0,\n\n selectors: {\n [HighContrastSelector]: {\n backgroundColor: 'highlight',\n ...getHighContrastNoAdjustStyle(),\n },\n },\n },\n\n indeterminate\n ? ({\n position: 'absolute',\n minWidth: '33%',\n background:\n `linear-gradient(to right, ${progressTrackColor} 0%, ` +\n `${palette.themePrimary} 50%, ${progressTrackColor} 100%)`,\n animation: `${isRTL ? IndeterminateProgressRTL() : IndeterminateProgress()} 3s infinite`,\n selectors: {\n [HighContrastSelector]: {\n background: `highlight`,\n },\n },\n } as IRawStyle)\n : ({\n transition: 'width .15s linear',\n } as IRawStyle),\n classNames.progressBar,\n ],\n };\n};\n","import * as React from 'react';\nimport { styled } from '../../Utilities';\nimport {\n IProgressIndicatorProps,\n IProgressIndicatorStyleProps,\n IProgressIndicatorStyles,\n} from './ProgressIndicator.types';\nimport { ProgressIndicatorBase } from './ProgressIndicator.base';\nimport { getStyles } from './ProgressIndicator.styles';\n\n/**\n * ProgressIndicator description\n */\nexport const ProgressIndicator: React.FunctionComponent<IProgressIndicatorProps> = styled<\n IProgressIndicatorProps,\n IProgressIndicatorStyleProps,\n IProgressIndicatorStyles\n>(ProgressIndicatorBase, getStyles, undefined, { scope: 'ProgressIndicator' });\n","import * as React from 'react';\nimport { Autofill, IAutofill } from '../Autofill/index';\nimport {\n initializeComponentRef,\n css,\n customizable,\n divProperties,\n findElementRecursive,\n findIndex,\n focusAsync,\n getId,\n getNativeProps,\n isIOS,\n isMac,\n KeyCodes,\n shallowCompare,\n mergeAriaAttributeValues,\n warnMutuallyExclusive,\n Async,\n EventGroup,\n} from '../../Utilities';\nimport { Callout } from '../../Callout';\nimport { Checkbox } from '../../Checkbox';\nimport { CommandButton, IButtonStyles, IconButton } from '../../Button';\nimport { DirectionalHint } from '../../common/DirectionalHint';\nimport { getCaretDownButtonStyles, getOptionStyles, getStyles } from './ComboBox.styles';\nimport { getClassNames, getComboBoxOptionClassNames } from './ComboBox.classNames';\nimport {\n IComboBoxOption,\n IComboBoxOptionStyles,\n IComboBoxProps,\n IOnRenderComboBoxLabelProps,\n IComboBoxClassNames,\n} from './ComboBox.types';\nimport { KeytipData } from '../../KeytipData';\nimport { Label } from '../../Label';\nimport { SelectableOptionMenuItemType, getAllSelectedOptions } from '../../utilities/selectableOption/index';\nimport { BaseButton, Button } from '../Button/index';\nimport { ICalloutProps } from '../../Callout';\n\nexport interface IComboBoxState {\n /** The open state */\n isOpen?: boolean;\n\n /** The currently selected indices */\n selectedIndices?: number[];\n\n /** The focused state of the comboBox */\n focusState?: 'none' | 'focused' | 'focusing';\n\n /** This value is used for the autocomplete hint value */\n suggestedDisplayValue?: string;\n\n /** The options currently available for the callout */\n currentOptions: IComboBoxOption[];\n\n /**\n * When taking input, this will store the index that the options input matches\n * (-1 if no input or match)\n */\n currentPendingValueValidIndex: number;\n\n /**\n * Stores the hovered over value in the dropdown\n * (used for styling the options without updating the input)\n */\n currentPendingValueValidIndexOnHover: number;\n\n /** When taking input, this will store the actual text that is being entered */\n currentPendingValue?: string;\n}\n\nenum SearchDirection {\n backward = -1,\n none = 0,\n forward = 1,\n}\n\nenum HoverStatus {\n /** Used when the user was hovering and has since moused out of the menu items */\n clearAll = -2,\n /** Default \"normal\" state, when no hover has happened or a hover is in progress */\n default = -1,\n}\n\nconst ScrollIdleDelay = 250; /* ms */\nconst TouchIdleDelay = 500; /* ms */\n\n/**\n * This is used to clear any pending autocomplete text (used when autocomplete is true and\n * allowFreeform is false)\n */\nconst ReadOnlyPendingAutoCompleteTimeout = 1000; /* ms */\n\ninterface IComboBoxOptionWrapperProps extends IComboBoxOption {\n /** True if the option is currently selected */\n isSelected: boolean;\n\n /** True if the option is currently checked (multi-select) */\n isChecked: boolean;\n\n /**\n * A function that returns the children of the OptionWrapper. We pass this in as a function to ensure that\n * children methods don't get called unnecessarily if the component doesn't need to be updated. This leads\n * to a significant performance increase in ComboBoxes with many options and/or complex onRenderOption functions\n */\n render: () => JSX.Element;\n}\n\n/**\n * Internal class that is used to wrap all ComboBox options.\n * This is used to customize when we want to rerender components,\n * so we don't rerender every option every time render is executed.\n */\nclass ComboBoxOptionWrapper extends React.Component<IComboBoxOptionWrapperProps, {}> {\n public render(): React.ReactNode {\n return this.props.render();\n }\n\n public shouldComponentUpdate(newProps: IComboBoxOptionWrapperProps): boolean {\n // The render function will always be different, so we ignore that prop\n return !shallowCompare({ ...this.props, render: undefined }, { ...newProps, render: undefined });\n }\n}\n\nconst COMPONENT_NAME = 'ComboBox';\n\n@customizable('ComboBox', ['theme', 'styles'], true)\nexport class ComboBox extends React.Component<IComboBoxProps, IComboBoxState> {\n public static defaultProps: IComboBoxProps = {\n options: [],\n allowFreeform: false,\n autoComplete: 'on',\n buttonIconProps: { iconName: 'ChevronDown' },\n };\n\n private _root = React.createRef<HTMLDivElement>();\n\n /** The input aspect of the comboBox */\n private _autofill = React.createRef<IAutofill>();\n\n /** The wrapping div of the input and button */\n private _comboBoxWrapper = React.createRef<HTMLDivElement>();\n\n /** The callout element */\n private _comboBoxMenu = React.createRef<HTMLDivElement>();\n\n /** The menu item element that is currently selected */\n private _selectedElement = React.createRef<HTMLSpanElement>();\n\n /** The base id for the ComboBox */\n private _id: string;\n\n /**\n * After a character is inserted when autocomplete is true and allowFreeform is false,\n * remember the task that will clear the pending string of characters.\n */\n private _lastReadOnlyAutoCompleteChangeTimeoutId: number | undefined;\n\n /** Promise used when resolving the comboBox options */\n private _currentPromise: PromiseLike<IComboBoxOption[]>;\n\n /** The current visible value sent to the auto fill on render */\n private _currentVisibleValue: string | undefined;\n private _classNames: IComboBoxClassNames;\n private _isScrollIdle: boolean;\n private _hasPendingValue: boolean;\n private _scrollIdleTimeoutId: number | undefined;\n private _processingTouch: boolean;\n private _lastTouchTimeoutId: number | undefined;\n /** True if the most recent keydown event was for alt (option) or meta (command). */\n private _lastKeyDownWasAltOrMeta: boolean | undefined;\n\n /**\n * Determines if we should be setting focus back to the input when the menu closes.\n * The general rule of thumb is if the menu was launched via the keyboard focus should go back\n * to the input, if it was dropped via the mouse focus should not be forced back to the input.\n */\n private _focusInputAfterClose: boolean;\n\n /** Flag for when we get the first mouseMove */\n private _gotMouseMove: boolean;\n\n private _processingClearPendingInfo: boolean;\n\n private _async: Async;\n private _events: EventGroup;\n\n constructor(props: IComboBoxProps) {\n super(props);\n\n initializeComponentRef(this);\n this._async = new Async(this);\n this._events = new EventGroup(this);\n\n warnMutuallyExclusive(COMPONENT_NAME, props, {\n defaultSelectedKey: 'selectedKey',\n text: 'defaultSelectedKey',\n selectedKey: 'value',\n dropdownWidth: 'useComboBoxAsMenuWidth',\n ariaLabel: 'label',\n });\n\n this._id = props.id || getId('ComboBox');\n const selectedKeys: string[] | number[] = this._buildDefaultSelectedKeys(\n props.defaultSelectedKey,\n props.selectedKey,\n );\n\n this._isScrollIdle = true;\n this._processingTouch = false;\n this._gotMouseMove = false;\n this._processingClearPendingInfo = false;\n\n const initialSelectedIndices: number[] = this._getSelectedIndices(props.options, selectedKeys);\n\n this.state = {\n isOpen: false,\n selectedIndices: initialSelectedIndices,\n focusState: 'none',\n suggestedDisplayValue: undefined,\n currentOptions: this.props.options,\n currentPendingValueValidIndex: -1,\n currentPendingValue: undefined,\n currentPendingValueValidIndexOnHover: HoverStatus.default,\n };\n }\n\n /**\n * All selected options\n */\n public get selectedOptions(): IComboBoxOption[] {\n const { currentOptions, selectedIndices } = this.state;\n\n return getAllSelectedOptions(currentOptions, selectedIndices!);\n }\n\n public componentDidMount(): void {\n if (this._comboBoxWrapper.current && !this.props.disabled) {\n // hook up resolving the options if needed on focus\n this._events.on(this._comboBoxWrapper.current, 'focus', this._onResolveOptions, true);\n if ('onpointerdown' in this._comboBoxWrapper.current) {\n // For ComboBoxes, touching anywhere in the combo box should drop the dropdown, including the input element.\n // This gives more hit target space for touch environments. We're setting the onpointerdown here, because React\n // does not support Pointer events yet.\n this._events.on(this._comboBoxWrapper.current, 'pointerdown', this._onPointerDown, true);\n }\n }\n }\n\n public UNSAFE_componentWillReceiveProps(newProps: IComboBoxProps): void {\n // Update the selectedIndex and currentOptions state if\n // the selectedKey, value, or options have changed\n if (\n newProps.selectedKey !== this.props.selectedKey ||\n newProps.text !== this.props.text ||\n newProps.options !== this.props.options\n ) {\n const selectedKeys: string[] | number[] = this._buildSelectedKeys(newProps.selectedKey);\n const indices: number[] = this._getSelectedIndices(newProps.options, selectedKeys);\n\n this.setState({\n selectedIndices: indices,\n currentOptions: newProps.options,\n });\n if (newProps.selectedKey === null) {\n this.setState({\n suggestedDisplayValue: undefined,\n });\n }\n }\n }\n\n public componentDidUpdate(prevProps: IComboBoxProps, prevState: IComboBoxState) {\n const { allowFreeform, text, onMenuOpen, onMenuDismissed } = this.props;\n const { isOpen, selectedIndices, currentPendingValueValidIndex } = this.state;\n\n // If we are newly open or are open and the pending valid index changed,\n // make sure the currently selected/pending option is scrolled into view\n if (isOpen && (!prevState.isOpen || prevState.currentPendingValueValidIndex !== currentPendingValueValidIndex)) {\n // Need this timeout so that the selectedElement ref is correctly updated\n this._async.setTimeout(() => this._scrollIntoView(), 0);\n }\n\n // if an action is taken that put focus in the ComboBox\n // and If we are open or we are just closed, shouldFocusAfterClose is set,\n // but we are not the activeElement set focus on the input\n if (\n this._hasFocus() &&\n (isOpen ||\n (prevState.isOpen &&\n !isOpen &&\n this._focusInputAfterClose &&\n this._autofill.current &&\n document.activeElement !== this._autofill.current.inputElement))\n ) {\n this.focus(undefined /*shouldOpenOnFocus*/, true /*useFocusAsync*/);\n }\n\n // If we should focusAfterClose AND\n // just opened/closed the menu OR\n // are focused AND\n // updated the selectedIndex with the menu closed OR\n // are not allowing freeform OR\n // the value changed\n // we need to set selection\n if (\n this._focusInputAfterClose &&\n ((prevState.isOpen && !isOpen) ||\n (this._hasFocus() &&\n ((!isOpen &&\n !this.props.multiSelect &&\n prevState.selectedIndices &&\n selectedIndices &&\n prevState.selectedIndices[0] !== selectedIndices[0]) ||\n !allowFreeform ||\n text !== prevProps.text)))\n ) {\n this._onFocus();\n }\n\n this._notifyPendingValueChanged(prevState);\n\n if (isOpen && !prevState.isOpen && onMenuOpen) {\n onMenuOpen();\n }\n\n if (!isOpen && prevState.isOpen && onMenuDismissed) {\n onMenuDismissed();\n }\n }\n\n public componentWillUnmount(): void {\n this._async.dispose();\n this._events.dispose();\n }\n\n // Primary Render\n public render(): JSX.Element {\n const id = this._id;\n const errorMessageId = id + '-error';\n const {\n className,\n disabled,\n required,\n errorMessage,\n onRenderContainer = this._onRenderContainer,\n onRenderLabel = this._onRenderLabel,\n onRenderList = this._onRenderList,\n onRenderItem = this._onRenderItem,\n onRenderOption = this._onRenderOptionContent,\n allowFreeform,\n styles: customStyles,\n theme,\n keytipProps,\n persistMenu,\n multiSelect,\n } = this.props;\n const { isOpen, suggestedDisplayValue } = this.state;\n this._currentVisibleValue = this._getVisibleValue();\n\n // Single select is already accessible since the whole text is selected\n // when focus enters the input. Since multiselect appears to clear the input\n // it needs special accessible text\n const multiselectAccessibleText = multiSelect\n ? this._getMultiselectDisplayString(this.state.selectedIndices, this.state.currentOptions, suggestedDisplayValue)\n : undefined;\n\n const divProps = getNativeProps<React.HTMLAttributes<HTMLDivElement>>(this.props, divProperties, [\n 'onChange',\n 'value',\n ]);\n\n const hasErrorMessage = errorMessage && errorMessage.length > 0 ? true : false;\n\n this._classNames = this.props.getClassNames\n ? this.props.getClassNames(\n theme!,\n !!isOpen,\n !!disabled,\n !!required,\n !!this._hasFocus(),\n !!allowFreeform,\n !!hasErrorMessage,\n className,\n )\n : getClassNames(\n getStyles(theme!, customStyles),\n className!,\n !!isOpen,\n !!disabled,\n !!required,\n !!this._hasFocus(),\n !!allowFreeform,\n !!hasErrorMessage,\n );\n\n const comboBoxWrapper = keytipProps ? (\n <KeytipData keytipProps={keytipProps} disabled={disabled}>\n {(keytipAttributes: any): JSX.Element =>\n this._renderComboBoxWrapper(multiselectAccessibleText, errorMessageId, keytipAttributes)\n }\n </KeytipData>\n ) : (\n this._renderComboBoxWrapper(multiselectAccessibleText, errorMessageId)\n );\n\n return (\n <div {...divProps} ref={this._root} className={this._classNames.container}>\n {onRenderLabel({ props: this.props, multiselectAccessibleText }, this._onRenderLabel)}\n {comboBoxWrapper}\n {(persistMenu || isOpen) &&\n onRenderContainer(\n {\n ...this.props,\n onRenderList,\n onRenderItem,\n onRenderOption,\n options: this.state.currentOptions.map((item, index) => ({ ...item, index: index })),\n onDismiss: this._onDismiss,\n },\n this._onRenderContainer,\n )}\n {hasErrorMessage && (\n <div role=\"alert\" id={errorMessageId} className={this._classNames.errorMessage}>\n {errorMessage}\n </div>\n )}\n </div>\n );\n }\n\n /**\n * {@inheritdoc}\n */\n public focus = (shouldOpenOnFocus?: boolean, useFocusAsync?: boolean): void => {\n if (this.props.disabled === true) {\n return;\n }\n\n if (this._autofill.current) {\n if (useFocusAsync) {\n focusAsync(this._autofill.current);\n } else {\n this._autofill.current.focus();\n }\n\n if (shouldOpenOnFocus) {\n this.setState({\n isOpen: true,\n });\n }\n }\n\n // Programatically setting focus means that there is nothing else that needs to be done\n // Focus is now contained\n if (!this._hasFocus()) {\n this.setState({ focusState: 'focused' });\n }\n };\n\n /**\n * Close menu callout if it is open\n */\n public dismissMenu = (): void => {\n const { isOpen } = this.state;\n isOpen && this.setState({ isOpen: false });\n };\n\n /**\n * componentWillReceiveProps handler for the auto fill component\n * Checks/updates the iput value to set, if needed\n * @param defaultVisibleValue - the defaultVisibleValue that got passed\n * in to the auto fill's componentWillReceiveProps\n * @returns - the updated value to set, if needed\n */\n private _onUpdateValueInAutofillWillReceiveProps = (): string | null => {\n const comboBox = this._autofill.current;\n\n if (!comboBox) {\n return null;\n }\n\n if (comboBox.value === null || comboBox.value === undefined) {\n return null;\n }\n\n const visibleValue = this._normalizeToString(this._currentVisibleValue);\n if (comboBox.value !== visibleValue) {\n // If visibleValue is empty, ensure that the empty string is used\n return visibleValue || '';\n }\n\n return comboBox.value;\n };\n\n private _renderComboBoxWrapper = (\n multiselectAccessibleText: string | undefined,\n errorMessageId: string,\n keytipAttributes: any = {},\n ): JSX.Element => {\n const {\n label,\n disabled,\n ariaLabel,\n ariaDescribedBy,\n required,\n errorMessage,\n buttonIconProps,\n isButtonAriaHidden = true,\n title,\n placeholder: placeholderProp,\n tabIndex,\n autofill,\n iconButtonProps,\n } = this.props;\n\n const { isOpen, suggestedDisplayValue } = this.state;\n\n // If the combobox has focus, is multiselect, and has a display string, then use that placeholder\n // so that the selected items don't appear to vanish. This is not ideal but it's the only reasonable way\n // to correct the behavior where the input is cleared so the user can type. If a full refactor is done, then this\n // should be removed and the multiselect combobox should behave like a picker.\n const placeholder =\n this._hasFocus() && this.props.multiSelect && multiselectAccessibleText\n ? multiselectAccessibleText\n : placeholderProp;\n\n return (\n <div\n data-ktp-target={keytipAttributes['data-ktp-target']}\n ref={this._comboBoxWrapper}\n id={this._id + 'wrapper'}\n className={this._classNames.root}\n >\n <Autofill\n data-ktp-execute-target={keytipAttributes['data-ktp-execute-target']}\n data-is-interactable={!disabled}\n componentRef={this._autofill}\n id={this._id + '-input'}\n className={this._classNames.input}\n type=\"text\"\n onFocus={this._onFocus}\n onBlur={this._onBlur}\n onKeyDown={this._onInputKeyDown}\n onKeyUp={this._onInputKeyUp}\n onClick={this._onAutofillClick}\n onTouchStart={this._onTouchStart}\n onInputValueChange={this._onInputChange}\n aria-expanded={isOpen}\n aria-autocomplete={this._getAriaAutoCompleteValue()}\n role=\"combobox\"\n readOnly={disabled}\n aria-labelledby={label && this._id + '-label'}\n aria-label={ariaLabel && !label ? ariaLabel : undefined}\n aria-describedby={\n errorMessage !== undefined\n ? mergeAriaAttributeValues(ariaDescribedBy, keytipAttributes['aria-describedby'], errorMessageId)\n : mergeAriaAttributeValues(ariaDescribedBy, keytipAttributes['aria-describedby'])\n }\n aria-activedescendant={this._getAriaActiveDescendantValue()}\n aria-required={required}\n aria-disabled={disabled}\n aria-owns={isOpen ? this._id + '-list' : undefined}\n spellCheck={false}\n defaultVisibleValue={this._currentVisibleValue}\n suggestedDisplayValue={suggestedDisplayValue}\n updateValueInWillReceiveProps={this._onUpdateValueInAutofillWillReceiveProps}\n shouldSelectFullInputValueInComponentDidUpdate={\n this._onShouldSelectFullInputValueInAutofillComponentDidUpdate\n }\n title={title}\n preventValueSelection={!this._hasFocus()}\n placeholder={placeholder}\n tabIndex={tabIndex}\n {...autofill}\n />\n <IconButton\n className={'ms-ComboBox-CaretDown-button'}\n styles={this._getCaretButtonStyles()}\n role=\"presentation\"\n aria-hidden={isButtonAriaHidden}\n data-is-focusable={false}\n tabIndex={-1}\n onClick={this._onComboBoxClick}\n onBlur={this._onBlur}\n iconProps={buttonIconProps}\n disabled={disabled}\n checked={isOpen}\n {...iconButtonProps}\n />\n </div>\n );\n };\n\n /**\n * componentDidUpdate handler for the auto fill component\n *\n * @param defaultVisibleValue - the current defaultVisibleValue in the auto fill's componentDidUpdate\n * @param suggestedDisplayValue - the current suggestedDisplayValue in the auto fill's componentDidUpdate\n * @returns - should the full value of the input be selected?\n * True if the defaultVisibleValue equals the suggestedDisplayValue, false otherwise\n */\n private _onShouldSelectFullInputValueInAutofillComponentDidUpdate = (): boolean => {\n return this._currentVisibleValue === this.state.suggestedDisplayValue;\n };\n\n /**\n * Get the correct value to pass to the input\n * to show to the user based off of the current props and state\n * @returns the value to pass to the input\n */\n private _getVisibleValue = (): string | undefined => {\n const { text, allowFreeform, autoComplete } = this.props;\n const {\n selectedIndices,\n currentPendingValueValidIndex,\n currentOptions,\n currentPendingValue,\n suggestedDisplayValue,\n isOpen,\n } = this.state;\n\n const currentPendingIndexValid = this._indexWithinBounds(currentOptions, currentPendingValueValidIndex);\n\n // If the user passed is a value prop, use that\n // unless we are open and have a valid current pending index\n if (\n !(isOpen && currentPendingIndexValid) &&\n text &&\n (currentPendingValue === null || currentPendingValue === undefined)\n ) {\n return text;\n }\n\n if (this.props.multiSelect) {\n // Multi-select\n if (this._hasFocus()) {\n let index = -1;\n if (autoComplete === 'on' && currentPendingIndexValid) {\n index = currentPendingValueValidIndex;\n }\n return this._getPendingString(currentPendingValue, currentOptions, index);\n } else {\n return this._getMultiselectDisplayString(selectedIndices, currentOptions, suggestedDisplayValue);\n }\n } else {\n // Single-select\n let index: number = this._getFirstSelectedIndex();\n if (allowFreeform) {\n // If we are allowing freeform and autocomplete is also true\n // and we've got a pending value that matches an option, remember\n // the matched option's index\n if (autoComplete === 'on' && currentPendingIndexValid) {\n index = currentPendingValueValidIndex;\n }\n\n // Since we are allowing freeform, if there is currently a pending value, use that\n // otherwise use the index determined above (falling back to '' if we did not get a valid index)\n return this._getPendingString(currentPendingValue, currentOptions, index);\n } else {\n // If we are not allowing freeform and have a\n // valid index that matches the pending value,\n // we know we will need some version of the pending value\n if (currentPendingIndexValid && autoComplete === 'on') {\n // If autoComplete is on, return the\n // raw pending value, otherwise remember\n // the matched option's index\n index = currentPendingValueValidIndex;\n return this._normalizeToString(currentPendingValue);\n } else if (!this.state.isOpen && currentPendingValue) {\n return this._indexWithinBounds(currentOptions, index)\n ? currentPendingValue\n : this._normalizeToString(suggestedDisplayValue);\n } else {\n return this._indexWithinBounds(currentOptions, index)\n ? currentOptions[index].text\n : this._normalizeToString(suggestedDisplayValue);\n }\n }\n }\n };\n\n private _getPendingString(\n currentPendingValue: string | null | undefined,\n currentOptions: IComboBoxOption[],\n index: number,\n ) {\n return currentPendingValue !== null && currentPendingValue !== undefined\n ? currentPendingValue\n : this._indexWithinBounds(currentOptions, index)\n ? currentOptions[index].text\n : '';\n }\n\n /**\n * Returns a string that concatenates all of the selected values\n * for multiselect combobox.\n */\n private _getMultiselectDisplayString(\n selectedIndices: number[] | undefined,\n currentOptions: IComboBoxOption[],\n suggestedDisplayValue: string | undefined,\n ) {\n const displayValues = [];\n for (let idx = 0; selectedIndices && idx < selectedIndices.length; idx++) {\n const index: number = selectedIndices[idx];\n displayValues.push(\n this._indexWithinBounds(currentOptions, index)\n ? currentOptions[index].text\n : this._normalizeToString(suggestedDisplayValue),\n );\n }\n const { multiSelectDelimiter = ', ' } = this.props;\n return displayValues.join(multiSelectDelimiter);\n }\n\n /**\n * Is the index within the bounds of the array?\n * @param options - options to check if the index is valid for\n * @param index - the index to check\n * @returns - true if the index is valid for the given options, false otherwise\n */\n private _indexWithinBounds(options: IComboBoxOption[] | undefined, index: number): boolean {\n if (!options) {\n return false;\n }\n return index >= 0 && index < options.length;\n }\n\n /**\n * Handler for typing changes on the input\n * @param updatedValue - the newly changed value\n */\n private _onInputChange = (updatedValue: string): void => {\n if (this.props.disabled) {\n this._handleInputWhenDisabled(null /* event */);\n return;\n }\n\n if (this.props.onInputValueChange) {\n this.props.onInputValueChange(updatedValue);\n }\n\n this.props.allowFreeform\n ? this._processInputChangeWithFreeform(updatedValue)\n : this._processInputChangeWithoutFreeform(updatedValue);\n };\n\n /**\n * Process the new input's new value when the comboBox\n * allows freeform entry\n * @param updatedValue - the input's newly changed value\n */\n private _processInputChangeWithFreeform(updatedValue: string): void {\n const { currentOptions } = this.state;\n let newCurrentPendingValueValidIndex = -1;\n\n // if the new value is empty, see if we have an exact match\n // and then set the pending info\n if (updatedValue === '') {\n const items = currentOptions\n .map((item, index) => {\n return { ...item, index };\n })\n .filter(\n option =>\n option.itemType !== SelectableOptionMenuItemType.Header &&\n option.itemType !== SelectableOptionMenuItemType.Divider,\n )\n .filter(option => this._getPreviewText(option) === updatedValue);\n\n // if we found a match remember the index\n if (items.length === 1) {\n newCurrentPendingValueValidIndex = items[0].index;\n }\n\n this._setPendingInfo(updatedValue, newCurrentPendingValueValidIndex, updatedValue);\n return;\n }\n\n // Remember the original value and then,\n // make the value lowercase for comparison\n const originalUpdatedValue: string = updatedValue;\n updatedValue = updatedValue.toLocaleLowerCase();\n\n let newSuggestedDisplayValue = '';\n\n // If autoComplete is on, attempt to find a match from the available options\n if (this.props.autoComplete === 'on') {\n // If autoComplete is on, attempt to find a match where the text of an option starts with the updated value\n const items = currentOptions\n .map((item, index) => {\n return { ...item, index };\n })\n .filter(\n option =>\n option.itemType !== SelectableOptionMenuItemType.Header &&\n option.itemType !== SelectableOptionMenuItemType.Divider,\n )\n .filter(\n option =>\n this._getPreviewText(option)\n .toLocaleLowerCase()\n .indexOf(updatedValue) === 0,\n );\n if (items.length > 0) {\n // use ariaLabel as the value when the option is set\n const text: string = this._getPreviewText(items[0]);\n\n // If the user typed out the complete option text, we don't need any suggested display text anymore\n newSuggestedDisplayValue = text.toLocaleLowerCase() !== updatedValue ? text : '';\n\n // remember the index of the match we found\n newCurrentPendingValueValidIndex = items[0].index;\n }\n } else {\n // If autoComplete is off, attempt to find a match only when the value is exactly equal to the text of an option\n const items = currentOptions\n .map((item, index) => {\n return { ...item, index };\n })\n .filter(\n option =>\n option.itemType !== SelectableOptionMenuItemType.Header &&\n option.itemType !== SelectableOptionMenuItemType.Divider,\n )\n .filter(option => this._getPreviewText(option).toLocaleLowerCase() === updatedValue);\n\n // if we found a match remember the index\n if (items.length === 1) {\n newCurrentPendingValueValidIndex = items[0].index;\n }\n }\n\n // Set the updated state\n this._setPendingInfo(originalUpdatedValue, newCurrentPendingValueValidIndex, newSuggestedDisplayValue);\n }\n\n /**\n * Process the new input's new value when the comboBox\n * does not allow freeform entry\n * @param updatedValue - the input's newly changed value\n */\n private _processInputChangeWithoutFreeform(updatedValue: string): void {\n const { currentPendingValue, currentPendingValueValidIndex, currentOptions } = this.state;\n\n if (this.props.autoComplete === 'on') {\n // If autoComplete is on while allow freeform is off,\n // we will remember the keypresses and build up a string to attempt to match\n // as long as characters are typed within a the timeout span of each other,\n // otherwise we will clear the string and start building a new one on the next keypress.\n // Also, only do this processing if we have a non-empty value\n if (updatedValue !== '') {\n // If we have a pending autocomplete clearing task,\n // we know that the user is typing with keypresses happening\n // within the timeout of each other so remove the clearing task\n // and continue building the pending value with the udpated value\n if (this._lastReadOnlyAutoCompleteChangeTimeoutId !== undefined) {\n this._async.clearTimeout(this._lastReadOnlyAutoCompleteChangeTimeoutId);\n this._lastReadOnlyAutoCompleteChangeTimeoutId = undefined;\n updatedValue = this._normalizeToString(currentPendingValue) + updatedValue;\n }\n\n const originalUpdatedValue: string = updatedValue;\n updatedValue = updatedValue.toLocaleLowerCase();\n\n // If autoComplete is on, attempt to find a match where the text of an option starts with the updated value\n const items = currentOptions\n .map((item, i) => {\n return { ...item, index: i };\n })\n .filter(\n option =>\n option.itemType !== SelectableOptionMenuItemType.Header &&\n option.itemType !== SelectableOptionMenuItemType.Divider,\n )\n .filter(option => option.text.toLocaleLowerCase().indexOf(updatedValue) === 0);\n\n // If we found a match, udpdate the state\n if (items.length > 0) {\n this._setPendingInfo(originalUpdatedValue, items[0].index, this._getPreviewText(items[0]));\n }\n\n // Schedule a timeout to clear the pending value after the timeout span\n this._lastReadOnlyAutoCompleteChangeTimeoutId = this._async.setTimeout(() => {\n this._lastReadOnlyAutoCompleteChangeTimeoutId = undefined;\n }, ReadOnlyPendingAutoCompleteTimeout);\n return;\n }\n }\n\n // If we get here, either autoComplete is on or we did not find a match with autoComplete on.\n // Remember we are not allowing freeform, so at this point, if we have a pending valid value index\n // use that; otherwise use the selectedIndex\n const index = currentPendingValueValidIndex >= 0 ? currentPendingValueValidIndex : this._getFirstSelectedIndex();\n\n // Since we are not allowing freeform, we need to\n // set both the pending and suggested values/index\n // to allow us to select all content in the input to\n // give the illusion that we are readonly (e.g. freeform off)\n this._setPendingInfoFromIndex(index);\n }\n\n private _getFirstSelectedIndex(): number {\n return this.state.selectedIndices && this.state.selectedIndices.length > 0 ? this.state.selectedIndices[0] : -1;\n }\n\n /**\n * Walk along the options starting at the index, stepping by the delta (positive or negative)\n * looking for the next valid selectable index (e.g. skipping headings and dividers)\n * @param index - the index to get the next selectable index from\n * @param delta - optional delta to step by when finding the next index, defaults to 0\n * @returns - the next valid selectable index. If the new index is outside of the bounds,\n * it will snap to the edge of the options array. If delta == 0 and the given index is not selectable\n */\n private _getNextSelectableIndex(index: number, searchDirection: SearchDirection): number {\n const { currentOptions } = this.state;\n\n let newIndex = index + searchDirection;\n\n newIndex = Math.max(0, Math.min(currentOptions.length - 1, newIndex));\n\n if (!this._indexWithinBounds(currentOptions, newIndex)) {\n return -1;\n }\n\n const option: IComboBoxOption = currentOptions[newIndex];\n\n if (\n option.itemType === SelectableOptionMenuItemType.Header ||\n option.itemType === SelectableOptionMenuItemType.Divider ||\n option.hidden === true\n ) {\n // Should we continue looking for an index to select?\n if (\n searchDirection !== SearchDirection.none &&\n ((newIndex > 0 && searchDirection < SearchDirection.none) ||\n (newIndex >= 0 && newIndex < currentOptions.length && searchDirection > SearchDirection.none))\n ) {\n newIndex = this._getNextSelectableIndex(newIndex, searchDirection);\n } else {\n // If we cannot perform a useful search just return the index we were given\n return index;\n }\n }\n\n // We have the next valid selectable index, return it\n return newIndex;\n }\n\n /**\n * Set the selected index. Note, this is\n * the \"real\" selected index, not the pending selected index\n * @param index - the index to set (or the index to set from if a search direction is provided)\n * @param searchDirection - the direction to search along the options from the given index\n */\n private _setSelectedIndex(\n index: number,\n submitPendingValueEvent: React.SyntheticEvent<any>,\n searchDirection: SearchDirection = SearchDirection.none,\n ): void {\n const { onChange, onPendingValueChanged } = this.props;\n const { currentOptions } = this.state;\n const { selectedIndices: initialIndices } = this.state;\n\n // Clone selectedIndices so we don't mutate state\n let selectedIndices = initialIndices ? initialIndices.slice() : [];\n\n // Find the next selectable index, if searchDirection is none\n // we will get our starting index back\n index = this._getNextSelectableIndex(index, searchDirection);\n\n if (!this._indexWithinBounds(currentOptions, index)) {\n return;\n }\n\n // Are we at a new index? If so, update the state, otherwise\n // there is nothing to do\n if (\n this.props.multiSelect ||\n selectedIndices.length < 1 ||\n (selectedIndices.length === 1 && selectedIndices[0] !== index)\n ) {\n const option: IComboBoxOption = { ...currentOptions[index] };\n // if option doesn't existing, or option is disabled, we noop\n if (!option || option.disabled) {\n return;\n }\n if (this.props.multiSelect) {\n // Setting the initial state of option.selected in Multi-select combobox by checking the\n // selectedIndices array and overriding the undefined issue\n option.selected = option.selected !== undefined ? !option.selected : selectedIndices.indexOf(index) < 0;\n if (option.selected && selectedIndices.indexOf(index) < 0) {\n selectedIndices.push(index);\n } else if (!option.selected && selectedIndices.indexOf(index) >= 0) {\n selectedIndices = selectedIndices.filter((value: number) => value !== index);\n }\n } else {\n selectedIndices[0] = index;\n }\n\n submitPendingValueEvent.persist();\n\n // Only setstate if combobox is uncontrolled.\n if (this.props.selectedKey || this.props.selectedKey === null) {\n // If ComboBox value is changed, revert preview first\n if (this._hasPendingValue && onPendingValueChanged) {\n onPendingValueChanged();\n this._hasPendingValue = false;\n }\n if (onChange) {\n onChange(submitPendingValueEvent, option, index, undefined);\n }\n } else {\n // Update current options\n const changedOptions = currentOptions.slice();\n changedOptions[index] = option;\n\n // Call onChange after state is updated\n this.setState(\n {\n selectedIndices: selectedIndices,\n currentOptions: changedOptions,\n },\n () => {\n // If ComboBox value is changed, revert preview first\n if (this._hasPendingValue && onPendingValueChanged) {\n onPendingValueChanged();\n this._hasPendingValue = false;\n }\n\n if (onChange) {\n onChange(submitPendingValueEvent, option, index, undefined);\n }\n },\n );\n }\n }\n if (this.props.multiSelect && this.state.isOpen) {\n return;\n }\n // clear all of the pending info\n this._clearPendingInfo();\n }\n\n /**\n * Focus (and select) the content of the input\n * and set the focused state\n */\n private _onFocus = (): void => {\n if (this._autofill.current && this._autofill.current.inputElement) {\n this._autofill.current.inputElement.select();\n }\n\n if (!this._hasFocus()) {\n this.setState({ focusState: 'focusing' });\n }\n };\n\n /**\n * Callback issued when the options should be resolved, if they have been updated or\n * if they need to be passed in the first time. This only does work if an onResolveOptions\n * callback was passed in\n */\n private _onResolveOptions = (): void => {\n if (this.props.onResolveOptions) {\n // get the options\n const newOptions = this.props.onResolveOptions([...this.state.currentOptions]);\n\n // Check to see if the returned value is an array, if it is update the state\n // If the returned value is not an array then check to see if it's a promise or PromiseLike.\n // If it is then resolve it asynchronously.\n if (Array.isArray(newOptions)) {\n this.setState({\n currentOptions: newOptions,\n });\n } else if (newOptions && newOptions.then) {\n // Ensure that the promise will only use the callback if it was the most recent one\n // and update the state when the promise returns\n const promise: PromiseLike<IComboBoxOption[]> = (this._currentPromise = newOptions);\n promise.then((newOptionsFromPromise: IComboBoxOption[]) => {\n if (promise === this._currentPromise) {\n this.setState({\n currentOptions: newOptionsFromPromise,\n });\n }\n });\n }\n }\n };\n\n /**\n * OnBlur handler. Set the focused state to false\n * and submit any pending value\n */\n // eslint-disable-next-line deprecation/deprecation\n private _onBlur = (event: React.FocusEvent<HTMLElement | Autofill | BaseButton | Button>): void => {\n // Do nothing if the blur is coming from something\n // inside the comboBox root or the comboBox menu since\n // it we are not really bluring from the whole comboBox\n let relatedTarget = event.relatedTarget;\n if (event.relatedTarget === null) {\n // In IE11, due to lack of support, event.relatedTarget is always\n // null making every onBlur call to be \"outside\" of the ComboBox\n // even when it's not. Using document.activeElement is another way\n // for us to be able to get what the relatedTarget without relying\n // on the event\n relatedTarget = document.activeElement as Element;\n }\n if (\n relatedTarget &&\n // when event coming from withing the comboBox title\n ((this._root.current && this._root.current.contains(relatedTarget as HTMLElement)) ||\n // when event coming from within the comboBox list menu\n (this._comboBoxMenu.current &&\n (this._comboBoxMenu.current.contains(relatedTarget as HTMLElement) ||\n // when event coming from the callout containing the comboBox list menu (ex: when scrollBar of the\n // Callout is clicked) checks if the relatedTarget is a parent of _comboBoxMenu\n findElementRecursive(this._comboBoxMenu.current, element => element === relatedTarget))))\n ) {\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n\n if (this._hasFocus()) {\n this.setState({ focusState: 'none' });\n if (!this.props.multiSelect || this.props.allowFreeform) {\n this._submitPendingValue(event);\n }\n }\n };\n\n /**\n * Submit a pending value if there is one\n */\n private _submitPendingValue(submitPendingValueEvent: any): void {\n const { onChange, allowFreeform, autoComplete } = this.props;\n const {\n currentPendingValue,\n currentPendingValueValidIndex,\n currentOptions,\n currentPendingValueValidIndexOnHover,\n } = this.state;\n let { selectedIndices } = this.state;\n\n // Do not submit any pending value if we\n // have already initiated clearing the pending info\n if (this._processingClearPendingInfo) {\n return;\n }\n\n // If we allow freeform we need to handle that\n if (allowFreeform) {\n // if currentPendingValue is null or undefined the user did not submit anything\n // (not even empty because we would have stored that as the pending value)\n if (currentPendingValue === null || currentPendingValue === undefined) {\n // if a user did not type anything they may just hovered over an item\n if (currentPendingValueValidIndexOnHover >= 0) {\n this._setSelectedIndex(currentPendingValueValidIndexOnHover, submitPendingValueEvent);\n this._clearPendingInfo();\n }\n\n return;\n }\n\n // Check to see if the user typed an exact match\n if (this._indexWithinBounds(currentOptions, currentPendingValueValidIndex)) {\n const pendingOptionText: string = this._getPreviewText(\n currentOptions[currentPendingValueValidIndex],\n ).toLocaleLowerCase();\n\n // By exact match, that means: our pending value is the same as the pending option text OR\n // the pending option starts with the pending value and we have an \"autoComplete\" selection\n // where the total length is equal to pending option length OR\n // the live value in the underlying input matches the pending option; update the state\n if (\n currentPendingValue.toLocaleLowerCase() === pendingOptionText ||\n (autoComplete &&\n pendingOptionText.indexOf(currentPendingValue.toLocaleLowerCase()) === 0 &&\n this._autofill.current &&\n this._autofill.current.isValueSelected &&\n currentPendingValue.length +\n (this._autofill.current.selectionEnd! - this._autofill.current.selectionStart!) ===\n pendingOptionText.length) ||\n (this._autofill.current &&\n this._autofill.current.inputElement &&\n this._autofill.current.inputElement.value.toLocaleLowerCase() === pendingOptionText)\n ) {\n this._setSelectedIndex(currentPendingValueValidIndex, submitPendingValueEvent);\n if (this.props.multiSelect && this.state.isOpen) {\n return;\n }\n this._clearPendingInfo();\n return;\n }\n }\n\n if (onChange) {\n if (onChange) {\n // trigger onChange to clear value\n onChange(submitPendingValueEvent, undefined, undefined, currentPendingValue);\n }\n } else {\n // If we are not controlled, create a new selected option\n const newOption: IComboBoxOption = {\n key: currentPendingValue || getId(),\n text: this._normalizeToString(currentPendingValue),\n };\n // If it's multiselect, set selected state to true\n if (this.props.multiSelect) {\n newOption.selected = true;\n }\n const newOptions: IComboBoxOption[] = currentOptions.concat([newOption]);\n if (selectedIndices) {\n if (!this.props.multiSelect) {\n selectedIndices = [];\n }\n selectedIndices.push(newOptions.length - 1);\n }\n this.setState({\n currentOptions: newOptions,\n selectedIndices: selectedIndices,\n });\n }\n } else if (currentPendingValueValidIndex >= 0) {\n // Since we are not allowing freeform, we must have a matching\n // to be able to update state\n this._setSelectedIndex(currentPendingValueValidIndex, submitPendingValueEvent);\n } else if (currentPendingValueValidIndexOnHover >= 0) {\n // If all else failed and we were hovering over an item, select it\n this._setSelectedIndex(currentPendingValueValidIndexOnHover, submitPendingValueEvent);\n }\n\n // Finally, clear the pending info\n this._clearPendingInfo();\n }\n\n // Render Callout container and pass in list\n private _onRenderContainer = (props: IComboBoxProps): JSX.Element => {\n const {\n onRenderList,\n calloutProps,\n dropdownWidth,\n dropdownMaxWidth,\n onRenderUpperContent = this._onRenderUpperContent,\n onRenderLowerContent = this._onRenderLowerContent,\n useComboBoxAsMenuWidth,\n persistMenu,\n shouldRestoreFocus = true,\n } = props;\n\n const { isOpen } = this.state;\n const id = this._id;\n\n const comboBoxMenuWidth =\n useComboBoxAsMenuWidth && this._comboBoxWrapper.current\n ? this._comboBoxWrapper.current.clientWidth + 2\n : undefined;\n\n return (\n <Callout\n isBeakVisible={false}\n gapSpace={0}\n doNotLayer={false}\n directionalHint={DirectionalHint.bottomLeftEdge}\n directionalHintFixed={false}\n {...calloutProps}\n onLayerMounted={this._onLayerMounted}\n className={css(this._classNames.callout, calloutProps ? calloutProps.className : undefined)}\n target={this._comboBoxWrapper.current}\n onDismiss={this._onDismiss}\n onMouseDown={this._onCalloutMouseDown}\n onScroll={this._onScroll}\n setInitialFocus={false}\n calloutWidth={\n useComboBoxAsMenuWidth && this._comboBoxWrapper.current\n ? comboBoxMenuWidth && comboBoxMenuWidth\n : dropdownWidth\n }\n calloutMaxWidth={dropdownMaxWidth ? dropdownMaxWidth : comboBoxMenuWidth}\n hidden={persistMenu ? !isOpen : undefined}\n shouldRestoreFocus={shouldRestoreFocus}\n >\n {onRenderUpperContent(this.props, this._onRenderUpperContent)}\n <div className={this._classNames.optionsContainerWrapper} ref={this._comboBoxMenu}>\n {(onRenderList as any)({ ...props, id }, this._onRenderList)}\n </div>\n {onRenderLowerContent(this.props, this._onRenderLowerContent)}\n </Callout>\n );\n };\n\n private _onCalloutLayerMounted() {\n // In persistMenu mode _onLayerMounted is only called once for the lifetime\n // of the component. Any functionality required for callout \"on mount\" can\n // go here so that we can also call it again during callout dismissal to reset\n // object state.\n this._gotMouseMove = false;\n }\n\n private _onLayerMounted = () => {\n this._onCalloutLayerMounted();\n\n if (this.props.calloutProps && this.props.calloutProps.onLayerMounted) {\n this.props.calloutProps.onLayerMounted();\n }\n };\n\n private _onRenderLabel = (onRenderLabelProps: IOnRenderComboBoxLabelProps): JSX.Element | null => {\n const { label, disabled, required } = onRenderLabelProps.props;\n\n if (label) {\n return (\n <Label id={this._id + '-label'} disabled={disabled} required={required} className={this._classNames.label}>\n {label}\n {onRenderLabelProps.multiselectAccessibleText && (\n <span className={this._classNames.screenReaderText}>{onRenderLabelProps.multiselectAccessibleText}</span>\n )}\n </Label>\n );\n }\n\n return null;\n };\n\n // Render List of items\n private _onRenderList = (props: IComboBoxProps): JSX.Element => {\n const { onRenderItem = this._onRenderItem, label, ariaLabel } = props;\n\n let queue: { id?: string; items: JSX.Element[] } = { items: [] };\n let renderedList: JSX.Element[] = [];\n let id = this._id;\n\n const emptyQueue = (): void => {\n const newGroup = queue.id\n ? [\n <div role=\"group\" key={queue.id} aria-labelledby={queue.id}>\n {queue.items}\n </div>,\n ]\n : queue.items;\n\n renderedList = [...renderedList, ...newGroup];\n // Flush items and id\n queue = { items: [] };\n };\n\n const placeRenderedOptionIntoQueue = (item: IComboBoxOption, index: number) => {\n /*\n Case Header\n empty queue if it's not already empty\n ensure unique ID for header and set queue ID\n push header into queue\n Case Divider\n push divider into queue if not first item\n empty queue if not already empty\n Default\n push item into queue\n */\n switch (item.itemType) {\n case SelectableOptionMenuItemType.Header:\n queue.items.length > 0 && emptyQueue();\n\n id = id + item.key;\n queue.items.push(onRenderItem({ id, ...item, index }, this._onRenderItem)!);\n queue.id = id;\n break;\n case SelectableOptionMenuItemType.Divider:\n index > 0 && queue.items.push(onRenderItem({ ...item, index }, this._onRenderItem)!);\n\n queue.items.length > 0 && emptyQueue();\n break;\n default:\n queue.items.push(onRenderItem({ ...item, index }, this._onRenderItem)!);\n }\n };\n\n // Place options into the queue. Queue will be emptied anytime a Header or Divider is encountered\n props.options.forEach((item: IComboBoxOption, index: number) => {\n placeRenderedOptionIntoQueue(item, index);\n });\n\n // Push remaining items into all renderedList\n queue.items.length > 0 && emptyQueue();\n\n return (\n <div\n id={id + '-list'}\n className={this._classNames.optionsContainer}\n aria-labelledby={label && id + '-label'}\n aria-label={ariaLabel && !label ? ariaLabel : undefined}\n role=\"listbox\"\n >\n {renderedList}\n </div>\n );\n };\n\n // Render items\n private _onRenderItem = (item: IComboBoxOption): JSX.Element | null => {\n switch (item.itemType) {\n case SelectableOptionMenuItemType.Divider:\n return this._renderSeparator(item);\n case SelectableOptionMenuItemType.Header:\n return this._renderHeader(item);\n default:\n return this._renderOption(item);\n }\n };\n\n // Default _onRenderLowerContent function returns nothing\n private _onRenderLowerContent = (): null => {\n return null;\n };\n\n // Default _onRenderUpperContent function returns nothing\n private _onRenderUpperContent = (): null => {\n return null;\n };\n\n // Render separator\n private _renderSeparator(item: IComboBoxOption): JSX.Element | null {\n const { index, key } = item;\n\n if (index && index > 0) {\n return <div role=\"separator\" key={key} className={this._classNames.divider} />;\n }\n return null;\n }\n\n private _renderHeader(item: IComboBoxOption): JSX.Element {\n const { onRenderOption = this._onRenderOptionContent } = this.props;\n\n return (\n <div id={item.id} key={item.key} className={this._classNames.header}>\n {onRenderOption(item, this._onRenderOptionContent)}\n </div>\n );\n }\n\n private _renderOption = (item: IComboBoxOption): JSX.Element => {\n const { onRenderOption = this._onRenderOptionContent } = this.props;\n const id = this._id;\n const isSelected: boolean = this._isOptionSelected(item.index);\n const isChecked: boolean = this._isOptionChecked(item.index);\n const optionStyles = this._getCurrentOptionStyles(item);\n const optionClassNames = getComboBoxOptionClassNames(this._getCurrentOptionStyles(item));\n const title = this._getPreviewText(item);\n\n const onRenderCheckboxLabel = () => onRenderOption(item, this._onRenderOptionContent);\n\n const getOptionComponent = () => {\n return !this.props.multiSelect ? (\n <CommandButton\n id={id + '-list' + item.index}\n key={item.key}\n data-index={item.index}\n styles={optionStyles}\n checked={isSelected}\n className={'ms-ComboBox-option'}\n onClick={this._onItemClick(item)}\n // eslint-disable-next-line react/jsx-no-bind\n onMouseEnter={this._onOptionMouseEnter.bind(this, item.index)}\n // eslint-disable-next-line react/jsx-no-bind\n onMouseMove={this._onOptionMouseMove.bind(this, item.index)}\n onMouseLeave={this._onOptionMouseLeave}\n role=\"option\"\n // aria-selected should only be applied to checked items, not hovered items\n aria-selected={isChecked ? 'true' : 'false'}\n ariaLabel={item.ariaLabel}\n disabled={item.disabled}\n title={title}\n >\n {\n <span className={optionClassNames.optionTextWrapper} ref={isSelected ? this._selectedElement : undefined}>\n {onRenderOption(item, this._onRenderOptionContent)}\n </span>\n }\n </CommandButton>\n ) : (\n <Checkbox\n id={id + '-list' + item.index}\n ariaLabel={item.ariaLabel}\n key={item.key}\n styles={optionStyles}\n className={'ms-ComboBox-option'}\n onChange={this._onItemClick(item)}\n label={item.text}\n checked={isChecked}\n title={title}\n disabled={item.disabled}\n // eslint-disable-next-line react/jsx-no-bind\n onRenderLabel={onRenderCheckboxLabel}\n inputProps={{\n // aria-selected should only be applied to checked items, not hovered items\n 'aria-selected': isChecked ? 'true' : 'false',\n role: 'option',\n ...({\n 'data-index': item.index,\n 'data-is-focusable': true,\n } as any),\n }}\n />\n );\n };\n\n return (\n <ComboBoxOptionWrapper\n key={item.key}\n index={item.index}\n disabled={item.disabled}\n isSelected={isSelected}\n isChecked={isChecked}\n text={item.text}\n // eslint-disable-next-line react/jsx-no-bind\n render={getOptionComponent}\n data={item.data}\n />\n );\n };\n\n /**\n * If we are coming from a mouseOut:\n * there is no visible selected option.\n *\n * Else if We are hovering over an item:\n * that gets the selected look.\n *\n * Else:\n * Use the current valid pending index if it exists OR\n * we do not have a valid index and we currently have a pending input value,\n * otherwise use the selected index\n * */\n private _isOptionSelected(index: number | undefined): boolean {\n const { currentPendingValueValidIndexOnHover } = this.state;\n\n // If the hover state is set to clearAll, don't show a selected index.\n // Note, this happens when the user moused out of the menu items\n if (currentPendingValueValidIndexOnHover === HoverStatus.clearAll) {\n return false;\n }\n\n return this._getPendingSelectedIndex(true /* includePendingValue */) === index ? true : false;\n }\n\n private _isOptionChecked(index: number | undefined): boolean {\n if (this.props.multiSelect && index !== undefined && this.state.selectedIndices) {\n let idxOfSelectedIndex = -1;\n\n idxOfSelectedIndex = this.state.selectedIndices.indexOf(index);\n return idxOfSelectedIndex >= 0;\n }\n return false;\n }\n\n /**\n * Gets the pending selected index taking into account hover, valueValidIndex, and selectedIndex\n * @param includeCurrentPendingValue - Should we include the currentPendingValue when\n * finding the index\n */\n private _getPendingSelectedIndex(includeCurrentPendingValue: boolean): number {\n const { currentPendingValueValidIndexOnHover, currentPendingValueValidIndex, currentPendingValue } = this.state;\n\n return currentPendingValueValidIndexOnHover >= 0\n ? currentPendingValueValidIndexOnHover\n : currentPendingValueValidIndex >= 0 ||\n (includeCurrentPendingValue && currentPendingValue !== null && currentPendingValue !== undefined)\n ? currentPendingValueValidIndex\n : this.props.multiSelect\n ? 0\n : this._getFirstSelectedIndex();\n }\n\n /**\n * Mouse clicks to headers, dividers and scrollbar should not make input lose focus\n */\n private _onCalloutMouseDown: ICalloutProps['onMouseDown'] = ev => {\n ev.preventDefault();\n };\n\n /**\n * Scroll handler for the callout to make sure the mouse events\n * for updating focus are not interacting during scroll\n */\n private _onScroll = () => {\n if (!this._isScrollIdle && this._scrollIdleTimeoutId !== undefined) {\n this._async.clearTimeout(this._scrollIdleTimeoutId);\n this._scrollIdleTimeoutId = undefined;\n } else {\n this._isScrollIdle = false;\n }\n\n this._scrollIdleTimeoutId = this._async.setTimeout(() => {\n this._isScrollIdle = true;\n }, ScrollIdleDelay);\n };\n\n /**\n * Scroll the selected element into view\n */\n private _scrollIntoView(): void {\n const { onScrollToItem, scrollSelectedToTop } = this.props;\n\n const { currentPendingValueValidIndex, currentPendingValue } = this.state;\n\n if (onScrollToItem) {\n // Use the custom scroll handler\n onScrollToItem(\n currentPendingValueValidIndex >= 0 || currentPendingValue !== ''\n ? currentPendingValueValidIndex\n : this._getFirstSelectedIndex(),\n );\n } else if (this._selectedElement.current && this._selectedElement.current.offsetParent) {\n // We are using refs, scroll the ref into view\n if (scrollSelectedToTop) {\n this._selectedElement.current.offsetParent.scrollIntoView(true);\n } else {\n let alignToTop = true;\n\n if (this._comboBoxMenu.current && this._comboBoxMenu.current.offsetParent) {\n const scrollableParentRect = this._comboBoxMenu.current.offsetParent.getBoundingClientRect();\n const selectedElementRect = this._selectedElement.current.offsetParent.getBoundingClientRect();\n\n // If we are completely in view then we do not need to scroll\n if (\n scrollableParentRect.top <= selectedElementRect.top &&\n scrollableParentRect.top + scrollableParentRect.height >=\n selectedElementRect.top + selectedElementRect.height\n ) {\n return;\n }\n\n // If we are lower than the scrollable parent viewport then we should align to the bottom\n if (\n scrollableParentRect.top + scrollableParentRect.height <=\n selectedElementRect.top + selectedElementRect.height\n ) {\n alignToTop = false;\n }\n }\n\n this._selectedElement.current.offsetParent.scrollIntoView(alignToTop);\n }\n }\n }\n\n private _onRenderOptionContent = (item: IComboBoxOption): JSX.Element => {\n const optionClassNames = getComboBoxOptionClassNames(this._getCurrentOptionStyles(item));\n return <span className={optionClassNames.optionText}>{item.text}</span>;\n };\n\n /**\n * Click handler for the menu items\n * to select the item and also close the menu\n * @param index - the index of the item that was clicked\n */\n private _onItemClick(item: IComboBoxOption): (ev: any) => void {\n const { onItemClick } = this.props;\n const { index } = item;\n\n return (ev: any): void => {\n // only close the callout when it's in single-select mode\n if (!this.props.multiSelect) {\n // ensure that focus returns to the input, not the button\n this._autofill.current && this._autofill.current.focus();\n this.setState({\n isOpen: false,\n });\n }\n\n // Continue processing the click only after\n // performing menu close / control focus(inner working)\n onItemClick && onItemClick(ev, item, index);\n this._setSelectedIndex(index as number, ev);\n };\n }\n\n /**\n * Handles dismissing (cancelling) the menu\n */\n private _onDismiss = (): void => {\n const { onMenuDismiss } = this.props;\n if (onMenuDismiss) {\n onMenuDismiss();\n }\n\n // In persistMode we need to simulate callout layer mount\n // since that only happens once. We do it on dismiss since\n // it works either way.\n if (this.props.persistMenu) {\n this._onCalloutLayerMounted();\n }\n\n // close the menu\n this._setOpenStateAndFocusOnClose(false /* isOpen */, false /* focusInputAfterClose */);\n\n // reset the selected index\n // to the last value state\n this._resetSelectedIndex();\n };\n\n /**\n * Get the indices of the options that are marked as selected\n * @param options - the comboBox options\n * @param selectedKeys - the known selected keys to find\n * @returns - an array of the indices of the selected options, empty array if nothing is selected\n */\n private _getSelectedIndices(\n options: IComboBoxOption[] | undefined,\n selectedKeys: (string | number | undefined)[],\n ): number[] {\n if (!options || !selectedKeys) {\n return [];\n }\n\n const selectedIndices: { [key: number]: boolean } = {};\n options.forEach((option: IComboBoxOption, index: number) => {\n if (option.selected) {\n selectedIndices[index] = true;\n }\n });\n\n for (const selectedKey of selectedKeys) {\n const index = findIndex(options, option => option.key === selectedKey);\n if (index > -1) {\n selectedIndices[index] = true;\n }\n }\n\n return Object.keys(selectedIndices)\n .map(Number)\n .sort();\n }\n\n /**\n * Reset the selected index by clearing the\n * input (of any pending text), clearing the pending state,\n * and setting the suggested display value to the last\n * selected state text\n */\n private _resetSelectedIndex(): void {\n const { currentOptions } = this.state;\n this._clearPendingInfo();\n\n const selectedIndex: number = this._getFirstSelectedIndex();\n if (selectedIndex > 0 && selectedIndex < currentOptions.length) {\n this.setState({\n suggestedDisplayValue: currentOptions[selectedIndex].text,\n });\n } else if (this.props.text) {\n // If we had a value initially, restore it\n this.setState({\n suggestedDisplayValue: this.props.text,\n });\n }\n }\n\n /**\n * Clears the pending info state\n */\n private _clearPendingInfo(): void {\n this._processingClearPendingInfo = true;\n\n this.setState(\n {\n currentPendingValue: undefined,\n currentPendingValueValidIndex: -1,\n suggestedDisplayValue: undefined,\n currentPendingValueValidIndexOnHover: HoverStatus.default,\n },\n this._onAfterClearPendingInfo,\n );\n }\n\n private _onAfterClearPendingInfo = () => {\n this._processingClearPendingInfo = false;\n };\n\n /**\n * Set the pending info\n * @param currentPendingValue - new pending value to set\n * @param currentPendingValueValidIndex - new pending value index to set\n * @param suggestedDisplayValue - new suggest display value to set\n */\n private _setPendingInfo(\n currentPendingValue?: string,\n currentPendingValueValidIndex: number = -1,\n suggestedDisplayValue?: string,\n ): void {\n if (this._processingClearPendingInfo) {\n return;\n }\n\n this.setState({\n currentPendingValue: this._normalizeToString(currentPendingValue),\n currentPendingValueValidIndex: currentPendingValueValidIndex,\n suggestedDisplayValue: suggestedDisplayValue,\n currentPendingValueValidIndexOnHover: HoverStatus.default,\n });\n }\n\n /**\n * Set the pending info from the given index\n * @param index - the index to set the pending info from\n */\n private _setPendingInfoFromIndex(index: number): void {\n const { currentOptions } = this.state;\n\n if (index >= 0 && index < currentOptions.length) {\n const option = currentOptions[index];\n this._setPendingInfo(this._getPreviewText(option), index, this._getPreviewText(option));\n } else {\n this._clearPendingInfo();\n }\n }\n\n /**\n * Sets the pending info for the comboBox\n * @param index - the index to search from\n * @param searchDirection - the direction to search\n */\n private _setPendingInfoFromIndexAndDirection(index: number, searchDirection: SearchDirection): void {\n const { currentOptions } = this.state;\n\n // update index to allow content to wrap\n if (searchDirection === SearchDirection.forward && index >= currentOptions.length - 1) {\n index = -1;\n } else if (searchDirection === SearchDirection.backward && index <= 0) {\n index = currentOptions.length;\n }\n\n // get the next \"valid\" index\n const indexUpdate = this._getNextSelectableIndex(index, searchDirection);\n\n // if the two indicies are equal we didn't move and\n // we should attempt to get get the first/last \"valid\" index to use\n // (Note, this takes care of the potential cases where the first/last\n // item is not focusable), otherwise use the updated index\n if (index === indexUpdate) {\n if (searchDirection === SearchDirection.forward) {\n index = this._getNextSelectableIndex(-1, searchDirection);\n } else if (searchDirection === SearchDirection.backward) {\n index = this._getNextSelectableIndex(currentOptions.length, searchDirection);\n }\n } else {\n index = indexUpdate;\n }\n\n if (this._indexWithinBounds(currentOptions, index)) {\n this._setPendingInfoFromIndex(index);\n }\n }\n\n private _notifyPendingValueChanged(prevState: IComboBoxState): void {\n const { onPendingValueChanged } = this.props;\n\n if (!onPendingValueChanged) {\n return;\n }\n\n const {\n currentPendingValue,\n currentOptions,\n currentPendingValueValidIndex,\n currentPendingValueValidIndexOnHover,\n } = this.state;\n\n let newPendingIndex: number | undefined = undefined;\n let newPendingValue: string | undefined = undefined;\n\n if (\n currentPendingValueValidIndexOnHover !== prevState.currentPendingValueValidIndexOnHover &&\n this._indexWithinBounds(currentOptions, currentPendingValueValidIndexOnHover)\n ) {\n // Set new pending index if hover index was changed\n newPendingIndex = currentPendingValueValidIndexOnHover;\n } else if (\n currentPendingValueValidIndex !== prevState.currentPendingValueValidIndex &&\n this._indexWithinBounds(currentOptions, currentPendingValueValidIndex)\n ) {\n // Set new pending index if currentPendingValueValidIndex was changed\n newPendingIndex = currentPendingValueValidIndex;\n } else if (currentPendingValue !== prevState.currentPendingValue) {\n // Set pendingValue in the case it was changed and no index was changed\n newPendingValue = currentPendingValue;\n }\n\n // Notify when there is a new pending index/value. Also, if there is a pending value, it needs to send undefined.\n if (newPendingIndex !== undefined || newPendingValue !== undefined || this._hasPendingValue) {\n onPendingValueChanged(\n newPendingIndex !== undefined ? currentOptions[newPendingIndex] : undefined,\n newPendingIndex,\n newPendingValue,\n );\n this._hasPendingValue = newPendingIndex !== undefined || newPendingValue !== undefined;\n }\n }\n\n /**\n * Sets the isOpen state and updates focusInputAfterClose\n */\n private _setOpenStateAndFocusOnClose(isOpen: boolean, focusInputAfterClose: boolean): void {\n this._focusInputAfterClose = focusInputAfterClose;\n this.setState({\n isOpen: isOpen,\n });\n }\n\n /**\n * Handle keydown on the input\n * @param ev - The keyboard event that was fired\n */\n private _onInputKeyDown = (ev: React.KeyboardEvent<HTMLElement | Autofill>): void => {\n const { disabled, allowFreeform, autoComplete } = this.props;\n const { isOpen, currentOptions, currentPendingValueValidIndexOnHover } = this.state;\n\n // Take note if we are processing an alt (option) or meta (command) keydown.\n // See comment in _onInputKeyUp for reasoning.\n this._lastKeyDownWasAltOrMeta = this._isAltOrMeta(ev);\n\n if (disabled) {\n this._handleInputWhenDisabled(ev);\n return;\n }\n\n let index = this._getPendingSelectedIndex(false /* includeCurrentPendingValue */);\n\n switch (ev.which) {\n case KeyCodes.enter:\n if (this._autofill.current && this._autofill.current.inputElement) {\n this._autofill.current.inputElement.select();\n }\n\n this._submitPendingValue(ev);\n if (this.props.multiSelect && isOpen) {\n this.setState({\n currentPendingValueValidIndex: index,\n });\n } else {\n // On enter submit the pending value\n if (\n isOpen ||\n ((!allowFreeform ||\n this.state.currentPendingValue === undefined ||\n this.state.currentPendingValue === null ||\n this.state.currentPendingValue.length <= 0) &&\n this.state.currentPendingValueValidIndex < 0)\n ) {\n // if we are open or\n // if we are not allowing freeform or\n // our we have no pending value\n // and no valid pending index\n // flip the open state\n this.setState({\n isOpen: !isOpen,\n });\n }\n }\n break;\n\n case KeyCodes.tab:\n // On enter submit the pending value\n if (!this.props.multiSelect) {\n this._submitPendingValue(ev);\n }\n\n // If we are not allowing freeform\n // or the comboBox is open, flip the open state\n if (isOpen) {\n this._setOpenStateAndFocusOnClose(!isOpen, false /* focusInputAfterClose */);\n }\n\n // Allow TAB to propigate\n return;\n\n case KeyCodes.escape:\n // reset the selected index\n this._resetSelectedIndex();\n\n // Close the menu if opened\n if (isOpen) {\n this.setState({\n isOpen: false,\n });\n } else {\n return;\n }\n break;\n\n case KeyCodes.up:\n // if we are in clearAll state (e.g. the user as hovering\n // and has since mousedOut of the menu items),\n // go to the last index\n if (currentPendingValueValidIndexOnHover === HoverStatus.clearAll) {\n index = this.state.currentOptions.length;\n }\n\n if (ev.altKey || ev.metaKey) {\n // Close the menu if it is open and break so\n // that the event get stopPropagation and prevent default.\n // Otherwise, we need to let the event continue to propagate\n if (isOpen) {\n this._setOpenStateAndFocusOnClose(!isOpen, true /* focusInputAfterClose */);\n break;\n }\n\n return;\n }\n\n // Go to the previous option\n this._setPendingInfoFromIndexAndDirection(index, SearchDirection.backward);\n break;\n\n case KeyCodes.down:\n // Expand the comboBox on ALT + DownArrow\n if (ev.altKey || ev.metaKey) {\n this._setOpenStateAndFocusOnClose(true /* isOpen */, true /* focusInputAfterClose */);\n } else {\n // if we are in clearAll state (e.g. the user as hovering\n // and has since mousedOut of the menu items),\n // go to the first index\n if (currentPendingValueValidIndexOnHover === HoverStatus.clearAll) {\n index = -1;\n }\n\n // Got to the next option\n this._setPendingInfoFromIndexAndDirection(index, SearchDirection.forward);\n }\n break;\n\n case KeyCodes.home:\n case KeyCodes.end:\n if (allowFreeform) {\n return;\n }\n\n // Set the initial values to respond to HOME\n // which goes to the first selectable option\n index = -1;\n let directionToSearch = SearchDirection.forward;\n\n // If end, update the values to respond to END\n // which goes to the last selectable option\n if (ev.which === KeyCodes.end) {\n index = currentOptions.length;\n directionToSearch = SearchDirection.backward;\n }\n\n this._setPendingInfoFromIndexAndDirection(index, directionToSearch);\n break;\n\n /* eslint-disable no-fallthrough */\n case KeyCodes.space:\n // event handled in _onComboBoxKeyUp\n if (!allowFreeform && autoComplete === 'off') {\n break;\n }\n\n default:\n /* eslint-enable no-fallthrough */\n // are we processing a function key? if so bail out\n if (ev.which >= 112 /* F1 */ && ev.which <= 123 /* F12 */) {\n return;\n }\n\n // If we get here and we got either and ALT key\n // or meta key, let the event propagate\n if (ev.keyCode === KeyCodes.alt || ev.key === 'Meta' /* && isOpen */) {\n return;\n }\n\n // If we are not allowing freeform and\n // allowing autoComplete, handle the input here\n // since we have marked the input as readonly\n if (!allowFreeform && autoComplete === 'on') {\n this._onInputChange(ev.key);\n break;\n }\n\n // allow the key to propagate by default\n return;\n }\n\n ev.stopPropagation();\n ev.preventDefault();\n };\n\n /**\n * Returns true if the key for the event is alt (Mac option) or meta (Mac command).\n */\n private _isAltOrMeta(ev: React.KeyboardEvent<HTMLElement | Autofill>): boolean {\n return ev.which === KeyCodes.alt || ev.key === 'Meta';\n }\n\n /**\n * Handle keyup on the input\n * @param ev - the keyboard event that was fired\n */\n private _onInputKeyUp = (ev: React.KeyboardEvent<HTMLElement | Autofill>): void => {\n const { disabled, allowFreeform, autoComplete } = this.props;\n const isOpen = this.state.isOpen;\n\n // We close the menu on key up only if ALL of the following are true:\n // - Most recent key down was alt or meta (command)\n // - The alt/meta key down was NOT followed by some other key (such as down/up arrow to\n // expand/collapse the menu)\n // - We're not on a Mac (or iOS)\n // This is because on Windows, pressing alt moves focus to the application menu bar or similar,\n // closing any open context menus. There is not a similar behavior on Macs.\n const keyPressIsAltOrMetaAlone = this._lastKeyDownWasAltOrMeta && this._isAltOrMeta(ev);\n this._lastKeyDownWasAltOrMeta = false;\n const shouldHandleKey = keyPressIsAltOrMetaAlone && !(isMac() || isIOS());\n\n if (disabled) {\n this._handleInputWhenDisabled(ev);\n return;\n }\n\n switch (ev.which) {\n case KeyCodes.space:\n // If we are not allowing freeform and are not autoComplete\n // make space expand/collapse the comboBox\n // and allow the event to propagate\n if (!allowFreeform && autoComplete === 'off') {\n this._setOpenStateAndFocusOnClose(!isOpen, !!isOpen);\n }\n return;\n default:\n if (shouldHandleKey && isOpen) {\n this._setOpenStateAndFocusOnClose(!isOpen, true /* focusInputAfterClose */);\n } else {\n if (this.state.focusState === 'focusing' && this.props.openOnKeyboardFocus) {\n this.setState({ isOpen: true });\n }\n if (this.state.focusState !== 'focused') {\n this.setState({ focusState: 'focused' });\n }\n }\n return;\n }\n };\n\n private _onOptionMouseEnter(index: number): void {\n if (this._shouldIgnoreMouseEvent()) {\n return;\n }\n\n this.setState({\n currentPendingValueValidIndexOnHover: index,\n });\n }\n\n private _onOptionMouseMove(index: number): void {\n this._gotMouseMove = true;\n\n if (!this._isScrollIdle || this.state.currentPendingValueValidIndexOnHover === index) {\n return;\n }\n\n this.setState({\n currentPendingValueValidIndexOnHover: index,\n });\n }\n\n private _onOptionMouseLeave = () => {\n if (this._shouldIgnoreMouseEvent()) {\n return;\n }\n\n // Ignore the event in persistMenu mode if the callout has\n // closed. This is to avoid clearing the visuals on item click.\n if (this.props.persistMenu && !this.state.isOpen) {\n return;\n }\n\n this.setState({\n currentPendingValueValidIndexOnHover: HoverStatus.clearAll,\n });\n };\n\n private _shouldIgnoreMouseEvent(): boolean {\n return !this._isScrollIdle || !this._gotMouseMove;\n }\n\n /**\n * Handle dismissing the menu and\n * eating the required key event when disabled\n * @param ev - the keyboard event that was fired\n */\n private _handleInputWhenDisabled(ev: React.KeyboardEvent<HTMLElement | Autofill> | null): void {\n // If we are disabled, close the menu (if needed)\n // and eat all keystokes other than TAB or ESC\n if (this.props.disabled) {\n if (this.state.isOpen) {\n this.setState({ isOpen: false });\n }\n\n // When disabled stop propagation and prevent default\n // of the event unless we have a tab, escape, or function key\n if (\n ev !== null &&\n ev.which !== KeyCodes.tab &&\n ev.which !== KeyCodes.escape &&\n (ev.which < 112 /* F1 */ || ev.which > 123) /* F12 */\n ) {\n ev.stopPropagation();\n ev.preventDefault();\n }\n }\n }\n\n /**\n * Click handler for the button of the comboBox\n * and the input when not allowing freeform. This\n * toggles the expand/collapse state of the comboBox (if enbled)\n */\n private _onComboBoxClick = (): void => {\n const { disabled } = this.props;\n const { isOpen } = this.state;\n\n if (!disabled) {\n this._setOpenStateAndFocusOnClose(!isOpen, false /* focusInputAfterClose */);\n this.setState({ focusState: 'focused' });\n }\n };\n\n /**\n * Click handler for the autofill.\n */\n private _onAutofillClick = (): void => {\n const { disabled, allowFreeform } = this.props;\n\n if (allowFreeform && !disabled) {\n this.focus(this.state.isOpen || this._processingTouch);\n } else {\n this._onComboBoxClick();\n }\n };\n\n private _onTouchStart: () => void = () => {\n if (this._comboBoxWrapper.current && !('onpointerdown' in this._comboBoxWrapper)) {\n this._handleTouchAndPointerEvent();\n }\n };\n\n private _onPointerDown = (ev: PointerEvent): void => {\n if (ev.pointerType === 'touch') {\n this._handleTouchAndPointerEvent();\n\n ev.preventDefault();\n ev.stopImmediatePropagation();\n }\n };\n\n private _handleTouchAndPointerEvent() {\n // If we already have an existing timeeout from a previous touch and pointer event\n // cancel that timeout so we can set a nwe one.\n if (this._lastTouchTimeoutId !== undefined) {\n this._async.clearTimeout(this._lastTouchTimeoutId);\n this._lastTouchTimeoutId = undefined;\n }\n this._processingTouch = true;\n\n this._lastTouchTimeoutId = this._async.setTimeout(() => {\n this._processingTouch = false;\n this._lastTouchTimeoutId = undefined;\n }, TouchIdleDelay);\n }\n\n /**\n * Get the styles for the current option.\n * @param item - Item props for the current option\n */\n private _getCaretButtonStyles(): IButtonStyles {\n const { caretDownButtonStyles: customCaretDownButtonStyles } = this.props;\n return getCaretDownButtonStyles(this.props.theme!, customCaretDownButtonStyles);\n }\n\n /**\n * Get the styles for the current option.\n * @param item - Item props for the current option\n */\n private _getCurrentOptionStyles(item: IComboBoxOption): Partial<IComboBoxOptionStyles> {\n const { comboBoxOptionStyles: customStylesForAllOptions } = this.props;\n const { styles: customStylesForCurrentOption } = item;\n\n return getOptionStyles(\n this.props.theme!,\n customStylesForAllOptions,\n customStylesForCurrentOption,\n this._isPendingOption(item),\n item.hidden,\n );\n }\n\n /**\n * Get the aria-activedescendant value for the comboxbox.\n * @returns the id of the current focused combo item, otherwise the id of the currently selected element,\n * null otherwise\n */\n private _getAriaActiveDescendantValue(): string | undefined {\n let descendantText =\n this.state.isOpen && this.state.selectedIndices && this.state.selectedIndices.length > 0\n ? this._id + '-list' + this.state.selectedIndices[0]\n : undefined;\n if (this.state.isOpen && this._hasFocus() && this.state.currentPendingValueValidIndex !== -1) {\n descendantText = this._id + '-list' + this.state.currentPendingValueValidIndex;\n }\n return descendantText;\n }\n\n /**\n * Get the aria autocomplete value for the Combobox\n * @returns 'inline' if auto-complete automatically dynamic, 'both' if we have a list of possible values to pick from\n * and can dynamically populate input, and 'none' if auto-complete is not enabled as we can't give user inputs.\n */\n private _getAriaAutoCompleteValue(): 'none' | 'inline' | 'list' | 'both' | undefined {\n const autoComplete = !this.props.disabled && this.props.autoComplete === 'on';\n return autoComplete ? (this.props.allowFreeform ? 'inline' : 'both') : 'none';\n }\n\n private _isPendingOption(item: IComboBoxOption): boolean {\n return item && item.index === this.state.currentPendingValueValidIndex;\n }\n\n /**\n * Given default selected key(s) and selected key(s), return the selected keys(s).\n * When default selected key(s) are available, they take precedence and return them instead of selected key(s).\n *\n * @returns No matter what specific types the input parameters are, always return an array of\n * either strings or numbers instead of premitive type. This normlization makes caller's logic easier.\n */\n private _buildDefaultSelectedKeys(\n defaultSelectedKey: string | number | string[] | number[] | null | undefined,\n selectedKey: string | number | string[] | number[] | null | undefined,\n ): string[] | number[] {\n const selectedKeys: string[] | number[] = this._buildSelectedKeys(defaultSelectedKey);\n if (selectedKeys.length) {\n return selectedKeys;\n }\n return this._buildSelectedKeys(selectedKey);\n }\n\n private _buildSelectedKeys(\n selectedKey: string | number | string[] | number[] | null | undefined,\n ): string[] | number[] {\n if (selectedKey === undefined) {\n return [];\n }\n\n // need to cast here so typescript does not complain\n return (selectedKey instanceof Array ? selectedKey : [selectedKey]) as string[] | number[];\n }\n\n // For scenarios where the option's text prop contains embedded styles, we use the option's\n // ariaLabel value as the text in the input and for autocomplete matching. We know to use this\n // when the useAriaLabelAsText prop is set to true\n private _getPreviewText(item: IComboBoxOption): string {\n return item.useAriaLabelAsText && item.ariaLabel ? item.ariaLabel : item.text;\n }\n\n private _normalizeToString(value?: string): string {\n return value || '';\n }\n\n /**\n * Returns true if the component has some kind of focus. If it's either focusing or if it's focused\n */\n private _hasFocus() {\n return this.state.focusState !== 'none';\n }\n}\n","import {\r\n FontWeights,\r\n IRawStyle,\r\n ITheme,\r\n concatStyleSets,\r\n getFocusStyle,\r\n HighContrastSelector,\r\n IStyle,\r\n getPlaceholderStyles,\r\n hiddenContentStyle,\r\n getInputFocusStyle,\r\n getHighContrastNoAdjustStyle,\r\n} from '../../Styling';\r\nimport { IComboBoxOptionStyles, IComboBoxStyles } from './ComboBox.types';\r\n\r\nimport { IButtonStyles } from '../../Button';\r\nimport { memoizeFunction } from '../../Utilities';\r\n\r\nconst ComboBoxHeight = 32;\r\nconst ComboBoxLineHeight = 30;\r\nconst ComboBoxCaretDownWidth = 32;\r\nconst ComboBoxOptionHeight = 36;\r\n\r\nconst getDisabledStyles = memoizeFunction(\r\n (theme: ITheme): IRawStyle => {\r\n const { semanticColors } = theme;\r\n\r\n return {\r\n backgroundColor: semanticColors.disabledBackground,\r\n color: semanticColors.disabledText,\r\n cursor: 'default',\r\n selectors: {\r\n ':after': {\r\n borderColor: semanticColors.disabledBackground,\r\n },\r\n [HighContrastSelector]: {\r\n color: 'GrayText',\r\n selectors: {\r\n ':after': {\r\n borderColor: 'GrayText',\r\n },\r\n },\r\n },\r\n },\r\n };\r\n },\r\n);\r\n\r\nconst listOptionHighContrastStyles: IRawStyle = {\r\n selectors: {\r\n [HighContrastSelector]: {\r\n backgroundColor: 'Highlight',\r\n borderColor: 'Highlight',\r\n color: 'HighlightText',\r\n ...getHighContrastNoAdjustStyle(),\r\n },\r\n },\r\n};\r\n\r\nconst inputHighContrastStyles: IRawStyle = {\r\n selectors: {\r\n [HighContrastSelector]: {\r\n color: 'WindowText',\r\n backgroundColor: 'Window',\r\n ...getHighContrastNoAdjustStyle(),\r\n },\r\n },\r\n};\r\n\r\nexport const getOptionStyles = memoizeFunction(\r\n (\r\n theme: ITheme,\r\n customStylesForAllOptions?: Partial<IComboBoxOptionStyles>,\r\n customOptionStylesForCurrentOption?: Partial<IComboBoxOptionStyles>,\r\n isPending?: boolean,\r\n isHidden?: boolean,\r\n ): Partial<IComboBoxOptionStyles> => {\r\n const { palette, semanticColors } = theme;\r\n\r\n const option = {\r\n textHoveredColor: semanticColors.menuItemTextHovered,\r\n textSelectedColor: palette.neutralDark,\r\n textDisabledColor: semanticColors.disabledText,\r\n backgroundHoveredColor: semanticColors.menuItemBackgroundHovered,\r\n backgroundPressedColor: semanticColors.menuItemBackgroundPressed,\r\n };\r\n\r\n const optionStyles: IComboBoxOptionStyles = {\r\n root: [\r\n theme.fonts.medium,\r\n {\r\n backgroundColor: isPending ? option.backgroundHoveredColor : 'transparent',\r\n boxSizing: 'border-box',\r\n cursor: 'pointer',\r\n display: isHidden ? 'none' : 'block',\r\n width: '100%',\r\n height: 'auto',\r\n minHeight: ComboBoxOptionHeight,\r\n lineHeight: '20px',\r\n padding: '0 8px',\r\n position: 'relative',\r\n borderWidth: '1px',\r\n borderStyle: 'solid',\r\n borderColor: 'transparent',\r\n borderRadius: 0,\r\n wordWrap: 'break-word',\r\n overflowWrap: 'break-word',\r\n textAlign: 'left',\r\n selectors: {\r\n [HighContrastSelector]: {\r\n border: 'none',\r\n borderColor: 'Background',\r\n },\r\n '&.ms-Checkbox': {\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n '&.ms-Button--command:hover:active': {\r\n backgroundColor: option.backgroundPressedColor,\r\n },\r\n '.ms-Checkbox-label': {\r\n width: '100%',\r\n },\r\n },\r\n },\r\n ],\r\n rootHovered: {\r\n backgroundColor: option.backgroundHoveredColor,\r\n color: option.textHoveredColor,\r\n },\r\n rootFocused: {\r\n backgroundColor: option.backgroundHoveredColor,\r\n },\r\n rootChecked: [\r\n {\r\n backgroundColor: 'transparent',\r\n color: option.textSelectedColor,\r\n selectors: {\r\n ':hover': [\r\n {\r\n backgroundColor: option.backgroundHoveredColor,\r\n },\r\n listOptionHighContrastStyles,\r\n ],\r\n },\r\n },\r\n getFocusStyle(theme, { inset: -1, isFocusedOnly: false }),\r\n listOptionHighContrastStyles,\r\n ],\r\n rootDisabled: {\r\n color: option.textDisabledColor,\r\n cursor: 'default',\r\n },\r\n optionText: {\r\n overflow: 'hidden',\r\n whiteSpace: 'nowrap',\r\n textOverflow: 'ellipsis',\r\n minWidth: '0px',\r\n maxWidth: '100%',\r\n wordWrap: 'break-word',\r\n overflowWrap: 'break-word',\r\n display: 'inline-block',\r\n },\r\n optionTextWrapper: {\r\n maxWidth: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n };\r\n\r\n return concatStyleSets(optionStyles, customStylesForAllOptions, customOptionStylesForCurrentOption);\r\n },\r\n);\r\n\r\nexport const getCaretDownButtonStyles = memoizeFunction(\r\n (theme: ITheme, customStyles?: Partial<IButtonStyles>): IButtonStyles => {\r\n const { semanticColors, fonts } = theme;\r\n\r\n const caret = {\r\n buttonTextColor: semanticColors.bodySubtext,\r\n buttonTextHoveredCheckedColor: semanticColors.buttonTextChecked,\r\n buttonBackgroundHoveredColor: semanticColors.listItemBackgroundHovered,\r\n buttonBackgroundCheckedColor: semanticColors.listItemBackgroundChecked,\r\n buttonBackgroundCheckedHoveredColor: semanticColors.listItemBackgroundCheckedHovered,\r\n };\r\n\r\n const buttonHighContrastStyles: IStyle = {\r\n selectors: {\r\n [HighContrastSelector]: {\r\n backgroundColor: 'Highlight',\r\n borderColor: 'Highlight',\r\n color: 'HighlightText',\r\n ...getHighContrastNoAdjustStyle(),\r\n },\r\n },\r\n };\r\n\r\n const styles: IButtonStyles = {\r\n root: {\r\n color: caret.buttonTextColor,\r\n fontSize: fonts.small.fontSize,\r\n position: 'absolute',\r\n top: 0,\r\n height: '100%',\r\n lineHeight: ComboBoxLineHeight,\r\n width: ComboBoxCaretDownWidth,\r\n textAlign: 'center',\r\n cursor: 'default',\r\n selectors: {\r\n [HighContrastSelector]: {\r\n backgroundColor: 'ButtonFace',\r\n borderColor: 'ButtonText',\r\n color: 'ButtonText',\r\n ...getHighContrastNoAdjustStyle(),\r\n },\r\n },\r\n },\r\n icon: {\r\n fontSize: fonts.small.fontSize,\r\n },\r\n rootHovered: [\r\n {\r\n backgroundColor: caret.buttonBackgroundHoveredColor,\r\n color: caret.buttonTextHoveredCheckedColor,\r\n cursor: 'pointer',\r\n },\r\n buttonHighContrastStyles,\r\n ],\r\n rootPressed: [\r\n {\r\n backgroundColor: caret.buttonBackgroundCheckedColor,\r\n color: caret.buttonTextHoveredCheckedColor,\r\n },\r\n buttonHighContrastStyles,\r\n ],\r\n rootChecked: [\r\n {\r\n backgroundColor: caret.buttonBackgroundCheckedColor,\r\n color: caret.buttonTextHoveredCheckedColor,\r\n },\r\n buttonHighContrastStyles,\r\n ],\r\n rootCheckedHovered: [\r\n {\r\n backgroundColor: caret.buttonBackgroundCheckedHoveredColor,\r\n color: caret.buttonTextHoveredCheckedColor,\r\n },\r\n buttonHighContrastStyles,\r\n ],\r\n rootDisabled: [\r\n getDisabledStyles(theme),\r\n {\r\n position: 'absolute',\r\n },\r\n ],\r\n };\r\n return concatStyleSets(styles, customStyles);\r\n },\r\n);\r\n\r\nexport const getStyles = memoizeFunction(\r\n (theme: ITheme, customStyles?: Partial<IComboBoxStyles>, comboBoxOptionWidth?: string): Partial<IComboBoxStyles> => {\r\n const { semanticColors, fonts, effects } = theme;\r\n\r\n const root = {\r\n textColor: semanticColors.inputText,\r\n borderColor: semanticColors.inputBorder,\r\n borderHoveredColor: semanticColors.inputBorderHovered,\r\n borderPressedColor: semanticColors.inputFocusBorderAlt,\r\n borderFocusedColor: semanticColors.inputFocusBorderAlt,\r\n backgroundColor: semanticColors.inputBackground,\r\n erroredColor: semanticColors.errorText,\r\n };\r\n\r\n const option = {\r\n headerTextColor: semanticColors.menuHeader,\r\n dividerBorderColor: semanticColors.bodyDivider,\r\n };\r\n\r\n // placeholder style variables\r\n const placeholderHighContrastStyles: IRawStyle = {\r\n selectors: {\r\n [HighContrastSelector]: {\r\n color: 'GrayText',\r\n },\r\n },\r\n };\r\n const placeholderStyles: IStyle = [\r\n {\r\n color: semanticColors.inputPlaceholderText,\r\n },\r\n placeholderHighContrastStyles,\r\n ];\r\n const placeholderStylesHovered: IStyle = [\r\n {\r\n color: semanticColors.inputTextHovered,\r\n },\r\n placeholderHighContrastStyles,\r\n ];\r\n const disabledPlaceholderStyles: IStyle = [\r\n {\r\n color: semanticColors.disabledText,\r\n },\r\n placeholderHighContrastStyles,\r\n ];\r\n\r\n const ComboBoxRootHighContrastFocused = {\r\n color: 'HighlightText',\r\n backgroundColor: 'Window',\r\n ...getHighContrastNoAdjustStyle(),\r\n selectors: {\r\n ':after': {\r\n borderColor: 'Highlight',\r\n },\r\n },\r\n };\r\n\r\n const focusBorderStyles: IStyle = getInputFocusStyle(root.borderPressedColor, effects.roundedCorner2, 'border', 0);\r\n\r\n const styles: IComboBoxStyles = {\r\n container: {},\r\n label: {},\r\n labelDisabled: {},\r\n root: [\r\n theme.fonts.medium,\r\n {\r\n boxShadow: 'none',\r\n marginLeft: '0',\r\n paddingRight: ComboBoxCaretDownWidth,\r\n paddingLeft: 9,\r\n color: root.textColor,\r\n position: 'relative',\r\n outline: '0',\r\n userSelect: 'none',\r\n backgroundColor: root.backgroundColor,\r\n cursor: 'text',\r\n display: 'block',\r\n height: ComboBoxHeight,\r\n whiteSpace: 'nowrap',\r\n textOverflow: 'ellipsis',\r\n boxSizing: 'border-box', // Border-box matches Dropdown and TextField\r\n selectors: {\r\n '.ms-Label': {\r\n display: 'inline-block',\r\n marginBottom: '8px',\r\n },\r\n '&.is-open': {\r\n selectors: {\r\n [HighContrastSelector]: ComboBoxRootHighContrastFocused,\r\n },\r\n },\r\n // setting border using pseudo-element here in order to\r\n // prevent chevron button to overlap ComboBox border under certain resolutions\r\n ':after': {\r\n pointerEvents: 'none',\r\n content: \"''\",\r\n position: 'absolute',\r\n left: 0,\r\n top: 0,\r\n bottom: 0,\r\n right: 0,\r\n borderWidth: '1px',\r\n borderStyle: 'solid',\r\n borderColor: root.borderColor,\r\n borderRadius: effects.roundedCorner2,\r\n },\r\n },\r\n },\r\n ],\r\n\r\n rootHovered: {\r\n selectors: {\r\n ':after': {\r\n borderColor: root.borderHoveredColor,\r\n },\r\n '.ms-ComboBox-Input': [\r\n {\r\n color: semanticColors.inputTextHovered,\r\n },\r\n getPlaceholderStyles(placeholderStylesHovered),\r\n inputHighContrastStyles,\r\n ],\r\n [HighContrastSelector]: {\r\n color: 'HighlightText',\r\n backgroundColor: 'Window',\r\n ...getHighContrastNoAdjustStyle(),\r\n selectors: {\r\n ':after': {\r\n borderColor: 'Highlight',\r\n },\r\n },\r\n },\r\n },\r\n },\r\n\r\n rootPressed: [\r\n {\r\n position: 'relative',\r\n selectors: {\r\n [HighContrastSelector]: ComboBoxRootHighContrastFocused,\r\n },\r\n },\r\n ],\r\n\r\n rootFocused: [\r\n {\r\n selectors: {\r\n '.ms-ComboBox-Input': [\r\n {\r\n color: semanticColors.inputTextHovered,\r\n },\r\n inputHighContrastStyles,\r\n ],\r\n [HighContrastSelector]: ComboBoxRootHighContrastFocused,\r\n },\r\n },\r\n focusBorderStyles,\r\n ],\r\n\r\n rootDisabled: getDisabledStyles(theme),\r\n\r\n rootError: {\r\n selectors: {\r\n ':after': {\r\n borderColor: root.erroredColor,\r\n },\r\n ':hover:after': {\r\n borderColor: semanticColors.inputBorderHovered,\r\n },\r\n },\r\n },\r\n\r\n rootDisallowFreeForm: {},\r\n\r\n input: [\r\n getPlaceholderStyles(placeholderStyles),\r\n {\r\n backgroundColor: root.backgroundColor,\r\n color: root.textColor,\r\n boxSizing: 'border-box',\r\n width: '100%',\r\n height: '100%',\r\n borderStyle: 'none',\r\n outline: 'none',\r\n font: 'inherit',\r\n textOverflow: 'ellipsis',\r\n padding: '0',\r\n selectors: {\r\n '::-ms-clear': {\r\n display: 'none',\r\n },\r\n },\r\n },\r\n inputHighContrastStyles,\r\n ],\r\n\r\n inputDisabled: [getDisabledStyles(theme), getPlaceholderStyles(disabledPlaceholderStyles)],\r\n errorMessage: [\r\n theme.fonts.small,\r\n {\r\n color: root.erroredColor,\r\n marginTop: '5px',\r\n },\r\n ],\r\n\r\n callout: {\r\n boxShadow: effects.elevation8,\r\n },\r\n\r\n optionsContainerWrapper: {\r\n width: comboBoxOptionWidth,\r\n },\r\n\r\n optionsContainer: {\r\n display: 'block',\r\n },\r\n screenReaderText: hiddenContentStyle,\r\n\r\n header: [\r\n fonts.medium,\r\n {\r\n fontWeight: FontWeights.semibold,\r\n color: option.headerTextColor,\r\n backgroundColor: 'none',\r\n borderStyle: 'none',\r\n height: ComboBoxOptionHeight,\r\n lineHeight: ComboBoxOptionHeight,\r\n cursor: 'default',\r\n padding: '0 8px',\r\n userSelect: 'none',\r\n textAlign: 'left',\r\n selectors: {\r\n [HighContrastSelector]: {\r\n color: 'GrayText',\r\n ...getHighContrastNoAdjustStyle(),\r\n },\r\n },\r\n },\r\n ],\r\n\r\n divider: {\r\n height: 1,\r\n backgroundColor: option.dividerBorderColor,\r\n },\r\n };\r\n\r\n return concatStyleSets(styles, customStyles);\r\n },\r\n);\r\n","import {\r\n IComboBoxStyles,\r\n IComboBoxOptionStyles,\r\n IComboBoxClassNames,\r\n IComboBoxOptionClassNames,\r\n} from './ComboBox.types';\r\nimport { memoizeFunction } from '../../Utilities';\r\nimport { mergeStyles } from '../../Styling';\r\n\r\nexport const getClassNames = memoizeFunction(\r\n (\r\n styles: Partial<IComboBoxStyles>,\r\n className: string,\r\n isOpen: boolean,\r\n disabled: boolean,\r\n required: boolean,\r\n focused: boolean,\r\n allowFreeForm: boolean,\r\n hasErrorMessage: boolean,\r\n ): IComboBoxClassNames => {\r\n return {\r\n container: mergeStyles('ms-ComboBox-container', className, styles.container),\r\n label: mergeStyles(styles.label, disabled && styles.labelDisabled),\r\n root: mergeStyles(\r\n 'ms-ComboBox',\r\n hasErrorMessage ? styles.rootError : isOpen && 'is-open',\r\n required && 'is-required',\r\n styles.root,\r\n !allowFreeForm && styles.rootDisallowFreeForm,\r\n hasErrorMessage && !focused ? styles.rootError : !disabled && focused && styles.rootFocused,\r\n !disabled && {\r\n selectors: {\r\n ':hover': hasErrorMessage ? styles.rootError : !isOpen && !focused && styles.rootHovered,\r\n ':active': hasErrorMessage ? styles.rootError : styles.rootPressed,\r\n ':focus': hasErrorMessage ? styles.rootError : styles.rootFocused,\r\n },\r\n },\r\n disabled && ['is-disabled', styles.rootDisabled],\r\n ),\r\n input: mergeStyles('ms-ComboBox-Input', styles.input, disabled && styles.inputDisabled),\r\n errorMessage: mergeStyles(styles.errorMessage),\r\n callout: mergeStyles('ms-ComboBox-callout', styles.callout),\r\n optionsContainerWrapper: mergeStyles('ms-ComboBox-optionsContainerWrapper', styles.optionsContainerWrapper),\r\n optionsContainer: mergeStyles('ms-ComboBox-optionsContainer', styles.optionsContainer),\r\n header: mergeStyles('ms-ComboBox-header', styles.header),\r\n divider: mergeStyles('ms-ComboBox-divider', styles.divider),\r\n screenReaderText: mergeStyles(styles.screenReaderText),\r\n };\r\n },\r\n);\r\n\r\nexport const getComboBoxOptionClassNames = memoizeFunction(\r\n (styles: Partial<IComboBoxOptionStyles>): IComboBoxOptionClassNames => {\r\n return {\r\n optionText: mergeStyles('ms-ComboBox-optionText', styles.optionText),\r\n root: mergeStyles('ms-ComboBox-option', styles.root, {\r\n selectors: {\r\n ':hover': styles.rootHovered,\r\n ':focus': styles.rootFocused,\r\n ':active': styles.rootPressed,\r\n },\r\n }),\r\n optionTextWrapper: mergeStyles(styles.optionTextWrapper),\r\n };\r\n },\r\n);\r\n","import * as React from 'react';\nimport {\n initializeComponentRef,\n classNamesFunction,\n getId,\n inputProperties,\n getNativeProps,\n warnDeprecations,\n warnMutuallyExclusive,\n FocusRects,\n} from '../../Utilities';\nimport { IToggleProps, IToggle, IToggleStyleProps, IToggleStyles } from './Toggle.types';\nimport { Label } from '../../Label';\nimport { KeytipData } from '../../KeytipData';\n\nexport interface IToggleState {\n checked: boolean;\n}\n\nconst getClassNames = classNamesFunction<IToggleStyleProps, IToggleStyles>();\nconst COMPONENT_NAME = 'Toggle';\n\nexport class ToggleBase extends React.Component<IToggleProps, IToggleState> implements IToggle {\n private _id: string;\n private _toggleButton = React.createRef<HTMLButtonElement>();\n\n public static getDerivedStateFromProps(\n nextProps: Readonly<IToggleProps>,\n prevState: Readonly<IToggleState>,\n ): Partial<IToggleState> | null {\n if (nextProps.checked === undefined) {\n return null;\n }\n\n return {\n checked: !!nextProps.checked,\n };\n }\n\n constructor(props: IToggleProps) {\n super(props);\n\n initializeComponentRef(this);\n warnMutuallyExclusive(COMPONENT_NAME, props, {\n checked: 'defaultChecked',\n });\n\n warnDeprecations(COMPONENT_NAME, props, {\n onAriaLabel: 'ariaLabel',\n offAriaLabel: undefined,\n onChanged: 'onChange',\n });\n\n this.state = {\n checked: !!(props.checked || props.defaultChecked),\n };\n this._id = getId('Toggle');\n }\n\n /**\n * Gets the current checked state of the toggle.\n */\n public get checked(): boolean {\n return this.state.checked;\n }\n\n public render(): JSX.Element {\n const {\n as: RootType = 'div',\n className,\n theme,\n disabled,\n keytipProps,\n id,\n label,\n ariaLabel,\n /* eslint-disable deprecation/deprecation */\n onAriaLabel,\n offAriaLabel,\n /* eslint-enable deprecation/deprecation */\n offText,\n onText,\n styles,\n inlineLabel,\n } = this.props;\n const { checked } = this.state;\n const stateText = checked ? onText : offText;\n const badAriaLabel = checked ? onAriaLabel : offAriaLabel;\n const toggleNativeProps = getNativeProps(this.props, inputProperties, ['defaultChecked']);\n const classNames = getClassNames(styles!, {\n theme: theme!,\n className,\n disabled,\n checked,\n inlineLabel,\n onOffMissing: !onText && !offText,\n });\n\n const toggleId = id || this._id;\n const labelId = `${toggleId}-label`;\n const stateTextId = `${toggleId}-stateText`;\n\n // The following properties take priority for what Narrator should read:\n // 1. ariaLabel\n // 2. onAriaLabel (if checked) or offAriaLabel (if not checked)\n // 3. label AND stateText, if existent\n\n let labelledById: string | undefined = undefined;\n if (!ariaLabel && !badAriaLabel) {\n if (label) {\n labelledById = labelId;\n }\n if (stateText) {\n labelledById = labelledById ? `${labelledById} ${stateTextId}` : stateTextId;\n }\n }\n\n const ariaRole = this.props.role ? this.props.role : 'switch';\n\n const renderPill = (keytipAttributes: any = {}) => (\n <button\n {...toggleNativeProps}\n {...keytipAttributes}\n className={classNames.pill}\n disabled={disabled}\n id={toggleId}\n type=\"button\"\n role={ariaRole}\n ref={this._toggleButton}\n aria-disabled={disabled}\n aria-checked={checked}\n aria-label={ariaLabel ? ariaLabel : badAriaLabel}\n data-is-focusable={true}\n onChange={this._noop}\n onClick={this._onClick}\n aria-labelledby={labelledById}\n >\n <span className={classNames.thumb} />\n </button>\n );\n\n const pillContent = keytipProps ? (\n <KeytipData\n keytipProps={keytipProps}\n ariaDescribedBy={(toggleNativeProps as any)['aria-describedby']}\n disabled={disabled}\n >\n {(keytipAttributes: any): JSX.Element => renderPill(keytipAttributes)}\n </KeytipData>\n ) : (\n renderPill()\n );\n\n return (\n <RootType className={classNames.root} hidden={(toggleNativeProps as any).hidden}>\n {label && (\n <Label htmlFor={toggleId} className={classNames.label} id={labelId}>\n {label}\n </Label>\n )}\n\n <div className={classNames.container}>\n {pillContent}\n {stateText && (\n // This second \"htmlFor\" property is needed to allow the\n // toggle's stateText to also trigger a state change when clicked.\n <Label htmlFor={toggleId} className={classNames.text} id={stateTextId}>\n {stateText}\n </Label>\n )}\n </div>\n <FocusRects />\n </RootType>\n );\n }\n\n public focus() {\n if (this._toggleButton.current) {\n this._toggleButton.current.focus();\n }\n }\n\n private _onClick = (ev: React.MouseEvent<HTMLElement>) => {\n // eslint-disable-next-line deprecation/deprecation\n const { disabled, checked: checkedProp, onChange, onChanged, onClick } = this.props;\n const { checked } = this.state;\n\n if (!disabled) {\n // Only update the state if the user hasn't provided it.\n if (checkedProp === undefined) {\n this.setState({\n checked: !checked,\n });\n }\n\n if (onChange) {\n onChange(ev, !checked);\n }\n\n if (onChanged) {\n onChanged(!checked);\n }\n\n if (onClick) {\n onClick(ev);\n }\n }\n };\n\n private _noop(): void {\n /* no-op */\n }\n}\n","import * as React from 'react';\nimport { styled } from '../../Utilities';\nimport { ToggleBase } from './Toggle.base';\nimport { getStyles } from './Toggle.styles';\nimport { IToggleProps, IToggleStyleProps, IToggleStyles } from './Toggle.types';\n\nexport const Toggle: React.FunctionComponent<IToggleProps> = styled<IToggleProps, IToggleStyleProps, IToggleStyles>(\n ToggleBase,\n getStyles,\n undefined,\n { scope: 'Toggle' },\n);\n","import { HighContrastSelector, getFocusStyle, FontWeights, getHighContrastNoAdjustStyle } from '../../Styling';\nimport { IToggleStyleProps, IToggleStyles } from './Toggle.types';\n\nconst DEFAULT_PILL_WIDTH = 40;\nconst DEFAULT_PILL_HEIGHT = 20;\nconst DEFAULT_THUMB_SIZE = 12;\n\nexport const getStyles = (props: IToggleStyleProps): IToggleStyles => {\n const { theme, className, disabled, checked, inlineLabel, onOffMissing } = props;\n const { semanticColors, palette } = theme;\n\n // Tokens\n const pillUncheckedBackground = semanticColors.bodyBackground;\n const pillCheckedBackground = semanticColors.inputBackgroundChecked;\n const pillCheckedHoveredBackground = semanticColors.inputBackgroundCheckedHovered;\n const thumbUncheckedHoveredBackground = palette.neutralDark;\n const pillCheckedDisabledBackground = semanticColors.disabledBodySubtext;\n const thumbBackground = semanticColors.smallInputBorder;\n const thumbCheckedBackground = semanticColors.inputForegroundChecked;\n const thumbDisabledBackground = semanticColors.disabledBodySubtext;\n const thumbCheckedDisabledBackground = semanticColors.disabledBackground;\n const pillBorderColor = semanticColors.smallInputBorder;\n const pillBorderHoveredColor = semanticColors.inputBorderHovered;\n const pillBorderDisabledColor = semanticColors.disabledBodySubtext;\n const textDisabledColor = semanticColors.disabledText;\n\n return {\n root: [\n 'ms-Toggle',\n checked && 'is-checked',\n !disabled && 'is-enabled',\n disabled && 'is-disabled',\n theme.fonts.medium,\n {\n marginBottom: '8px',\n },\n inlineLabel && {\n display: 'flex',\n alignItems: 'center',\n },\n className,\n ],\n\n label: [\n 'ms-Toggle-label',\n { display: 'inline-block' },\n disabled && {\n color: textDisabledColor,\n selectors: {\n [HighContrastSelector]: {\n color: 'GrayText',\n },\n },\n },\n inlineLabel &&\n !onOffMissing && {\n marginRight: 16,\n },\n onOffMissing &&\n inlineLabel && {\n order: 1,\n marginLeft: 16,\n },\n inlineLabel && { wordBreak: 'break-all' },\n ],\n\n container: [\n 'ms-Toggle-innerContainer',\n {\n display: 'flex',\n position: 'relative',\n },\n ],\n\n pill: [\n 'ms-Toggle-background',\n getFocusStyle(theme, { inset: -3 }),\n {\n fontSize: '20px',\n boxSizing: 'border-box',\n width: DEFAULT_PILL_WIDTH,\n height: DEFAULT_PILL_HEIGHT,\n borderRadius: DEFAULT_PILL_HEIGHT / 2,\n transition: 'all 0.1s ease',\n border: `1px solid ${pillBorderColor}`,\n background: pillUncheckedBackground,\n cursor: 'pointer',\n display: 'flex',\n alignItems: 'center',\n padding: '0 3px',\n },\n !disabled && [\n !checked && {\n selectors: {\n ':hover': [\n {\n borderColor: pillBorderHoveredColor,\n },\n ],\n ':hover .ms-Toggle-thumb': [\n {\n backgroundColor: thumbUncheckedHoveredBackground,\n selectors: {\n [HighContrastSelector]: {\n borderColor: 'Highlight',\n },\n },\n },\n ],\n },\n },\n checked && [\n {\n background: pillCheckedBackground,\n borderColor: 'transparent',\n justifyContent: 'flex-end',\n },\n {\n selectors: {\n ':hover': [\n {\n backgroundColor: pillCheckedHoveredBackground,\n borderColor: 'transparent',\n selectors: {\n [HighContrastSelector]: {\n backgroundColor: 'Highlight',\n },\n },\n },\n ],\n [HighContrastSelector]: {\n backgroundColor: 'Highlight',\n ...getHighContrastNoAdjustStyle(),\n },\n },\n },\n ],\n ],\n disabled && [\n {\n cursor: 'default',\n },\n !checked && [\n {\n borderColor: pillBorderDisabledColor,\n },\n ],\n checked && [\n {\n backgroundColor: pillCheckedDisabledBackground,\n borderColor: 'transparent',\n justifyContent: 'flex-end',\n },\n ],\n ],\n !disabled && {\n selectors: {\n '&:hover': {\n selectors: {\n [HighContrastSelector]: {\n borderColor: 'Highlight',\n },\n },\n },\n },\n },\n ],\n\n thumb: [\n 'ms-Toggle-thumb',\n {\n display: 'block',\n width: DEFAULT_THUMB_SIZE,\n height: DEFAULT_THUMB_SIZE,\n borderRadius: '50%',\n transition: 'all 0.1s ease',\n backgroundColor: thumbBackground,\n /* Border is added to handle high contrast mode for Firefox */\n borderColor: 'transparent',\n borderWidth: DEFAULT_THUMB_SIZE / 2,\n borderStyle: 'solid',\n boxSizing: 'border-box',\n },\n !disabled &&\n checked && [\n {\n backgroundColor: thumbCheckedBackground,\n selectors: {\n [HighContrastSelector]: {\n backgroundColor: 'Window',\n borderColor: 'Window',\n },\n },\n },\n ],\n disabled && [\n !checked && [\n {\n backgroundColor: thumbDisabledBackground,\n },\n ],\n checked && [\n {\n backgroundColor: thumbCheckedDisabledBackground,\n },\n ],\n ],\n ],\n\n text: [\n 'ms-Toggle-stateText',\n {\n selectors: {\n // Workaround: make rules more specific than Label rules.\n '&&': {\n padding: '0',\n margin: '0 8px',\n userSelect: 'none',\n fontWeight: FontWeights.regular,\n },\n },\n },\n disabled && {\n selectors: {\n '&&': {\n color: textDisabledColor,\n selectors: {\n [HighContrastSelector]: {\n color: 'GrayText',\n },\n },\n },\n },\n },\n ],\n };\n};\n","import * as React from 'react';\nimport { ISearchBoxProps, ISearchBoxStyleProps, ISearchBoxStyles } from './SearchBox.types';\nimport {\n initializeComponentRef,\n warnDeprecations,\n getId,\n KeyCodes,\n classNamesFunction,\n getNativeProps,\n inputProperties,\n} from '../../Utilities';\n\nimport { IconButton } from '../../Button';\nimport { Icon } from '../../Icon';\n\nconst getClassNames = classNamesFunction<ISearchBoxStyleProps, ISearchBoxStyles>();\nconst COMPONENT_NAME = 'SearchBox';\n\nexport interface ISearchBoxState {\n value?: string;\n hasFocus?: boolean;\n}\n\nexport class SearchBoxBase extends React.Component<ISearchBoxProps, ISearchBoxState> {\n public static defaultProps: Pick<ISearchBoxProps, 'disableAnimation' | 'clearButtonProps'> = {\n disableAnimation: false,\n clearButtonProps: { ariaLabel: 'Clear text' },\n };\n\n private _rootElement = React.createRef<HTMLDivElement>();\n private _inputElement = React.createRef<HTMLInputElement>();\n private _latestValue: string;\n private _fallbackId: string;\n\n public constructor(props: ISearchBoxProps) {\n super(props);\n\n initializeComponentRef(this);\n\n warnDeprecations(COMPONENT_NAME, props, {\n labelText: 'placeholder',\n defaultValue: 'value',\n });\n\n this._latestValue = props.value || '';\n this._fallbackId = getId(COMPONENT_NAME);\n\n this.state = {\n value: this._latestValue,\n hasFocus: false,\n };\n }\n\n public UNSAFE_componentWillReceiveProps(newProps: ISearchBoxProps): void {\n if (newProps.value !== undefined) {\n this._latestValue = newProps.value;\n // If the user passes in null, substitute an empty string\n // (passing null is not allowed per typings, but users might do it anyway)\n this.setState({\n value: newProps.value || '',\n });\n }\n }\n\n public render() {\n const {\n ariaLabel,\n placeholder,\n className,\n disabled,\n underlined,\n styles,\n // eslint-disable-next-line deprecation/deprecation\n labelText,\n theme,\n clearButtonProps,\n disableAnimation,\n iconProps,\n role,\n id = this._fallbackId,\n } = this.props;\n const { value, hasFocus } = this.state;\n const placeholderValue = placeholder !== undefined ? placeholder : labelText;\n\n const classNames = getClassNames(styles!, {\n theme: theme!,\n className,\n underlined,\n hasFocus,\n disabled,\n hasInput: value!.length > 0,\n disableAnimation,\n });\n\n const nativeProps = getNativeProps<React.InputHTMLAttributes<HTMLInputElement>>(this.props, inputProperties, [\n 'className',\n 'placeholder',\n 'onFocus',\n 'onBlur',\n 'value',\n 'role',\n ]);\n\n return (\n <div role={role} ref={this._rootElement} className={classNames.root} onFocusCapture={this._onFocusCapture}>\n <div className={classNames.iconContainer} onClick={this._onClickFocus} aria-hidden={true}>\n <Icon iconName=\"Search\" {...iconProps} className={classNames.icon} />\n </div>\n <input\n {...nativeProps}\n id={id}\n className={classNames.field}\n placeholder={placeholderValue}\n onChange={this._onInputChange}\n onInput={this._onInputChange}\n onBlur={this._onBlur}\n onKeyDown={this._onKeyDown}\n value={value}\n disabled={disabled}\n role=\"searchbox\"\n aria-label={ariaLabel}\n ref={this._inputElement}\n />\n {value!.length > 0 && (\n <div className={classNames.clearButton}>\n <IconButton\n onBlur={this._onBlur}\n styles={{ root: { height: 'auto' }, icon: { fontSize: '12px' } }}\n iconProps={{ iconName: 'Clear' }}\n {...clearButtonProps}\n onClick={this._onClearClick}\n />\n </div>\n )}\n </div>\n );\n }\n\n /**\n * Sets focus to the search box input field\n */\n public focus() {\n if (this._inputElement.current) {\n this._inputElement.current.focus();\n }\n }\n\n /**\n * Returns whether or not the SearchBox has focus\n */\n public hasFocus(): boolean {\n return !!this.state.hasFocus;\n }\n\n private _onClear(ev: React.MouseEvent<HTMLAnchorElement | HTMLButtonElement> | React.KeyboardEvent<HTMLElement>) {\n this.props.onClear && this.props.onClear(ev);\n if (!ev.defaultPrevented) {\n this._latestValue = '';\n this.setState({\n value: '',\n });\n this._callOnChange(undefined, '');\n ev.stopPropagation();\n ev.preventDefault();\n\n this.focus();\n }\n }\n\n private _onClickFocus = () => {\n const inputElement = this._inputElement.current;\n if (inputElement) {\n this.focus();\n inputElement.selectionStart = inputElement.selectionEnd = 0;\n }\n };\n\n private _onFocusCapture = (ev: React.FocusEvent<HTMLElement>) => {\n this.setState({\n hasFocus: true,\n });\n\n if (this.props.onFocus) {\n this.props.onFocus(ev as React.FocusEvent<HTMLInputElement>);\n }\n };\n\n private _onClearClick = (ev: React.MouseEvent<HTMLAnchorElement | HTMLButtonElement>) => {\n const { clearButtonProps } = this.props;\n\n if (clearButtonProps && clearButtonProps.onClick) {\n clearButtonProps.onClick(ev);\n }\n\n if (!ev.defaultPrevented) {\n this._onClear(ev);\n }\n };\n\n private _onKeyDown = (ev: React.KeyboardEvent<HTMLInputElement>) => {\n switch (ev.which) {\n case KeyCodes.escape:\n this.props.onEscape && this.props.onEscape(ev);\n // Only call onClear if the search box has a value to clear. Otherwise, allow the Esc key\n // to propagate from the empty search box to a parent element such as a dialog, etc.\n if (this.state.value && !ev.defaultPrevented) {\n this._onClear(ev);\n }\n break;\n\n case KeyCodes.enter:\n if (this.props.onSearch) {\n this.props.onSearch(this.state.value);\n ev.preventDefault();\n ev.stopPropagation();\n }\n break;\n\n default:\n this.props.onKeyDown && this.props.onKeyDown(ev);\n if (ev.defaultPrevented) {\n ev.stopPropagation();\n }\n break;\n }\n };\n\n private _onBlur = (ev: React.FocusEvent<HTMLInputElement>): void => {\n this.setState({\n hasFocus: false,\n });\n\n if (this.props.onBlur) {\n this.props.onBlur(ev);\n }\n };\n\n private _onInputChange = (ev: React.ChangeEvent<HTMLInputElement>) => {\n const value = ev.target.value;\n\n if (value === this._latestValue) {\n return;\n }\n this._latestValue = value;\n\n this.setState({ value });\n this._callOnChange(ev, value);\n };\n\n private _callOnChange(ev?: React.ChangeEvent<HTMLInputElement>, newValue?: string): void {\n // eslint-disable-next-line deprecation/deprecation\n const { onChange, onChanged } = this.props;\n\n // Call @deprecated method.\n if (onChanged) {\n onChanged(newValue);\n }\n\n if (onChange) {\n onChange(ev, newValue);\n }\n }\n}\n","import {\n HighContrastSelector,\n AnimationVariables,\n normalize,\n IStyle,\n getPlaceholderStyles,\n getGlobalClassNames,\n getInputFocusStyle,\n} from '../../Styling';\nimport { ISearchBoxStyleProps, ISearchBoxStyles } from './SearchBox.types';\nimport { getRTL } from '../../Utilities';\n\nconst GlobalClassNames = {\n root: 'ms-SearchBox',\n iconContainer: 'ms-SearchBox-iconContainer',\n icon: 'ms-SearchBox-icon',\n clearButton: 'ms-SearchBox-clearButton',\n field: 'ms-SearchBox-field',\n};\n\nexport function getStyles(props: ISearchBoxStyleProps): ISearchBoxStyles {\n const { theme, underlined, disabled, hasFocus, className, hasInput, disableAnimation } = props;\n const { palette, fonts, semanticColors, effects } = theme;\n const classNames = getGlobalClassNames(GlobalClassNames, theme);\n\n // placeholder style constants\n const placeholderStyles: IStyle = {\n color: semanticColors.inputPlaceholderText,\n opacity: 1,\n };\n\n const inputIconAlt = palette.neutralSecondary;\n const inputIconAltHovered = palette.neutralPrimary;\n const inputBorderDisabled = palette.neutralLighter;\n const inputBackgroundHovered = palette.neutralLighter;\n const inputBackgroundDisabled = palette.neutralLighter;\n\n return {\n root: [\n classNames.root,\n fonts.medium,\n normalize,\n {\n color: semanticColors.inputText,\n backgroundColor: semanticColors.inputBackground,\n display: 'flex',\n flexDirection: 'row',\n flexWrap: 'nowrap',\n alignItems: 'stretch',\n // The 1px top and bottom padding ensure the input field does not overlap the border\n padding: '1px 0 1px 4px',\n borderRadius: effects.roundedCorner2,\n border: `1px solid ${semanticColors.inputBorder}`,\n height: 32,\n selectors: {\n [HighContrastSelector]: {\n borderColor: 'WindowText',\n },\n ':hover': {\n borderColor: semanticColors.inputBorderHovered,\n selectors: {\n [HighContrastSelector]: {\n borderColor: 'Highlight',\n },\n },\n },\n [`:hover .${classNames.iconContainer}`]: {\n color: semanticColors.inputIconHovered,\n },\n },\n },\n !hasFocus &&\n hasInput && {\n selectors: {\n [`:hover .${classNames.iconContainer}`]: {\n width: 4,\n },\n [`:hover .${classNames.icon}`]: {\n opacity: 0,\n pointerEvents: 'none',\n },\n },\n },\n hasFocus && [\n 'is-active',\n {\n position: 'relative',\n },\n getInputFocusStyle(\n semanticColors.inputFocusBorderAlt,\n underlined ? 0 : effects.roundedCorner2,\n underlined ? 'borderBottom' : 'border',\n ),\n ],\n disabled && [\n 'is-disabled',\n {\n borderColor: inputBorderDisabled,\n backgroundColor: inputBackgroundDisabled,\n pointerEvents: 'none',\n cursor: 'default',\n selectors: {\n [HighContrastSelector]: {\n borderColor: 'GrayText',\n },\n },\n },\n ],\n underlined && [\n 'is-underlined',\n {\n borderWidth: '0 0 1px 0',\n borderRadius: 0,\n // Underlined SearchBox has a larger padding left to vertically align with the waffle in product\n padding: '1px 0 1px 8px',\n },\n ],\n underlined &&\n disabled && {\n backgroundColor: 'transparent',\n },\n hasInput && 'can-clear',\n className,\n ],\n iconContainer: [\n classNames.iconContainer,\n {\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n flexShrink: 0,\n fontSize: 16,\n width: 32,\n textAlign: 'center',\n color: semanticColors.inputIcon,\n cursor: 'text',\n },\n hasFocus && {\n width: 4,\n },\n disabled && {\n color: semanticColors.inputIconDisabled,\n },\n !disableAnimation && {\n transition: `width ${AnimationVariables.durationValue1}`,\n },\n ],\n icon: [\n classNames.icon,\n {\n opacity: 1,\n },\n hasFocus && {\n opacity: 0,\n pointerEvents: 'none',\n },\n !disableAnimation && {\n transition: `opacity ${AnimationVariables.durationValue1} 0s`,\n },\n ],\n clearButton: [\n classNames.clearButton,\n {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'stretch',\n cursor: 'pointer',\n flexBasis: '32px',\n flexShrink: 0,\n padding: 0,\n margin: '-1px 0px',\n selectors: {\n '&:hover .ms-Button': {\n backgroundColor: inputBackgroundHovered,\n },\n '&:hover .ms-Button-icon': {\n color: inputIconAltHovered,\n },\n '.ms-Button': {\n borderRadius: getRTL(theme) ? '1px 0 0 1px' : '0 1px 1px 0',\n },\n '.ms-Button-icon': {\n color: inputIconAlt,\n },\n },\n },\n ],\n field: [\n classNames.field,\n normalize,\n getPlaceholderStyles(placeholderStyles),\n {\n backgroundColor: 'transparent',\n border: 'none',\n outline: 'none',\n fontWeight: 'inherit',\n fontFamily: 'inherit',\n fontSize: 'inherit',\n color: semanticColors.inputText,\n flex: '1 1 0px',\n // The default implicit value of 'auto' prevents the input from shrinking. Setting min-width to\n // 0px allows the input element to shrink to fit the container.\n minWidth: '0px',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n // This padding forces the text placement to round up.\n paddingBottom: 0.5,\n // This removes the IE specific clear button in the input since we implimented our own\n selectors: {\n '::-ms-clear': {\n display: 'none',\n },\n },\n },\n disabled && {\n color: semanticColors.disabledText,\n },\n ],\n };\n}\n","import * as React from 'react';\nimport { styled } from '../../Utilities';\nimport { SearchBoxBase } from './SearchBox.base';\nimport { ISearchBoxProps, ISearchBoxStyleProps, ISearchBoxStyles } from './SearchBox.types';\nimport { getStyles } from './SearchBox.styles';\n\nexport const SearchBox: React.FunctionComponent<ISearchBoxProps> = styled<\n ISearchBoxProps,\n ISearchBoxStyleProps,\n ISearchBoxStyles\n>(SearchBoxBase, getStyles, undefined, { scope: 'SearchBox' });\n","/**\n * Common constants and methods\n */\nconst TimeConstants = {\n MillisecondsInOneDay: 86400000,\n MillisecondsIn1Sec: 1000,\n MillisecondsIn1Min: 60000,\n MillisecondsIn30Mins: 1800000,\n MillisecondsIn1Hour: 3600000,\n MinutesInOneDay: 1440,\n MinutesInOneHour: 60,\n DaysInOneWeek: 7,\n MonthInOneYear: 12,\n};\nexport default TimeConstants;\n","import { DayOfWeek, MonthOfYear, FirstWeekOfYear, DateRangeType } from '../dateValues/dateValues';\nimport TimeConstants from '../dateValues/timeConstants';\n\n/**\n * Returns a date offset from the given date by the specified number of days.\n * @param date - The origin date\n * @param days - The number of days to offset. 'days' can be negative.\n * @returns A new Date object offset from the origin date by the given number of days\n */\nexport function addDays(date: Date, days: number): Date {\n const result = new Date(date.getTime());\n result.setDate(result.getDate() + days);\n return result;\n}\n\n/**\n * Returns a date offset from the given date by the specified number of weeks.\n * @param date - The origin date\n * @param weeks - The number of weeks to offset. 'weeks' can be negative.\n * @returns A new Date object offset from the origin date by the given number of weeks\n */\nexport function addWeeks(date: Date, weeks: number): Date {\n return addDays(date, weeks * TimeConstants.DaysInOneWeek);\n}\n\n/**\n * Returns a date offset from the given date by the specified number of months.\n * The method tries to preserve the day-of-month; however, if the new month does not have enough days\n * to contain the original day-of-month, we'll use the last day of the new month.\n * @param date - The origin date\n * @param months - The number of months to offset. 'months' can be negative.\n * @returns A new Date object offset from the origin date by the given number of months\n */\nexport function addMonths(date: Date, months: number): Date {\n let result = new Date(date.getTime());\n const newMonth = result.getMonth() + months;\n result.setMonth(newMonth);\n\n // We want to maintain the same day-of-month, but that may not be possible if the new month doesn't have enough days.\n // Loop until we back up to a day the new month has.\n // (Weird modulo math is due to Javascript's treatment of negative numbers in modulo)\n if (\n result.getMonth() !==\n ((newMonth % TimeConstants.MonthInOneYear) + TimeConstants.MonthInOneYear) % TimeConstants.MonthInOneYear\n ) {\n result = addDays(result, -result.getDate());\n }\n return result;\n}\n\n/**\n * Returns a date offset from the given date by the specified number of years.\n * The method tries to preserve the day-of-month; however, if the new month does not have enough days\n * to contain the original day-of-month, we'll use the last day of the new month.\n * @param date - The origin date\n * @param years - The number of years to offset. 'years' can be negative.\n * @returns A new Date object offset from the origin date by the given number of years\n */\nexport function addYears(date: Date, years: number): Date {\n let result = new Date(date.getTime());\n result.setFullYear(date.getFullYear() + years);\n\n // We want to maintain the same day-of-month, but that may not be possible if the new month doesn't have enough days.\n // Loop until we back up to a day the new month has.\n // (Weird modulo math is due to Javascript's treatment of negative numbers in modulo)\n if (\n result.getMonth() !==\n ((date.getMonth() % TimeConstants.MonthInOneYear) + TimeConstants.MonthInOneYear) % TimeConstants.MonthInOneYear\n ) {\n result = addDays(result, -result.getDate());\n }\n return result;\n}\n\n/**\n * Returns a date that is the first day of the month of the provided date.\n * @param date - The origin date\n * @returns A new Date object with the day set to the first day of the month.\n */\nexport function getMonthStart(date: Date): Date {\n return new Date(date.getFullYear(), date.getMonth(), 1, 0, 0, 0, 0);\n}\n\n/**\n * Returns a date that is the last day of the month of the provided date.\n * @param date - The origin date\n * @returns A new Date object with the day set to the last day of the month.\n */\nexport function getMonthEnd(date: Date): Date {\n return new Date(date.getFullYear(), date.getMonth() + 1, 0, 0, 0, 0, 0);\n}\n\n/**\n * Returns a date that is the first day of the year of the provided date.\n * @param date - The origin date\n * @returns A new Date object with the day set to the first day of the year.\n */\nexport function getYearStart(date: Date): Date {\n return new Date(date.getFullYear(), 0, 1, 0, 0, 0, 0);\n}\n\n/**\n * Returns a date that is the last day of the year of the provided date.\n * @param date - The origin date\n * @returns A new Date object with the day set to the last day of the year.\n */\nexport function getYearEnd(date: Date): Date {\n return new Date(date.getFullYear() + 1, 0, 0, 0, 0, 0, 0);\n}\n\n/**\n * Returns a date that is a copy of the given date, aside from the month changing to the given month.\n * The method tries to preserve the day-of-month; however, if the new month does not have enough days\n * to contain the original day-of-month, we'll use the last day of the new month.\n * @param date - The origin date\n * @param month - The 0-based index of the month to set on the date.\n * @returns A new Date object with the given month set.\n */\nexport function setMonth(date: Date, month: number): Date {\n return addMonths(date, month - date.getMonth());\n}\n\n/**\n * Compares two dates, and returns true if the two dates (not accounting for time-of-day) are equal.\n * @returns True if the two dates represent the same date (regardless of time-of-day), false otherwise.\n */\nexport function compareDates(date1: Date, date2: Date): boolean {\n if (!date1 && !date2) {\n return true;\n } else if (!date1 || !date2) {\n return false;\n } else {\n return (\n date1.getFullYear() === date2.getFullYear() &&\n date1.getMonth() === date2.getMonth() &&\n date1.getDate() === date2.getDate()\n );\n }\n}\n\n/**\n * Compare the date parts of two dates\n * @param date1 - The first date to compare\n * @param date2 - The second date to compare\n * @returns A negative value if date1 is earlier than date2, 0 if the dates are equal, or a positive value\n * if date1 is later than date2.\n */\nexport function compareDatePart(date1: Date, date2: Date): Number {\n return getDatePartHashValue(date1) - getDatePartHashValue(date2);\n}\n\n/**\n * Gets the date range array including the specified date. The date range array is calculated as the list\n * of dates accounting for the specified first day of the week and date range type.\n * @param date - The input date\n * @param dateRangeType - The desired date range type, i.e., day, week, month, etc.\n * @param firstDayOfWeek - The first day of the week.\n * @param workWeekDays - The allowed days in work week. If not provided, assumes all days are allowed.\n * @param daysToSelectInDayView - The number of days to include when using dateRangeType === DateRangeType.Day\n * for multiday view. Defaults to 1\n * @returns An array of dates representing the date range containing the specified date.\n */\nexport function getDateRangeArray(\n date: Date,\n dateRangeType: DateRangeType,\n firstDayOfWeek: DayOfWeek,\n workWeekDays?: DayOfWeek[],\n daysToSelectInDayView: number = 1,\n): Date[] {\n const datesArray = new Array<Date>();\n let startDate: Date;\n let endDate = null;\n\n if (!workWeekDays) {\n workWeekDays = [DayOfWeek.Monday, DayOfWeek.Tuesday, DayOfWeek.Wednesday, DayOfWeek.Thursday, DayOfWeek.Friday];\n }\n\n daysToSelectInDayView = Math.max(daysToSelectInDayView, 1);\n\n switch (dateRangeType) {\n case DateRangeType.Day:\n startDate = getDatePart(date);\n endDate = addDays(startDate, daysToSelectInDayView);\n break;\n\n case DateRangeType.Week:\n case DateRangeType.WorkWeek:\n startDate = getStartDateOfWeek(getDatePart(date), firstDayOfWeek);\n endDate = addDays(startDate, TimeConstants.DaysInOneWeek);\n break;\n\n case DateRangeType.Month:\n startDate = new Date(date.getFullYear(), date.getMonth(), 1);\n endDate = addMonths(startDate, 1);\n break;\n\n default:\n throw new Error('Unexpected object: ' + dateRangeType);\n }\n\n // Populate the dates array with the dates in range\n let nextDate = startDate;\n\n do {\n if (dateRangeType !== DateRangeType.WorkWeek) {\n // push all days not in work week view\n datesArray.push(nextDate);\n } else if (workWeekDays.indexOf(nextDate.getDay()) !== -1) {\n datesArray.push(nextDate);\n }\n nextDate = addDays(nextDate, 1);\n } while (!compareDates(nextDate, endDate));\n\n return datesArray;\n}\n\n/**\n * Checks whether the specified date is in the given date range.\n * @param date - The origin date\n * @param dateRange - An array of dates to do the lookup on\n * @returns True if the date matches one of the dates in the specified array, false otherwise.\n */\nexport function isInDateRangeArray(date: Date, dateRange: Date[]): boolean {\n for (const dateInRange of dateRange) {\n if (compareDates(date, dateInRange)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * Returns the week number for a date.\n * Week numbers are 1 - 52 (53) in a year\n * @param navigatedDate - A date to find the week number for.\n * @param firstDayOfWeek - The first day of the week (0-6, Sunday = 0)\n * @param firstWeekOfYear - The first week of the year (1-2)\n * @returns The weeks number array for the current month.\n */\nexport function getWeekNumbersInMonth(\n weeksInMonth: number,\n firstDayOfWeek: DayOfWeek,\n firstWeekOfYear: FirstWeekOfYear,\n navigatedDate: Date,\n): number[] {\n const selectedYear = navigatedDate.getFullYear();\n const selectedMonth = navigatedDate.getMonth();\n let dayOfMonth = 1;\n const fistDayOfMonth = new Date(selectedYear, selectedMonth, dayOfMonth);\n const endOfFirstWeek =\n dayOfMonth +\n (firstDayOfWeek + TimeConstants.DaysInOneWeek - 1) -\n adjustWeekDay(firstDayOfWeek, fistDayOfMonth.getDay());\n let endOfWeekRange = new Date(selectedYear, selectedMonth, endOfFirstWeek);\n dayOfMonth = endOfWeekRange.getDate();\n\n const weeksArray = [];\n for (let i = 0; i < weeksInMonth; i++) {\n // Get week number for end of week\n weeksArray.push(getWeekNumber(endOfWeekRange, firstDayOfWeek, firstWeekOfYear));\n dayOfMonth += TimeConstants.DaysInOneWeek;\n endOfWeekRange = new Date(selectedYear, selectedMonth, dayOfMonth);\n }\n return weeksArray;\n}\n\n/**\n * Returns the week number for a date.\n * Week numbers are 1 - 52 (53) in a year\n * @param date - A date to find the week number for.\n * @param firstDayOfWeek - The first day of the week (0-6, Sunday = 0)\n * @param firstWeekOfYear - The first week of the year (1-2)\n * @returns The week's number in the year.\n */\nexport function getWeekNumber(date: Date, firstDayOfWeek: DayOfWeek, firstWeekOfYear: FirstWeekOfYear): number {\n // First four-day week of the year - minumum days count\n const fourDayWeek = 4;\n\n switch (firstWeekOfYear) {\n case FirstWeekOfYear.FirstFullWeek:\n return getWeekOfYearFullDays(date, firstDayOfWeek, TimeConstants.DaysInOneWeek);\n\n case FirstWeekOfYear.FirstFourDayWeek:\n return getWeekOfYearFullDays(date, firstDayOfWeek, fourDayWeek);\n\n default:\n return getFirstDayWeekOfYear(date, firstDayOfWeek);\n }\n}\n\n/**\n * Gets the date for the first day of the week based on the given date assuming\n * the specified first day of the week.\n * @param date - The date to find the beginning of the week date for.\n * @returns A new date object representing the first day of the week containing the input date.\n */\nexport function getStartDateOfWeek(date: Date, firstDayOfWeek: DayOfWeek): Date {\n let daysOffset = firstDayOfWeek - date.getDay();\n if (daysOffset > 0) {\n // If first day of week is > date, go 1 week back, to ensure resulting date is in the past.\n daysOffset -= TimeConstants.DaysInOneWeek;\n }\n return addDays(date, daysOffset);\n}\n\n/**\n * Gets the date for the last day of the week based on the given date assuming\n * the specified first day of the week.\n * @param date - The date to find the beginning of the week date for.\n * @returns A new date object representing the first day of the week containing the input date.\n */\nexport function getEndDateOfWeek(date: Date, firstDayOfWeek: DayOfWeek): Date {\n const lastDayOfWeek = firstDayOfWeek - 1 >= 0 ? firstDayOfWeek - 1 : TimeConstants.DaysInOneWeek - 1;\n let daysOffset = lastDayOfWeek - date.getDay();\n if (daysOffset < 0) {\n // If last day of week is < date, go 1 week forward, to ensure resulting date is in the future.\n daysOffset += TimeConstants.DaysInOneWeek;\n }\n return addDays(date, daysOffset);\n}\n\n/**\n * Gets a new date with the time portion zeroed out, i.e., set to midnight\n * @param date - The origin date\n * @returns A new date with the time set to midnight\n */\nfunction getDatePart(date: Date): Date {\n return new Date(date.getFullYear(), date.getMonth(), date.getDate());\n}\n\n/**\n * Helper function to assist in date comparisons\n */\nexport function getDatePartHashValue(date: Date): number {\n // Generate date hash value created as sum of Date (up to 31 = 5 bits), Month (up to 11 = 4 bits) and Year.\n return date.getDate() + (date.getMonth() << 5) + (date.getFullYear() << 9);\n}\n\n/**\n * Helper function for getWeekNumber.\n * Returns week number for a date\n * @param date - current selected date.\n * @param firstDayOfWeek - The first day of week (0-6, Sunday = 0)\n * @param numberOfFullDays - week settings.\n * @returns The week's number in the year.\n */\nfunction getWeekOfYearFullDays(date: Date, firstDayOfWeek: DayOfWeek, numberOfFullDays: number): number {\n const dayOfYear = getDayOfYear(date) - 1;\n let num = date.getDay() - (dayOfYear % TimeConstants.DaysInOneWeek);\n\n const lastDayOfPrevYear = new Date(date.getFullYear() - 1, MonthOfYear.December, 31);\n const daysInYear = getDayOfYear(lastDayOfPrevYear) - 1;\n\n let num2 = (firstDayOfWeek - num + 2 * TimeConstants.DaysInOneWeek) % TimeConstants.DaysInOneWeek;\n if (num2 !== 0 && num2 >= numberOfFullDays) {\n num2 -= TimeConstants.DaysInOneWeek;\n }\n\n let num3 = dayOfYear - num2;\n if (num3 < 0) {\n num -= daysInYear % TimeConstants.DaysInOneWeek;\n num2 = (firstDayOfWeek - num + 2 * TimeConstants.DaysInOneWeek) % TimeConstants.DaysInOneWeek;\n if (num2 !== 0 && num2 + 1 >= numberOfFullDays) {\n num2 -= TimeConstants.DaysInOneWeek;\n }\n\n num3 = daysInYear - num2;\n }\n\n return Math.floor(num3 / TimeConstants.DaysInOneWeek + 1);\n}\n\n/**\n * Helper function for getWeekNumber.\n * Returns week number for a date\n * @param date - current selected date.\n * @param firstDayOfWeek - The first day of week (0-6, Sunday = 0)\n * @returns The week's number in the year.\n */\nfunction getFirstDayWeekOfYear(date: Date, firstDayOfWeek: number): number {\n const num = getDayOfYear(date) - 1;\n const num2 = date.getDay() - (num % TimeConstants.DaysInOneWeek);\n const num3 = (num2 - firstDayOfWeek + 2 * TimeConstants.DaysInOneWeek) % TimeConstants.DaysInOneWeek;\n\n return Math.floor((num + num3) / TimeConstants.DaysInOneWeek + 1);\n}\n\n/**\n * Helper function for getWeekNumber.\n * Returns adjusted week day number when firstDayOfWeek is other than Sunday\n * For Week Day Number comparison checks\n * @param firstDayOfWeek - The first day of week (0-6, Sunday = 0)\n * @param dateWeekDay - shifts number forward to 1 week in case passed as true\n * @returns The day of week adjusted to `firstDayOfWeek`; e.g. when `firstDayOfWeek` is Monday (1),\n * Sunday becomes 7.\n */\nfunction adjustWeekDay(firstDayOfWeek: DayOfWeek, dateWeekDay: DayOfWeek): number {\n return firstDayOfWeek !== DayOfWeek.Sunday && dateWeekDay < firstDayOfWeek\n ? dateWeekDay + TimeConstants.DaysInOneWeek\n : dateWeekDay;\n}\n\n/**\n * Returns the day number for a date in a year\n * The number of days since January 1st in the particular year.\n * @param date - A date to find the day number for.\n * @returns The day's number in the year.\n */\nfunction getDayOfYear(date: Date): number {\n const month = date.getMonth();\n const year = date.getFullYear();\n let daysUntilDate = 0;\n\n for (let i = 0; i < month; i++) {\n daysUntilDate += daysInMonth(i + 1, year);\n }\n\n daysUntilDate += date.getDate();\n\n return daysUntilDate;\n}\n\n/**\n * Returns the number of days in the month\n * @param month - The month number to target (months 1-12).\n * @param year - The year to target.\n * @returns The number of days in the month.\n */\nfunction daysInMonth(month: number, year: number): number {\n return new Date(year, month, 0).getDate();\n}\n","import * as React from 'react';\nimport { ISettings, Customizations } from './Customizations';\nimport { CustomizerContext } from './CustomizerContext';\n\n/**\n * Hook to get Customizations settings from Customizations singleton or CustomizerContext.\n * It will trigger component state update on settings change observed.\n */\nexport function useCustomizationSettings(properties: string[], scopeName?: string): ISettings {\n const forceUpdate = useForceUpdate();\n const { customizations } = React.useContext(CustomizerContext);\n const { inCustomizerContext } = customizations;\n React.useEffect(() => {\n if (!inCustomizerContext) {\n Customizations.observe(forceUpdate);\n }\n return () => {\n if (!inCustomizerContext) {\n Customizations.unobserve(forceUpdate);\n }\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps -- exclude forceUpdate\n }, [inCustomizerContext]);\n\n return Customizations.getSettings(properties, scopeName, customizations);\n}\n\nfunction useForceUpdate() {\n const [, setValue] = React.useState(0);\n return () => setValue(value => ++value);\n}\n","import * as React from 'react';\nimport { IStyleSet, IStyleFunctionOrObject, concatStyleSetsWithProps } from '@uifabric/merge-styles';\nimport { useCustomizationSettings } from './customizations/useCustomizationSettings';\n\nexport interface IPropsWithStyles<TStyleProps, TStyleSet extends IStyleSet<TStyleSet>> {\n styles?: IStyleFunctionOrObject<TStyleProps, TStyleSet>;\n}\n\nexport interface ICustomizableProps {\n /**\n * Name of scope, which can be targeted using the Customizer.\n */\n scope: string;\n\n /**\n * List of fields which can be customized.\n * @defaultvalue [ 'theme', 'styles' ]\n */\n fields?: string[];\n}\n\nconst DefaultFields = ['theme', 'styles'];\n\nexport type StyleFunction<TStyleProps, TStyleSet> = IStyleFunctionOrObject<TStyleProps, TStyleSet> & {\n /** Cache for all style functions. */\n __cachedInputs__: (IStyleFunctionOrObject<TStyleProps, TStyleSet> | undefined)[];\n\n /** True if no styles prop or styles from Customizer is passed to wrapped component. */\n __noStyleOverride__: boolean;\n};\n\n/**\n * The styled HOC wrapper allows you to create a functional wrapper around a given component which will resolve\n * getStyles functional props, and mix customized props passed in using concatStyleSets.\n *\n * @example\n * ```tsx\n * export const Toggle = styled(\n * ToggleBase,\n * props => ({ root: { background: 'red' }})\n * );\n * ```\n * @param Component - The unstyled base component to render, which receives styles.\n * @param baseStyles - The styles which should be curried with the component.\n * @param getProps - A helper which provides default props.\n * @param customizable - An object which defines which props can be customized using the Customizer.\n * @param pure - A boolean indicating if the component should avoid re-rendering when props haven't changed.\n * Note that pure should not be used on components which allow children, or take in complex objects or\n * arrays as props which could mutate on every render.\n */\nexport function styled<\n TComponentProps extends IPropsWithStyles<TStyleProps, TStyleSet>,\n TStyleProps,\n TStyleSet extends IStyleSet<TStyleSet>\n>(\n Component: React.ComponentClass<TComponentProps> | React.FunctionComponent<TComponentProps>,\n baseStyles: IStyleFunctionOrObject<TStyleProps, TStyleSet>,\n getProps?: (props: TComponentProps) => Partial<TComponentProps>,\n customizable?: ICustomizableProps,\n pure?: boolean,\n): React.FunctionComponent<TComponentProps>;\nexport function styled<\n TComponentProps extends IPropsWithStyles<TStyleProps, TStyleSet> & React.RefAttributes<TRef>,\n TStyleProps,\n TStyleSet extends IStyleSet<TStyleSet>,\n TRef = unknown\n>(\n Component: React.ComponentClass<TComponentProps> | React.FunctionComponent<TComponentProps>,\n baseStyles: IStyleFunctionOrObject<TStyleProps, TStyleSet>,\n getProps?: (props: TComponentProps) => Partial<TComponentProps>,\n customizable?: ICustomizableProps,\n pure?: boolean,\n): React.ForwardRefExoticComponent<React.PropsWithoutRef<TComponentProps> & React.RefAttributes<TRef>>;\nexport function styled<\n TComponentProps extends IPropsWithStyles<TStyleProps, TStyleSet> & React.RefAttributes<TRef>,\n TStyleProps,\n TStyleSet extends IStyleSet<TStyleSet>,\n TRef = unknown\n>(\n Component: React.ComponentClass<TComponentProps> | React.FunctionComponent<TComponentProps>,\n baseStyles: IStyleFunctionOrObject<TStyleProps, TStyleSet>,\n getProps?: (props: TComponentProps) => Partial<TComponentProps>,\n customizable?: ICustomizableProps,\n pure?: boolean,\n) {\n customizable = customizable || { scope: '', fields: undefined };\n\n const { scope, fields = DefaultFields } = customizable;\n\n const Wrapped = React.forwardRef((props: TComponentProps, forwardedRef: React.Ref<TRef>) => {\n const styles = React.useRef<StyleFunction<TStyleProps, TStyleSet>>();\n\n const settings = useCustomizationSettings(fields, scope);\n const { styles: customizedStyles, dir, ...rest } = settings;\n const additionalProps = getProps ? getProps(props) : undefined;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const cache = (styles.current && (styles.current as any).__cachedInputs__) || [];\n if (!styles.current || customizedStyles !== cache[1] || props.styles !== cache[2]) {\n // Using styled components as the Component arg will result in nested styling arrays.\n const concatenatedStyles: IStyleFunctionOrObject<TStyleProps, TStyleSet> = (styleProps: TStyleProps) =>\n concatStyleSetsWithProps(styleProps, baseStyles, customizedStyles, props.styles);\n\n // The __cachedInputs__ array is attached to the function and consumed by the\n // classNamesFunction as a list of keys to include for memoizing classnames.\n (concatenatedStyles as StyleFunction<TStyleProps, TStyleSet>).__cachedInputs__ = [\n baseStyles,\n customizedStyles,\n props.styles,\n ];\n\n (concatenatedStyles as StyleFunction<TStyleProps, TStyleSet>).__noStyleOverride__ =\n !customizedStyles && !props.styles;\n\n styles.current = concatenatedStyles as StyleFunction<TStyleProps, TStyleSet>;\n }\n\n return <Component ref={forwardedRef} {...rest} {...additionalProps} {...props} styles={styles.current} />;\n });\n // Function.prototype.name is an ES6 feature, so the cast to any is required until we're\n // able to drop IE 11 support and compile with ES6 libs\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Wrapped.displayName = `Styled${Component.displayName || (Component as any).name}`;\n\n // This preserves backwards compatibility.\n const pureComponent = pure ? React.memo(Wrapped) : Wrapped;\n // Check if the wrapper has a displayName after it has been memoized. Then assign it to the pure component.\n if (Wrapped.displayName) {\n pureComponent.displayName = Wrapped.displayName;\n }\n\n return pureComponent;\n}\n","import * as React from 'react';\nimport { ICheckProps } from './Check.types';\nimport { Icon, FontIcon } from '../../Icon';\nimport { classNamesFunction } from '../../Utilities';\nimport { ICheckStyleProps, ICheckStyles } from './Check.types';\n\nconst getClassNames = classNamesFunction<ICheckStyleProps, ICheckStyles>();\n\nexport const CheckBase: React.FunctionComponent<ICheckProps> = props => {\n const { checked = false, className, theme, styles, useFastIcons = true } = props;\n\n const classNames = getClassNames(styles!, { theme: theme!, className, checked });\n const IconComponent = useFastIcons ? FontIcon : Icon;\n\n return (\n <div className={classNames.root}>\n <IconComponent iconName=\"CircleRing\" className={classNames.circle} />\n <IconComponent iconName=\"StatusCircleCheckmark\" className={classNames.check} />\n </div>\n );\n};\nCheckBase.displayName = 'CheckBase';\n","import * as React from 'react';\nimport { styled } from '../../Utilities';\nimport { ICheckProps, ICheckStyleProps, ICheckStyles } from './Check.types';\nimport { CheckBase } from './Check.base';\nimport { getStyles } from './Check.styles';\n\nexport const Check: React.FunctionComponent<ICheckProps> = styled<ICheckProps, ICheckStyleProps, ICheckStyles>(\n CheckBase,\n getStyles,\n undefined,\n {\n scope: 'Check',\n },\n true,\n);\n","import { IButtonStyles } from '../Button.types';\nimport { ITheme, concatStyleSets, HighContrastSelector } from '../../../Styling';\nimport { memoizeFunction } from '../../../Utilities';\nimport { getStyles as getBaseButtonStyles } from '../BaseButton.styles';\nimport { getStyles as getSplitButtonStyles } from '../SplitButton/SplitButton.styles';\n\nexport const getStyles = memoizeFunction(\n (theme: ITheme, customStyles?: IButtonStyles): IButtonStyles => {\n const baseButtonStyles: IButtonStyles = getBaseButtonStyles(theme);\n const splitButtonStyles: IButtonStyles = getSplitButtonStyles(theme);\n const { palette, semanticColors } = theme;\n const iconButtonStyles: IButtonStyles = {\n root: {\n padding: '0 4px',\n width: '32px',\n height: '32px',\n backgroundColor: 'transparent',\n border: 'none',\n color: semanticColors.link,\n },\n\n rootHovered: {\n color: palette.themeDarkAlt,\n backgroundColor: palette.neutralLighter,\n selectors: {\n [HighContrastSelector]: {\n borderColor: 'Highlight',\n color: 'Highlight',\n },\n },\n },\n\n rootHasMenu: {\n width: 'auto',\n },\n\n rootPressed: {\n color: palette.themeDark,\n backgroundColor: palette.neutralLight,\n },\n\n rootExpanded: {\n color: palette.themeDark,\n backgroundColor: palette.neutralLight,\n },\n\n rootChecked: {\n color: palette.themeDark,\n backgroundColor: palette.neutralLight,\n },\n\n rootCheckedHovered: {\n color: palette.themeDark,\n backgroundColor: palette.neutralQuaternaryAlt,\n },\n\n rootDisabled: {\n color: palette.neutralTertiaryAlt,\n },\n };\n\n return concatStyleSets(baseButtonStyles, iconButtonStyles, splitButtonStyles, customStyles)!;\n },\n);\n","import * as React from 'react';\nimport { BaseButton } from '../BaseButton';\nimport { customizable, nullRender } from '../../../Utilities';\nimport { IButtonProps } from '../Button.types';\nimport { getStyles } from './IconButton.styles';\n\n/**\n * {@docCategory Button}\n */\n@customizable('IconButton', ['theme', 'styles'], true)\nexport class IconButton extends React.Component<IButtonProps, {}> {\n public render(): JSX.Element {\n const { styles, theme } = this.props;\n\n return (\n <BaseButton\n {...this.props}\n variantClassName=\"ms-Button--icon\"\n styles={getStyles(theme!, styles)}\n onRenderText={nullRender}\n onRenderDescription={nullRender}\n />\n );\n }\n}\n","/**\n * The helper functions here will make the target element as modal to screen readers, by placing aria-hidden on elements\n * that are siblings to the target element and the target element's ancestors (because aria-hidden gets inherited).\n * That way, all other elements on the page are hidden to the screen reader.\n */\n\nimport { getDocument } from './dom/getDocument';\n\n/**\n * Call this on a target element to make it modal to screen readers.\n * Returns a function that undoes the changes it made.\n */\nexport function modalize(target: HTMLElement): () => void {\n let affectedNodes: HTMLElement[] = [];\n const targetDocument = getDocument(target) || document;\n\n // start at target, then recurse and do the same for parent, until we reach <body>\n while (target !== targetDocument.body) {\n // grab all siblings of current element\n for (const sibling of (target.parentElement!.children as unknown) as Array<HTMLElement>) {\n // but ignore elements that are already aria-hidden\n if (sibling !== target && sibling.getAttribute('aria-hidden')?.toLowerCase() !== 'true') {\n affectedNodes.push(sibling);\n }\n }\n\n if (!target.parentElement) {\n break;\n }\n target = target.parentElement;\n }\n\n // take all those elements and set aria-hidden=true on them\n affectedNodes.forEach(node => {\n node.setAttribute('aria-hidden', 'true');\n });\n\n return () => {\n unmodalize(affectedNodes);\n affectedNodes = []; // dispose\n };\n}\n\n/**\n * Undoes the changes that modalize() did.\n */\nfunction unmodalize(affectedNodes: HTMLElement[]) {\n affectedNodes.forEach(node => {\n // set instead of removing in case other components explicitly set aria-hidden and do ==\"true\" or ==\"false\"\n node.setAttribute('aria-hidden', 'false');\n });\n}\n","import * as React from 'react';\nimport { modalize } from '@uifabric/utilities';\nimport {\n elementContains,\n getNativeProps,\n divProperties,\n getFirstTabbable,\n getLastTabbable,\n getNextElement,\n getDocument,\n focusAsync,\n initializeComponentRef,\n on,\n} from '../../Utilities';\nimport { IFocusTrapZone, IFocusTrapZoneProps } from './FocusTrapZone.types';\n\nexport class FocusTrapZone extends React.Component<IFocusTrapZoneProps, {}> implements IFocusTrapZone {\n private static _focusStack: FocusTrapZone[] = [];\n\n private _root = React.createRef<HTMLDivElement>();\n private _firstBumper = React.createRef<HTMLDivElement>();\n private _lastBumper = React.createRef<HTMLDivElement>();\n private _hasFocus: boolean = false;\n private _unmodalize?: () => void;\n\n private _previouslyFocusedElementOutsideTrapZone: HTMLElement;\n private _previouslyFocusedElementInTrapZone?: HTMLElement;\n private _disposeFocusHandler: (() => void) | undefined;\n private _disposeClickHandler: (() => void) | undefined;\n\n public constructor(props: IFocusTrapZoneProps) {\n super(props);\n initializeComponentRef(this);\n }\n\n public componentDidMount(): void {\n this._bringFocusIntoZone();\n this._updateEventHandlers(this.props);\n\n if (!this.props.disabled && this._root.current && this.props.enableAriaHiddenSiblings) {\n this._unmodalize = modalize(this._root.current);\n }\n }\n\n public UNSAFE_componentWillReceiveProps(nextProps: IFocusTrapZoneProps): void {\n const { elementToFocusOnDismiss } = nextProps;\n if (elementToFocusOnDismiss && this._previouslyFocusedElementOutsideTrapZone !== elementToFocusOnDismiss) {\n this._previouslyFocusedElementOutsideTrapZone = elementToFocusOnDismiss;\n }\n\n this._updateEventHandlers(nextProps);\n }\n\n public componentDidUpdate(prevProps: IFocusTrapZoneProps) {\n const prevForceFocusInsideTrap =\n prevProps.forceFocusInsideTrap !== undefined ? prevProps.forceFocusInsideTrap : true;\n const newForceFocusInsideTrap =\n this.props.forceFocusInsideTrap !== undefined ? this.props.forceFocusInsideTrap : true;\n const prevDisabled = prevProps.disabled !== undefined ? prevProps.disabled : false;\n const newDisabled = this.props.disabled !== undefined ? this.props.disabled : false;\n\n if ((!prevForceFocusInsideTrap && newForceFocusInsideTrap) || (prevDisabled && !newDisabled)) {\n // Transition from forceFocusInsideTrap / FTZ disabled to enabled.\n // Emulate what happens when a FocusTrapZone gets mounted.\n this._bringFocusIntoZone();\n if (!this._unmodalize && this._root.current && this.props.enableAriaHiddenSiblings) {\n this._unmodalize = modalize(this._root.current);\n }\n } else if ((prevForceFocusInsideTrap && !newForceFocusInsideTrap) || (!prevDisabled && newDisabled)) {\n // Transition from forceFocusInsideTrap / FTZ enabled to disabled.\n // Emulate what happens when a FocusTrapZone gets unmounted.\n this._returnFocusToInitiator();\n if (this._unmodalize) {\n this._unmodalize();\n }\n }\n }\n\n public componentWillUnmount(): void {\n // don't handle return focus unless forceFocusInsideTrap is true or focus is still within FocusTrapZone\n if (\n !this.props.disabled ||\n this.props.forceFocusInsideTrap ||\n !elementContains(this._root.current, this._getDocument().activeElement as HTMLElement)\n ) {\n this._returnFocusToInitiator();\n }\n\n // Dispose of event handlers so their closures can be garbage-collected\n if (this._disposeClickHandler) {\n this._disposeClickHandler();\n this._disposeClickHandler = undefined;\n }\n\n if (this._disposeFocusHandler) {\n this._disposeFocusHandler();\n this._disposeFocusHandler = undefined;\n }\n\n if (this._unmodalize) {\n this._unmodalize();\n }\n\n // Dispose of element references so the DOM Nodes can be garbage-collected\n delete this._previouslyFocusedElementInTrapZone;\n delete this._previouslyFocusedElementOutsideTrapZone;\n }\n\n public render(): JSX.Element {\n const { className, disabled = false, ariaLabelledBy } = this.props;\n const divProps = getNativeProps<React.HTMLAttributes<HTMLDivElement>>(this.props, divProperties);\n\n const bumperProps = {\n 'aria-hidden': true,\n style: {\n pointerEvents: 'none',\n position: 'fixed', // 'fixed' prevents browsers from scrolling to bumpers when viewport does not contain them\n },\n tabIndex: disabled ? -1 : 0, // make bumpers tabbable only when enabled\n 'data-is-visible': true,\n } as React.HTMLAttributes<HTMLDivElement>;\n\n return (\n <div\n {...divProps}\n className={className}\n ref={this._root}\n aria-labelledby={ariaLabelledBy}\n onFocusCapture={this._onFocusCapture}\n onFocus={this._onRootFocus}\n onBlur={this._onRootBlur}\n >\n <div {...bumperProps} ref={this._firstBumper} onFocus={this._onFirstBumperFocus} />\n {this.props.children}\n <div {...bumperProps} ref={this._lastBumper} onFocus={this._onLastBumperFocus} />\n </div>\n );\n }\n\n public focus() {\n // eslint-disable-next-line deprecation/deprecation\n const { focusPreviouslyFocusedInnerElement, firstFocusableSelector, firstFocusableTarget } = this.props;\n\n if (\n focusPreviouslyFocusedInnerElement &&\n this._previouslyFocusedElementInTrapZone &&\n elementContains(this._root.current, this._previouslyFocusedElementInTrapZone)\n ) {\n // focus on the last item that had focus in the zone before we left the zone\n this._focusAsync(this._previouslyFocusedElementInTrapZone);\n return;\n }\n\n const focusSelector =\n typeof firstFocusableSelector === 'string'\n ? firstFocusableSelector\n : firstFocusableSelector && firstFocusableSelector();\n\n let _firstFocusableChild: HTMLElement | null = null;\n\n if (this._root.current) {\n if (typeof firstFocusableTarget === 'string') {\n _firstFocusableChild = this._root.current.querySelector(firstFocusableTarget);\n } else if (firstFocusableTarget) {\n _firstFocusableChild = firstFocusableTarget(this._root.current);\n } else if (focusSelector) {\n _firstFocusableChild = this._root.current.querySelector('.' + focusSelector);\n }\n\n // Fall back to first element if query selector did not match any elements.\n if (!_firstFocusableChild) {\n _firstFocusableChild = getNextElement(\n this._root.current,\n this._root.current.firstChild as HTMLElement,\n false,\n false,\n false,\n true,\n );\n }\n }\n if (_firstFocusableChild) {\n this._focusAsync(_firstFocusableChild);\n }\n }\n\n private _focusAsync(element: HTMLElement): void {\n if (!this._isBumper(element)) {\n focusAsync(element);\n }\n }\n\n private _onRootFocus = (ev: React.FocusEvent<HTMLDivElement>) => {\n if (this.props.onFocus) {\n this.props.onFocus(ev);\n }\n\n this._hasFocus = true;\n };\n\n private _onRootBlur = (ev: React.FocusEvent<HTMLDivElement>) => {\n if (this.props.onBlur) {\n this.props.onBlur(ev);\n }\n\n let relatedTarget = ev.relatedTarget;\n if (ev.relatedTarget === null) {\n // In IE11, due to lack of support, event.relatedTarget is always\n // null making every onBlur call to be \"outside\" of the ComboBox\n // even when it's not. Using document.activeElement is another way\n // for us to be able to get what the relatedTarget without relying\n // on the event\n relatedTarget = this._getDocument().activeElement as Element;\n }\n\n if (!elementContains(this._root.current, relatedTarget as HTMLElement)) {\n this._hasFocus = false;\n }\n };\n\n private _onFirstBumperFocus = () => {\n this._onBumperFocus(true);\n };\n\n private _onLastBumperFocus = () => {\n this._onBumperFocus(false);\n };\n\n private _onBumperFocus = (isFirstBumper: boolean) => {\n if (this.props.disabled) {\n return;\n }\n\n const currentBumper = (isFirstBumper === this._hasFocus\n ? this._lastBumper.current\n : this._firstBumper.current) as HTMLElement;\n\n if (this._root.current) {\n const nextFocusable =\n isFirstBumper === this._hasFocus\n ? getLastTabbable(this._root.current, currentBumper, true, false)\n : getFirstTabbable(this._root.current, currentBumper, true, false);\n\n if (nextFocusable) {\n if (this._isBumper(nextFocusable)) {\n // This can happen when FTZ contains no tabbable elements.\n // focus will take care of finding a focusable element in FTZ.\n this.focus();\n } else {\n nextFocusable.focus();\n }\n }\n }\n };\n\n private _bringFocusIntoZone(): void {\n const { elementToFocusOnDismiss, disabled = false, disableFirstFocus = false } = this.props;\n\n if (disabled) {\n return;\n }\n\n FocusTrapZone._focusStack.push(this);\n\n this._previouslyFocusedElementOutsideTrapZone = elementToFocusOnDismiss\n ? elementToFocusOnDismiss\n : (this._getDocument().activeElement as HTMLElement);\n if (!disableFirstFocus && !elementContains(this._root.current, this._previouslyFocusedElementOutsideTrapZone)) {\n this.focus();\n }\n }\n\n private _returnFocusToInitiator(): void {\n const { ignoreExternalFocusing } = this.props;\n\n FocusTrapZone._focusStack = FocusTrapZone._focusStack.filter((value: FocusTrapZone) => {\n return this !== value;\n });\n\n const doc = this._getDocument();\n const activeElement = doc.activeElement as HTMLElement;\n if (\n !ignoreExternalFocusing &&\n this._previouslyFocusedElementOutsideTrapZone &&\n typeof this._previouslyFocusedElementOutsideTrapZone.focus === 'function' &&\n (elementContains(this._root.current, activeElement) || activeElement === doc.body)\n ) {\n this._focusAsync(this._previouslyFocusedElementOutsideTrapZone);\n }\n }\n\n private _updateEventHandlers(newProps: IFocusTrapZoneProps): void {\n const { isClickableOutsideFocusTrap = false, forceFocusInsideTrap = true } = newProps;\n\n if (forceFocusInsideTrap && !this._disposeFocusHandler) {\n this._disposeFocusHandler = on(window, 'focus', this._forceFocusInTrap, true);\n } else if (!forceFocusInsideTrap && this._disposeFocusHandler) {\n this._disposeFocusHandler();\n this._disposeFocusHandler = undefined;\n }\n\n if (!isClickableOutsideFocusTrap && !this._disposeClickHandler) {\n this._disposeClickHandler = on(window, 'click', this._forceClickInTrap, true);\n } else if (isClickableOutsideFocusTrap && this._disposeClickHandler) {\n this._disposeClickHandler();\n this._disposeClickHandler = undefined;\n }\n }\n\n private _onFocusCapture = (ev: React.FocusEvent<HTMLDivElement>) => {\n if (this.props.onFocusCapture) {\n this.props.onFocusCapture(ev);\n }\n\n if (ev.target !== ev.currentTarget && !this._isBumper(ev.target)) {\n // every time focus changes within the trap zone, remember the focused element so that\n // it can be restored if focus leaves the pane and returns via keystroke (i.e. via a call to this.focus(true))\n this._previouslyFocusedElementInTrapZone = ev.target as HTMLElement;\n }\n };\n\n private _isBumper(element: HTMLElement): boolean {\n return element === this._firstBumper.current || element === this._lastBumper.current;\n }\n\n private _forceFocusInTrap = (ev: FocusEvent): void => {\n if (this.props.disabled) {\n return;\n }\n\n if (FocusTrapZone._focusStack.length && this === FocusTrapZone._focusStack[FocusTrapZone._focusStack.length - 1]) {\n const focusedElement = this._getDocument().activeElement as HTMLElement;\n\n if (!elementContains(this._root.current, focusedElement)) {\n const doc = this._getDocument();\n if (doc && doc.activeElement === doc.body) {\n setTimeout(() => {\n if (doc && doc.activeElement === doc.body) {\n this.focus();\n this._hasFocus = true;\n }\n }, 0);\n } else {\n this.focus();\n this._hasFocus = true; // set focus here since we stop event propagation\n }\n ev.preventDefault();\n ev.stopPropagation();\n }\n }\n };\n\n private _forceClickInTrap = (ev: MouseEvent): void => {\n if (this.props.disabled) {\n return;\n }\n\n if (FocusTrapZone._focusStack.length && this === FocusTrapZone._focusStack[FocusTrapZone._focusStack.length - 1]) {\n const clickedElement = ev.target as HTMLElement;\n\n if (clickedElement && !elementContains(this._root.current, clickedElement)) {\n this.focus();\n this._hasFocus = true; // set focus here since we stop event propagation\n ev.preventDefault();\n ev.stopPropagation();\n }\n }\n };\n\n private _getDocument(): Document {\n return getDocument(this._root.current)!;\n }\n}\n","import { IButtonStyles } from '../Button.types';\nimport {\n ITheme,\n concatStyleSets,\n getFocusStyle,\n HighContrastSelector,\n getHighContrastNoAdjustStyle,\n} from '../../../Styling';\nimport { memoizeFunction } from '../../../Utilities';\nimport { getStyles as getBaseButtonStyles } from '../BaseButton.styles';\nimport { getStyles as getSplitButtonStyles } from '../SplitButton/SplitButton.styles';\nimport { ButtonGlobalClassNames } from '../BaseButton.classNames';\n\nexport const getStyles = memoizeFunction(\n (theme: ITheme, customStyles?: IButtonStyles, focusInset?: string, focusColor?: string): IButtonStyles => {\n const baseButtonStyles: IButtonStyles = getBaseButtonStyles(theme);\n const baseSplitButtonStyles: IButtonStyles = getSplitButtonStyles(theme);\n\n const { palette: p, semanticColors } = theme;\n\n const commandButtonHighContrastFocus = {\n left: 4,\n top: 4,\n bottom: 4,\n right: 4,\n border: 'none',\n };\n\n const commandButtonStyles: IButtonStyles = {\n root: [\n getFocusStyle(theme, {\n inset: 2,\n highContrastStyle: commandButtonHighContrastFocus,\n borderColor: 'transparent',\n }),\n theme.fonts.medium,\n {\n minWidth: '40px',\n backgroundColor: p.white,\n color: p.neutralPrimary,\n padding: '0 4px',\n border: 'none',\n borderRadius: 0,\n selectors: {\n [HighContrastSelector]: {\n border: 'none',\n },\n },\n },\n ],\n\n rootHovered: {\n backgroundColor: p.neutralLighter,\n color: p.neutralDark,\n selectors: {\n [HighContrastSelector]: {\n color: 'Highlight',\n },\n [`.${ButtonGlobalClassNames.msButtonIcon}`]: {\n color: p.themeDarkAlt,\n },\n [`.${ButtonGlobalClassNames.msButtonMenuIcon}`]: {\n color: p.neutralPrimary,\n },\n },\n },\n\n rootPressed: {\n backgroundColor: p.neutralLight,\n color: p.neutralDark,\n selectors: {\n [`.${ButtonGlobalClassNames.msButtonIcon}`]: {\n color: p.themeDark,\n },\n [`.${ButtonGlobalClassNames.msButtonMenuIcon}`]: {\n color: p.neutralPrimary,\n },\n },\n },\n\n rootChecked: {\n backgroundColor: p.neutralLight,\n color: p.neutralDark,\n selectors: {\n [`.${ButtonGlobalClassNames.msButtonIcon}`]: {\n color: p.themeDark,\n },\n [`.${ButtonGlobalClassNames.msButtonMenuIcon}`]: {\n color: p.neutralPrimary,\n },\n },\n },\n\n rootCheckedHovered: {\n backgroundColor: p.neutralQuaternaryAlt,\n selectors: {\n [`.${ButtonGlobalClassNames.msButtonIcon}`]: {\n color: p.themeDark,\n },\n [`.${ButtonGlobalClassNames.msButtonMenuIcon}`]: {\n color: p.neutralPrimary,\n },\n },\n },\n\n rootExpanded: {\n backgroundColor: p.neutralLight,\n color: p.neutralDark,\n selectors: {\n [`.${ButtonGlobalClassNames.msButtonIcon}`]: {\n color: p.themeDark,\n },\n [`.${ButtonGlobalClassNames.msButtonMenuIcon}`]: {\n color: p.neutralPrimary,\n },\n },\n },\n\n rootExpandedHovered: {\n backgroundColor: p.neutralQuaternaryAlt,\n },\n\n rootDisabled: {\n backgroundColor: p.white,\n selectors: {\n [`.${ButtonGlobalClassNames.msButtonIcon}`]: {\n color: semanticColors.disabledBodySubtext,\n selectors: {\n [HighContrastSelector]: {\n color: 'GrayText',\n ...getHighContrastNoAdjustStyle(),\n },\n },\n },\n [HighContrastSelector]: {\n color: 'GrayText',\n backgroundColor: 'Window',\n ...getHighContrastNoAdjustStyle(),\n },\n },\n },\n\n // Split button styles\n splitButtonContainer: {\n height: '100%',\n selectors: {\n [HighContrastSelector]: {\n border: 'none',\n },\n },\n },\n\n splitButtonDividerDisabled: {\n selectors: {\n [HighContrastSelector]: {\n backgroundColor: 'Window',\n },\n },\n },\n\n splitButtonDivider: {\n backgroundColor: p.neutralTertiaryAlt,\n },\n\n splitButtonMenuButton: {\n backgroundColor: p.white,\n border: 'none',\n borderTopRightRadius: '0',\n borderBottomRightRadius: '0',\n color: p.neutralSecondary,\n selectors: {\n ':hover': {\n backgroundColor: p.neutralLighter,\n color: p.neutralDark,\n selectors: {\n [HighContrastSelector]: {\n color: 'Highlight',\n },\n [`.${ButtonGlobalClassNames.msButtonIcon}`]: {\n color: p.neutralPrimary,\n },\n },\n },\n ':active': {\n backgroundColor: p.neutralLight,\n selectors: {\n [`.${ButtonGlobalClassNames.msButtonIcon}`]: {\n color: p.neutralPrimary,\n },\n },\n },\n },\n },\n\n splitButtonMenuButtonDisabled: {\n backgroundColor: p.white,\n selectors: {\n [HighContrastSelector]: {\n color: 'GrayText',\n border: 'none',\n backgroundColor: 'Window',\n ...getHighContrastNoAdjustStyle(),\n },\n },\n },\n\n splitButtonMenuButtonChecked: {\n backgroundColor: p.neutralLight,\n color: p.neutralDark,\n selectors: {\n ':hover': {\n backgroundColor: p.neutralQuaternaryAlt,\n },\n },\n },\n\n splitButtonMenuButtonExpanded: {\n backgroundColor: p.neutralLight,\n color: p.black,\n selectors: {\n ':hover': {\n backgroundColor: p.neutralQuaternaryAlt,\n },\n },\n },\n\n splitButtonMenuIcon: {\n color: p.neutralPrimary,\n },\n\n splitButtonMenuIconDisabled: {\n color: p.neutralTertiary,\n },\n\n label: {\n fontWeight: 'normal', // theme.fontWeights.semibold,\n },\n\n icon: {\n color: p.themePrimary,\n },\n\n menuIcon: {\n color: p.neutralSecondary,\n [HighContrastSelector]: {\n color: 'GrayText',\n },\n },\n };\n\n return concatStyleSets(baseButtonStyles, baseSplitButtonStyles, commandButtonStyles, customStyles)!;\n },\n);\n","import * as React from 'react';\nimport { BaseButton } from '../BaseButton';\nimport { customizable, nullRender } from '../../../Utilities';\nimport { IButtonProps } from '../Button.types';\nimport { getStyles } from './CommandBarButton.styles';\n\n/**\n * {@docCategory Button}\n */\n@customizable('CommandBarButton', ['theme', 'styles'], true)\nexport class CommandBarButton extends React.Component<IButtonProps, {}> {\n public render(): JSX.Element {\n const { styles, theme } = this.props;\n\n return (\n <BaseButton\n {...this.props}\n variantClassName=\"ms-Button--commandBar\"\n styles={getStyles(theme!, styles)}\n onRenderDescription={nullRender}\n />\n );\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n 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 function __createBinding(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, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = 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\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","import * as React from 'react';\nimport { mergeStyles } from '@uifabric/merge-styles';\nimport { getTheme, ITheme } from '@uifabric/styling';\nimport {\n KeyCodes,\n css,\n elementContains,\n getDocument,\n getElementIndexPath,\n getFocusableByIndexPath,\n getId,\n getNativeProps,\n getNextElement,\n getParent,\n getPreviousElement,\n getRTL,\n htmlElementProperties,\n initializeComponentRef,\n isElementFocusSubZone,\n isElementFocusZone,\n isElementTabbable,\n shouldWrapFocus,\n warnDeprecations,\n portalContainsElement,\n Point,\n getWindow,\n findScrollableParent,\n createMergedRef,\n} from '@uifabric/utilities';\nimport { FocusZoneDirection, FocusZoneTabbableElements, IFocusZone, IFocusZoneProps } from './FocusZone.types';\n\nconst IS_FOCUSABLE_ATTRIBUTE = 'data-is-focusable';\nconst IS_ENTER_DISABLED_ATTRIBUTE = 'data-disable-click-on-enter';\nconst FOCUSZONE_ID_ATTRIBUTE = 'data-focuszone-id';\nconst TABINDEX = 'tabindex';\nconst NO_VERTICAL_WRAP = 'data-no-vertical-wrap';\nconst NO_HORIZONTAL_WRAP = 'data-no-horizontal-wrap';\nconst LARGE_DISTANCE_FROM_CENTER = 999999999;\nconst LARGE_NEGATIVE_DISTANCE_FROM_CENTER = -999999999;\n\nlet focusZoneStyles: string;\n\nconst focusZoneClass: string = 'ms-FocusZone';\n\n/**\n * Raises a click on a target element based on a keyboard event.\n */\nfunction raiseClickFromKeyboardEvent(target: Element, ev?: React.KeyboardEvent<HTMLElement>): void {\n let event;\n if (typeof MouseEvent === 'function') {\n event = new MouseEvent('click', {\n ctrlKey: ev?.ctrlKey,\n metaKey: ev?.metaKey,\n shiftKey: ev?.shiftKey,\n altKey: ev?.altKey,\n bubbles: ev?.bubbles,\n cancelable: ev?.cancelable,\n });\n } else {\n event = document.createEvent('MouseEvents');\n event.initMouseEvent(\n 'click',\n ev ? ev.bubbles : false,\n ev ? ev.cancelable : false,\n window, // not using getWindow() since this can only be run client side\n 0, // detail\n 0, // screen x\n 0, // screen y\n 0, // client x\n 0, // client y\n ev ? ev.ctrlKey : false,\n ev ? ev.altKey : false,\n ev ? ev.shiftKey : false,\n ev ? ev.metaKey : false,\n 0, // button\n null, // relatedTarget\n );\n }\n\n target.dispatchEvent(event);\n}\n\n// Helper function that will return a class for when the root is focused\nfunction getRootClass(): string {\n if (!focusZoneStyles) {\n focusZoneStyles = mergeStyles(\n {\n selectors: {\n ':focus': {\n outline: 'none',\n },\n },\n },\n focusZoneClass,\n );\n }\n return focusZoneStyles;\n}\n\nconst _allInstances: {\n [key: string]: FocusZone;\n} = {};\nconst _outerZones: Set<FocusZone> = new Set();\n\nconst ALLOWED_INPUT_TYPES = ['text', 'number', 'password', 'email', 'tel', 'url', 'search'];\n\nconst ALLOW_VIRTUAL_ELEMENTS = false;\n\nexport class FocusZone extends React.Component<IFocusZoneProps> implements IFocusZone {\n public static defaultProps: IFocusZoneProps = {\n isCircularNavigation: false,\n direction: FocusZoneDirection.bidirectional,\n shouldRaiseClicks: true,\n };\n\n private _root: React.RefObject<HTMLElement> = React.createRef();\n private _mergedRef = createMergedRef<HTMLElement>();\n\n private _id: string;\n\n /** The most recently focused child element. */\n private _activeElement: HTMLElement | null;\n\n /**\n * The index path to the last focused child element.\n */\n private _lastIndexPath: number[] | undefined;\n\n /**\n * Flag to define when we've intentionally parked focus on the root element to temporarily\n * hold focus until items appear within the zone.\n */\n private _isParked: boolean;\n\n /** The child element with tabindex=0. */\n private _defaultFocusElement: HTMLElement | null;\n private _focusAlignment: Point;\n private _isInnerZone: boolean;\n private _parkedTabIndex: string | null | undefined;\n\n /** Used to allow moving to next focusable element even when we're focusing on a input element when pressing tab */\n private _processingTabKey: boolean;\n\n private _windowElement: Window | undefined;\n\n /** Used for testing purposes only. */\n public static getOuterZones(): number {\n return _outerZones.size;\n }\n\n /**\n * Handle global tab presses so that we can patch tabindexes on the fly.\n * HEADS UP: This must not be an arrow function in order to be referentially equal among instances\n * for ref counting to work correctly!\n */\n private static _onKeyDownCapture(ev: KeyboardEvent): void {\n // eslint-disable-next-line deprecation/deprecation, @fluentui/deprecated-keyboard-event-props\n if (ev.which === KeyCodes.tab) {\n _outerZones.forEach((zone: FocusZone) => zone._updateTabIndexes());\n }\n }\n\n constructor(props: IFocusZoneProps) {\n super(props);\n // Manage componentRef resolution.\n initializeComponentRef(this);\n\n if (process.env.NODE_ENV !== 'production') {\n warnDeprecations('FocusZone', props, {\n rootProps: undefined,\n allowTabKey: 'handleTabKey',\n elementType: 'as',\n ariaDescribedBy: 'aria-describedby',\n ariaLabelledBy: 'aria-labelledby',\n });\n }\n\n this._id = getId('FocusZone');\n\n this._focusAlignment = {\n left: 0,\n top: 0,\n };\n\n this._processingTabKey = false;\n }\n\n public componentDidMount(): void {\n const { current: root } = this._root;\n\n _allInstances[this._id] = this;\n\n if (root) {\n this._windowElement = getWindow(root);\n let parentElement = getParent(root, ALLOW_VIRTUAL_ELEMENTS);\n\n while (parentElement && parentElement !== this._getDocument().body && parentElement.nodeType === 1) {\n if (isElementFocusZone(parentElement)) {\n this._isInnerZone = true;\n break;\n }\n parentElement = getParent(parentElement, ALLOW_VIRTUAL_ELEMENTS);\n }\n\n if (!this._isInnerZone) {\n _outerZones.add(this);\n\n if (this._windowElement && _outerZones.size === 1) {\n this._windowElement.addEventListener('keydown', FocusZone._onKeyDownCapture, true);\n }\n }\n\n this._root.current && this._root.current.addEventListener('blur', this._onBlur, true);\n\n // Assign initial tab indexes so that we can set initial focus as appropriate.\n this._updateTabIndexes();\n\n if (this.props.defaultTabbableElement && typeof this.props.defaultTabbableElement === 'string') {\n this._activeElement = this._getDocument().querySelector(this.props.defaultTabbableElement) as HTMLElement;\n // eslint-disable-next-line deprecation/deprecation\n } else if (this.props.defaultActiveElement) {\n // eslint-disable-next-line deprecation/deprecation\n this._activeElement = this._getDocument().querySelector(this.props.defaultActiveElement) as HTMLElement;\n }\n\n if (this.props.shouldFocusOnMount) {\n this.focus();\n }\n }\n }\n\n public componentDidUpdate(): void {\n const { current: root } = this._root;\n const doc = this._getDocument();\n\n if (\n doc &&\n this._lastIndexPath &&\n (doc.activeElement === doc.body ||\n doc.activeElement === null ||\n (!this.props.preventFocusRestoration && doc.activeElement === root))\n ) {\n // The element has been removed after the render, attempt to restore focus.\n const elementToFocus = getFocusableByIndexPath(root as HTMLElement, this._lastIndexPath);\n\n if (elementToFocus) {\n this._setActiveElement(elementToFocus, true);\n elementToFocus.focus();\n this._setParkedFocus(false);\n } else {\n // We had a focus path to restore, but now that path is unresolvable. Park focus\n // on the container until we can try again.\n this._setParkedFocus(true);\n }\n }\n }\n\n public componentWillUnmount(): void {\n delete _allInstances[this._id];\n\n if (!this._isInnerZone) {\n _outerZones.delete(this);\n\n // If this is the last outer zone, remove the keydown listener.\n if (this._windowElement && _outerZones.size === 0) {\n this._windowElement.removeEventListener('keydown', FocusZone._onKeyDownCapture, true);\n }\n }\n\n if (this._root.current) {\n this._root.current.removeEventListener('blur', this._onBlur, true);\n }\n\n this._activeElement = null;\n this._defaultFocusElement = null;\n }\n\n public render(): React.ReactNode {\n // eslint-disable-next-line deprecation/deprecation\n const { as: tag, elementType, rootProps, ariaDescribedBy, ariaLabelledBy, className } = this.props;\n const divProps = getNativeProps(this.props, htmlElementProperties);\n\n const Tag = tag || elementType || 'div';\n\n // Note, right before rendering/reconciling proceeds, we need to record if focus\n // was in the zone before the update. This helper will track this and, if focus\n // was actually in the zone, what the index path to the element is at this time.\n // Then, later in componentDidUpdate, we can evaluate if we need to restore it in\n // the case the element was removed.\n this._evaluateFocusBeforeRender();\n\n // Only support RTL defined in global theme, not contextual theme/RTL.\n const theme: ITheme = getTheme();\n\n return (\n <Tag\n aria-labelledby={ariaLabelledBy}\n aria-describedby={ariaDescribedBy}\n {...divProps}\n {\n // root props has been deprecated and should get removed.\n // it needs to be marked as \"any\" since root props expects a div element, but really Tag can\n // be any native element so typescript rightly flags this as a problem.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ...(rootProps as any)\n }\n // Once the getClassName correctly memoizes inputs this should\n // be replaced so that className is passed to getRootClass and is included there so\n // the class names will always be in the same order.\n className={css(getRootClass(), className)}\n // eslint-disable-next-line deprecation/deprecation\n ref={this._mergedRef(this.props.elementRef, this._root)}\n data-focuszone-id={this._id}\n // eslint-disable-next-line react/jsx-no-bind\n onKeyDown={(ev: React.KeyboardEvent<HTMLElement>) => this._onKeyDown(ev, theme)}\n onFocus={this._onFocus}\n onMouseDownCapture={this._onMouseDown}\n >\n {this.props.children}\n </Tag>\n );\n }\n\n /**\n * Sets focus to the first tabbable item in the zone.\n * @param forceIntoFirstElement - If true, focus will be forced into the first element, even\n * if focus is already in the focus zone.\n * @returns True if focus could be set to an active element, false if no operation was taken.\n */\n public focus(forceIntoFirstElement: boolean = false): boolean {\n if (this._root.current) {\n if (\n !forceIntoFirstElement &&\n this._root.current.getAttribute(IS_FOCUSABLE_ATTRIBUTE) === 'true' &&\n this._isInnerZone\n ) {\n const ownerZoneElement = this._getOwnerZone(this._root.current) as HTMLElement;\n\n if (ownerZoneElement !== this._root.current) {\n const ownerZone = _allInstances[ownerZoneElement.getAttribute(FOCUSZONE_ID_ATTRIBUTE) as string];\n\n return !!ownerZone && ownerZone.focusElement(this._root.current);\n }\n\n return false;\n } else if (\n !forceIntoFirstElement &&\n this._activeElement &&\n elementContains(this._root.current, this._activeElement) &&\n isElementTabbable(this._activeElement)\n ) {\n this._activeElement.focus();\n return true;\n } else {\n const firstChild = this._root.current.firstChild as HTMLElement;\n\n return this.focusElement(getNextElement(this._root.current, firstChild, true) as HTMLElement);\n }\n }\n return false;\n }\n\n /**\n * Sets focus to the last tabbable item in the zone.\n * @returns True if focus could be set to an active element, false if no operation was taken.\n */\n public focusLast(): boolean {\n if (this._root.current) {\n const lastChild = this._root.current && (this._root.current.lastChild as HTMLElement | null);\n\n return this.focusElement(getPreviousElement(this._root.current, lastChild, true, true, true) as HTMLElement);\n }\n\n return false;\n }\n\n /**\n * Sets focus to a specific child element within the zone. This can be used in conjunction with\n * shouldReceiveFocus to create delayed focus scenarios (like animate the scroll position to the correct\n * location and then focus.)\n * @param element - The child element within the zone to focus.\n * @param forceAlignment - If true, focus alignment will be set according to the element provided.\n * @returns True if focus could be set to an active element, false if no operation was taken.\n */\n public focusElement(element: HTMLElement, forceAlignment?: boolean): boolean {\n // eslint-disable-next-line deprecation/deprecation\n const { onBeforeFocus, shouldReceiveFocus } = this.props;\n\n if ((shouldReceiveFocus && !shouldReceiveFocus(element)) || (onBeforeFocus && !onBeforeFocus(element))) {\n return false;\n }\n\n if (element) {\n // when we set focus to a specific child, we should recalculate the alignment depending on its position.\n this._setActiveElement(element, forceAlignment);\n if (this._activeElement) {\n this._activeElement.focus();\n }\n\n return true;\n }\n\n return false;\n }\n\n /**\n * Forces horizontal alignment in the context of vertical arrowing to use specific point as the reference,\n * rather than a center based on the last horizontal motion.\n * @param point - the new reference point.\n */\n public setFocusAlignment(point: Point): void {\n this._focusAlignment = point;\n }\n\n private _evaluateFocusBeforeRender(): void {\n const { current: root } = this._root;\n\n const doc = this._getDocument();\n if (doc) {\n const focusedElement = doc.activeElement as HTMLElement;\n\n // Only update the index path if we are not parked on the root.\n if (focusedElement !== root) {\n const shouldRestoreFocus = elementContains(root, focusedElement, false);\n this._lastIndexPath = shouldRestoreFocus ? getElementIndexPath(root as HTMLElement, focusedElement) : undefined;\n }\n }\n }\n\n private _onFocus = (ev: React.FocusEvent<HTMLElement>): void => {\n if (this._portalContainsElement(ev.target as HTMLElement)) {\n // If the event target is inside a portal do not process the event.\n return;\n }\n\n const {\n onActiveElementChanged,\n // eslint-disable-next-line deprecation/deprecation\n doNotAllowFocusEventToPropagate,\n stopFocusPropagation,\n // eslint-disable-next-line deprecation/deprecation\n onFocusNotification,\n onFocus,\n shouldFocusInnerElementWhenReceivedFocus,\n defaultTabbableElement,\n } = this.props;\n const isImmediateDescendant = this._isImmediateDescendantOfZone(ev.target as HTMLElement);\n let newActiveElement: HTMLElement | null | undefined;\n\n if (isImmediateDescendant) {\n newActiveElement = ev.target as HTMLElement;\n } else {\n let parentElement = ev.target as HTMLElement;\n\n while (parentElement && parentElement !== this._root.current) {\n if (isElementTabbable(parentElement) && this._isImmediateDescendantOfZone(parentElement)) {\n newActiveElement = parentElement;\n break;\n }\n parentElement = getParent(parentElement, ALLOW_VIRTUAL_ELEMENTS) as HTMLElement;\n }\n }\n\n // If an inner focusable element should be focused when FocusZone container receives focus\n if (shouldFocusInnerElementWhenReceivedFocus && ev.target === this._root.current) {\n const maybeElementToFocus =\n defaultTabbableElement &&\n typeof defaultTabbableElement === 'function' &&\n defaultTabbableElement(this._root.current);\n\n // try to focus defaultTabbable element\n if (maybeElementToFocus && isElementTabbable(maybeElementToFocus)) {\n newActiveElement = maybeElementToFocus;\n maybeElementToFocus.focus();\n } else {\n // force focus on first focusable element\n this.focus(true);\n if (this._activeElement) {\n // set to null as new active element was handled in method above\n newActiveElement = null;\n }\n }\n }\n\n const initialElementFocused = !this._activeElement;\n\n // If the new active element is a child of this zone and received focus,\n // update alignment an immediate descendant\n if (newActiveElement && newActiveElement !== this._activeElement) {\n if (isImmediateDescendant || initialElementFocused) {\n this._setFocusAlignment(newActiveElement, true, true);\n }\n\n this._activeElement = newActiveElement;\n\n if (initialElementFocused) {\n this._updateTabIndexes();\n }\n }\n\n if (onActiveElementChanged) {\n onActiveElementChanged(this._activeElement as HTMLElement, ev);\n }\n\n if (stopFocusPropagation || doNotAllowFocusEventToPropagate) {\n ev.stopPropagation();\n }\n\n if (onFocus) {\n onFocus(ev);\n } else if (onFocusNotification) {\n onFocusNotification();\n }\n };\n\n /**\n * When focus is in the zone at render time but then all focusable elements are removed,\n * we \"park\" focus temporarily on the root. Once we update with focusable children, we restore\n * focus to the closest path from previous. If the user tabs away from the parked container,\n * we restore focusability to the pre-parked state.\n */\n private _setParkedFocus(isParked: boolean): void {\n const { current: root } = this._root;\n\n if (root && this._isParked !== isParked) {\n this._isParked = isParked;\n\n if (isParked) {\n if (!this.props.allowFocusRoot) {\n this._parkedTabIndex = root.getAttribute('tabindex');\n root.setAttribute('tabindex', '-1');\n }\n root.focus();\n } else if (!this.props.allowFocusRoot) {\n if (this._parkedTabIndex) {\n root.setAttribute('tabindex', this._parkedTabIndex);\n this._parkedTabIndex = undefined;\n } else {\n root.removeAttribute('tabindex');\n }\n }\n }\n }\n\n private _onBlur = (): void => {\n this._setParkedFocus(false);\n };\n\n private _onMouseDown = (ev: React.MouseEvent<HTMLElement>): void => {\n if (this._portalContainsElement(ev.target as HTMLElement)) {\n // If the event target is inside a portal do not process the event.\n return;\n }\n\n const { disabled } = this.props;\n\n if (disabled) {\n return;\n }\n\n let target = ev.target as HTMLElement;\n const path = [];\n\n while (target && target !== this._root.current) {\n path.push(target);\n target = getParent(target, ALLOW_VIRTUAL_ELEMENTS) as HTMLElement;\n }\n\n while (path.length) {\n target = path.pop() as HTMLElement;\n\n if (target && isElementTabbable(target)) {\n this._setActiveElement(target, true);\n }\n\n if (isElementFocusZone(target)) {\n // Stop here since the focus zone will take care of its own children.\n break;\n }\n }\n };\n\n private _setActiveElement(element: HTMLElement, forceAlignment?: boolean): void {\n const previousActiveElement = this._activeElement;\n\n this._activeElement = element;\n\n if (previousActiveElement) {\n if (isElementFocusZone(previousActiveElement)) {\n this._updateTabIndexes(previousActiveElement);\n }\n\n previousActiveElement.tabIndex = -1;\n }\n\n if (this._activeElement) {\n if (!this._focusAlignment || forceAlignment) {\n this._setFocusAlignment(element, true, true);\n }\n\n this._activeElement.tabIndex = 0;\n }\n }\n\n private _preventDefaultWhenHandled(ev: React.KeyboardEvent<HTMLElement>): void {\n this.props.preventDefaultWhenHandled && ev.preventDefault();\n }\n\n /**\n * Handle the keystrokes.\n */\n private _onKeyDown = (ev: React.KeyboardEvent<HTMLElement>, theme: ITheme): boolean | undefined => {\n if (this._portalContainsElement(ev.target as HTMLElement)) {\n // If the event target is inside a portal do not process the event.\n return;\n }\n\n // eslint-disable-next-line deprecation/deprecation\n const { direction, disabled, isInnerZoneKeystroke, pagingSupportDisabled, shouldEnterInnerZone } = this.props;\n\n if (disabled) {\n return;\n }\n\n if (this.props.onKeyDown) {\n this.props.onKeyDown(ev);\n }\n\n // If the default has been prevented, do not process keyboard events.\n if (ev.isDefaultPrevented()) {\n return;\n }\n\n if (this._getDocument().activeElement === this._root.current && this._isInnerZone) {\n // If this element has focus, it is being controlled by a parent.\n // Ignore the keystroke.\n return;\n }\n\n if (\n ((shouldEnterInnerZone && shouldEnterInnerZone(ev)) || (isInnerZoneKeystroke && isInnerZoneKeystroke(ev))) &&\n this._isImmediateDescendantOfZone(ev.target as HTMLElement)\n ) {\n // Try to focus\n const innerZone = this._getFirstInnerZone();\n\n if (innerZone) {\n if (!innerZone.focus(true)) {\n return;\n }\n } else if (isElementFocusSubZone(ev.target as HTMLElement)) {\n if (\n !this.focusElement(\n getNextElement(\n ev.target as HTMLElement,\n (ev.target as HTMLElement).firstChild as HTMLElement,\n true,\n ) as HTMLElement,\n )\n ) {\n return;\n }\n } else {\n return;\n }\n } else if (ev.altKey) {\n return;\n } else {\n // eslint-disable-next-line @fluentui/deprecated-keyboard-event-props\n switch (ev.which) {\n case KeyCodes.space:\n if (this._tryInvokeClickForFocusable(ev.target as HTMLElement, ev)) {\n break;\n }\n return;\n\n case KeyCodes.left:\n if (direction !== FocusZoneDirection.vertical) {\n this._preventDefaultWhenHandled(ev);\n if (this._moveFocusLeft(theme)) {\n break;\n }\n }\n return;\n\n case KeyCodes.right:\n if (direction !== FocusZoneDirection.vertical) {\n this._preventDefaultWhenHandled(ev);\n if (this._moveFocusRight(theme)) {\n break;\n }\n }\n return;\n\n case KeyCodes.up:\n if (direction !== FocusZoneDirection.horizontal) {\n this._preventDefaultWhenHandled(ev);\n if (this._moveFocusUp()) {\n break;\n }\n }\n return;\n\n case KeyCodes.down:\n if (direction !== FocusZoneDirection.horizontal) {\n this._preventDefaultWhenHandled(ev);\n if (this._moveFocusDown()) {\n break;\n }\n }\n return;\n case KeyCodes.pageDown:\n if (!pagingSupportDisabled && this._moveFocusPaging(true)) {\n break;\n }\n return;\n case KeyCodes.pageUp:\n if (!pagingSupportDisabled && this._moveFocusPaging(false)) {\n break;\n }\n return;\n\n case KeyCodes.tab:\n if (\n // eslint-disable-next-line deprecation/deprecation\n this.props.allowTabKey ||\n this.props.handleTabKey === FocusZoneTabbableElements.all ||\n (this.props.handleTabKey === FocusZoneTabbableElements.inputOnly &&\n this._isElementInput(ev.target as HTMLElement))\n ) {\n let focusChanged = false;\n this._processingTabKey = true;\n if (\n direction === FocusZoneDirection.vertical ||\n !this._shouldWrapFocus(this._activeElement as HTMLElement, NO_HORIZONTAL_WRAP)\n ) {\n focusChanged = ev.shiftKey ? this._moveFocusUp() : this._moveFocusDown();\n } else {\n const tabWithDirection = getRTL(theme) ? !ev.shiftKey : ev.shiftKey;\n focusChanged = tabWithDirection ? this._moveFocusLeft(theme) : this._moveFocusRight(theme);\n }\n this._processingTabKey = false;\n if (focusChanged) {\n break;\n } else if (this.props.shouldResetActiveElementWhenTabFromZone) {\n this._activeElement = null;\n }\n }\n return;\n\n case KeyCodes.home:\n if (\n this._isContentEditableElement(ev.target as HTMLElement) ||\n (this._isElementInput(ev.target as HTMLElement) &&\n !this._shouldInputLoseFocus(ev.target as HTMLInputElement, false))\n ) {\n return false;\n }\n const firstChild = this._root.current && (this._root.current.firstChild as HTMLElement | null);\n if (\n this._root.current &&\n firstChild &&\n this.focusElement(getNextElement(this._root.current, firstChild, true) as HTMLElement)\n ) {\n break;\n }\n return;\n\n case KeyCodes.end:\n if (\n this._isContentEditableElement(ev.target as HTMLElement) ||\n (this._isElementInput(ev.target as HTMLElement) &&\n !this._shouldInputLoseFocus(ev.target as HTMLInputElement, true))\n ) {\n return false;\n }\n\n const lastChild = this._root.current && (this._root.current.lastChild as HTMLElement | null);\n if (\n this._root.current &&\n this.focusElement(getPreviousElement(this._root.current, lastChild, true, true, true) as HTMLElement)\n ) {\n break;\n }\n return;\n\n case KeyCodes.enter:\n if (this._tryInvokeClickForFocusable(ev.target as HTMLElement, ev)) {\n break;\n }\n return;\n\n default:\n return;\n }\n }\n\n ev.preventDefault();\n ev.stopPropagation();\n };\n\n /**\n * Walk up the dom try to find a focusable element.\n */\n private _tryInvokeClickForFocusable(targetElement: HTMLElement, ev?: React.KeyboardEvent<HTMLElement>): boolean {\n let target = targetElement;\n if (target === this._root.current || !this.props.shouldRaiseClicks) {\n return false;\n }\n\n do {\n if (\n target.tagName === 'BUTTON' ||\n target.tagName === 'A' ||\n target.tagName === 'INPUT' ||\n target.tagName === 'TEXTAREA'\n ) {\n return false;\n }\n\n if (\n this._isImmediateDescendantOfZone(target) &&\n target.getAttribute(IS_FOCUSABLE_ATTRIBUTE) === 'true' &&\n target.getAttribute(IS_ENTER_DISABLED_ATTRIBUTE) !== 'true'\n ) {\n raiseClickFromKeyboardEvent(target, ev);\n return true;\n }\n\n target = getParent(target, ALLOW_VIRTUAL_ELEMENTS) as HTMLElement;\n } while (target !== this._root.current);\n\n return false;\n }\n\n /**\n * Traverse to find first child zone.\n */\n private _getFirstInnerZone(rootElement?: HTMLElement | null): FocusZone | null {\n rootElement = rootElement || this._activeElement || this._root.current;\n\n if (!rootElement) {\n return null;\n }\n\n if (isElementFocusZone(rootElement)) {\n return _allInstances[rootElement.getAttribute(FOCUSZONE_ID_ATTRIBUTE) as string];\n }\n\n let child = rootElement.firstElementChild as HTMLElement | null;\n\n while (child) {\n if (isElementFocusZone(child)) {\n return _allInstances[child.getAttribute(FOCUSZONE_ID_ATTRIBUTE) as string];\n }\n const match = this._getFirstInnerZone(child);\n\n if (match) {\n return match;\n }\n\n child = child.nextElementSibling as HTMLElement | null;\n }\n\n return null;\n }\n\n private _moveFocus(\n isForward: boolean,\n getDistanceFromCenter: (activeRect: ClientRect, targetRect: ClientRect) => number,\n ev?: Event,\n useDefaultWrap: boolean = true,\n ): boolean {\n let element = this._activeElement;\n let candidateDistance = -1;\n let candidateElement: HTMLElement | undefined = undefined;\n let changedFocus = false;\n const isBidirectional = this.props.direction === FocusZoneDirection.bidirectional;\n\n if (!element || !this._root.current) {\n return false;\n }\n\n if (this._isElementInput(element)) {\n if (!this._shouldInputLoseFocus(element as HTMLInputElement, isForward)) {\n return false;\n }\n }\n\n const activeRect = isBidirectional ? element.getBoundingClientRect() : null;\n\n do {\n element = (isForward\n ? getNextElement(this._root.current, element)\n : getPreviousElement(this._root.current, element)) as HTMLElement;\n\n if (isBidirectional) {\n if (element) {\n const targetRect = element.getBoundingClientRect();\n const elementDistance = getDistanceFromCenter(activeRect as ClientRect, targetRect);\n\n if (elementDistance === -1 && candidateDistance === -1) {\n candidateElement = element;\n break;\n }\n\n if (elementDistance > -1 && (candidateDistance === -1 || elementDistance < candidateDistance)) {\n candidateDistance = elementDistance;\n candidateElement = element;\n }\n\n if (candidateDistance >= 0 && elementDistance < 0) {\n break;\n }\n }\n } else {\n candidateElement = element;\n break;\n }\n } while (element);\n\n // Focus the closest candidate\n if (candidateElement && candidateElement !== this._activeElement) {\n changedFocus = true;\n this.focusElement(candidateElement);\n } else if (this.props.isCircularNavigation && useDefaultWrap) {\n if (isForward) {\n return this.focusElement(\n getNextElement(this._root.current, this._root.current.firstElementChild as HTMLElement, true) as HTMLElement,\n );\n } else {\n return this.focusElement(\n getPreviousElement(\n this._root.current,\n this._root.current.lastElementChild as HTMLElement,\n true,\n true,\n true,\n ) as HTMLElement,\n );\n }\n }\n\n return changedFocus;\n }\n\n private _moveFocusDown(): boolean {\n let targetTop = -1;\n // eslint-disable-next-line deprecation/deprecation\n const leftAlignment = this._focusAlignment.left || this._focusAlignment.x || 0;\n\n if (\n this._moveFocus(true, (activeRect: ClientRect, targetRect: ClientRect) => {\n let distance = -1;\n // ClientRect values can be floats that differ by very small fractions of a decimal.\n // If the difference between top and bottom are within a pixel then we should treat\n // them as equivalent by using Math.floor. For instance 5.2222 and 5.222221 should be equivalent,\n // but without Math.Floor they will be handled incorrectly.\n const targetRectTop = Math.floor(targetRect.top);\n const activeRectBottom = Math.floor(activeRect.bottom);\n\n if (targetRectTop < activeRectBottom) {\n if (!this._shouldWrapFocus(this._activeElement as HTMLElement, NO_VERTICAL_WRAP)) {\n return LARGE_NEGATIVE_DISTANCE_FROM_CENTER;\n }\n\n return LARGE_DISTANCE_FROM_CENTER;\n }\n\n if ((targetTop === -1 && targetRectTop >= activeRectBottom) || targetRectTop === targetTop) {\n targetTop = targetRectTop;\n if (leftAlignment >= targetRect.left && leftAlignment <= targetRect.left + targetRect.width) {\n distance = 0;\n } else {\n distance = Math.abs(targetRect.left + targetRect.width / 2 - leftAlignment);\n }\n }\n\n return distance;\n })\n ) {\n this._setFocusAlignment(this._activeElement as HTMLElement, false, true);\n return true;\n }\n\n return false;\n }\n\n private _moveFocusUp(): boolean {\n let targetTop = -1;\n // eslint-disable-next-line deprecation/deprecation\n const leftAlignment = this._focusAlignment.left || this._focusAlignment.x || 0;\n\n if (\n this._moveFocus(false, (activeRect: ClientRect, targetRect: ClientRect) => {\n let distance = -1;\n // ClientRect values can be floats that differ by very small fractions of a decimal.\n // If the difference between top and bottom are within a pixel then we should treat\n // them as equivalent by using Math.floor. For instance 5.2222 and 5.222221 should be equivalent,\n // but without Math.Floor they will be handled incorrectly.\n const targetRectBottom = Math.floor(targetRect.bottom);\n const targetRectTop = Math.floor(targetRect.top);\n const activeRectTop = Math.floor(activeRect.top);\n\n if (targetRectBottom > activeRectTop) {\n if (!this._shouldWrapFocus(this._activeElement as HTMLElement, NO_VERTICAL_WRAP)) {\n return LARGE_NEGATIVE_DISTANCE_FROM_CENTER;\n }\n return LARGE_DISTANCE_FROM_CENTER;\n }\n\n if ((targetTop === -1 && targetRectBottom <= activeRectTop) || targetRectTop === targetTop) {\n targetTop = targetRectTop;\n if (leftAlignment >= targetRect.left && leftAlignment <= targetRect.left + targetRect.width) {\n distance = 0;\n } else {\n distance = Math.abs(targetRect.left + targetRect.width / 2 - leftAlignment);\n }\n }\n\n return distance;\n })\n ) {\n this._setFocusAlignment(this._activeElement as HTMLElement, false, true);\n return true;\n }\n\n return false;\n }\n\n private _moveFocusLeft(theme: ITheme): boolean {\n const shouldWrap = this._shouldWrapFocus(this._activeElement as HTMLElement, NO_HORIZONTAL_WRAP);\n if (\n this._moveFocus(\n getRTL(theme),\n (activeRect: ClientRect, targetRect: ClientRect) => {\n let distance = -1;\n let topBottomComparison;\n\n if (getRTL(theme)) {\n // When in RTL, this comparison should be the same as the one in _moveFocusRight for LTR.\n // Going left at a leftmost rectangle will go down a line instead of up a line like in LTR.\n // This is important, because we want to be comparing the top of the target rect\n // with the bottom of the active rect.\n topBottomComparison = parseFloat(targetRect.top.toFixed(3)) < parseFloat(activeRect.bottom.toFixed(3));\n } else {\n topBottomComparison = parseFloat(targetRect.bottom.toFixed(3)) > parseFloat(activeRect.top.toFixed(3));\n }\n\n if (\n topBottomComparison &&\n targetRect.right <= activeRect.right &&\n this.props.direction !== FocusZoneDirection.vertical\n ) {\n distance = activeRect.right - targetRect.right;\n } else if (!shouldWrap) {\n distance = LARGE_NEGATIVE_DISTANCE_FROM_CENTER;\n }\n\n return distance;\n },\n undefined /*ev*/,\n shouldWrap,\n )\n ) {\n this._setFocusAlignment(this._activeElement as HTMLElement, true, false);\n return true;\n }\n\n return false;\n }\n\n private _moveFocusRight(theme: ITheme): boolean {\n const shouldWrap = this._shouldWrapFocus(this._activeElement as HTMLElement, NO_HORIZONTAL_WRAP);\n if (\n this._moveFocus(\n !getRTL(theme),\n (activeRect: ClientRect, targetRect: ClientRect) => {\n let distance = -1;\n let topBottomComparison;\n\n if (getRTL(theme)) {\n // When in RTL, this comparison should be the same as the one in _moveFocusLeft for LTR.\n // Going right at a rightmost rectangle will go up a line instead of down a line like in LTR.\n // This is important, because we want to be comparing the bottom of the target rect\n // with the top of the active rect.\n topBottomComparison = parseFloat(targetRect.bottom.toFixed(3)) > parseFloat(activeRect.top.toFixed(3));\n } else {\n topBottomComparison = parseFloat(targetRect.top.toFixed(3)) < parseFloat(activeRect.bottom.toFixed(3));\n }\n\n if (\n topBottomComparison &&\n targetRect.left >= activeRect.left &&\n this.props.direction !== FocusZoneDirection.vertical\n ) {\n distance = targetRect.left - activeRect.left;\n } else if (!shouldWrap) {\n distance = LARGE_NEGATIVE_DISTANCE_FROM_CENTER;\n }\n\n return distance;\n },\n undefined /*ev*/,\n shouldWrap,\n )\n ) {\n this._setFocusAlignment(this._activeElement as HTMLElement, true, false);\n return true;\n }\n\n return false;\n }\n\n private _getHorizontalDistanceFromCenter = (\n isForward: boolean,\n activeRect: ClientRect,\n targetRect: ClientRect,\n ): number => {\n // eslint-disable-next-line deprecation/deprecation\n const leftAlignment = this._focusAlignment.left || this._focusAlignment.x || 0;\n // ClientRect values can be floats that differ by very small fractions of a decimal.\n // If the difference between top and bottom are within a pixel then we should treat\n // them as equivalent by using Math.floor. For instance 5.2222 and 5.222221 should be equivalent,\n // but without Math.Floor they will be handled incorrectly.\n const targetRectTop = Math.floor(targetRect.top);\n const activeRectBottom = Math.floor(activeRect.bottom);\n const targetRectBottom = Math.floor(targetRect.bottom);\n const activeRectTop = Math.floor(activeRect.top);\n const isValidCandidateOnpagingDown = isForward && targetRectTop > activeRectBottom;\n const isValidCandidateOnpagingUp = !isForward && targetRectBottom < activeRectTop;\n\n if (isValidCandidateOnpagingDown || isValidCandidateOnpagingUp) {\n if (leftAlignment >= targetRect.left && leftAlignment <= targetRect.left + targetRect.width) {\n return 0;\n }\n return Math.abs(targetRect.left + targetRect.width / 2 - leftAlignment);\n }\n\n if (!this._shouldWrapFocus(this._activeElement as HTMLElement, NO_VERTICAL_WRAP)) {\n return LARGE_NEGATIVE_DISTANCE_FROM_CENTER;\n }\n return LARGE_DISTANCE_FROM_CENTER;\n };\n\n private _moveFocusPaging(isForward: boolean, useDefaultWrap: boolean = true): boolean {\n let element = this._activeElement;\n if (!element || !this._root.current) {\n return false;\n }\n if (this._isElementInput(element)) {\n if (!this._shouldInputLoseFocus(element as HTMLInputElement, isForward)) {\n return false;\n }\n }\n const scrollableParent = findScrollableParent(element);\n if (!scrollableParent) {\n return false;\n }\n let candidateDistance = -1;\n let candidateElement = undefined;\n let targetTop = -1;\n let targetBottom = -1;\n const pagesize = (scrollableParent as HTMLElement).clientHeight;\n const activeRect = element.getBoundingClientRect();\n do {\n element = isForward\n ? getNextElement(this._root.current, element)\n : getPreviousElement(this._root.current, element);\n if (element) {\n const targetRect = element.getBoundingClientRect();\n const targetRectTop = Math.floor(targetRect.top);\n const activeRectBottom = Math.floor(activeRect.bottom);\n const targetRectBottom = Math.floor(targetRect.bottom);\n const activeRectTop = Math.floor(activeRect.top);\n const elementDistance = this._getHorizontalDistanceFromCenter(isForward, activeRect, targetRect);\n const isElementPassedPageSizeOnPagingDown = isForward && targetRectTop > activeRectBottom + pagesize;\n const isElementPassedPageSizeOnPagingUp = !isForward && targetRectBottom < activeRectTop - pagesize;\n\n if (isElementPassedPageSizeOnPagingDown || isElementPassedPageSizeOnPagingUp) {\n break;\n }\n if (elementDistance > -1) {\n // for paging down\n if (isForward && targetRectTop > targetTop) {\n targetTop = targetRectTop;\n candidateDistance = elementDistance;\n candidateElement = element;\n } else if (!isForward && targetRectBottom < targetBottom) {\n // for paging up\n targetBottom = targetRectBottom;\n candidateDistance = elementDistance;\n candidateElement = element;\n } else if (candidateDistance === -1 || elementDistance <= candidateDistance) {\n candidateDistance = elementDistance;\n candidateElement = element;\n }\n }\n }\n } while (element);\n\n let changedFocus = false;\n // Focus the closest candidate\n if (candidateElement && candidateElement !== this._activeElement) {\n changedFocus = true;\n this.focusElement(candidateElement);\n this._setFocusAlignment(candidateElement as HTMLElement, false, true);\n } else if (this.props.isCircularNavigation && useDefaultWrap) {\n if (isForward) {\n return this.focusElement(\n getNextElement(this._root.current, this._root.current.firstElementChild as HTMLElement, true) as HTMLElement,\n );\n }\n return this.focusElement(\n getPreviousElement(\n this._root.current,\n this._root.current.lastElementChild as HTMLElement,\n true,\n true,\n true,\n ) as HTMLElement,\n );\n }\n return changedFocus;\n }\n\n private _setFocusAlignment(element: HTMLElement, isHorizontal?: boolean, isVertical?: boolean): void {\n if (\n this.props.direction === FocusZoneDirection.bidirectional &&\n (!this._focusAlignment || isHorizontal || isVertical)\n ) {\n const rect = element.getBoundingClientRect();\n const left = rect.left + rect.width / 2;\n const top = rect.top + rect.height / 2;\n\n if (!this._focusAlignment) {\n this._focusAlignment = { left, top };\n }\n\n if (isHorizontal) {\n this._focusAlignment.left = left;\n }\n\n if (isVertical) {\n this._focusAlignment.top = top;\n }\n }\n }\n\n private _isImmediateDescendantOfZone(element?: HTMLElement): boolean {\n return this._getOwnerZone(element) === this._root.current;\n }\n\n private _getOwnerZone(element?: HTMLElement): HTMLElement | null {\n let parentElement = getParent(element as HTMLElement, ALLOW_VIRTUAL_ELEMENTS);\n\n while (parentElement && parentElement !== this._root.current && parentElement !== this._getDocument().body) {\n if (isElementFocusZone(parentElement)) {\n return parentElement;\n }\n\n parentElement = getParent(parentElement, ALLOW_VIRTUAL_ELEMENTS);\n }\n\n return parentElement;\n }\n\n private _updateTabIndexes(element?: HTMLElement): void {\n if (\n !this._activeElement &&\n this.props.defaultTabbableElement &&\n typeof this.props.defaultTabbableElement === 'function'\n ) {\n this._activeElement = this.props.defaultTabbableElement(this._root.current as HTMLElement);\n }\n\n if (!element && this._root.current) {\n this._defaultFocusElement = null;\n element = this._root.current;\n if (this._activeElement && !elementContains(element, this._activeElement)) {\n this._activeElement = null;\n }\n }\n\n // If active element changes state to disabled, set it to null.\n // Otherwise, we lose keyboard accessibility to other elements in focus zone.\n if (this._activeElement && !isElementTabbable(this._activeElement)) {\n this._activeElement = null;\n }\n\n const childNodes = element && element.children;\n\n for (let childIndex = 0; childNodes && childIndex < childNodes.length; childIndex++) {\n const child = childNodes[childIndex] as HTMLElement;\n\n if (!isElementFocusZone(child)) {\n // If the item is explicitly set to not be focusable then TABINDEX needs to be set to -1.\n if (child.getAttribute && child.getAttribute(IS_FOCUSABLE_ATTRIBUTE) === 'false') {\n child.setAttribute(TABINDEX, '-1');\n }\n\n if (isElementTabbable(child)) {\n if (this.props.disabled) {\n child.setAttribute(TABINDEX, '-1');\n } else if (\n !this._isInnerZone &&\n ((!this._activeElement && !this._defaultFocusElement) || this._activeElement === child)\n ) {\n this._defaultFocusElement = child;\n if (child.getAttribute(TABINDEX) !== '0') {\n child.setAttribute(TABINDEX, '0');\n }\n } else if (child.getAttribute(TABINDEX) !== '-1') {\n child.setAttribute(TABINDEX, '-1');\n }\n } else if (child.tagName === 'svg' && child.getAttribute('focusable') !== 'false') {\n // Disgusting IE hack. Sad face.\n child.setAttribute('focusable', 'false');\n }\n } else if (child.getAttribute(IS_FOCUSABLE_ATTRIBUTE) === 'true') {\n if (\n !this._isInnerZone &&\n ((!this._activeElement && !this._defaultFocusElement) || this._activeElement === child)\n ) {\n this._defaultFocusElement = child;\n if (child.getAttribute(TABINDEX) !== '0') {\n child.setAttribute(TABINDEX, '0');\n }\n } else if (child.getAttribute(TABINDEX) !== '-1') {\n child.setAttribute(TABINDEX, '-1');\n }\n }\n\n this._updateTabIndexes(child);\n }\n }\n\n private _isContentEditableElement(element: HTMLElement): boolean {\n return element && element.getAttribute('contenteditable') === 'true';\n }\n\n private _isElementInput(element: HTMLElement): boolean {\n if (\n element &&\n element.tagName &&\n (element.tagName.toLowerCase() === 'input' || element.tagName.toLowerCase() === 'textarea')\n ) {\n return true;\n }\n return false;\n }\n\n private _shouldInputLoseFocus(element: HTMLInputElement, isForward?: boolean): boolean {\n // If a tab was used, we want to focus on the next element.\n if (\n !this._processingTabKey &&\n element &&\n element.type &&\n ALLOWED_INPUT_TYPES.indexOf(element.type.toLowerCase()) > -1\n ) {\n const selectionStart = element.selectionStart;\n const selectionEnd = element.selectionEnd;\n const isRangeSelected = selectionStart !== selectionEnd;\n const inputValue = element.value;\n const isReadonly = element.readOnly;\n\n // We shouldn't lose focus in the following cases:\n // 1. There is range selected.\n // 2. When selection start is larger than 0 and it is backward and not readOnly.\n // 3. when selection start is not the end of length, it is forward and not readOnly.\n // 4. We press any of the arrow keys when our handleTabKey isn't none or undefined (only losing focus if we hit\n // tab) and if shouldInputLoseFocusOnArrowKey is defined, if scenario prefers to not loose the focus which is\n // determined by calling the callback shouldInputLoseFocusOnArrowKey\n if (\n isRangeSelected ||\n (selectionStart! > 0 && !isForward && !isReadonly) ||\n (selectionStart !== inputValue.length && isForward && !isReadonly) ||\n (!!this.props.handleTabKey &&\n !(this.props.shouldInputLoseFocusOnArrowKey && this.props.shouldInputLoseFocusOnArrowKey(element)))\n ) {\n return false;\n }\n }\n\n return true;\n }\n\n private _shouldWrapFocus(\n element: HTMLElement,\n noWrapDataAttribute: 'data-no-vertical-wrap' | 'data-no-horizontal-wrap',\n ): boolean {\n return this.props.checkForNoWrap ? shouldWrapFocus(element, noWrapDataAttribute) : true;\n }\n\n /**\n * Returns true if the element is a descendant of the FocusZone through a React portal.\n */\n private _portalContainsElement(element: HTMLElement): boolean {\n return element && !!this._root.current && portalContainsElement(element, this._root.current);\n }\n\n private _getDocument(): Document {\n return getDocument(this._root.current)!;\n }\n}\n"],"sourceRoot":""}